差分クロール

Fess 3.0 のやりたいことリストで書き忘れてたけど、差分クロールを実装してみた。今までは Last Modifed を気にせず、GET しにいっていたけど、前回クロールで取得していたら、HEAD で Last Modified を取得・比較して、更新されていたら GET しにいって、インデックスを更新する。差分クロールをするかどうかは管理画面から変更可能な感じ。差分クロールすると外部へのコンテンツ取得の負荷は下がるけど、前回データが Solr の中にあるので(つまりSolrに聞きにいくことになる)、Solrへの負荷が上がる感じ。というわけで、それを踏まえて利用するかどうかを決めるのが良いかと。

次は、外部から接続可能なAPIを作ることかな…。

実装クラスはpublicでない方が良いのか…

Twitter4Jでpublicなインターフェースがあって、その実装クラスがpublicでない感じなのだが、まぁ、これはこれで実装クラスを隠蔽して触らせない感じでライブラリを作る側からすると変更しやすいのでよくあるパターンの一つかと思う。でも、リフレクションをしたりするには実装クラスがpublicでないから、publicなインターフェースを使わないとアクセスできない。Seasar2 の Beans とかは実装クラスを使うので取れない感じに陥る。昔は綺麗な感じの設計が好きだったので前者の方だったのだけど、今は開発現場で便利に使える方が重要なので実装クラスはpublicでもいいんじゃない派になっている(publicフィールドにも結構抵抗があったけど、今じゃあれはあれで現場で便利だから拒否反応はなくなった)。S2のBeansで引数増やすとか、ゴニョゴニョと頑張るとかもあるかもしれないけど、そこでがんばるのも微妙な気がして…(Beansの中で実装クラスがpublicじゃなかったらインターフェースを取りにいってアクセスするとか?)。うーん、美しい設計(いまいち何と表現するのが良いか分からんけど)がいいのか、現場で便利なのがいいのか、どちらも間違ってはいないと思うしな。そんな私を悩ます問題は、ディスカッションの「TFJ-298 リフレクションで値が取れない」という話。いろんな考えがある気がしますが、他の方のご意見も興味ありますので時間がありましたらよろしくお願いします~。