タグ

2017年12月24日のブックマーク (7件)

  • channelとsync.Poolを使ってgoroutine内の処理の同時実行数を制御する - Qiita

    元ネタ チャンネルを使って、決まった数のリソースをgoroutine間で共有するパターン - 詩と創作・思索のひろば Big Sky :: 簡単に goroutine の実行個数を制限する方法 どちらも、固定長のバッファを持ったチャネルを共有リソースとすることでgoroutineの同時実行数を制御するパターンの例として紹介されています。 sync.Poolを使うともうすこし可読性があがると思ったので、サンプルコードを書いてみました。 今回ベースにしたのはmotemenさんの方で、実行数の制御とワーカーリソースのプールを主題としています。 NOTE: 元ネタのBig Sky :: 簡単に goroutine の実行個数を制限する方法にも追記がありますが、goroutine自体の同時実行数は抑制できていません。ここで紹介するのはgoroutine内の処理実態を抑制する手法です。goroutin

    channelとsync.Poolを使ってgoroutine内の処理の同時実行数を制御する - Qiita
    mattn
    mattn 2017/12/24
  • echo.Context を最大限に活用する - アルパカ三銃士

    この記事は Go Advent Calendar 2017 の記事です。 僕が Go で Web Application を開発するときに主に利用するのが labstack/echo です。 github.com その際に副産物として生産された記事が Qiita にあがっているのでそちらも参照してもらえると嬉しいです。 qiita.com echo.Context を活用する タイトル通りに最大限に活用されていなければ、当に申し訳ありません... さて、 echo で Controller 側のコードを書く際に良く用いられるのが echo.Context です。例えば良く扱う例として、api を作成する際に、アプリケーション側でバリデーションも同時に行うことを想定するならば、先に go-playground/validator を利用したバリデーションを行うためにセットアップを行い、コン

    echo.Context を最大限に活用する - アルパカ三銃士
    mattn
    mattn 2017/12/24
  • goのgRPCで便利ツールを使う - Qiita

    Register as a new user and use Qiita more conveniently You get articles that match your needsYou can efficiently read back useful informationYou can use dark themeWhat you can do with signing up

    goのgRPCで便利ツールを使う - Qiita
    mattn
    mattn 2017/12/24
  • Enhance Vim's Experience - Λlisue's blog

    ご無沙汰しております、有末です。 Vim Advent Calendar 2017 の 12/24 の記事となります。 皆様、日は休日かつクリスマス・イブという最高の日ですね。 イブといえば、デコレーションが施された街に愛するパートナーと出かけ、楽しい時間を過ごすというのが一般的な日人の過ごし方かと思います。 しかしながら、これはあくまでも「日」という国での話です。 クリスマス・イブの「イブ」というワードは、英語圏では "EVE" と書かれます。 これは "Enhance Vim's Experience" の略語であり、来クリスマス・イブとは Vim の生誕を祝福し、次年度以降に更に効率的に仕事をこなすために vimrc を見直す日でした。 ということで、今年のイブは僕が利用している vimrc から便利そうなやつをピックアップします。 皆様に置かれましても、来のクリスマス・イ

    Enhance Vim's Experience - Λlisue's blog
    mattn
    mattn 2017/12/24
  • Mackerelで家庭内ネットストーカーシステムを作ってみた - hnwの日記

    エントリはMackerel Advent Calendar 2017の23日目の記事です。 自宅の無線LANの利用状況をMackerelで監視するようにしたところ、予想以上にキモい仕組みができました。たとえば、家族の誰か(正確には誰かのスマートフォン)が外出するとSlackに通知を飛ばすことができます。 同じことをしている人は多くないと思うので、その知見を紹介します。 システム概要 まずは我が家のネットワーク構成を紹介します。 インターネットに接続しているブロードバンドルータがあり、無線経由でスマートフォンやPCがぶら下がっているような、ごく普通のネットワーク構成です。唯一変わっている点は、ブロードバンドルータ上でLinuxおよびMackerelエージェントが動いていることでしょう。 このルータの詳細は稿では省きますが*1、ザックリ言うとRaspberry Pi 3を無線LANアクセス

    Mackerelで家庭内ネットストーカーシステムを作ってみた - hnwの日記
    mattn
    mattn 2017/12/24
  • neovim/go-clientにcontributionした話 - NoahOrblog

    Noahです。 この記事は qiita.com ↑の23日目の記事です。 NeoVim 言わずと知れたNeoVim、その中の機能にRemotePluginがあります。 簡単に言ってしまうとNeoVimのプラグインを別プロセスで動かすもので、原理的にMsgpack-RPCを使えばどんな言語でもプラグインが書けてしまう素晴らしいものです。 自分はVim(ないしはNeoVim)歴4年位なのですが、Vim好きが高じて最近は趣味NeoVimプラグインをGolangで書いています。 最近自分のメイン言語になっているGolangで書く際は、neovim/go-clientを利用しています。 github.com そして今回は、このライブラリにコントリビューションした ~かった~ 話 何したのか vimNeoVimGolangにコントリビュートしたい!という気持ちは以前からあり、ちょうどIssueが

    neovim/go-clientにcontributionした話 - NoahOrblog
    mattn
    mattn 2017/12/24
  • json.Marshalの中でMarshalJSONを呼ぶのは、バッドプラクティスかもしれない - Qiita

    // Bool is generic boolean type structure type Bool struct { ValidFlag bool bool } // MarshalJSON implements the json.Marshaler interface. func (v Bool) MarshalJSON() ([]byte, error) { if !v.Valid() { return json.Marshal(nil) } return json.Marshal(v.Bool) } 変更後(version 2.0.0) ※ Bool.Boolが、Bool.boolがになったのはこの記事の件とは関係ないので気にしないでください MarshalJSONでどのようにjsonにencodeしたいのか、はっきりしているので、json.Marshalで処理せずに自分で処理を

    json.Marshalの中でMarshalJSONを呼ぶのは、バッドプラクティスかもしれない - Qiita
    mattn
    mattn 2017/12/24