perl

DBIx::Skinny::Schema::Loader 0.24 released

http://search.cpan.org/~nekoya/DBIx-Skinny-Schema-Loader-0.24/lib/DBIx/Skinny/Schema/Loader.pm 久々のリリースです。例によって自分では全くコードを書かずに、頂いたPull Requestを取り込むだけの簡単なお仕事です。nyo-kichiさんありがとうございま…

CentOS5系のsystem Perlでlocal::lib環境を作る方法

今更感がありすぎる古いネタでもブログに上げてしまおうキャンペーン実施中。今ならperlbrewを使うのが圧倒的にお勧めなのですが、system Perl(OSに標準で付いてくるPerl)の出番も完全に無くなるわけでもないかなーと。例えば先日、CloudForecastをperlbre…

DBIx::Skinny::Schema::Loader 0.16 released

http://search.cpan.org/~nekoya/DBIx-Skinny-Schema-Loader-0.16/lib/DBIx/Skinny/Schema/Loader.pm YAPC楽しいけど、自分の無力さにめげそうになるよねー、ということで少しでも抵抗しようと思って講堂前で書きました。make_schema_atにignore_rulesオプシ…

DBIx::Skinny::Schema::Loader 0.15 released

http://search.cpan.org/~nekoya/DBIx-Skinny-Schema-Loader-0.15/lib/DBIx/Skinny/Schema/Loader.pm 今まで、Loaderのprimary keyに関する動作は DB上でpkが指定されていればそれを使う idというカラムがあればpkとみなす いずれにも合致しなければエラー …

Test::More 0.95_01以降ではsubtest毎にdone_testingって書かなくてもOK

昨日Twitterにふらっと投げたらreply付いたので、せっかくだからブログに書いておく。何気なくTest::MoreのPodを読んでいると、 This adds an implicit done_testing() to the end of your subtest. The following two subtests are equivalent: http://sear…

Path::AttrRouterのControllerをextendsする時はBEGINで(って書いたけどやっぱり '-extends' で)

Path::AttrRouterを使うのに、 package MyController; use Any::Moose; extends 'Path::AttrRouter::Controller'; sub index :Path Args(0) { } 1; みたいに書くと「Error while loading app.psgi: Invalid CODE attributes:」とか怒られてどうすればいいん…

Moose, Mouse, Class::Accessor::Fastのアクセサでベンチマーク取ってみた

「馬鹿にできないアクセサのオーバーヘッド - Craftworks Tech Blog - Branch」にもあるように、Mooseのアクセサによるオーバーヘッドは無視するにはちょっと大きいという印象があります。じゃあ、Mouseだったらどうなんだろうとか、自分が使うサーバのスペ…

Casual Perl Talks#1でLTしてきました

DBIx::Skinnyと仲間たちView more presentations from Ryo Miyake. http://perl-casual.org/2009/10/1127casual-perl-talks1.html を見て10分のLTだと思って資料用意したら5分LTだったよ! 後から出たタイムテーブルには5分って書いてあるのに、古い案内見て…

MeCab最新版(0.98)ではText::MeCabのtestが通らないのでMeCab0.96にした

x86_64環境でText::MeCabがビルド出来ない、ってネタはググるとわりと出てくるんだけど、そうでない状況に出くわしたので記録として。MeCab本体は最新版の0.98、Text::MeCabはCPANにある0.20007でテスト。OSはCentOS5.4(x86_64)です。まず、Makefile.PLは以…

DBIx::Skinny::InflateColumn::DateTimeを書きました

nekoya's p5-dbix-skinny-inflatecolumn-datetime at master - GitHub SkinnyでSchemaを定義する時に、 package MyApp::Schema; use DBIx::Skinny::Schema; use DBIx::Skinny::InflateColumn::DateTime; install_table books => schema { pk 'id'; columns q…

Mouseの挙動が不可解なように思う件 → 解決

(10/19追記)ここで述べている問題は、Data::Util 0.53にて修正されました。同じ現象が発生した場合はData::Utilのバージョンを上げてください。(10/21さらに追記)と思ったらaroundで落ちる現象を確認。実はこれPerlコアのバグだったらしい。対策は可能ら…

DBIx::Skinny::Schema::Loaderをgithubに上げました

(10/07追記)Skinny界のpgsql番長、id:sfujiwaraさんから早速PostgreSQL対応パッチを頂きました。すばらしすDBIx::Skinnyを使うのに、install_table書くのが面倒なので作りました。 nekoya's p5-dbix-skinny-schema-loader at master - GitHub 使い方とかは…

Moose/Mouseのregister_implementationで短縮名を登録する時のファイル配置ってどうするんだろ

Moose::Cookbook::Meta::Recipe3みたいに、自前のTraitを作って、それをregister_implementationで短縮名でアクセス可能にする場合って、 MyApp::Meta::Attribute::Trait::XXXX Moose::Meta::Attribute::Custom::Trait::XXXX のファイルはどういう配置にする…

Class::Data::Inheritable使うかメソッド定義するか

use Any::Moose; extends any_moose('::Object'), 'Class::Data::Inheritable'; __PACKAGE__->mk_classdata('hoge' => 'fuga'); みたいに書いてるコードがあるんだけど、デフォルト値を動的に決めたい場合は、 sub hoge { 'fuga' } みたいにメソッド定義して…

Ark::ActionClass::RequestTokenをgithubに上げました

nekoya's p5-ark-actionclass-requesttoken at master - GitHub Catalyst::Controller::RequestToken的なことをするモジュールが無かったので書きました。基本的な使い方はPod見れば分かるはず。まぁcreate_tokenして、validate_tokenするだけですよ。config…

YAPC::Asia2009に行ってきました

去年はチケットを購入しながらも仕事で行けなかったのですが、ついにリベンジ! 前夜祭となる出張Yokohama.pmから3daysフル参加してきました。LLTV 〜 PHPcon 〜 YAPCとイベントが続きすぎて、体力の回復が全く追い付かんとです…個別のセッションを全てエン…

ArkでSessionを使う時はCatalystと書き方が違うので注意

Catalyst my $val = $c->session->{ $key }; $c->session->{ $key } = $new_val; delete $c->session->{ $key }; Ark my $val = $c->session->get($key); $c->session->set($key, $new_val); $c->session->remove($key); Catalystと同じやり方で書くと、Sess…

Ark::Plugin::Authentication::Store::DBIx::Skinny書いたよ

ArkのDBIx::Skinny用認証プラグインをgithubに上げました。Ark本体をforkしてpull request上げた方がいいかなとも思ったけど、ひとまず単体で。 http://github.com/nekoya/p5-ark-plugin-authentication-store-dbix-skinny/tree/master DBIx::Skinnyはgithub…

HTTP::Engine::Middleware::Staticのdocrootにシンボリックリンクを渡してはいけない

Arkでstaticなファイルが表示できないことがあるので何かと思ったら、HTTP::Engine::Middleware::Staticのdocrootにシンボリックリンクを渡していたのが原因でした。CPAN最新版のHTTP::Engine::Middleware 0.17で確認したけど、githubの最新版でも該当部分は…

ここ数日のDBIx::Skinny

Wassrでつぶやいてたら取り込まれたり、githubのcollaboratorに入れてもらったのでpushしたりしたことのまとめ。 ■$row->setの引数がhashからhashrefに変わった before $row->set($key => $val); 元々は単一のkeyでsetするのが基本、ということでhashだった…

DBIx::SkinnyでFormValidator::Simple::Plugin::DBIC::Uniqueを使う

Skinny使い始めて、FV::SimpleでDBIC::Uniqueなバリデーションは自分でPlugin書かないとダメかと思ったけど、自分の使い方だとそのままいけたのでメモっとく。FV::Simple::Plugin::DBIC::Uniqueは指定のクラスがDBIC互換のcountメソッドを持っていれば問題な…

Test::Deep0.103以降を入れてると、Test::Declareを使ったmake testが通らない

僕の手元でTest::DeclareとかDBIx::Skinnyをmake testすると、 Subroutine Test::Declare::isa redefined at /opt/local/lib/perl5/5.8.9/Exporter.pm line 67. at /Users/ryo/perl5/lib/perl5/Test/Deep.pm line 30とか怒られます。proveで直接テスト走らせ…

DBIx::SKinnyでクエリログを見る方法

最近ちょいちょい触り始めてます。DBICは確かに便利だけど、もっと気楽にいいように手を入れられるORマッパが欲しいとも思ってたので、Skinnyの薄い設計はうってつけ。 nekokak's p5-dbix-skinny at master - GitHub これをどうラッピングして料理するかで右…

WWW::MechanizeでShift-JISとかのフォームを送信する方法

WWW::Mechanizeはいろんなモジュールがベースになってて、コードを追うのが大変。LWP::UserAgentとかそれ以前の時代を知っていれば、どのモジュールが何を持ってるか分かっていいんだろうけど、いきなりWWW::Mechanizeから入ってしまうと厳しいっすね。まぁ…

Arkインストールメモ

typesterさん作のCatalyst風Perlフレームワーク「Ark」が魅力的。ちょっと触ってみたら、CGIでもかなり高速に動作してくれて、気軽に使えそうな素敵フレームワークです。Text::MicroTemplateの最新版でが使えなくなった関係でテストが通らなくなってたんだけ…

CatalystのChainedアクションとExceptionの関係

一度エントリを書き損ねると更新が止まる悪癖… sub prepare : PathPart('') Chained('/root') CaptureArgs(1) { my ($self, $c, $id) = @_; $c->stash->{ item } = $c->model('Service::Items')->find($id) or MyApp::Exception->throw('item not found'); #…

Yokohama.pm#4に行ってきた

発表資料はきっと全部アップされるだろうし、 今日は Yokohama.pm の日です - a geek という素晴らしいまとめがあるので、メモはなし。上記まとめを見ながら改めて感想などつらつらとつづろうかと。 ■QudoxSkinny(id:nekokak) DBIx::Skinnyの詳細は前回の発…

mod_perl2.0.4のstaticビルドに失敗

今までyumで入るのをそのまま使うか、ビルドする時も.soにしてたんだけど、mod_perl専用で動かすならApacheに静的に組み込んでみようと思ってやってみました。うまく行かなかったんだけど、記録として。 mod_perl: Installing mod_perl 2.0 このへんを見なが…

CatalystでFormValidator::SimpleをPluginにせずに使う

Catalyst::Plugin::FormValidator::Simpleは使ってもいいような空気に見えるけど、試しにPluginから外してみる。それとも皆C::P::FV::S::Autoなの? あっちは確かにPluginでないと意味がない。MyApp::Controller::Base use FormValidator::Simple; sub valid…

「モダンPerl入門」が届いた

案の定Amazonの在庫は無くなってしまった「モダンPerl入門」が届きました。まだちょっと覗いた程度ですが、これは素晴らしい一冊。僕がPerlに再入門したのは一年ちょっと前で、近代的なPerlのやり方を知るのはなかなか難しかったのを憶えてます。検索しても…