2020-01-01から1年間の記事一覧

編集を加速するVimのquickfix機能

vim

この記事はVim Advent Calendar 2020の3日目の記事です。 昨日は@mira010さんのvim pluginsをインストールしてみましょうでした。 みなさんquickfixを使っていますか? Vimのquickfix機能はgrepやmakeなどの結果を保持する専用のバッファと、それを扱うため…

GoでDBのテストにgithub.com/cockroachdb/copyistを使う

Go

久しぶりにMySQLを使ったシステムを触ることになったものの、現状のテストが遅すぎたので高速化に取り組むことにした。 遅い原因としては、 テストでDBを使うパッケージが多いので接続時間がそれなりになってしまう テストケースごとにTRUNCATE→INSERTでデー…

ISUCON10に初参戦してみた

ゴリラさんと出てみようと話していたものの、申し込みのタイミングを逃してオワタと思っていたら@inductorさんに拾ってもらい、カンガルーと犬とゴリラとしてなんとかISUCON10に参加することができました。 当日は開始ちょっと前*1にDiscordとGoogleドキュメ…

goplsのSymbolMatcherとSymbolStyleオプション

Go

以下の記事で、workspace/symbolのオプションは補完と同じmatcherと紹介したが、現在のv0.4.4ではsymbolMatcherとsymbolStyleになっている。 daisuzu.hatenablog.com まずはv0.4.1でmatcherがsymbolMatcherに変わり、それまでと同様、 fuzzy caseSensitive c…

Goでprotobufの定義をimportせずにフィールドの値を使う

Go

以下のようなコードでreqにあるフィールドを使いたい場合、 opt := grpc.WithUnaryInterceptor(func(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error { // …

gopls(v0.4.0)の機能

Go

goplsは更新頻度が高く、何ができるのかをちゃんと把握できていなかったので、LSPのメソッドベースで今の時点(v0.4.0)の機能をざっと調べてみることにしました。 補完(textDocument/completion) ジャンプ系 textDocument/definition textDocument/typeDefini…

GoでREST APIを呼ぶテストにhttp.FileServerを使う

Go

例えばGET /users/:idのようなAPIの場合、 testdata └── users └── 1 のように、testdata配下のusersディレクトリにidをファイル名としたJSONファイルを配置しておきます。 そうすると、 http.FileServer(http.Dir("testdata")) で、testdata配下のパスとリ…

packagestestのExported.Expectを使ってGoのソースからマーカーを収集する

Go

golang.org/x/tools/go/packages/packagestestパッケージは静的解析など、Goのソースを読み込んで何かしらの処理を行うようなツールのテスト用にダミープロジェクトを作るためのパッケージです。 そういったツールを作る際、テストで期待する結果を完全に決…