smi2pngの幅と高さを指定できるようにした

高さとか幅とか指定して画像に出力するように、コマンドを書いた。というわけで、これよりは使いやすくなった。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/usr/bin/perl

use strict;
use warnings;
use CDK::Smi2Png;
use Getopt::Long;

my $width = 300;
my $height = 300;
my $output = "output.png";

my $result = GetOptions(
                        "width=i" => \$width,
                        "height=i" => \$height,
                        "output=s" => \$output,
);

sub usage
{
  print <<EOF;
usage:

smi2png [-w <width>] [-h <height>] [-o <output>] <SMILES>

  -w, --width             width of output
  -h, --height            height of output
  -o, --output            output PNG file name

EOF
print "\n";
exit;
}

my $smi = shift || usage();

$smi = (split(/\t/, $smi))[0];

my $smic = CDK::Smi2Png->new();
$smic->writePNG($smi,$width,$height,$output);

使い方は、

smi2png -w 200 -h 200 -o thiophene.png "C1=CSC=C1"

とか。

あとは、ベンゼン環をチオフェンに変換するようなモジュールをChemichoに追加した。

benzene

これで、6員環が生物学的等価体の5員環に置換されるようになった。

thiophene

MeCab (和布蕪)入れた

オモシロそうなので遊んでみたが、幾つかはまった部分があった(未解決)

[を] 裏で形態素解析器を使い長い文をそのままキーとしてWeb検索する

長い文を検索キーとしてWeb検索をするというハックです。 一年前の検索会議[2005-09-30-3]で紹介しましたが、 今回ゼロから書き直しました。

辞書はutf8な環境でつかえるように

./configure --with-charset=utf8

でインストール

自分の環境で実行すると、フォームの部分だけ文字化けした(謎)

mecab

あと、名詞かどうか判定している部分で

while ($n = $n->{next}) {
    if ($n->{feature} =~ /^\xcc\xbe\xbb\xec/) { # 名詞
        my $w = $n->{surface};
        Encode::from_to($w, 'euc-jp', 'utf-8');
        $word{$w}++;
    }
}

とやっているのだが、なぜ、xccxbexbbxecでマッチさせないといけないのかよくわかってない。というか、Encodingちゃんと理解してないナァ、、、、

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#!/usr/bin/perl
use strict;
use warnings;
use MeCab;
use Devel::Peek;
use utf8;

my $m = new MeCab::Tagger ("");
my $word = "今朝は雨の中、U隊長とユッキー様とハナタロウと散歩した。";
my $n = $m->parseToNode($word);

while ($n = $n->{next}) {
    if ($n->{feature} =~ /^\345\220\215\350\251\236/) { # 名詞
#    if ($n->{feature} =~ /^名詞/) { # 名詞
        my $w = $n->{surface};
        print $w,"\n";
    }
}

この場合、use utf8しなければ、/^345220215350251236/でも/^名詞/でもマッチするのに、use utf8すると/^名詞/はマッチしなくなってしまう。

  • フォームが文字化け
  • 正規表現の部分がよくわからなかった。

あとで、ちゃんと調べる。

三島図鑑

三島図鑑はXOOPSを使って構築されているようだ。というより、XOOPS日本公式サイトみてたら見つけたヨ。

まぁ、掲載店舗数が少ないってのは、立ち上げたばかりだからいいとして、口コミでつくるとうたっているわりには、ユーザーが匿名なのとトラックバックを受け付けていないのがちょっときびしいかも。新規投稿一覧とかも見えたほうが嬉しい。

あとは地図関係GoogleMapでぐりぐりできたり、livedoormapにトラックバックしといてくれるとありがたい。僕は、mapへのトラックバックをチェックしているので特に強く思ふ。

グーグルマップはぐりぐりできると散策してる気分になれるからいいよな。

さて、XOOPSとかPloneでコミュニティサイトとかCMS構築の敷居は下がったけど、今から新しくサイトを立ち上げて成功する要素は何なんじゃろうかねぇなんて考えてましたヨ。

広く浅い情報サイトだったらユーザビリティなのかなぁ。

伽羅

SWENにアウトドアなアイテムを見に行ったので、その勢いで久々の伽羅に行ってきた。

U隊長は、伽羅めん頼むよと宣言してたので、僕はつけ麺を。

つけ麺 つけ麺

スープはピリ辛、めんは平たい縮れ麺、モチモチ感があって好きなタイプ。

きゃら麺

U隊長は今日の伽羅めんはちと辛かったと言ってたが、僕はこのくらいのほうが。

伽羅

ゆったり座れるので子連れでも大丈夫そうな感じ(うちの子供は車の中で寝ちゃったので店に入ってない)

Filesys::SmbClientParser

みんなで共有ファイルサーバーを使うと、やたら掘りまくられて、フォルダ階層がメチャクチャ深くなって困ることが多いんです。

なもんで、

新規ファイルを共有に突っ込んどいたヨ

とか言われても、探すの結構だるいんですけど。

と思っているのは、どうも僕だけっぽくて、みんな普通に、ダブルクリック(ダブクリ)しまくってるようだ。そんなにダブクリしたら腱鞘炎になるよとか言いたいが、日ごろから鍛えられているので、丈夫に育っているのかもしれん。

てか、ファイルサーバーの応答がメチャメチャ悪い。僕的にはそっちのほうがイライラする。

とまぁ色々気に入らないことがありまして、一昨日の帰りがけに突然、linuxからWindowsのファイルサーバーを定期的に監視して、新しいファイルが放り込まれたら、RSSリーダーでお知らせするようなものをつくろうと思い立った。

$ smbclient //fileserver/share -D subdir -U ID%password

でftpみたいにファイルのリストを取ってきて差分をとるのを自動化すればよいが、CPAN探したらFilesys::SmbClientParserってのがあったので、これを使って再帰的に処理すればよさそう。

ついでにwvWareで文書の中身も一緒に送ったろ。

で結局マイクロコンテンツってなんじゃろか?

いつものようにpubmedの新着アブストラクトを、ボケーとRSSリーダーで流し読みしてたら、これってマイクロコンテンツじゃないよなぁと思ったので。

調べてみるに、マイクロコンテンツはマクロコンテンツのサマライズ というのが、それっぽい定義っぽいらしい。
が、現在の定義にはそぐわないのではなかろうかと。これ読んでもそういう意味で使ってるように見えないし。

単なる存在の認知を超えて、理解できるコンテンツの単位がマイクロコンテンツであって、構造化されたものの要約はマイクロコンテンツとは呼べんのでは?と、最近思うわけだ。

pubmedなんかはもろマクロコンテンツのサマライズ=アブストラクトなので、Jakob Nielsen博士的にはマイクロコンテンツだけど。

実際には後で読むための論文を選別するためにクリッピングしやすいようにRSSリーダー通してるだけだし。つまり存在の認知のみの意味で使ってるだけだった。

確かにこういうアブスト自体には、読んで深く考えさせられたり、手動かして再現してみたりというコンテンツっぽさはほとんどないわな。

ちゅうわけで、論文(pubmedid)みたいに、まとまった(ある種もっともらしいストーリー付けされた)もののほかに、小さなコンテンツ単位に分割したものも併せて用意してくれるとクリッピングしたり、小さな単位で色々考えたいときに便利かもとか思った次第。

てか、そういう単位に分割するサービス作れば売れるかな

と。

創薬分野の統合ソリューションとか言うてるものは連想強い過ぎだし。パスウェイとかGOみたいなのは、メタ性を追求しすぎな気がするし。もうチョイゆるいのあるといいんじゃないかな。

と思った。

Catalyst Advent Calendar

集中して読んだ。

  • catalystでpdfを作成
  • Day 12
  • catalystでmp3ストリーミング再生
  • Day 15
  • ApacheでFastCGIをつかってCatalystを動かす
  • Day 16
  • Google Maps Mashup
  • Day 23

が、参考になった。Google Maps API面白いのであとでなんかやってみよう。(と思ったが、なかなか思い浮かばん)

あとはTemplate::Latexでpdf化するのは結構良いかも。埋め込むだけだし。clmemoからpdfにできるようにしたいかも。

クックパッド+Plaggerで生活のクオリティーがあがった

U隊長は、RSSリーダーみたいなネット接続全開中みたいなツールとは無縁で、もちろんblogなど書かない(たまにミクッとく?くらい)系の、世間一般的にはごく普通のネットユーザーだ(多分)。

cookpadをU隊長のGmailに送るのを続けて約半年。

当初は普段使いのメーラーの他にGmail使うのが面倒だったみたいで、最初はあんまりみてなくて、意味ないことしたかなぁと思っていたのだが、Gmailの操作性は良かったみたいで、いつの間にかショートカットを使ってcookpadを流し読みしては気になるのに★つけたりするようになってた。

で、秋頃から、うちの食卓にハック的な小技のおかずが並ぶ機会が(格段に)増えた。

web人間論にフローを読むとかいう話があったんだけど、cookpadのレシピはお料理hacksって感じで、フロー読みするのにちょうど良いのかな?とか思った。

ProductName ウェブ人間論 (新潮新書)
梅田 望夫
新潮社 / 714円 ( 2006-12-14 )


要するに、コンテンツの大きさ(この場合はU隊長がレシピを流し読みして実際の料理としてイメージできるか)のバランスがよかったのかなと。なんちゅうか、これがマイクロコンテンツに必要な条件なのかなと。もちろんサクサク読むための環境も必要なんだろうけど。

などと、ワイン飲んで手作りニョッキ食べながら思った。

ニョッキ

abでアパッチベンチマークじゃ

@IT:Apacheパフォーマンス・チューニングのポイント(2/2)

 ここからはApacheに着目して、パフォーマンス・チューニングのための準備を行う。チューニングするに当たって、まず現状を十分に分析し、具体的な目標を定めることから始めたい。目標をどれだけ具体化するかはともかくとしても、現状を数値的に知りもせずに、漠然と「遅い遅い」と騒いでいても仕方がない。

現状を数値的にとらえるにはツールが必要となる。いわゆるベンチマーク・ツールだ。Apacheには、標準で「ab」(Apache Bench)というツールが付属している。

ベンチマークじゃ!なんつって職場のapacheに負荷かけたら、かけすぎたみたいで固まった(イヤー、ちょっとやりすぎた。)

それにしても、うちのサーバー非力すぎ。blosxomにキャッシュでも導入しようかなぁ

make testで.tの出力はドコに消えるのだろう?

perlのmake testでテストファイルの結果をコンソールで確認したいときはwarnでダンプとかを標準エラー出力に吐いて眺めるのだけど、実際printの出力はドコに行くのだろうか?(/dev/null ?)

古いツールをsystem関数で実行するようなプログラムを書いてSOAPで呼び出したら、malformed header from scriptとかいうエラーがでて、

何がmalformedやねん

って小一時間はまった。結局、実行ログを標準出力に吐くツールだった(標準エラー出力に吐いてるもんだと思っていたので原因を突き止めめるのに時間がかかってしまった)。あほすぎ。