ISUCON6予選に参加して学生枠7位で通過しました
きっかけ
参加しようと思ったきっかけは8月の終わりに見たpixivの記事
インターンで知り合った仲間と一緒にISUCONを戦ってみませんか? - pixiv inside
去年, 一昨年ぐらいからこの時期にISUCONやってるのは知ってて, でも自分のスキルじゃなぁとか一緒に参加してくれる人がいないなーとか考えてて面白そうだと思いつつスルーしてた
今年は上の記事を見て, せっかくだから参加しようと思い, 誰か誘ってみることにした. 去年ぐらいからいくつかインターンにいってて, 一番長く(2週間)やったインターンのメンバーが今もtwitterで交流あったので, 思い切って誘ってみた
出たい(誰か) / 他5コメント https://t.co/MBA7vtBz1l “インターンで知り合った仲間と一緒にISUCONを戦ってみませんか? - pixiv inside” https://t.co/QkVX2cvMRh
— Brook5 (@brook_bach) 2016年8月31日
@mayoko_ @t_oshiumi
— Brook5 (@brook_bach) 2016年8月31日
ISUCON一緒に出よ(むちゃぶり)
二人とも, 興味はあるけどwebは全然詳しくないよーとのことだったので, なんとかなるよとか適当なことをいって参加決定した.
ちなみにみんな学年は同じだが大学はバラバラ, 得意分野もmayokoが競プロでoshiumiがゲームプログラムで自分が広く浅くやってたりでバラバラ
前日まで
上記の感じから, ミドルウェアとかデータベースまわりは自分がやり, アプリの遅い部分についてみんなで考えながらやっていくのが良いと思った. また, 相談して言語はRubyで行くことにした
ので, ちょろちょろと測定の仕方とかを去年の過去問とかブログから情報収集した
学生枠なら, 必要最低限の設定と運営側が用意した一番のボトルネックを改善できれば通過できるんじゃ無いかなーと見積もっていて, これは実際正解だった
1週間前ぐらいからmatsuuさんが作成Azureに過去問をワンクリックでデプロイする神ツールを使って練習してた
他のチームメンバーはRubyは軽く使ったことあるぐらいだったので, App.rbのコードリーディングを行い, とりあえずどんな感じかわかるようにした.
3日前ぐらいから, 測定ツールの結果から改善するところをみつけて, 解説を見ながらどうすればいいか理解する練習をした.
前日はpixivのisuconを立てて練習した. ボトルネック見つける→どう改善すればいいか考える, っていう流れを練習できたので良かった
本番
8時半ぐらいにヒカリエに集合して軽く打ち合わせ, 大体の流れとか, インターンの景品もらってない話とか, TGSどうだったかとかそんな話をしてた
10時~
Azureにデプロイ, 初期設定を行う
デプロイ後, 初期設定を行い, その間にメンバーにアプリを見ていてもらった
なんか2つあるっぽいけどなにこれ?どこ見れば良いの?みたいな声が飛んでいた
とりあえずベンチを通し, 0点だったけどPASSはしてたのでたぶんどっかが遅すぎて点数とれてないんだろうなと思った
その後, 諸々のログ設定を行う. 練習はしといたんだけど, スロークエリログが生成されなかったりstackprofのログが生成されなかったりして詰まってた.
11時~
11:20分頃にnginxのアクセスログとstackprofがとれたのでSlackに流す, ルートページがめちゃ重でやばいと認識, さらにhtmlifyが9割ぐらい時間消費してたのでここやーと見つける
その後, コードを一通りながめて何やってるか理解, SELECT * 消しとかクエリ大文字にしたりとかをチームメンバーに頼み, nginxの静的ファイル配信をちゃちゃっと書く. この時点でベンチ回したら正の点が出て一安心した
htmlifyどうするよみたいなのを相談し, とりあえず何やってるか理解しようと思いpryを使って一行ずつ追っていった
キーワード見つけてハッシュしてリンクに置き換えをやっているので, リンクに置き換えた後のテキストをカラムに保存してしまえばいいのでは, となり実装を開始
12時 ~
12:40分頃に, 置換したテキストをカラムに保存する実装が完成, デプロイ
ベンチを回してみたところ, 12000点ぐらい出て暫定五位になった
方針間違って無くて安心, ここでもう終わりで良いよとかみんなでいってた
13時~
スロークエリログは結局あきらめてmyprofilerで簡単なログを取ることにした, データベース小さかったので今回はあんまりデータベースメインじゃ無いんだなとか思ってこれ以上ここで頑張るのをやめた
キーワードが追加されたときに, 他のエントリの置換されたテキストを更新しなきゃいけないことに気づく
どうするか相談して, 置換されたときのエントリの総数を保存しておくことにする
14時~
とりあえず15000点ぐらいで安定したので, タスクを振り分けながら自分は諸々のconfファイルを拾ってきた秘伝のタレで置き換える作業を始める
その後ベンチを回してみたところ, ある時点でユニコーンワーカーが落ちてFAILするという現象にぶち当たる.
助けてくれーと叫びつつ原因を探り, ユニコーンにUnix domain socketで接続しているのが原因と特定, いろいろいじってみても治らなかったのであきらめてホストとポートで接続するように切り戻し
16時〜
htmlifyについて, 自分たちの実装だと初期状態で置換されたテキストを生成する必要があったので, /initializeでそれを行う処理を書いたが5秒以内に終わらずあきらめる
17時~
再起動テストを行い, 18000点ぐらい出るのを確認して引き上げ作業を行う
ログの設定消し忘れてアプリが落ちたりして, 助けてくれーと叫びながら5分前ぐらいになんとか引き上げ終わる
置換されたテキストを生成するため, 終了するまでブラウザからページの更新を行う
反省点
・htmlifyの解決方法についてもっと考えるべきだった, 他のチームはキャッシュを利用したり, そもそもの置換アルゴリズムを変えていたりしていて, 自分たちのチームはその発想は無かった.
・mysqlの設定がきちんとうまく反映されなかった. 結局あやふやなままスルーした.
・confファイルの設定で時間を取られすぎた, 想定では秘伝のタレをコピペして終わりにするつもりだったのでかなり焦った. ここで時間を取られてhtmlifyに集中できなかったのが悔やまれる.
・合わせて, そのせいであまりタスクを抽出できず, 後半に他のメンバーがやることあんまり無い状態になってしまっていた.
良かった点
・自分が詰まっている間に他のメンバーが諸々を改善してくれていた, チームプレイできて良かった
・つまったとき, 悩んだときに, ここは諦めようとか, 妥協しようとかの判断ができた.
・一応最低限の改善ができて, 予選を通過することができた. 2万点だと学生枠としてはギリギリかなーと思っていて, 結果が出たときは嬉しかった
感想
初めてのISUCONで, とても楽しかった. 予選通過できて良かった.
参加したいけど一緒に参加してくれる人がいないみたいなつぶやきは結構あって, その中で自分は一緒に参加してくれる人がいて良かった.
(興味はあるけど・・・みたいな人は多いので, 迷ってる人は勇気を出して誘ってみるといいと思う. 基本的に誘うより誘われたい人の方が多いし, スキルが足りなくても協力すればなんとかなると思う)
本戦はさらにグレードアップしたアプリに対して闘うことになると思う,
一ヶ月あるので, 今回の反省を活かし, 足りないところは勉強して, 練習して, 本戦ではもっと良い点が取れるようにしたい. 目指せ100万円
Sentabe:センサデータベースを作った
概要
ソースコードはこちら
GitHub - keigo-brook/Sentabe: Sensor data base
ネットワークに接続されたセンサか ら, 情報を定期的に取得するアプリケ ーションを作成した. また, 情報を取得する期間を, サーバー側で変更できるようにした.
アプリケーションのクラス構造は Figure 1 のようになっている.また, Figure 2にアプリケーションのフローを示す.
Figure 1
Figure 2
流れの説明
はじめに, Raspberry Pi にてデータを 取得し, それをサーバーに POST する. つぎに, POST リクエストを受け取った サーバーは, この情報を保存する.
さらに次回のデータを取得する時間 (between time)を計算する.
そして, HTTP レスポンスとともにこ の between time を Raspberry Pi に返す.
Between time を受け取った Raspberry Pi は, この情報を元に次にデ ータを取得する時間をセットする.
サーバサイドはRailsで構築, ViewにはAdminLTEを利用,
クライアント側なんでもいいけどPythonでとりあえずこんな感じ
Sentabe/sentabe_client.py at master · keigo-brook/Sentabe · GitHub
で書いた
感想
作りたかったものに対して大きく堅く作りすぎた気がして少し反省している
もっと適当に作って良かった気がする
期間を変更するアルゴリズムについては, 現在は別スレッドを立てて時間が来たらそれを起動するようにしている
サーバー側は時間を送るだけなのでクライアント側でやり方変えることができる
HTTPで通信するので, 結局レスポンスを返さなければならなくて, だから時間を一緒に返しちゃっても良かったけど, UDPを使って送り続ける感じにもできるなーとか
センサ側から送るけど, サーバ側でセンサから取得する形にもできるかなとか
あと, いつものことながら, 作り終わると作ったものが小さく見えて本当にこれ使うかな?とか考えてしまったりとか
使いながら改良していこうと思う
修士に進むことになり, もうちょい技術的にスキルアップしたいなーと考えたので現在職探しをしている. Railsはそこそこ使えると思うけど, ちょっと違うこともやってみたいなーとか考えている.
距離センサで情報取得→カメラ+OpenCVで顔検出
はじめに
研究室に転がってたラズパイとセンサを使って何かできないかな、と考えてたらタイトルのやつが思いついたので実装してみた。雑にまとめておく
概要
フローチャートはこんなかんじ。
ブラウザでボタンがクリックされたときに、距離センサから距離を取得して、値が閾値内なら写真を取り、顔検出を行います。
ざっくりとしたブロック図はこんな感じ。
カメラはラズパイ専用のカメラを使います。
ADコンバート用にArduinoをかませました。
実装
ハード
距離センサ SHARP2Y0A21F54
Arduino Uno
Raspberry Pi 1 Model B
Raspberyy Pi camera module OV5647
ソフト
カメラ操作、センサ情報取得とか Python
ソースコードはこちら
RaspberryPiProjects/IsThereNagashima at master · keigo-brook/RaspberryPiProjects · GitHub
感想
個々に見てみるとサンプルプログラムレベルなんだけど組み合わせてみたらそれっぽいのできた
OpenCV、今回初めて使ったけど理論とか知らなくても簡単に画像処理できてすごい。
理論も含めもう少し勉強してみる
センサ+画像処理、他にも何かできないかな
pixiv 2016 SPRING BOOT CAMPに参加してきたよ
はじめに
きっかけ
めんせつ
はじまり
くわしく
1日目 オリエン、課題発表
2日目 講義, 仕様考える
ピクシブ春のインターン「pixiv 2016 SPRING BOOT CAMP」2日目!今日は課題に取り組む前に、エンジニアと総合職に分かれ仕事や技術についての講義に参加してもらっています♪ pic.twitter.com/rqaGC16RpN
— pixiv (@pixiv) 2016年3月15日
ヘアピンとしては勿論!
— BOOTH&pixivFACTORY公式 (@booth_pf) 2016年3月17日
ポケットやネクタイにつけてもかわいい!
いつもお世話になっている美容師さんへのプレゼントにどうでしょう?
はさみのヘアピン
¥850https://t.co/zQQG1f2bjQ pic.twitter.com/ITt1Bmnohc
上みたいな感じでツイートしながら分析してた
3日目 全体会議, 全社ランチ
4日目 実装
5日目 レビュー, 発表
午前中に一通り実装が終わり, レビューをしてもらった後, 14時ぐらいにデプロイできた. 余裕ができたのでお昼ご飯食べながらエンジニアの人たちの話に混じったりしてた(楽しかった)
かんそう
2016年1月に読んだ本まとめ
今年の目標として本を(文庫で)100冊読む, というのを決めたので, 早速今月から本を読み始めた. 今月は8冊読めた. はじめてみて思ったけど毎月10冊近く読むのって意識しないとできない.
今月読んだ本
以下, 軽い感想
理科系の作文技術
レポートとかを書くとき, どういうことを意識して, どんな順番で書けばいいのかを書いているHowTo本. ちょっと内容が古いところもある(手書きで書くのを基本としてたり, 発表がパワポじゃなかったりとか)けど, 参考になる良い本だった.
コンピュータネットワークセキュリティ
大学のセキュリティ授業の教科書. 授業のために書いたらしい. ネットワーク上にて, どこからマルウェアなどに感染して, どのように影響が出るかやその対策を一連の流れで解説している. 教科書だが, 複雑な説明がでてくるわけでもなく, とても読みやすい. ネットワークセキュリティの基本を知りたかったら読むと良いと思う.
カラマーゾフの兄弟(中, 下)
昨年のうちに上巻を読み終わっていて, しばらく放置していたが, 気合いを入れて読んだ. 長かったし読みづらかった…... いろんな人が次々出てきて, それぞれが言いたいことを言っていく. どの人物も, 現代人の何かしらの問題点を話しているんだと思う. キリスト教についての西洋人の考え方がまったくわからないので, そこを知っていたらもっと楽しめたのかなと思う. ただ終盤は面白かった. 個人的にはイワンが好き.
車輪の下
「詩人になるか, でなければ何にもなりたくない」とかいう超名言を残したヘルマン・ヘッセの自伝的小説. 内容は, 優秀故に勉強を詰め込まれすぎてパンクしてしまった少年の話. 途中BLっぽくなったりする. 全体的に暗い. 嫌なら逃げてもいい, ってことを教えてくれる人, 逃げた自分を受け入れてくれる人がいたら主人公は救われたのかなぁ
ハッカーと画家
- 作者: ポールグレアム,Paul Graham,川合史朗
- 出版社/メーカー: オーム社
- 発売日: 2005/01
- メディア: 単行本
- 購入: 109人 クリック: 4,884回
- この商品を含むブログ (582件) を見る
Y combinatorのポールグレアムさんが書いたエッセイ集. 順番になってるわけではないので, 好きな章から読んで良いらしい. 読むと意識上がる. 熱いLISP推し, Microsoftディスが面白い. 個人的に一番面白かったのは, 富についての章で, 今までと違う考え方を学ぶことができた. 以下にこの人が書いたエッセイの和訳一覧があるので, 暇なときにでも読んだら面白いと思う.
http://practical-scheme.net/wiliki/wiliki.cgi?naoya_t%3aポール・グレアムのエッセイと和訳一覧
ご冗談でしょう, ファインマンさん(上)
- 作者: リチャード P.ファインマン,Richard P. Feynman,大貫昌子
- 出版社/メーカー: 岩波書店
- 発売日: 2000/01/14
- メディア: 文庫
- 購入: 56人 クリック: 1,250回
- この商品を含むブログ (285件) を見る
ノーベル賞とった理論物理学者が書いた本. というと超難しい本のように思われるけど, 全然違う. 研究しながら職場の金庫破りを勉強したりとか, 題名の通り冗談でしょ?ってエピソード満載の逸話集. Wikipediaにも少し書いてある. 好奇心がすごい人なんだなぁと思った. ふざけた話の中にたまにためになることが書いてあって非常に面白い. この人の授業は絶対面白いと思う.
青の炎
かわいいクラスメイトと妹がいるイケメン秀才が主人公の推理小説. これなんてエロゲ? 推理小説なのでネタバレ回避のため反転して感想書いておく.
ジャンルは倒叙小説で, 一歩踏み外した主人公がどんどん追い詰められていき, 最後には燃え尽きたーって感じで終わる. 小説だからアレだけど, 現実ならそうするよりもこうしてほしいなーと思う.(反転したのに結局ぼかす)
貴志先生の作品は, 新世界より, 黒い家に続き3作目. どの話も面白い.
今月読んだ本のまとめおわり. どれも良い本だった.
欲しい本リスト