2000年3月の雑感

[トップページへ] [2月の雑感] [4月の雑感]

3月31日(金)

100%風邪

本格的に喉痛いです.なんか熱っぽいし.もう100%の風邪です.

組み込み Ruby

Ruby を組み込む上で参考になると思われるアプリケーションが RAA でいくつか公開されてます.mod_ruby, Vim/Ruby, Jed/Ruby です. ちなみに RubyWin を作るときに参考にしたのは,Vim/Ruby のソースです.


3月30日(木)

風邪?

喉痛い.風邪か?

STDOUT

今週は,RubyWin を更新する元気がありません. ということで今週は更新なしにするつもりだったのですが... STDOUT.puts とか RubyWin で使えるようにしたつもりだったのに ちゃんと動かないことに気づいたのでちょっと調査. (テストしてなかったということです.) C レベルでどうすれば良いのかわからんかったので さっさとあきらめて rwinit.rb で対処. (でもちょっとすっきりしないなあ.何故に private? 仕方ないのかな?)


3月28日(火)

書き間違い

『定数』と書くつもりで『グローバル変数』って書いてしもた. しかも指摘されるまで気づかんかった. (負け惜しみにしか聞こえんのが悲しい.)

rb_load_protect vs rb_load

RubyWin では,スクリプトを実行するのに rb_load を使わないで rb_load_protect を使っています. rb_load を使った場合,例外が発生すると問答無用で RubyWin まるごと終了するためです.

rb_load(script_file, 0); //例外が発生すると問答無用で RubyWin も終了.

Ruby の場合は,例外が発生したら

スクリプトの実行を終了し,Ruby インタプリタそのもの (ruby.exe) も終了しても問題は無い

訳です.(私の解釈です.)

ところが,RubyWin のようなアプリケーションの場合, 例外が発生したら

スクリプトの実行は終了しても,RubyWin そのもの(rubywin.exe)は,何事もなく動き続けなくてはならない

訳です. (この部分が Ruby と RubyWin とでは根本的に違うので,結構悩ましい部分だと思ってます. 多分 mod_ruby や Apollo も同じような悩みを持っているのではと想像してます.)

こういう用途のために rb_load_protect が存在しています. rb_load_protect を使った場合には,例外が発生してもそこで終了しません. 例外が発生したかどうかは 3 番目の引数で判断できるようになっています.

int state = 0;
rb_load_protect(script_file, 0, &state); //例外が起こっても終了しない
if (state) {
    // 例外が起こっている
} else {
    // 例外なく正常にスクリプトが終了
}

同じような目的で,rb_eval_string 関数に対応して rb_eval_string_protect という関数が用意されています.

・・・というようなことも,Ruby 本に書かれているかなあと思って ちょっと読み返してみましたが,rb_load_protect には触れてないみたいです. (逆に rb_protect という関数があることを知りました. 最初に読んだときは読み飛ばしていたらしい.)

間一髪

雷がひどかったので,パソコンの電源を切ったら,その直後に一瞬停電した. 間一髪セーフ.


3月27日(月)

教育

なじみのない専門用語ばかり使って説明されても眠くなります. そりゃなじみのある人もいるでしょうが, 私には何のことだかさっぱり. いろんな職種混ぜて一辺に教育しようという点に 無理があるような気がします. 教育効果が半減するのでは?

rb_load_protect

rb_load_protect の第二引数に true を指定するということは, 定数の定義が rb_load_protect 内でしか有効にならない(と私は理解してます) ・・・ということは,

rb_load_protect 内で定義されたクラスも rb_load_protect 内だけで有効

ということで, これは,RubyWin でも使えそう. というより true にしといた方がええんちゃうの? (気づくのが遅すぎ.)

ちなみにこの rb_load_protect は,Ruby 内では使われていません. RubyWin のような Ruby を組み込むためのソフト用に作られたものです. そういう関数が欲しいと要求した方がいて, その要求に Ruby の作者のまつもとさんが応えた訳です. で,RubyWin はそういった茨の道が切り開かれた後を通っているので, その分だけ楽をしています. 切り開いてくれたみなさんに感謝してます.


3月26日()

道幅

子どもの頃に通った道を久々に歩いてみたら道幅が狭く感じられた. もっと広い道だと思ってたんだけどなあ.


3月25日()

Java

前から思ってたんですけど,一時の Java ブームはどうなったんでしょう? Nifty の Java 関連のフォーラムも一時に比べると盛り上がってないようですし. Java が下火になったというつもりはありません. むしろ地に足がついた Java という感じがして着実に浸透してきているような 気がします. ただ一時のブームはどうなったのかなあと,妙に気になります.

ちなみに3回ぐらい Java に手を出そうとして挫折してます. Hello World のプログラム書いて実行してそれで毎回おしまいになってます.

という理由が大きいのではないかと思います.

Kaffe というのを Vine Linux 1.1 環境に インストールしてみたことだし,ちょっと Java 再々々々入門してみるか. 入門なら Kaffe で十分でしょう. (← 私は Kaffe も Java もよくわかってないのであまり突っ込まないように.)


3月24日(金)

最低

サーバーがある誰もいない部屋で一人閉じこもって仕事. 後ろの方で巨大なエアコンがゴーッゴーッと大きな音をたててるし, 暖房効いてないから寒いし. (エアコンはサーバーにとって快適な温度に設定されており, 私にとって快適な温度には設定されておりません.) 他に話相手も仲間もいないし. 一人寂しいものだから独り言を結構大きな声で言ってみたり. 昼休みのチャイムが聞こえないので,食堂に行くのが遅れたり. (私が食堂に行ったときには今日のメンチカツ定食は売り切れてました.) なんか最低.


3月21日(火)

cygwin1.dll

Cygwin 版 RubyWin が動かなかったのは, 結局 cygwin1.dll のバージョンの違いが原因だったようです. cygwin1.dll のバージョンによっては C:\foo\foo.rb というフルパスを認識できないバージョンがあるようです. (//C/foo/foo.rb とすれば認識されました.) 最近の cygwin1.dll なら大丈夫みたいです. (手元にあった最も新しい 2000-01-08 版 では大丈夫でした.)

Cygwin は,UNIX の環境を Windows で実現するとか, UNIX のツールを比較的簡単に Windows に移植できるという点が強調されてますが, (私はそういう認識をしていました.) RubyWin のような普通の Windows のソースもコンパイルできるようになっていたんですね. なんかちょっと逆に意外な気がしました.意外な盲点だとは思いませんか?


3月19日()

一緒

背景のイメージ取っても一緒や.変わらんな. 背景色を別の色にしても良いのですが, どうせなら目に優しい色とかにしたいです. どういう色が良いのでしょうか? 色盲というのか色弱というのか良くわからないんですが そういう目に障害のある方でもちゃんと読めるページにしたいです. 避けた方が良い色とか組合せとかあるんでしょうね. 前にちょっと調べたのですが,結局よくわかりませんでした.


3月18日()

GIF

ふと私のページで GIF 画像使ってるかなと思って調べたらしっかり背景に使ってました. ほとんど全部のページの修正かあ. RubyWin 関係のページを除いて,私はこのサイトのページがブラウザでどう見えるのかは 主に w3m でフレーム無しの設定にして確認しているので,背景が何だろうと私は気にならないんですが, 余計に地味になるかなあ. (たまに NetScape とか NetFront とか IE5 とかも使ってます.)

このページは,w3m のフレーム無しで最適に見えるようにデザインされています.(嘘)

Windows 2000 で動くソフトもなんかややこしい話がありますね. RubyWin もそれに該当するんだろうな.多分.

休刊

TransTech 本当に最終号が届きました. 先月始まった新連載をはじめ,思いっきり中途半端に終っている連載も結構あるようです. よく考えてみたら,雑誌の最終号を買ったのはこれが初めてです. ・・・返金の手続きでもしますか.

CVS

Vine Linux には cvs があるのか.全然チェックしてなかった. cvs の使い方調べなきゃ. この前の Ruby 1.5.3 は,Linux から cvsget.rb 使って入手してました.


3月17日(金)

Ruby 1.5.3 でも Win32OLE を動くようにしてみました. やはり Symbol 絡みでした.詳しい情報があったので助かりました.

Ruby 1.5 に積極的に対応するつもりはないのですが,今回の修正内容は Ruby 1.4.3 でも影響がなかったので修正しておくことにしました. もちろん,1.5 系だろうが 1.4 系だろうが パッチ,バグレポートその他 コメントはいつでも大歓迎.


3月15日(水)

」と書いてあるドアを 引いて開けようとした私は相当疲れているんでしょうか???


3月13日(月)

Ruby1.5.3

Ruby1.5.3 を Windows 95 で Visual C++ でコンパイル. byacc が見つからないと文句いわれたので,cygwin の byacc を使うようにした. (cygwin の byacc.exe をパスの通っているフォルダにコピーした.) 後はすんなりコンパイル通りました.nmake test も 1.4.3 と同じ結果. 今日はここまで.


3月12日()

Ruby 1.6

Ruby 1.6 は夏頃に公開予定なんだとか.

cygwin 版 の1.5.3 では Win32OLE がそのままだと 動かないという情報と修正箇所の情報をいただきました. 内容から察するに最近 ruby-dev で話題になった Symbol 絡みで 動かないのではないかと予想してます.

というような訳で,そろそろ 1.5 にも手を出しておいた方が良いかなと思い cvsget.rb を使って 1.5 系を入手. 今日は Vine Linux 1.1 でコンパイルしただけ.

RubyWin on Cygwin

Cygwin 上でも RubyWin がコンパイルできたそうです.

で,バイナリをダウンロードして私の Windows 95 で試してみたのですが, 肝心のスクリプトの実行が全くできません. Version 情報のダイアログを表示させると rubycw.dll の情報をちゃんと表示するので インタプリタは起動できる模様. エラーメッセージから察するに RubyWin(rubywin.exe) からインタプリタ(rubycw.dll)に渡す スクリプトのファイル名の指定方法に問題がありそう.


3月10日(金)

RubyWin のオートインデント

RubyWin のオートインデント機能に手を加えました. ちょっとましになった・・・んではないかな. ・・・なっているといいな.

Ruby のオートインデント機能の実現は, C と比べると結構面倒な気がする今日この頃. 逆に Ruby のオートインデント機能ができれば, C のインデント機能は簡単にできる気もする.

Linux 系雑誌

書店で見たら結構種類が増えてますね. Tech Linux なんてのまであるのにはちょっとびっくり. 2週間以上遅れて Linux Japan 4月号を購入.


3月9日(木)

結局 Unix

私が Windows の環境に大きな不満を抱かなかったのは,

という理由だということがやっとわかりました. UNIX-like なツールを一切使えない純粋な Windows 環境で作業して初めてわかりました. という訳で,私は今大きな不満を抱きつつ我慢して作業してます. ぶつぶつ文句言い始めてます.危険です.


3月8日(水)

振り出し

一日かけてやった仕事が,無駄になりそうな嫌な予感. 無駄に終わるぐらいならまだ良いけど, 元の状態に戻すための仕事が増えそう. ・・・私が悪いんです.

馬鹿なオートインデント

RubyWin のオートインデント機能には 誰にでもすぐにわかるひどいバグがあるのですが, デバッグするのが面倒なのでほったらかしになってます.


3月7日(火)

map

RubyWin で C++ の STL の map 使うと 一気に実行モジュールのサイズが膨れ上がった. サイズは以下の通り.

ちょっと意外な結果. 前回は 圧倒的に VC++ の方がサイズ小さかったのに. STL が原因? ・・・とすると, Windows API に特化したところでは VC++ の方が強くて, 他の部分では,Mingw32-GCC でも良い勝負になるのか? もっとも,VC++ の方は最適化のオプションとか何もいじってないし, 単なる1本のプログラムの比較なので これが公平な比較になってるのかどうか疑問.


3月4日()

この一週間で ruby-talk のメールの 数が ruby-list とほぼ同じでした. ここ2週間で2通怪しげな英語のメール (私のように英語が怪しいのではなくて書いている内容が怪しいメール) が届きました. これはやっぱり 例のインタビューの記事 が公開されているから?


3月3日(金)

久しぶりに遅くまで仕事したもので疲れました.

Toolbar & MDI

theForger's Windows API Programming Tutorial に Toolbar のついた MDI のサンプルがありました. WM_SIZE で MDI Client Window のサイズを変更するだけで良かったのか. ・・・ってことはあんな風にすればこんな風になるのかな... (コードをちょっと変更してしばし実験)予想どおり.:-) ・・・ってことはやっぱりああした方が使いやすいかなあ.

でも Toolbar って必要?


3月1日(水)

なんか頭痛いし,喉痛いし,体だるいし,風邪???

Tokyo Perl Mongers

昔,Perl Mongers というものを全く知らなかった頃 (今もあまり知らないのですが) 「とうきょうぱあるもんじゃあず」と読んで

もんじゃ焼きを食べながら Perl について熱く語り合う 粋でイナセな江戸っ子の集まり

と勘違いし, なんかそうゆうのも良いなあとうらやましく思ったのは 私だけだろうな.きっと.


[トップページへ] [2月の雑感] [4月の雑感]