2011-04-01から1ヶ月間の記事一覧

AnyEventでJSONを読み書きするサーバをMessagePackを読み書きするサーバに書き換える

JSONを読み書きするサーバを作ってたんだけど、転送量を減らしたかったのでMessagePackを読み書きするように仕様を変更した。use AnyEvent::MessagePackするとAE::Handleのpush_readとpush_writeにmsgpackが生えるので、ほぼ直しなしで書き換えれる。コード…

時間かかるプロセスが終わったときにGrowlで通知してくれるやつ

時間かかる処理(homebrewでなんかインストールしてるとかcpan-outdated | cpanm)してるときに、その処理が終わったタイミングでGrowl通知してくれるといいのになーって思うときがあるのでやっつけで書いた。10秒ごとにチェックしてるのでほんとのリアルタイ…

PSGIアプリのテスト方法

webアプリのテストに関して、Modelについては結構テストしやすいからちゃんとテスト書いてること多いと思うのだけれど、Controllerやviewはテストがしにくいのでテストを書かないなんてことがよくあると思うのだけれど(ぼくだけか?)、PSGIアプリならばTest:…

CPANモジュールガイドをざっと読んだ

とても良い本です。一人一冊開発時に手元に置いておきたいですね。一点、Email送信モジュールにEmail::Sendを挙げているんだけど、CPANでチェックすると今はEmail::Senderのほうが推奨されているみたい。 著者の @tomita さんに質問したところ、以下のような…

tcpサーバのテストするときにはTest::TCP使うとよい

TCPサーバを書いてると、どうしてもテストが面倒だなーって思う。テストスクリプトの中でサーバを立ち上げないといけないし、サーバ立ち上げるってことは処理が戻ってこないわけだから、テストの中でforkしてサーバ立ち上げて、とかいろいろ考えなきゃいけな…

twitterってuser_idとscreen_nameがあるけど、user_idでその人のホームに行けないの不便だよね

web

user_idが連番(?)で振られる一意のid(変更不能)で、screen_nameが@hogehogeってやつ。screen_nameは変更可能。user_idでそのひとのホームにアクセスできると便利なのになー、って思いました。

on memoryで動きつつディスクにスナップショットをとってくれるRedisが便利そうって話

リアルタイム性の高いサーバを書いていると、RDBでは要件を満たさないことが多くて、そういうときにいわゆるNoSQLなプロダクトを使うことがよくあるわけだけれど、今日調べたRedisについてメモ。Redisも最近よく聞くNoSQLなプロダクトのひとつで、on memory…

1ユーザあたりに許す帯域の目安

MMOとかの、コネクションを張りっぱなしで常時通信が行われるC/S型のアーキテクチャの場合、大量に通信を行われてしまうと帯域が食いつぶされてサーバコストが半端じゃないことになる。そこで、1人あたりの通信量をなるべく小さくおさえる工夫が必要。中嶋謙…

Email::Sender使ったコードをテストする際、deliveriesを空にする

ドキュメント探しても載ってなかったからソース読んだ。Email::Sender使ってメール送信する際、テストスクリプト内では$ENV{EMAIL_SENDER_TRANSPORT} = 'Test' することで簡単にテストできる。その際送信された(とみなされた)メールはEmail::Sender::Simple-…

Controllerのテストってむずかしくね?って話

webアプリ作るときに、Modelに関してはいつもちゃんとテスト書いてるから、そこに関しては結構安心して手を入れられるんだけど、Controllerってテスト書きにくくてけっきょくテストを書かないみたいなことが多い。けどユーザに見せるためのエラーメッセージ…

メール送信に使うやつ

Email::Sendをつかってたんだけど、out of dateなモジュールなのでEmail::Senderに乗り換える。Email::Sendの時はテストコードを書くときに、コンストラクタに{ mailer => 'Test' }を渡してやる必要があって、ロジックにmailerをハードコーディングしちゃっ…