ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기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.