Go Conference 2013 autumn に行ってきた #gocon

ごーこんに行ってきた。
午前中はhackathonタイムだったので、qiitaでgolangでざっくり検索して、revel というWAFをためしてみることにした。

GOPATH に適宜PATHを通して

go get revel

でインストール

revel new myapp

でアプリケーション作成

revel run myapp

で localhost:9000 で起動するところまで確認

サンプルのアプリがrevelに同梱されているので、適宜コピーしてみた

twitterのoauth認証をして、mentions, status/update が動くことを確認。
user_timelineもサンプルを少しだけいじれば表示できたので、それも確認できた。

あと、chatappのサンプルコードをコピーして実行したけど、こちらは、

# app/controllers/refresh.go

import (
    github.com/robfig/revel/samples/chat/app/routes
)

の部分でこけてしまってローカルにおいたファイルではうまく起動ができなかった。


午後の部は、Andrew Gerrandさんのkeynote と live coding をきいて、
各種LT/プレゼンをきいた。
ISUCON3の予選の話とか、goで実装したプレゼンツールの話とかが特に面白かった。
PaaS/IaaS でgoを動かす話もとても参考になったし、Nitrous.IO というサービスを初めてしれてよかった。
golangの細かい話は、正直なところよくわからないので、中身がおえなかった。

golangを始める取っ掛かりになって、10:00〜18:00 までと長丁場だったけど、いけてよかった。

主催の皆さん、登壇をされた皆さん、会場提供のMicroSoftさん、ありがとうございました!


Go Conference 2013 autumn - connpass

2013年秋 Web開発最前線テックトークに行ってきた #webdev_now

2013年秋 Web開発最前線テックトークにWeb開発のトレンドを聞ける感があったのでいってみた。
Ruby, node.js, Scala, JavaScript フロントエンド という内容での登壇で、全く知らないこともありつつ、
何も知らなすぎて、手を付けられない感じだったのを、今回の発表をきくことで、はやりのFWや、パッケージ、を知ることができたし、
どのバージョンを使えばよいのかや、ハマりどころなどを聞けてよかった。

あと、もう好き嫌いを言ってる場合じゃない感じになってきてるので、JavaScriptをちゃんと勉強しようと改めて思い直した。


登壇のみなさま、主催のじげんさま、ありがとうございました!

2013年秋 Web開発最前線テックトーク : ATND

ISUCON予選に出た #isucon

ISUCON2013の予選にでた。

事前準備は、あまりできなかったので、ほぼぶっつけ本番で1日目の予選に参加した。

当日 9:30 に 相方のid:urapico とオンラインで待ち合わせ。*1
google hangout と IRCでコミュニケーションをとった。

10:00開始で、運営から発表さらたAMIをもとにAWSのコンソールから指定のm3.xlargeでEC2インスタンスを起動。
urapico にざっくり内容を見てもらいつつ、サーバへの接続環境を整えつつ*2、bitbucketにつくったgitのレポジトリに対象のwebapp をまるっとpushした。

対象のwebapp は memoアプリでsignin/signout があるものだったので、PHP の実装をみて、手をいれるところを探った。
改修したらbenchmark を流すということをすすめて、実際のボトルネックになってるのは、mysqlのcpuが効いてるところまで把握。
また、php のデフォルトの状態でもbenchmarkツールがfailを吐くので、それをコードベースで治そうということして、urapico には、そこを追ってもらうことにした。自分は、mysqlとか、apacheとかphpとかのconfig周りを適宜いじった。
あと、netstat で 通常のmemcacheが握ってる11211 port をmysqlが握ってるのを見つけたけど、特に対策せず。*3

そうこうしていて、お昼になったところで、urapico が奥様の体調不良と、1歳になったばかりの息子の世話で離脱。。
その後、一人ですすめることになった。

結局、やったことは、mysqlのslowqueryを握りつぶすために、適切なindexを張ったのと、memos tableにusername を入れることにしてその事前準備用の仕込みと、phpコード内での、改修にとどまった。
事前準備用の仕込みは、benchmarkツールがベンチをとるたびにmysqlのデータを初期化するので、benchmarkツールのオプションで渡せるinit スクリプトに mysql のalter文、update文を作成。これが微妙に時間が取られてしまった。

終了間際で、benchmarkツールの--workload をあげてみたら、デフォルトの状態からでてたfailがあまりでなくなることがわかったので、apache等が死なないぎりぎりのラインまであげて、計測をまわした。

最終スコアは、3027 でトップの足元にも及ばない結果に終わって残念だった。トップの方々はおそらくmysqlをそうそうに捨てて、オンメモリのものに入れ替えたんだろうと予測できるけど、8時間の限られた時間の中での実装力が求められるので技術と経験が必要だろうなとおもった。

反省点

  • オンラインでやるのは、ちょっと厳しかった(どこかにあつまってやるべきだった)
  • ボトルネックの把握と、その対応をどうするかを時間の換算をしながらやるべきだった
  • 時間がなくてもcommit logはちゃんと書く
  • 前日に飲みに行かない

時間がなくてできなかったこと

  • countをcacheする
  • nginxにいれかえる

まだ、予選がおわっただけなので、本戦はこれからですが、運営の皆様、出題のkayacの方々、ありがとうございました!!
また、来年開催されれば、今回の反省点を踏まえてのぞみたいと思います!

*1:前日飲んでしまって起きれるか不安だったけど、起こしてもらえたのでよかった

*2:vimとmoshをインストール

*3:ちゃんと対策すればスコア伸びたはずなので失敗した

ISUCON予選参加登録した

id:urapico を口説けたので、ISUCON予選に参加登録した。






Bitbucket ミートアップ東京 に行ってきた #BitbucketJ

Bitbucket ミートアップ東京に行ってきた。
PyConで来日していた、Bitbucketの開発者のErik氏の講演をメインにピザとビールをいただきながら聞いてきた。
Erik氏の講演は、BitbucketチームでどのようにBitbucketが使われているかという話と、Bitbucketの中身の話でした。
スライド中にあったスクリーンショットのBranchの機能が今使っているものにないなーと思っていたら、QAコーナーで話題になり新機能で数週間以内にリリースされるだろうという機能ということがわかった。ナチュラルにステージング環境のスクリーンショットを見れて面白かった。

社内ですでにBitbucketをメインにつかってるので、稟議の通し方とかBitbucket Teamsの使い方とかは、なるほどと思いつつ、使い方は間違いなさそうだということを得られてよかった。

あと、開場着くなり、Tシャツ頂いて、ビール頂いて、ピザいただいた。いいプロモーションだよなーと思いつつ、ありがたくいただきました!

主催のAtlassianのみなさま、登壇された皆様、ありがとうございました!

Bitbucket ミートアップ東京 #BitbucketJ - connpass

ISUCON予選に出たい

Iikanjini SpeedUp Contest 2013 に出たいのでメンバーを募集しています。

  • 本職
    • PHPエンジニア
    • DB周り、httpd まわり多少見れます
    • AWS常用しています
  • 予定

PHPだと予選突破できそうにないので、なんとか1ヶ月でgolangをためして、golangでチャレンジしようと思ってます。

  • 現状

id:urapico を口説いていますが、なかなか説得できない次第。
あと、ランサーズで探すのがいいのかなーと一瞬思ったけど、なんか違う感がただよったので、やめました。

ISUCON2013

Get Great Git #1 by Qiita に行ってきた #get_greate_git

Qiita主催のGitの勉強会に行ってきた。

先日転職して、いい機会だったので、subversionからgitへの移行を行ったので、
勉強会のターゲット層にあたってたっぽくてよかった。

以下、感想

息をするようにgit status をして、息を吐くようにgit branch をする
というのは、まだまだ、そこまでいけてないのでその域に達したいとおもった。

また、細かいコマンドのオプションも参考になった。
git [cmd] help 大事。

PullRequest開発フローは、いいことはわかってるけど
なかなか、導入までは、踏み切れないし、現状、メインのプロダクトのコードを書いてるのが一人*1だったりもするのでむずかしい。でも、コードレビューの観点からみると、絶対に導入しなければいけないな。

ともあれ、知らないことも多かったし、とても勉強になりました。

主催のQiitaさん、登壇者の皆さん、会場提供のmixiさん、ありがとうございました!

Get Great Git #1 by Qiita : ATND

*1:複数人で開発してるプロダクトもあるけど、開発範囲を分けてたりするし。