ここ1ヶ月くらいの近況
#isucon 参戦記がフォロワーの多い@tagomorisさんとか@nitro_idiotさんとかにツイートされて普段の数十倍のアクセスが来てテンション上がったので近況書きますね。
isuconの勉強
件の記事でも書いてますけどMySQLとNginXとCapistranoの勉強しました。SQLって書けると案外楽しいですね。あとN+1問題を学んだり、IF EXISTS TRRIGER
的な文がなくて殺そうかと思ったり。
NginXはキャッシュとかですね。キャッシュキーに$cookie_isucon_session
とか入れてログインしてるユーザーが来ても対応できたので良かったです(小並感
Capistranoはどうせだからと3.0を使ったのですが調べても2.x時代の情報ばっかり引っ掛かって苦労しました。その代わり、isucon本戦では複数サーバーへのデプロイ機能を存分に使わせて頂きました。ほぼログインしなくても問題ないですね。
例えば
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
こんな感じです。で、もう一つ
1 2 3 4 5 6 7 8 9 |
|
を書いておけばこの3台のサーバーに一斉にデプロイしてくれます。(上の例だとnginxですが、まあいいでしょう。)
Shibuya.lisp
Lisp Meet Up #10で発表してきました。内容はfluentd
をCommon Lispから使う話。
スライド
Common Lisp でビッグデータを作ろう from blackenedgold
Ustreamは見つかりませんでした。てへペロ
恐らく、Log4CL
はやりたいことと目的が違いますね。全く別のロギングフレームワークを作るのが良さげな気がします。isuconの懇親会で開発者の@tagomorisさんにアドバイスも頂きましたし作るかもしれません。
mpd
以前、mplayer2が正常に動作しないとかぼやいてましたが、結局あきらめました。で、代わりに Music Player Daemon(MPD)なるものを見付けて、しかもRaspberry Piで動き、iPod/Androidから操作できるとのことで、導入しました。
MPDはまさしくRaspberry Piのような機器向で、音楽を鳴らすサーバーと操作するクライアントが完全に分かれてます。
$ sudo apg-get install mpd mpc
とかでRSPiに入れた気がします。クライアントはAndroidはMPDroid
、iPodはMPoD
っていうアプリです。
scp
で手元の曲をRSPiコピーし、iPodから繋ぐも曲が見えない。色々試した結果、scp
でコピーしたときにパーミッションの問題が出てたようなのでそこを解決したらちゃんと動きました。
動画(iPod)
黒ばっかで見づらくて申し訳ありません。iPodからではなくスピーカから音が出てるのが分かりますかね?思ったより音が入ってないので分りづらいですね(汗
CIM
Shellyを使って Common Lispスクリプトをexecutableにしようってのをやってましたが少しshellyが求めているのと違うようだったので「シェルスクリプトでshelly的な物を実装しよう!ついでにrvmみたいにバージョン管理できたら嬉しいな!!」って思い付きで Common Lisp Implementation Manager(CIM)を作り始めました。まだCLISP, ECL, GCLのインストールぐらいしかできてません。
初めてシェルスクリプトを書き、初めてBourne Shellを触り(普段はzsh)、早くも挫折しそうです。今めっちゃシェルスクリプトの勉強してます。目的はImplementationの管理じゃなくて統一インターフェースのcl
コマンドなのにそこが全然進んでないですね。ql
に至っては1行も書いてない。まあ、cl
を使って書くつもりなのでcl
が出来ないことにはどうしようもないんですが。
syset
とかネーミングセンスが無かったり(発音しずらい。シセット…サイセットって読もうかな)ダウンロードしたアーカイブのチェックサムとか全く見てなかったり色々ツッコみたくなりますが温かい目で見て下さい。気に入ったらpull-reqとかして下さい。
Octomacs
Octomacsに一回pull-req送ってからコミッタ気取りのκeenですが、octomacs-preview
とoctomacs-deploy
を実装しました。C-u
をつけるとgenerate
が付いてきます。テストをしてない(できない?)+サーバーを殺す(octomacs-preview-quit
とかの名前かなあ。現状は*octomacs preview*
バッファをkill-buffer
すればいい)コマンドを実装してないのでpull-reqは投げてませんが使ってみたい方は こちらをどうぞ。まあ、今からpushするんですがね。ちゃんとこの記事もoctomacs-new-post
から始まり、octomacs-preview
で確認しつつoctomacs-deploy
でデプロイしました。あとは過去の記事を編集するoctomacs-edit
を実装すれば完璧ですね。
こんなかんじです。CIM
がんばります。