Random

java.util.RandomでRandom()としたときのシードって、固定かと思っていたら違うのね。Java 1.4 まではSystem.currentTimeMillis() をしていたけど、Java 5 以降では seedUniquifier の値とSystem.nanoTime()の和でよりかぶらない値にしたのね。確認した感じだと、1.1 あたりから現在時間をシードにしてたみたいだな(1.0.2 とかのJavaDocが見つからないからそれは不明)。てっきり固定かと思ってた…。

マルチスレッドの調整

S2Robotクラスの中にS2RobotThreadのインナークラスがあって、それがスレッドという感じで動いていたのだけど、こういう構成だとトランザクション周りがどうもおかしいので、そこら辺を見直して、インナークラスをやめることにしてみた。簡単に直せるだろうと思ったら、結構キツカッタ…。マルチスレッドの共有キューみたいなのは結構ややこしいな(こっちを止めたら、あっちを動かしてみたいな…)。そんな感じで、そこいらを自分で作らず、何かのライブラリを使った方が楽だったかも。

Nutch

てっきり、Nutch は活動が止まったのかと思っていたのだけど、3月にリリースされていたのね。Nutch がなくなったと思ったから、自分で Fess を作り始めたのだけどな…。まぁ、Fess はカスタマイズ性の高さという意味で、ちょっと目指すところが異なるから、Fess自体は進めるのだけど。それは置いておいて、Nutch のクロール部分をどうしているのか気になったから、ちょっと見てみたら、import しているパッケージに Hadoop の MapReduce があるっぽいな。S2Robot では自前でスレッド管理してやっているから、それらを MapReduce で処理するコードはちょっと気になるところ。ちょっと重い話だから、時間があるときに見てみよ。