2005年1月11日火曜日

自作PerlモジュールをCPANでインストールする

今まで、新しくサーバを構築する時には、自作のPerlモジュールのインストールは一つ一つ、makeしてインストールってことをしていたんですが、モジュールの数が多くなってきていちいちインストールするのがしんどくなってきました。モジュールのインストールというとCPANモジュールを利用した方法が非常に簡単なので、自作モジュールも何とかCPANモジュールを使ってインストールできないか調べてみました。
すると、CPAN::Siteなるモジュールを発見。モジュールの作成日時が相当古いんでちょっと心配でしたが、とりあえず、試してみました。ドキュメントの通りに試してみるととりあえず、自作モジュールをCPAMモジュールを使ってインストールできるようになったんですが、普通にCPANに登録されているモジュールのインストールができなくなってしまいました。(検索してもHITしない)
何か設定が悪いのか、仕様なのかちょっと調べきれてませんが、なにやらいまいち。。
自作モジュールのインストール、他の人はいったいどうやっているんでしょうか。。

bundleを作成してPerlモジュールのインストールを簡単に

perlにはCPANというとても便利で強力なサイトがあり、そこに登録されている膨大な数のPerlモジュールを利用することにより、面倒なプログラミングを簡単にできたりするんですが、Perlモジュールを多用しはじめると、そのインストールが結構面倒くさくなってきます。特に新たにサーバをたてて、システムを新規に構築するなんて時はモジュールのインストールだけでかなり時間がかかってしまうってことになりかねません。
そこでいつも使うようなモジュールをリストにまとめておき、一発でインストールできれば、非常に便利ですし時間も節約できます。CPANではBundleを使うことによりそのようなことを実現できます。

Bundleはそれ自体がPerlモジュールです。Bundleは以下の手順で作成します。
- まずBundle::の名前空間を持つモジュールとして作成する
- =head1 CONTENTSというPODセクションを作成し、そこにモジュールのリストを記述する
- 記述方法はModule_Name [Version_String] [- optional text]
- 作成したBndle::Fooをパスの通った場所におき、perl -MCPAN -e install 'Bundle::Foo'

詳しくはperldoc CPANすると書いてあります。また、CPANでBundleで検索するとたくさんヒットしますので、それを参考にすれば簡単にかけると思います。


Google、自動生成ページは上位にでにくく

[を] 自動生成ページがGoogle検索で上位に出にくく

Googleが検索対象ページを従来の2倍の80億ページに増やしたのが原因らしいです。
メモ。

2005年1月10日月曜日

picasaで画像管理

picasa (画像ビューワソフト): Epic->yoshimax

yoshimaxさんのサイトで紹介されていたGoogleからフリーで配布されている画像管理ソフト。以前どこかのブログで紹介されていて自分のPCにもインストールしたんですが、インストールしたことを忘れていてました(汗)
yoshimaxさんの記事をみてインストールしていたことを思い出して、自分のPCを確認してみると、タスクバーに常駐していてPC内の画像検索していたようです。picasaを起動してみると、検索された画像が大量にリストアップされてます。使い方が直感的で使ってみたいと思わせるアプリですが、フォルダの奥の奥の方にこっそりしまっておいてそのまま忘れてしまったアレな画像とか出てきそうでちょっと怖いかもw


2005年1月5日水曜日

Thunderbirdの迷惑メールフィルタがいい感じ

メーラは今までBeckyを使っていたんですが、正月休みを利用して通信のSSL化などメール環境のセキュリティを強化したところ、Beckyでは、IMAP-SSLのデフォルトポートの993以外のポートでメールを受信できなかったので(BeckyのReadmeにはできるって書いてあったんですが、僕はできませんでした。。)、前から気になっていて1.0日本語版が正式にリリースになったThunderbirdを使ってみることにしました。正月から使い続けていますが迷惑メールフィルタが結構いい感じです。
まだ数日しかたっていないのにかなり正確に迷惑メールを判別してくれます。このままのりかえちゃうかも。

2005年1月4日火曜日

MT3.x+mod_perl環境でMTプラグインのロードに失敗するとエラーになる

結構前からなぜかmod_perl環境でMTが動かなくなってしまっていて、しょうがなくCGI環境で動かしていたんですが、どうにも遅くてやりきれないので、ちょっとMTのソースを追ってみました。

エラーの内容はこんな感じです。
>

Got an error: Can't call method "connection" on an undefined value at /path/to/mt/lib/MT/App.pm line 594.
<

App.pmの該当行ををみてみるとどうやら、apacheのリクエストオブジェクトが空のためエラーになっている模様。さらにソースを追ってみると、親クラスのMT.pmでのinitでこけていることが判明。そこでMT.pmにwarnを仕込んでデバッグしてみたところ、プラグインのロードに失敗した際に呼ばれるlogメソッドが原因だと判明しました。

MT.pmのinitメソッド内では、pluginのreiquireに失敗すると、$mt->logメソッドを呼び出すのですが、このlogメソッドはMT::App.pmで定義されたlogメソッドによりオーバーライドされています。
そのMT::App::logでは$mt->{apache}->connectionを呼び出しているのですが、$mt->{apache}はこの時点ではまだ生成されていないため、最初に書いたようなエラーがでていたのでした。

このエラーを回避し、プラグインのロードに失敗した際もMTが止まらないようにするためには、失敗した際に、$mt->logではなくMT::logを直接呼び出すように書き換えればOKだと思います。とりあえずパッチを書いてみました。

>

--- MT.pm.orig Tue Jan 4 05:27:34 2005
+++ MT.pm Tue Jan 4 05:27:42 2005
@@ -292,7 +292,7 @@
$plugin = $1;
eval { require $plugin };
if ($@) {
- $mt->log("Plugin error: $plugin $@");
+ MT::log("Plugin error: $plugin $@");
return 0;
}
return 1;
<

2005年1月1日土曜日

PRIDEよりK-1だったか。。

昨日の夜はPRIDEをみたんですが、ヒョードルvsノゲイラ以外いまいち盛り上がれず。K-1録画しといたので、今からみます。昨日CMの合間にちょろっとみたら魔裟斗vsKIDがやってて魔裟斗がダウンしてたので、ちょっと楽しみ。あと、ボビーがどうなったのかきになるー。