Go

git pushするだけでGo製アプリケーションをリリースするGitHub Actionsのワークフローを整えた

Go製アプリケーションのリリース自動化 Goで書いたアプリケーションをリリースする際にやらないといけないことはいろいろある。 まず当然のこととしてコンパイルして成果物を作り、それをリリースする。 せっかくクロスビルドが容易なGoを使うので配布する成…

prpl: AWS SSMパラメータストアの値を環境変数に設定するツールを作った

github.com 作った。 prpl = parameters pull toolです。 使い方 go run github.com/aereal/prpl/cmd/prpl -path /app/staging env こういう風に使う。 -path はパラメータストアのパラメータパス。このパス以下のパラメータをすべて取得し、環境変数として…

OpenAPI定義に沿ってバリデーションをしてくれるGoのライブラリを書いた

Go

GitHub - aereal/go-openapi3-validation-middleware: net/http middleware to validate HTTP requests/responses against OpenAPI 3 schema using kin-openapi. kin-openapiというOpenAPI 3定義を読んでリクエスト・レスポンスのバリデーションをしてくれる…

go-sql-caller-annotation: GoでSQLに呼び出し元の情報をコメントとして埋め込む

Go

github.comというのを書いた。ご利用ください。スロークエリを解析する時に「このクエリ、アプリのどこから呼んでいるんだろう?」と調べたいことがよくある。 だいたい遅いクエリって長くて複雑だったりするのでいちいち横に縦にスクロールして全容を把握し…

aws-xray-sdk-goを使う時はhttp.Client.Getとか使ってはダメで必ずcontext.Contextを渡さないといけない

Go

aws-xray-sdk-goというAWS X-Rayでトレースを記録する便利グッズがある。これはoutgoing HTTP requestも記録できるのだけれども、ある時を機会にトレースの記録に失敗するようになって試行錯誤したけど今日、IQ200になってすべてを理解した。 結論はタイトル…

go-http-replay: VCRみたいに実際のHTTPレスポンスを保存してテストで再利用できるライブラリ

Go

を作りました。 github.com 外部HTTPリクエストをスタブするTest::WWW::StubというPerlのモジュールや、スタブするレスポンスをあらかじめ記録しておいた実際のレスポンスから再現するVCRというRubyのライブラリなどにインスパイアされました。 使い方はこう…

GoのデバッグはdelveとVisual Studio Codeが便利

Go

delveとは Go向けのデバッガで、ステップ実行とかブレイクした行のレキシカル変数が見えたりといった基本的な機能を提供しつつ、dlv debug でコンパイルしつつ実行 (go run) したりgo(1)とほどよく統合されている。後述するheadlessモードがあっていわゆるリ…

Go の text/scanner で改行をトークナイズしたいときは

Go

Go の text/scanner はレキサを書く面倒な仕事の大半をいいかんじにしてくれて本質的なコードに取り組みやすくとても便利。 しかしはてな記法や Markdown のように、行全体が単なるテキストではなくいくつかのパターンからなる文法のレキサを書くときは、パ…

markdown-toc: Go で Markdown の見出しをパースして目次を作る

Go

github.com Go でテキスト処理をする練習のために書いてみた。 mdtoc - The markdown ToC generator - ウェブログ - Hail2u.net が元ネタで再実装というかんじ。 小難しいことをやるとどうしても泥臭くなるけど、普段書いている高水準なコードはこれくらい泥…

Mackerel で QNAP も監視したいのでする

Go

最近、MacBook の SSD の空き容量がいつの間にか無くなっていて、スワップを作れなくなった結果、フリーズするということがあって反省したのでちゃんと管理しようという気持ちになった。 ひとまず家にある中で壊れたりトラブルが起きると一番困るのは QNAP …

Go-lang で書かれた Fast GitHub command line client: gh を試している

jingweno/gh · GitHubGo で書かれた hub の port のひとつ、と表現するのが簡潔でわかりやすい。インストールの方法はいろいろある。拡張・追加しているサブコマンドは hub のそれとあまり変わらない。hub のおよそ2倍ほど速いので、alias git=gh してもそれ…