Hyper Estraier

あるとわかっているのに辿りつけないもどかしさというか、

google 検索結果返す 故にエントリ有り

というようなgoogle認識論的なアプローチに依存しすぎるということはちょっとツライことに気付いた。

ちゅうのは、自サイトの検索をgoogleに任せてからそこそこ経つんだけど、googleは被リンク数が少ないと(クローラーはガッツリ持ってくくせに)検索結果の表示対象にならない。そのため、自分で書いたエントリがあるはずなのに探せないという状況が頻発した。

なんで、やっぱ自前で検索エンジン入れる必要があるなぁと、Hyper Estraierを利用して検索できるようにした。

僕のサイトはblosxomで構築されている。これは、データベースでなく普通のテキストファイルでエントリを管理しているので、Hyper Estraierのestcmdでデータディレクトリを検索対象にすればよい。ただし、これだと、タイトル属性がないために、検索結果のタイトルがファイル名になってしまう。

blosxomのエントリデータは先頭行がタイトルのテキストデータなので、ここら辺をちょっといじくるblosxom用のフィルタを作成した。

まずは、フィルタを作成。/usr/local/share/hyperestraier/filterのestfxpdftohtmlをコピーしてフィルタを作成。下はdiffってみたけど、要するにpdftotextのコマンドをblosxom用のコンバートコマンドに書き換えれば良いだけ。僕の使っているestfxblosxomtohtml

--- estfxpdftohtml      2006-12-02 16:09:34.000000000 +0900
+++ estfxblosxomtohtml  2006-12-02 17:47:04.000000000 +0900
@@ -1,14 +1,14 @@
 #! /bin/sh
 #================================================================
-# extfxpdftohtml
+# extfxblosxomtohtml
 # Convert PDF into HTML
 #================================================================

 # set variables
 PATH="$PATH:/usr/local/bin:$HOME/bin:." ; export PATH
-progname="estfxpdftohtml"
+progname="estfxblosxomtohtml"

 # check arguments
@@ -56,7 +56,7 @@

 # output the result
-pdftotext -enc UTF-8 -htmlmeta "$infile" - 2> "/dev/null" | output
+bldata2html "$infile" - 2> "/dev/null" | output

 # exit normally

で、blosxomのデータをhtmlに吐くには先頭行だけtitle属性で囲んで、あとはそのまま出力すればいいんだけど、僕はmarkdown使っているので、フィルタリングしてhtmlに出力するようなスクリプトにした。これがpdftotxtにあたるbldata2htmlで/usr/local/binとかのパスの通ったところに保存する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl

use strict;
use warnings;
use FileHandle;
use Text::Markdown 'markdown';

my $filename = shift;
my ($title,$body) = ();

my $fh = new FileHandle($filename);

$title = <$fh>;
chomp($title);

{
local $/ = undef;
$body = <$fh>;
}
my $html = markdown($body);

print "<title>", $title , "</title>\n", $html;

あとは、実際にインデックスをつくる。txt属性はestfxblosxomtohtmlフィルタをかますようにオプションを指定しておく。最後のextkeysは検索速度向上のため。

PATH=$PATH:/usr/local/share/hyperestraier/filter ; export PATH
estcmd gather -il ja -fx ".txt" "H@estfxblosxomtohtml" -sd casket /var/blosxom/data/
estcmd extkeys casket

で、実際にestseekで検索するといい感じ。後は定期的にインデックスの更新するようにしとけば、自サイトの検索はOK。今のとこ、cronでインデックスの更新するようにしていないので、blosomの検索フォームはgoogleのままだけど、そのうち変更しよう。

あとは、blosxomのエントリに類似エントリ検索をした結果を表示するプラグインを作っておけば便利かな。

markdownでコードを貼り付けるのは

markdownは行の先頭にスペース4文字を入れればcodeブロックになるので、

perl -ne 'print "    " . $_' file

とやった出力をblosxomのエントリにペーストしてるんだが、もうちょい楽な方法はないもんだろうか?
とか思った。

TTで空白行を除く

TT使ってできたHTMLのソースを見ると、IF文の部分とかが空白行になってしまい、やたらとスカスカ全開のHTMLが気持ち悪かったりして、コードの見やすさを犠牲にして、改行を削ってJAPHみたいなあとから読んだらよくわからんようなTT作ったりたんだけど、、、

-をつければchompして空白行を消すことができるということをCatalyst::Manual::Tutorial::CatalystBasicsで知った。

[% FOREACH book IN books -%]
  <tr>
    <td>[% book.title %]</td>
    <td>[% book.rating %]</td>
    <td>
    etc,etc
    </td>
  </tr>
[% END -%]
</table>

とかやっておくと

      </tr>

    </table>

といった、いかにもな感じの空白行が

      </tr>
    </table>

まるで手術痕の残らないヨみたいな自然なソースになるわけだ。素敵!

ま、ちょっと探したらTemplate Toolkit Manualにも書いてあったので、単にマニュアル読んでないのがばればれなだけなんだけど、、、、

Template Toolkit Manualもちゃんと読んでおくべきか。

で、微妙に本も欲しくなったりするなぁ。

ProductName Perl Template Toolkit
Darren Chamberlain
Oreilly & Associates Inc / 3031円 ( 2004-03 )


とはいうものの、TTに深入りするくらいなら、HTML::Masonみたいなほうが僕にはむしろあっているのかナァと悩んだが、テンプレートはテンプレートの利便さを追求する結果、うっかり高機能化した(しすぎた)だけなんだヨって考えるほうが、MVC的には自然なのかなあと今は考えている(というか自分を納得させている)。

TTSiteがうごかねーと悩んでいたら

久々にtelnetしたマシンでcatalystをいじってたら、TTSiteがうまく動かず、おかしいなぁ~と思ってたら

Catalystのバージョンが5.6902だった

このバージョンでTask::Catalyst 1.90を入れたので、エラーメッセージを吐かずに真っ白画面を出力していた模様。

Catalyst 5.7006にバージョンあげたらちゃんと動いた。

で、TTSiteだけど、普通に使うTTのヘルパーモードだと

app_create.pl view TT TT

で、TT.pmを作ってくれるだけなのに対してTTSiteは、

app_view TT TTSite

とやってヘルパーさんを動かすと、ヘッダー、フッターとかのテンプレートの雛型も一緒に作ってくれるという、お手軽度50%増量みたいな感じらしい。さらに、コントローラのディレクトリ構成とテンプレートのディレクトリの構成が対応するっぽいのでテンプレートが増えたときに把握しやすいのかも。

っていうか、これから使おうとしているのでまだちゃんとわかってないけど。

あとは、TTSiteだと拡張子がtt2になるので、Meadowのttモードも動くように.emacsに設定を追加しておく。

(setq auto-mode-alist
     (cons
       '("\\.tt2$" . html-helper-mode) auto-mode-alist))

Catalyst::Manual::Tutorialが充実してた

あれ、ちょっと見ない間に、チュートリアルが充実してた。

Catalyst::Manual::Tutorial

色々新しいことが書いてた。

  • DefaultEndはやめてCatalyst::Action::RenderView使うべし
  • TTSiteの使い方
  • CRUDをDBICで
  • AuthenticationとAuthorizationのやり方
  • デバッグとテスト
  • HTML::Widgetの使い方
  • flash featureの説明というか使いどころ

あたりは読んだけど、実際に何か作ってみないとちゃんと理解してるのかわからん。というわけで、DBICで多対多のdb使ってpubmed用のsbsを作り直してみることにした。Wikiに少しずつ書いてく予定。

The Black Paradeの最初のほうが好き

数寄屋橋のHMVで視聴してたら、妙に心にぐっと来たので衝動買いしてしまった。

ProductName ザ・ブラック・パレード(初回限定盤)
マイ・ケミカル・ロマンス
ワーナーミュージック・ジャパン / ?円 ( 2006-12-06 )


帰ってきてからbounce.comのインタビューなどみて妙に納得。

My Chemical Romance - bounce.com インタビュー

アイアン・メイデンやハロウィンなんかのヘヴィメタル・バンドが大好きだったんだ。その後パンク、そしてブリット・ポップにハマったのさ。その3つのまったく違う要素が、俺たちのサウンドのベースにあるんだ

The Sharpest Livesなどがベタっぽいけどかなりお気に入り。Welcome To The Black ParadeはQueenみたいで壮大だっていうレビューが多かったけどQueenな世代ではないからなぁ。

  • The Sharpest Lives
  • Famous Last Words

こっちだと視聴できるみたいですな

ProductName The Black Parade
My Chemical Romance
Wea / 909円 ( 2006-10-24 )


コンセプチュアルっぷり対決だったらIII Sides to Every Storyのほうが、、、

ProductName III Sides to Every Story (Jewel Box)
Extreme
Universal I.S. / 1763円 ( 1995-09-19 )


今年はアライで滑れないのね

こんな雲海も見ることができないのね。

ARAI MOUNTAIN & SPA

結構行っただけにちょっと寂しいかも。

tarのエラーメッセージが

エラーメッセージの日本語が。

Fedoracore 5

$ tar cvf fake.tar
tar: 空の書庫作成はご容赦願います
Try `tar --help' or `tar --usage' for more information.

ちなみにFC1はこんなエラーだった。

Fedoracore 1

$ tar cvf xxx
tar: どうしても空の書庫を作ろうとしません
もっと詳しい情報は `tar --help' と入力すれば得られます.

山崎精肉店の馬刺し

職場から結構近いにも関わらず未だ寄ったことのない山崎精肉店へ初馬刺しを買いに。

馬刺し

前に五反田で呑んでた時に、醤油の話でプチ盛り上がって、後日一本頂いたのだが、どうも魚の刺身には合わず放ってあったのを出してきて、御殿場甘露醤油と食べ比べ。

馬刺しは甘い醤油のほうが馬がよくあじわえて旨かった。(九州の)甘い醤油も侮れないな。兵六(芋焼酎)と一緒に。

山崎精肉店

chemicho2png

chemichoの出力をpngにしたのでPioglitazone で試してみた。

設定はこんな感じで。

Generation: 10
Cycle: 1
Prefix: Piogli

Plugins:
  - module: AddCarbon
    weight: 1
  - module: Aromatize
    weight: 0.8
  - module: Bulky
    weight: 1
  - module: DeAromatize
    weight: 0.2
  - module: DecreaseBondOrder
    weight: 1
  - module: GenerateRing
    weight: 0.5
  - module: Halogenize
    weight: 1
  - module: Hydroxylation
    weight: 2
  - module: HeteroCyclization
    weight: 2
  - module: IncreaseBondOrder
    weight: 2
  - module: IntroduceAcid
    weight: 1

6番目の出力から10番目の出力はこんな感じ。

piogli5 piogli6

piogli7 piogli8

piogli9 piogli10

あんまバルキーな変異はよくないな。もうちょいヘテロを導入したりとか、ヘテロ原子増やさずに自由度を減らすような変異をいれたほうがいいかも。芳香環を壊しちゃうのも気になるナァ。