Re:DBIx::Skinnyを使ってみた。

http://d.hatena.ne.jp/makotoworld/20100128/1264667446

test.pl内に幾つか間違い等があります。

まず、

use Web::DB::Schema;

my $db = Web::DB::Schema->new;
$db->connect({dsn => 'dbi:mysql:test:3306;user=root;password=example;'});

この部分は

use WebMemo::DB;

my $db = WebMemo::DB->new;
$db->connect(
    {
        dsn      => 'dbi:mysql:test',
        username => 'root',
        password => 'example'
    }
);

このようになるはずです。
次に、

# SELECT * FROM webmemo WHERE id = 1 limit 1;
# を実行
$row = $db->single('webmemo');

ですが、これは発行されるSQL的には

SELECT * FROM webmemo limit 1;

になります。


また、MySQLを使うときにどういうところで躓いたのか教えていただけるとありがたいです。
結構エラー処理でわかりにくい場合があるかもしれないので、どしどしご意見ご要望おまちしております。

独自row拡張の拡張

http://d.hatena.ne.jp/magicalhat/20100118/1263745674

こちらでto_jsonのメソッドを生やすのに大変な思いをさせてしまいましたが、
先程独自Rowをもう少し拡張しやすいバージョンをgithubにpushしました。

http://github.com/nekokak/p5-dbix-skinny/commit/2bd156a7d4c08cb621197105c3652151e86675d5

これのサンプルが

http://github.com/nekokak/p5-dbix-skinny-sample/commit/1123d7b92bfcb28e8afda7cf3dbc030854202050

こちらになります。

簡単に解説すると、

Demo::DBがSkinnyを利用するクラスとすると
Demo::DB::Rowというクラスを定義してここにto_jsonメソッドを用意してあげます。
するとSkinnyでは内部でDemo::DB::RowをベースのRowクラスに利用するので、
to_jsonメソッドが利用できるようになっています。

また、
http://d.hatena.ne.jp/magicalhat/20100119/1263870619
こちらではイテレータにto_jsonメソッドをはやしていますが、
こういうのはRow側でto_jsonできるメソッドがあれば
あとは使う側でmapするだけですね。

my $itr = $db->search('user');
my @json = map { $_->to_json } $itr->all;

なので、無理にイテレータにメソッド生やす必要はないと思いますです。

Test::Declareの今後について

http://d.hatena.ne.jp/tokuhirom/20100118/1263800343

こちらに書かれているようにTest::Moreのsubtest機能をつかえば、
Test::Declareに近い書き方ができます。

また、Test::Declareでやりたかったtestの件数を数える機能も
Test::Moreのdone_testingを使うことで対応可能なので、
今後Test::Declareを積極的に開発するつもりはありません。

ということで取り急ぎ。

NoPaste

Kamuiを使ったサンプルとしてNoPasteをつくっていたので微調整して公開してみた。

http://nopaste.nekokak.org/

NoPasteはサンプルアプリの事始めとしては分量的に最適ですね。

ということでこのNoPasteのコードは普通にgithubにおいてあるので良かったら参考までにどうぞ。

http://github.com/nekokak/p5-Idiot

構成的にはWAFにKamuiをつかって、DB周りでDBIx::Skinnyを使っているくらいです。

nekokak.orgの構成

明けましておめでとうございます。
箱根駅伝の5区で今年も感動したnekokakです。

nekokak.orgというドメインで自分のサイトを作ってるんですがそこのサーバを新しいvpsに載せ替えたので
構成を変えてみました。

http://nekokak.org/
http://blog.nekokak.org/

構成的には
http://perl-users.jp/articles/advent-calendar/2009/hacker/23.html
こちらを参考にしつつ

前面にperlbalを配置して
cgiに当たる部分をPSSPSSでまかなっています。


perlbalは静的コンテンツ配信サーバとしてもつかえるので、
画像やcssなどの静的なものはPSSPSSに回さずにperlbalでレスポンスを返すようにして、
動的に処理するものだけPSSPSSにreverse_proxyするようにしています。


nginxとかつかってもよかったんですけど、
なんとなくなれてるperlbalでやってみました。
nginxの設定方法調べるのめんどくさかったので。


Perlbalで静的コンテンツと動的コンテンツを切り分けるのに
http://github.com/nekokak/Perlbal-Plugin-UrlGroup
これを使っています。


Perlbal::Plugin::UrlGroupを使えば拡張子でどのサービスに振り分けるかが簡単にかけるので便利です。


また、http://blog.nekokak.org/
こちらの仕組みは自作WAFのkamuiを使って作っています。
http://github.com/nekokak/p5-Kamui

kamuiはSledgeを参考にモバイル系のプラグインをデフォルトで用意しています。
まぁまだ開発バージョンなんですが、今後使い込んで良く予定なので
ぼちぼち宣伝できればいいなと思っております。

ということで、今年もヨロシクお願いしますです。

2009年と私

いきなり2009年を振り返ってみようかと思った。

今年はいろいろアウトプットができたきがします。
DBIx::SkinnyもQudoもCPANにupしたし、
Yokohama.pmYAPC::Asiaでも発表することができました。

Skinnyはいろいろな人に興味をもっていただけたのがとても嬉しかったです。
Skinnyの思想をベースにした他のプロダクトを開発するひともあらわれたりしたのも嬉しかったです。
Skinnyは現在アドベントカレンダーが進行中なので、
興味のある方はそちらをチェックしていただければと思います。
http://perl-users.jp/articles/advent-calendar/2009/dbix-skinny/

Qudoも個人的にはなかなかいい感じで仕上がってるので今後のエンハンスメントも頑張りたいところ。

また、PSGI/Plackが登場したことで作り始めたKamuiというプロジェクトも
個人的にはいい感じで仕上がりつつあるとおもっています。

ほんと今年はいろいろなインプット/アウトプットがあったなぁと思いました。
来年もどんどんいろんな事を吸収してどんどんアウトプットできればと思います。
Skinny/Qudo/Kamui全てに当てはまるのがドキュメントの少なさなので、
来年はその辺をどんどん良くしていければいいなと思っています。

ということで、近くモバイルファクトリーを退職することとなりました。
退職後もどうぞよろしくお願いいたします。

DBIx::Skinny Advent Calendar 2009

perl-users.jpで今年もAdvent Calenderが始まっています。

http://perl-users.jp/articles/advent-calendar/2009/

私はもともと3日目でDBIx::Skinnyについて書くつもりだったんですが、
1モジュールだけでAdvent Calendarするのもありだよねということで
挑戦してみる事にしました。

http://perl-users.jp/articles/advent-calendar/2009/dbix-skinny/

もう2日ですが、アップは1日にしてあります。
どこまで続くか分かりませんが、最近していなかった情報発信になったらいいなーと思ったので
頑張ってみるつもりです。

Skinnyを使ってる人で書いてみたいーという人がいれば言ってください。
特にid:nekoya

どうぞSkinnyをよろしくお願いします。