2001-01-24 (Wed)
_ 無線LAN
無線LANカードなるものを入手。 何の設定もしなくてもLinuxで使えてちょっとうれしい。
_ Windows
テスト用にWindowsマシンを借りたのだが、ネットワークの設定が よくわからなかったりしてはまった。
ソフトウェアのインストール時に「システムの最適化をしています」 なんてメッセージが出たりするのもかなり謎だ。何やってんだろ。
2002-01-24 (Thu)
_ 前田 修吾
ruby-listのまつもとさんのメールを読んで、 googleで「前田 修吾」を検索してみたところ、 知らない間にトライアスロンとかに出ててびっくり。
と、こんなことをやっている場合じゃないんだった。 やっぱり家の方が仕事がはかどるな。
2003-01-24 (Fri)
_ PCG-V505/PB
ほしいなあ。 重さは我慢できるけど、発熱は大丈夫なんだろうか。
いいかげんにSVGAではせま過ぎるので、そろそろノートPCを買い替えたいけど、 TM8000も気になる。 ほんとに第3四半期に出るなら我慢するけどなあ。
2005-01-24 (Mon)
_ 087 複数の配列を並行処理する
今日はRuby講習会の講師。講習中にレシピブックの説明をしていて、
配列が非常に大きく、zipメソッドで配列を作る余地がない時は、Array#each_indexで繰り返します。
[Rubyレシピブック 268の技 p.150より引用]
という記述にはじめて気付いた。
よく読むと、レシピブックではArray#zipの戻り値に対してeachの 呼び出しを行っていて、
as.zip(bs) do |a, b| ... end
のようにArray#zip自体にブロックを与える方法は 説明されていない。 もしかして、1.8.0とかの古いバージョンではブロックを渡せなかった のかなと思って、1.8.0のソースを見てみたが、
if (rb_block_given_p()) { for (i=0; i<RARRAY(ary)->len; i++) { VALUE tmp = rb_ary_new2(argc+1); rb_ary_push(tmp, rb_ary_entry(ary, i)); for (j=0; j<argc; j++) { rb_ary_push(tmp, rb_ary_entry(argv[j], i)); } rb_yield(tmp); } return Qnil; }
のようになっていて、問題なさそうに見える。 cvs logで調べると、
revision 1.98 date: 2002/11/19 08:07:48; author: matz; state: Exp; lines: +44 -3 * array.c (rb_ary_zip): iterates over items in the receiver. zipped with nil if argument arrays are shorter. if arrays are longer, left items are ignored. now works with blocks
この変更らしいので、レシピブックの記述はそれよりも前に書かれたのかな?