Plagger+Last.fm

last.fm-ripperPlaggerを組み合わせればiPodにいれてlast.fmを聴けるんじゃないかと思ったり。

そうすると、車の中でlast.fmチェック出来るのでかなり嬉しいかも。

ただpodcastingさせるだけだったらPlagger使う必要ないかな?じゃぁ曲リストをgmailなんかに送ればいいのか(これも意味あるのかわからん)

それともmixiでおすすめ曲のタグの探してきてそのラジヲを追っかけるとか、なんかそんなフィルター入れた使い方をするとおもしろいのかな?または、last.fmにこだわらないで適当にフィルターかけてjuno recordsの視聴mp3とってくるとかでもいいかも。

Catalyst::Plugin::TagCloud

CatalystのTagCloudのプラグイン欲しいナァってことで、Catalyst::Plugin::Markdownをまねして作ってみた。Catalyst::Plugin::Markdownのソースがさらりとしているので、この部分とアノ部分いじればOKね、、、みたいのはわかるんだけど、何故動くのかさっぱしわからん。

結局、コードを書くよりも出来たコードが何故動くのかを理解する(したふり?)にほとんどの時間を使ってしまった。

  • Class::Data::Inheritableって何ヨ?
  • NEXT.pmさっぱしわかんね。

ほとんど上の二つのお勉強だ。

プラグイン自体はCatalyst::Plugin::TagCloudという名前で、

package Catalyst::Plugin::TagCloud;

use strict;
use warnings;
use base 'Class::Data::Inheritable';
use HTML::TagCloud;

our $VERSION = '0.01';

__PACKAGE__->mk_classdata('tagcloud');
__PACKAGE__->tagcloud( HTML::TagCloud->new );

1;

とかやっておいて、コントローラーに

use Catalyst qw/-Debug ConfigLoader Static::Simple TagCloud/;

とプラグインを追加しておけば、$c->tagcloudはHTML::TagCloudのインスタンスなので

sub default : Private {
    my ( $self, $c ) = @_;
    $c->tagcloud->add("tag1","url1",10);
    $c->tagcloud->add("tag2","url2",15);
    $c->tagcloud->add("tag3","url3",50);
    my $html = $c->tagcloud->html_and_css(10);
    # Hello TagCloud
    $c->response->body( $html );
}

と書けばめでたくタグクラウドが出力されている。

で、Class::Data::Inheritableって何ヨ?ってことだがココみてなんとなく納得した気になったり。でも、ちゃんとわかってないのかも、、、、なんで常にインスタンスが返ってくるのか実はよくわからん。 HTML::TagCloud->newってなんどもnewされないのは何故だろうか。

sub setup {
    my $c = shift;

$c->config->{markdown}->{empty_element_suffix} ||= '';
    $c->config->{markdown}->{tab_width} ||= '';

return $c->NEXT::setup(@_);
};

1;

で、Catalyst::Plugin::Markdownにはさらにsetupっていうメソッドがあって、NEXT.pmが使われている。これはココのメルマガアーカイブでかなり納得したんだけれども、$c->config->{markdown}->{}がどうしてmy $html = $c->markdown->markdown($text);に関わってくるのかさっぱりなままだ。

結局今回のプラグインだとnewするときにlevelsの設定が出来ないので常にデフォルトの24であんま使えん。

my $cloud = HTML::TagCloud->new(levels=>10);
みたいなのを$c->config->{tagcloud}->{levels}みたいなのをnewするときに指定してやりたいが、なんかいまいち。というより、そもそもClass::Data::Inheritable継承する必要がないような気がしてきた。

もうちょい、他のプラグイン読んだりしてちゃんと理解しないとあかんっぽい。勢いとまねまねで初めて書いたプラグインはやはりダメダメだったヨ。

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ってのもあったっけ。