ISUCON 2017 参加記録

@li_saku, @kyuridenamida, @akensho でluminousというチーム名で出ました。
最終的には 20位 203,319 luminous ぽいです。
参加記書かなさすぎて何を書いたら良いか忘れたので適当に書きます。

きゅうりの参加記→ ISUCON2017参加記 - kyuridenamidaのブログ

記憶に残っていること 時系列ばらばらかも
  • akensho さんが起動時に実行するスクリプトとか、解析用のツールとかを全部用意してくれてて、特に pprof とかめっちゃ便利でこれを元にボトルネック潰しまくれたので、サイコーだった。
  • kyuridenamida が ssh うまくいかなくて github 繋がらんとか言い出しては?って言いながらなんとか一緒にがんばっていた
  • ソース読む前にアプリケーション一通りさわってみて、この URL はこの挙動をするみたいなのを一通り把握した。
  • 画像がそのまま BINARY として DB にいれられていたから、やべーだろということでファイルに書き出すようにした。←ここ戦犯ポイント
    • この時点でファイルサイズを見るべきで、いろんなユーザの /profile を見ていたはずでアイコンなんかでかいなとは思ってたはずなのにサイズを見られてなかったから、もっとキャッシュについて調べることに気づくべきだった・・・;;
  • Nginx でキャッシュを効かせる方法を調べて、画像ファイルは静的を返すようにおまじない書いたらスコアが爆上がりした。
  • ベンチマークはかるページ?ポータル?で出てるメッセージを見るとなんか webfont とかがあるので、 MIME を調べて conf に追加したりする。
  • サーバ1台でやってたけど、 web1 サーバを Nginx 専用、 web2 サーバをアプリケーション専用にすることにしていい感じにしてもらう。
  • /fetch についてがんばったりしてたんだけど、よく考えるとスコア加算されないから、 /message とか /profile とか /login を見るべきだった、レギュレーション読み込みがあまりにも遅かった。
  • /fetch がスコア加算されないってレギュレーションに書いてあったのに無限にリクエスト飛んできてたから、参考実装に書いてあった sleep を復活させるとスコアが爆上がりした。ここで sleep ガチャもするべきだった。
  • ベンチマーク動かしてるときに Nginx 用で top -c を眺めて、 akensho さんが「このCPU使用率はスコア17万ぐらいやで」とか「これは徐々に下がってきてるからたぶん数万やで」とか言い出して、謎のスキルを会得していた。スコア予測マスタリ★
  • 最終的に、まったく同じアプリケーションを動かすのに reboot 前後でスコアが17万ぐらいの差が出るようになって、ガチャやんけとなり40分ほどチキってガチャを回さなくなって、20万ぐらいでやめてしまった。
  • sleep 入れるとスコア上がるのがわからなくて、その間別の処理出来るからじゃね?(適当)みたいなことを言いまくっていたんだけど、よくわからないままだった。
  • 最大の戦犯ポイントはここで、やめようって言い出したのはわたしで、最大スコアは 215,000 ぐらいだったので、もし回し続けていれば予選通過できていたはず。
  • くやしい;;
モチベーション
  • 本戦がある 11/25 は CODE FESTIVAL 2017 の開催日であって、 kyuridenamida と akensho さんは関係者のため出られない。
  • わたしは誕生日なので出られない。
  • よって、本戦通過してドヤ顔で「誕生日なので棄権します!!」って言いたかった
  • もう少しで言えた。・゚・(ノД`)・゚・。
おもしろ commit log

f:id:li_saku:20171025132243p:plain

  • そのに
  • これは sleep ガチャ回そうとしていたところかな

f:id:li_saku:20171025132310p:plain

おわりに

めっちゃ悔しくて、もっと web アプリケーションの速度についてとかインフラとか SQL 文とか解析についての能力があれば予選通過余裕で出来ていたかもしれないのに、後悔が多すぎてめっちゃ悲しい。
頼りっぱなしだったし、 N+1 問題も頭フル回転してる kyuridenamida に全部任せてしまったけど、分担できればもっと潰せたはず。
悔しいよーーーーーーーーーーーーーーーーーーーーー
でも楽しかったのでありがとうございました。開催&出題ありがとうございました。

OPENREC のアーカイブをmp4で保存する

毎回忘れてぐぐるのでメモる。rubyで書いた記憶があるんだけど、コマンドを回しただけだった。

他人の黒歴史残したい人、動画化したいけどキャプチャしたりするのだるいし画質悪い…って人向け。

必須:ブラウザ(ページのソースが見られればなんでもいい)、ffmpeg

ffmpeg 入ってないひとは、 (ここ)https://www.ffmpeg.org/download.htmlGet the packages で自分の OS を選んで、リンクに飛んでダウンロードする。使い方は…調べたほうが早そう。簡単に言うと、Macならなにも考えなくても使えそう。 Windowsならダウンロードして解凍→cmdでそこに移動して実行する。

わかりやすいと思った→windowsにffmpegをインストールする | ぱーくん plus idea

残したいアーカイブのソースを見る。
  • Chromeなら右クリック→ページのソースを表示。
  • m3u8 で検索すると url がひっかかるので、それをメモる。
  • 期待するURL : https://*.cloudfront.net/*/normal.m3u8 適当に脳内変換してね。
  • 仕様が変わって https://*.cloudfront.net/*/playlist.m3u8 になったぽい
ffmpeg につっこむ。
  • コマンドプロンプトffmpeg -i "ここにメモった url を入れる" -c copy out.ts で、ひとまずローカルに out.ts という名前でファイルが落ちてくる。
  • 長いので気長にまつ。だいたい放送時間 / 3秒ぐらいはかかる。
  • 出力なくなったら(終わった雰囲気出てたら)おわり。
  • 期待する結果: out.ts って名前の動画ファイル。
mp4 に変換する
  • ffmpeg で変換してあげる。面倒なので音声とか映像コーデック変えたりしません。
  • ファイル名そのままなら ffmpeg -i out.ts out.mp4 とかする。
  • エンコードは時間かかるので気長に。わたしのスペックならだいたい放送時間 / 2秒ぐらい。あとCPUパワーもけっこう食う。ファンがうるさい。
  • 期待する結果: out.mp4 って名前の動画ファイル。

これで mp4 動画が落ちてくるので、黒歴史保存し隊もニッコリですね。

異世界スマホ11話はすごい

結論

全然やばくないしやばいって言ってる人間はなろう読み慣れてないだけ

以下蛇足

異世界スマホ11話がやばい、拷問、脳が溶けたような会話、問題点しかないと話題でした。
見たときからそんなにやばいか?と思ってたんだけど、12話見てもやっぱりやばいと思わなかったので記事を書きます。書きたいなーと思ってたんだけど機会を逃してたので。

11話のあらすじ

まあ色んな所で書かれてるんですけど、空中庭園見つけてマスターになって女の子が増えて正妻の余裕を見せつけて会議が行われる。終わり

見つけた/思いついた問題点について反論してみる

  1. 異世界スマホ11話、面白くなさすぎる、拷問すぎる

    1話から雰囲気変わらないと思うので1話で切ってください。11話で拷問って思うなら1話ですら拷問だと思いますね…

  2. 目的がないまま話が進んでいく

    一生こころがぴょんぴょんするとかゆゆ式は神アニメとか桜Trick桜Trick)とか言うなよ

  3. ハーレムすぎない?

    そういうアニメって最初の数話でわかってたしなんで11話まで見ていたのか疑問があります。それを承知で11話で公認ハーレム会議が開かれたのが意味不明で受け付けないって人にちょっとわかってほしいことがあって、あのハーレム会議、すごくないですか?
    ユミナが正妻である余裕をもって、「わたしは正妻であって、正妻に提案されたことを実行してしまうと第二夫人以下になる」という暗黙の条件が存在する場を設けるんですよ。すごいですよ、これは。正妻でしか出来ないことです。
    そして、望月冬夜に心酔しているエルゼ、リンゼ、八重はそれを実行するしかない(しないと将来的に離れる or 非公式な愛人になる)という勝ちしか見えない状況で仕掛けるというの、王女としての本能と教育を感じます。
    すごいですよね、「穏やかだったり安心感があるから見続けてきた」っていう層に「安心できますよ」と言ってるんですよ、すごくないですか?つまり、彼女たちに明確な序列が出来て争いがなくなるんですよ。1位ユミナ、2位リンゼ、3位同列リンゼ/八重という、夫人の序列が明確になって順位争いの影での争いがなくなって、安心して放送されてるものを享受できるんですよ。ひどいというよりむしろ"やさしい"ですよね。
    明確に序列を設定しているので、Re:ゼロとかそのあたりよりかなり大胆なことを行っていると思いませんか、これは拷問とかではないですよ。他の作品が敵とかイベントとかで誤魔化してベールにくるんで見ないようにしてるものを、全部剥いでありのままにして明確にしようとしてるの、すごいですよ。すごいとしか言ってないけど、これはほんとうにすごいですよ。
    アニメ、基本的に書籍化されたものを使っているから、なろうの流行から3周遅れみたいなイメージあるんですけど、正妻の余裕を見せつけて公妾とか愛人とかしだしたのって1.5周前ぐらいじゃないですか?それを映像化したのがさすがだと思います。脚本家と原作者の勇気だと思います。

  4. 後半失速しすぎ

    いやなろうもので後半失速してないものあります?30話程度で完結するものでも普通に20話あたりぐだるんだしそんなものじゃないですか?
    完結してるものならまるごと飛ばしても問題ない話をアニメ化したらああなって当然だなって感想だし、わざわざ指摘する事項でもない気がします。

これでよくない?

個人的には面白いというか、そんなに酷評されるか?とは思いました。
おもしろがって過剰に言ってるだけで実はそんなにパターンかなーと思ったので、そんなに言わなくていいんじゃないかなって…みんな色々言ってるのに何も思わなかったのがおかしいのかなと感性を疑ったんですが、やっぱり多様性だよなと思ったので「異世界スマホは悪くない」を主張します。 ひどいというか、拷問というより、前述したように逆に挑戦的な良いアニメだと思いました。

むすび

良いアニメ化だったと思いました。なんか色々言ってるひとはとりあえず ISUCA とか見るといいんじゃないかな…これでだめならビビッドレッド・オペレーションとかもハマるかもしれない。ささみさん@がんばらないはめっちゃ好き。
(正直拷問度ならキルミーベイベーのほうが高いと思った)

時間が限られているときに技術書を読むのが苦手

たとえば仕事終わって帰ってきて、寝るまでに3時間あるとすると、3時間で済むようにしなきゃいけない。
(朝起きるのがめちゃくちゃ苦手なので十分余裕を持って寝たい)
そうすると、どれをどのくらい読むか決めないといけなくて厳しい。
なんで決めるかというと区切り悪いところで終わりたくないし、精神力がないから「ここまでやる」がないと数ページで終わってしまいそうだから。
「ここまでは読めそう」ってのも罠で、わからないところ出てくると調べたりして数ページに数時間溶けるとかもあるし、わからないから技術書読んでるから見積もりの精度が悪すぎる。
なので帰ってから生産的なことをするのがあまりにも難しくて、どうしよう…ってなりつつも勉強はしたいから悩ましい…
とりあえず英単語をだらだらやることを始めたんだけど、それより技術力をなんとかしないといけないから、焦る
同期にすごいひとがたくさんいて、会社の人もみんなすごくて、なんか自分だけ見劣りしてるなあ…って感じる
何をしても追いつける気がしない

英単語やる時に眠くなる時の対策

たとえばキクタンとか、基本的に英語が大嫌いな人間はチャンツとか読み上げ聞いてても脳が拒否して眠くなる。

最近かなり悩まされてたんだけど解決したので共有。

Bluetoothイヤホンを買って物理的制約を失くし、ストレッチや筋トレしながらやると起きられる。

もともと身体が固いので、前屈とかしたらめっちゃ痛いから目がさめるし、「英語に対するモチベ」はゼロだけど「ストレッチに対するモチベ」は0.1ぐらいあるので、義務感とモチベをうまく組み合わせるとなんか上手くいく。

キクタンで例えると、復習のために1日に500単語聞くとかすると、1時間とかかかるんだけど、開始3分ぐらいで眠くなるから、それを感じるとすぐ前屈の体勢にして痛みを感じさせることで目を覚ますと続く。で、それを1時間ぐらい精神を殺して、前屈したり開脚したり腹筋したりすると、起きられるし単語も回せる。神。

 

いや、なんでここまでして英語やらなきゃいけないねん、日本語話者以外を滅ぼしたい