2011年10月アーカイブ

DBIx::Sunny::Schemaでは元々サポートしていましたが、DBIx::Sunnyでも対応しました。

https://metacpan.org/module/DBIx::Sunny

DBIx::Sunnyが提供する4つのショートカットの場合のみ利用できます。

$dbh->select_all('SELECT * FROM id IN (?) AND status=?', [1,2,3],TRUE);

’?’を並べる手間が減ります。

YAPC::Asiaの際にnekokakさんやcho45さんが紹介していた、NamedPlaceholderもサポートするか考え中。

$dbh->select_all('SELECT * FROM id IN (:id) AND status = :status',{
    id => [1,2,3],
    status => TRUE
});

こんな感じ

NamedPlaceholderを使う場合、既存のクエリを書き直したり、Placeholder名や変数名を繰り返し書かなくてはならないのが弱点だなぁと思っている。

今年もYAPC::Asiaに参加してきました!

牧さん、941さんをはじめスタッフの皆様、スピーカーの皆様、そして参加者の方、お疲れさまでした。ありがとうー。

去年の発表はcloudforecastでしたが、今年は、「運用しやすいWebアプリケーションの構築方法」としてログ、DBI、memcached、matricsと4つほどトピックをあげて紹介しました。

YAPC::Asiaが始まるまえに id:tagomoris が「YAPC::ASIAで、あるいは他の勉強会で、しゃべりたいこと、聞きたいこと」というエントリーで、以下のようなことを書いていました。

ソフトウェア関連の勉強会に行ってしゃべらせてもらうとき、当然「自分は何をやったのか」を話しに行く。世の中にあるコレがこうなってるよというセッションももちろんあるけど、もちろんその話をする人はカタログを読み上げてるだけじゃなくて、その人が読み、試したことがまずあるはずだ。 きちんとした経験に裏打ちされた紹介セッションは、その人が何を考えてそのソフトウェア/技術に取り組んだのか、何が実際に問題だったのかが透けて見えて面白い

これに触発されたこともあり、単にもモジュールの紹介で終わるのではなく、「なぜ」という部分を多くしました。ぎゅうぎゅうで40分でしたが、1つでも伝わるものがあればいいなと思っています。

まだ試してないけどblog書く。

memcached 1.4.8-rc1がでていますが、touch という新しいコマンドがが追加されています。アスキープロトコル、バイナリプロトコル両方とも使えます。

http://code.google.com/p/memcached/wiki/ReleaseNotes148rc1

touch コマンドは、有効期限をアップデートできる命令で、アスキープロトコルの場合

> touch <key> <exptime> [noreply]\r\n

と使えるようです。データを変更せずにexpiresをアップデートしたい場合に使えるようです。

レスポンスは、有効期限が更新できた場合

TOUCHED\r\n

キーがなかった場合

NOT_FOUND\r\n

です。

そういえば、existsコマンドが欲しいとか聞いたことありますね。



もうひとつ、1.4.8にはさんざん悩まされてきた最大接続数に達したときの動作に、実験的なオプションが追加されています。

$ memcached -o maxconns_fast

今までは、最大接続数に達した場合は、memcachedで新しい接続を受け付けないように(backlogに貯める)して、他の接続が切れるまで待っていましたが、このオプションを付けると、最大接続に達した場合、すぐにエラーを返すようになります。

こっちの方がシンプルだし、バグもなくなるんじゃないかなぁと思うところ。