アプリケーション

Gitでコミットを分割する方法

アプリケーション

Gitでコミットを分割する方法のメモ。たまにやりたくなる。  // 分割したところを指定。対象commitをeditする。 git rebase -i HEAD~5 // 対象commitがunstageされる git reset HEAD~ // 任意の粒度でadd&commit git add ~ git commit ~ git rebase --continue ...

Git

GolangのHTTPサーバーのコードリーディング

アプリケーション

概要 Goでrouterを作ったときにHTTPサーバーのコードの内部を読んだので、その時のメモ。 github.com - bmf-san/goblin HTTPサーバーのコードリーディング 基本形 Goに入門したとによく見るであろう形のコード。 色々なものが省略されてこの形になっている。 package main import ( "net/http" ) fun...

Golang コードリーディング

自作ルーティングをアップデートした

アプリケーション

概要最近、自作ルーティングのgoblinをアップデートしたのでその記録を書き残しておく。 以下は過去ルーティングについて書き残した記事。他にも実装検討フェーズの記事があるが、内容があまり良くないので割愛。 URLルーティング自作入門 エピソード1 URLルーティング自作入門 エピソード2 GolangのHTTPサーバーのコードリーディング Introduction to URL router f...

Golang OSS router

Gitでcommitを分割する方法

アプリケーション

概要commitを分割したいときの手順についてメモ。 手順# 分割したいところを指定してrebase。対象のcommitをeditにする。 git rebase -i HEAD~5 # unstageする git rebase HEAD~ # unstageしたものを分割したい粒度で再commitする。 git add & git commit # commitが完了したらrebas...

Git

golang-migrateを使ってspannerのDBマイグレーションをする

アプリケーション

概要 spannerのDBマイグレーションで、golang-migrateを使ったのでメモ。 使い方 dockerで使う想定。 dockerではなくバイナリで実行していたが、ホストマシンのopensslのバージョンに依存して動作しない可能性あるようなので、コンテナ実行が無難だと思う。 MIGRATE_VERSION='v4.14.1' docker run -v /migra...

GCP Golang Spanner

goのspannerクライアントのReadOnlyTransactionでハマった

アプリケーション

概要 pkg.go.dev - cloud.google.com/go/spannerでReadOnlyTransactionを使ったときにハマったところについてメモ。 何が起きたか? 数万件のデータを複数回のリクエストに分けて処理するようなバッチ処理のコードを書いていた。 ReadOnlyTransactionを使った処理を以下のように書いていた。  for { // 〜略〜 ...

GCP Spanner Tips

認証・認可の基本

アプリケーション

概要最近認証サービスの開発に携わっているので今一度基本的なことを再確認しておく意味でまとめる。 Software Design 2020 11月号の認証・認可の特集を参考にしている。 IDと認証・認可の関係性 ID Identity(身元) システム利用のための管理単位 ex. ユーザー、モノ、組織 etc... Identifier(識別子) データとして管理される単位 ex. SasS...

FIDO IAM LDAP OAuth OpenIDConnect SAML SSO 認可 認証

Golangでインメモリなキャッシュを実装する

アプリケーション

概要Golangのインメモリキャッシュのライブラリは良さそうなものが存在するが、軽量でシンプルなもので十分だったので自前で実装してみた。 実装要件 複数のデータを保持することができる。 期限付きのデータをメモリに保持することができる。期限が来たらメモリから破棄されること。 キャッシュへの同時参照、更新を考慮し、データのロックが意識されていること。 初期設計※github.com - bmf-sa...

Golang キャッシュ