event

ISUCON6本戦を復習して勉強する

ISUCON6お疲れ様でした。とても楽しかったです。 :innocent:チームは順位表で😇と表示されていました。 これは運営の方がわざわざ実装をしてくださったらしいです。 絵文字のチームが増えると 🍣と🍺問題 が起こりうるのでやめましょう。 競技中のポータルサイトの右上に現れる"Hello, 😇"は面白かったです。 ぜひこの絵文字を結果発表で前に大きく出したかった。 :innocent:チームは与えられた実装よりスコアを下げてしまいました。 全くもって付け焼き刃が通らないという様子で作問者の思惑通りに手のひらの上で転がされた感じになりました。チームの3人の知識を合わせて0.01人の量に満たないことがわかったので, これから勉強していきたいと思います。 docker上で実行されているrackアプリにrack-lineprofileを仕込むという戦略を最初に予定していたのですが, 実行したところ一切のログが残らず混乱をしてしまいました。プロファイルを取る方法を失い, nodeでのボトルネック具合もよくわからないので, 問題点を追求できなかったです。 その場合でもCPU時間を参考にすればよかったです。 今回はチーム内での分担も行うことが出来ず, 問題に取り組む効率が最悪だったと思います。 全体の構成図を最初に書いておけば方針の決定に役立ったと思いました。 本番中はreactやらSSEやらSSLやらでかなり打ちのめされていました‥。 やることがたくさんあるとてもいい問題だったので,

  • wass
    wass
1 min read
event

ISUCON6予選学生枠通過しました

びっくりしました。 :innocent:チームのチームメイトはKMCの同期の @utgwkk くんと先輩の @yu3mars さんでした。お疲れ様でした。 やったことは, GET /が遅くてSCOREが0 とりあえずhtmlifyの無駄を関数をくくりだして呼び出しを減らす。 すべてのカラムを使っていないSelect *を削減。 POST /starが遅くてSCOREが0 データベースを直接問い合わせる。疎結合なにそれおいしいの。 静的ファイルのキャッシュ utgwくんが調べてやってくれた。 GET /keyword/が遅い 難敵。utgwくんのProfileによるとここが他の100倍ぐらいの律速。 原因は動的生成される長大な正規表現gsub。 自分で実装書き換えるのは試したけど厳しかった。 頭が冷えていれば, まずテストケースを作るところからやるべき。 だけどそんな筋力がない。アホコラは競プロでお願いします。 終了一時間前に pattern

  • wass
    wass
1 min read
event

RubyKaigi 2日目のメモ

話を聞きながら, 拙いリスニング力のメモなので, 信頼しないでください。 1日目 day 2 [A] Fearlessly Refactoring Legacy Ruby Justin Searls @searls 既存コードを維持しながらその振る舞いを保存して, リファクタリング時に変化を検出する仕組み。 Refactoring Patterns Testは大事だ Characterization Test(Unit Test) A/Bテスト suture : Refactors as Surgeries 以前の振る舞いを記憶しておいて, 変化が起きれば警告する 以前の振る舞いの結果の比較を指定できる なんで今と昔の結果の比較が2引数関数なんだ?

  • wass
    wass
3 min read
event

RubyKaigi 1日目のメモ

話を聞きながら, 拙いリスニング力のメモなので, 信頼しないでください。 2日目 Day1 [A] Ruby3 Typing Yukihiro "Matz" Matsumoto @yukihiro_matz 型を書かなくても, 実行時の情報も使ってコードの検査ができるのではという提案。 振る舞いがあっていればいいDuckTyping GoのInterfaceによるStructural Subtypingは振る舞いを見ているだけでシンプル。 実行時エラーが不親切 ドキュメンテーションが書きにくい 型書くよね? コンパイル時チェックしない型アノテーションってどうなの?(Python3) MixedType GradualType 一部分にだけ型 → 一部でも書きたくない 型推論で良いんじゃないの? → 柔軟性がない 頭のなかの式から振る舞いを推論する Rubyの仕組みと相性は良くない気がする

  • wass
    wass
3 min read