Perl

lighttpd + virtualhost + fastcgi + Catalyst

半日に及ぶ試行錯誤の結果 最新版 lighttpd(1.4.15) バーチャルホストを有効 fastcgi を使用 複数 Catalyst アプリの実行 に成功したので、その設定をメモしておきます。お金がないので、とりあえずひとつのサーバーでサービスをたくさん起動したい、とい…

デフォルトアクションの取り扱い

scaffold で作成したコントローラでは、default : Private になっていると思いますが、これだと引数の取り方が微妙です。http://d.hatena.ne.jp/holidays-l/20070516/p4 を見て初めて知ったのですが、default : Path にすると期待通りの動作になります。マニ…

Catalyst::Plugin::I18N

言語ファイルを事前に po から mo ファイルに変換しておくと、以下のように取得できることがわかりました。これなら、ハッシュの値を上書きすれば、お客さんごとの言語ファイルを使えるかもしれません(それは国際化と別次元だろ!!というつっこみはおいと…

Catalyst-Plugin-CRUD (4)

第1回 第2回 第3回 第4回 先ほどのエントリーまでで、モデル・ビューを作ったので、最後にコントローラです。といっても基本的なコントローラはもう作られていますので、そんなに必要なことはありません。 TinyURL/lib/TinyURL.pm の修正 以下のように修正し…

Catalyst-Plugin-CRUD (3)

第1回 第2回 第3回 第4回 さきほどのエントリーまでで、モデルは作ったので、次はビューです。Catalyst::Plugin::CRUD は Template::Toolkit と ClearSilver に対応しています。HTML::Template は要望があれば対応させようと思います。 Template::Toolkit を…

Catalyst-Plugin-CRUD (2)

第1回 第2回 第3回 第4回 インストール方法 最初に DBDesginer4 をインストールします Windows版、Linux版どちらでもかまいませんが、Windows版しか検証していません・・ 次に Catalyst::Plugin::CRUD をインストールします $ su - # cpan Catalyst::Plugin:…

Catalyst-Plugin-CRUD (1)

これから数回にわけて Catalyst::Plugin::CRUD の紹介をしていきたいと思います。 第1回 第2回 第3回 第4回 概要 Catalyst::Plugin::CRUD は Catalyst ベースのフレームワーク(もどき)です。データベースを使ってデータを「新規作成・詳細参照・更新・削除…

Catalyst の導入が RoR よりメンドクサそうな件

Catalyst のインストール自体は $ su - # cpan cpan> force install Task::Catalystのようにやれば大体OKなのですが(いちいちエラーなんか気にしていたら面倒くさすぎてやってられません)、開発陣の方は当然、最新 Perl 環境+PC-UNIX(Linux, MacOSX)を…

Catalyst::Plugin::CRUD リリース

0.16 をリリースしました。本バージョンから Template-Toolkit と ClearSilver の2つのビューに対応しています。モデルは従来どおり Class::DBI と DBIx::Class の2つに対応しています。http://search.cpan.org/~bayside/Catalyst-Plugin-CRUD/このプラグ…

Catalyst::View::ClearSilver を使いこなす

C言語で書かれた超高速なテンプレートエンジンの ClearSilver ですが、Catalyst 界隈ではあまり使われていないようなので、今回は TT では実現されていることを ClearSilver で実現してみます。 ウェブアプリケーションの国際化 リクエストパラメータの取得 …

ネタにマジレス

YAPC::Asia 2007 ライトニングトークの映像です。なぜか、うちの会社が画面の左隅にさらされています。 use Shanon::Catalyst;って・・・。LLT のつもりで作ったのに2時間半かかる*1内容になっちゃったんでしょうか(w *1:あなたがRuby on Railsを使わない1…

OSC 2006秋(仕事系)

スポンサーセミナー 13:00-13:45オープンソースカンファレンス2006秋 において、「Perl on Rails 〜Catalystを使ったエンタープライズアプリケーションの構築〜」 という題目でセミナーを行います。Catalyst というのは Perl 製オープンソースウェブアプリケ…

Catalyst::Plugin::I18N と Catalyst::Plugin::Charsets::Japanese の競合

Catalyst で、国際化に必須な I18N と Template-Toolkit で EUC などの日本語を文字コードを使うための Charsets::Japanese を一緒に使おうとすると、テンプレートの日本語が化けるようです。どちらかのモジュールがメソッドをオーバーライドしてしまってい…

Amazlet Tool for はてなダイアリー (2)

前回は CGI でちまちま作りましたが、今回はそれを MVC でオブジェクト指向なプログラムに書き直してみます。お手軽なウェブアプリなら Catalyst が一番です。しかし、Catalyst と SOAP::Lite は 相性が悪いらしいので、さらにお手軽に Net::Amazon を使って…

PHPサイバーテロの技法

PHPサイバーテロの技法―攻撃と防御の実際出版社/メーカー: ソシム価格: ¥ 1,890メディア: Book遅まきながら注文しました。ウェブアプリの脆弱性について非常に詳しく、網羅的に解説されています。自分は Perl プログラマですが、ウェブアプリの開発者、サー…

Amazlet Tool for はてなダイアリー (1)

id:Akkiesoft にインスパイアされて、改造版 amazlet ツール を作ってみました。はてなダイアリー市民向けに最適化してあります。検索後にテキストエリアに表示される文字列をコピペすると、asin:XXXX:detail で作ったのとそっくりなリンクが作れます。ア…

Catalyst::Plugin::ModuleRefresh

いま開発している Catalyst のアプリケーションはクラスが 450 個以上!!もあるので、テストサーバーを起動するだけで30〜40秒もかかってしまいます。一行修正するたびにテストサーバーを再起動しなければいけないので、ちょっと変えてすぐ実行するスク…

YAPC::Asia 2006 Tokyo

YAPC (Yet Another Perl Conference) 参加してきました。業務でこういうところに行けるのは自分たちが主催しているイベント以外でははじめてだったので、行く前からドキドキでした。 Welcome -- Tatsuhiko Miyagawa Perl界の重鎮、id:miyagawa のあいさつ。…

オープンソースカンファレンス

講師と Mona の展示とライトニングトークと懇親会で大忙しでした。運営側はもっと大変だったと思います。お疲れ様でした。 Perl on Rails な Catalyst の紹介 Catalyst の魅力は伝わったと思いますが、意見もいろいろありました。貴重なご意見として今度の発…

オープンソースカンファレンス2006

OSC2006の準備進行中です。2つのプロジェクトを掛け持ちするとしんどいです。でもがんばります。http://www.ospn.jp/osc2006/外見上は硬そうですが、中身はお祭りなので結構楽しいですよ。もちろん私服で大丈夫です。私は、Mona のブースと Catalyst のセミ…

Perlでtry catch

Java ではよく見かける try catch 文、 public Object bug() throws Exception [ throw new Exception("!!!"); } public void hoge() { try { Object obj = bug(); } catch(Exception e) { // } }なんと Perl では以下のように書くことで実現できるそうです…

Ruby on Rails vs. Catalyst

まだ読んでいませんが、オープンソースマガジン3月号に載っているようです。id:babie さんの 紹介記事Perl も結構歴史の古い言語ですが、Perl on Rails な Catalyst はまったく話題に載りません。単に宣伝が下手なのか、宣伝したくないんですかね・・。OSC20…

簡単なアプリケーション

とりあえずモデル使わずに、 アプリケーションクラス ベースコントローラ ベースビュー コントローラ2つ ビュー2つ を用意してみました。 package Hello; use strict; use warnings; use Catalyst qw/-Debug Dumper Static::Simple/; our $VERSION = '0.01…

mod_perl

Apache1.3.X + mod_perl で Catalyst アプリケーションを実行するためのメモです。 catalyst.pl Hello でサンプルアプリケーションを作ります /etc/httpd/conf/httpd.conf に以下の設定を追加します <IfModule mod_perl.c> <Location /hello> PerlSetEnv PERL5LIB /home/hogehoge/public_html/Hello</location></ifmodule>…

sendmail ハック

/usr/sbin/sendmail と /usr/lib/sendmail にこのプログラムを置くと、sendmail や qmail がインストールされていなくてもメールが送れちゃいます。日本語もオーケーです。'mail.hogehoge.com' の部分は適宜変更してください。 #!/usr/bin/perl -w use stric…

Perlでスタックトレース

Java で開発していたときは、エラー発生時に e.printStackTrace() や new Throwable().printStackTrace() でスタックトレースを出力していました。これがないと目隠しでデバッグするようなもので、開発段階では必須でした。Perl でも Devel::StackTrace とい…

カタリストはじめました

最近は Perl の記事がカタリストの記事になりつつあるのでカテゴリーを追加しました。

Log4perl 拡張

use Data::Dumper をいちいち書くのが面倒なので Log4perl.pm に dumper メソッドを追加していたのですが、「Log4perl.pm を直接いじっちゃだめ〜」と怒られてしまったので、 Log4perl のアダプタークラスを書きました。これで $c->log->dumper("hoge object…

Use of uninitialized value

perl -w をつけて実行していると、よく「Use of uninitialized value」という文字列にお目にかかります。これは Java でいえばヌルポ、C や C++ でいえば強制終了なので、本来ならワーニングレベルの話ではありません。Perl がいかにいい加減で寛容かを示す…

メソッド呼び出しではまったこと

これは動くのに、 package Hoge; sub fuga { } package main; # OK Hoge->fuga(); # OK my $a = 'Hoge'; $a->fuga();これが動きませんでした。 package Hoge; sub fuga { } package main; # NG 'Hoge'->fuga();これがたまたま動いているのか、Perl の仕様な…