今日のRyo

起床

9時半ぐらい。遅い!!

午前

昨日途中まで読んだP2Pの本の続きを読破した。
せっかくなので感想を書いてみる。
最初はP2Pのイントロダクション的な内容しか書いてねぇのかよ。って思ったけど、後半のシステムの解説のところは、深すぎず、浅すぎず(もう少し深いのが理想だけど)で、これから自分で組むのにはよいヒントになった。gnutellaping,pong,push,queryなど知りたかったところがわかりやすく解説してあったし。あと、FreeNetってあまり詳しくなかったのだが、初めてどんな物か知った。ちょっと変わったソフトだなこれは。
格子型Gnutellaネットワークというのがおもしろそうだ(Ikejiさんに聞いたのも元ネタはこれだったのかな?)。
この本にもっと望む事があれば、Winnyの解説とかしてほしかった。winnygnutellaと違って、ダウンロードを複数のサーバントを介して行うので、ファイルが分散する(分散ハッシュとかいう技術がキー・・・・のはず)。そこらへんが、とてもおもしろいのだけど、そういった情報はなかった。2001年の本だししょうがないか。
TOFU−Gが一通り完成したらJXTAに手を出すべ。

午後

コンビニでパンを買ってから、午後の作業へ
ひたすらデバッギング。だが、原因がなかなかつかめない。いろいろカチャカチャやってるうちに夕方。この調子だと一日誰とも話さないな。

夕方

食堂でポークカレーを食す。ひさしぶりにまともな食事。その後は宿舎風呂へ。友達に会ってしばし会話する。よし、これで少なくとも1人とは話したな。

ふたたびデバッギング。やっとバグの原因を見つける。同期関係ではないのだが、複数のスレッドで共有するリソースの部分で競合してしまっていた(ちゃんと同期をとっておけって話か)。Javaは関数にすべて参照渡し(正確には値渡しなのだが、実質的には参照渡し)なので、関数内部で参照をいじるとバグの原因になりやすい。VBではby val・by refとかいうキーワードで値渡しか参照渡しかが選べるのだが、Javaもそういうようにならないかな。オブジェクトのコピーにはわざわざCloneを実装しないとだから面倒なんだよね。
今回のデバッギングでassertの使い方を覚える。今まで面倒で手を出さなかったのだが、やはり便利。すばらしい!!

就寝

12時過ぎくらい。