Mac Book Air の M1 が来た!
現状は特段困ってない。
M1 の速さを享受するために無理矢理 M1 対応版を使うことはしていない。
docker は rosetta2 上で動かないので、それはドキドキしたけど、M1 対応の preview 版があるので一旦大丈夫そう。
様子見る。
Go は 1.16 でネイティブ対応したとのこと。さすが嬉しい。
brew で install するとき結構これ求められる。
$ brew install protobuf
Error: Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)!
To rerun under ARM use:
arch -arm64 brew install ...
To install under x86_64, install Homebrew into /usr/local.
Go 1.16 から追加された embed について
PC の入れ替えに引きづられて Go を 1.16 にしたので、メールのテンプレートを embed で読み出すようにしてみる。こんな感じ。
import (
// for embed template text
_ "embed"
)
//go:embed templates/mail.txt
var mailTemplate string
embed の import 忘れそう。。と、コメントを差し込まないと go-lint で警告が出る。_ での import は基本的に main か test で、ということらしい。
これによって、ビルドのときに成果物に予め含んでおいてくれる。 存在しないファイルを指定したりするとビルド時に落としてくれる。
以前は実行時に読み込むために、Dockerfile でテンプレートファイルを個別に ADD するようにしていたのでだいぶ楽だし、変に壊れる必要もないのが嬉しい。
go mod vendor がすべてのファイルを vendor 配下においてくれない問題
PC が変わって環境構築してるときに、vend コマンドが見つからなかった。
Makefile に突っ込んどいたと思ったんだけど忘れてて、あれどれだっけな、、と思って必死に探した。これ。
go get github.com/nomad-software/vend
と思ったけど、なんか前も書いたなと思って grep したら 2021/01/20 にログに書いてた。書いててよかった。
ついでに protoc もなかった。これ。
http://google.github.io/proto-lens/installing-protoc.html
protoc-gen-** もない。
https://grpc.io/docs/languages/go/quickstart/
https://github.com/grpc-ecosystem/grpc-gateway
この辺まとめるとこうなる。
$ go install \
github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway \
github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2 \
google.golang.org/protobuf/cmd/protoc-gen-go \
google.golang.org/grpc/cmd/protoc-gen-go-grpc \
github.com/mwitkow/go-proto-validators/protoc-gen-govalidators