ISUCON6でイスコーン

前日

pixiv isuconの練習問題を、チームメイトの@chigichan24と一緒にやった。
( ・´ー・`)「適当にindex貼ってnginxで静的ファイル配って、いい感じにキャッシュすればワンチャンあるっしょw」

とか言いながらpprofのというものの存在を知り、使い方を学ぶ

dsas.blog.klab.org このページを参考に勉強(遅い

当日

朝8時に起きて急いで準備をして8時25分の電車で学校に向かう(外はどしゃぶり

バスで学校に行くのを忘れていて待ち合わせの時間に遅れる(申し訳ない

開始15分前にネットワークに接続できるようになり、5分前にチョコレートを食べる

チョコレートおいしい

開始

azureのデプロイが遅くてキレた(15分くらいかかった)

とりあえずベンチマークを走らせると、4000点くらいで、ここで終了したら勝ちじゃんと盛り上がる

まぁとりあえずgolangで動かすか、となってperlを切ってgolangを動かしてローカルで動くように諸々準備する

準備に1時間ほどかかってしまう(もったいない

ベンチマーク走らせる

Failed

( ・´ー・`)「なるほどね」

そこからボトルネックになっている部分を探すためにアクセスログを吐いたりプロファイラを走らせる

同時に、動きを見るためにコードを把握していく

mysqlのレコード数とか少なくて適当にindex貼ってもこれ無理ではとなる

実装を見て、なんだこの実装は(困惑)となりつつ読み解いていく

  • dbが2つあってspamのプロセスを除くと、2つのプロセスが動いているが、ISUCONにおいてはおそらく無駄なので一緒にしてよさそう
  • htmlifyの中の正規表現が重すぎる
  • 毎回regexpのmatcherを作るのは頭悪そう
  • スライスのcapは多めにとってよさそう

実装

htmlifyの修正を@orisanoにお願いして、isutarをisudaにマージする

htmlifyの修正の内容は、毎回keywordを取得するところを先に取得しておくようにしたり、いらないfieldの取得をやめる等

スコア 0

( ・´ー・`)「つらい」

めちゃめちゃタイムアウトしててだめっぽい

本格的にボトルネックの部分をどうにかしようととりかかる

明らかにregexpが遅すぎる

golangregexpが遅いというのを聞いたことがあったので、そこの改善策を考える

すべてのkeywordに対してregexpしてるのがまずそうだから、一致したkeywordのエントリをテーブルに保存して次回以降はそれを参照すれば早そうということに、10分ほど考えて気づく

でも後から考えたらわざわざテーブルじゃなくて普通にキャッシュしたほうがよさそう

実装し終えてベンチに投げるが、バグがあるらしく、Failedしてた

golangのFindAllStringでハマっていて、containsで含んでいるか全部見てとりあえず解決(ここの実装は@orisanoさんがやってくれた

それ以外のも少しハマって、順位表凍結後にようやくPASS

42000

ずっとスコア0だったのでめちゃめちゃ嬉しかった

そこから正規表現で動くようにいじってもらって、ベンチ見ると10000くらいになってたのでロールバックした

あとはnginxのログ切ったりとかの最後のあがきで最終スコアは44205だった

まとめ

全体的に実装力が無くてそこに時間を取られて思いついたアイデアを実装するに至らなかった

それぞれローカルで動かす環境を整えたり、プロファイルを取り始めるのが遅くて最初の3時間のうち1時間くらい無駄だった気がする

もっと効率的にやらないとやりたいことができない

ただ、思いついたアイデアを実装して、ちゃんと効果が現れているのを見れて楽しかった

学生枠として本選に通ったので、頑張りたい

git challenge行ってきた

3月7日土曜日にmixiで開催されたgit challengeに参加してきました。 git challenge

概要

git challengeはそれぞれ得点の決まっている課題を解き、獲得ポイントをチームで競う形式のイベントです。課題は約20問ほどでした。

スケジュール

11:00 集合
12:00 ランチ
13:00 ワーク開始
17:30 ワーク終了
18:00 懇親会
19:00 終了

起床Phase

その日はネカフェに泊まっていて、9時間パックだったために6時までにおきる必要がありました。(9時間を過ぎると超過料金を払わないといけない)
超過料金の恐怖におびえていたせいか、起きたら4時半でした。お金ってすごい。
そのままなんやかんや6時ごろまで過ごして、朝ごはんをマックで済ませ、会場へ向かいました。(現在8時)
集合は11時なのに8時半には会場付近に到着していました。2時間前行動ですね。まぁ意識高い高専生としては当たり前ですかね。
@orisanoさんには見習ってもらいたいですね。
しかしあまりに暇すぎたので、ドトールコーヒーで宇治抹茶ラテを飲みながら、MacBook Airを開いてスプラトゥーンの動画Qiitaの記事を見て、2時間ほど時間をつぶしました。 宇治抹茶ラテ

会場着

10時半に会場に到着しました。
それから簡単なgitの解説とお昼休憩の後にワーク開始しました。お昼ごはんおいしかったです(こなみ
課題を解いていくうえで、とりあえず僕が偶数番目、相方が奇数番目を担当してといていくことにしました。
しかし相方がバグ(?)に見舞われ解き進められなかったようだったので、偶数番目でわかるところを解き終わった後に後ろから奇数番目を解いていくという感じにしました。
その結果、僕はかなりの問題を解くことができたのですが、チームとしては解けない感じになってしまったので、まったく違う方針で解くか、一緒に解いていくというほうがよかったのかなぁと反省しています。
その結果全体で5位になったのですが、もうちょっと上の順位も狙える手ごたえだったので、少し悔いが残る結果となりました。悔しい。

解説Phase

問題を解き終わった後に、問題の解説をしていただいて、自分の知らない知識であったり、スマートな解き方を知ることができたので、解説・質問の時間が一番楽しかったです。

まとめ

全体を通して、順位としては、悔しい結果になりましたが、同じ年代の(ほぼ年上)人たちと一緒に競ったり、話すことができて非常に楽しかったです。もう一度参加できないのがとても残念です。
git challengeは問題を用意するのが大変だろうけど、gitの勉強としてサービス化されたら絶対使うだろうなぁとか思いました。
僕はもう参加できないので、ぜひ後輩に参加してもらって1位をとってほしいですね^^

高専逆求人に行ってきました

はじまり

12月上旬、久留米高専生がテストに苦しむころある一通の恋文(リプライ)が私のところへ送られてきた。

ふむ。まずは心を落ち着ける。
ここでDMを開けば電車内で奇声を発する変人になりかねない。

困惑しながらも持ち前のポーカーフェイスでなんとか乗り切り電車を降りた。
家に着き、自分の部屋で心を落ち着かせDMを開く。

しおみさん「たいちゃん、こんにちは! お久しぶりです、プロコンの際に声をかけさせていただいた、株式会社ジースタイラスの内藤です! プロコンが終わってから2ヶ月近く経ちますが、お元気ですか^^?」

なるほど、デートのお誘いか・・・
内心緊張しながら平気なふりをし返信する。

すると学校の休みはいつからなのかを聞かれなぜそんなことを聞くのだろうと思いつつ答える。

しおみさん「 12/23に高専逆求人があって、たいちゃんをお誘いしたかったのですが、予定どうでしょうか😂?! 」

なるほどね。
デートのお誘いではなかったことは残念だったが、逆求人自体にはもともと興味があったので、親に相談するということを伝えたが、自分の中では参加するということを決めていた。

そして、親にも相談し参加していいとのことだったので、参加することをしおみさんに伝え、逆求人に登録し12/23の高専逆求人にエントリーした。
それからプロフィール欄に今までどういうことをやってきたか、どういう職種に興味があるか、プログラミング言語をどの程度触ったことがあるかをいい感じにいろいろ考えながら埋めて、しおみさんと面談してそれを添削してもらった。
skypeで面談しているとき、しおみさんは話しやすいお姉さんだなぁとか思ってた。
プロフィールを埋め終わってからは、企業の方に行う自己紹介プレゼンを作った。 自己紹介プレゼンはプロフィールの簡単な要約でいいと言われていたので実質30分くらいで作り終わった。(約5ページ)

逆求人当日

そして逆求人当日、起きれるか不安になりながらも、なんとか朝8時にカプセルホテルで目を覚まし、会場へ向かった。
10時半集合だったようだが、時間を勘違いし10時5分前には会場に着いて、学生の中では2,3番目のようで、即効で受付を済ませ緊張しながらTwitterをして時間をつぶした。 Twitterは神。

スケジュール

逆求人のスケジュールは、 ①1日の流れの説明
②企業の方と名刺交換
③昼休憩
④面談
⑤懇親会
⑥解散
という感じだった。

1日の流れの説明

一日の流れの説明で、名刺の渡し方などを練習(笑)し、@orisanoの名刺をゲットした。
その後企業との名刺交換が始まったわけだが、開始してしばらく企業の方が来なくて相当焦った。どうやら企業の方はめぼしい学生のところに行くか、順番に回っているようだった。
最終的には幾つかの企業の方が来てくださったので安心した。

昼休憩

昼休憩では、mixiの方にランチに誘って頂いていたので、会場の1階のレストランみたいなろころでハンバーグを食べた。
そこで足洗い場は田舎にしか存在しないことを知る。

楽しいランチを終えて@orisanoのところへ行き雑談して自分の場所へ戻る。

面談

どこの企業と面談するかが決まったらしく確認すると全6タームのうち全タームが埋まっていた。しかも他に2社も希望していたらしく正直なにかの間違いではとか思っていた。
企業の方が誰と面接したいかを指名する形らしいので、全員全タームが埋まるわけではない。残酷な世界だ。

面談では、自己紹介のスライドを見せつつ大体アドリブで話そうと決めていた。
というのも、自己紹介の後のお話のタイミングで、話が盛り上がりやすいようにある程度突っ込まれるようにスライドを作っていたからだ。 ただ、評価欄にプレゼン内容というのが合ったらしくそこの評価はあまりよろしくなかったので、参加しようと思っている人は、ある程度ちゃんとしたものを作っておいたほうが良いと思う。
しかし、作戦自体はおそらく成功し、話は盛り上がったので良かったと個人的には思っている。

面談を終えて

超疲れた。普段全然しゃべらないからマジで疲れた。なんて言っていいか、とても疲れた。(語彙不足 とりあえず喉が乾きすぎて、面談開始から終了までで1Lくらい水を飲んだと思う。

懇親会

面談が終わって、会場のすぐ隣のスペースで懇親会があった。面談できなかった会社の方や面談の時も話した方と話せてとても楽しかった。
同じテーブルにめちゃくちゃキャラの濃い人(学生)や、コミュ症(学生)がいて、自分は普通なんだと再確認した。
文句があるとすると、飲み物と食べ物が少なくてまた喉が渇いたこと

おわりに

懇親会も終わり、ネカフェで朝までやりすごしながらこの記事を途中まで書いた。 初めて逆求人に参加してみて、自分が何のためにプログラミングをするのかということを再確認できたのでとても有意義な時間を過ごすことができたと思う。 ただ、ずっとしゃべるという作業はとても疲れるのであまり経験したいものではないなとも思った。 もし逆求人に参加しようか迷っている人がいるなら是非参加してほしい。