Pixel Pedals of Tomakomai

北海道苫小牧市出身の初老の日常

2005-12-01から1ヶ月間の記事一覧

perl5.8のUnicodeは嫌い

TermExtractを入れて遊ぼうと思ったら、use encoding関係でハマり。 encodingプラグマはローカルスコープにできない chompはencodingプラグマの影響を受ける 1. に関しては、 use encoding 'euc-jp'; my $raw_str; { no encoding; $raw_str = "じゃぱにーず"…

mod_perl開発がキャッシュで行き詰ったら

.htaccessが有効なら、 SetHandler cgi-scriptこういうひどい解決法もありかもしれぬ。行き詰まってる原因がキャッシュに起因するバグのせいだったら後からひどい目にあいますけどね。

Class::DBIのhas_many

自分メモ。has_manyには第3引数があって、Music::Artist->has_many(cds => 'Music::CD', 'artist_code');って指定ができるみたい。第3引数の意味はこの場合だと、Music::CDクラスからは自分(Music::Artist)をartist_codeと言う名のメソッドで参照できると言…

overloadでセグフォ

Date::Calcで空オブジェクトを作ってprintするとセグフォで落ちるなーと思っていたら、package hoge; use overload '""' => sub {undef}; sub new{bless [], shift}; "" . hoge->new();これでも落ちた。perl5.6.1の問題? または環境依存? 自宅の5.8系のper…

mod_perlとMaxClientsの悩ましい関係

そうだったのかorz。それにしても、紹介されているapacheを二つ建てる手法は非常に合理的でいいですね〜。

apacheの各ディレクティブの評価順

よく忘れてしまうので、引用。 The order of merging is: 1. (except regular expressions) and .htaccess done simultaneously (with .htaccess overriding ) 2. , and with regular expressions 3. and done simultaneously 4. and done simultaneously

mod_perlからのレスポンスヘッダの書き出し

030526 : mod_perl クイック・リファレンス (1) より。 $r->send_cgi_header( $str ); $r->cgi_header_out() と $r->send_http_header を適切に呼び出す。 PerlSendHeader on ディレクティブを実装するのに使われている。 解析作業が伴なうので、パフォーマ…

useでimportしない法

import関数については今まであまり気にしてなかったんだけど、perlmodによると、 As a special caseuse Module ();is exactly equivalent toBEGIN { require Module; } だって。後ろに空っぽの()を付けると、importを呼ばないようにできるそうな。だからmod_…

WEBアプリはシングルトンで

CGI::ApplicationのようにWEBアプリをクラスとして扱う場合、1つのリクエストに対してアクティブになるクラスは一つだけなので、シングルトンクラスである方が幸せになれる。例えば、TTのプラグインを作るときなんかは、シングルトンであれば現在アクティブ…

mod_perlとCGI

例えばHTTPのリクエストを表すクラスを作る際、mod_perlではApache::Request、CGIではCGI.pmに処理を委譲したいと思ったとき、コンストラクタさえ変えれば他のメソッドはほぼ同じなので、わざわざファクトリメソッドを作ったりしたくない。そこでこんな方法…

TTと日本語

Appleが頑張っている今日この頃でも、サーバはUNIX系、クライアントはWindows系であることは未だに多い。そのためにTTで日本語を扱うときに、大抵はDB〜スクリプト内部ではEUC、TTから吐き出すのはsjisであることが多くなる。そんなときに頑張ってくれるのが…

頭が退化してる

ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか作者: ジュニア,ヘンリー・S.ウォーレン,Jr.,Henry S. Warren,滝沢徹,玉井浩,鈴木貢,赤池英夫,葛毅,藤波順久出版社/メーカー: エスアイビーアクセス発売日: 2004/09メディア: 単行本購入: 35人 …

はてなに移しました

Hatena::Diaryが楽しそうなので、自宅サーバのMTからこっちに移しました。シンプルであり、かつ、かゆいところに手が届くような設定項目やヘルパがいいですね〜。はてな記法による記事の投稿には癖があるけど、なれたら逆に使いやすそう。

TTのレンダリング時間の測定

TTをClass::DBIと一緒に使うと、ついついレンダリング時間が長くなってしまいがちなので、レンダリング時間の測定方法を。 use Template; use Time::HiRes ();my $tpl = Template->new(); my $starttime;$tpl->process('hogehoge.html', { START_TIMER => su…

Class::DBIのヘルパが欲しい

テーブル定義からClass::DBIに対応したクラスをファイルとして生成するスクリプトってあるんだろうか? 探したけど見つからなかった。。。 Class::DBI::Loader で定義を読ませて、その後生成された各テーブルクラスのクラス属性(__hasa_relsやら__hasa_list…

タイムアウト

OS Xに対してftpやらsshやらで接続するとタイムアウトをして困っている人々へ。 /etc/xinetd.d/ftp で server_args = -l -t 7200 とか。 /etc/sshd_config で ClientAliveInterval 60 と ClientAliveCountMax 999999 とか もしかしたら幸せになれるかもしれ…

クラスの初期化(2)

mod_perl(Apache::Registry)環境下ではさらに複雑となる。まず、モジュールが他のスクリプトにおいて読み込み済みの場合、メインルーチンに書いてある処理は実行してくれない。この部分に初期化処理を書く場合は注意が必要だ。 さらに、Apache::StatINCを利…

クラスの初期化

perlのクラスの初期化が複雑だと思う今日この頃。例えば、以下のコードの出力はどうなる? # Class1.pm package Class1;print "main Class1\n"; print "#####################\n";sub import{ print "import Class1\n"; print join(',', @_) . "\n"; print j…

SUPER

package Class1; sub new{bless {}, shift} sub hello{print "Hello Class1.\n"}package Class2; @ISA = 'Class1'; sub hello{print "Hello Class2.\n"} sub say_hello{ my $self = shift; $self->hello(); $self->SUPER::hello(); }package Class3; @ISA = …