Daily/2021/01/17

2021-01-17

Todo

Todo Done
hugo の先日の log が出てない件の確認 o
Github Actions を使って hugo build + push を行う o
コーディングする

Log

hugo の先日の log が出てない件の確認

テンプレートの draft が何故か true のまま残ってた。ただのログなので default を false に変更。

と思ったけど draft の default が false っぽいので削除すれば良さそう。

Github Actions を使って hugo build + push を行う

今手元で build して push してるけどめんどくさいので、Github Actions を使って build した後 github に push したことがないので、やってみる。

まずは 公式ドキュメント を見ながらビルドまで作ってみる。

Job と Step

Job とその下に Step がある。

こういうの大体どういう区切りで使うか迷うので、まとめておく。

  • Container Image が Job 単位でしか設定できなさそう
  • Job は並列実行(逐次にする場合は needs を指定する)。Steps は逐次実行。

Step.uses

ジョブでステップの一部として実行されるアクションを選択します。 アクションとは、再利用可能なコードの単位です。 ワークフロー、パブリックリポジトリ、または公開されている Docker コンテナイメージと同じリポジトリで定義されているアクションを使用できます。

再利用可能な actions 一覧は ここ

action.yml を見れば作り方もわかりそう?

Strategy

Job のビルドをマトリクスでやるときに使うっぽい。複数 OS バージョンとか。

  • OS バージョンをマトリクスする場合は runs-on でやる必要がある。
  • それ以外は ${{matrics.変数名}} みたいに使えば良い。
  • include key を使うと、マトリクスの変数をセットにできるっぽい?
  • max-parallel で Job を並列化できる

良さそう。今回は使わないので必要になったときに。

Service

ワークフロー中のジョブのためのサービスコンテナをホストするために使われます。 サービスコンテナは、データベースや Redis のようなキャッシュサービスの作成に役立ちます。 ランナーは自動的に Docker ネットワークを作成し、サービスコンテナのライフサイクルを管理します。

ワークフロー中でキャッシュとか一時的に必要になったときの話かな。 使わなそうなので保留。必要そうになったときに調べる。

とか調べてたら・・・

既に actions を作ってくれてる方がいた 。すごいありがたい。

沿って作ってみる。内容は上のリンクのコピペなので割愛します。

master branch の docs 配下を GitHub Pages に設定してたので、これを gh-pages の / に変更して終わり。

(勉強になったけど結局最終的に導入して終わりになってしまった。)

コーディングする

Goland でできて VSCode でできないこと

もともと Goland を使っていたんだけど、ライセンスが切れるタイミングで VSCode い移ろうとしている。

一個困っているのが、

type Hogable interface {
    Hoge()
}

func NewHogable() Hogable {
    return &hoge{}
}

type hoge struct {}

みたいなコードを書いたときに、&hoge{} に赤線が引かれるけど、ここから implement method みたいなことができない。 Goland のときは、struct の下に

func (*hoge) Hoge() {
    panic("not implemented")
}

みたいのを生やしてくれた。なんかうまくやれば作れるのかしら。

LSP の方も見てたけどだいぶ大変そう。

一旦このへんで引き返す。

と思ったけど引き返せなくて調べてたら Go: Generate Interface Stubs があるとのこと。

VSCode で設定してない GOROOT が使われている件

Go: Generate Interface Stubs の存在を知ったので実行してみるが、エラー。

そもそも 1.12.5 なんて今は使ってないのになんでだ。

設定がまずかったのではなく $ go get -u github.com/josharian/impl が足りてなかったらしい。

もしかしたら、 1.12.5 時代に入れた impl を呼び出しに行っていたのかも。go のバージョンが変わるたびに入れる必要ありそう?

一応生成できるようにはなった。 Code Action あたりでできると良いな

protobuf のコンパイルで使うパッケージを最新化

久しぶりに最新化してたら以下のエラーにぶつかった。

$ GO111MODULE="off" go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
package google.golang.org/genproto/googleapis/api/annotations: google.golang.org/genproto is a custom import path for https://github.com/googleapis/go-genproto, but /Users/sat8bit/Works/src/google.golang.org/genproto is checked out from https://github.com/google/go-genproto

何事かと思ったけど、結局 google.golang.org/genproto のソースが https://github.com/google/go-genproto から https://github.com/googleapis/go-genproto に変わってるだけの話だった。

もともとあった /Users/sat8bit/Works/src/google.golang.org/genproto を削除して解決。

次にこんなエラー。

package github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger: cannot find package "github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger" in any of:

grpc-gateway から swagger の json を吐き出してたんだけど、それ用のパッケージがなくなってた。

確認に行ったら、protoc-gen-swagger から protoc-gen-openapiv2 に変わったみたい。

swagger で使う json 自体は、openapiv2 フォーマットであって、swagger 専用フォーマットじゃないらしい。

その結果こう。

github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger/options/annotations.proto: File not found.

sed で一括書き換えを実施。

$ find proto -type f | xargs sed -i '.bk' 's/protoc_gen_swagger/protoc_gen_openapiv2/g'
$ find proto -type f | xargs sed -i '.bk' 's/protoc-gen-swagger/protoc-gen-openapiv2/g'
$ find proto -name "*.bk" | xargs rm

その他作業中に発生したこと

zsh の Ctrl + A について

bash から zsh に乗り換え中なんだけど、Ctrl + A で先頭にいかなくてイライラしてた。

emacs 風バインドだったらしい。

上の記事にある通り、以下を追加して解決。

bindkey -e

sed の -i オプションについて

ネットでさっと調べて -i オプションを付けた結果、こんなエラーが。

 extra characters at the end of p command

ちゃんと調べればよかったんだけど、xargs と組み合わせたりしてたせいで変なとこから調べてしまった。

Mac 版の sed では、上書きオプションの -i を使うときは、バックアップファイル用の拡張子が必須だった。

sed -i '.backup'

Next

  • コーディング少しやったけど protoc のバージョン変えた影響で壊れてる
  • pb の init func がないエラーが出てるので明日確認が必要
  • スコアを吐き出す計算式考える
  • URL を paste したら [ここ](URL) みたいに貼り付けてくれる方法を探したい
  • アーキテクチャもう少し考える
logs

Satoshi Koizumi

Daily/2021/01/19

Daily/2021/01/16