zukai-blog / engineering-notes

ずかいブログ

むずかしい仕組みを、手を動かしながら理解するノート。

FIG-025 CPUキャッシュ階層 — 近いほど速いが、小さい データを要求してL1→L2→L3→RAMの探索を動かし、再アクセスが一瞬になる局所性を体感する。
FIG-024 CSSの詳細度 — なぜか色が変わらない、の正体 競合するルールをON/OFFして、点数(a,b,c)と勝者・ボタンの色がどう決まるかを試す。
FIG-023 ブルームフィルタ — 「絶対に無い」だけ即答する門番 単語を登録するとビットが立つ。問い合わせて「確実に無い」と偽陽性(あるかも)の違いを体験する。
FIG-022 メッセージキュー — 行列が速さの違いを吸収する 発行を連打しても発行者は待たされない。行列がバッファになり、処理係が自分のペースでさばく様子を体感する。
FIG-021 ガベージコレクション — 辿れないものはゴミ 参照の線を切って、ルートから到達できないオブジェクトがマーク&スイープで回収される様子を動かす。
FIG-020 二分探索 — 真ん中を見て、半分を捨てる カードを選んでステップ実行し、1回比べるたびに候補が半分に減るのを体感する。
FIG-019 公開鍵暗号 — 盗聴者の前で南京錠を配る 「閉める鍵」と「開ける鍵」を分けると、なぜ盗聴者の前でも秘密を渡せるのかを7ステップで体験する。
FIG-018 ロードバランサー — 次のお客さんはどの窓口へ? リクエストを送って、ラウンドロビンと最小接続数で配り方がどう変わるか見比べる。
FIG-017 ソートアルゴリズム — 同じ並び替えでも手間が違う バブル/選択/クイックを切り替えてステップ実行し、「比べた回数」の差を体感する。
FIG-016 サーキットブレーカー — 落ちた相手と共倒れしない 相手サービスを故障・復旧させて、Closed/Open/Half-Openの状態遷移を動かして学ぶ。
FIG-015 SQLインジェクション — 入力欄に呪文を混ぜて扉を破る 脆弱なログインフォームに攻撃文字列を入れて認証突破を再現し、プレースホルダで防ぐ。
FIG-014 デッドロック — お互いの一足を待ち続ける2人 2つのスレッドにロックを取らせて膠着を再現し、発生4条件と防ぎ方を体感する。
FIG-013 N+1問題 — 職員室に10回も聞きに行かない 「1人ずつ聞く」と「名簿をまとめてもらう」を実際に走らせて、往復11回 vs 1回を体感する。
FIG-012 HTTPSの鍵渡しパズル — 盗聴者の前で南京錠を配る 盗聴者が見ている道で共通鍵を安全に渡すTLSハンドシェイクを、8ステップで操作しながら学ぶ。
FIG-011 DHCP — Wi-Fiにつないだ瞬間のチェックイン手続き ホテルのフロントで空き部屋の鍵=IPを借りるDORAの4往復を、8ステップで操作しながら学ぶ。
FIG-010 CORSはなぜ怒るのか — ブラウザ先生の検問所 別オリジンへのfetchが検問される様子を、プリフライト〜許可まで8ステップで操作しながら学ぶ。
FIG-009 スタックとキュー — 積む山と、並ぶ行列 同じ順番で荷物を入れて、出てくる順番が逆になる(LIFO/FIFO)のを体験する。
FIG-008 IPアドレスとサブネットマスク — どこまでが「町名」か スライダーで境界線を動かすと、32ビットの住所が町名と番地に光り分かれる。
FIG-007 LRUキャッシュ — 机からあふれた本はどれを返す? 本をクリックして、ヒット・ミス・追い出しと「LRUの弱点」まで体験する。
FIG-006 HTTPステータスコードはカフェ店員の返事 コードのボタンを押すと店員さんの反応が変わる。百の位で責任の所在をつかむ。
FIG-005 DNS名前解決 — 質問のバケツリレー ルート→TLD→権威サーバーをめぐる旅とキャッシュ即答を、8ステップで操作しながら学ぶ。
FIG-004 JavaScriptはなぜ「待てる」のか — イベントループ タスクキューにタスクを積んで、ループが回る様子を観察する。
FIG-003 Gitのブランチは「付箋」だと思えばいい コミットのグラフを自分で伸ばして、マージを体験する。
FIG-002 ハッシュテーブルはなぜ一瞬で見つかるのか キーを入力して、住所が計算される様子をその場で試せる。
FIG-001 TCP/IPの仕組み — パケットの旅 データの荷造り(カプセル化)から開封まで、8ステップで操作しながら学ぶ。