DaveとAndyのRuby本が翻訳されて出版された模様。 予想通り、原書を読み終えてしまう前に翻訳書が出版されました。
日本語トップページにつけたカウンターは大体210(2001-08-12 〜 2001-08-18)。
英語トップページに移動して大体281(2001-08-18 〜 2001-08-24)。
このページに移動して大体420(2001-08-24 〜 2001-08-31)。
うーむ。直接、このページ見にくる人が多いかと思ってたんですが、トップページを見る人の方が多いのか。 さすがに英語トップページは少ないですね。これは予想通り。
Cascading Style Sheet のことかと思ったら、Cross Site Scripting だそうな。 略語は難しい。 どっちも、HTMLと関係があるらしいから余計ややこしいぞ。
メール出そうとして、.addresses ファイルが無いことに気付く。 あっ。バックアップも取ってない。 受信メールから取りあえずメールアドレスを抜き出した。 でも、一部の人のは消えて無くなりました。
細かい地味な復旧作業は、日々続く。
UniteeというJUnitのようなTesting Framework。 なんか、sourceforgeっぽくないページだ。 JUnitと違うのは、テストデータとTestCaseは分離しているところらしい。 テストのデータを引数として渡せるのかな。
忘れてたけど、Javaの環境を復旧させるのが先決。 とりあえず、JDKだけでいいか。
ちょっと気になるバックアップツール。
再インストールする前に、1回、フロッピーからのブートを試みるべきでした。
段取り良く進む。テキパキと順調に進めば、3時間で終わることが判明。 ということで、午前中で仕事は終わり。
購入、そして読了。 自分が、ぶたぶたに慣れてきたので、インパクトが薄れてきてます。 うーむ。そうか。ぶたぶたは刑事に向いていたのか。 じっとしてれば、目立たないし、無茶苦茶タフだし。
「思い出せない女」が好み。
ある程度、環境が整ってきたので、あとはのんびりやります。 慌ててやるとチョンボしそうだし。 必要なものからインストール、設定していくことに。 大きなもので残っているのは、CVSの設定とVMware(+ Sambaの設定)。 VMwareは、まとまった時間が取れるときにやります。 (ファイルが壊れてたら2000のインストールからやり直しなので。)
たっ隊長! 大変です! ls コマンドが見つかりません!
pathが通ってないだけでは?
cd してもホームディレクトリが無いと言われます!
とりあえず、exitして、リブートしてみろ。
駄目です! Kernel Panic です! 起動できません!
間違ってファイル消しちゃったんじゃないの?
確かに私、 find . -type f | xargs rm などと root で実行しておりました。 しかし、天地神明に誓って、. は / ではありませんでした。
そう言う奴に限ってやってんだよ。 とりあえず再インストールしてみれば?
隊長! インストール開始します!
隊長! /dev/hda1 /dev/hda7 /dev/hda5 のパーティションが表示されました。
/dev/hda1(/) と /dev/hda5(/usr) はフォーマットしてインストールしろ。 /dev/hda7(/home) はほうっておけ。
隊長! 指定した覚えのないGnomeがインストールされているようです!
いや、そう言い張る者に限って指定しているんだよ。
隊長! 焦って run level 5 で起動するように指定してしまいました!
仕方あるまい。
隊長! GUIなログイン画面です! ログインします! ログインしました。Gnome 遅いです!
Gnomeが遅いんじゃなくてマシンが遅いのだ。
隊長! /home の中身は無事な模様です! ファイルが残っています!
どうやら . は / では無かったようだな。
隊長! /usr/localに何もありません! JDKが消えました! Tomcat もありません! Rubyの最新版も! vmware もありません!
うーむ。やはり、/ /usr /usr/local /home の4つぐらいに分けておくべきだったか...
... という訳で何とか復旧中でありますが、元の状態に戻るにはもう少し時間がかかりそうです。
VMwareは消えたけど、仮想ハードディスクファイルは残っているので、 ファイルが壊れてなければ復旧はそれほど手間取らないと思われます。
でも原因が良くわからないし、ハードディスクが壊れつつあるんだったら嫌だなあ。 やっぱりいざという時のためにもう1台あるといいんだけど。
幸い、直撃されなかったようだ。 台風というより、普通に雨。 いつもと違うのは、ちょっと風があることくらいか。
せっかくなので、ヴァージョンアップに挑戦。
tar zxvf /soft/linmodem/ltmodem-6.00a.tar.gz cd ltmodem-6.00a1 ./build_module ./ltinst2 ./autoload
lsmod しても何故か駄目だったので、1ST-READを読んで、
/etc/rc.d/rc.local の最後に
/sbin/insmod -f lt_modem /sbin/insmod -f lt_serial
の2行を追加
/etc/conf.modules の `"$ALIASLINES"`をコメントアウトして
alias char-major-62 lt_serial
を追加。こんな感じ。でもこれで正しいのかどうか自信がない。
insmod_opt=-f # lt_drivers: autoloading and insertion parameter usage # `"$ALIASLINES"` alias char-major-62 lt_serial # options lt_modem vendor_id=0x115d device_id=0x0420 Forced=3,0x130,0x2f8 # section for lt_drivers ends
再起動してちゃんと moduleがロードされていることを確認。
# lsmod Module Size Used by lt_serial 17536 0 (unused) lt_modem 314304 0 [lt_serial]
前より Size が小さくなった。無事に、モデムを使えることを確認。
/dev/ttyS14 から /dev/ttyLT0 に変わったのか(ずーっとlinux568.zipを使っていたのでした)。
近づいてきているせいか、涼しい。
tar zxvf ucl-0.92.tar.gz cd ucl-0.92 ./configure make cd .. tar zxvf upx-1.20-src.tar.gz src/Makefile の、ucl-0.92のディレクトリを変更 UCLDIR=../../ucl-0.92 make target=linux
upx を引数なしで実行すると
This version supports: dos/exe, dos/com, dos/sys, djgpp2/coff, watcom/le, win32/pe, rtm32/pe, tmt/adam, atari/tos, linux/386
と表示されるのだが、これは、Linux上でもWindowsのファイルを圧縮できるということか。
Windows(Cygwin) へのインストールは、最後のところだけ
make target=cygwin
とすれば良い。
ついでに -mno-cygwin で作るには ucl-0.92 の configure で
env CC="gcc -mno-cygwin" ./configure i386-mingw32
として、最後の upx の make で
make target=no-cygwin
とする。
何となくアップグレードしてみました。 アップグレードは何なく終了。 いくつか設定しなければならなかったので、メモ。
アップグレード時に何かへまをしたらしく英語キーボードの設定になってしまった。
/etc/sysconfig/keybord
を編集。
KEYBOARDTYPE="pc" KEYTABLE="jp106 jp106_Ctrl_CAPS"
再インストールしたらつながりました。
Kernel のヴァージョンが変わったら、リビルドしないといけないらしい。
/usr/bin/vmware-config.pl
を実行。
途中でSambaを導入するか聞いてくるので、それだけはnoにして後はyes。
(Sambaは自前でインストールしたものを使っているため。)
日本語トップページのカウンターは210(2001-08-12 〜 2001-08-18)。
javacが動かないのは、glibc のバグのせいらしいという情報を 得ていたので、やっとglibcをアップグレード。
glibc-2.1.3-16vl9 glibc-devel-2.1.3-16vl9
から
glibc-2.1.3-21vl3 glibc-devel-2.1.3-21vl3
にしました。これでちゃんと -hotspot が動くことを確認。
ラーメン頼んだらチャーシューが入ってなかった。 夏休みモードも明日までの辛抱。きっと。 こう毎日続くと段々ダメージが...。
読了。run-hooks の説明がほとんどなかったり、駆け足の部分があります。 これだけだとちょっとつらいので、次の1冊が必要です。 とりあえず、emacs-lisp-intro (の日本語訳)をinfoで読むことにしました。
読了。初心者向け。中級者にはちょっと物足りないかも知れません。入門書です。
ifstream ifs("file.txt"); char buf[100]; while (ifs.getline(buf, sizeof(buf))) { cout << buf << endl; }
とすると、1行が100字以上だとそこで読み込み処理が終わってしまう。 VC6, Cygwin ともにそうだった。 そういうものだったかしらん。
ifstream ifs("file.txt") string str; while(getline(ifs, str)) { cout << str << endl; }
とするとOK。こういうのって富豪的? ちなみに
ifstream ifs("file.txt") string str; while(ifs.getline(str)) { cout << str << endl; }
はエラーになります。
今日も休みモード。 明日のことも考えて3日続けてカレーは嫌なので、まだ残っていた焼飯を注文。 何か不味くないですか? 休みだと味まで落ちるんですか? カレーにしとけば良かった。
読了。うーん。ひょっとしたら傑作かもと期待しながら読んだのですが。 ある種の世界を構築して、その世界でしか通用しない論理による華麗なる推理というのを期待していたんだけど、 最後はちょっと腰砕けな感じがしてしまいました。
なんか期待しすぎた(違うものを期待した)のがいけなかったんだろうなあ。
が、お盆休みモードに入っていた。 いつもの小鉢の一品料理は無いし、日替定食は売り切れてるし、丼は並んでいる途中で売り切れるし。 全部売り切れで昼抜きになるんじゃないかと思って、ドキドキワクワクしてしまった。 (この「ワクワク」は、全部売り切れという初めての経験ができるかもというワクワクです。)
幸か不幸か、カレーが残ってたので、カレーにありつく。
うーん。この分だと、明日、明後日もカレーかな。
期間限定でつけてみることに。 ハーボットは重いみたいなので却下。
と大阪で会う。 Javaとか、XPとか、ハーボットとか。EmacslispUnitを作れだとか。 カウンターをつけてみるとか。 (今になって、EmacslispUnitって探せばあるんじゃないかという気がしてきました。)
友人につきあってもらって、書店へ。
『Java言語プログラミングレッスン下』 結城浩 著
やっと購入しました。下巻。これで一安心。
『Emacs Lisp』 青柳龍也 著
Emacs Lisp を少しいじれるようになりたいので。 cmail とか emacs-w3mなどに機能を追加したいと思うことが あっても追加できないでいるのです。 それを解決すべく、とっかかりの1冊。
『ぶたぶた』『ぶたぶたの休日』 矢崎存美 著
どっかで、話題になってたので。
『屍天使学院は水没せり』 新城カズマ 著
どっかで、話題になってたので。
XPの新刊は今回、見送り。また次の機会。
久々に入った喫茶店で、 「ミルクの味が新しくなりました。 よりイギリスの味に近くなりました。 ご賞味下さい。」 と店員さんに言われる。 アイスミルクティーを飲んでみたら、 ミルクの味がしっかりしてるような気がした。 (私は感化されやすいのです。)
でも、飲み終わったあと、しばらくして、 なんか気持ち悪くなってきてムカムカしてきた。 (いや。ミルクティーのせいじゃないかも知れないけど。)
一気読みしてしまいました。 最もミステリ色が強い「女優志願」が好み。『刑事ぶたぶた』も読んでみたいです。
支店には上巻しか売ってなかったので、 本店の方まで行ったのにやっぱり上巻しか無かった。 もうそろそろ上巻を読み終わるので、下巻を何とか入手しないと。 それにしても、上巻2冊も置いてあるのに、なんで下巻が1冊も無いんですか???
知らないうちにできてたので、時間つぶしにちょっと入ってみる。 アイスティー頼んだら、ビールジョッキ並みのでっかい容器で出てきた。 普通の喫茶店の2倍はあるんじゃなかろうか。
『修羅の門』の最後がどうなったのか知らなかったので読んでみる。 うーん。そういうことだったのですか。
を利用すると、Javaから、Cのコードも利用できるらしいことを知る。 これは、RubyWinのJava移植で利用できるかも。 (RubyインタプリタはそのままCのコードを利用して、GUIだけJavaにする。)
JNIもそのうち触ってみなくては。
マイクロソフトからCodeRedに関するお知らせメールが来ていた。 (なんか違う形だけど、CodeRedに絡めて嬉しい。)
連携に関する情報ありがとうございます。 (例によって情報がすぐ消えるのでリンクしません。)
あっちゃこっちゃで話題になってますね。 どうやら何回来たかという数とともに話題にしてる方が多いようですが、 数の多い方が勝ちなんですか? 少ない方が勝ちなんですか?
えっ? 私? 今のところそういうのとは縁の無い環境なもので。 仕事では管理してないし、自宅は、PPPだし。
あっ。電話かけてる間だけ、Apache立ちあげればいいのか(←Apacheの用途を激しく間違えてます。) それにしても、私、無意識のうちに絶妙のタイミングでApacheをインストールしてますねえ。 (ちょっと出遅れてる?) うーむ。これはCodeRed戦線に参加せよとの神さまのお告げか?(←だからやめなさい。)
いや。ちょっと参加できなくて寂しかったもんで、無理矢理絡んでみました。
デフォルトコンストラクタを定義してないからエラーなんですね。 定義しましょう。 これ以上は、WEB交換日記形式(←何やそれ?)はやめて、直接パッチをメールで送らせていただきます。
ところで、本当は、デフォルトコンストラクタを定義するのが正しいのでしょうか? 手元の本を調べたけどはっきりしませんでした。
vector<TEXTCOLOR> textColor(100);
とする場合には、デフォルトコンストラクタが無いとエラーになると手元の本には書いてありました。 でも、
vector<TEXTCOLOR> textColor;
の場合はどうなのか見つけられんかったです。
VC5のデフォルトコンストラクタを定義しろというのは正当な要求のようにも思えます。 でも、CygwinもVC6も要求しないんですよね。Borlandはどうなんだろ?
C++(STL)は私も良くわかってないのですが、わかってないからこそ、勉強を兼ねて、 開発当初からRubyWinはC++で実装ということになってます。 (でも、今さらC++か?という気がしないでもないです。)
なるほど。 Ruby 1.7 と VC6での話でしたか。 すいません。 基本的に、私は開発版Rubyのことを考慮しないことにしてます。 特にRubyの機能を組み込むRubyWinとか、拡張ライブラリのWin32OLEについては。 正直、そこまで手が回らないのです。 (個人的にLinux上で日常使っているスクリプトは、ほとんどRuby1.7に移行しているんですけど。)
でも、パッチはありがたく頂戴して組み込ませていただきます。 ありがとうございます。
C-c C-v C-c でコンパイル。
C-c C-v C-r で実行。
これだけでも覚えておくとそれなりに便利。 結城さんの『Java言語プログラミングレッスン』の問題を自分でやるには、これで十分です。 (まだ3章までしか終わってませんが(笑)。)
JSP への道第2弾。どうもAntをインストールしないといけないらしいのでインストール。
mkdir /usr/local/jakarta cd /usr/local/jakarta tar zxvf jakarta-ant-1.3-src.tar.gz ln -s jakarta-ant-1.3 jakarta-ant cd jakarta-ant export ANT_HOME=/usr/local/jakarta/jakarta-ant export JAVA_HOME=/usr/local/jdk1.3.0_02 ./build.sh install
JSP への道第3弾。 SSL対応のためのJSSEのインストール。 (J2SE SDK 1.4には最初から含まれているみたいだ。)
unzip jsse-1_0_2-gl.zip cp jsse1.0.2/lib/*.jar /usr/local/jdk1.3.0_02/lib/ext export CLASSPATH=$JAVA_HOME/lib/ext/jcert.jar:$JAVA_HOME/lib/ext/jnet.jar:$JAVA_HOME/lib/ext/jsse.jar
JSP への道第4弾。
cd /usr/local/jakarta tar zxvf jakarta-servletapi-3.2.3-src.tar.gz ln -s jakarta-servletapi-3.2.3-src jakarta-servletapi cd jakarta-servletapi chmod +x build.sh export CLASSPATH=$ANT_HOME/lib/jaxp.jar:$ANT_HOME/lib/parser.jar:$CLASSPATH ./build.sh dist
JSP への道第5弾。ようやくTomcatなり。
cd /usr/local/jakarta tar zxvf ~/webtmp/jakarta-tomcat-3.2.3-src.tar.gz ln -s jakarta-tomcat-3.2.3-src jakarta-tomcat cd jakarta-tomcat chmod +x build.sh
jaxp-1.0.1でなくて、Antと一緒に配布されているjaxp.jar, parser.jarを利用するように build.xmlを編集する。
diff -u1 build.xml.org build.xml --- build.xml.org Tue Jul 17 23:25:27 2001 +++ build.xml Sun Aug 5 22:21:23 2001 @@ -7,3 +7,3 @@ <property name="j2ee.home" value="../../j2ee/build/unix"/> - <property name="jaxp" value="../jaxp-1.0.1" /> + <property name="jaxp" value="../jakarta-ant/lib" /> <property name="optimize" value="true" />
編集できたら
build.sh
あとは
cd /usr/local/jakarta/build/tomcat ./bin/startup.sh
で起動すれば、OK。
さらに、http://localhost:8080/ にアクセスしてJSPのサンプルを実行できれば完璧。
停止は、
./bin/shutdown.sh
疲れた。
このような複雑怪奇なインストール作業が一発ですんなりできるはずはありません。 都合5回くらいは最初からインストールし直してますです、ハイ。 途中であきらめて、Tomcatのバイナリのインストールもしました。 実行して、Tomcatが動くことを確認して、アンインストールし、 気分も新たに再挑戦したら最後まで進みました。
次は、Apacheとの連携です。 (ハマったらすぐにあきらめることにします。JSP入門するのに絶対必要って訳でも無さそうだし。) で、その次に、やっと自分でJSPなページを作ってみると。 果してそれまで気力、体力は続くのか!? 次回乞うご期待。
make install して、httpd.conf を自分の環境に合わせて変更。 問題なく動作することを確認。RWikiを動かしてCGIも使えることを確認。
ちびちびと200ページくらい読んでいたんだけど残りを一気に読了。 うだつの上がらないフロスト警部が段々格好良く思えてくるから不思議。 何だかんだ言いながら、人間フロストとしてのスジを通そうとし、部下をかばうところがいい。
やっぱり、今回も、読んでいる途中で、どの事件の関係者なのか、 どの事件の話題なのか、わからなくなってしまいました。 全部の事件がちゃんと解決 ... したんだよな。多分。
警部の奥さんがどんな人だったのか興味があります。
別に、VC5のサポートをやめた訳じゃなくて、VC6の環境しか手元に無いのでした。 VC5でもコンパイルできるのならできるようにしたいです。
ということで、VC5だとこう修正したらできたとか、こういうエラーが出るとかいう情報も歓迎します。
うーん。でもVC6でも駄目ですか? 0.0.3.6だと大丈夫だと思うんですけど。 キャストって、RUBY_METHODFUNCの問題とはまた別の問題なんでしょうか?
cygdrive じゃ駄目なのか。 [rubytalk:18879]のパッチをありがたく頂戴して組み込む。
ついでに、VC++でコンパイルできなくなってたそうなのでそれにも対応。 さらに、SJIS と UNICODEの変換は、WindowsのAPIを使うように修正。
ふとJSPを触ってみたいなあと思ったので、環境を作るべく、Apacheをコンパイル。 (最近、Apache + Tomcat というのがJSPの王道らしいということを知りました。)
tar zxvf apache_1.3.19.tar.gz cd apache_1.3.19 ./configure --enable-rule=SHARED_CORE --enable-module=so make
インストールと設定は、また今度。
何故か、夜間に動いてとっくに終わっていなくちゃいけない処理がまだ動き続けている。 前から時間がかかっていて、ちょっと気になっていたので、少し気合いを入れて調べることに。 (この処理が終わってくれないと、本日予定していたはずの本来の仕事ができないのです。)
この処理はいくつかの小さな処理単位に分かれていて、それぞれの終了時刻がわかっている。 そこで、終了時刻を元にして、小さな処理単位に所要時間を算出して、多い方から順に並べてみることにした。 こういうときは、Rubyの出番。適当にスクリプトをでっち上げる。便利ですね。 もちろん(?)RubyUnitを使ったテストファーストプログラミング...は、やりません(笑)。 だって、使い捨てだから。
ネックとなっている処理(複数)がわかったので、後はこれをいかに高速化するか。 試しに別のツール使って同じ処理をやらせたら速かったので、遅い処理のいくつかをこのツールを使うように変更。
結局、時間切れになって、本日予定していたはずの仕事はできなかった。 今日やらなきゃいけない訳でもないし、まあいいか。