最近ずっとGoogle Homeのアラームを設定して,設定した時間よりちょっと早く目が覚めるというのをやっている. 試しにちょっと早めに目が覚めたらそのまま二度寝したら,アラームで起きたときめちゃくちゃ目覚めが悪かった. 文明を逆手に取って生活リズムが形成されているみたいな形になっている.
突発和歌山旅行
夜中に,旅行したいなーという気持ちが高まってきて,Googleマップを眺めていたところ,京都から和歌山まで安価で行けることが分かったので,友だちのオタクを連れてやっていきました.
松尾酒店
ホテルに荷物を預けてからまず真っ先に松尾酒店に行きました. ここには高垣酒造の高垣という日本酒があり,まあ上の写真で分かるように分かりやすいスポットとなっています. お酒がいっぱいあります.
写真撮影を快諾していただき,いろいろなお酒を眺めたのち高垣を購入し,ついでに枡も買いました.
和歌山城
城です.この日は雨が強くなかなか大変でしたが,展示を見てまわりました. 順路に日本全国の城の写真が展示されていたのですが,首里城から五稜郭まで揃っており,城ですね~~となっていました.
🍺🍺🍺
城を見たのち,ちょうどよく雨が弱まったので目星をつけていたビールのお店に行きました.ここは醸造所とパブが一緒になっており,できたてのビールを飲むことができます.
やっていきました.はーおいしかった.
🍶
ホテル近くのお店で日本酒を飲みまくりました.写真で分かるかは不明ですが,湯呑みみたいな容器に日本酒がなみなみ注がれています. 店員のおばちゃんが,私たちが日本酒を飲み干したらすぐに注いでこようとし,実際そのようになったので,めちゃくちゃな感じで面白かったです.
このような様子で4杯飲んだところ横のオタクのテンションがおかしくなりましたが生きています.
🐱
和歌山電鉄の電車に乗りました.地方ローカルの単線電車に久しぶりに乗ったような気がします.
I'm at 貴志駅 in 紀の川市, 和歌山県 https://t.co/MzmSj9oZRY
— うたがわきき🔰💊 (@utgwkk) 2018年9月27日
貴志駅では猫の駅長を見ました.猫の駅長は週休がちゃんとあり,我々より環境がよいのかもしれません.
総評
和歌山は想像以上に行きやすいので,行きましょう.京都からだと京阪+在来線普通車で1500円ちょっともあれば行けます.くろしおに乗るにしても+1kぐらい.
ISUCON8 :thinking_face: 学生枠で予選通過した #isucon
:thinking_face:
*1というチームで参加しました.チーム名がかぶっているのには気づかなかったです.なんとか学生枠で予選を通過することができました.
チームはid:utgwkkと@wass80とid:nonyleneの学生3人です. 使用言語はPythonです.3人ともそこそこ読み書きできるしコードの振る舞いが予想しやすいから,みたいな理由で選択した気がします.
やったこと
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点でフィニッシュした.下がりっぱなしではなくてよかった.
総評
今回の問題は,「1台でそこそこ動くようになってきたし,とりあえず複数台にしたらもっとスコア上がるでしょ」という学生気分な希望的観測をへし折ってくれたという点でとてもよい問題だったと思います. 高得点を目指すためにはDBのロックのことをちゃんと考えたり,もっと貪欲に重い処理を切り出していったりしないといけなく,なんとか本戦出場ラインに乗ったという感じでした.
15時ぐらいに,ぜんぜんスコアが上がらなくてもうだめだとなっていたのにいきなり19000点代が出て一瞬だけ大盛り上がりしました.そのあと実装もサーバ構成も整えたけどその点数には届かなかった.あれは何だったのでしょう…….
追記:他の2人がやったことがここに書いてあることを思い出しました. やったこと · Issue #1 · innocent-team/isucon8 · GitHub
運営の皆様ありがとうございました.ダッシュボードがとにかく使いやすくベンチも快適でした. @wass80 ありがとうございました.アプリの実装を先読みして改善点を洗い出しつつペアプロでバグを解消してくれて大変やりやすかったです. id:nonylene ありがとうございました.インフラ関係のところを全部任せていましたが高速に設定を変えていってくれたので実装に専念できました.
本戦楽しみ!!!!!名札欲しい!!!!!!!!
*1:team id: 18
8月振り返り
めでたい報告はだいたい行ったので,それ以外の雑多な振り返りです.
言語処理系
多相 let
と let rec
が実装できたので優勝といっても差し支えないのではないだろうか.
Coq
ぜんぜんできなかった証明を友だちに診てもらったらできてしまったので、見てもらうの大事そう
— うたがわきき🔰💊 (@utgwkk) 2018年8月29日
「無限ループは停止しない」ということを証明できずに詰まっていたが,見てもらいながら証明を書いていたら数分でできた.
アルバイト
最近ちゃんと労働できてない気がするのでもうちょっと整えてやっていきたい*1*2.
総括
いろいろ終わって落ち着いてたら無限に寝たいと思うことが増え,人間ぽい活動をするのが億劫になってしまった.