なつやすみのにっき 9/678

日記パート

6日は相変わらず進捗しなくてはーってなった、恥ずかしい。適切な大きさの課題を選ぶというとこですでにミスってる気がする。まあインターネッツのお勉強はなんだかんだでせねばなあと思ってたのでとりあえず夏休み中中に終われば、ということにしておく。

金沢の友人の家に行った。僕は東京であんな高い家賃でうさぎ小屋みたいな家に住んでたのに彼は32k程度でめちゃめちゃ広い(一人暮らしにしては、だけど。今まで見た一人暮らし部屋の中で一番広かった気がする)いい部屋に住んでて、地価ってスゲーって思った。久しぶりにわーきゃーできてよかった。最近の変身ベルトはすごいということがわかったことと、メルティブラッドをたっぷり遊べたことが収穫。

帰りは金沢駅周辺で18漁ってたら当日使用済みのものが1.3kで手に入って超嬉しかった(店のおっちゃんもギャンブルで仕入れたらしく二人で喜んでた)。頑張って奈良まで帰ってダッシュ近鉄奈良接続でギリ終電だった、すごい。金沢-桜井間を1.8k程度で移動できたわけで、これは僕の人生の中でもトップクラスの高コスパ移動だったと思う。

8日はデレステ進捗してた。

あとMVがすごかった。アイマスすごい、好きでよかった……

勉強パート

お泊り中さすがに遊び呆けるのはなあとおもって(あまりに勉強できてないので本来8日実行だった練習会を延長してもらった手前、もあり)、ISUCON3のnginxでリバースプロキシした際になんでset_header Host $hostしないとリンクがおかしくなるのかなーという疑問を解決しようとめっちゃ悩んでたんだけどなんのことはなくてアプリのurl生成メソッドがリクエストのhostヘッダを使ってたからだってわかって、なんだかとっても「なんだよそれ〜〜〜〜〜〜〜〜〜〜〜〜〜^」ってなった。 あるレイヤーにそれなりに精通してないと問題の切り分けすらできなくてアレだなあと思ういい経験にはなったかな。わかってみればつまらないこと、でもその「わかる」ことこそが知識とか経験とかの力なんだろうと思う。

翌日はまず微分の勉強とかして(収束数列の相加平均の極限がその数列の極限と同じになる証明、結局納得いかなかった), あとはバックエンドのいろいろを勉強したりしてた。なんとなく思い立ってインスタンス再起動するとnginx-ruby実装の組み合わせにしたはずなのにやっぱりapacheperl実装が立ってて、コレ本番だったら死んでたなーと思った。ntsysvとsupervisordについて最低限の知識は得られたということにする。ただ、まだもにょもにょしてるところはあるけど。。。(foremanのgem(bundler)解決あたりとか)

www.obenri.com

blog.anatoo.jp

あとなんとなくnew-relicを導入してみたりしてた。

qiita.com

これの最初の方に書いてるやつでできるのは鯖のモニタリングで、アプリのパフォーマンスはgemを入れてapp_path以下のconfigディレクトリにnewrelic.ymlを持ってきてapp.rbでrequire 'newrelic_rpm'しとけばよい。あ、環境変数RACK_ENVを設定するのを忘れずに。なんかconfig.ruに手を加えろって言ってるエントリが見受けられたが、なくても動いたし、とりあえず。

しかしまあまだ画面の見方もよくわかってなくて持ち腐れ感がすごかった。コレは要特訓かな。 あと適当に予選感想エントリや解説エントリよんでたりしたんだけど、本質的にISUCONは「何をやるか」の戦いであって、「どうやるか」で争っているのは一段階レベルが下だということだった。前の練習ではまずまともに動かすことから躓いたりしてたのでまずそのあたりの本当に基礎的なところを固めないとどうしようもないなーとおもったのでここに書いとく(上のsupervisord云々の勉強もそのあたりからつながった)。

あとnginxのチューニングとか結局そこまでスコアには影響しなくて(諸説ある)、かなりアプリ内のコード改善(SQL含む)が重要だなーってわかったのでインフラ担当としてはせめてちゃんとアプリのアーキテクチャを把握して柔軟に対応できるように努めたい。まあ紙切れほどのDBの知識とRubyの知識ないこともないし、手が開いてる時は自分もアプリコード読むくらいでいいかな。各ミドルウェアの基礎的な操作とか、現状把握力をつけるようにしたい、(たとえばInnoDB memcached pluginとmemcachedの区別がつくようになる、とか。一例だが。)

明日はnginxのキャッシュだけ勉強したらちょっとnginxから離れてオンメモリDBあたりもちょっと調べてみることにする。