コンピュータ関連のメモ

初めに

コンピュータ関連のメモ書いてます。内容の保障はいっさいありません。 酒の肴になるかどうかもわからんし、たぶんキャバクラでもやくにたたない(笑)。

Perlについて

自分で最初にやってみようと思った言語はPerlだったと思う。その前に大学でCを取らないといけなかったからCちといじったけど、最初はなんのこっちゃということであまり興味を持てなかった。

それはともかく、でもかなりPerlもご無沙汰していてhello worldしか書けないぐらいになってしまった。

そんなとき もっと自在にサーバを使い倒す 業務に役立つPerl (Software Design plus) と言う本のテキストデータを視覚障害者には原本を買えば全文テキストがもらえると言うことをしり、「ちと久しぶりにPerlいじってみっか」ということで 購入した。 Perl4の時の知識しかなかったので内容はちと以前とはもちろん違っていたけど、 なかなか良かった。テキストも完全に読めるし、Perlをやり直したい人にはかなりの良書。 Perlのポインタと言って良いのかよく分からないが、リファレンスもよーく分かった。

ということでちょうしこいて、やはり 初めてのPerl 第5版続・初めてのPerl 改訂版 も買った。初めてのPerlは第2版のテキストは以前にオライリーさんから貰っていたのだが、第5版は もうPDFしかないということで点訳に出した。 続の方はオライリーさんからテキストをご提供して頂けたので問題なく読めている。

組み込みOSについて

12ステップで作る組込みOS自作入門 という本がある。 実におもしろい。H8マイコンを使うのだが、ハンダ付けはいっさい不要。 全てシリアル経由で操作、結果の表示をするので全盲向け。 UNIXの多少の知識と、C言語の入門レベルの知識でなんとか勉強できる。
作者のSITE

出版社のSITE

書き込んで、ブートローダから"hello world"が出たときはやはりうれしいものだ。 馬鹿みたいにボードのリセットスイッチを何回もおして、"hello world" "hello world" ...と繰り返して 遊んでしまった。 ふと思ったのだが、PICとかH8をほんのちょびっとだけいじっただけなのでなんとも言えないのだが、 あんがい組み込み分野は、「全盲向けのフィールド」なのかもしれないと思った。 GUI分野では実質手が出せる分野は乏しいし・・・。

まあそれはともかく、この本は本当になにもないところからやらなければならないので、Cのちょっとした知識だけでは話がおもしろくない。 Makefileの書き方が分からなかったので、以下のサイトガ結構参考になった。
ここのMakefileの記事は結構優しく解説されている。
C言語だが、すでに廃刊になっているけど、Cマガジンの1999/04の「C言語入門講座」に書かれていることを全て分かっていればかなりスムーズに読める本田と思う。 まあ、一般的なCの基礎の基礎が分かっていれば良いということ。ポインタ、構造体がなんとなくわかっていれば、調べつつ読み進んで行けるはず。

Cマガジンのバックナンバーは手に入りにくいのだが Programming Place Plus さんが C言語編 とか 目指せプログラマー! で 結構詳しい講座を書いて織られる。 ので十分にCについての礎は上のサイトで足りる。

Cの話が出たのでついでに、私はCをやり始めて最初に分からなかったことまたは漠然と分からなかったことは変数の型とか、ポインタということだった。 この原因は自分にはハードの知識がまったくないことだった。CPUのレジスタがどういう物なのか、2の補数というものを知らない、ビッグエンディアン・リトルエンディアンとは、浮動小数点のデータ表現を知らない等々上げればきりがない。 このようなことは、Cの入門書には書いてない。

だけどこれは入門レベルでも変数のキャストとか出てきたりしたときや、ポインタをちょっといじりはじめたときにでっくわす大きな問題になると思う。 上のことが少し分かっていればごくごく当たり前のことなのだが、このへんがわからないと「漠然とよくわからない」ということになると思う。 なので上に上げたことはむしろ入門書で書くべきことだと思う。 これが分かっていれば、ポインタも、変数の型も、キャストがなぜ必要なのかは疑問に思わない。むしろよく言われることだが、「コンピュータは器械なんだから何から何まで指示しなければわからないんだよ」ということがよく分かる。

ついでに、私が初めてやった言語がPERLということで、これは変数などの型はない。「PERLとインタプリタがよきにはからってくれる」というものだ。 確かに初心者向けなのかもしれないが、 ところが、このような状態でプログラムというものを始めると、ハードに関連した原因でのトラブルではもうお手上げなのだ。

ソフトはハードを動かすものなのだ。なのでいわゆるプログラマは、ハードの知識の方が、言語の知識よりはむしろ必要だと思う。これは組み込み系を初めて本当に実感したことだ。 「そりゃ組み込みではそうだろうけど・・・」と言われそうだが、いわゆるWindows上でプログラムを書くときでも状況は同じだ。PCというハードを動かすのだから。

組み込みエンジニア以外のプログラマに「ハンダヅケをしろ」とはいわないが、フリップフロップとか等の最低限の電気的な知識などはほしいところだ。

いろいろとノウガキを書いたが、以下に「私がCを始めたときに知っていれば非常に時間の短縮になったんだろうな」と思えるような質問と回答、および本をメモしておく。

ポインタ定義は必要なのですか?
ポインタ虎の巻
低水準上からプログラムを見る(整数処理編)
エンディアンネスの正しい理解
CODE コードから見たコンピュータのからくり
CPUの創りかた

システム管理者は読むべし

Linux等でネット管理や会社のサーバを管理する人は以下のサイトはなかなか良いはず。 linuxシステム奮闘記
ほぼテキストオンリーでの説明で非常に参考になる。 一言でいって、「ものすごい分量」だ。 なんとなくいろいろとよく漠然と疑問がある初心者管理者にとって、打ってつけのさいと。

トップページに戻る

バッファローのWLAE-AG300N

これを2台利用して無線ブリッジにしてあるのだが、AOSS接続でこれはなんの問題もなく繋がっている。 しかーし、EEEPCや、他のものがいっこうに繋がってくれない。 暗号かを無効にしたり、WEPにしたりとやったがどれをやってもだめだめ。 EEEPCはちゃんと近所と思われるSSIDは3件ぐらいひろってリストアップしてくれているのに、WLAE-AG300Nのものはまったく出てこない。 もうめんどうくさくなったので、知り合いから使ってない昔の無線ルーターを借りてきてやってみた。 あっさり繋がってひょうしぬけ。WLAE-AG300Nが不良品だと思っているのだがどうなんだろうか。 まあもう修理をするとか、サポートに聞くとかクソ面倒臭いので、この知り合いのルーターを譲って貰って、我が家ではWLAE-AG300Nの無線ブリッジと、この中古ルータで無線LANになっている。 もうこれでいいさ。いちるのもめんどうくさい。ばかばかしい。1週間も無線LANに振り回されて もうどうでもよくなった。

パソコンは使えればそれでよい

最近はWindowsというか、PC自体に興味がなくなった。とりあえず自分が使えればよい。人のPCのサポートなんかもうしたくないし、人のが動こうが壊れようがどうでもよいのだ。 とはいえ、自分でいざ使わなければならなくなってどうしたらよいかということが多くなった。 初心者の、初心者による、初心者のための音声パソコン小技集 ここは結構参考にさせて頂いている。 もう私にはPCのバージョンアップも、新しいM$のOSにも興味はまったくない。でもさ、どうしても使わなければならない場面が時々ある。 そのときに上のサイトは助かっている。これからもよろしくです。

トップページに戻る

Javaとかもろもろ

なんかSoapとかXMLの仕組みをちゃんと知りたくてということで、だったら自分はJAVAを全くしらんということで ここを読み始めた。 参照とかそれなりに書かれていたのでCのポインタをそれなりに分かってるつもりの自分には分かりやすかった。 結局、PerlをやるにしてもJavaをやるにしても参照と言うことが分からないと結局途中でわからなくなるのだと思う。なので 参照はポインタとは違う所もあるけど、考え方はCのポインタと全くと言って良いほど同じだと思うんだが、だからCはやはり知っていた方が良い。

自分のPCにはJavaがインストールされてないので記事と同じ物とは思ったのだが古いのでもう手に入らないようなので jdk-7u5-windows-i586.exe をインストールして問題なし。 それにしてもいろいろといわゆるプログラミングの勉強をするにはやはりコマンドプロンプトのスクリーンリーダの対応が必須だな。なのでしかたなくJawsを使うのだが。 Altairのコマンドラインでもよいんだがそれもめんどうなのよね。

/p> さて、Soapについ手だが、 パソコンで試してわかるWebサービス があった。 これをやってみようということで、記事の通り環境をということなのだが、記事で使われているAxisやTomcatが古いということで、 最初最新版を集めてきたのだがなんか記事の説明とはディレクトリ構造とかその他もろもろが変わっていて、なにも知らない自分には 最新バージョンで環境を整えるのは大変(実際にかなりはまってしまった)ということで、実際の勉強を始める前に環境設定でドロップアウトと言うことになってしまう。 ということで、なんとか jakarta-tomcat-4.1.31.exexml-axis-beta3-bin.zip を取ってきた。 これでなんとか上の記事と同じようにすればめでたく動いてくれた。

それで、上のSoapの記事をちゃんと読むにはある程度JSPとかServletがどういうものなのか分かってない自分にはまだだめだめということで 基礎から学ぶservlet jsp もやり始めた。別にJSPとかServletを勉強するだけならばApacheを新たにインストールしなくてもすでに上のTomcatだけで十分なのだが、なんか ApacheとTomcatを連係して使うのが流儀のようなので、これもやってみた。 JSPとかServletのような動的コンテンツはtomcatに任せて、静的コンテンツとか、こまかい設定やセキュリティ関係はApacheに任せるというのが一般的なようだ。 まあパソコンで個人的に勉強するにはどちらでもよいのだろうが。 ということで記事と同じようにApacheをインストールしてJK2を入れてTomcatと連係してみた。

ところが http://localhostとやってもApacheのページが開かない。いままで 何度とFreeBSDにApacheを入れてきたが動かなかったことなどない。 だからMSはめんどうなのよと文句を言いながらいろいろといじってみた。

もしかしてなにか80ポートを使っているのか?でもIISなんってものは入れてないし、 コマンドプロンプトを開いて
netstat -oan
とやってみると
TCP 0.0.0.0:80 0.0.0.0:0 listening 1864
80ポートがlistenになっている、なんでだ? 上のnetstatコマンドを-oanオプションで入力するとプロセス番号も分かる。今回は1864と言うプロセスが80ポートを使っている。 だからApacheとバッティングしているのだ。で、この80ポートをじゃましている奴はだれかということで再びコマンドラインから
tasklist
を実行。これはどんなプログラムが動いているのかわかる。psコマンドと同じ様なものかな。するとなんと
skype.exe 1864console 0 45,140 k
ということで80番ポートをじゃましているプロセスID(PID)1864の正体はskype.exeだった。 なんでスカイプが80ポートを使ってるのだということで、PCを立ち上げるとSkypeが常駐しているのでこの常駐を解除したらあっさりApacheが動いてくれた。まったく、Skypeなんかほとんど使わないから要らないんだけどね。

ということでちと検索してみたらskype.exeが80を使っていてXamppが動かないとかいろいろと同じような事例はあった。しらんのはおれだけか。skype.exeだけではなくて、inetinfo.exeも80を使う常連みたい。

ちなみにtasklistをいろいろと眺めているとなんかいろんなものが動いて居るんだな。Windowsはまったくわからないからなにがなにしてるのか全くしらんがね。 皆さんもtasklistコマンドを一度は実行してみたらどうだろうか。

で話はもどって、apacheもめでたく動いたことだし、JK2を入れてTomcatと連係してみた。 これは問題なくすぐにできた。
jakarta-tomcat-connectors-jk2.0.4-win32-apache2.0.49.zip を取ってくる。 これを解凍するとmodulesのなかにmod_jk2.soがあるのでこれをApacheの modules以下にこぴー。

次に、workers2.propertiesと言うファイルを新規で作る。

----workers2.properties------ [status:] [uri:/jkstatus/*] group=status: [shm:] disabled=1 [channel.socket:] [ajp13:] [uri:/examples/*]

このworkers2.propertiesをapacheのconf以下にコピー。

また次に以下をhttpd.confに書き加える。

LoadModule jk2_module modules/mod_jk2.so #----------------------------------------------- # Where to find the workers2.properties file #----------------------------------------------- # #JkSet config.file /usr/local/etc/apache2/workers2.properties JkSet config.file "C:/apache2/apache2/conf/workers2.properties"

これでJK2の設定は終了。tomcat、apacheの順番に立ち上げる。 そしてまず
http://localhost:8080/examples/
と言うように直接Tomcatにアクセスしてみる。Tomcatのインストール時のポートは8080だ。それでJSPとかServletのリンクページが表示されればオッケーだ。がページが見つからないなどのエラーが出たらそもそもTomcatがおかしいことになる。 ちなみに、examplesはTomcatのwebappディレクトリ以下にある。バージョンによってはexamplesではなくservlet-examplesとかと言うようなこともあるらしい。 私は最初にTomcatの5.5を入れたのだが、webapp以下にはrootとdocと言うディレクトリしかなくて、examplesやservlet-examplesみたいなものは見あたらなかった。 調べるのがめんどうなので、なんとかTomcatの4があったのでこれをインストールしたと言うのが理由である。 環境設定でいろいろとトラブルになる前にさっさとJSPやServletの練習をしたかったので。

それでめでたく直接Tomcatにアクセスできたら今度は8080ポートを指定せずにに
http://localhost/examples/
とやってみる。これで先ほどと同じように表示ができればめでたくApacheとTomcatの連係ができている。 分かっているとは思うが、今の場合、Apacheに直接アクセスしていることになる。TomcatがApacheの裏で動いていてApacheと連係しているのだ。

ブレールライトのバッテリー

点字のノートテイカのブレールライトの内蔵のバッテリーがかなりへたってきてしまって、すぐに充電してもだめになる。 アメリカに送ってバッテリーを入れ替えてもらったらたぶん送料やなんやらで30000ぐらいはたぶんかかる。 それにあのメーカーは最近はしらんがあまり対応がよくないのでどうも好きではない。

だったら日本でバッテリーを組んでもらおうということで以下のところにお願いした。
ネクセル

結論から書くとよく作ってくれて満足している。9000円で作ってもらえた。 手元に3台のブレールライトがある。どれもバッテリーがへたってるので最初3こバッテリーを組んでもらおうと思ったんだけど、やはり最初と言うことで1こにした。 満足したので追加で2こお願いしようと思っている。

やはり組むにあたってバッテリーのチューブを開いて中野回路を見ないとということで、こちらからへたっているバッテリーをサンプルとして最初に送った。 このバッテリーもちゃんと元野状態にしてくれて返してもらえた。 1花月ちょっとかかったが、今度はそれほど時間はかからないと思う。

ネクセルのサイトを見て貰えば分かるがバッテリーもなかなか奥が深いと思った。