03012007 Haskell
普通のhaskellプログラミングの216ページに
ポイントフリースタイルへの書き換えは脊髄反射の速度でできるようにしてください。
と書いてあったのだけど、脊髄どころか反射すらできない。
firstNLines :: Int -> String - String firstNLines n = unlines . take n . lines
nを押し出すのってどうやるんだろうか?
追記07.01.03
解決したヨ。
03012007 Haskell
普通のhaskellプログラミングの216ページに
ポイントフリースタイルへの書き換えは脊髄反射の速度でできるようにしてください。
と書いてあったのだけど、脊髄どころか反射すらできない。
firstNLines :: Int -> String - String firstNLines n = unlines . take n . lines
nを押し出すのってどうやるんだろうか?
解決したヨ。
03012007 Haskell
下の式を完全なポイントフリースタイルにする方法を色々と考えてみたんだけど。
firstNLines n = unlines . take n . lines
結局分からんかったので、mixiで聞いてみたらさくっと教えてもらえた(ありがたい)。
unlines . take n . lines (unlines . take n) . lines (. lines) (unlines . take n) (. lines) ((unlines .) (take n)) ((. lines) . (unlines .)) (take n) ((. lines) . (unlines .)) . take (. lines) . (unlines .) . take
.って演算子として考えればよいらしい。だから、左側を取るように書き換えてやればいいのか。
Prelude> 5 + 7 12 Prelude> (+ 7) 5 12
(+)だとこんな感じ。
型を確認すると
Prelude> :type (.) (.) :: (b -> c) -> (a -> b) -> a -> c
.は(b -> c)と(a -> b)という関数をとってa->cという関数を合成する関数(二項演算子?)なのか。
(.) :: (b -> c) -> (a -> b) -> (a -> c)
関数合成で、変数が消えていくのは、こういうことなのね。
02012007 wii
コンビニにビールを買いにいったらPLUTOの4巻が並んでいた。あれ、3巻読んでないじゃんってことで、チャリで3巻物色に近所のブックオフへ。
あんまり期待してなかった、というか予想通りにPLUTO3巻は置いてなかったので、立ち読みでもしてから帰るかなぁと軽く店内を見回すと、
wii入荷しました
という張り紙が。
おーラッキー、そのままの流れでお買い上げ(+ wii sports)してきた。というわけで、予想外の大モノをゲット。
で、さくっと帰って、ゲームで遊んだら、Wi-Fiコネクションの設定だ。
暗号方式はWEPのほかにもAESとか色々使えるんだけど、DSにあわせなあかんのでDS+Wii+パソコンとかという家庭だと実質WEP128という選択肢がないと思うんだけど、、、、(もしかしてDS LiteってAES対応してんのかな?)うちのは普通のDSなので、もちろんWEP128で無線LAN環境構築してある。
あと、Wii本体更新が結構おそい上によく失敗するみたい。夕方から更新作業始めて、3回DLに失敗して、4回目に1時間近くかかって更新が終わったと思ったら、
さらなる、本体更新が始まったのには凹んだ(今21時)失敗したら、最初からダウンロードやり直しっぽいのも勘弁して欲しい。
いつになったら更新完了するんじゃろか?うーん、近くでADSLモデムがバッツンバッツン切れてるから、うちのネットワークの問題なのかなぁ、とエントリ書きながら思ったりしている。
ちなみにwii sportsはおもろい。特にテニス。明日リモコンもう一個買ってきてU隊長と対戦するかも。
これWi-Fiで対戦できたらいいのにねぇ。
29122006 music
明日からスキーに行くから、道中lamb聴くから貸して~ と言われたので、渡しといたけど。
これってドライブ向きじゃないような気がすんだけど。 まぁいいやってことで、ついでにGoth-Tradも渡しといた。
ちなみに僕はボードトリップでは、DJ Krushとかlambとかカケマクリデス。真っ白な雪道にガブリエルとかかかるとドープなほうに盛り上がってなんとも言えん。
29122006 chemoinformatics
高さとか幅とか指定して画像に出力するように、コマンドを書いた。というわけで、これよりは使いやすくなった。
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に追加した。

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

29122006
オモシロそうなので遊んでみたが、幾つかはまった部分があった(未解決)
[を] 裏で形態素解析器を使い長い文をそのままキーとしてWeb検索する
長い文を検索キーとしてWeb検索をするというハックです。 一年前の検索会議[2005-09-30-3]で紹介しましたが、 今回ゼロから書き直しました。
辞書はutf8な環境でつかえるように
./configure --with-charset=utf8
でインストール
自分の環境で実行すると、フォームの部分だけ文字化けした(謎)

あと、名詞かどうか判定している部分で
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すると/^名詞/はマッチしなくなってしまう。
あとで、ちゃんと調べる。
29122006
三島図鑑はXOOPSを使って構築されているようだ。というより、XOOPS日本公式サイトみてたら見つけたヨ。
まぁ、掲載店舗数が少ないってのは、立ち上げたばかりだからいいとして、口コミでつくるとうたっているわりには、ユーザーが匿名なのとトラックバックを受け付けていないのがちょっときびしいかも。新規投稿一覧とかも見えたほうが嬉しい。
あとは地図関係GoogleMapでぐりぐりできたり、livedoormapにトラックバックしといてくれるとありがたい。僕は、mapへのトラックバックをチェックしているので特に強く思ふ。
グーグルマップはぐりぐりできると散策してる気分になれるからいいよな。
さて、XOOPSとかPloneでコミュニティサイトとかCMS構築の敷居は下がったけど、今から新しくサイトを立ち上げて成功する要素は何なんじゃろうかねぇなんて考えてましたヨ。
広く浅い情報サイトだったらユーザビリティなのかなぁ。
27122006 静岡
みんなで共有ファイルサーバーを使うと、やたら掘りまくられて、フォルダ階層がメチャクチャ深くなって困ることが多いんです。
なもんで、
新規ファイルを共有に突っ込んどいたヨ
とか言われても、探すの結構だるいんですけど。
と思っているのは、どうも僕だけっぽくて、みんな普通に、ダブルクリック(ダブクリ)しまくってるようだ。そんなにダブクリしたら腱鞘炎になるよとか言いたいが、日ごろから鍛えられているので、丈夫に育っているのかもしれん。
てか、ファイルサーバーの応答がメチャメチャ悪い。僕的にはそっちのほうがイライラする。
とまぁ色々気に入らないことがありまして、一昨日の帰りがけに突然、linuxからWindowsのファイルサーバーを定期的に監視して、新しいファイルが放り込まれたら、RSSリーダーでお知らせするようなものをつくろうと思い立った。
$ smbclient //fileserver/share -D subdir -U ID%password
でftpみたいにファイルのリストを取ってきて差分をとるのを自動化すればよいが、CPAN探したらFilesys::SmbClientParserってのがあったので、これを使って再帰的に処理すればよさそう。
ついでにwvWareで文書の中身も一緒に送ったろ。