gRPCとProtocol Buffersについて復習するためのリンク集
2024年1月25日概要 gRPCとProtocol Buffersについて改めておさらいしておきたかった。 リンク gRPC grpc.io 公式ドキュメント zenn.dev - 作ってわかる! はじめてのgRPC まだ読んだことなかったので読んでみたのだが大変勉強になった。日本語情報はまずこれ読んでみると良いかも。 www.wantedly.com - gRPC Internal - gRPC の設計...
概要 gRPCとProtocol Buffersについて改めておさらいしておきたかった。 リンク gRPC grpc.io 公式ドキュメント zenn.dev - 作ってわかる! はじめてのgRPC まだ読んだことなかったので読んでみたのだが大変勉強になった。日本語情報はまずこれ読んでみると良いかも。 www.wantedly.com - gRPC Internal - gRPC の設計...
OpenAPI Specificationとは 言語依存のない形でHTTP APIの仕様を定義するためのフォーマット。YAMLまたはJSONで記述する。 Swagger SpecificationはOpenAPI Specificationの前身である。 OpenAPIを採用するメリット・デメリット メリット REST APIの標準化されたフォーマットであり、開発者間のコミュニケーションコストを...
Go1.18から追加されたWorkspace modeを使ったことがなかったので、使ってみた。 Workspace modeとは Goのマルチモジュール構成を便利するための機能。 Workspace modeの使い方 次のような構成を用意する。 . ├── bar │ └── bar.go └── foo └── foo.go // foo.go package foo func ...
GoReleaserを使ってGoのアプリケーションをクロスコンパイルしてバイナリ配布をやってみた。 GoReleaserとは GoReleaserは、Go言語で書かれたアプリケーションのビルド、パッケージング、およびリリースを自動化するツール。 クロスコンパイル、バイナリの圧縮、アーカイブの作成、GitHubなどのプラットフォームへのアーティファクトのアップロードができる。 GitHub Acti...
ADRのテンプレートファイルを生成するだけのMakeコマンドを作成したのでメモっておく。 コマンド .PHONY:help help: ## Print help. @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z0-9_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n"...
概要 GraphQLの素振りをしていたので調べたことについてまとめておく。 親切なチュートリアルが用意されており、始めやすい。 cf. www.howtographql.com GraphQLとは Meta社によって開発されたWeb API開発のためのクエリ言語。 GraphQLはGraphQL Foundationによって管理されており、Meta社はその一員である。 GraphQLの仕様と全ての...
概要 CircleCIでphpunitの並列テストを行うアプローチについてかく。 PHPUnitの設定ファイルを生成するスクリプトを用意する #!/bin/sh basePath="/foo/bar" testFiles=$@ xmlFileStringData="" for file in $testFiles; do xmlFileStrin...
概要 Goでlog/slogを使ったcontextual loggingについてまとめる。 log/slogとは Go1.21で追加された構造化ロギングのためのパッケージ。 構造化ロギングとは、ログを構造化されたデータとして出力すること。 今まではGoで構造化ロギングをする場合はサードパーティのパッケージを利用するか、自前でスクラッチするかしか手段がなかったが、今後は標準パッケージも視野に入るよう...
概要 Goのresponse.WriteHeaderの副作用についてメモする。 superfluous response.WriteHeader 以下は愚直な例だが、次のようにWriteHeaderを複数回呼ぶと、http: superfluous response.WriteHeader call from main.handlerというエラーが出る。 package main import ...