読者です 読者をやめる 読者になる 読者になる

at kaneshin

Free space for me.

Golang

golangでABテストの振る舞いを実装する

golangに限らないんですが、ABテストの振る舞いをちゃんとした設計のもと実装するのって難しいと思っています。 よくあるパターンとしては、Userという構造体があって、それに対してABテストによる振る舞いを変えるように実装をすることかと思います。 User …

golang の定数宣言内での iota 識別子

前に登壇した内容に iota について書いていたので、少しまとめておきました。

GopherCon@Denver recap by tweets

Twitter Likesの振り返りで、7月中旬に Denver で開催された GopherCon に参加していたときにめっちゃLikeしていました。

GKE を使って golang アプリケーションコンテナを稼働させる

この記事は Google Cloud Platform(1) Advent Calendar 2016 の15日目の記事です。 普段は golang をやってるアプリケーションの人っぽい感じになっていますが、他にも色々とやっています。(と、いうアピールをたまにしておかないと) さて、今回は GKE + g…

golang で始める Slack bot 開発

この記事は Slack Advent Calendar 2016 - Qiita の3日目の記事です。 昨日は Kinoppyd さんの「今そこにあるSlack」でした。 さて、今回、この記事では golang で Slack bot を実装する方法を紹介しようと思います。 世に蔓延る Slack bot これから bot を…

golang の httptest パッケージを使う

この記事は Go Advent Calendar 2016 - Qiita の2日目の記事です。 Golang については書きたいことがたくさんあるので、Go Advent Calendar 2016 その4が出てきても良いのではと思っている次第です。(空いていればいつでも書きます) さて、今回、この記事…

golang で regexp パッケージを使うときに気をつけること

golang の Regexp は初期化の Compile コストがそこそこありますが、実は正規表現のパターンと対象となる文字列によって、初期化コストが無視できる(パターンと文字列に支配される)くらい遅くなります。よく言われる regexp の初期化コスト問題が無視でき…

iOSDC で LT してきました! - Generative Programming in Swift

Generative Programming in Swift // Speaker Deck Generative Programming とは? 生成的プログラミング(英: Generative programming)とは、ジェネリックなクラス、プロトタイプベース、テンプレート、アスペクト、コード生成などの技法を使ってソースコ…

golang の channel を使って Dispatcher-Worker を作り goroutine 爆発させないようにする

golang で処理の高速化をするために goroutine/channel を使って並行処理にし、待ち時間を無駄にしないようにするのは言葉で表すのは簡単ですが、実際にパターンとして落としこむためには経験が必要だなと思うので、今回 Dispatcher-Worker として Job Queue…

Golangの標準入力をインタラクティブかパイプで入力を受け取る

Go言語でコマンドラインツールを作るときに入力を受け取るインターフェースでオプションや標準入力で受け付けることはあると思いますが、パイプで渡すことも考慮されているとクールなツールになるなと思っています。 標準入力の受け取り それぞれの実装方法…

GopherCon@Denver 2016に参戦する

DenverにてGopherCon 2016が7/11~7/13の三日間で開催されるのに行く予定です。 ほぼ一ヶ月後には本場(?)のGopherたちと濃い期間を過ごすと思うと非常に楽しみ。 ただ、飛行機代とホテル代でかなりの銭が飛んだので、見合った成果を持ち帰りたいなと思って…

Golang で書いた Web アプリケーションを UNIX ドメインソケットで公開

net/http パッケージで使用される ListenAndServe 関数は tcp による Listen のため、 UNIX ドメインソケットで Listen するには自前で準備する必要があります。 func (srv *Server) ListenAndServe() error { addr := srv.Addr if addr == "" { addr = ":ht…

Cloud Vision APIを試す

GoogleがCloud Vision APIを使ってみた記事です。 実装したリポジトリはこちらです。 github.com/kaneshin/pigeon 準備 まず、Google Cloud Consoleでプロジェクトを作成し、Cloud Vision APIを有効にしてください。 その後、Service AccountのCredentialsを…