perl

SpiderMonkey 使って perl で簡単な Syntax チェック用の Script を書いてみた[改訂版]

#!/usr/bin/perl use strict; use warnings; use JavaScript::SpiderMonkey; my $file_name = $ARGV[0]; if (!$file_name) { print "Usage : js_checker.pl [Java Script file name]?n"; exit; } open my $fh, $file_name or die "Couldn't open $file_name:…

Migration

rails の「rake db:migrate」と似たような事を、Catalyst でもできないか?と思い、いろいろ調べてみた。 http://search.cpan.org/~bricas/DBIx-Class-0.07003/lib/DBIx/Class/Manual/Cookbook.pod#Easy_migration_from_class-based_to_schema-based_setup h…

if 式内の .. 演算子の使い方

kazeburo 氏のハテブを眺めていたら下記を発見 naoyaグループ - naoyaの日記 - if /regexp/../regexp/隣の席の id:iwai2ug 氏とイロイロ調べてみて、下記の事が判明。 書式は、式1 .. 式2 式1 と 式2 は、正規表現である必要がない 式1 か 式2 が真なら、真 …

vim に perl インターフェースを追加

「:help perl」を眺めてビックリ。 Using the Perl interface という項目を発見。 随分と古くからあるようなので、これって常識?(汗 (ruby も python もある・・・)FreeBSD の port であれば、「WITH_PERL=1 make」で入るし source から入れる場合は、conf…

HTTP::MobileAgent を例にした method の追加についてメモ

ちょっと面白い話題だったので、メモ。CodeZine:Perlで作るモバイルサイトのコツ:第5回 (モバイル, XHTML, Perl) ■HTTP::MobileAgentによる対応端末の判別 use HTTP::MobileAgent; my $agent = HTTP::MobileAgent->new; if ($agent->is_docomo){ if ($ag…

C::P::FormValidator::Simple::Auto

C::P::FormValidator::Simple::Auto を利用すると、各 action に入る前に YAML で記述された profile を元に Validation を行ってくれる。初めは、メンテナンス性を考慮し、Profile の重複箇所を共通化するべく、Validation 用の action を定義していたが・…

YAML.pm を利用した YAML syntax checker

[id:cooldaemon:20060714] で書いた内容の YAML 版。 #!/usr/bin/perl use strict; use warnings; use YAML; my $file_name = $ARGV[0]; if (!$file_name) { print "Usage : yaml_checker.pl [YAML file name]?n"; exit; } eval { YAML::LoadFile( $file_nam…

C::P::Charsets::Japanese を利用する場合の注意点

都合上、内部で euc を、外部で utf8 を使う必要があった為、メモ。finalize で文字コード変換を使う為、他の finalize を利用している Plugin と併用する場合は、読み込みの順番が大切になってくる。 例えば、C::P::FillInForm より先に C::P::Charsets::Ja…

Data::Page::Navigation を Catalyst で利用する場合について

Catalyst で使用する場合、use するだけの Module であっても Plugin 化した方が統一感があって良いなぁと思うので、私は、下記のような Plugin を書いて利用してます。 package Catalyst::Plugin::Data::Page::Navigation; use strict; use warnings; use D…

Template Toolkit 使用時 に FILTER を追加する方法

package MyApp::View::TT; use strict; use base 'Catalyst::View::TT'; sub new { my $class = shift; my ( $c, $arguments ) = @_; $arguments->{FILTERS} = { do_something => ?&MyApp::View::TT::do_something, }; $class->config( $arguments ); return…

C::P::FillInForm と C::P::FormValidator::Simple の連携方法

C::P::FillInForm は、C::P::FormValidator が組み込まれており、かつ、エラーが存在する時に、自動でパラメータを Fill in してくれる。 個人的には、C::P::FormValidator::Simple が好みなので、C::P::FillInForm の finalize を、少しだけ書き換えた。つ…

closure と class の使い分け

オープンソースマガジン 2006年10月号「プログラミング言語の進化を追え」という特集内で クロージャとクラスの使い分けに関しての記事が掲載されており、疑問が生じたのでメモ。 勉強不足により関数型の定石が不明 オブジェクト指向だと、デザインパターン…

SpiderMonkey 使って perl で簡単な Syntax チェック用の Script を書いてみた

デバック用に今更インストールしてみた。 curl -O http://ftp.mozilla.org/pub/mozilla.org/js/js-1.5.tar.gz tar -zxvf js-1.5.tar.gz cd ./js/src make -f Makefile.ref cp ./Darwin_DBG.OBJ/js /usr/local/bin/Darwin_DBG.OBJ の箇所は環境によって違う。…

RPC::XML の make test が通らない件

同一環境上で、RPC::XML 0.58 のインストールを試みたが、perl 5.8.0 では make test が通るが、perl 5.8.8 では make test が通らない。 % perl -I./lib t/10_data.t 1..151 # Running under perl version 5.008008 for linux # Current time local: Mon Ju…

Getopt::Long

Getopt::Long を使ってコマンドラインパラメータを取得するメモ。 =head1 SYNOPSIS test.pl [options] Options: [--help|-?] put help message [--host|-h] host name [--port|-p] port number =cut use strict; use warnings; use Readonly; use Getopt::Lo…

GD::SecurityImage

http://osakattf.hp.infoseek.co.jp/ ここから Osaka.zip をダウンロードして使ってみた。 use GD::SecurityImage; my $image = GD::SecurityImage->new( width => 300, height => 80, lines => 1, font => q{/Users/cooldaemon/work/test/captcha/Osaka.ttc…

Class::Std

個人で開発している場合は、Class::Accessor や Class::MethodMaker で十分だと思うが、チームで開発する場合は、積極的に Class::Std を使っていこうと思う。 基本的な概念 package HOGE; use strict; use warnings; use Class::Std; { # Attributes my %na…

速度低下

http://hatena.g.hatena.ne.jp/hatenatech/20051125/1133147961 ↑ここを見させて頂いていたら、↓下記の一文を発見。 大西注 perlvarによると Due to an unfortunate accident of Perl’s implementation, "use English" imposes a considerable performance p…

使い方

Perl Best Practices ネタ。ソートを行う際、同じ引数を与えた場合、結果が同じとなる関数を利用する場合・・・ my @numbers = ( 1 .. 100 ); my @sorted_numbers = sort { calc($a) <=> calc($b) } @numbers; sub calc [ # いろいろ時間の掛かる処理 }sort …

DBIx::Class::Loader

隣の先に座っている同僚のIさんに Catalyst を利用した試験アプリのソースを見てもらっていた際に、テーブル名やフィールド名がソース内に存在していないのは何故?と質問されたので、回答を下記に記載しておきます。Catalyst::Model::DBIC では、DBIx::Clas…

使い方

Perl Best Practices ネタ。 constant より Readonly の方が使い勝手が良い。Readonly で宣言した変数は引数展開される use strict; use warnings; use Readonly; use constant NAME => q{cooldaemon}; Readonly my $SEX => q{man}; print "NAME $SEX?n"; # …

おすすめパラメータ

今更ですが 0'REILLY の Perl Best Practices を購入したので読書・・・というか英語が苦手なので解読中 orz 結構始めの方のページに perltidy という文書整形ツールのオプションが載っていたので、早速使ってみる事にした。※MacOSX で fink を利用するとバ…

ユーザ認証とセッション管理のサンプル

Catalyst 5.65 で、下記のプラグインを使って実装してます。 Catalyst::Plugin::ConfigLoader 0.03 Catalyst::Plugin::FormValidator::Simple 0.09 Catalyst::Plugin::FillInForm 0.06 Catalyst::Plugin::Authentication 0.05 Catalyst::Plugin::Authenticat…

svn で source 取得

svn checkout http://dev.catalyst.perl.org/repos/Catalyst/trunk/

Session管理

Catalyst::Plugin::Session::Manager が Sledge ライクで一番便利そう。ただ、Session の保存先は Memcached にしたいので Catalyst::Plugin::Session::Manager::Storage::Memcached とかあると嬉しいなぁと・・・作って作者様に送ったら迷惑かなぁ・・・ DE…

Email::Valid の挙動に疑問が・・・

FormValidator::Simple をインストールする為、依存しているモジュール Email::Valid をインストールしようとしたが・・・ make test で一カ所エラーになる。t/valid.t を覗くと 46 $v->address( -address => 'blort@aol.com', 47 -mxcheck => 1) ? ok : not…

AMF::Perl

昔やった作業のメモ。 Flash Communication Server から CGI を叩きたかったが、Flash Communication Serverは Flash Remoting しか対応していなったので、AMF::Perl を利用。

メール送信モジュール

http://search.cpan.org/~typester/Catalyst-Plugin-Email-Japanese-0.01/lib/Catalyst/Plugin/Email/Japanese.pm

Validator

SledgeライクなValidator http://search.cpan.org/~lyokato/FormValidator-Simple-0.13/lib/FormValidator/Simple.pm http://search.cpan.org/~lyokato/FormValidator-Simple-Plugin-Japanese-0.04/lib/FormValidator/Simple/Plugin/Japanese.pm http://sear…

CatalystのSource

最近、暇な時に見ている場所(w; http://dev.catalyst.perl.org/browser/ユーザ認証の実現方法とか、イロイロ調べる時は http://dev.catalyst.perl.org/browser/trunk:TITLE=trunk をよく覗いてます。ってか、最近は皆 trac 使ってんのねぇtrac-ja を公私…