Profile cover photo
Profile photo
Shuhei Takahashi
ねこさまをこよなく愛するソフトウェアエンジニア
ねこさまをこよなく愛するソフトウェアエンジニア
About
Shuhei's posts

Post has attachment
一行まとめ: ISUCON4 予選のチーム SHINCHOKU.ZERO の参加記録です。C++(物理)で殴りました。


今日は ISUCON という Web アプリケーションのパフォーマンスチューニングコンテストの予選に出ていました。

僕は nu (id:nu4nu) と二人でチーム SHINCHOKU.ZERO として参加していました。仕事でもプライベートでも RDB すら使っていない素人2人のチームですが、それはそれで勉強にもなるし面白そうかなーと思い、締め切り当日に思い切って参加申し込みをしてみました。

予選問題の題材は Web アプリのログインフォーム。ユーザー名とパスワードの照合をしつつ、同じ IP アドレスやアカウントで何回もログインが失敗した場合はブラックリストをしなければいけません。各種プログラミング言語での参考実装が与えられるので、どれかを改造したり、あるいは自分で一から再実装して、パフォーマンスを最適化しなさいという問題でした。

で、実際にどういう最適化をしたかですが、単にアプリケーションを C++ で再実装しました。はい。

マシンが1台しか使えないし、データ容量が大したことないので、1プロセスで全部オンメモリにデータを乗せられるんですよね。1プロセスで十分なパフォーマンスを出せる言語だと C++, Java, Go あたりが選択肢になるかと思いますが、言語習熟度や宗教上の理由などから C++ を選択しました。しかし C++ で Web アプリケーションを書いたことはなかったので、Web アプリケーションフレームワーク探しから始めて、その場でチュートリアルを読みながら組んでいった感じでした。

デバッグにかなり手間取ってしまって、ちゃんと動いたのが終了15分前。その後はベンチマークの並列数を変えるくらいしかやる暇がありませんでした。もうちょっと最適化っぽいこともしてしてみたかったのですが、まあ仕方がない。

何はともあれ、久しぶりにコンテストモードで後先考えずにコードを書き散らすことが出来て楽しかったです。後で Python とか MySQL を使いながらの最適化もトライしてみたいですね。

ここ一週間ほど、初めてまともに Amazon EC2 を使ってみていました。

Ubuntu AMI をベースにして再配布する AMI を作るときに気をつけること。

- AMI はたぶんファイルシステム全体のイメージが残るので、秘密鍵とかはエフェメラルディスク以外に置かないこと。間違って置いてしまったら shred... ではなくて、公開 AMI の作成に使うのをあきらめる。
- 気分的に .bash_history を残したくないなら、ログインしたら最初に HISTSIZE=0 を打つ。あとは既存の .bash_history を削除。
- /var/lib/cloud/ がインスタンス固有のデータ。このディレクトリ下を全削除すると再起動時に cloud-init が動いてくれる。
- /root/.ssh/authorized_keys, /home/ubuntu/.ssh/authorized_keys は削除されないので手動で消す。さもないと他の人が起動したインスタンスにもログインできてしまう。
- SSH ホストキーは cloud-init に再生成されるので放っておいていい。

Post has shared content
Google Developer Day 2011 のDevQuiz を開始しました!

http://goo.gl/vyDgO

事前登録されたメールアドレスに順次ご案内を送信しています。届き次第、クイズをお楽しみください :D

なお、事前登録はこちらから> http://goo.gl/sfVe7 #gdd11jp

Post has shared content
Google Developer Day で DevQuiz を行う意味:

Google Developer Day は Google Japan 最大の開発者向けカンファレンス。キャパの数倍のお申し込みをいただくので、多くの方に希望していただいたのに GDD をご体験頂けない、ということになってしまっています。

世の中では多くのカンファレンスが先着でチケットが売り切れるわけですが(例えば Google I/O は発売後一時間もたたずに完売してしまいました)、例えば出張で飛行機に乗っていて申込を逃した、時差の関係で夜中だったので申込を逃した。。。なんてことがありうるわけです。GDD ではそれは避けたい。

では、抽選ではどうか。長めに期間をとって、抽選をすればフェアではあるけれど、誰があたるかは神のみぞ知る。。。開発者向けイベントなのに、開発者ではない方ばかりが当選していた、なんてこともありえます。それも避けたい。

DevQuiz は、この GDD に参加するために、開発者向けのクイズを解いて、チケットを入手して頂くという企画になっています。イベント開催前の登録の段階からお楽しみが始まっている。。。というのが狙いの一つです :D

今回は、DevQuiz に先駆けて「優先参加枠」というのを設けました。これは、今まで素晴らしい Android アプリを作ったり、コミュニティで積極的に発言したり、と様々な角度で開発者コミュニティへの貢献をされた方に、優先的に GDD にご参加頂けるように企画した物です。優先参加枠に当選された方は、DevQuiz を受けなくても GDD に参加できます。が、DevQuiz に参加することも可能です。受けなくてもいいのになぜ DevQuiz のご案内をお送りするかというと、「Twitter で盛り上がっている DevQuiz が楽しそう!」また、LT でいつも DevQuiz の答え合わせをするのですが、それがとても盛り上がる。ところが DevQuiz を受けてないと何を盛り上がっているのかわからない。。。ということで、「受けなくてもいいのはわかるけど、DevQuiz を受けたい!」という人が続出するので、あらかじめ「受けなくてもいいしスコアは DevQuiz の合否には影響しないけど、DevQuiz のおしらせをします」という位置づけになっています。

さきほど、優先参加枠にお申し込み頂いた方に、結果のお知らせをお送りしました。当選された方もされなかった方も、後日ご案内差し上げる DevQuiz をお楽しみください♪

ちなみにこの DevQuiz、Google Japan のエンジニアが考案したもので、現在世界中の GDD で使われるようになりました。

Post has shared content
たしかに名文でした。地雷とりは大好きだけども往々にして敗北します。

Post has shared content
想定外すぎて吹いた。
短い動画だけど、猫の動きが想定外すぎる・・・

Кот ушёл

Post has attachment
かき氷なんてみんな同じだと思ってたら大きな勘違いだった。氷がふわふわしてておいしい!!
Photo

名前を日本語にしてみたけど、これだと日本語読めない人には誰だかわからないなあ。

自分の Google+ のプロフィールへの短縮 URL を作ってみました。
http://nya3.jp/+

↑↑↑ 2011Q3 ↑↑↑
---------------------------------------------------------------------
↓↓↓ 2011Q2 ↓↓↓
Wait while more posts are being loaded