goo blog サービス終了のお知らせ 

役立たずのプログラマーブログ

自分の得た知識や経験をブログに書くことで整理し、考えをまとめることが目標

mod_perlってはやいな

2008-01-27 10:45:05 | Perl
Mojule.jpの記事をみつつ、Perlの練習。
記事にあったとおりなんだけど、mod_perlって早いことを実感した。
ま、それだけ。

$ab -c 10 -t 100 http://localhost/perlのcgiの結果。
種類[処理数/sec]
CGI17.68
Perl::PerlRun347.73
Perl::Registry451.94

25倍くらいになっていた。
テスト中のデスクトップの重さからして全然違っていたのが印象的だった。

自分へのメモとしては、
なんか不可解な動きをして、どこがおかしいのかわからないから、
一旦まともに動くようになるまではmod_perlは使っちゃダメだってことかな。

mod_perlをfedora8にインストールしてみた

2008-01-22 12:30:04 | Perl
ちゃんとしたドキュメントも見ないまま、ネットの解説ページを頼りに
Fedora8にてmod_perlをつかってCGIを動くようにしてみたが、
テストスクリプトが動くまで詰まったことをメモしておく。

[インストール]
yumで簡単にできた。#yum install mod_perl

[その一]
apacheのhttpd.confにApache::Registryと書くように説明があった。
yumで探してもperlモジュールがないのでうっかりcpan2rpmでインストールしかけた。
ModPerl::RegistryとかModPerl::PerlRun
という名前で存在していた。

[その二]
httpd.confにはdirectoryの設定を追加するだけでイケた。
LoadModuleなんかはしなくてよかった。
(どこでモジュールを呼んでいるのだろうか?)

[その三]
ファイルの指定の仕方が相対ディレクトリではダメになってた。
とりあえず絶対パスで指定してやったらイケた。
(ただ、ドキュメントを読めばやり方くらいは書いていると思う)

[その四]
スクリプトの属性で700で動いていたものが、704にしてotherにread権限をつけないと
動いてくれなくなった。
(ていうか700で動いていた理由の方がよく分からない。Apacheの勉強もせねば)

うごくまで一時間くらいかかった。
一度やってみたかっただけなので、早くなったかとかメモリ量がどうか等はテストしていない。

PerlのDecoretor

2008-01-18 23:58:19 | Perl
http://module.jp/works.htmlのデザインパターンに関する記事をよんでいたら、
PerlのDecoretorが載っていた。
なんか、C++のそれと全然違っていたのに驚いた。
C++とかは、
      Component
          │
    ┌─────┴─────────┐
Concrete         Decorator
Component           │
                    │
              ┌─────┴─────┐
           Concrete    Concrete
          Decorator1   Decorator2

しかし、PerlではAUTOLOADがあるから、
Componentにてインターフェイスを一致させる必要がないため、
ちょいとラップして委譲しただけみたいなかんじだった。

Spreadsheet::ReadでExcelファイルを読み込もうとしたが…

2008-01-09 19:44:47 | Perl
Perlの勉強用に家計簿CGIを作ろうと思って、その前段階として、
ローカルの家計簿のエクセルファイルを読み込んで、
テキストに落とすプログラムを書こうとしてみたんだけど、ちょいとつまったのでメモ。


PERLHACKSに便利そうなPerlモジュールSpreadsheet::Readが紹介されていた。
なにやら簡単にexcelからデータを読めそうだったので、
とりあえず試してみたが、まだ日本語をちゃんと扱えないようだった。

Spreadsheet::Readは、Spreadsheet::ParseExcelのラッパーで、
OpenOfficeもExcelも同じインターフェイスで扱える。
だからPERLHACKSで紹介されていたんだけども、
Excelって、セルの一つ一つにエンコード情報がついていて、
Spreadsheet::Readでは、まだその情報が取ってこれない。
なので、一つのセルに入る程度の短い文字列でencode_guessをするしかなかったりする。
そりゃ、ASCII,UTF16-BEの区別がさすがにできない場合が出てくる。

将来的には、encのハッシュが追加されるようなんだけど、
今のところはSpreadsheet::ParseExcelを使う方がいいみたい。

DB_Fileモジュールインストールメモ

2007-12-13 08:28:31 | Perl
Perlでサンプルを動かすために、DB_Fileモジュールをインストールした。
その際、コンパイルエラーがでてBerkleyDBをインストールした。
#yum install BerkeleyDB ってのがなかったのでソースからインストール。
とりあえず動くようになったが、自分てシンボリックリンクを切った辺りが怪しいので元に戻せるようにメモ

ln -s /usr/local/BerkeleyDB.4.6/ /usr/local/BerkeleyDB
ln -s /usr/local/BerkeleyDB.4.6/lib/libdb-4.6.so /usr/lib/libdb-4.6.so

とくに二つめ。Fedoraでlibdb-4-5.soがすでにインストールされていたため、
何かのアップデート時に不具合がでそうな予感がする。

ちゃんとしらべてやるべきなんだろうけど、面倒だしなぁ。