サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
やろう!確定申告
bmf-tech.com
概要 これまでgoblinという自作HTTPルーターを自分のアプリケーションで使っていたが、Go1.22でServeMuxの機能が拡張されてからはServeMuxを使うようになった。 この記事では、Go1.22で追加されたServeMuxの機能や性能について整理し、これからのGoのHTTPルーター選定について考えてみる。 Go1.22で追加されたServeMuxの機能 Go1.22rcの公開時にServeMuxの新機能について調べていたが、もう少し詳細を追ってみようと思う。 cf. Go1.22rcで変更されるServeMuxの仕様 以下の参考情報を元にServeMuxの新機能について整理する。 リリースノート Go 1.22 Release Notes - Enhanced routing patterns ServeMuxのパターンが拡張され、メソッドとワイルドカード(動的なパスパラメ
GoでHTTPサーバーを書いているときなどオレオレ証明書がほしいときに役立つワンライナー。 go run $(go env GOROOT)/src/crypto/tls/generate_cert.go -rsa-bits 2048 -host localhost cert.pemとkey.pemが用意できる。 openssl使ったりmkcert使ったりしていたけどGo使っていたらこれで良さそう。 cf. Source file src/crypto/tls/generate_cert.go
この記事はMakuake Advent Calendar 2023の19日目の記事です。 なんでこんな大遅刻かというと、唯一埋まっていなかった19日の枠を急遽埋めようと思って投稿したため。元々掴んでいた枠ではないので遅刻ではない。 概要 去年くらいからGoのnet/httpに含まれるServeMuxの機能拡張の提案が出ていてウォッチしていたのだが、最近Closedになったらしい。 cf. net/http: enhanced ServeMux routing #61410 cf. GoでServeMuxの機能拡張を提案するProposalがAcceptedになった アプリケーション この機能拡張はGo1.22に含まれる想定らしく、Go1.22rc2がリリースされたので試してみた。(Go1.22rc1から含まれているようだが、スルーしていた。) Go1.22でのnet/httpの変更点 ti
概要この記事はMakuake Advent Calendar 2021の24日目の記事です。(大遅刻しました・・) ラウンドロビンで負荷分散するロードバランサーをGolangで自作してみるという話です。 ロードバランサーとは何かロードバランサーはリクエストを複数のサーバーへ振り分けて負荷分散する(ロードバランシング)機能を持ったサーバーです。 サービスの可用性を高めてくれるリバースプロキシの一種です。 ロードバランサーの種類は大きく分けて2種類あります。アプリケーション層で負荷分散するL7ロードバランサーと、トランスポート層で負荷分散するL4ロードバランサーです。 ロードバランサーは、ロードバランシングの他、パーシステンス(セッション維持)とヘルスチェックの機能を兼ね備えています。 ロードバランシングの種類負荷分散には静的な方式と動的な方式のものでそれぞれ種類があります。 静的なものの代表
概要 GolangでURLルーターを自作したので実装するまでの過程をメモしておく。 準備 URLルーターを実装する際に行った下準備をまとめる。 データ構造とアルゴリズム URLをどのようにマッチングさせるか、というロジックについて検討する。 多くのライブラリでは、データ構造として木構造がよく扱われているので、どんな種類の木構造を採用するかを考えてみた。 文字列探索に特化した木の中で、時間的・メモリ的計算量がよりベストなものを選定しようとすると、基数木というのが良さそうに見えるので最初はそれを採用しようとしていたのだが、実装が難し過ぎて挫折をした。 もう少し身近でシンプルなものをということでトライ木を採用することにした。 net/httpのコードリーディング net/httpが持つマルチプレクサの拡張として実装を行うため、内部の仕組みについてある程度理解しておく必要がある。 GolangのH
DockerのOperation not permittedというエラー�に対応する インフラストラクチャ 2019年9月27日 作成2019年9月27日 更新 概要 Docker Composeを使ってgolangのtest実行していたら、Operation not permittedというエラーに遭遇した。 対応 Docker Documentation - runtaime-privilege-and-linux-capabilities Dockerコンテナの特権設定をいじると解決する。 gobel_test_db: container_name: "gobel_test_db" build: ./docker/mysql ports: - "3305:3306" volumes: - mysql_gobel_test_db:/var/lib/mysql:delegated - .
概要 この記事はQiita - Go6 Advent Calendar 2019の20日目の記事です。 GolangでHTTPサーバーを立てるコードの詳細を追ってコードリーディングします。 参考実装 コードリーディングしていく実装はこちら。 package main import ( "net/http" ) func main() { mux := http.NewServeMux() handler := new(HelloHandler) mux.Handle("/", handler) s := http.Server{ Addr: ":3000", Handler: mux, } s.ListenAndServe() } type HelloHandler struct{} func (h *HelloHandler) ServeHTTP(w http.ResponseWrite
アーキテクトの教科書 価値を生むソフトウェアのアーキテクチャ構築 システムアーキテクチャ 2025年1月13日 アーキテクトの教科書 価値を生むソフトウェアのアーキテクチャ構築を読んだ。 タイトル通りまさに教科書といった内容で、アーキテクトが知るべき領域について網羅されている。 ソフトウェアアーキテクチャに焦点を当てた話が割合として多い。 注釈や良書紹介、参考文献が充実しているので、この本を起点に学びを広げることができる。 ... メタプログラミングRuby 第2版 アプリケーション 2025年1月6日 メタプログラミングRuby 第2版を読んだ。 メタプログミングを使いこなせたら魔法使いになれると思った。 使い所は分かったような気がするが、使いこなすのが難しいという感想を持った。 kinoppyd/reading-metaprogramming-rubyを後日やろうと思っている。 ...
このページを最初にブックマークしてみませんか?
『bmf-tech.com - ホーム』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く