ヾノ*>ㅅ<)ノシ帳

技術ブログに見せかけて、ジャンル制限のないふりーだむなブログです。

git challenge 参加したよーヾノ*>ㅅ<)ノシ(2016/8/21)

禁則事項☆を犯さないようにぼかし気味で書きますよ)

※写真はmixiの方が撮影したものです

概要

2016年8月21日(日)に、mixiグループ主催の1dayイベント「git challenge」にtomoriで参加しました(アッ

会場にはエンジニアと人事(!)の方、参加者16名のみなさんがいらしゃいました。

# 会場(=mixiの本社)があるビルはコンサートホールのようなシックな内装です。
# 1つクソな点を挙げるとしたら、エレベータのボタンがどこにあるのかわかりにくいところです(写真なし)。

11時開始、19時終了のイベントです。競技時間は3時間くらいだったと思います。

午前の部

お昼の前にチュートリアルがありました。

github.com

の内容そのままでした。 あとは自動ジャッジシステムとしてCircleCIが採用されていて、それの利用登録もしました。 CircleCIは初めてでしたが、hookの設定やビルドターゲットの設定は簡単に行えました。 (設定ファイルの書き換えが面倒くさそうですね。) CircleCIのコンテナにsshすると、チェッカースクリプト含めて何でも見れてしまうらしく、ssh接続即失格のルールまでありました。

おひる!

8/21はハワイ州爆誕的な日なやつらしく、その関係でハワイ特集でした。

f:id:katc:20160823002200j:plain

ガーリックなんちゃらのお弁当を取りましたが、油っこかったです…(美味しいんですけどね)。 大盛りも選べるようになってて、僕はそれを食べられたので満足です。

お昼ご飯は各チームが自分の席で座って食べました。 チューターさんも同席されてて、次のようなお話をしました。

  • mixiのサービスで、glibc mallocでなく、googlemallocの実装(TCMalloc)を採用して性能比較してみた件
  • 僕(@K_atc)がrubyでなくpythonにこだわる理由(pythonのライブラリの品揃えの観点でお話したんだけど、伝わったのかな…)
  • 技術的な困難さで古いperlで書かれたサービスを使い続ける場合と、既存アプリケーションを別の言語・上位バージョンで書き直す場合のコスト面での比較
  • JSフレームワークmixiはReact+AngularJS 2厨?)とテストフレームワーク

僕はReactをちらっとしか見てないですが、チューターさんいわく、変にTypeScriptとかで書くのでなく、おとなしくJSXで書いたほうが何かと楽らしいっす。

# 専門外の話を振り気味でスミマセンでしたヾ(。>﹏<。)ノ゙

競技前の準備

各チームのgithub organization?に問題のprivate repoのinviteを受け取って、そのリポジトリをCircleCIに追加する作業をしました。 全リポジトリ(全18個=全18問)を手動で追加する簡単な作業です(白目)

競技!(約3時間)

問題は全18問でレベル1からレベル6までありました。 レベルの値(星の数)=点数です。 僕はレベル1を1つ、レベル2を3つ解いて終了しました😇

問題を解いていて困ったことがあればチューターさんにいろいろ尋ねることができます。 僕も結構助けていただけました〜><(ありがとうございます!) 知見などは次の節にまとめて書きます。

force pushなどでリモートリポジトリをぶっ壊してリセットしたい場合は、前のボタン(赤緑の2つあるがどちらを押してもいいとのこと)を押してhuman workerを起動し、チーム名とリセット対象リポジトリを引数にしてイベントを発火します。しばらくするとリセットされます。 問題なのはボタンを押すとピポーンとデカイ音が鳴ることです。

おやつ(リラックマ化)

ハワイ特集なのでマラサダというドーナッツとジュースが振る舞われました。

f:id:katc:20160823002226j:plain

競技終了&解説会

CTFと違って、Writeup禁止(※お察しの通り問題は使い回し)なのでぼかして知見をまとめます。

  • gitの便利なサブコマンドたちを活用しよう
    • show : チェックアウトなしでいろいろなブランチ/コミットのファイルを見れたり、コミット内容を見れたりする
    • reflog : 操作履歴と、その操作の取り消し
    • bisect : 問題のあるコミットを二分探索できる
    • log : オプションいっぱい。grep正規表現にクセがあるので要注意
  • リモートがローカルよりも先に進んでいる&手元のブランチをmasterにマージする必要があるときはpull/mergeの順番に注意
  • .gitの中身にもそろそろ詳しくなろう
  • レベル2に3つ以上のサービス問題がある(知っていれば瞬殺可能←その問題はノーチェックだったのでつらい…)
  • SourceTreeゴリ押しで一位になれる

一人の絶大な貢献で上位に入れる傾向がありました(1チーム2人でした)。 次参加される方は、自分の力でチームを勝利に導ける程度の筋肉をつけておきたいところですね。

結果発表

うちのBチームは中位でした。はい😇

1位〜3位までが表彰されました。 商品は Octocat 大or小 でした。 1位は例によってメダル授与です(イイナー)。 表彰された方については、当人がブログやツイッターで自慢しているかと思いますので敢えて書きません。

懇親会(タダ飯!)

油!油!(えらくクオリティ高かったです)

[写真なし]

余りを翌日の朝食として持ち帰ることができました(ありがたや〜)。

今日だけで2回、なんで(友利奈緒)着てないのと言われてしまいました><
次のときは着ますよ?いいんですね?

今回で3回目の開催だそうです。 それにしてもジャッジシステムも落ちずに稼働してましたし、安定した運営でした。すごい💪

某インフラエンジニアさんを参加者数名で囲って伺った話(とても興味深い内容でした):

  • その方の仕事内容
  • ラックサーバーの入れ替えはいい運動になる
  • アプリケーション・データベースサーバーの配置と構成
  • AWSは○
  • 外注するときの話
  • チート対策

総括

mixiの皆様、貴重な機会をありがとうございました。
商業的な匂いやリクルーティングの匂いを最小限に抑えられていて良かったと思います(=勉強会に近い雰囲気)。
ただ、名札に大学名・高専名を書く意味って全然ないよなー思いました(そういう思想の会社なのかなと思われても仕方ないですね)。
# 個人の技能とその大学が授業・講義としてやったことはほぼ無関係ですよね…

僕のgit力はまだまだだなぁと思いました。サブコマンドで便利そうなのが結構ありそうなので覚えていこうと思いました。
# そろそろCTF対策で.gitの中身を熟知したほうがいいかもしれない

CTFでもそうですが(最近は改善傾向)、僕がサービス問題を見落としがちなのは本当に良くないなぁという感想です😇