2019-12-15 21:47:32
概要この記事はURLルーティング自作入門 エピソード1の続きで、Makuake Development Team Advent Calendar 2019の15日目となります。
URLルーティングを自作する前回の続きです。
ルーターを自作するにあたり、ルーターがどういった処理を行うのかデータ構造の観点から考えてみます。
ルーターがどんなInputを受け取って、どんなOutputを返すのか、動的なルーティングの場合の例を図示してみました。
URLのパス部分をInputとして受け取り、パスとマッチするデータを判定してOuputして次の処理につなげる、というのルーターの役割です。
どのようにパスの...
アプリケーション
HTTP
URLルーティング
2019-12-14 23:20:25
概要この記事はMakuake Development Team Advent Calendar 2019の14日目の記事です。
趣味で駆け出し※URLルーティング自作マンをやっているので、URLルーティング自作界隈※に入門したい人に向けた記事となれば幸いです。
※駆け出しというキーワードが今年はWeb界隈で流行り?ましたね。私は去年末からURLルーティング自作を始めたので駆け出しだと思います。※そんな界隈があるのかは知らないが、世界は広いのでたぶんある。
駆け出しURLルーティング自作マンの軌跡見るに耐えないものではあるが、色々試行錯誤した過程を晒しておきます。
記事
URLルーティングを...
アプリケーション
HTTP
URLルーティング
2019-03-24 21:58:28
概要URLルーティングをつくる エピソード1 とURLルーティングをつくる エピソード2
でURLルーティングの自作について試行錯誤の過程を記してきたが、ようやく一段落させることができたので完結編という形で締括くりたい。
完結、といっても課題はいくらでもあるし突き詰めるとこればっかりに時間をかけることができるようなモノであるということは承知している。。。
前回までの話しエピソード1 では、ルーティングのデータ構造を考えたり、とりあえず手を動かして実装のイメージを掴もうとした。(動くところまで持っていけなかった。。。)
エピソード2では、データ構造を見直したり、参考になりそうなリポジトリを漁って...
アルゴリズムとデータ構造
PHP
URLルーティング
HTTP
木構造
2019-01-09 02:20:08
概要URLルーティングをつくる エピソード1の続き。
とりあえず動く形のものを仕上げてpackagist - ahi-routerという名前でパッケージ公開した。
エピソード1からの変更点エピソード1では、データ構造に木構造を採用してルーティングを作ろうというと試みた。
パフォーマンスが考慮されているライブラリでは、木構造を生成するロジックを用意して、最適化された探索アルゴリズムを実装するような形になっているようだが、木構造を生成するロジックをかくのはめん(ry 時間がかかりそうだったので、探索部分だけ頑張る方向性でやってみることにした。
前回はルーティング定義のデータ構造を、
<?ph...
アルゴリズムとデータ構造
HTTP
URLルーティング
木構造
2018-12-19 02:38:10
URLルーティングをつくる エピソード1概要以前、Reactで非常に軟弱なルーティング(cf. ReactとHistory APIを使ってrouterを自作する)を作ったが、改めてそこそこにちゃんとしたルーティングを自作したいと思い、挑戦することにした。きっかけは、最近触っているGolangだ。Golangでは標準ライブラリを駆使することでアプリーケーションをうすーく実装できるようだが、ルーティング周りは標準ライブラリがパワー不足なのものあって、外部のライブラリに依存するケースが多いらしい。そんなこともあってルーティングを自作できるようになるとGolangでもそれ以外でもルーティングを自前で用...
アルゴリズムとデータ構造
HTTP
URLルーティング
木構造
2018-07-01 12:22:34
ネットワークはなぜつながるのか 第2版
第1章 Webブラウザがメッセージを作る~ブラウザ内部を探検~
第2章 TCP/IPのデータを電気信号にして送る~プロトコル・スタックとLANアダプタを探検~
第3章 ケーブルの先はLAN機器だった~ハブとスイッチ、ルーターを探検~
第4章 アクセス回線を通ってインターネットの内部へ~アクセス回線とプロバイダを探検~
第5章 サーバー側のLANには何がある
第6章 Webサーバーに到着し、応答データがWebブラウザに戻る~わずか数秒の「長い旅」の終わり~
第1章 Webブラウザがメッセージを作る~ブラウザ内部を探検~1.3 世界...
本
HTTP
DNS
IP
ブラウザ
2018-06-15 11:31:46
GraphQLとは
Facebookが開発
APIのためのクエリ言語
APIのリクエストのデータ形式とレスポンスのデータ形式が似ているため、ユーザーフレンドリー
RESTはアーキテクチャ(設計)であり、GraphQLは言語(DSL)である
REST APIとGraphQLの比較REST APIのAPI形式エンドポイントに対して、HTTP動詞でリクエストを投げる
curl https://api.bmf-tech.com/v1/configs
[
{
"id": 1,
"name": "title&q...
アプリケーション
API
HTTP
REST
GraphQL
2018-05-06 22:45:15
Real World HTTP
1章 HTTP/1.0のシンタックス:基本となる4つの要素
2章 HTTP/1.0のセマンティクス:ブラウザの基本機能の裏側
3章 Go言語によるHTTP/1.0クライアントの実装
4章 HTTP/1.1のシンタックス:高速化と安全性を求めた拡張
5章 HTTP/1.1のセマンティクス:広がるHTTPの用途
6章 Go言語によるHTTP1.1クライアントの実装
7章 HTTP/2のシンタックス:プロトコルの再定義
8章 HTTP/2のセマンティクス:新しいユースケース
9章 Go言語によるHTTP/2、HTML 5のプロトコルの実装
10章 セキュリティ:ブラウ...
本
Golang
HTTP
2018-04-21 11:04:59
HTTPSとは
HTTP(Hyper Transfer Protocol) over TLS(Transport Layer Security)
TCPハンドシェイクの後にTLSハンドシェイクを行う
完了後、暗号通信のままHTTPリクエストとレスポンスを交換
TLSの機能TLSというプロトコルが提供する機能
機密性
ネットワーク経路上でデータの中身が見れない
完全性
通信データの改ざん防止
メッセージ認証(MAC: Message Authentication Code)により、完全性を確保
真正性
なりすまし防止
認証局が発行するサーバー証明書をブラウザがアクセス先が正当...
ネットワーク
HTTP
HTTPS
SSL
TLS