CatalystでMarkdown & flavour

面白そうなCatalystのプラグインを見つけたので後で試す。

Catalystでmarkdown記法で書かれたテキストをHTMLに変換するプラグイン。このblosxomではMarkdown使いまくりなのでCatalystで作った何かに、今までのエントリ移すときとか楽そう。あと、Kwiki::Markdownってのもある。普段PukiWiki使ってるんだけど記法が混在すると混乱するからKwikiに変更しようかな。WYSIWYGなエディタもあるので、便利そうだし、タグもつけられるし。

Catalystでblosxomのフレーバーなことができるプラグイン。htmlとかrssとかURLの最後の.xxxでテンプレートを切り替えられるのでCatalystでその手の機能が欲しい場合には。というか、そういう場面って結構あるはず。

桜が少し咲いてきた

夕方、はなと散歩がてら桜チェックを入れてきた。先週はまだつぼみだったのに、今日は結構咲いてきてた。

sakura

今週末には満開かな。

マッシュアップって

やっぱ普通にマッシュアップて言われると、こういうのとかこれのA.2みたいなイメージを持つが、IT系だとちょっと定義が違うのね。

マッシュアップ--仮想空間と現実をつなぐ地図 - CNET Japan

テクノロジーの世界では、複数の情報源から提供されるコンテンツを組み合わせているにもかかわらず、ひとつのサービスのように利用することのできるウェブサイトまたはアプリケーションを指す。

こっちの定義だとよくわかる。NCBIのpubmedだってタイトルにアクセスすんのに、javascriptからだとへんな検索しないといけないし、LWPなんかでGETしてきたhtmlはXML::DOMで構文解析できないから正規表現使ってみたりとか、なんかと組み合わせたいと思っても色々やらなきゃいけない裏方仕事が多すぎ。eutil使うにしても、サービスとかとしてなんも考えんで使うには使用条件厳しいかなと思うし。

だから、既存のバイオインフォとかケモインフォのデータベースがもうちょい、AWS,del.icoi.us,bloglinesみたいな使いやすいAPIを用意してくれるだけでも、すごく研究の幅が広がるのにナァなんて思ったりはするんだよねぇ。

でも、マッシュアップて言われるとそういう泥臭いとこも含めて僕はマッシュアップなのかなぁって思ってしまうんだよね。だって、再利用されることを意識しながら曲書くひとっておらんだろうから。

と、ここまで書いていてちゃんと認識できたのでOK。つまり感じていた違和感ってここなのね。

支那そば家 毎度!

昨夜久々に、喜八郎いったら売り切れじまいだった。いつも昼にしかいかないからわからんかったけど、夜は結構はやいのかな?

そんな感じで、今日はなんか無性にラーメン食べたくなったのと、小春日和でちょうど風が気持ちよかったので、結構遠いが頑張ってチャリで毎度まで行ってみることにした。

開店と同時に着いたのに、すでに行列ナ感じ。人気あるねぇ。しばし待ってから醤油ラーメン注文

醤油らーめん

うまみと塩加減のバランスが毎度ながら絶妙。加えて自家製麺。スープに絡むっていうわけではないんだけど、なぜだか癖になる喉ごし。

支那そば家 毎度!

/usr/bin/cpan

CPAN経由でモジュールインストールする場合

perl -MCPAN -e 'install OK::Bokujo'

ってやってたけど、/usr/bin/cpanってコマンドが存在することを知った。(perl5.8.3/FC1だけど)

中身はperlスクリプトなんだけども、引数なしで実行するとcpanシェルが立ち上がるし、-iオプションとれば上と同様にインストールするみたいだ。

cpan -i OK::Bokujo

でOKなのね、、、全然知らんかったわ。

マイミク0だとアカウント消される

招待してくれたヒトが、mixiおもろな。とかいってやめちゃったで、ある日こんなメッセージが。

mixi 0

検索エンジンにひっかからないサイトは存在意義がないばりに、マイミクのいないユーザーは存在意義がないということか。

僕もmixiほとんど使ってないからあれなんだけども。メタモやジャズトロのコミュとかは好きだからな、誰か誘うか。

Mash upというかresamplingじゃないか?

なる!とか思いつつも、これってサンプリングなだけでは?て思ったり。

[Bioinformatics]統合データベースでもなく、データのjoinでもなく、Mash upする - ichan::Weblog (2006-03-22)

そもそも統合データベースもデータのjoinも、複数のデータベースの情報を組み合せて、新しい生物学的な情報に辿りつきたいという話から生じているはず。それを表す言葉として、Web 2.0 で良く使われている用語 Mash up という単語を使うことを流行らせたい。マッシュアップとは、そもそも2つの音楽をDJが混ぜ合せて、新しいひとつの曲を作りだすというクリエイティブな行為のこと。

二つの曲を混ぜても、上モノちょこっといじったり、ベースライン微妙に付け替えたりとか、盛り上がり以外ミニマルっぽくしてみたりとかはどうかな?クリエィティブっていいうよりはむしろダサげ。

ロングミックスぶちかましてみたり、フミヤチックに原型をとどめぬほど混ぜてみてプレイ全体としてひとつの曲にしてみたりとか竹村延和みたいに紡ぐとかじゃないと面白くないような気がするのは、僕だけなのか?

だから、どっちかっていうとハイファナチックなイメージ

Remixも曲つなげんのもある曲の、(自分にとって)一番クル部分が強調されていればドップリドープに最強なわけで、結局提供者の意図を外れたところに本質があったりするんじゃないかナァと思ったりするわけですヨ。

あーそういえばWJってのもあったっけ。

ひだなん

ARAIで滑ればいつものように、ホテルのお風呂でマッタリしてから、ひだなんで蕎麦食って帰る。ARAIの風呂は結構とるだけあって、タオルもついてるし、ミストサウナ(キモチイイ)もあるしで、リフレッシュ度は高い。

ひだなんでは、天ざる。

天ざる 天ざる

水のきりがあまかったせいで、ちょっと水っぽかったのと、天ぷらに(ついているだろうと勝手に)期待していたふきのとうがなかったので、ちょっとガックシ。蕨はついてたけど。

店の外で売ってたキノコがうまそうだったのでなやんだが結局買わず。代わりに松代PAで雪ノ下ほうれん草買った。

今週末ははなと一緒に蕨でも摘みにいくかな。

ひだなん

Factory Method ( デザパタPerl )

Factory Methodはちゃんと理解するのにちょっと時間がかかった。

  • インスタンスの生成がTemplate Methodで抽象化されている
  • つまりインスタンス化をサブクラスに任せる

というところがポイントだが、ここの部分は抽象メソッドでなくても、デフォルトのメソッドを用意してもいいし、エラー吐くようにしてもいいらしい。ココなど詳しいが、

naoyaのはてなダイアリー - prototype.js でデザインパターン - Factory Method

クライアントで利用する主人公であるところのインスタンスの生成ロジックを Factory の中に抽象化してやって、具体的な new によるインスタンス生成の束縛からクラスを解放してやりましょう、ということになります。

つまり、コンストラクトするメソッドを適当な方法で実際のクラスと切り離すという理解でいいのかな。

CPAN探してみたらClass::Factory というモジュールを見つけたので、これを使ってデザパタ本のサンプルを書いてみた。

まず、FactoryクラスはClass::Factoryを使うので特に書く必要はない(モジュールのインストールだけ)。で、IDCardFactoryクラスはこんな風に書くだけでラクチン。

package IDCardFactory;
use strict;
use base qw(Class::Factory);

__PACKAGE__->register_factory_type( IDCard => 'IDCard' );

1;

Productクラスもサンプルの通り、何はともあれuse出来るもの

package Product;
use strict;

sub use { die; }

1;

で、実際のプロダクトの生成メソッドはinitなのでここをちょっと書く(といってもサンプルのnewとほとんど変わらんが)

package IDCard;
use strict;
use base qw(Product);

sub init {
    my ( $self, $owner) = @_;
    $self->{owner} = $owner;
    print "$self->{owner}のカードを作ります。\n";
    return $self;
}

sub use {
    my $self = shift;
    print "$self->{owner}のカードを使います。\n";
}

sub getowner {
    my $self = shift;
    return $self->{owner};
}

1;

さてメイン

#!/usr/bin/perl
BEGIN { unshift(@INC, "./"); }

use strict;
use IDCardFactory;

my $card1 = IDCardFactory->new('IDCard','kzfm');
my $card2 = IDCardFactory->new('IDCard','愛犬はな');
my $card3 = IDCardFactory->new('IDCard','U隊長');
my $card4 = IDCardFactory->new('IDCard','新入りゆき');

$card1->use;
$card2->use;
$card3->use;
$card4->use;

で、実行結果

$./main.pl 
kzfmのカードを作ります。
愛犬はなのカードを作ります。
U隊長のカードを作ります。
新入りゆきのカードを作ります。
kzfmのカードを使います。
愛犬はなのカードを使います。
U隊長のカードを使います。
新入りゆきのカードを使います。

これだと、ファクトリーのインスタンスが作られないのがサンプルと違うとこかな。あとはClass::Factoryのメソッドregister_factory_typeで幾つかのプロダクトを登録できるので、IDCardFactoryではなくてCardFactoryにして、VISA,Master,Nojima,Kojima,Yamadaカードみたいに複数のカードを登録しとくのが正しい使い方なのかな。

このエントリは結城浩さんの本と、それに載っているサンプルをPerlで書いた例をみながら考えたことをメモってます。あとは、はてなの伊藤さんのjavascriptでの例も参考にしてます。 間違いの指摘とか、もっといいやり方教授してくれたらとても嬉しいゾ。

ProductName 増補改訂版Java言語で学ぶデザインパターン入門
結城 浩
ソフトバンククリエイティブ / 3990円 ( 2004-06-19 )


閉まる電車に飛び乗ったら女性専用車両だった!

大阪-新大阪の一駅だけだったけど、結構耐えがたい雰囲気だったね!

っていうか3両目って微妙な位置じゃないか?今度から無意味に飛び乗るのやめよう。

ん?!、、、

これもまた、JRの陰謀なのか(飛び乗り防止の為の)

もしかして常識?