ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
An interactive system design curriculum. Every topic pairs a written
explanation with a live simulation you can push until it breaks — adjust the
request rate and watch a fleet saturate, cut a network link and watch a
cluster choose between stale answers and no answers, skew a key distribution
and watch one shard take the whole load.
Client-side only. No backend, no accounts; progress lives in localStorage.
Next.js (App Router) · TypeScript · Tailwind CSS v4. Statically exported
pages, one accent colour, light and dark themes.檢視完整 README ↗An interactive system design curriculum. Every topic pairs a written explanation with a live simulation you can push until it breaks — adjust the request rate and watch a fleet saturate, cut a network link and watch a cluster choose between stale answers and no answers, skew a key distribution and watch one shard take the whole load.
Client-side only. No backend, no accounts; progress lives in localStorage.
Next.js (App Router) · TypeScript · Tailwind CSS v4. Statically exported pages, one accent colour, light and dark themes.
npm install
npm run dev # http://localhost:3000
npm run build # prerenders every topic
npx eslint .
npx tsc --noEmit
Fifteen topics across four modules, following the roadmap.sh System Design roadmap.
| Module | Topics | Interactives |
|---|---|---|
| 1 · Foundations | Scalability vs Performance, Latency vs Throughput, CAP Theorem, Consistency Patterns, Availability Patterns | Scale, Pipe, Partition, Replication, Uptime |
| 2 · Networking | DNS, CDN, Load Balancing | Resolver, Edge, Balancer |
| 3 · Scaling | Horizontal Scaling, Microservices, Service Discovery | Fleet, Blast Radius, Registry |
| 4 · Databases | SQL vs NoSQL, Replication, Sharding, Federation | Query Cost, Topology, Shard, Split |
Modules 5–8 (Caching, Asynchronism, APIs, Cloud Design Patterns) are scoped on the home page but not built. They follow the same pattern, so adding one means adding a topic component and registering it.
src/
lib/
curriculum.ts module and topic metadata — the single source of truth
sim.ts seeded RNG, fixed-timestep ticker, rolling percentiles
progress.ts localStorage-backed completion store
components/
Lab.tsx the shell every interactive sits in
prose.tsx Analogy, Tradeoffs, Pitfall, Takeaways
sims/ one file per interactive, plus shared drawing primitives
topics/ one file per topic: prose + its lab, registered in index.ts
app/
topics/[slug]/ prerendered from the curriculum
src/lib/curriculum.ts.src/components/sims/.src/components/topics/<slug>.tsx, default-exporting a
component that renders the prose and the lab.src/components/topics/index.ts.generateStaticParams iterates the curriculum, so a topic listed without a
registered component fails the build rather than 404-ing in production.
Each interactive keeps a mutable model in a ref, advances it in place from a
requestAnimationFrame loop, and re-renders to draw it. Randomness comes
from a seeded generator (Rng in src/lib/sim.ts) rather than
Math.random, so a simulation behaves identically on every machine and a
stated number — a hit rate, a p99, an availability figure — means the same
thing to every reader.
Because that is deliberately not a pure-render pattern, the React Compiler
lint rules react-hooks/refs and react-hooks/immutability are disabled for
src/components/sims/** and src/lib/sim.ts only. The reasoning is recorded
in eslint.config.mjs.
Simulations respect prefers-reduced-motion: the loop falls back to a coarse
timer so state still advances without continuous animation.
Completion is explicit — each topic has a Mark complete button. Nothing is
inferred from scrolling or from interacting with a lab. State is a single
localStorage key, validated against the current curriculum on read, so
renaming a slug drops its stale completion rather than inflating the count.