Advent Calendar
読んで気になったところをメモっていくエントリ
適当に追記されていくはず。
- 無名スカラー変数のリファレンス
- Making sparklines with Chart::Clicker
- Primed for Christmas
- Math::Prime::TiedArrayってのがある
- ファイルテスト演算子をつかいまくる
- _というのがある。5.10からはテスト演算子を一度に複数指定できる
- SQLiteではファイル名を指定しない場合、ファイルを作らずオンメモリで処理できるので、テストコードを書く際はファイルを指定しない
- Carp::Clan の場合ですと、デフォルトでメッセージとファイル名、行番号だけで無く、どの package のどのサブルーチン内でエラーが起きたかも分かります。
- 関数をラップする
- Running in a filtered wonderland
- Xmas sort of title
- Catalyst::View::Graphics::Primitive
- Catalyst::Controller::WrapCGI
- Catalyst AJAX With MochiKit
Lingua::JA::TFIDFとCatalyst::Model::Estraierで類似エントリを探す
こんな感じで過去に書いた類似のエントリ出すようにしたい。
TF-IDFで特徴語を抜き出す。
my $calc = Lingua::JA::TFIDF->new;
my $result = $calc->tfidf($text);
my $query_keywords = "[SIMILAR] ";
for (@{$result->list(5)}) {
my($key,$val) = each(%$_);
$query_keywords .= "WITH " . int($val) . " $key ";
}
とやってクエリをモデルのほうに渡せばOKっぽいんだけど、Hyper EstraierのほうをP2Pで動かしてないんだったヨ。
イントラでクローラはしらせているのでじゃぁperlバインディングからでもと思ったが、ちゃんと入ってないっぽくてこけてる。
そのうちP2P対応させようということで、途中までのメモ。
DrkcoreにTypePad Connectのコメント機能導入
TypePad Connect Betaを入れた。
コメントっていうのは結局URIに対するコメントなんだから(はてなブックマークなんかはそれが顕著にでている気がする)、それを担当する外部のサービスはなんか出るんだろうなぁなんて漠然と考えていたけど、実際でてみるとなかなかいい感じ。
あとは、コメントサービスを押さえたとしてどういったメリットがあるんだろうか的なあたりに結構興味があったりしますな。トラックバックよりは緩いつながりに関する情報が手に入るってことなのかな。
MojoMojo (CatalystベースのWiki)を入れてみた
Catalyst+jQuery+Flotの組み合わせ
Catalyst::View::JSONとjQueryの組み合わせでJSONデータのやりとりは簡単にできるのでたまにグラフを書きたくなったらFlotを使うとよさげな感じ
あんま凝ったことはできないのでちょっとした折れ線グラフかヒストグラムな用途
tickに数字以外のものを表示させるメモ
data: [[0,2],[1,4],[2,6]]
ticks: [[0, "red"], [1, "brue"], [2, "pink"]]
という感じで xの値と対応させたい文字列を合わせてticksに指定する。
catalystのres->bodyにファイルハンドルを渡す
Catalyst::Plugin::Static::Simpleで静的にサーブしているpdfとかの文書ファイルに(ベーシックとか)なんか適当な認証をかけたくて悩んでた。
そういうファイルはApacheとかに任せれば解決するんだろうけど、残念ながらApache動かせないというシチュエーション。
散々悩んだあげく別にStatic::Simple使わなくていいじゃんということに気づいてしまい、おもむろにStatic::Simpleのソースを読み始めた。
どうせFile::Slurpでもしてbodyに出力してるんだろうなぁと思ってたんだけど違った。
if ( Catalyst->VERSION le '5.33' ) {
# old File::Slurp method
my $content = File::Slurp::read_file( $full_path );
$c->res->body( $content );
}
else {
# new method, pass an IO::File object to body
my $fh = IO::File->new( $full_path, 'r' );
if ( defined $fh ) {
binmode $fh;
$c->res->body( $fh );
}
else {
Catalyst::Exception->throw(
message => "Unable to open $full_path for reading" );
}
}
最近のバージョンはファイルハンドルをres->bodyに渡せるのか。IO::Allとかもいけんのかな?
Catalystの7章
最近Jemplateを使っているので、RESTとJemplateでAjaxの章をもう一度やった。
サンプルは一カ所修正。
#__PACKAGE__->config->{serialize}{default} = 'JSON';
__PACKAGE__->config->{default} = 'text/x-json';
Catalyst: Accelerating Perl Web Application DevelopmentJonathan Rockway
Packt Publishing / ¥ 4,376 ()
通常24時間以内に発送
template toolkit mode
最近また、Catalystで色々作っているので、昔のエントリを探してTT modeの設定をした。
;;tt
(autoload 'html-helper-mode "html-helper-mode" "Yay HTML" t)
(setq auto-mode-alist
(cons
'("\\.html$" . html-helper-mode) auto-mode-alist))
(setq auto-mode-alist
(cons
'("\\.tt2$" . html-helper-mode) auto-mode-alist))
(require 'html-tt)
(add-hook 'html-helper-mode-hook 'html-tt-load-hook)
(add-hook 'html-helper-mode-hook '(lambda () (font-lock-mode 1)))
そして、Jonathan Rockwayのトークは聴いておくべきだったかなとスライドみながら思った。
catalystのE-Bookは本を買うと安く買えたので、ついでに買っておいたけど、本を見るまでもないときなんかに調べものができたりとか、検索できるので意外と重宝している。
Caatalystの6章と7章読んだ
なんとなく今日も読んでいる。
- 6章は、独自のモデルを作ろう
- 7章はRESTとAjax
Catalyst: Accelerating Perl Web Application DevelopmentJonathan Rockway
Packt Publishing / ¥ 5,497 ()
通常24時間以内に発送
6章はファイルシステムをCatalystのモデルにするサンプルだが、Catalyst::Model::Adaptorを知ってしまうとあまりそそられなかった。
7章はJemplateが楽しそうなんだけど、ググっても、実際に使われているという例が出てこないのが気になった。なんかデメリットでもあるんだろうか?
Catalyst本の第5章を読んだ
久しぶりに。
Catalyst: Accelerating Perl Web Application DevelopmentJonathan Rockway
Packt Publishing / ¥ 5,497 ()
通常24時間以内に発送
- Devel::REPLなんていうモジュールがあんのか。しかもコマンドがre.plでちょっと洒落てる。
- add_unique_constraintを使うとユニークキーでfindがかけられて便利になる。
- Chainedアトリビュートの使い方を理解した。



