Home > Perl Archive

[ << < 5  6  7  8  9  10  11  12  13  14  15 >> ]

Perl Archive

ネタもないことだし、Regexp::Assemble

こんなスクリプトを保存しておいて

#!/usr/bin/perl
use strict;
use warnings;

use Regexp::Assemble;

exit unless @ARGV;
my $r = Regexp::Assemble->new;
$r->add($_) for @ARGV;
print $r->re,"\n";

実行すると

[name@host]$ regexp kawabata kazumichi
(?-xism:ka(?:zumichi|wabata))

とかなって、横着できて便利

Lightweight Language AHP

http://dame.dyndns.org/misc/llahp/
こういうのはお約束だし、やってみた

higemaru さんにオススメの LL は Perl (53%) > Ruby (28%) > Python (11%) > PHP (7%) です!

Python の方が PHP よりおすすめってのが意外だったが、どっちも嫌いなので別にいいや。あ、嫌いって言うてもた

use lib するだけで遅くなる

サーバスペックとかチューニングとか言う前に、コーディングを変えてみようと考えて、やってみた。便利モジュール使わなくてもなんとかなるレベルのものだったので、いろいろ使わないことにしてみたら、かなり速くなった。。。というところまでは想定内だったが、use lib するだけでガクンと遅くなったのには相当驚いた

CPAN に顔写真が掲載されるようになった

ので、早速のせてみた
gravatar.png

「use Perl;」で紹介されてるけど、簡単に手順を説明しとく

  1. Gravatar」でアカウントもってない人は、アカウント作る
  2. アカウントの e-mail アドレスを cpan.org のものにする
  3. Gravator に顔写真を登録する
  4. 一昼夜待つ

CGI::Application::Plugin::Mason

前職時代の後輩(といっても、ほとんど入れ替わりだったけど)作。がんばってますな。ワシもがんばらねば

とまあ今更ながらCGI::Applicationのプラグインを作ってみました。
というのもちょっとしたCGIなんかを作るときはやっぱりよくできてましてね、このモジュール

御意。ほんとよくできてるよね、CGI::Application

フレームワーク (12) - 悩み中

メール送信関連の実装、と言うのは簡単だが、まじめに作るとそれだけでフレームワークになってしまうので、どの程度で妥協するのか悩み中

  • メール本文はテンプレートファイルで。テンプレートファイル名を指定しない場合のルールを決める
  • From, To, Subject は設定ファイルに書くなりどっかから持ってくるなり、なんなりするが、テンプレートエンジンは通す
  • 7bit ISO-2022-JP 決め打ちにしよかとも思ったが、イマドキの MUA なら 8bit UTF-8 で大丈夫かな? 携帯電話はまずそげ。まぁ、無難に 7bit JIS にしとくか
  • 添付ファイルや HTML メールは、いらね

などと考えて「普通のメールを無難に送るだけのメソッドをおまけ的に実装」することにした

メールの実装終わったら、次は validation を考えることにした。ものすごく楽したくて、ものすごく手を抜けない部分なので、じっくり考えよう

フレームワーク (11) - config 関連実装完了

明日以降の実装のためのメモ

YAML ファイルの runmode 名と同じ項からいろいろ取得、というところまで仕様にするとやりすぎかなとも思ったので、prerun モードで実行するから不要なら上書きしてね、というスタンスにした

あと、実行可能な runmode を指定するホワイトリスト形式は安全でいいんだが、ちょっと作ってみるって時に面倒なので、ブラックリスト形式にした

  • 予約語=C::M::App のメソッドの場合は実行しない
  • アンダースコアで始まるメソッドは実行しない
  • それ以外のメソッドは全部実行する

という感じで

存在しない runmode を指定した場合は 404 ページを表示したいので、not_found というオーバーライド可能なメソッドを追加した

次は、メール送信とログ出力の予定

mod_perl とか fcgi はかなり後回し。ログイン画面を簡単に作る工夫とかもあると嬉しい。。。かな?

フレームワーク (10) - 現状整理

少し間があいてしまったが、やっていないわけではなくて、Template-Toolkit 関連部分の実装を終えたので、現在試用しながら実装変更中

使っててわかったのが、

  • config 関連の実装が必要
    • YAML 形式のファイル読み込みにする予定
  • Mail 送信関連の実装が必要
    • トレンドは Email::* っぽいので、Email::SimpleEmail::Send あたりを使ってみようかと思っている。でも、Email::* はお互い依存してそげなんで、後で考える。愛用してきた MIME::Lite でもいいんだが

。。。とか思ってたら、MIME::Lite も久しぶりにアップデートされてるじゃん!

First release from Perl Email Project. Updated packaging.

らしい。RJBS すげえ!

オールドタイマーなのかな

ファイル開く数一桁で済む方法を選択したはいいが、ファイル数百個開くラクチンパターンと速度に差がない。マシンスペックは間違いなくあがっているので、ローカルで使うプログラムでそんなこと意識してもしゃぁない時代になっているようだ

フレームワーク (9) - DBIx::Simple::DeadObject

今日は DBIx::Simple 周り
DB 関連のエラー拾うために、よく

$dbh->select(...) or die $dbh->error;

とかするが、わざとエラーにしてみるために

$dbh->disconnect;
$dbh->select(...) or die $dbh->error;

してみたら、

Database object no longer usable (because of ...)

と返ってきたので、さらに実験

use DBIx::Simple;
use Data::Dumper;

my $dbh = DBIx::Simple->connect('dbi:SQLite:dbname=dum.db');
print Dumper $dbh;

$dbh->disconnect;
print Dumper $dbh;

実行結果

$VAR1 = bless( {
                 'lc_columns' => 1,
                 'dbh' => bless( {}, 'DBI::db' ),
                 'dbd' => 'SQLite'
               }, 'DBIx::Simple' );
$VAR1 = bless( {
                 'what' => 'Database object',
                 'cause' => 'DBIx::Simple=HASH(0x812c15c)->disconnect at db.pl line 7'
               }, 'DBIx::Simple::DeadObject' );

おー、なるほど

if ( ref $dbh eq 'DBIx::Simple::DeadObject' ) {
  print 'DB object has been already a-born.';
  undef $dbh;
}

とかできるのね。使うことがあるかどうかはわからないけど

[ << < 5  6  7  8  9  10  11  12  13  14  15 >> ]

Home > Perl Archive

Feeds

Return to page top