02042006 Perl
Perl Best Practices届いたので読む。
サイン本うらやましいっす。
02042006 Perl
Perl Best Practices届いたので読む。
サイン本うらやましいっす。
31032006 東京
潤という新潟ラーメンの店にいったら、改装中で休み。向かいにあった店にはいった。汐ラーメン。
フライパンで焦げ目をつけた豚トロっぽいのがいい感じだったが、全体的にあっさりというか塩がたっていた感じが。
31032006 Catalyst
この前書いたのイマイチ かつYAPCのCatalyst話参考になったので、早速書き直してみた。
__PACKAGE__->config( tagcloud =>{ levels => 10, limit => 3 } );
な感じでレベルとリミット設定できるようにした。
でも、実際に使ってみると、
sub default : Private { my ( $self, $c ) = @_; my $tags = [ {tag=>"tag1",url=>"url1",count=>5}, {tag=>"tag2",url=>"url2",count=>15}, {tag=>"tag3",url=>"url3",count=>8}, {tag=>"tag4",url=>"url4",count=>20}, {tag=>"tag5",url=>"url5",count=>3}]; my $html = $c->create_tagcloud($tags,"html_and_css"); # Hello World $c->response->body( $html ); }
みたいに配列のリファレンスを用意しないといけないのが駄目ゲ?セーフゲ?わからん。
な感じで、やりかけだけど、ココから落とせます。もっと、小洒落たやりかたがあれば指摘してもらえると助かります。
XSの話とCatalyst関連の話題が面白かった。XSのサンプルは後でいじってみる。科学技術計算系のゴリゴリやるやつはやっぱCとか書けるようにしといたほうが幅が出ていいのかナァなんて思っているのでこれをきっかけに少し頑張ってみるかな。
Catalystは最近プラグインつくってみたかったりするので今日の話はなるほどなところが多くて参考になった。
Larry WallのKeynoteは面白かったが、深すぎてついていけないところが多々あった。
30032006 perl
そして、気になるといえばYAPC::Asia 2006 Tokyoも気になる。面子が、、、、
豪華すぎ
とってもとっても行きたいが平日なんだよね。
でYAPCの読みなんだけど、「ヤップクニセンロク」って勝手によんでるんだけどホントはどう読むのが正しいのだろか?
追記060330
ヤップシーって読むそうです。
あとKwikiをケーウィキとよんでたんだけどクウィキって読むみたい。
29032006 Perl
今日明日と仕事を放棄してYAPC行ってます。面子がね、やっぱヤバイし、実際中身も濃かったヨ。
色々メモッたけど、をを!と思ったのが、mixiってLAMPなのねってことと、高橋メソッドのプレゼンって、目にくるねということと、ダミアンの話は凄く面白くて、特に印象に残ったのはモジュールはh2xsでなくModule::Starter つかって書き始めましょうと正規表現にはxmsつけましょうって話
あとで試してみよう。
Larry Wallのサイン入りラクダ本はあったけど、Damian Conwayサイン入りベストプラクティス本はなかった。
Amazonで早速購入した。
last.fm-ripperとPlaggerを組み合わせればiPodにいれてlast.fmを聴けるんじゃないかと思ったり。
そうすると、車の中でlast.fmチェック出来るのでかなり嬉しいかも。
ただpodcastingさせるだけだったらPlagger使う必要ないかな?じゃぁ曲リストをgmailなんかに送ればいいのか(これも意味あるのかわからん)
それともmixiでおすすめ曲のタグの探してきてそのラジヲを追っかけるとか、なんかそんなフィルター入れた使い方をするとおもしろいのかな?または、last.fmにこだわらないで適当にフィルターかけてjuno recordsの視聴mp3とってくるとかでもいいかも。
27032006 Catalyst
CatalystのTagCloudのプラグイン欲しいナァってことで、Catalyst::Plugin::Markdownをまねして作ってみた。Catalyst::Plugin::Markdownのソースがさらりとしているので、この部分とアノ部分いじればOKね、、、みたいのはわかるんだけど、何故動くのかさっぱしわからん。
結局、コードを書くよりも出来たコードが何故動くのかを理解する(したふり?)にほとんどの時間を使ってしまった。
ほとんど上の二つのお勉強だ。
プラグイン自体は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であんま使えん。
みたいなのを$c->config->{tagcloud}->{levels}みたいなのをnewするときに指定してやりたいが、なんかいまいち。というより、そもそもClass::Data::Inheritable継承する必要がないような気がしてきた。my $cloud = HTML::TagCloud->new(levels=>10);
もうちょい、他のプラグイン読んだりしてちゃんと理解しないとあかんっぽい。勢いとまねまねで初めて書いたプラグインはやはりダメダメだったヨ。