23:57:08GolangでgoblinというURLルーターを自作した概要GolangでURLルーターを自作したので実装するまでの過程をメモしておく。準備URLルーターを実装する際に行った下準備をまとめる。データ構造とアルゴリズムURLをどのようにマッチングさせるか、というロジックについて検討する。多くのライブラリでは、データ構造として木構造がよく扱われているので、どんな種類の木構造を採用するかを考えてみた。文字列探索に特化した木の中で、時間的・メモリ的計算量がよりベストなものを選定しようとすると、基数木というのが良さそうに見えるので最初はそれを採用しようとしていたのだが、実装が難し過ぎて挫折をした。2019の20日目の記事です。GolangでHTTPサーバーを立てるコードの詳細を追ってコードリーディングします。参考実装コードリーディングしていく実装はこちら。Golang概要トライ木のアルゴリズムと実装についてかく。トライ木とはトライ木(プレフィックス木ともいう。tree)は文字列の集合を扱う木構造の一種。各ノードは単一または複数の文字列あるいは数値を持ち(ノードは必ずしも値を持つ必要はない)、根ノードから葉に向かって探索して値をつなげていくことで単語を表現する。ネットワークのレイヤーならIPアドレスの探索、アプリケーションレイヤーならhttpのルーティングに、機械学習とかの文脈であれば形態素解析といったところでトライ木の応用が見受けられる。Architectureの実装に挑戦したみたので整理しておく。内容は概ねスライドの内容を踏襲している。理解しきれていないところがあったり、自分の解釈、考えを記述しているので、正しくない部分もあるかもしれない。スライドLTをする機会があったのでスライドを貼っておく。MVCのパターンでの実装もtagを切って残してある。oxequa/realizeを使ってみたメモ。12:47:37Goでmysqldumpツールをつくる概要このブログのDBバックアップを原始人のごとく手動でやっていたのでコマンド一発でバックアップをリモートからローカルにバックアップを取れるツールをgoでつくってみた。概要Golangのインターフェースについてまとめる。インターフェースFooで宣言したメソッドが全て実装されている構造体は、型Fooとして扱うことができる。概要Golangのポインタの基本では参照渡しと値渡しの違いの観点からポインタについて書いたが、それ以前にポインタを扱っているうちに混乱してきたため、ポインタの概要をまとめる。変数sはstring型のポインタ。概要Golangの関数において、以下3つについてまとめる。