Go

図のライブプレビュー環境を改善した

Go

PlantUMLで図を書く時もblockdiagと同じようにやろうかなと思ったけど、markdown作ったりpandocのテンプレートを準備するの面倒になったのでその部分をやってくれるサーバを作ってみた。 github.com go get github.com/daisuzu/liveimgしてから goemon livei…

Goで時刻が絡む単体テストをどうするか考える

Go

Goにはtimeパッケージをmockする仕組みが用意されていない。 そのため、time.Nowを以下のようにして使っているコードを見かけることがある。 var Now = func() time.Time { return time.Now() } たしかにこうすることでNow()が返す値を自由に設定でき、単体…

grpc-web-clientをjsで試してみた

gRPC-Web: Moving past REST+JSON towards type-safe Web APIs - Improbableを見て、grpcwebを使えばgoogle.golang.org/grpc製の既存gRPCサーバがブラウザからも叩けるようになるとのことなので試してみた。 github.com サーバ側の変更点 DOC.mdにも書いてあ…

gRPCサーバのベンチマーククライアントを生成する

google.golang.org/grpcでサーバ書いたのでそろそろベンチマークしてみようと思ったらgoogle.golang.org/grpc/benchmarkという便利そうなパッケージを発見した。 早速clientをビルドしてみたけどgrpc_testingパッケージ専用だったので中のmain.goをテンプレ…

Goのパッケージをgit subtreeで管理する

Go

Go 1.5からVendoring機能が使えるようになったので外部パッケージをgit subtreeで管理してみた。 以下のコマンドで対象のリポジトリにパッケージを追加することができる。 ※ --squashをつけると取り込むパッケージのコミットを一つにまとめることができる # …

Goでhttp.ClientのテストをするときにProxyを書き換えてテストサーバにリクエストを投げる

Go

Goで外部リクエストが関わる処理をテストする - Qiita のfetch(url string)と違って引数でURLを取れないような関数をテストする場合、 http.DefaultTransport.(*http.Transport).Proxyを書き換えるとテストサーバにリクエストを飛ばせる。 main.go package m…