トップ «前の日(01-23) 最新 次の日(01-25)» 追記   RSS 1.0 FEED  

Journal InTime


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四半期に出るなら我慢するけどなあ。


2004-01-24 (Sat)

_ 断水

奥さんの実家ではお湯が出なくなって、お母さんが泊まりに来た。 あちこちで断水してたりするらしい。

Tags: その他

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

この変更らしいので、レシピブックの記述はそれよりも前に書かれたのかな?

Tags: Ruby