Go

Neovimに移行したしせっかくなのでGoでプラグインを書いてみた

github.com Google翻訳APIを使ってテキストを翻訳するプラグイン。 作ったあとにVim & Go界隈で著名なhaya14busaさんがほぼ同じプラグインを作ってることに気づきました。 neovim/go-clientを使っていてNeovimでしか動きません。 (python-clientの方だとNeo…

twitchtv/twirp を試した

Go

github.com gRPCのようなフレームワークで、違いはHTTP 1.1で動くこととJSONをサポートしてること。 インストール protoc-gen-twirpの他にprotocとprotoc-gen-goも必要。 $ go get github.com/twitchtv/twirp/protoc-gen-twirp $ brew install protobuf $ go…

GAE/Goで書いたアプリのテストが何故か固まるのでgo testのコードをチラ見した話

この記事はGo2 Advent Calendar 2017の8日目の記事です。 とある日、GAE/Goで書いたアプリのテストがなぜか途中で固まり、強制終了しないと戻ってこない現象に遭遇しました。 今回の記事は、その調査と原因をまとめたものです。 tl;dr Goのテストはパッケー…

Clean Architectureについて

Google App Engine / Goで作っている個人プロジェクトにClean Architectureを適用してみた中で思ったことのメモです。 この記事ではClean ArchitectureとDIPとDIについて書いてます。 いわゆるDDDは意識してません。あくまでレイヤーについての感想です。 Cl…

macOS Sierra 10.12 で golang/go のテストを実行するメモ

Go

このあたりに従い、ソースコードをもってくる。 $ git clone https://go.googlesource.com/go $ cd go このあたりに従い、テストを実行する。 $ cd src $ ./all.bash 失敗した。 $ ./all.bash ##### Building Go bootstrap tool. cmd/dist ERROR: Cannot fin…

basic_scaling の idle_timeout について #GAE

試したメモ。 app.yaml のドキュメントをみると、以下のように書いてある。 app.yaml#basic_scaling idle_timeout Optional. The instance will be shut down this amount of time after receiving its last request. The default is 5 minutes. 任意。 イン…

LINE Notify を Go でさくさく使うためのライブラリをつくった #golang

github.com LINE Notify については こちら 使い方 実例コードを用意してます。 認証 と 通知 の2つ、サンプルがあります。 注意事項として、認証のサンプルはコールバック用の外部からアクセスできる URL が必要です。 通知のサンプルは、アクセストークン…

ioutil.ReadAll and base64 Encoder benchmark

Go

Streamの扱い方 by jun06t を読んだ。 ioutil.ReadAll は io.Reader や io.Writer を使ったときと比べてメモリ効率が良くなく、避けた方が良いみたい。 知らなかった。 資料を参考にしつつ、個人的に気になった base64 encoder のベンチマークを加えて、自分…

Go で cronolog ライクにファイル作成・ログ出力するパッケージ

github.com を書いてみた。似たものはあったけど、ピンポイントで欲しいものではなかったし、せっかくなので Go の勉強も兼ねて作った。 仕様 引数で受け取ったフォーマット文字列を、現在時刻に置き換えてファイルパスにする。 ファイルパスに含まれるディ…

echo で使われてる logger のベンチマークをとってみた

Go

uber-go/zap との比較が目的なので、zap のベンチマークテストと同じようなコードを書いてとってみた。 元々あったテスト(BenchmarkLog-4)と大して変わらない結果。 uber-go/zap uber-go/zap のベンチマークを同じマシンで実行した結果。 $ go test -bench…

ファイル・URLを同じインターフェースで開ける go-openuri パッケージを書いてみた

github.com ruby の open-uri のインスパイアー。 o, err := openuri.Open("/path/to/file") o, err := openuri.Open("http://localhost") というようにファイルパスか URL かを気にせず IO オープンできる。 ちなみに戻り値は io.ReadCloser。

Go 1.6 で HTTP Request Context

Go 1.6(for Google App Engine)で、Go 1.7 の HTTP Request Context のような事をするメモ。 golang.org/x/net/context だけでいけるかな〜と思ったけど、そんなわけなくて、ゴリラ系のフレームワークを使った。 フレームワーク なるべく簡素にしたいし、h…

Ustream 配信ステータスを確認する

ツールを作った。 GitHub - utahta/ustream-live-status: Get live status of channel on Ustream コマンドを叩くと Ustream API からチャンネルの配信ステータスを取ってくる。 $ go get github.com/utahta/ustream-live-status/cmd/uststat ... 略 ... $ u…

Go + anaconda でツイッターにビデオをアップロード

Go

メモ。 github.com/ChimeraCoder/anaconda は、media_category に現時点では対応していない。 仮にこのパラメーターを指定すると、アップロードが非同期になる。docs/upload-finalize append は1つ5MBに制限されているので、大きなビデオファイルを取り扱う…

Google OAuth2 トークンを取得する with Go

GAE/Go をちょいちょい触っている。 その中の Pull queue を試そうとしたとき、OAuth2 のトークンが必要になったので取得したメモ。 手順 Google Could Platform の API Manager から認証情報(ClientID, Secret)をつくる 下記コマンドを叩く。 [utahta@mbp…

Goでブラウザ操作云々のメモ

Go

qiita.com

ズンドコ with Golang

Go

golang の勉強がてら書いてみました。 ズンドコ を投げる goroutine xN とズンドコを受け取って正しいか判断する goroutine x1。 終了処理を全く考えないお行儀の悪い雰囲気が漂うコードになりました。

goでtwitter access tokenを取得する

Go

golang 楽しいです。 twitter の access token を golang で取得してみたメモ。ChimeraCoder/anaconda を今回は使う。流れはとても簡単で、 anaconda.AuthorizationURL("http://localhost:8000/access_token") を呼ぶ ブラウザでTwitterの連携許可をする 返…