kopug memo

名古屋で働くとあるWebエンジニアの覚書。

Perl

正規表現でスペースは\sじゃないよ。

めんどいからコードと実行結果を。 $ vi hoge.php$ php hoge.php ok$ vi hoge.pl#! /usr/bin/perl -w use strict; my $str = "abc\r\n"; print $str =~ /\s/ ? "ok" : "ng"; $ perl hoge.pl okいかん、ずっと勘違いしとった。。

Catalystのソースを見ていたら二項演算子スライスを使ってハッシュの初期化をしていた

Catalyst::Dispatcherを見ていたら二項演算子(Multiplicative Operators)スライスを使ったハッシュの初期化をみつけた。 @{ $self->registered_dispatch_types }{@classes} = (1) x @classes; で、これを分かりやすく変えると下記のようになります。 use Dat…

mod_perlで同じパッケージ名だけど中身が違うスクリプトを使いたい

これ以前どうやるのか悩んだのでメモっとく。MyApp というパッケージ名があって、httpd.confはこんな感じだった。 # Set up your Catalyst app as a mod_perl 2.x application in httpd.conf PerlSwitches -I/var/www/MyApp/lib # Preload your entire appli…

Cache::Funky in Catalyst

id:tomyheroにCatalystでCache::Funkyをどう使うんだ?と聞かれた。 ま、正直どう使うのが正解なのか良く分からないんだけど、modelで実装してみた。 package MyApp:Web::M::kopugDB; use strict; use base 'Catalyst::Model::DBIC::Schema'; use NEXT; __PA…

Task-Catalystをインストールした時に入ってきたモジュール一覧

昨日インストールしたばかりのCentOS5に cpan install Task::Catalystを実行した時に入ってきたCPANモジュールのリスト。 Algorithm-C3-0.07.tar.gz AppConfig-1.64.tar.gz Archive-Tar-1.32.tar.gz Archive-Zip-1.18.tar.gz Array-RefElem-1.00.tar.gz Auth…

Cache::FunkyでCacheの管理をしようじゃないか。

先日CPANに"Cache::Funky"というモジュールをUPしてみた。 名前だけだとCache関係ぽいのは伝わるけど、それ以上は分からないのでちょっと説明。Cacheと一言でいっても、Cache::Fileを使う方法からFastMapだったりMemcachedだったりStorage先は色々。 また、C…

Catalyst::Plugin::ConfigLoader::Multi

id:tomyheroにPODを書いてもらいました。 やっぱ英語がすらすら書けるってのは羨ましい。 てことでCPANにUploadしておきました。 Cache系のModuleも今書いてます。 もうじき早朝5時ですがな。orz

18歳以上の生年月日チェック

splitのほうが速度的によさそうなので変更。(これくらいじゃ大差ないけど) sub static_birthday { my $date = shift; my $args = shift; # この年齢以上じゃないと登録できない。 my $over = $args->{over} || 18; return 0 unless &static_date( $date ); …

量子化行列

FFmpegでごにょごにょしてるとタイトルの単語と出会った。ttp://www.nnet.ne.jp/~hi6/lab/quantize/index.html謎は謎のままです。orz

mod_perlでApacheを拡張

あるディレクトリ配下にアクセスするのは「ほにゃらら制限」を設けたい。しかしApacheの設定だけではできんよ。 と言った場合、こんな感じでできるっぽい。httpd.conf <Location /> PerlAccessHandler MyApache2::BlockByIP </Location> package MyApache2::BlockByIP; use strict; …

Reverse Proxyの後ろにCatalystアプリを置いてみた

前回PODだけ貼り付け、検証すると言ったので検証した。 http://d.hatena.ne.jp/kopug/20061201構成 ( Rooter ) | [Apache2.0 mod_proxy] | [Apache2.0 mod_perl Catalyst ]Frontendのhttpd.conf <VirtualHost *:80> ServerAdmin webmaster@example.com DocumentRoot /var/www/f</virtualhost>…

Catalyst で Template::Filters::LazyLoader を使ってみた

package MyApp::V::TT; use strict; use base 'Catalyst::View::TT'; use Template::Filters::LazyLoader; __PACKAGE__->config(TEMPLATE_EXTENSION => '.tt'); __PACKAGE__->config( FILTERS => do { my $lazy = Template::Filters::LazyLoader->new; $lazy…

Catalyst を Reverse Proxy の後ろに置く場合

perldoc Catalyst PROXY SUPPORT Many production servers operate using the common double-server approach, with a lightweight frontend web server passing requests to a larger backend server. An application running on the backend server must d…

DBIC de Replication

CPANには無いけど、こんなのを発見した。 http://dev.catalyst.perl.org/trac/bast/browser/branches/DBIx-Class/replication/lib/DBIx/Class/Storage/DBI/Replication.pmソースをざっと見る感じだと DBD::Multi がコアになるのかな。 基本的にシンプルな実…

DBICいいな

1年ほど前に話は遡るが、カミさんが非常食だと大量にインスタントのおかゆを買い込んだことがある。 で、久々に非常袋チェックをしていると賞味期限の切れた大量のおかゆが出てきてしまい、 さすがに賞味期限切れてから3ヶ月もたつものを、食べるのも怖いの…

CatalystのModel中で$cを使いたくなった

$c はModel内では基本的には利用できない。( $c->forward() で呼んだ場合は別 ) コントローラ内でModelを呼ぶときはこんな感じ。 $c->model('Hoge')->orz(); で、ちょっと強引に$cを使える似非モデルプラグインを作ってみた。準備: package MyApp; use Cata…

CPANモジュールをどう管理するか

長々がんばって書いたんだけど2回クラッシュして消えてしまった。 いい加減反省してエディタで書いてからコピペすることに。orz先日の日記にRPMで管理できるものは管理したほうが依存関係の解決や、 その他のトラブルに巻き込まれにくくなるみたいな事を書い…

Recursive Method

package RecursiveMethod; use strict; use warnings; use Carp; use vars qw/$AUTOLOAD/; sub new { my $class = shift; my $args_ref = shift || {}; bless $args_ref,$class; } sub AUTOLOAD { my $self = shift; my ($method) = ( $AUTOLOAD =~ /.*::(.+…

Perlで日本語(ISO-2022-JP)メールを送信(まとめ)

UTF-8で作成されたメール本文をMIME::Lite及びEncodeを使用してメールを送信をする。 そこで問題となってくるのが下記の3点。1.チルダ(全角)等の文字化け("〜 ‖ − ¢ £ ¬ ") 2.機種依存文字が含まれていた場合の対応 3.MIME::Lite で smtp送信する…

mod_perl2 で Hello World!

なにごとも最初はHello World! とりあえず作業記録は下記。 Make Documentroot # mkdir -p /var/www/mydev/html Make LIB Directory # mkdir -p /var/www/mydev/lib/MyApp Make script Directory # mkdir /var/www/mydev/bin Create startup.pl # vi /var/ww…

追記

面倒になって結局ソースから普通にいれちゃいました。すいません。orz 上の依存モジュールってこのRPMに入ってるはずなんだけどなー

RPMでmod_perl2をインストール

うちのサーバはCentOSなので、Redhat系です。 Redhat系はアプリケーション管理をRPMで行なうので、その流儀に従います。まずyumリポジトリにmod_perlが存在するかを調べてみる。 $ sudo yum search mod_perl mod_perl.i386 1.99_16-4.centos4 base このblog…

CPANモジュールを共存させる

通常CPANのモジュールをインストールする場合こんな感じですよね。 $ sudo perl -MCPAN -e 'install Module::Recursive::Require' または、 $ sudo cpan Terminal does not support AddHistory. cpan shell -- CPAN exploration and modules installation (v…

利用しているCPANモジュールとバージョン情報を取得する

use Data::Dumper; my @modules_info = (); MODULE_LOOP: for my $module_path (keys %INC) { $module_path =~ s/\.\w+$//; $module_path =~ s/\//::/g; # * CPAN モジュールじゃないものはここで省く next MODULE_LOOP if $module_path =~ /^MyApp/; my $mo…

今さらですがHashはArrayです。

Perlのハッシュは配列で出来てます。 例えば、 use Data::Dumper; my %hash_1 = ( name => 'キン肉マン' , preference => '牛丼' ); my %hash_2 = ( qw/ name キン肉マン preference 牛丼 / ); print Dumper \%hash_1; print Dumper \%hash_2; %hash_1 と %h…

Pod::Coverage インストール

# cpan install Pod::CoverageWarning: this distribution contains XS files, but Module::Build is not configured with C_support at /usr/lib/perl5/site_perl/5.8.5/Module/Build/Base.pm line 1125. Checking prerequisites...orz..ExtUtils::ParseXS…

Perl6::Pugs

長々書いていたのですが、ポストしようとしたところで消えてしまい、萎えました orzてことで箇条書きでメモ残します。get Haskell - $ wget http://haskell.org/ghc/dist/6.4.1/RedHat9.0/ghc-6.4.1-1.i386.rpm $ wget http://haskell.org/ghc/dist/6.4.1/Re…