12012010 chemoinformatics perl bioinformatics Python
バイオインフォだけだと片手落ちの気がする。表紙はケクレ構造にちなんで亀でお願いしたい。
今のCPUとかmemoryの状況でLLで量子化学とか、かなりアリだと思うんだけどなぁ。pyquanteとかやばいでしょう。
12012010 chemoinformatics perl bioinformatics Python
バイオインフォだけだと片手落ちの気がする。表紙はケクレ構造にちなんで亀でお願いしたい。
今のCPUとかmemoryの状況でLLで量子化学とか、かなりアリだと思うんだけどなぁ。pyquanteとかやばいでしょう。
28122009 perl
大掃除と配置換えのためにサーバーの電源を切ったり入れたりしてたらNet::Amazonが動かなくなってしまった。
Net::Amazonのデバッグは
use Net::Amazon;
use Log::Log4perl qw(:easy);
Log::Log4perl->easy_init($DEBUG);
my $ua = Net::Amazon->new(
とか。
手元のMacbookと比較しながらにらめっこすること3時間。そろそろイライラして来た頃合にSignatureしか考えられんよなぁとソースを見ながらふと、時間ズレてんじゃねーの?
ビンゴだった
非決定性計算とかambでどんづまり。なんか色々みているうちにうっかりモナドに迷い込んでしまった。
我々の課題を思い出してください:「副作用付き計算を、純関数で表現せよ」でした。カウンター(大域変数count)に触ることは副作用ですから、これをやめましょう。んじゃ、カウントアップできないじゃないか! って?はい、そのとおり。でも、「カウントアップしたい」という意志を伝えることはできます。
結局Monadを実装するためには、値と副作用を別々に保持し、値に関しては参照等価性を保ちさえすればいい。
$op0->{value} = eval{
$coderef->($op0->{value}, $op1->{value});
};
if ($@){
$op0->{state} = $@;
$op0->{value} = undef;
}
evalで「失敗するかもしれない演算」を包んで「より大きな失敗するかもしれない演算」を作るって解釈すればよいのかな。
あとでふつうのHaskellプログラミング読み返そう。
現実逃避もかねて、どう書く?解いてた。
Higher-order Perlのおかげでこんな感じの問題は、まず再帰で考えることができるようになった気がする。
それにしても、haskellの二行ってすごいなぁと思った。
11102009 perl
cpanコマンドでinstall CPANすると
警告: 構成ファイル「/Users/xxxx/.gnupg/gpg.conf」の安全でない所有者
となるのは-Hオプションをつけてないから。
sudo -H cpan CPAN
とやればよろしい。
Pygmentsをperlで使いたかったので、 Inline::Pythonでやってみた。
use Inline Python => <<'END_OF_PYTHON_CODE';
from pygments import highlight
from pygments.lexers import PythonLexer
from pygments.formatters import HtmlFormatter
def py_highlight(code):
return highlight(code, PythonLexer(), HtmlFormatter())
def get_stylesheet():
return HtmlFormatter().get_style_defs('.highlight')
END_OF_PYTHON_CODE
$code = <<'PYTHON_CODE';
from reportlab.pdfgen import canvas
c = canvas.Canvas('hello.pdf')
t = c.beginText()
t.setFont(t._fontname, 64)
t.setTextOrigin(0, 0)
t.textOut('Hello, World')
h = 64 / t.getX() * c._pagesize[1]
t.setFont(t._fontname, h)
c.setFontSize(h)
c.rotate(-90)
c.drawString(-c._pagesize[1], t._leading - h, 'Hello, World')
c.save()
PYTHON_CODE
printf qq|<html><head><style type="text/css">%s</style>
</head>\n<body>%s</body>\n</html>|, get_stylesheet(), py_highlight($code);
amazonの認証に対応するためにhikiのバージョンを0.8.8.1にあげたついでにamazonプラグインを覗いてみたらプロキシで対応していた。
drkcoreのほうはNet::Amazon使っているので、ローカルでSignature組み立ててるんだけど、wikiりたいだけのユーザーがわざわざsecret_keyとか取得すんのもあほくさいからwikiみたいのはプロキシーでいいのかと。
18092009 perl
行末がOCamlっぽくなっても大丈夫!
use XXX;;
use WWW::Mixi::Scraper;;
my $mixi = WWW::Mixi::Scraper->new(
email => 'ml', password => 'pw',
mode => 'TEXT');;
XXX $mixi->new_friend_diary->parse;;
朝からChucKで遊ぶ。
編集した結果をリアル気味に反映させたくなったのでperlで書いた(loop.pl)。
use Path::Class;
my $file = $ARGV[0] || die "filename not found";
my $t = file($file)->stat->mtime;
system "chuck", "+", $file;
while(1){
sleep 1;
unless ($t == file($file)->stat->mtime) {
system "chuck", "=", "1", $file;
$t = file($file)->stat->mtime;
}
}
あとはChuckのサンプル(test.pl)
SinOsc s => JCRev r => dac;
.5 => s.gain;
.2 => r.mix;
[ 1, 3, 5, 7 ] @=> int note[];
while( true )
{
Std.mtof(Std.rand2(1,3)*12 + 48 + note[Std.rand2(0,note.cap()-1)] ) => s.freq;
140::ms => now;
}
これで、chuckのほうをサバクラにするために
chuck --loop
で動かしておいて、別の端末から
perl loop.pl test.ck
これで、test.ckをエディタで編集して保存すると反映される。
Arduinoとかで制御すればもっと面白くなりそう。CdSセンサとかで変化するようなのをつくってみてもいいし、ChucKをネットワーク越しに制御できるので音サーバーというのも面白いかもしれませんな。