タグ

2018年10月4日のブックマーク (3件)

  • HTTPサーバとcontext.Context

    golang で HTTP サーバを書く際に,どう context.Context を活用したら良いか,今考えていることをまとめておきます はじめにgolang における強力な道具の一つに context.Context interface というのがあります.キャンセルをサブルーチンに伝搬したり,限られたスコープ内で一貫してアクセスできるインメモリ KV ストア的な役目を担っています. サーバにおいても,リクエストがキャンセルされたら handler の内部で行う高コストな計算や外部リソースへのアクセスもキャンセルできるようにしておくのが望ましいはずです.また,リクエストスコープに閉じる値を保持するインメモリ KV ストアとしての役割も context で担えます. そこで,HTTP サーバを書く際にどのようにcontext.Context を活用するのが良いかをまとめたいと思います.

    cpp_0302
    cpp_0302 2018/10/04
  • ISUCON7優勝者と社内ISUCONに出て学んだ12のこと - ps aux | grep serinuntius

    昨日新卒研修向けの社内ISUCONがあり、ISUCON7の優勝者であるsuzukiくんとペアを組んで去年の新卒という枠*1で出させてもらった。*2 僕のISUCONレベルは、社内ISUCONを新卒研修のときに1回やったことがある程度で、レベル5まであるとすれば僕は確実に1ですね。一度やったことがあるというだけですw レベル1の僕が学んだことなので、ISUCONの常連さんには当たり前のことなのかもしれませんが、順番に書いていきたいと思います。 今回のお題 学んだ12のこと 準備を爆速で終わらせる 初期ベンチ回してアタリを付ける 静的ファイルの配信をnginxでする 分析基盤を作る 静的ファイルのキャッシュ ループクエリ撲滅 テーブルの非正規化 ボトルネック以外を修正する意味の薄さ 最終ベンチでFailしたらダメ!!! お互いを信じる!! MySQL(RDBMS)遅くない! Dockerがネッ

    ISUCON7優勝者と社内ISUCONに出て学んだ12のこと - ps aux | grep serinuntius
  • Go専用対ISUCON兵器 「graqt」を書いた - ps aux | grep serinuntius

    はじめに この記事でも書いたけど、最近ISUCONの面白さに気づいた。 serinuntius.hatenablog.jp 社内ISUCONはRubyで書かれていたけど、家ISUCONでは使用言語が選択できる。 そうなったら、今なら迷わずにGoを選ぶ。 それは、何故かと言うとGoが速いとかそういう理由よりも、GolandというIDEのおかげである。 こいつの補完やらなんやらがとても良くできているので、ソースを読むのも書くのも爆速になるからである。 RubyにもJetbrains製の Rubymine というのがあるけれど、動的言語だからか完全にはコードジャンプできない。 同名のメソッドがあったときには、選択肢が出てユーザにどのメソッドですか?みたいな感じで問いかける感じ。 けど、Golandは型があるからか100%の精度でコードジャンプできる。 そのおかげで、爆速コードリーディングが可能

    Go専用対ISUCON兵器 「graqt」を書いた - ps aux | grep serinuntius