もうすぐYetiなのね

はなと一緒に散歩してたら咲いてたので撮ってみた。

花

もう秋ですな。そろそろカワハギ釣りにもいかないと。 今年の冬は10/20 OPENみたい。

化合物の新着をRSSで

毎晩、化合物のデータベースの新着チェックして物性計算してDBに突っ込むバッチを流してるのに、何でRSS吐くようにしてないんだろうとふと思った。

ついでに週で集計とって、分子量とかlogpの推移をRSSで出力しといたろか。

changelog2blosxomをplaggerで

plaggerでblosxomに投稿する方法はあるのだけど、ネットワーク越しだとちと使いづらい。
で、ふと、XML-RPCインターフェースがあることを思い出したので、試してみたら調子よさそう。という経緯により、plagger使ってMeadowで書いているメモをblosxomにポストするという話だが、折角なのでこのエントリ自体Changelogで書いてみている。

Meadowでメモをとることとかclmemo,Meadowに関しては以下が参考になる。

Windowsで簡単にPlaggerをインストールする方法は簡単すぎ。 さくっとインストールは完了。

assets/plugins/Publish-MT/mt.ttはちょっと書き換えた。

[% FOREACH entry = feed.entries -%]
[% entry.body %]
[% END %]

設定のYAMLはこんな感じ

plugins:
  - module: CustomFeed::ChangeLog
    config:
    changelog_file: C:\home\ohkawa\clmemo.txt

  - module: Filter::Rule 
    rule:
      expression: $args->{entry}->{meta}->{cltag} eq "blosxom"

  - module: Filter::Rule
    rule:
      module: Deduped
      path: C:\Plagger\blosxom.db

  - module: Filter::BreakEntriesToFeeds

  - module: Publish::MT
    config:
      rsd: http://localhost/blosxom-xmlrpc.cgi/RPC2
      username: kzfm
      password: password
      blog_id: 1

plaggerの呼び出しはlispとかでマクロ書いてM-x plaとかC-x C-x Pでやりたいんだけど、Lispわからんので、今のとこはM-x shellでシェル呼び出して実行している。

というわけで、TODOってしとけばgmailにメールするようになってるし、blosxomって付けとけば、下書きにポストするような環境になって結構快適。

PlaggerでChangeLog(4)

Filter::ChangeLogなんて作る必要なかった。既存のFilter::Ruleを利用すればいいだけだった。

    rule:
      expression: $args->{entry}->{meta}->{cltag} eq "TODO"

Net::MovableTypeを使ってblosxomに投稿

あーそういえば、BXRってのがあったなというのを思い出したので、Net::MovableTypeで投稿することを思いついた。

my $mt = new Net::MovableType('http://localhost/blosxom-xmlrpc.cgi/RPC2');
$mt->username('kzfm');
$mt->password('okbkj');
$mt->blogId(1);

$entry = {
    title       => "Hello World from Net::MovableType",
    description => "おーけーおーけーOK牧場"
};

$mt->newPost($entry);

mttest

おー、かなりOK牧場だ。

ちなみにpackage blosxomのnewPostをちょっといじって常にランダムなファイル名を付与するようにした。ファイル名考えなくていいってだけでも精神的にはかなりラク。

#    if ( defined( $struct->{'postid'} ) ) {
#        $filename = BXR::getFilenameFromPostId( $struct->{'postid'} );
#    }
#    else {
#        $filename = lc( $struct->{'title'} );
#        $filename =~ s/\W+/_/g;
#        $filename =~ s/_+$//;
#        $filename = BXR::getRandomFilename() unless $filename =~ m/[a-z]/;

これで、Plagger::Plugin::Publish::MTを使ってChangelog2blosxomができるはず。ここまでやれれば、僕はchangelogだけに集中すればよくて、それ以降の処理はplaggerがよきにはからってくれるのでかなり調子いいかも。あとは学会とかセミナーの参加ログもchangelogでとってるのでms-wordにpublishしたいなぁ。

Perl Testing

perlのテストのやり方って、みんなどうやって覚えるんだろうか?と疑問に思ってる(今でも)。そっち系の会社だと教育みたいなのあるんだろうなとか?
でも、僕の場合は周りにプログラミングするヒトがいなかったので、テスト技法っていまいちよくわかってなかった。続・初めてのperlにもちょろっとしか書いてないし、あれじゃぁ、実際のテストコード書けるようにならんよなぁとか思ってた。そういうわけで、なかなかプリントデバッグから先に進まない。しかもよくわからんので、モジュールのソースは読むけど.tは読まんみたいな。

というわけで、テストは覚えたいけど、何を勉強すればよいのかわからんという状態だったが、最近、Perl Testingが色々なところで薦められていたのでこれはいかねばと、買って読んでみた。

ProductName Perl Testing: A Developer's Notebook (Developers Notebook)
Ian Langworth
Oreilly & Associates Inc / ?円 ( 2005-08 )


かなりわかりやすくて、さくさく読めた。事例から学ぶノートブックというスタイルで、最初のほうは基本的なことから始まり、徐々にデータベースのテストとかwebアプリのテストまで押さえてある。読み終えたら、あとはドンドコ書いて、cpanの.tをドンドコ読むと。

というわけで、最近は.tのファイルも読んでて楽しい。もちろんデバッグも楽になった。

planet chemoinformatics をちょっと修正

planet chemoinformaticsのRSS Auto Discoveryが微妙におかしい(/が抜けてた)ので修正。これで、livedoor readerとかbloglinesに登録できる。ま、直接rssを放り込んでも良いんだけど。僕はwebでほとんどみないので、デフォルトのテンプレートをいじって綺麗にしたいという欲求が沸いてこない(今のとこ)。だからRSSリーダーで読んだほうが良いと思うヨ。ちなみに、一日3回更新するように設定してます。

あと、docking.orgも追加した。rssが日付と本文を含まないので、Filter::EntryFullTextを書いてみた。

author: kzfm
handle: http://docking.org/.*?article\.pl\?
extract: (<TABLE WIDTH="100%" BORDER="0" CELLPADDING="5" CELLSPACING="0">
<TR><TD BGCOLOR="#FFFFFF">.*?                  </TD></TR></TABLE>)
.*?NAME="returnto" VALUE="//docking.org/article.pl\?sid=(\d\d/\d\d/\d\d)/\d+">
extract_capture: body date
extract_date_format: %y/%m/%d

なかなか快適になってきた。

InSilicoSpectro

プロテオミクス関係のモジュールがCPANに登場しました。

  • Mass list file format conversions.
  • Protein modifications.
  • Protein sequences digestion with a large choice of possible enzyme types.
  • Peptide mass computations with fixed and variable modifications. Match with experimental PMF data.
  • Fragment mass computations for modified peptides and with neutral losses. Match with experimental MS/MS data. Possibility to define new types of fragments.
  • Text/graphical output in many formats of MS/MS spectra and match with experimental data.
  • Peptide HPLC elution time prediction.
  • Protein pI estimation.

pIは別にEMBOSSでも予測できるんだけどHPLC周りとかMS/MSなんかちょっと気になりますな。あとphenyxともなにが違うのかも気になるヨ

Mixinとpackage

Class::DBI::Loader::Relationshipが便利そうなので、ドキュメント眺めてたら、

Class::DBI::Loader::Relationship - Easier relationship specification in CDBI::L - search.cpan.org

This module acts as a mix-in, adding the relationship method to Class::DBI::Loader.

とかいう記述があったので、何してるんだろかとソース眺め。

結局Class::DBI::Loader::Relationship自体は何もしてナイっぽくて、Class::DBI::Loader::Genericの名前空間でrelationshipメソッドが記述されてた。

うーんpackageって同じ名前空間を複数回宣言していいのか?と不思議だったので、試したのが以下のコード。

package A;

sub a1_test { print "a_1\n";}
sub a2_test { print "a_2\n";}

1;
package B;

sub b1_test { print "b_1\n";}
sub b2_test { print "b_2\n";}

1;
package C;

sub c1_test { print "c_1\n";}
sub c2_test { print "c_2\n";}

1;
package A;

sub a3_test { print "a_3\n";}

1;

package Main;

A::a1_test();
B::b1_test();
C::c2_test();
A::a3_test();

で、実行。果たしてa3_testは呼び出されるんだろうか?

$ perl packtest.pl
a_1
b_1
c_2
a_3

うーん、これでもいいのね。

ただmix-inに関してはどっかから借りてくるのをmix-inって呼ぶのかナァと漠然と感じていたので、こういうやり方をmix-inと呼ぶのが, アイスクリームにアイスクリームを混ぜ込んでるみたいで、ちょっと不思議な感じがするんだよなぁ。

THE VOYAGE

メタモでやられたSLEEP WALKERよいです。

ProductName THE VOYAGE
Sleep Walker
ヴィレッジアゲイン / ?円 ( 2006-07-19 )


踊れるjazz、そして渋め。

  • AFLOAT feat.Yukimi Nagano
  • KAZE

が好き。