2014-09-29

ISUCONで予選敗退してきました (3年連続3度目)

今年も参加してきました。
今までどおり、 @gaooh, @froncool の2名と。

今回のお題は、ログインのアカウントロックですね。

  • n回連続で失敗したらそのアカウントをロックする
  • n回連続で失敗したらそのIPアドレスをロックする

みたいなの。

役割が被って残念なのは今までに経験してるので、流れでこんな感じの分担に。

  • @gaooh -> 実装
  • @froncool -> ミドルウェア
  • @iszk -> 悪知恵、ロジック

言語は、@gaooh が一番実装しやすいRubyで。

今回の悪知恵としては、

  • usersテーブルが20万件しかなくて実質 login と password しかなかったので、それをプログラム内に静的なhashとして持ってしまったこと
  • / へのアクセスが4種類(ログイン前、ログイン失敗時のエラーメッセージ3つ)なので、エラーを /?err1 みたいな感じへのリダイレクトにして、前段のキャッシュを効かせたこと
の2つでした。あんまり爆発するほどの裏口は見つからなかったですね。残念。
後者に関してはベンチマークさんの挙動がちょっとおもしろくて、 /err とかに飛ばすと「そんなURLにアクセスしてんじゃねーよ」ってfailになるんですが、 /?err とかに飛ばすと見逃してくれたんですね。なのでその挙動を利用させてもらいました。

この悪知恵を入れたのと、あとmysqlに持っていたログイン履歴のデータを必要な部分だけ最適化してmemcachedにする、と言う内容でした。

結局。

最後までレポートが合わないバグが取れずに初期スコアでの送信になりました。
参考スコアとしては、workload=8で4万くらいだった気がします。

@gaooh「ほかのブログをみると私の実装力があれば決勝いけましたねorz うぐぐ」
ということなので、惜しかった…と言うことにしておきます。

来年こそは!

2014-04-02

Linux Mint に Adobe Air をインストールしたら日本語が表示されない

Adobe Airをインストール

Linux Mint版なんてーものはないので、dpkgから入れます。

http://update.devolo.com/linux/apt/pool/main/a/adobeair/ から適当に調達。

$ sudo dpkg -i dobeair_2.6.0.19170-devolo1_amd64.deb

お、ライブラリが足りないって出る。と言う事で、不足している奴を sudo aptitude install hogehogeって感じで入れます。

インストールしたらAirっぽいウインドウがでて別の問題で怒られたので、ちょっと検索。

https://forums.ubuntulinux.jp/viewtopic.php?id=13589 このあたりに書かれてることが原因っぽいので、ln -s hogehoge してあげます。

よし、インストール完了。

なお、Linux版は2.6でサポート終了しているとのことなので、自分の動かしたいアプリがこれでちゃんと動くかは別問題。

日本語が!

というわけで、Airのアプリをインストールしてみました。そしたら日本語が豆腐。わーい。

フォント設定がおかしいらしいので、ちょっと覗いてみる。

自分のローカルディレクトリに .fontconfig/ とか .fonts.config とかそれっぽいファイルやらディレクトリやらがないので、どこに置けばいいのか…

まず、 /etc/fonts/conf.d/ あたりを眺めてみる。

すると、50-user.conf かなーと言う事で、これを眺めてみたら、

 ~/.fonts.conf.d
 ~/.fonts.conf

とのことなので、きっと .fonts.conf.d/hoge.conf もしくは、.fonts.conf を置けばいいってことでしょう。きっと。

fonts.conf のサンプルを適当に探してきて、.fonts.conf として置いてみたらちゃんと豆腐ではなくて日本語が表示されるようになりましたとさ。

自分が利用したのは、 69-language-selector-ja-jp.conf で適当にぐぐったやつです。

2014-01-21

Linuxをupdateするとvmwareが動かなくなる

Linux Mintを apt-get upgrade したらVmwarePlayerが動かなくなりましたとさ。 で、Vmwareのカーネルモジュールを上げるよーってダイアログが出るんだけど、しばらく待って結局失敗するんですよ。 という事で、 sudo vmware-modconfig --console --install-all 以上終了。