perl

日本語なプロジェクト名を外国人にどんどんとられている気がする

大豆CMSですって?

File::BOM via PerlIO::via

いまいじっているウェブアプリの設定は YAML 形式にしています。デザイナさんに設定ファイルをいじってもらったら「コンテンツがそっくり消えてしまいした〜(泣)」と言われてしまいました。ぱっとみ確認したところ形式が壊れたわけじゃなさそうだし…とよく…

qw()

自分のコード読み返してみたら qw/.../ と qw(...) が統一されてNEEEEE!ベスプラ本だと qw() だった気がするので最近書いているのは qw() にしてるんですが,DBIC あたりを読んでいたときは影響されて qw// にしてました。もっかいベスプラ読み返してみよう…

Net::Server その2(長い処理をしたい)

前回(http://d.hatena.ne.jp/dayflower/20060908/1157706291)の続きです。やろうと思っていることは, クライアントからサーバにつなぐ なんらかのコマンドを与えると処理を行う 処理には時間がかかるのでトークンだけ返す あとでそのトークンを元にステー…

Net::Server で UNIX ドメインのサーバを書いてみる

Perl で UNIX ドメインのサーバを書くことになりました。でもSocket(or IO::Socket)をそのまま使うのは面倒くさい*1。ということで CPAN をあさってたら Net::Server というものがありました。POE というのもあって最終目標からすると勉強する価値ありそう…

mod_perl 2.0 on worker MPM の特性

だらだらと3日にわたって書いてきましたが,明日から遅めのお盆休みになるのでまとめをメモ書きしておきます。 worker MPM での mod_perl は Perl の ithread を使っている httpd のスレッドプールとは独立して Perl インタプリタプールが存在する Perl イン…

で ps -efm で httpd をみてみると

PerlInterpMax を増減させてもスレッド数変わらないのでした。単独スクリプトで threads 使うときちんとスレッドが表示される(つまり OS のスレッドを利用している)のでなんでだーと思ったんですが,ひょっとするとプールというのはスレッドプールというわ…

mod_perl と Perl インタプリタプール

前々回も書きましたが,worker MPM で mod_perl を使うと,インタプリタプールなるものが作成されます。このインタプリタプールというのはまさに Apache におけるプロセスプール(prefork MPM の場合)やスレッドプール(worker MPM の場合)の Perl インタ…

Class::Accessor::Faster というのが出来てた

Class::Accessor シリーズに 0.27 で Class::Accessor::Faster なるものが追加されていました(Fast と同様 Class::Accessor を普通に入れると一緒に入ります)。 This is a faster but less expandable version of Class::Accessor::Fast. C::A::Fast 「よ…

承前; threads::shared で変数を共有してみる

とりあえず mod_perl を離れて threads::shared でスレッド間変数共有をやってみましょう。

worker MPM における mod_perl のグローバル変数

イマイチ worker MPM で mod_perl が安全に使える自信がなかったので確かめてみました。題して「worker MPM でのグローバル変数は Thread Local Storage か Process Global Storage か?」

DBIC で複数リレーションの JOIN(間違い書いてました)

http://d.hatena.ne.jp/dayflower/20060715/1152939240 に 複数のリレーションに対して並列に prefetch を掛けることはできません。即座にエラーがでるわけではないのでちょっとハマりぎみなポイントです。 って書いてあったのを間にうけました>< というか…

ベスプラ和訳本

が出る,らしい(←コード間違ってたらすいません),です(via id:bakelatta:20060803:p1)。ま,まじっすか(←最近そればっか)。洋書を買わずに我慢した甲斐がありました(←それは軟弱すぎ)。絶対買う。

DateTime::Duration

(._.) φ メモメモ DateTime オブジェクト同士で subtract(マイナス演算子の overload も)すると,DateTime::Duration がかえる DateTime::Duration はわりと人間的に情報を持ってる たとえば DateTime(2006/08/18 12:34:56) - DateTime(2004/03/02 09…

ファイルロックスレ

flock まわりでなにかいい CPAN モジュールないかなぁとうろついていたら ttp://pc8.2ch.net/test/read.cgi/php/1024795138/ こんなスレがありました。玉石混交なのがいかにもですが4年以上続いてるのがなにげに良スレなのかなぁ。結局そこではモジュールは…

DBIC の初期化速度改善(by Algorithm::C3 0.02)

DBIC のスキーマをたくさん(20数個かな)定義したモジュールを use しただけの単純なスクリプトに DProf によるプロファイラをかけてみました。Algorithm::C3 0.01 時代のプロファイリングがこれ。 Total Elapsed Time = 9.335981 Seconds User+System Time…

Algorithm::C3 0.02 登場

0.02 Sun. Jul. 30, 2006 - code refactored for speed by Brandon L. Black ま,まじっすか?Algorithm::C3 とはいうまでもなく Class::C3 の根幹を支えるモジュール。ということは DBIC の初期化も…wktk!

DBIC 遅い

DBIC のプラグイン機構は Class::C3 が使われています。これは何をするものかというと,多重継承したクラスでのメソッドの呼び出し順序を Perl 標準のではなくわりとメジャーな順序にするという…って自分でも何をいっているかわかりませんが,ともかくそれを…

DBIC で JOIN (prefetch) と rows の相性よくない?

以前も書いたように DBIC でのリレーションは,PREFETCH すると INNER JOIN や OUTER JOIN な SQL が発行されます。一方,ページャとして有用な page, rows アトリビュートは LIMIT, OFFSET を利用しています。ですから, my $artists = $schema->resultset(…

search.cpan.org の調子悪い?

うちからアクセスできないだけですかね。 と思ったらアクセスできるようになりました。 と思ったらなんかおかしいですね。そんなに困らないかなと思ったら意外に依存した生活をしていたのでした。

DBIC-0.07 リリースっすか?ガガーン

と思ったらまだ置いていなかった罠。

じゃあ try @ Error で return するとどうなるのか

昨日の話をふまえたうえで #!/usr/bin/perl use strict; use Error qw(:try); sub test { try { warn 'step 1'; return; warn 'step 2'; }; warn 'step 3'; } test();の結果は, step 1 at test.pl line 8. step 3 at test.pl line 12.やっぱり,そうなるん…

sub 内部で eval ブロック内から直接 return できない

すいません,基礎ができていませんでした。 sub foobar { my $arg = shift; eval { return 'not defined' unless defined $arg; }; return 'defined'; } print foobar(); # 'defined' is printed.eval() 内の return は eval 節自体の評価値として返す,とい…

DBICで本当に困ったら SCALAR REFERNCE を使え

追記 2006/12/06 下記で IS NOT NULL を実現するのにスカラーリファレンスを使用していますが,IS NULL / IS NOT NULL を出すためには必ずしもスカラーリファレンスを利用する必要はありません。ということで訂正を入れようと思ったんですがちょっと長いので…

Clone::More とか Clone::Fast とか出てきた?

ハッシュのディープコピーにこれまで Clone を使っていたんですが,メモリリークが起きる可能性があるそうで Clone::More および Clone::Fast なるモジュールが CPAN にあがってます。まだ読み中なので何ともいえないですが,とりあえず落ち着いて POD 書け…

Email::Valid に 内部 utf8 文字列を渡すとはまる

use utf8; use Email::Valid; print Email::Valid->address('日本語@ドメイン.です') ? 'OK' : 'NG', "\n";の結果は「OK」となります。Email::Valid::Loose でもそうなります。 国際化ドメインとして考えるのならいいのですかね?でもその場合でも local-par…

DBIC での SQL 覗き見と Log::Dispatch

今まで $schema->storage->debug(1) として標準出力に出力される SQL 文を監視していたのですが,なぜか早く終わるリクエストでとらえきれなくなってしまいました。やむなくロガーを導入することにしました。Log::Log4perl は仕様が重そうなので(log4j のと…

謎フレームワーク Tripletail

今日は体調がすぐれなかったのでお休みしてしまいました。おうちから CPAN の Recent をみてたら,「TL」とかいうのがどかどかと up されてました。?なんだこれは?と思ったら,TL - Perlフレームワーク らしいです。ユミルリンクですかぁ。

mod_perl で時間がかかる処理を行う場合

CGI 時代では,たとえばメールを送るなど時間がかかる処理を行う時は fork() を使っていました。子プロセスでメール送信,親プロセスでレスポンスを返す,とやると,ユーザはメールが実際に送られるかどうかに関わらず ASAP でレスポンスを受け取ることがで…

TT で custom filter (2)

前回よりだいぶ間があいてしまいました。 3. filter ファクトリクラスを作って LOAD_FILTERS で指定する まずファクトリクラスの書き方ですが,Template::Filters というよいサンプルがあるので読みましょう。というのは冗談で,めんどくさい部分を Template…