ホーム

GolangでgoblinというURLルーターを自作した

アプリケーション

概要 GolangでURLルーターを自作したので実装するまでの過程をメモしておく。 準備 URLルーターを実装する際に行った下準備をまとめる。 データ構造とアルゴリズム URLをどのようにマッチングさせるか、というロジックについて検討する。 多くのライブラリでは、データ構造として木構造がよく扱われているので、どんな種類の木構造を採用するかを考えてみた。 文字列探索に特化した木の中で、時間的・メモリ...

Golang URLルーティング router

アルゴリズムとデータ構造 - 二分探索木

アルゴリズムとデータ構造

概要アルゴリズム図鑑を参考に、アルゴリズムとデータ構造を学ぶ。 実装はgithub - bmf-san/road-to-algorithm-masterにも置いてある。 二分探索木 各ノードが多くとも2つまでのノードしか持たない二分木の一種で、左の子ノード ≤ 親 ≤ 右の子ノードという制約を持った構造の木 最も左にあるノードが最小ノードで、最も右にあるノードが最大ノードとなる 二分探索木に限...

二分探索木

アルゴリズムとデータ構造 - ヒープ

アルゴリズムとデータ構造

概要アルゴリズム図鑑を参考に、アルゴリズムとデータ構造を学ぶ。 実装はgithub - bmf-san/road-to-algorithm-masterにも置いてある。 ヒープ 優先度付きキュー(priority queue)の一種 優先度付きキューは、集合(set)を扱うデータ型 集合に含まれる要素は優先度順に取り出される 集合を扱うデータ型の例:キュー、スタック ヒープの種類 ...

ヒープ

2019年の振り返りと来年の抱負

ポエム

2019年の振り返りと来年の抱負今年も残すところ1週間とちょっとくらいになったので、今年の振り返りと来年の抱負をポエムっとく。 今年の振り返りここ3年間くらい右肩上がりで公私ともに良い機会、良い経験に恵まれている。今年は特に良い年だったと思う。めんどくさいので雑に箇条書きにしていく。 パブリックな方面個別の事柄をピックアップして書きたいけど、多すぎて大変面倒なことになるので総括だけ。 リードエン...

振り返りと抱負

URLルーティング自作入門 エピソード2

アプリケーション

概要 この記事はURLルーティング自作入門 エピソード1の続きで、Makuake Development Team Advent Calendar 2019の15日目となります。 URLルーティングを自作する 前回の続きです。 ルーターを自作するにあたり、ルーターがどういった処理を行うのかデータ構造の観点から考えてみます。 ルーターがどんなInputを受け取って、どんなOutputを返すのか、動...

HTTP URLルーティング router

URLルーティング自作入門 エピソード1

アプリケーション

概要 この記事はMakuake Development Team Advent Calendar 2019の14日目の記事です。 趣味で駆け出し※URLルーティング自作マンをやっているので、URLルーティング自作界隈※に入門したい人に向けた記事となれば幸いです。 ※駆け出しというキーワードが今年はWeb界隈で流行り?ましたね。私は去年末からURLルーティング自作を始めたので駆け出しだと思います。 ...

HTTP URLルーティング router

2019年の全PHPカンファレンスをコンプリートした

ポエム

概要2019年に日本国内で開催された全ての公式PHPカンファレンスにしたので参加記録をまとめる。 PHPカンファレンス参加レポートまとめ仙台に始まり、東京で終わるまでの道のり。東京以外のカンファレンスは全て初参加。 PHPカンファレンス仙台2019に参加した Laravel JP Conference国内初開催のLaravelカンファレンス。スタッフ兼スピーカーとして参加した。来年度もスタッフと...

PHP PHPカンファレンス

Design It

システムアーキテクチャ

1~2年くらいに前に読んだDesign Itを読み直していたら、ソフトウェアアーキテクトとして果たすべき役割や責任について学び得ることがあったので、メモを残す。 お気持ちも交えつつ書くのでこれはポエム。 ソフトウェアアーキテクトは何をする人なのか? ソフトウェアアーキテクトはコードも書くし、プロジェクトのリードもするし、ビジネス的な視点でも思考を巡らせたりもする。 ビジネス・技術・ユーザーの3つの...

アーキテクト

アルゴリズムとデータ構造 - キュー

アルゴリズムとデータ構造

概要アルゴリズム図鑑を参考に、アルゴリズムとデータ構造を学ぶ。 実装はgithub - bmf-san/road-to-algorithm-masterにも置いてある。 キュー 常に先に追加されたデータからしかアクセスできないようにデータを一列に並べた構造 スタックとは追加と削除の方向が逆になる。 FIFO(First In First Out) 先入れ先出し 待ち行列ともいう。 データの...

キュー

アルゴリズムとデータ構造 - スタック

アルゴリズムとデータ構造

概要アルゴリズム図鑑を参考に、アルゴリズムとデータ構造を学ぶ。 実装はgithub - bmf-san/road-to-algorithm-masterにも置いてある。 スタック 常に最新のデータからしかアクセスできないようにデータを一列に並べた構造 LIFO(Last In First Out) 後入れ先出し 常に最新のデータへアクセスしたいときに便利な構造 データの追加をPush、削除...

スタック