Fessに検索結果のプレビュー機能(スクリーンショットとかサムネイルとかとも言える)が実装されました。プレビューに必要な画像の生成は、たとえば、あるURLのサイトのプレビュー画像を生成する方法は何かしらのコマンドに任せるようにしています。別にHTML以外でもプレビュー画像を生成する方法(コマンドとか)があれば、ScreenShotGeneratorのインターフェースを実装すれば良いかと。デフォルトではCommandGeneratorを実装してあるので、diconでそれにコマンドを指定すれば良い。標準ではこの機能を無効にしているけど、fess.diconの
<component name="screenShotManager" class="jp.sf.fess.screenshot.ScreenShotManager">
<initMethod name="add">
<arg>htmlScreenShotGenerator</arg>
</initMethod>
</component>
<component name="htmlScreenShotGenerator" class="jp.sf.fess.screenshot.impl.CommandGenerator">
<property name="commandList">
{"bash",
"/opt/fess/bin/html-screenshot.sh",
"${url}",
"${outputFile}"}
</property>
<initMethod name="addCondition">
<arg>"mimetype"</arg>
<arg>"text/html"</arg>
</initMethod>
</component>
のコメントアウトを外すと使えるようになる。bin/html-screenshot.shにサンプル的にURLと出力ファイルパスを渡すと、画像を生成してくれるスクリプトを用意した。そのスクリプトの中では、wkhtmltoimage-amd64というコマンドとImageMagikのconvertを使うように記述してある。環境に応じて別途取得してください。設定が完了すれば、クロール時にwebapps/fess/WEB-INF/screenshots以下に画像が配置される。ロール検索の都合上、直接参照させることができないので、検索結果に表示されたものだけしか画像を返却をしないようにしてある。あとは、検索したときに検索結果のリンクにマウスオーバーすると右側にプレビュー画像が表示されるようになる(表示方法はリリースまでに変えるかもしれないけど…)。
という感じで、検索結果にプレビュー表示させたい時にはご利用ください。
Ubuntu 12.04でログイン画面にユーザーが表示されない
lightdmが更新されたせいか、ログイン画面にユーザーが表示されず、ログインができなくなってしまった…。環境的にはLDAPでリモートのサーバーに認証を任せていたデスクトップ環境なのだけど、突然、そんな状況になり、なんだろうと思ったけど、/etc/lightdm/users.confの
minimum-uid=500
の値を変更して対応した。NISの時代からユーザー情報を移行し続けてきたのもあって、うちの環境はuidが500以下を使っているのだよね(10年以上使っているuidを変更するのも面倒だし…)。というわけで、その値を変更したら、ログイン画面にユーザー名が表示することができました。うーん、だいぶねばってきたけど、500以上を使えということかな…。
HttpEntityは必ずconsumeすべし
HttpClient 4 系でいろいろとクロールすると途中でコネクションプールのコネクションが枯渇して、フリーズ状態になる問題に遭遇した。いまいち、原因を特定するのに無駄に時間を使ってしまったのだけど、結果的にはHttpEntityは必ずconsume(つまりclose)する必要があることだ。このHttpEntityはHttpClientのexecuteをした時に返ってくるHttpResponseから取得して利用するものだけど、レスポンスのステータスだけ見たければ、HttpResponseから値を取得してHttpEntityを使う必要がない。なので、利用したコネクションが解放されず、フリーズに陥る。というわけで、HttpEntityはレスポンスのボディが必要なくても取得してconsumeして終わるのが良いらしい…。