ESP32-S3 Bench Guide
ESP32-S3 N16R8 bench guide: live pinout, lessons, simulators and the bench log.
A programming learning platform that visualizes memory operations in real time while you learn. Supports C, Python, JavaScript, Java.
AI translation
메모리 동작을 실시간으로 시각화하며 배우는 프로그래밍 학습 플랫폼. C/Python/JavaScript/Java 지원.
EducationTypeScript · JavaScriptGitHub @jammy0903OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Interactive code execution visualization platform — watch C, Python, JavaScript, and Java run step by step. Memory, variables, and call stacks visualized.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
코드를 실제로 실행해서, 메모리와 실행 흐름이 어떻게 바뀌는지 한 단계씩 보여주는 학습 도구입니다. C · Python · JavaScript · Java를 지원합니다. 데모: https://codeinsight-jammy0903s-projects.vercel.app (로그인 없이 바로 사용) 처음에는 학습 서비스로 운영했고, 지금은 포트폴리오용으로 기능을 정리해 공개하고 있습니다. 소스는 MIT 라이선스입니다. 코드를 한 줄씩 실행하며 스택과 힙을 그려주는 도구로는 Python Tutor가 대표적입니다. CodeInsight는 같은 출발점에서 두 가지를 다르게 했습니다. 1. 실행 결과를 보기 전에 먼저 예측하게 한다 오개념이 흔한 줄에 도달하면, 그 줄을 실행하기 전에 결과를 먼저 고르게 합니다. 이 시점에는 다음 단계의 설명도 아직 보이지 않습니다. 답을 고르면 그 줄이 실행되고, 설명과 함께 시각화가 실제로 무엇이 바뀌었는지 보여줍니다. 질문은 오개념이 가장 흔한 지점에 넣었습니다. 2. 개념마다 그 개념에 맞는 그림을 쓴다 모든 코드를 "프레임 + 객체 + 화살표" 한 가지 그림으로 그리지 않고, 개념별 전용 뷰를 둡니다.Read the full README ↗
코드를 실제로 실행해서, 메모리와 실행 흐름이 어떻게 바뀌는지 한 단계씩 보여주는 학습 도구입니다. C · Python · JavaScript · Java를 지원합니다.
데모: https://codeinsight-jammy0903s-projects.vercel.app (로그인 없이 바로 사용)
처음에는 학습 서비스로 운영했고, 지금은 포트폴리오용으로 기능을 정리해 공개하고 있습니다. 소스는 MIT 라이선스입니다.
코드를 한 줄씩 실행하며 스택과 힙을 그려주는 도구로는 Python Tutor가 대표적입니다. CodeInsight는 같은 출발점에서 두 가지를 다르게 했습니다.
오개념이 흔한 줄에 도달하면, 그 줄을 실행하기 전에 결과를 먼저 고르게 합니다. 이 시점에는 다음 단계의 설명도 아직 보이지 않습니다. 답을 고르면 그 줄이 실행되고, 설명과 함께 시각화가 실제로 무엇이 바뀌었는지 보여줍니다.
| 예측 | 실행 후 |
|---|---|
질문은 오개념이 가장 흔한 지점에 넣었습니다.
| 레슨 | 질문 |
|---|---|
| C 역참조 쓰기 | *remote = 100;이 바꾸는 건 포인터일까, 원본일까? |
| Python 리스트 | append는 새 리스트를 만들까? del 후 빈자리가 남을까? |
| Java 참조 전달 | 메서드 안에서 필드를 바꾸는 것과 매개변수를 재할당하는 것의 차이 |
| JS 이벤트 루프 | setTimeout과 Promise.then 중 무엇이 먼저 출력될까? |
모든 코드를 "프레임 + 객체 + 화살표" 한 가지 그림으로 그리지 않고, 개념별 전용 뷰를 둡니다.
| 언어 | 전용 뷰 |
|---|---|
| JavaScript | 이벤트 루프(Call Stack · Web APIs · Task/Microtask Queue), Promise 상태, 프로토타입 체인, 스코프, this 바인딩 |
| C | 스택 프레임과 포인터 화살표, 반복문 진행 트랙, 분기 진입/스킵 표시 |
| Python | 이름표(변수)와 객체의 참조 그래프, 가변/불변 객체 구분 |
| Java | 호출 스택과 힙 객체, 참조 변수 호버 시 대상 객체 하이라이트 |
레슨: 4개 언어, 43개 챕터, 202개 레슨 (한국어 · 영어 · 중국어). 한 단계마다 설명(위)과 시각화(아래)를 함께 보고, 마지막에 퀴즈를 풉니다.
Playground: 직접 작성한 코드를 실행하고 같은 시각화로 따라갑니다.
계정 없음: 로그인 없이 모든 기능을 쓸 수 있습니다. 진도와 예측 결과는 브라우저(localStorage)에 저장합니다.
flowchart LR
subgraph Browser[Frontend · React]
PG[Playground] --> SVC[simulator client<br/>응답 → LessonStep]
LS[Lesson] --> SVC
SVC --> AD[언어별 Transformer]
AD --> VIEW[개념별 뷰]
end
subgraph API[Backend · Fastify]
SIM[/simulators/:lang/simulate/]
CRS[/courses/*/]
end
SVC -- 사용자 코드 --> SIM
LS -- 레슨 JSON --> CRS
CRS --> DB[(PostgreSQL<br/>레슨 콘텐츠)]
SIM --> C[C · gcc + GDB/MI]
SIM --> PY[Python · sys.settrace]
SIM --> JS[JavaScript · V8 Inspector]
SIM --> JV[Java · JDI 디버거 에이전트]
| 언어 | 실행 추적 방식 |
|---|---|
| C | gcc로 컴파일한 뒤 GDB/MI로 한 줄씩 진행하며 스택·힙·포인터 스냅샷 수집 |
| Python | sys.settrace 기반 에이전트로 이름과 객체 참조를 추적 |
| JavaScript | Node.js V8 Inspector로 스텝 실행하며 스코프와 콜 스택 수집 |
| Java | JDI(Java Debug Interface) 에이전트로 프레임과 힙 객체 수집 |
시뮬레이터는 API 서버의 자식 프로세스로 실행됩니다. 실행 시간 제한, 스텝 상한, 위험 패턴 검사, 최소 환경변수, 요청 속도 제한(IP당 분당 100회)을 적용합니다. 실행 단위 컨테이너 격리는 적용하지 않았습니다.
packages/
├── frontend/ React 19 · Vite · TailwindCSS · Zustand · TanStack Query
├── backend/ Fastify · Prisma · 언어별 시뮬레이터 (src/modules/simulators)
└── shared/ 프론트·백엔드 공용 Zod 스키마와 타입
usePredictGate 훅을 거치며, 질문 중에는 다음 단계로 넘어가지 않습니다. 각 질문의 첫 답만 기록해, 다시 풀어 맞혀도 오개념 기록이 지워지지 않습니다.scripts/record-home-demo.mjs로 녹화해 번들에 넣고, Playground·레슨과 같은 변환 함수로 재생합니다. 백엔드가 잠들어 있어도 첫 화면이 바로 움직입니다.필요한 것: Node.js 22 이상, pnpm, PostgreSQL. 시뮬레이터를 로컬에서 돌리려면 GCC · GDB, Python 3, JDK 17이 필요합니다.
git clone https://github.com/jammy0903/CodeInsight.git
cd CodeInsight
pnpm install
# PostgreSQL (Docker 예시)
docker run -d --name codeinsight-db -p 5432:5432 \
-e POSTGRES_USER=codeinsight -e POSTGRES_PASSWORD=codeinsight123 -e POSTGRES_DB=codeinsight \
postgres:16
# 스키마 적용 + 레슨 콘텐츠 시드
cd packages/backend
npx prisma migrate deploy
npx prisma db seed
cd ../..
pnpm dev
http://localhost:5174http://localhost:3002모든 환경변수에는 기본값이 있어 .env 없이 실행됩니다. 바꿀 수 있는 값은 .env.example과 packages/backend/.env.example에 있습니다.
pnpm build # 전체 빌드
pnpm test # 전체 테스트 (C 시뮬레이터 테스트는 gdb 필요)
| 대상 | 플랫폼 |
|---|---|
| Frontend | Vercel (main push 시 자동 배포) |
| Backend | Fly.io (도쿄, 요청이 없으면 머신 자동 정지 → 첫 요청은 몇 초 걸릴 수 있음) |
| DB | Neon PostgreSQL (레슨 콘텐츠) |
백엔드 배포 시 마이그레이션과 레슨 콘텐츠 seed가 자동으로 실행됩니다 (fly.toml의 release_command).