« 2005年01月07日 | メイン | 2005年01月09日 »
2005年01月08日
AN HTTP が頻繁に落ちる
予備サーバ(Windows Server)にて AN HTTPD を動かして、ウェブサーバを構築しているわけですが、よくダウンしておる。
マシン全体ではなく、ウェブサーバのみ。要は AN HTTPD がよく止まっておる。なーんとなく、メモリリークを起こしているような気がしないでもない。使用メモリが 160MB となになってるし。
もう少しの辛抱だけど。
AN HTTPD 単体の問題というよりは、どっちかっつーと ActivePerl との連携の問題なような気もする。
【関連情報】
・AN HTTP Server Home Page
http://www.st.rim.or.jp/~nakata/
23:25 | コメント (0) | トラックバック | Technology
Encode と Unicode::Japanese
昨年の半ばから、日本語変換には Unicode::Japanese を使っていたわけですが、よく考えると、単純に UTF-8 EUC SJIS 間の変換にしか使わないので、標準モジュール(Perl 5.8)である Encode を使うことにした。
自分の環境や使い方では、なんと Unicode::Japanese より Encode の方が、だいたい 10分の1 の CPU時間 で処理できることがわかった。
ただ、問題が無い事も無く、文字コードを判定して変換するのが上手く行かない場合が結構多い。
use Encode; use Encode::Guess qw/ euc-jp shiftjis 7bit-jis /; Encode::from_to($value, 'Guess', 'euc-jp');
こんな風に書けば、一般的には文字コードを判定して変換することができる(ほにゃららを EUC に変換する例)。そもそも from_to 単体でサポートして欲しいところなんだけど。
問題があって、自動認識に失敗すると CGI 全体で 500 エラー を吐き出しやがります。
というのは、上記のをもっとばらばらに書くと
$guess = Encode::Guess::guess_encoding($value); Encode::from_to($value, $guess->name, 'euc-jp');
といった風になるのですが、文字コード判定に失敗すると $guess にオブジェクトとではなく、普通のテキストが入るんですよねorz
$guess = Encode::Guess::guess_encoding($value);
if (ref $guess && $guess->name ne 'euc-jp') {
Encode::from_to($value, $guess->name, 'euc-jp');
}
こんな風に書いて解決しました。文字コードの取得に失敗したら変換しないということで。
Encode の仕様というかバグなんじゃないのか?これは。
あと、変換が
$length = Encode::from_to($value, $before, $after);
これしか無くって、渡した $value がもれなく変換されるのもちょっと嫌。他の関数に、変換した値だけ($value 自体はそのまま)を渡したいときもあるんだけど。というか、これに1時間くらいはまった。
17:10 | コメント (0) | トラックバック | Programming
もうむりです
生活改善の望みは薄い。ということで、昨日(7日)の食事内容です。
昼は、残り物と思われるおでんを食べた。大根がいい感じになってたので、たくさん食べる。
夜は、こっそりカップラーメンを買ってきた。カレー味。
実家 (昼)
おでん
実家 (夜)
カレーヌードル