Perl

YAML

「UseCode => 1」とかすると正規表現も使えるらしい。id:hideden++。

Catalyst::Plugin のベストプラクティス

http://d.hatena.ne.jp/tokuhirom/20080603/1212499955にも書いてあるように、Catalyst::Plugin::* 以下のクラスに書いてあるメソッドはすべて $c から呼べるようになります。Catalyst のキモイ面のひとつですが、回避方法はあります。 package Catalyst::Pl…

どうして Catalyst::Plugin を使ってはいけないのか?

http://d.hatena.ne.jp/tokuhirom/20080603/1212456790 http://itpro.nikkeibp.co.jp/article/COLUMN/20080513/301453/いまだに世間ではオブジェクト指向ですらない CGI が溢れている事実を見れば、2006年の Catalyst の記事なんて全然古くないと思います。2…

ニコニコ動画にうpされているセッション一覧

niconico記法初体験。英語の勉強、寝る前のBGMに最適です(笑)。 ‎Perl Is unDead‎ - Michael Schwern (‎Schwern‎) A Standard That Is Meant To Be Broken, 本当に! - Larry Wall yapcasia2008-dmaki Build Domain Specific Languages with Perl - cwest G…

Perl初心者

Perl 初心者の方ははてなダイアリーなんて見ないし、はてなブックマークなんて知らないし、CPAN なんてもちろん知らない。オライリーがあることも知らないし、ネットで Perl を検索すると・・・なページがたくさんヒットする。書店に行ってもあるのは PHP の…

Perl論議

昨日は id:tomyhero id:a666666 id:lapis25 id:dann id:vkgtaro さんとお会いしました。特に id:dann さんと id:vkgtaro さんと非常に突っ込んだお話ができました。とても楽しかったです。id:lapis25 さんは YAPC のために上京されたようで、みなさま大変お…

YAPC::Asia 2008 2日目

今日は6時に起きて前日のレポートを書きました。自宅から会場まで Door to Door で 1時間くらいかかるので、9:45 の一番初めのセッションに出るためには 8:45 に家を出ないといけません。すごい朝型!さきほど帰宅しましたが、もうすでに相当眠いです・・。 …

YAPC::Asia 2008 1日目

今年も Perl 最大のお祭りが日本にやってきました。今年の会場は東京工業大学大岡山キャンパスでした。天気がよく、緑が多くて広大なキャンパスで、学生時代に戻った気になりました。生協食堂の値段の安さにびっくり!学生に戻りたくなりましたよ。id:higepo…

配列と連想配列とリファレンス

配列と連想配列(ハッシュ)と配列リファレンスとハッシュリファレンスの書き方が全部異なるのが、Perl を異界の呪文に見せている原因だと思います。正直自分も時々忘れますし、全部 Array で済む PHP のほうが最近は好きです(PHP5の話、PHP4はたぶん一生使…

Catalyst アプリってなんでホットデプロイできないんだー!

Java でも最近はホットデプロイといって、プログラムを変更したあとでサーバーを再起動させずにプログラムの更新を反映させる機能がついています。PHP ではなにも考えずにファイルを上書き保存すれば、即座に反映されます。プログラムの開発というのは非常に…

YAPC::Asia 2008 に申し込みました

Perler のためのお祭り、YAPC::Asia に申し込みました。申込先はこちら。http://conferences.yapcasia.org/ya2008/2008/03/25 から申込が始まっています。まだの人はお早めにどうぞ。毎年人気ですぐチケットが売れてしまいます。今年は 2008/05/15 - 2008/05…

なんでみんな CLI にこだわるのかなぁ・・

極端に疎結合にしたければ、以下の3つを別々のアプリにすればいいのではないでしょうか? M REST・RPCハイブリッドな WebAPI として層を分ける。 V Ajax とか Flash で作られた動的サイト。 C M と V を橋渡しする。ログイン管理とか、画面遷移とか。 そうし…

MVC で「テーブル:モデル=1:1」が許されるのは小学生まで

本来、MVC の M はロジックを含み、C はイベントハンドリング、ウェブアプリケーションでいえば、画面遷移のみを担当します。Catalyst でスキーマローダーをつかって、MyApp::Model::XXXX を自動生成してしまうと、「テーブル:モデル=1:1」という COBOL…

DBIx::Class::Schema::Loader で動的に複数のデータベースにつなぐ方法

DBIx::Class::Schema::Loader を使うとデータベースのスキーマを自動的にモデルに変換してくれます。ここでは、さらに複数のデータベースのスキーマを動的に作成して、マルチベータベースを使うための方法を紹介します。DBIx::Class::Schema::Loader には ma…

LWP で https に GET したら落ちた!

題名のとおり、Segmentation Fault を吐いて Perl がお亡くなりになりました・・。インストールされているモジュールは以下のとおりです。 perl 5.8.8-7ubuntu3.1 openssl 0.9.8e-5ubuntu3.1 Crypt::SSLeay 0.51 非常に困ってしまって、無理やり perl のバー…

Catalyst 本(洋書)が出るらしい

http://www.packtpub.com/catalyst-perl-web-application/book Accelerating Perl Web Application Development Understand the Catalyst Framework and MVC architecture Build and test a site with Catalyst Detailed walkthroughs to create sample appl…

POEでプロキシサーバー

以下のサイトに POE で書かれたプロキシサーバーがあります。http://poe.perl.org/?POE_Cookbook/Web_Proxyそのまま使うと以下の不具合がありました。 日本語が化ける場合がある Google や Yahoo! が見れない それで手直したのが以下のコードです。 会社の同…

Perlって暗黙知が多すぎるよね

某SNSのコミュニティを見ていて思ったことです。Perlって省略やらシンタックスシュガーやらが多すぎて、初心者が覚えるにはものすごく敷居が高いです。自分も結構 Perl をやってきましたが、CPAN のソースは読めても、その辺のなんちゃら CGI のソースは全然…

Shibuya Perl Mongers テクニカルトーク #8

あとで書くと絶対忘れそうなので、聞きながら即興でメモしていました。以下ただのメモ書きです。 MogileFSのplugin拡張 どうやってプラグインを書くか ロギングとか CPANにあるからみんなもトライ!! Class::Component よくわからなかった・・ POD参照 なお…

PODカバレッジを取得する。

そのディレクトリにある lib 以下のモジュールを根こそぎ拾ってきて、PODカバレッジを表示します。そのままだと上手く取得できないモジュールがあったりしたので、ちょっとテクっています。みんなで使うライブラリなら、平均値で70%以上はとりたい欲しいと…

ある変数がオブジェクトがどうか調べる方法

Scalar::Util というモジュールを使うと、ある変数がオブジェクトなのか、ただの変数なのか調べることができます。 use Scalar::Util qw(blessed); # こんな長くて可読性の悪いコードが if ( ref($data) and grep( $_ ne ref( $data ), qw(ARRAY SCALAR HASH…

cygwin で超簡単 Catalyst

cpan2rpm を使ってパッケージ化してみました。cygwin 上で超お手軽に Catalyst を使いはじめられます。まず、以下のファイルを cygwin のホームディレクトリにダウンロードします。Task-Catalyst-2.0000-cygwin.tar.gzperl コマンドがインストールされていな…

楽しいPerlデバッガー

本日の社内勉強会の資料をせっかくなので公開します。http://akasaka.pm.org/PerlDebugging.pdfperl には gdb より使いやすい(かもしれない)強力なデバッガーがついています。知らないともったいないので、ぜひ使ってみてください。おまけで、先日のエント…

Catalyst-Plugin-CRUD リリース

0.20 をリリースしました。モデルとして DBIx::Class を使う場合、ページャが使えるようになりました。 MyApp/lib/MyApp/Controller/XXXX.pm order 句に、rows と page を追加すると、自動的にページャ対応になります。これは DBIx::Class の機能です。rows …

コードカバレッジ(3)

myapp_test.pl を使ったテストでは、パラメータを GET で(コマンドライン引数で)渡すことしかできません。セッションや POST を使いたい場合は(普通にブラウザからテストしたい場合は)、myapp_server.pl を使う必要があります。 $ perl -MDevel::Cover m…

CPANモジュールをRPM化する

CentOS, Fedora 系の Linux には、cpan2rpm というコマンドがあり、これを使 うことで、CPAN モジュールを RPM 化できるようです。依存モジュールを書くこ とで依存モジュールも一緒にインストールしてくれる素敵仕様です。コマンドのインストールは以下のよ…

コードカバレッジ(2)

前回は、リクエストごとのカバレッジを出しましたが、全リクエストのカバレッジを出す方法がわかったので紹介します。まず、Storable モジュールを ./blib/lib/Storable.pm にコピーする必要があるみたいです。 $ cd MyApp/script $ mkdir -p blib/lib $ cp …

コードカバレッジ

コードカバレッジというのは、ソースコードの何%が実行されたかという指標のことです。たとえば、以下のようなコードがあったら、 sub is_devide_100 { my $value = shift; if ($value % 100 == 0) { return 1; } else { return 0; } } &is_divide_100(1); …

Template-Toolkit で [ 1 .. N ] を使ってみる

以下は Template-Toolkit じゃなければ絶対できなそうな技ですが、ページャを作るときに重宝しそうです。 <ul> [% FOREACH i = [ 1 .. c.stash.max ] %] <li>[% i %]</li> [% END %] </ul> ちなみに、以下を定義しておくとテンプレートがどのように Perl のコードに変換されて…

Catalyst-Plugin-CRUD リリース

0.19 をリリースしました。一番目立つ修正は、削除時にレイヤーで確認ダイアログが出るようになったことです。JSAN の Widget::Dialog というのを使っています(IE7 からはポップアップはなるべく使わないほうが望ましいので)。あと Class::DBI と DBIx::Cl…