10062006 京都
九条大宮をずんずんと下りていくとある。
カレーうどん
まぁまぁ。昔の記憶との対比になっちゃうのであれだけど、味味香のほうが好みかな。
味味香って昔は、三条木屋町ちょっとさがったとこのトンコツ臭いラーメン屋の近くのスンゲー小さいとこだったよな。
移転してサイトも出来てますな。
10062006 京都
九条大宮をずんずんと下りていくとある。
カレーうどん
まぁまぁ。昔の記憶との対比になっちゃうのであれだけど、味味香のほうが好みかな。
味味香って昔は、三条木屋町ちょっとさがったとこのトンコツ臭いラーメン屋の近くのスンゲー小さいとこだったよな。
移転してサイトも出来てますな。
09062006 京都
堀川四条をちとあがったところにある、味蔵へ。カレーラーメンがうまいという事前情報を得ていたが敢えて味蔵ラーメンを注文。

海苔、鰹節とそのしたにおぼろ昆布が。トンコツこってりスープなのに意外にあう。
ただちょっと塩味が濃い。
まったり食ったら、長い時間かけてホテルまで歩いて帰った。京都の道は歩道が整備されてるし、碁盤の目のようになっていてわかりやすいうえに、どの筋入っても発見があるし。夜風に吹かれてテケテケ歩くのは楽しい。
09062006 perl
SWIGついでにXSも。YAPCでDaisuke MakiさんのGetting Your Feet Wet With XSを聴いてから、一度やりたいと思ってたんだけど、最後のほうわかんなかったんだよね、SVとかからあやしくなってベンチマークでまたついていけるようになったという(実は)。
というわけで、相変わらず、実用Perlプログラミング初版を片手に。20章はperlの内部構造で、60ページぐらい割いてます。XSの説明とか書いてあるけど、まだちゃんと読んでないけど、HVとかAVとかSVとか詳しく書いてある(第二版にはないヨ)。
というわけで、mandel.cとmandel.hはSWIGで使ったソースを。
$ h2xs -x -n FractalXS mandel.h
Defaulting to backwards compatibility with perl 5.8.3
If you intend this module to be compatible with earlier perl versions, please
specify a minimum perl version with the -b option.
C::Scan required if you use -x option.
To install C::Scan, execute
perl -MCPAN -e "install C::Scan"
C::Scanをインストールして再度。
作成されたMakefile.PLを少し修正、LIBSに-lgdを付加するのと、OBJECTにmandel.oとFractal.oを。
あとはmake,make test,make installで。
clmemoみたいなchangelog形式のファイルをplaggerでフィルタリングしながらしかるべきとこ(はてブ,gmail,デリシャスとか)に送れたら便利じゃんと思ったので、シコシコと書いてみた。最初ココいじればいいかなと思ったんだけど、配列だとちょっと使いにくいのとヘッダーもう少し分けたかったので自分で書いた(そのせいでちょっとおかしいとこがある)
Plagger::Plugin::CustomFeed::ChangeLog
clmemo.txtはこんな感じ
2006-05-26 kzfm <kerolinq@gmail.com>
* test: テスト汁
断酒でコーディング、呑むとやる気なくなるからな
2006-05-23 kzfm <kerolinq@gmail.com>
* 雑感: 今日は朝からお疲れ気味。
最近雑用おおすぎ
ちょっと会議もふえすぎ
* 雑感: WindowsXPだと環境変数の扱いがイマイチわからなくて苦労した
なかなかつらい
global: timezone: Asia/Tokyo plugins: - module: CustomFeed::ChangeLog config: changelog_file: /home/kzfm/clmemo.txt - module: Publish::Gmail config: mailto: xxxxxx@gmail.com mailfrom: xxxxxx@gmail.com mailroute: via: smtp host: localhost:25
gmailに送ったらこんな感じ。

あー、毎度のことながらwarningでてます。
$ ./plagger -c changelog.yml Plagger [info] plugin Plagger::Plugin::CustomFeed::ChangeLog loaded. Plagger [info] plugin Plagger::Plugin::Publish::Gmail loaded. Plagger [info] plugin Plagger::Plugin::Aggregator::Simple loaded. Plagger::Plugin::CustomFeed::ChangeLog [info] Load /home/kzfm/clmemo.txt Warning (line 22): Found an action ({$item[1]}) after an unconditionalPlagger::Plugin::Publish::Gmail [info] Sending ChangeLog to xxxxxx@gmail.com
まだParse::RecDescentのitembodyのところが駄目駄目なのと、データの構造汚いのが気に入らない。日付とアイテム毎に入れ子のループを回さないといけないのだが、そういう場合ってどういうデータの構造にするのがよいのだろう?ハッシュと配列が入り混じっててヘナチョコになってしまったヨ。
09062006 SWIG
openbabelのperlラッパーに触発されたので、実用Perlプログラミングの初版を片手に。SWIGを使って、マンデルブロ集合を描いてみた。

思ってたよりも、楽だ。まず、本の18章の mandel.cとmandel.hを用意する。本だとgifに出力してあったが、FC1のgd-2.0.15.1ではできなかったのでpngで出力するようになってる。
続いて、SWIGインターフェースのFractal.i
%module Fractal
%{
#include "mandel.h"
%}
%include mandel.h
を用意したら、swigコマンドを実行。本だとperl5を引数にとってたけど、ネット調べたらperlでいけそうだし、-shadowオプション付けてるのが多いので、よくわからんけど付けてみた(これは後でちゃんと調べる)。
$ swig -shadow -perl Fractal.i
あとはMakeFile.PL書いて、普通にmakeでOK
use ExtUtils::MakeMaker;
WriteMakefile(
'NAME' => 'Fractal',
'LIBS' => ['-L/home/kzfm/perltest/swigtest -lgd'],
'INC' => '-I/home/kzfm/perltest/swigtest',
'OBJECT' => 'mandel.o Fractal_wrap.o'
);
普通にモジュールを呼び出すだけですな。
use Fractal;
Fractal::draw_mandel('mandel.png', 300, 300,
-1.5, 1.0,
2.0, 20);
で、絵の出来上がり!
実用Perlプログラミングは初版、第二版ともにもっているけど、型グロブとかクロージャとかXS,SWIGなんかは初版の方が詳しく書いてあるので、僕は今でも重宝するヨ。というか最近わかってきたっぽくて読むのが楽しい。
openbabelにはobfitっていうツールがあることをケムインフォマティクスに虚空投げで知った。なかなかイカス。今まで、「babelって調子いいフォーマットコンバーターだよな」ぐらいの認識だったヨ。
でもobfitはmol,molで重ね合わせるコマンドライン向きのプログラムなんで、普通にライブラリをMCSでぶん回すには、シェルスクリプト書いたりしなきゃならんし、シェルスクリプトでまわすとin,outでテンポラリのファイルがたくさんできるからやだナァ。
と思ったのでドキュメント漁りをしてみたら、Chemistry::OpenBabelっていうperlラッパーがあった。 うーんCPANでみたことないなぁ、、、と思ったらCPANにはあがってなくて、展開したアーカイブのscripts/perl/で配布してるみたい。
ソースを眺めたら、SWIG使っているのね。普通にインストールはOK。C++の関数をそのままPerlでラップしてるみたいなので、obfitのソース眺めながら、そのままperlで書きなおしてやれば、perlスクリプトとして使えるかな?って感じなのであとでやる。
それよりもSWIG覚えたいかも。実用perlプログラミングの初版には詳しく書いてあったはずだけど、第二版ではばっさり削られてInline::Cとかになってた。こんなん覚えてくるとperlでjavaライブラリのCDKとか呼びたくなるにちがいないんだろうけど、Inline::Javaって使えるのかな?これもあとで調べる。
ただ、API見る感じだと、Chemistry::OpenBabeで分子のモディファイとかリアクション関連いじるのやりにくくなかろうか?やっぱPerlMolははずせないわなと思ったが、Readmeに、そのうちPerlMolとopenbabelのグルーモジュール作るよん!って書いてあった。ナイス、楽しみ。
Future development will include a "glue module" to integrate with PerlMol and other Perl chemistry projects.
で、さらにケムインフォマティクスに虚空投げでOELibという記述が何度か出てきたので、もしやOpenEyeかと思ったら、やっぱそうだった。OpenEyeのライブラリなんだったら別にPerlMol使わなくても、化合物いじり出来るんではないの?とか思ったが、FAQに歴史的な経緯が書いてあった。だから、やっぱ素直にPerlMol使ったほうがいいのでしょう。OEChemはOELibを書き直してるってことはデータの内部構造結構違うんだろうな。
というわけで、ツールキットみたなかではいまんとこOEChemが一番良く出来てる気がしてる。
07062006 静岡
日曜は今年初の釣りに行ってきた。、先シーズンのボードはニューカマーのユッキー様のお世話でほとんど滑れなかったので、釣りは頑張るぞと。烏賊釣るぞとキス釣るぞとカワハギ釣るぞと。まぁ、やる気だけはあるヨ。
4時起床、集合で、414沿いの途中の釣り具屋トージンで餌買って4時半にはボートに乗り込む。例年に比べると一時間近く早いペースだ(謎)。
ボート屋のおっちゃんが「沖めのほうがいいよ」というので、アドバイスに従い、沖へと。朝焼けが綺麗だ。

早速、釣り糸をたらすが悪い予感的中。空回りしまくってますぞ。隣では、すでに数匹のキスを釣り上げているのに、
いっこうにのらねー。いや、キスごときにのせるとかいう表現は不適切だ。だって巻き巻きするだけでくっついてくんのに、、、、 と思ったら、強めのあたりがブルン!と。おっ初ヒット っと思ったら、エソだった、、、、何故?
「怖ギス釣れたけどリリースや」
ま、メゴチ以外は、一応キスの仲間ってことで。続いて、またもや強いひきが、、、、
長ギスでした。

「長ギスってぬるぬるしてるから困るよねー」とかいいながらこれまたリリース
うーん今日は釣れる気がしないかも、と思いながら小一時間したころ、ボートがなんか潮とは逆のほうに動いてるような気が。気がしただけじゃなくて、漁船に向かって引っ張られてる!
どうやら網に碇が、、、、
漁船のおっさんが、とりゃーーとりゃーーって叫んでんだけど、網は重いし、ものすごい絡まってるしで、いっこうに碇をはずせん。そうこうしているうちに、どんどん引っ張られていくし、焦れば焦るほどアレだ。 もうほとんどテトリス最上段ってな感じでパニくったところで、
漁船のおっちゃんが包丁でロープを切ってくれた。ありがとう、おっちゃん。ってか、ボートぎりぎりのところでで網投げんで欲しかった、一言声変えてくれたらどいたのにな。
というハプニングがあって、釣るのは慣れているが、釣られることには慣れていない、我々は心がポッキリ折れちゃった。というわけで釣りにも集中できるわけがなく、惰性で糸をたらしてた。
なんかもういいやって気になってたら、最後に一匹だけ。ボーズぎりでセーフ。

もう、満足。8時過ぎだけど風も強いし(疲弊してるし)撤収。あまりつれなかったけどキスとメゴチが天ぷらにする分くらいは確保。
帰り際に、ボート屋のおっちゃんにきいたら、漁船はシラスとってんだってさ。土曜は市場が休みなんで漁にでないらしい。それで、今まではバッティングしなかったのね(いつもは土曜日にボート出す)

夜、捌く前。メゴチは背びれを頭に向かって削いで頭を落としつつ、皮がついた状態で、尻尾のほうに引っ張ると皮が剥げる。

天ぷらうまい。今週もいくかも。
07062006 chemoinformatics
OEChem すごい。いまのとこPerlMolとかChemRubyよりも完成度高い感じがする。
PDB->XYZ->MOL2->SMILES->FASTA
とかファイル形式変えてっても最後にアミノ酸のFASTAが出力されたときには、びびった。
とかやっても、情報の欠損がおきないのは純粋にすごいと思う。まぁ、なんでもMOl2でセーブしとけはいいじゃんっていう突っ込みはおいといても。
あと、やっぱ海外だとRubyは少ないみたいでPythonがメジャーっぽい。どこもグラフのモデルなので、やっぱ描画ルーチンとドキュメントのしっかりしていて事例の多いところに流れるのかな。
そういやケミッチョ書きっぱなしのままだなぁ、そろそろまとめよう。
perl hacks読んでたらHack #54:Debug with commentsで Smart::Commentsが便利そう。
と思ったら、Elementaryでエントリになってたヨ。
perl hacksには書いてないけどElementaryで紹介されてた
プログレスバーいい!
初心者気味の他人のコードのデバッグすんのにDebug::EchoMessageすすめるんだけど、プリントデバッグみたいじゃないのでいまいち浸透しない。(あと、Debug::EchoMessageは標準じゃなかったはずなので、モジュールインストールしてないマシンだとエラー吐くし。)
Smart::Commentsだったら、
プリントデバッグした残骸を###付けて残しとけヨ
って指示するだけで、use Smart::Commentsしてなくても、
とかやるだけで、デバッグできるし、ループの部分に
### [===> ] % done
とか入れるといい感じになるので、面倒見られるほうも見るほうも効率的かなぁ?
Perl Hacks: Tips & Tools for Programming, Debugging, And Survivingというわけで、職場に浸透するかどうか試してみよう。
01062006 webdav
昨晩からFC5マシンの設定をはじめてマス。とりあえず、夜中までかかってCatalystのインストールは終了。
FC5のデスクトップ触るの初めてだったけど、FireFoxのフォントがモサモサしてて読みにくい以外は、自分でいつも使っている拡張は大体入ってるし、ターミナルがタブ式になってて使いやすいし、日本語入力も困んないし、いい感じかも。
昨日はapacheとsubversionはrpmでさくっと入ったし、今日はwebdavの設定でもするかなと、、、、
これもRPMでさくっとインストール。らくちんらくちん。
でも、WIndowsでテストしたら、httpで接続するとwebフォルダでなくて共有フォルダとして認識されてしまい、putができん。http://hostnameで認識するのにアイコンのプロパティみると\\hostnameに替わってるの。

うーん、なんでかな?Winが悪いのかFC5が悪いのか?と悩んだが結局深追いせず、軽い気持ちでhttpsで接続してみるとあら不思議、、、
webフォルダとして接続できてるヨ

まぁいいや、trac用だから。と、とりあえず深入り禁止の方向で。
あと、mod_encodingの設定すんのメンドイナァと思ってたら、FC5用のRPM作ってる人がいた。
素晴らしい、感謝感謝でインストール。OK!