2014-01-01から1年間の記事一覧

カジュアルに実行時間を計測する

go

isuconの予選で、カジュアルにここどれぐらい時間がかかっているか計測したい、ということで作った。 pprofは(使い方間違っているだけなのかもしれないけど)CPU時間での計測なので、io待ちとか、channel待ちとかの時間は出てこないので、web applicationのチ…

config/routes.rbを分割する

とあるサービスのconfig/routes.rbが肥大化してきたので、分割したくなっていたので、調べていた。ググってみると色々方法があるらしいが、バージョンごとにやり方が違ったりしてげんなりする。 よく出てくるconfig.paths["config/routes"]をいじる方法は、…

続: CollectionViewで初回はemptyViewを表示しない

前のやつは、あまりよくない方法だなぁとは思っていたのですが、ちゃんとしたやり方っぽいのがあった。"collection:rendered" triggerにフックすればよいようだ。Marionetteだと、triggerMethodというのがあって、triggerでも対応できるし、OnCamelCaseみた…

CollectionViewで初回はemptyViewを表示しない

あんまりよいやり方じゃないので、http://walf443.hatenablog.com/entry/2014/07/10/120223 を参照してください。Marionette.jsのCollectionViewのemptyView機能は、collectionが0個になったら勝手に「データがありません」などの表示をしてくれて便利なのだ…

Unicornでslow restart

Unicornの同時接続数がわりと少ないのに気づいたので、えいやとworker_processesを増やしたら今度はdeploy時にちょっと詰まり気味になってしまった。これは、deployのタイミングで重いシステムコールであるforkを連発するため、と思われる。そこで、Startlet…

TCPListenerのファイルディスクリプタを調べる

ListenしているSocketのfdを知りたいが、net.Listenerのインターフェースをみても取得する方法がないのでググったら、http://naoina.plog.la/2013/11/12/235753683181こんな記事をみつけた。Socketからfdが取得できないのは、POSIX縛りになるからだと思われ…

動いているVMにNatのポートフォワードの設定をCLIから変更する

Dockerをローカルで実行できるようになっても、ポート転送を手動で設定しないといけないのがつらいので、コマンドでやれるようにするのを調べた。 VBoxManage controlvm boot2docker-vm natpf1 "node,tcp,127.0.0.1,49160,,49160" VBoxManage controlvm boot…

OSXでDockerを試す

雪がひどすぎて外出る気がしない。あー、そういえば、DockerがOSX対応したっていうし、ぼちぼち試してみるかー、と思って http://docs.docker.io/en/latest/installation/vagrant/ みてみたけど、あんまりかわってない気がする、というみなさんこんにちは。…

Server-Sent Events覚え書き

なかなか書く機会はなかったのだけど、ふと使えそう!、という場面があったので、Server-Sent Eventsを書いてみたのでメモ。 レスポンスのContent-Typeはtext/event-stream dataを組み立てる際は、改行(\r, \n, \r\n)をエスケープする。 http://www.w3.org/TR…

HTML Media Captureの記述の仕方

webでHTML Media Captureについてググると、上の方にでてくるコンテンツはわりと、 <input type="file" accept="image/*;capture=camera" /> とか、 <input type="file" accept="image/*" capture="camera" /> とか書いてあったりするのだけど、http://www.w3.org/TR/html-media-capture/ を見たら、 partial interface HTMLInputElement { attribute boolean capture; };の…

mod_proxy_balancerで振り先が//にならないようにする。

<Proxy balancer://app> BalancerMember http://192.168.0.1/ </Proxy> <VirtualHost *:80> ProxyPass / balancer://app/ </VirtualHost> のように、BalancerMemberの定義の末尾に"/"をつけると、振り先で、//に対して振るようになってしまうっぽいので、つけないように気をつける。 <Proxy balancer://app> BalancerMember http://192.168.0.1 </Proxy> <VirtualHost *:80> P</virtualhost>…

dalliはfork safeか?

ふと、dalliがunicornなどのmulti processで動作するアプリケーションで動かしたときにコネクションを張りなおす処理をしないといけないか気になったので、調べてみた。 gist8284358これを実行してみると、 true 1 I, [2014-01-07T00:27:41.396287 #9290] IN…

pidファイルの管理をする

pgrep -F pidfileオプションを使うと、pidfileを開いて、その中にあるプロセスIDが存在するか調べ、存在している場合には、0で終了してくれるようだ。 なので、起動スクリプトとかで、pidfileの存在チェックとかをするときには、 if test -e $PIDFILE && pgr…

なるほどUNIXプロセス

http://tatsu-zine.com/books/naruhounix 帰省中の新幹線でナルホディウス!しながら読んだ。 中身としては思っていたよりはライトな内容で、わりと知っていることだった。 Resqueのworkerが毎回worker実行するときにforkするのはなんでだろーと思っていたの…

はてなブログへ移行しました

はてなブログがでてからだいぶ経過して、ぼちぼち、はてなダイアリーもいつ終了してもおかしくないかなという気もしたので、いい加減重い腰をあげて移行しました。 今年は、去年よりもうちょいコンスタントに書けるようにがんばろうと思います。なるべく休日…