perl

mod_perl2 の $r->path_info 等のクセ

Apache2::RequestRec#path_info() 等を触っててもどうも安定しないというか望み通りのものが得られないなぁと思っていたんで調べてみました*1。まずは Apache2::RequestRec のリファレンスから。 path_info Get/set the PATH_INFO, what is left in the path…

Encode 2.18 で $encoding->decode(undef) でセグフォった

use Encode; foreach my $enc (qw( cp932 euc-jp UTF-8 utf8 )) { warn $enc; find_encoding($enc)->decode(undef) } とかやると UTF-8, utf8 でセグフォりました。encode() でも。utf8 系以外は大丈夫ぽい。 こんなデータを渡す方がもちろん悪いんですが。…

DBIx::Simple で UTF8Columns したい

しつこく DBIx::Simple を使っていきますが,使っていて困ることの一つは DB から取得したデータが octet stream のままであること。もちろんモデルクラス(DB へのアクセサ)で面倒をみてやればいいのですが,DBIC とかモダンなものだと DBIx::Class::UTF8C…

DBI 自身の TRACE

あけましておめでとうございます。 新年も RT にあがっているパッチをあてながら DBIx::Simple 1.26 を使っています*1。以前から書いてるとおり DBIx::Simple + SQL::Abstract は小粋ですばらしいんですが,吐いた SQL 文を調べる機能がありません。どうせ D…

SpeedyCGI のプロセスの癖

以前作ったモジュール(SpeedyCGI と module reload - daily dayflower)でたまにモジュールファイルの変更を検知できないことがあったんですが,理由がわかりました。SpeedyCGI の挙動をおさらいすると, frontend が backend を探す。いればよし backend …

テンポラリファイル

id:shag さんの日記(Perl での secure な一時ファイルの取り扱い - shag の日記, IO::File::new_tmpfile() - shag の日記)と perlfaq5 をベースに私家版まとめ。 テンポラリファイルの作り方 3 選 IO::File の new_tmpfile(割と昔からあるらしい?) open…

Awesome Template Engine / Framework ぽいの

今日の日記はネタなのでマジレス禁止 (;-PAwesome Template Engine とか Awesome Framework*1 とか読むと PHP ってのはテンプレートエンジンを内包してるのが強みだなぁと思うわけです。Code Igniter のドキュメントにもそんな感じのことが書いてあったよう…

SpeedyCGI と module reload

SpeedyCGI で遊んでました。mod_perl ほど設定に煩わされることもないし,ライブラリパスの局所化も容易なんで実験用としてはなかなか楽しいです。ですけど, How can I make sure speedy restarts when I edit a perl library used by the CGI?Do a touch o…

O/R マッパ流 DBIC でのアップデート

まあ、普通。こんな感じかと。my $member = $self->model('Member')->search({ email => 'nekokak@hogehoge.hoge' })->first; $member->update({name => 'nekokak'});の「普通」にひっかっかったんで。 $member->name('nekokak'); $member->update();のほう…

SQL::Abstract かしこす

以前「DBICで本当に困ったら SCALAR REFERNCE を使え - daily dayflower」にて, DBIC で WHERE field1 IS NOT NULL な検索をしようと思って, …… $resultset->search({ field1 => \'IS NOT NULL' }); とか書いていたんですが, $resultset->search({ field1…

DBIC 0.7 で has-many な nested multi-step prefetch がうまくイカネ

'author' has-many 'books' 'book' has-many 'chapters' みたいなありがちな DB で 2 authors each author has 2 books each book has 3 chapters みたいなテーブルを作ってMulti-step-prefetch をためしてみたんですけど, my @authors = $db->resultset('a…

TT の Multi Provider

CLON - 2006/11/27 - 複数のアプリで共通のテンプレートファイルを使う これ、 [% INCLUDE 'common:foo.tt' %] とかしたとき、さらに foo.tt の中で [% INCLUDE 'bar.tt' %] とすると common:bar.tt がインクルードされてほしいのだけどそうはならないのがび…

Email::Valid 0.177- fails

sub _is_domain_label { my ($self, $string) = @_; return unless $string =~ /\A [A-Z0-9] # must start with an alnum (?: [-A-Z0-9]* # then maybe a dash or alnum [A-Z0-9] # finally ending with an alnum )? # lather, rinse \z/ix; return 1; } 追…

Plagger でまずなにをやりたいか

id:miyagawa [plagger] そういう場合はまずなにをやりたいかをBlogなりIRCなりでつぶやいてみるのがいいかも すいません。自分一人で抱え込むつもりもなかったんですが日記に書くネタ確保しときたかったんで(笑)。時間ないので来週やりたいことを書きます。

Plagger 0.7.15 の中身

食わず嫌いで Plagger を敬遠していたんですが,ついにインストールしました。しかし自分がやりたいことをやるには既存のプラグインだけでは無理そう。で,とりあえず既存のプラグインのコードを読んでいたらどんどんわからなくなってしまいました。資料をあ…

Test::Base の t/diff_is.t がこける

みんなうまくいってるし(;>_<;)。どうも Test::Simple が 0.65 (厳密には 0.64_1)でテスト失敗時のメッセージが変わったからみたいです。 * Made the failure diagnostic message file and line reporting portion match Perl's for easier integration wi…

PoCo::HTTP で Comet チャットサーバを作る

せっかくのイベントドリブンフレームワークな POE ですから Comet でチャットをやってみようかと。ありきたりですが。POE::Component::* でウェブサーバを立ち上げられるのは現在のところ, POE::Component::Server::HTTPServer POE::Component::Server::Sim…

POE おぼえがき

TIMTOWTDI なことがいっぱいで POE のことがよくわからなかったのですが,Cookbook とリファレンスを読んでなんとなくわかってきました。 POE::Kernel が POE システムのコアで唯一神 POE::Kernel->run()run() とも書けます">*1 を実行するとイベントループ…

複数ファイルの文字列置換

あるディレクトリ内にあるファイルすべての文字列を置換したいことはよくあります。Windows だったら適したフリーウェアがいくつかみつかりますが*1,Unix だとパイプ文化だからかこれといった定番がありません。find と sed とシェルスクリプトを組み合わせ…

XML::Parser(expat)使ってみたけれど

XML パースのベンチマークとして有名なローサベンチ。ベンチの内容は RSS の permalink を取り出すだけのものですが, XML::LibXML や XML::Simple は一度 XML 木を生成しているのでちょっと無駄っぽい。XML::Parser のストリームタイプ(コールバックスタイ…

DBIx::Simple と SQL::Abstract::Limit

なんちゃってマッパ DBIx::Simple DBIC などの O/R マッパを使うほどじゃないけど DB 操作で楽したい,という場合には tomi さんも御推薦の DBIx::Simple があります。tomi さんもお書きのように結構致命的なバグ(その1,その2)が放置されているのが悲しい…

$YAML::Syck::ImplicitUnicode と use warnings

YAML::Syck の ImplicitUnicode については id:miyagawa さんの記事 - YAML parser が詳しいのですが, perl -w -MYAML::Syck -e '$YAML::Syck::ImplicitUnicode = 1;' とすると, Name "YAML::Syck::ImplicitUnicode" used only once: possible typo at -e …

DBDesigner 4 の sqlt パーサを書いてみる(挫折編)

Rails だと DBDesigner 4 の吐く XML ファイルから model 等を生成するプロジェクトがあったりします*1が,Perl(Catalyst 等)にはありません。キー,クヤシイ!くやしがっていても仕方ないのでどう実現するか考えましょう。Perl だと様々なスキーマソース…

TT-2.15 で list-vmethod-fallback がうまくいってなさそう

SQL::Translator がうまくインストールできないと思っていろいろ調べたら,TT-2.15 でなにやら Stash の挙動がおかしくなっているようでした。 SQL-Translator の RT http://rt.cpan.org/Public/Bug/Display.html?id=20047 ↑の TT での RT(コメントはついて…

自己出力プログラム

__DATA__の再利用 -こんばんは、皆さん。以下のプログラムは1回しか__D- Perl | 教えて!gooを見て,DATA も seek 出来ると知りました。しかも先頭にシークするとスクリプト自身になるとか。ですから, #!/usr/bin/perl undef $/; seek DATA, 0, 0; print <DATA>; _</data>…

Encode::Detect 入らない

前も書きましたけど Encode::Detect がうまく入らないのです。 % perl Makefile.PL % make rm -f blib/arch/auto/Encode/Detect/Detect.so gcc -shared -L/usr/local/lib Detect.o -o blib/arch/auto/Encode/Detect/Detect.so \ \ gcc: Detect.o: No such fi…

POE をとりあえず触ってみた

以前Net::Server でサーバを作ってみたりしましたが,ええーいと思ってついに POE に手を出してみました。日本語の紹介だと, Blog Developer's Cookbook : Weblogs.com Ping Gateway to はてなアンテナ (POE版) POE - Perl Object Environment に触れる : N…

Perl で継続 - Continuity

ウェブアプリを作っていると,セッションデータを覗きつつ管理しつつ処理フローのどこにいるのか自覚しながら全体を作り上げるのがめんどくさくなってきます。 セッションデータサーバ(memcached 的な),があればいいんじゃね? セッション管理サーバ(認…

コメントアウトで=begin〜=end使ってて=cutを忘れる

長文コメント書いたり長きにわたってプログラムをコメントアウトするときに, package FooBar; ... =begin COMMENT ... =end COMMENT ... 1; とかやるんですけど,=end は POD モードを抜けるんじゃなくて =begin との対なので,このままだと POD モード抜け…

bool の overload

Boolean, string and numeric conversion 'bool', '""', '0+', If one or two of these operations are not overloaded, the remaining ones can be used instead. bool is used in the flow control operators (like while) and for the ternary ?: operati…