過去のページ Page 20 of 38 未来のページ

気がついたら予選について何も書かないまま本戦を迎えてしまった。

isuconとはiikanjini Speed Up Contestの略で、高速化コンテストです。詳細はリンク先を掘ってもらえるとわかると思います。

うちのチームの予選については

SQL初心者の留年野郎がISUCON予選通過した方法チーム学生自治のメンバーとしてカレーを買いに行った話 #ISUCON

あたりを参照してください。

というわけで「チーム学生自治」という名前でISUCONの本戦に出てきました。

チーム名は、こういうの

というわけではなく、

みたいな感じです(Tweet中のチーム系はチーム名のタイポ)。

結果

結論から言うと、

学生チームは全員再起動テストに失敗し、失格となりました。 結果的には本戦の時間中ずっと寝続けて何もしなければ学生枠優勝して5万円が手に入ったという感じです。 途中で一度再起動テストは行ってそこでは問題なかったのですが、最後の再起動テストは行ってなかった、という感じです。 本戦中は点数的に負けるかなー とは思っていたのですが、Failで失格となるとは思ってなかったので、 :sadpanda:。

とった戦略は、
APIの呼び方とかが5種類しかないのにDBに入ってたので、展開してしまったのとか(私が書いたのですがバグらせてつらかった)、
parallelというgemでAPIリクエストを並列化して呼ぶようにしたこととか、
nginxとunicornのプロセスを増やすとか、
アクセスログを眺めてみたら意外と静的ファイルにもアクセスが来ていたので、nginxに返してもらうこととか、
accept-encodingにgzipが入っていたので、gzip_staticで配信したとか、
ぱっと思いつくのはそのへんです。

使用言語はRubyですが、golangだと初期実装が10倍ぐらい点が高いと聞いてつらい気持ちになった。 tenki APIが遅かったのでどうにかならないかとずっといろいろ見ていたら Last-modifiedヘッダが付いてるということまでは気づいていたのに、 If-modified-sinceを思いつけなかったのは反省点っぽい(Failしたこと以上の反省点はないが)。 RACK_ENVがdevelopmentであったということを聞いた時はなるほどなぁ という感じでした。

以下雑なものです。

ここより上も雑でしたが。

最近手元のWindowsマシンで作業することをほとんど諦めて、その都度家のサーバやGCPのプリエンプティブVMやKMCのサーバで作業しています。

本戦参加者に配られた名刺なのですが、自分の描いたイラストがいい感じに名刺にされてて感動した。 別のイベントに持って行ってもいいぐらいかもしれない。

懇親会では食べきれないほどの寿司とピザとビールが出た。

次も出るぞ!!

貴サークルは木曜日 東地区 "ム" ブロック 55bに配置されています。

貴サークルは木曜日 東地区 "ム" ブロック 55bに配置されています。

Piet本を出します。出します。 前回のC88で出したペーパーについてはこちらをご覧ください。

サークルカットです。
サークルカット

カタログです

ブログを書くまでがYAPCです。

## 追記スペース ##

2015/10/30 追記……

ひ~~ ぜんぜん書けていない……。 とりあえず何も書かないよりはマシなので少しだけ書きます。

https://github.com/bradfitz/talk-yapc-asia-2015 が個人的にはかなり興味深かったです。 Golangの最適化をするときはとりあえずここを見ながらやります。 このトークです。

hnagaminさんのトークで私のPietのアレが少し言及されていました。

## 追記スペース ここまで ##

もうすぐ一月だよ?

タイトル通りなので簡単に。

C88でPietに関するペーパーを頒布しました。無料配布です。 レポジトリに行けば歴史が見れますし、ここにPDFがあります。 また今回/piet/を新しく用意したので、なにか書くかもしれません。

2日目に友人がサークル参加していたところに置いてもらっていただけなので、すごくアウェーな中の頒布でした。 三日目のKMCのブースでも来た人に押し付けてもらっていたので、そっちで見かけた人のほうが多いかもしれません。 そもそも20枚か25枚しか刷っていないので、見かけていない人のほうが多いかもしれません。

また、C89に応募しました。受かったらPietに関する本を懲りずに出す予定です。需要……。

申し込み書を会場で買ってもらったのですが、その次の週のYAPCが終わるまでの間、東京に滞在するのにもかかわらず京都に買った同人誌とともに送ってしまったので、 あわてて通販で買い直したという悲しみを背負った応募です。 これで落ちていたらかなしいなぁ。

もし落ちていたら冬は18きっぷで帰ってると年跨ぐし、行かなくてもいいかなぁ という気分です(予告なく変更の可能性があります)。 最近は駅メモのおかげで電車に乗りたい気持ちが高まってるし、こんなこと言っていても行くかもしれないですが。

最近バイトでGolangを書いてみたりしてるのだけれど、Golangへの細かい不満はあるんだけど、 今回のは小さな不満がどうでも良くなるような感じの不満だ。

はじめに

GoogleのAPI扱ってたら、%2Fを含んだURIにリソースが置かれて、それをGolangのnet/httpで取りに行こうとしてたら、何故かうまく行かなくて、 fmt.Print(resp.Request.URL.String())してみたら、なぜか%2F/に直されていたので、それに関するツイート。

あきらかにバグだと思ってググってみたら、仕様らしくて、Won't Fixらしい。

こういう時の対処法を教えて頂いて、その通りに修正したら上手く行くかと思い、次の時に試してみた。

しかし

Opaqueを書き換えて、狙ったところにリクエストを送ることには成功したものの、 そこから307リダイレクトされた先に欲しいコンテンツが有る(言ってしまうと、Google Cloud StorageのAPIです)。 そしてそのリダイレクトする時にもまた%2F/に書き換えられてしまい、思ったところにリクエストを飛ばしてくれない(これもRequest.URL.String()を見て判明した)。

HTTPクライアントにリクエストハンドラ的なものがあるとgolang.org/pkg/net/http/を眺めていると気づいたのだけれど、

なような感じでできなさそうな感じである。

しょうがないので今のとこ、

cmd := exec.Command("curl", "-L", uri)

のようなひどいコードでごまかしてるが、何とかする方法は無いのでしょうか。誰か教えてください。 流石に何か方法が無いなら完全に壊れていると思うし、何かあるとは思うけれど、見つけられなかった……。

追記

CheckRedirectでリクエストを書き換えることはできそうな感じだったけれど、 そこのリクエストには既に%2F/に書き換えられて破壊されたURIが格納されていた という感じでした。

一応そこから心のこもった置換で(%2Fの使われている場所は大体予測できる)もとに戻すことはできそうな感じだけれど……。 なんとかならないのかなぁ……。

過去のページ Page 20 of 38 未来のページ