Tough Guys Don't Dance / High Contrast

前作は僕的にいまいちだったのだけど、今作はイイ。特に後半

ProductName Tough Guys Don't Dance
High Contrast
Hospital / ¥ 2,352 (2007-10-01)
近日発売 予約可

  • Eternal Optimist (feat. J'nay)
  • Chances (feat. Linda Gail Lewis)

あたりの流れが好き。

High Contrastのアルバム買っといてアレだけどリキッドファンク~ってのは実は苦手。あのチャカチャカ感がダメだな。

第7回オープンバイオ研究会はビジュアライゼーション

おー、おもしろそうだ。

第7回オープンバイオ研究会

バイオインフォではゲノムからメタボロミクスまで幅広いデータを扱いますが、これらの大規模なデータを理解するためには適切なビジュアライゼーションと使いやすいユーザーインターフェイスが欠かせません。 そのような状況の中で、ネットワークの可視化を行う Cytoscape や、複雑な系のシミュレーション結果を可視化する E-Cell 3D など魅力的なアプリケーションが開発されてきています。また、Web2.0 時代を迎え AJAX などの技術を活用した効果的なインターフェイスも普及してきました。そこで、今回は「ビジュアライゼーション」にフォーカスを絞った研究会を開催したいと思います。

データの量と種類が増えたときに目という(中途半端な)デバイスにどうやって認識させるかというのはかなり興味がある。

ケモインフォだとなかなかSAR表から先にいかないのが不思議で仕方ない。多次元最適化とかいってexcelの表がZ列超えんのが普通なのに、、、よく読めるなと感心する。

あとbioflashとかどうなってるんだろうか?あれもAjaxよりも視覚にうったえる力が強いと思うので面白そうだなと思ってたんだけど。

HOP 4章終了

Higher-Order Perlの4章は100pageに及ぶイテレータの章。

ProductName Higher-order Perl: A Guide To Program Transformation
Mark Jason Dominus
Morgan Kaufmann Pub / ¥ 7,625 (2005-05-30)
通常24時間以内に発送

4.3.1のpermutationのところがかなり面白い。組み合わせをシーケンスにするとことか基底を列ごとに変える部分とか。4.3.2はゲノム配列の組み合わせ問題で懐かしさ満開、といっても僕はそのころはEMBOSSとかに頼っていたのであまりそういう問題に関して深く考えたことなかったな(既にツールとして色々あったし、、、)

4.4でイテレータ版のmapとgrep。これは色々と楽しそう。Iterator::Utilというモジュールがある。

後半は読み物色が強くなってて、イテレータの終わりとSQLでいうNULLにあたるものをどう区別していくかみたいな。一番最後にweb spideringの例が示してあってigrepとimapがかなりいい感じ。

HOP 4.5.7

Higher-Order Perl

hash,arrayのほかにクロージャもblessできる。

Perl におけるオブジェクト指向

Perl のオブジェクトを作るときは、まず組み込みのデータ型から適当なものを選びます。普通はハッシュを使うことが多いと思いますが、配列やクロージャ(無名サブルーチン)もオブジェクトに出来ます。

ProductName Higher-order Perl: A Guide To Program Transformation
Mark Jason Dominus
Morgan Kaufmann Pub / ¥ 7,625 (2005-05-30)
通常24時間以内に発送

いくつかのアクションを持つイテレータを用意したとき

$it->('next');

とか書かないといけないところを

sub Iter::next {$_[0]->('next')}

というような関数を用意する。更に、イテレータを受け取ってblessして返す関数を適用。

sub Iterator (&) { bless $_[0] => 'Iter'}

そうすると、

$it->next

というようなメソッド風呼び出しが行え、一種の構文糖衣的な使い方と考えておけばよいのだろう。

HOP 4.4.4

Higher Order Perlのappend()

  • listをイテレータにする関数を作る
  • イテレータをいくつかリストに突っ込む
  • さっきのlistをイテレータにする関数を使ってイテレータの詰まったリストをイテレータに

イテレータのappendの完成。素晴らしい。この流れでイテレータのzipとかもやれそう。

ProductName Higher-order Perl: A Guide To Program Transformation
Mark Jason Dominus
Morgan Kaufmann Pub / ¥ 7,625 (2005-05-30)
通常24時間以内に発送

PacemakerのPre-booking

520ユーロか。なんか微妙な値段設定だな。でも欲しくなりそうだなあ。

Gaucheのbeginはperlのdo

最後の式を評価して返す

perlでfunc {}

func {なんかコード} = func(sub {なんかコード})の略らしい

sub Testfunc (&){return $_[0]->();}
Testfunc {print "hello kzfm"};

これはうまく動くが(&)がないと

sub Testfunc {return $_[0]->();}
Testfunc {print "hello kzfm"};

下のようなエラーが出る。

Not a CODE reference at test.pl line 1.

デバッガ動かしてみると先にTestfunc {print "hello kzfm"}がブロックとして評価されて、その後Testfunc {return $_[0]->();}が評価されるので$_[0]がコードブロックじゃないといわれているようだ。

プロトタイプで(&)ってことはコードブロック受け取ってるってことだよな。無名関数ってコードブロックか、、、あーなんとなくわかってきた気が。やっと{}がlispの括弧に見えてきた。

Gaucheの引数

GaucheはなにやらPerlとかPythonっぽくて楽しいですな。毎日Gaucheクックブックを一つは読むようにしてわからないとこを調べながらというスタイルで。(まだ3日だけど日付順に読んでる)

3.3 Schemeスクリプトを書く

いくつか簡単な例を示します。最初の例はUnixのcat(1)コマンドを模するものです。エラー処理やコマンドラインオプションの処理は行っていません。

#!/usr/bin/env gosh

(define (main args)   ;entry point
  (if (null? (cdr args))
...

(cdr args)ってことはperlの$0みたいに(car args)もプログラム自身の名前を返すのかも。

(define (main args)
(print "car:\t" (car args))
(print "pname:\t" *program-name*))

program-nameはスクリプトファイル名に束縛されるらしい。

$gosh test.scm
car:    test.scm
pname:  test.scm

SICPの訳

Amazonに訳が悪いと散々書かれていて、ちょっと躊躇したのだけど、実際買って読んでみたら特に訳がひどいと思うことはなかった。

あと、原著読めばとか書いてあるのは、原著読めばって書く前に原著読むだろうから、そもそも訳が悪いとかすらいわんだろう。結局何であんなに訳が悪いというコメント気にしたのか今となってはさっぱりわからん。日本語訳より原著で読んだほうがよくわかって良いというレビューがなかったのもいまとなってはフーンとか思う。Amazonの訳が悪いってのは何の裏返しなのかよく考えないといけないのかもと、いまさら学んだ。

訳が良かったらもっと早く飲み込めるかというと、そういうもんではない気もするし。

ProductName 計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン,ジュリー サスマン,ハロルド エイブルソン
ピアソンエデュケーション / ¥ 4,830 (2000-02)
通常24時間以内に発送

僕的には買って良かったと思える本の一つ。