アプリケーション

Goのresponse.WriteHeaderの副作用について

アプリケーション

概要 Goのresponse.WriteHeaderの副作用についてメモする。 superfluous response.WriteHeader 以下は愚直な例だが、次のようにWriteHeaderを複数回呼ぶと、http: superfluous response.WriteHeader call from main.handlerというエラーが出る。 package main import ...

Golang Tips

GoでServeMuxの機能拡張を提案するProposalがAcceptedになった

アプリケーション

以前からウォッチしていたnet/http: enhanced ServeMux routing #61410がAcceptedになったので、それについてポエムをかく。 最終的な仕様がどうなるかはわからないが、静的なルーティングの機能(/foo/barのような固定値のルーティング)しか持っていないServeMuxに動的なルーティング(/foo/:idのようなパスパラメータを使ったルーティング)の機能...

Golang router HTTP

Goのhttp.RoundTripperについて

アプリケーション

概要 Goのhttp.RoundTripperについてかく。 http.RoundTripperとは HTTPクライアントの通信を担っているインターフェース。 cf. pkg.go.dev - net/http#RoundTripper HTTPクライアントにおいてリクエストからレスポンスを受け取るまでの間の処理をカスタマイズすることができる。 HTTPクライアントにおけるミドルウェアというイメー...

Golang

Goでfan-inとfan-outを実装する

アプリケーション

概要 並行処理のパターンであるfan-in、fan-outをGoで実装する。 fan-in/fan-outとは fan-inは、複数の入力を1つにまとめる処理で、fan-outは、1つの入力を複数に分ける処理である。 fan-inはデータを集約させ、fan-outはデータを分散させる。 Goではchannelとgoroutineを使って実現することができる。 実装 ソースコードはgithubにも置...

fan-in fan-out

モノレポについて

アプリケーション

概要 モノレポについてまとめる。 モノレポとは モノレポとは複数プロジェクトのコードを単一のレポジトリで管理したもの。対して複数のレポジトリで管理するものをポリレポ、またはマルチレポと呼ぶ。 マイクロサービスの管理方針の1つではあるものの、マイクロサービスを前提としたものではない。 モノリスとは同義ではない。 モノレポの観点 モノレポの運用における観点を整理してみた。 コードの自治 複数チームで運...

モノレポ

実用Go言語

アプリケーション

実用Go言語を読み終わったので読書メモを残す。 何年かGoを触っているが知らなかったり忘れていたことに気づけて大変勉強になった。 変数名 Errorインターフェースを満たすError型の変数名の接尾辞はError ex. NotImplementedError errors.Newで宣言されるエラーの変数名の接頭辞はErr ex. ErrNotImplemented := errors.Ne...

Golang

再帰処理の苦手なところ

アプリケーション

再帰処理はプログラマーの嗜み!エレガントにかけて当たり前!・・・と自信を持って言いたいところだが、自分は正直なところ苦手である。 日頃再帰処理を書く機会といえばコーディングクイズくらいで実際のところあまり書く機会がない.. 再帰処理はケースによってはメモ化や末尾最適化までエレガントにやらないと計算量が大きくなったり、メモリを食うだけのコードになってしまうが、アルゴリズムによってはシンプルなコードに...

再帰