CS 면접 지식을, 빌드 가능한 옵시디언 그래프 vault로 운영하는 학습 시스템.
찾아서 외우는 게 아니라, 모르는 게 생길 때마다 지도에 한 칸씩 채우는 방식으로 CS를 공부한다. 지식은 gyoogle/tech-interview-for-developer에서 가져와 8개 카테고리 그래프로 가공하고, 그 위에 진도·복습·면접 요약 같은 "학습 운영" 레이어를 얹는다.
| 겹 | 정체 | 누가 만드나 | 손대도 되나 |
|---|---|---|---|
| 지식층 | gyoogle 원본 → 8개 카테고리 위키링크 노트 | convert.py |
❌ 빌드가 재생성 (직접 수정 금지) |
| 운영층 | 진도 대시보드 · 학습 로드맵 · 카테고리 지도(MOC) · 템플릿 | build_index.py |
❌ 빌드가 재생성 (생성기를 고쳐라) |
| 사람층 | 🎤 30초 요약, 복습일, 직접 만든 노트 |
사람 + Claude | ✅ 🔒 MANUAL 블록 · _inbox/로 보존됨 |
- "검색"이 아니라 "지도 채우기" — 노트는 지도, Claude는 채우고 시험 보는 파트너.
- 생성기가 진실의 원천(SSOT) — 산출물(
.md)은 언제든 재생성. 그러니 출력물이 아니라_build/의 스크립트를 고친다. - 사람이 쓴 것은 절대 안 지운다 — 빌드를 100번 돌려도
🔒 MANUAL블록과_inbox/는 살아남는다.
# 1) 클론
git clone https://github.com/pyeree/How-to-CS.git
cd How-to-CS
# 2) 빌드 — 이거 하나면 끝. (_source가 없으면 gyoogle 원본을 자동으로 받아온다)
python _build/build.py
# 3) Obsidian에서 이 폴더를 vault로 열기
# 설정 → 커뮤니티 플러그인 → Dataview 설치·활성화 (대시보드 자동집계에 필요)열고 나면 00_INDEX/🏠 Home에서 출발한다. 의존성 없음(파이썬 표준 라이브러리 + git만 필요).
- 고르기 —
📊 진도 대시보드의 🎯 다음에 볼 것에서 빈출(🔴 priority 1) 주제 하나. - 채우기 — 노트 하단
🎤 면접 30초 요약칸을🤖 Claude 학습 루프의 ①채우기 프롬프트로 채운다 (본문 밖 사실 금지). - 표시 — frontmatter
status를완료로,복습일에 오늘+3일 날짜 기입. - 시험 — 그날 ⏰ 오늘 복습할 것으로 소환되면, 노트만 보고 ②출제자 모드로 셀프 시험. 막힌 곳만 보강.
status:안함 → 공부중 → 완료 → 복습·priority:1(🔴빈출)2(🟡중요)3(🟢심화)
Claude 활용 프롬프트 4종(채우기·출제자·꼬리질문·연결찾기)은 vault 안 🤖 Claude 학습 루프 노트에 복붙용으로 들어 있다.
How-to-CS/
├─ 00_INDEX/ # 🏠 Home · 📊 진도 대시보드 · 🗺️ 학습 로드맵 · 🤖 Claude 학습 루프 (생성물)
├─ 01_운영체제 … 08_소프트웨어공학/ # 카테고리별 개념 노트 + +지도(MOC) (생성물)
├─ _inbox/ # 🗃 직접 만든 내 노트 — 빌드가 절대 안 지우는 안전지대 (내 것)
├─ _templates/ # 개념노트 템플릿 (생성물)
├─ _build/ # build.py(통합) · convert.py(지식층) · build_index.py(운영층)
├─ _source/ # gyoogle 원본 클론 — git 추적 제외, 빌드가 자동 관리 (자동)
└─ docs/specs/ # 설계 문서
- 항상
python _build/build.py하나로 돌린다. (convert.py만 단독 실행하면 MOC가 지워진 채 남는다 — 래퍼가convert → build_index순서를 보장) - 개별 실행이 필요하면 반드시 이 순서:
python _build/convert.py→python _build/build_index.py. - 대시보드·로드맵·템플릿 문구를 바꾸려면 산출물
.md가 아니라_build/build_index.py를 고친다 (안 그러면 다음 빌드에 덮어쓰임). .obsidian설정은 없을 때만 생성한다 — 직접 설치한 플러그인은 보존된다.
매일 08:00(KST) GitHub Actions가 _build/daily.py를 돌려 전체 노트 중 하나를
복습우선 + 날짜시드로 골라 00_INDEX/🗓 오늘의 개념.md로 갱신하고 텔레그램으로 푸시한다.
- 선정 순서: 복습 도래 → 빈출(priority 1) 미학습 → 미학습 → 완료(장기복습)
- 셋업: 텔레그램
@BotFather봇 토큰 + chat_id 를 repo Secrets(TELEGRAM_BOT_TOKEN,TELEGRAM_CHAT_ID)에 등록. 미등록 시 노트만 갱신하고 발송은 건너뛴다. - 수동 실행/미리보기:
python _build/daily.py --dry-run
- ❌
_source/를 손으로 고치지 마라. 빌드가 재생성한다. - ❌ 카테고리 폴더(01~08)에 직접 노트를 만들지 마라. 다음 빌드의
rmtree로 사라진다 → 내 노트는 **_inbox/**에. - ❌ 생성된 노트의
🔒 MANUAL:START ~ END마커를 지우지 마라. 그 안의 30초 요약이 보존되는 근거다.
자세한 설계 의도는 docs/specs/ 참고. CS 지식 출처: gyoogle/tech-interview-for-developer (MIT).