ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Interactive code execution visualization platform — watch C, Python, JavaScript, and Java run step by step. Memory, variables, and call stacks visualized.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
코드를 실제로 실행해서, 메모리와 실행 흐름이 어떻게 바뀌는지 한 단계씩 보여주는 학습 도구입니다. C · Python · JavaScript · Java를 지원합니다. 데모: https://codeinsight-jammy0903s-projects.vercel.app (로그인 없이 바로 사용) 처음에는 학습 서비스로 운영했고, 지금은 포트폴리오용으로 기능을 정리해 공개하고 있습니다. 소스는 MIT 라이선스입니다. 코드를 한 줄씩 실행하며 스택과 힙을 그려주는 도구로는 Python Tutor가 대표적입니다. CodeInsight는 같은 출발점에서 두 가지를 다르게 했습니다. 1. 실행 결과를 보기 전에 먼저 예측하게 한다 오개념이 흔한 줄에 도달하면, 그 줄을 실행하기 전에 결과를 먼저 고르게 합니다. 이 시점에는 다음 단계의 설명도 아직 보이지 않습니다. 답을 고르면 그 줄이 실행되고, 설명과 함께 시각화가 실제로 무엇이 바뀌었는지 보여줍니다. 질문은 오개념이 가장 흔한 지점에 넣었습니다. 2. 개념마다 그 개념에 맞는 그림을 쓴다 모든 코드를 "프레임 + 객체 + 화살표" 한 가지 그림으로 그리지 않고, 개념별 전용 뷰를 둡니다.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).