2001年11月の雑感

[トップページへ] [10月] [12月] [過去の雑感へ]

11月30日(金)

TCPSocketPipe

中活躍程度でした。でも助かりました。 テストの目途もついたし。

それにしても、Rubyってネットワークプログラミングが 本当に簡単にできてしまうなあと感じてしまった1日でした。

軟弱

なのかどうかはわかりませんが、テストスクリプトでは


system("rm -rf bar")

system("cp -rf foo")

なんてことは、しょっちゅうやってます。

Screen

以前Linux JapanにRuby/SDLの記事を書いてらっしゃった、たむらさんからメールを頂きました。 27日のLinux Magazine は Linux Japan の間違いです。(修正しました。)

記事は読んだので、あとは実践で便利さをどこまで実感できるかだな。 ここが勝負の分かれ目です。

そういえば、Cygwinでコンパイルに挑戦したこともあったんだった。 誰かのページでScreenのCygwin版を見て、先を越されたと思ったこともあったような気がする。

Cygwin

shutdown もあるのか。


11月29日(木)

TCPSocketPipe

大活躍するはずだったんだけど、小活躍程度に終わった。 大活躍は、きっと明日だ。きっと。

忘れ物

仕事を1つ忘れていたことに帰りに気づいた。 ごめんなさい。明日やります。 TCPSocketPipe大活躍の日がちょっとだけ遠ざかったような気がする。

RubyUnit

RubyUnitのto_strメソッドがまずい([ruby-list:32604])との指摘をうけたので、to_stringに急遽変更。


11月28日(水)

多忙

なんかバタバタとした1日。 結構忙しい1日だったのに本来の仕事は、ほとんど進まず...。

本当は、なひさんのTCPSocketPipeを大活躍させようかと考えていたんだけど、それは明日以降。


11月27日(火)

Linux Japan

screenの特集があるのを発見。 これを機会にscreenを使ってみようかと思ってます。 一度触ってみて、これは便利かと思ったのですが、いつの間にか使わなくなってしまったのでした。

体調回復

昨日早く寝たので、今日は少し元気です。 まだ、完全ではないので、今日も早く寝ます。


11月26日(月)

体調不良

寒気がするし、頭も痛いので寝ます。このページの更新も1回休み。

『MISSING』(本多孝好) 読了

「静のミステリー」です。 この人は、ミステリーというジャンルから、どんどん離れていきそうな予感がします。 この予感は外れてほしいんですが。


11月25日()

リンク

昨日のruby-talkのリンクが無茶苦茶。すいません。

仕事

午前中で終了。

昼食で食べなかったもの

今日、昼に入った讃岐うどんの店のメニューに「とんこつチャーシューうどん」なるものがあった。 「ラーメンを越えるか!?」 なんて小さく書かれていて、ちょっとだけ魅かれるものがあったのだが、 私は気弱な小市民なので、注文できなかった。

うどんとラーメンの麺は基本的に同じですか? だとしたら、単に普通の太麺のラーメンなのかも知れない。

買った本

『MISSING』 本多孝好

「このミス」2000年版第10位というのに釣られました。

『難事件鑑定人』 サリー・ライト

前から気になっていた本。 自分で「難事件」と言い切ってるんですよ。 しかもそれを鑑定しちゃうんですよ。 でもって知性派ミステリなんですよ。 ということで、アーロン・エルキンズあたりの路線を期待して買ってしまいました。

『燃える地の果てに』 逢坂剛

百舌シリーズとか、水中眼鏡の女のようなトリッキーな話が好きなんですが、これはスペイン物ですか。

見つけられなかった本

「きらきらひかる」の原作本。 昨日ぼーっとテレビ見てて、ちょっとミステリーっぽくて、だんだん魅き込まれてしまったもので。


11月24日()

21 days

新しいRubyの書籍『Sams Teach Yourself Ruby in 21 Days』が出版されるらしい ([ruby-talk:26205])。

これに続いて、ruby-talk では、21 Days シリーズの本に対する否定的な意見や、 Rubyを学ぶには21日で十分おつりが来るというような意見も出てます。

それにしても、否定的意見に対する Daveさんの返し([ruby-talk:26232])は、 いつものことながらナイス(否定的意見もユーモアのあるものですが)。 格好いいなあ。


11月23日(金)

RubyUnit

ドキュメントまわりを見直した。 Rubyの標準のドキュメントっぽい書式、構成にしてみた。 method index file を使わなくなりました。

CVS

今日、コマンドラインから使ったもの。

cvs remove -f

カレントディレクトリ以下のファイルをまるごと消してくれるので使うときは慎重に。

cvs commit -m "hogehoge"

ログの内容が長くなるときは、あらかじめlogfileを作っておいて、cvs commit -F logfile とした方が便利でしょう。

cvs update -d -P

updateするときは、-d -P つきだと、 サブディレクトリが新規にできたり、削除されたりした場合にも反映してくれる。

JUnitX 5.0

こんなものがあったのか。 JUnitと一緒に使い、 privateメソッドに外からアクセスできるようにして、 privateメソッドのテストなどをできるようにするものらしい。 あれっ? JXUnitってのもあったような無かったような。


11月22日(木)

『脱・「英語人間」』 (遠山顕) 読了

やっぱり l と r の区別は大事なんですねえ。 私は、聞くのも話すのも書くのもちゃんと区別できてません。

仕事

サーバーの設定変更とかでサーバーにアクセスできなくなるので、 みんな、さっさと帰ってしまった。 ということで、私も一緒に... いや、私は、サーバーにアクセスできなくても仕事はできるんですが。 でも、日曜日も仕事なので、無理しちゃいけないということで、さっさと帰ることにした。

w3m vs emacs-w3m

えーと、w3mじゃなくて emacs-w3m の方です。

w3m の方は、ずーっと


q での終了時に確認する                             (*)ON  ( )OFF

の状態でしたが、emacs-w3mは、その設定とは関係なく、qで終了してたように思います。

今調べたら、emacs-w3mは、qで即終了、Qで終了時に確認するようになってます。 うーむ。w3mとは逆だ。 前から、漠然と何か違うと思っていたのだけど、別段気にしてなかった私。 もっとも、キーバインドを変更すれば、emacs-w3mの挙動をw3mと同じにできるんでしょうけど。

豚肉で他人丼

テレビから「関西は豚肉で他人丼、関東は牛肉で他人丼」と聞こえてきたのだが、そうなんですか??? 豚肉の他人丼は食べたことがありません。 豚肉と卵なら、豚肉はトンカツにしてカツ丼が普通なんじゃないかと。


11月21日(水)

『氷菓』 (米澤穂信) 読了

フェアな謎解きなのかなあ。 どっちかというと、こじつけの感が強いような。 最後のオチは勉強不足でわかりませんでした。

Cygwin 1.3.5

1.1.8もそろそろ潮時か。

それにしても、最近、Windowsは自宅では起動すらしていないのが何とも...


11月20日(火)

『eXtreme Programming テスト技法』

1冊いただきました。 ありがとうございます。

emacs-w3m

すいません。 昨日の件は、cvs updateして入れ替えたらqで終了できるようになりました。

irbsh

ダウンロードだけしてほったらかしにしてたので、インストールしてみた。 Emacs上じゃなくて、コンソールから、irbと入力したら何故か


irbsh(main):001:0>

となった。うーむ。なんかへました? いや。まあ不都合があるかどうかはよくわかりません。

あっ。0.3.0がリリースされたようなので、そっちに入れかえてからもう一度出直します。

irbsh 3時間後

あっ。そうか。.irbrc に


load "irbsh-lib.rb"

て書いてあるんだからそりゃそうか。ぼけてました。 ...いっぱいツッコミが入りそうな気がする。

RubyUnit

ruby-talkで誉めてもらった。 素直に嬉しい。


11月19日(月)

寒い

寒いためか、どうも体調が悪い。 おとなしくさっさと寝よう。

昨日の夜、流星群を見て風邪ひいた訳ではありません。

emacs-w3m

ちょっと前まで qで終了できてた気がするんだけど、 Qでないと終了できなくなったですか?


11月18日()

w3m

いつの間にかsourceforgeに加わっていることを知った。 w3mもcvs updateすることにした。

cvs

普段は、pcl-cvsなのだが、ダイアルアップだと、rubyunitをcommitするとき、ちょっと時間が気になる。

そこで、あらかじめログファイルを作っておいてcommitする方法を調べて、


cvs commit -F /tmp/assert.log runit/assert.rb

とやってみたのだが、なぜかうまくできてなかったみたい。もうちょっと調べよう。

『匣庭の偶殺魔』 (北乃坂柾雪) 読了

やっぱり「匣」のつくミステリだけのことはありました。 変な話です。 でも、それ以上の何かが欲しい。物足りません。 次作を読むかどうかは微妙なところです。


11月17日()

Windows XP

「Windows XP って何?」と全くコンピュータのことを知らない人から聞かれたらどう説明すればいいのだろう?

さらに「何がいいの?」と聞かれて、 「マイクロソフトが儲かる(のでマイクロソフトはいい思いをする)。」 と答えた私はどうなんだろうか?

RubyUnit

assert_matchが成功したときは、Regexp.last_matchを返すようにした。 ということで、こんなことができるようになります。


match = assert_match('foobarbaz', /ba(.+)/)

assert_equal('rbaz', match[1])

さらに、assert_not_matchが失敗したときは、 どこにマッチしてしまったのかをエラーメッセージで表示するようにした。 例えば、


assert_not_match('foobarbaz', /ba.+/)

の場合、メッセージの内容が


</ba.+/> matches 'barbaz' of <foobarbaz>

となります。

『幽霊は行方不明』 (矢崎存美) 読了

「ぶたぶた」シリーズのような、とぼけた味を期待していたのがいけなかった。 普通の話に思えて、なんか物足りないです(笑)。 多分、このシリーズはもう読まないんじゃないかと思います。

ruby-talk

matome で5分割で1日300通。 何をネタにそんなに盛り上がったんだろうか?


11月16日(金)

『死の殻』(ニコラス・ブレイク) 読了

自称「すれっからしの読者」である私は、半分も読まないうちに真犯人の見当がついてしまいました。 最後まで気がつかなかったのは、2人目の被害者の殺人の動機。盲点でした。 ネガとポジとも言うべき真相の反転は鮮やか。 「英国の新本格派」らしい逸品。

完全予約制

完全予約制になったらしい。 果たして、次回から待ち時間は少なくて済むのか!? それともこれは空手形なのか!? 乞うご期待!

Linux Magazine

例によって、まつもとさんの連載を立ち読み。 簡単になるはずが、段々複雑になっていった青木さんのコードの解説は聞いてみたかった。

本日の書籍購入

本日買わなかった本

脱・「英語人間」

まだ途中。 「やりました!!」という文が出てくるのだが、 例のラジオから聴こえる遠山さんの「やりました!!」の声とダブってしまう。 ついでに「You did it !!」とかパチバチという拍手の音まで思い出してしまう。

日付

なんか1日ずれていることに気づいた。

今日はテレビ出演

テレビに遠山顕さんが出ていたけど、気づいたときには遅すぎて最後の10分くらいしか見れなかった。 『脱・「英語人間」』に書いてあることと同じことを話してた。


11月15日(木)

明日は休暇

会社で、「XPの発売にあわせて休暇?」と聞かれたが決してそんなことはありません。 繰り返しますが、絶対にXPの発売とは無関係です。 今のところ買う気が無いし。

ところで、XPってVMwareの中にインストールできるのだろうか?

12個の問題

12枚のコインの問題は 中学のとき数学の先生から出題された。 コインじゃなくてボールだったし、600円を賭けることはなかったけど。 答えはもう忘れた。 やり方は半分くらい覚えているので1時間あればなんとかなると思う(←あんたはいいカモになってるんでは?)。

では、応用問題です。 天秤を3回だけ使って1枚だけ重さの違うコインを見つけ出せるのは、最大何枚までか?

12個の問題 その後

実際にやってみた。600円はイタダキ。 ちなみに「12個の問題」と書いているのは、私が中学の頃から、ずーっとそう呼んできたからです。

ruby-talk

何とか、昨日までの分を消化。 (白状します。大半は捨ててます。)

その中で、気になった話題2つ。

Ruby-in-Ruby, AST, Rockit について調べること。> 自分 (前にruby-talkで話題になっていたと思うけど、ほとんど読まずに捨てていた。)


11月14日(水)

ruby-talk

昨日1日分のメールを読んだつもりだったのに、全く読んでなかった。 今日1日分と合わせて、250通近く未読。

RubyUnit

RubyUnitには、それまでに定義されているすべてのテストケースからTestSuiteを生成する RUNIT::TestCase.all_suiteなるメソッドがあるのだが、 このメソッドは、どっちかというと RUNIT::TestSuite.all_suiteの方が使う側からすると自然ではないかと思った。

そうです。今日、生まれて初めてこのメソッドを実際に使ってみてそう感じたのでした。 正直、一瞬、RUNIT::TestSuite.all_suiteだったかと迷いました。 まあ、私は作者なので、すぐにRUNIT::TestCase.all_suiteだと気付いたんですが、 単に使う側からすると、かなり違和感あるんじゃないかと思いました。


11月13日(火)

トップページ

ここは更新したんだけど、トップページを更新するのを忘れてた。

最後

珍しく、会社の部屋を出たのは最後だった。

負荷係数

解釈が間違っていたとしても、 その解釈で仕事に有効活用できるんだったらそれでいいと考え直す。 どうせ正解なんて無いんだし。

Windows XP

マイクロソフトから11月16日いよいよ日本語版発売というメールが届いた。 なお、私が11月16日に休暇を取るのは、まったくの偶然です。


11月12日(月)

死の殻

読み始めました。 なんか字が細かいし、難しい漢字が多いので(←あんたは小学生か)、思うように読み進めません。 きっと『クール・キャンデー』とのギャップの激しさについていってないだけだと思う。

負荷係数 8.0

XPでいうところの、今日1日の私の負荷係数は、8.0ぐらいです。

XPでいうところの負荷係数とは

何も邪魔の入らない場合に、その開発が4日で完了するとします。 ですが、実際には、色々割込みがあって、4日で完了することはありません。 そこで、邪魔が入る分を考慮して、2.5倍します。 つまり、実際には、4日×2.5 = 10日で完了ということになります。 この、2.5という数値のことを負荷係数と呼んでます。 でもって、実際に何日かかったか、実際の開発時間がどれくらいだったかを測定します。 次の開発作業の見積もりと負荷係数を決める際に、この測定結果を活用して、その精度をあげていく訳です。

...という解釈であってるかな?

松茸ご飯

昼の献立は松茸ご飯だったらしいが、出遅れたので売り切れになった後だった。


11月11日()

ShellUnit

ShellUnitは、 本家にあった。 灯台下暗し。

RubyUnit

assert の挙動を変更した 0.4.5 をリリース。 assert を使っているテストの一部は動かなくなるかも知れません。 (assert の第1引数は、FalseClass か TrueClass のインスタンスでなくてはいけません。)

『クール・キャンデー』(若竹七海) 読了

気のせいじゃなかった。 やっぱり最後の1文を読んではいけなかった。 後味は悪いが切れ味は鋭い。


11月10日()

書籍購入

(最後の1冊は違いますが) ハードカバーや新書版には目もくれず、文庫本にばかり手を出しております。

最後の1冊は、普通なら手を出さない類の本なのですが、 著者が遠山顕さんだったので、思わず手を出してしまいました。 これを読んでおくと、今後の「英会話入門(ラジオ)」が より楽しくなるかも知れないと変な期待をしています。

焼肉

鶴橋にて友人と3人で。 ガラガラかと思いましたが、そうでも無かったです。 でも、普通は行列ができるような店らしいので、そういう意味では空いていたとも言えるかも。

『月曜日の水玉模様』(加納朋子) 読了

帰りの電車の中で読了。 最後のソフトボールのメンバーは、ちょっと都合が良すぎて、強引過ぎる気がします。 無理に絡める必然性が無いし。 いや。まあ、確かに私はそういうのを期待しておりましたが。

「水曜日の探偵志願」が好み。

『死の殻』

解説だけ読了。 なんか解説から読んではいけなかったような気がする。 でもそれは、きっと、気のせいだろうな。 気のせいに違いない。 頼むから気のせいだと言ってくれ。

『野獣死すべし』は、傑作だったはずだけど、例によって、どんな話だったか思い出せない。 もちろん、犯人も思い出せない。

『クール・キャンデー』

解説があるかなあと思って最後の方のページをめくったら、小説の最後の一文が目に入ってしまった。 これは絶対、目に入ってはいけなかったはずの文だ。 間違いない。 でも、ひょっとすると、これも、気のせいかも知れない。 多分、気のせいなんじゃないかな。 気のせいに違いない。 ...とはどうしても思えない。 無理がありすぎる。 あーあ。やってしまった。

結局、解説は無かった。


11月9日(金)

テスト

テストしづらいプログラムだったので、相談の上 (というか一方的に「私が自分で直すから」と半ば強引に話を進めて) テストしやすいプログラムに修正。

でもってテストコードを書く。 面倒だったので、RubyUnitを使って、Rubyでテストコードを書いた。 テストの対象のプログラムはC++で書かれたプログラムで


system("c_plus_plus_program")

とRubyから実行して、C++プログラムが生成するファイルや修正するファイルがちゃんとできているか assertメソッド群でチェック。 ユニットテストというよりもアクセプタンステストに近い使い方。

なんか、XPしているような気分。いや、まあ、気分だけですが。

charset

何故か、charset=ISO_2022_JP としてましたよ。ダメダメ。


11月8日(木)

脱力

そうなのかあ。と思うことがあって脱力。

メール

溜まっているんだけど、処理しきれん。

PowerPoint

月次レポートにPowerPoint。 うーん。どういう使い方(どういうレポート)なんだろう?

そういえば、つい最近、「Excelはワープロ」という話も聞いた。 と書きながら、自分も「Excelはワープロ」的な使い方をしたことがあるのを思い出した。

で、今日は、RWikiがワープロ。


11月7日(水)

XP セミナー

本日は出張でXPセミナーに参加。 友人と待ち合わせてセミナー会場へ。

結局、うささんは、わからなかった。やっぱり引き分けってことで。 ちなみに、私は、真中の列の招待者席のすぐ後ろの一番左端に座っておりました。

入口のところでXP関連書籍が売られてました。

新刊の『eXtreme Programmingテスト技法』もありました。 WebUnitのたかはしさんも著者の一人です。 もちろん、WebUnitが紹介されてますし、RubyUnitも紹介していただいております。 執筆当時とは、標準配布化などRubyUnitの状況が大幅に代わろうとしているので、 ちょっと申し訳ないです。

セミナーの感想:


11月6日(火)

RubyUnit

ひっかかる人は私ぐらいなのかな。


assert_equal(a, b) 

と書くつもりが思わず


assert(a, b)

と書いてしまって、テストになってないことに気付かないという罠に。 ([ruby-list:32205]参照。)

今日もこの罠にひっかかりかけたんですけど。私。 assertは、ほとんど使わない癖に、 なぜassert(a, b)とやってしまうのだろう???

ここで、厄介で恐ろしいのは、assert_equal(a, b) とやるつもりで assert(a, b) と書いてしまうと、 テスト一発合格しちゃうことです。

例えば、


assert_equal(2, Math.sqrt(4))

とやるつもりで


assert(2, Math.sqrt(4))

とやってもテストにパスする訳です。さらに


assert(2, Math.sqrt(5))

だろうが、


assert(2, Math.sqrt(25))

だろうが、このテストは成功なのです。

今気付いたんですけど、上の例をパッと見たときに 一瞬 Math.sqrt(25)の値と、2を比較していると、私は錯覚してしまうみたいです。 行の先頭のassertに注意が行かないのです。 それで、このバグには、後からテストのコードを見直してもなかなか気付かないんですね。きっと。

ちなみに、もっと極端に


assert(2, [])

でも、


assert(2, /hoge/)

でも


assert(2, Class)

でもテストは合格です。まあ、さすがにここまで、あからさまだと変だと気付くでしょう。

と、だらだらと書きましたが、 実は、RubyUnitの最新版では、上のassertのテストだと失敗するものが出てくるはずです。 もっとも偶然、結果的にそうなっているだけで、意図した動作では無いのでした。 この偶然の産物のおかげで、rubicomのバグを発見できたのでした。


11月5日(月)

RubyUnit

rubiconのバグの責任の半分は、RubyUnitにもある(と思う)のだが、 良い回避策を思いつかない。 この問題は、前から気付いていた。だって私がひっかかったから。 でも、私ぐらいしかひっかからないと思って、ほったらかしにしていた。 だけど、Daveが、rubiconで同じミスをしていたので、ちょっと真剣に回避策を考えてみた。 結論としては回避不可能な気がするし、使い方を間違える方が悪いと開き直りたいのだが、 その前に、ruby-listに投げかけてみることにした。

他にもひっかかったような仲間はいるだろうか?


11月4日()

Ruby 開発版

いつの間にか 1.7.2 になっている。

RubyUnit

さらにAssertのリファクタリングを進めて内部構造をLapidaryに近づけてみた。

rubicon

リファクタリングしたRubyUnitで試しに、rubiconを動かしてみたら 偶然、rubiconのバグを発見した。Daveにパッチを送付。 ちなみに私も同じバグを埋め込んだことがあります。

責任の半分は、RubyUnitにもあるよなあ。


11月3日()

RubyUnit

リファクタリング。 「ただ一度だけルール」って意地でも守らなあかんもんなんか?とちょっと悩む。 XPだったら悩まず、意地でも守れってことになるんかな。

結局、「ただ一度だけルール」を尊重するようにリファクタリング。


11月2日(金)

Testing Framework 比較検討 第1回

Lapidaryのコードをつらつらと眺めています。 RubyUnitと比較してちょっと思うところがあるので、 整理して公開していこうかと思います。 確かに内部構造は違うみたいだ。

公開しようかと思った(実際に細かく途中まで書いた)んですが、やっぱりやめます。 なんか気分がのらない。

結論だけ書きます。 (今回比較したのは、assert_xxx(assertXXX) の実装です。)

結論:

assert_xxx(assertXXX)の実装だけ比べてみるだけでもなかなか面白い。

第2回があるかどうかは、わかりません。 さて、リファクタリングに取りかかろう。


11月1日(木)

emacs-w3m

なんか最近の奴だと、emacs-w3mを起動したときに一瞬何か文字が表示されているように見えるのだが、 何が表示されているのかわからなくて、もどかしい。

出会いは京都です

まあ、お互い覚えてない ということで引きわけでしょう。 私もそのとき名乗らなかったと思うし。

まつもとさんと私がいるところに、つかつかと来られて

「私がMswin(Windows)版のメインメンテナーやります。」

と高らかに宣言された人がいました。後から知ったのですが、それがうささんだったのでした。 今思えば、私は、幸運にもMswin版メインメンテナー誕生の歴史的瞬間に居合わせたのでした。

だから、私は、うささんに会っているはずだと言えます。 でも、それ以上の記憶が無いのでした。


[トップページへ] [10月] [12月] [過去の雑感へ]