トップ 追記 RSS feed

HsbtDiary


2015/05/25 (月) [長年日記]

Testing Casual Talks 2 で発表してきた

@ikasam_a さんからあんちぽくん経由で登壇依頼が来たのでちょっと前に構築した ngx_mruby のテスト基盤の話をしてきました。

Testing Casual ということで今回の話はテストのことしか話せなく、そもそもの問題意識であるとか、ngx_mruby の魅力の部分を端折ってしまったので補足します。

  • nginx.conf のテストをするために ngx_mruby を入れたわけではなく、そもそも rails や sinatra のようなアプリケーション・サーバーでやっていることを nginx のレイヤでやることが最初の目的
  • ngx_mruby でやるロジックは、非常にテスト向き(コンテキストの再現がやりやすい)ということに気がついたので、テストをする方法を考えて実現した
  • 実現してみたら、だいぶいける感がしてきたので、nginx.conf の if や正規表現も ngx_mruby に置き換えてテストしたら便利じゃね?

上記のように、そもそもの動機と応用利用の順序を正しく伝えられてなかったなあというのが今回の反省点。発表後に卜部さんから「そもそもビジネスロジックを nginx とかにやらせるなってのが定石じゃん」という質問をもらったのですが、「少なくともぼくはテストが出来るようになった今は意図的にビジネスロジックを ngx_mruby に持っていくべきだと思っているんですよ〜。」という話をしたりしていました。こういう定石をぶち壊すソフトウェア、最高にロックですね。

今回はテストだけでしたが、プロダクションのユースケースやデプロイどうやってんの、という話は来週の RDRC 2015 で話すので、興味がある人はシンガポールまで来てください。


2015/05/24 (日) [長年日記]

docker で centos7 の ngx_mruby バイナリをビルドしてみた

docker よくわかってないので見よう見まねで centos 7 の ngx_mruby バイナリをビルドしてみた。Dockerfile はこんな感じ。

https://gist.github.com/hsbt/f5a3a83ec2ebf8169f38

FC21 の libmemcached-devel を使っているのは centos 7.1 でもパッケージが壊れていて動かないため。これを

$ docker build --tag=nginx_mruby:centos7 --file=Dockerfile .

という感じでイメージビルドしてから

$ export DIR=`pwd` && docker run --volume="$DIR:/tmp:rw" --user=root "nginx_mruby:centos7" "cp" "-a" "/usr/local/src/nginx/objs/nginx" "/tmp"

という感じで手元(OSXなど)に持ってくる。だいたいキャッシュされて高速に動くので便利。


2015/05/23 (土) [長年日記]

nasne の外付け HDD が壊れた

これで torne を使い始めてから、PS3 故障、nasne の外付け HDD の故障が 2 回と合計で 3 回目。

さすがに諦めるまでの時間は早くなったけど、旅行前に改めて見ようと思っていた美術番組とかまで消えたのは厳しいなー。いい加減、システム間(外付け to nasne 内蔵) くらいのデータ転送は出来るようにしてほしい。

プリンタが壊れた

2007/12 に買ったプリンタがついに壊れてしまった。シンガポールの旅行に関する諸々を印刷するために起動したら、どうやってもインクカートリッジを認識せずに印刷することができないので、修理やカートリッジ買い替えなどを試みずに捨てることにした。

改めて確認してみたら 7 年以上も使っていてびっくりしたけど、もう家にプリンタを置くような時代でもないので、ほんとうに必要に迫られるまでは買い替えをしないで過ごしてみる。