私が歌川です

@utgwkk が書いている

ISUCON8 :thinking_face: 学生枠で予選通過した #isucon

:thinking_face: *1というチームで参加しました.チーム名がかぶっているのには気づかなかったです.なんとか学生枠で予選を通過することができました.

チームはid:utgwkk@wass80id:nonyleneの学生3人です. 使用言語はPythonです.3人ともそこそこ読み書きできるしコードの振る舞いが予想しやすいから,みたいな理由で選択した気がします.

github.com

やったこと

N+1クエリの撲滅

まず明らかに get_event() の処理が重いということが分かるのでN+1クエリを気合でエイヤッとした. ここがバグってなかなか前に進めなかったのが悔しい.なんとか解決できたのはよかったけど時間をかけすぎた. get_events() も含めるとN2クエリになっていたのをなんとかしたかった気もするけど時間が足りなかったね…….

get_event() を極力呼ばないようにする

イベントに関する情報をいろいろなところで get_event() を使って取得していたけど,そもそも存在確認ぐらいしかしていないところがあったので,そこは個別でSELECT文を発行するようにした.ブール演算ができなくて何度もバグった…….

その他

validate_rank() で座席のランクの存在を確認していたが,そもそも座席は増減しないのでDBに問い合わせないようにした.以下はおもしろコードです.

def validate_rank(rank):
    return rank in set('SABC')

なんかいろいろやった気がするけど忘れてしまった.他のふたりが記事を書いてくれると思うので待ってます.

やらなかったこと

MariaDBを捨てる

みんな大好きMySQLのほうが設定しやすいと思ったけど,MySQLだとなぜかデータの整合性が取れなくてMariaDBだと正常になるということがあって結局捨てなかった. あれ何だったんですか????

デッドロックへの対処

複数台構成に切り替えたあたりからMariaDBのデッドロックが発生してスコアが安定しなくなった.これどうすればよかったんでしょうね……. 最後はスコアが13000点代に乗ったらフィニッシュですねとひたすらベンチを回していて,点数が上下した末に13621点でフィニッシュした.下がりっぱなしではなくてよかった.

総評

gyazo.com

今回の問題は,「1台でそこそこ動くようになってきたし,とりあえず複数台にしたらもっとスコア上がるでしょ」という学生気分な希望的観測をへし折ってくれたという点でとてもよい問題だったと思います. 高得点を目指すためにはDBのロックのことをちゃんと考えたり,もっと貪欲に重い処理を切り出していったりしないといけなく,なんとか本戦出場ラインに乗ったという感じでした.

15時ぐらいに,ぜんぜんスコアが上がらなくてもうだめだとなっていたのにいきなり19000点代が出て一瞬だけ大盛り上がりしました.そのあと実装もサーバ構成も整えたけどその点数には届かなかった.あれは何だったのでしょう…….

追記:他の2人がやったことがここに書いてあることを思い出しました. やったこと · Issue #1 · innocent-team/isucon8 · GitHub

運営の皆様ありがとうございました.ダッシュボードがとにかく使いやすくベンチも快適でした. @wass80 ありがとうございました.アプリの実装を先読みして改善点を洗い出しつつペアプロでバグを解消してくれて大変やりやすかったです. id:nonylene ありがとうございました.インフラ関係のところを全部任せていましたが高速に設定を変えていってくれたので実装に専念できました.

本戦楽しみ!!!!!名札欲しい!!!!!!!!

*1:team id: 18

8月振り返り

めでたい報告はだいたい行ったので,それ以外の雑多な振り返りです.

utgwkk.hateblo.jp

言語処理系

多相 letlet rec が実装できたので優勝といっても差し支えないのではないだろうか.

Coq

「無限ループは停止しない」ということを証明できずに詰まっていたが,見てもらいながら証明を書いていたら数分でできた.

アルバイト

最近ちゃんと労働できてない気がするのでもうちょっと整えてやっていきたい*1*2

総括

いろいろ終わって落ち着いてたら無限に寝たいと思うことが増え,人間ぽい活動をするのが億劫になってしまった.

*1:心の底から労働がやりたいというわけではなく,文化的な生活をキープするために続けなければならないのである.

*2:コミュニケーションが発生してだるいなーという気持ちが出てきたり出てこなかったりしているというのもあり…….

Tシャツ事情 夏の終わり編

インターネットで買ったTシャツの情報を集めたScrapboxができたので共有します.

scrapbox.io

先日また1着届いた.にじさんじ公式グッズはなぜか声以外にもTシャツも売っているのでオススメです.

nijisanji.booth.pm

夏の終わりにSUZURIで夕方限定のセールをやっているようなので今のうちにいっぱい買いましょう.

suzuri.jp

あわせて読みたい

utgwkk.hateblo.jp

utgwkk.hateblo.jp

Super Bunny Manの全てのコインを取った

gyazo.com

ステージ追加が待ち遠しくなった.今はひとりで対戦モードをやっている.

Super Bunny Man とは

store.steampowered.com

スーパーバニーマンはフィジックスベースのプラットフォーム型ゲームです。ストーリモードは最大2人までローカルマルチプレイは最大4人まで同時に遊べます。

どういうゲームなのかはプレイ動画を見てもらうのがいちばん分かりやすいと思う*1

www.youtube.com

*1:この動画は微妙にバージョンが古いが,ゲームシステムはだいたい同じ.

22歳になっていた

utgwkk.hateblo.jp

表題の通り22歳になっていました.意外とブログ記事を書いてなかったですね.

誕生日に対する認識がだんだん変わっているような気がしていて,節目とかめでたい日というよりはプレゼントがもらえる日という認知に傾きつつあります.

所感

最近はゆっくり落ち着いていくという気持ちが薄れつつあるなあと思っています. 単位回収に院試対策,研究活動*1,もろもろが重なって,実際落ち着けないというのはあります.

もうちょっとがんばると学位が取れるかな,というのが分かってくると,それぐらいは取っておこうかという気持ちになり,そのためにはがんばる所でちゃんとがんばる必要があり,がんばりは行動ポイントを大きく消費するのだ……. ここには家計やら落ち着けない関係性やらも関っており,惰性を好む性格がここにきて災いしているという側面もありそう.

試験と院試が終わったらしばらくは落ち着けるはず,ということで今は落ち着きのない生活を送っております. 来期は研究活動が加わるので,夏休みぐらいは落ち着きたいですね.

いつもの

プレゼントをいつでも受け付けています.

飲みに誘う

8/6に院試があるので,それ以降なら予定が合えばという感じになります.コミケ周辺は東京にいます.お金があまりないので,おごられると嬉しくなります.

*1:まだ卒研自体には着手していないけれど.

Tシャツ事情2

utgwkk.hateblo.jp

SUZURIでTシャツの安売りセールをやっていたので注文し,つい先日届いた. いいTシャツいっぱいあったけど買いすぎると終わってしまうので最終的に以下の6着にした.

https://suzuri.jp/5ebec/1159548/t-shirt/l/whitesuzuri.jp

suzuri.jp

suzuri.jp

suzuri.jp

suzuri.jp

suzuri.jp

暑さに備えてTシャツをいっぱい買うとお得.