← Start here · Module 1 · 7 slides

Module 1 · Setup

수업 전 개발 환경을 갖춥니다. 6가지 도구를 설치하고, 마지막에 API 키 하나를 공유 .env에 저장하면 코스의 모든 예제가 그걸 자동으로 찾아 씁니다.

📊 원본 슬라이드: ksetp.netlify.app/setup — 각 섹션의 칩(슬라이드 N)이 덱의 슬라이드 번호와 같습니다.
🧰 비유: 요리를 시작하기 전 주방에 칼·도마·불을 갖추는 단계예요. 여기선 안 쓰지만, 이게 없으면 2편부터 아무것도 못 합니다.

How the pieces fit together

flowchart LR VS["VSCode
edit code"] --> Git["Git
track changes"] Git --> RT["runtimes
Node.js + Python 3.11"] RT --> Venv["venv
isolated Python deps"] Venv --> CLI["Claude Code CLI
AI pair-programmer"] CLI --> Key["ANTHROPIC_API_KEY
in shared .env"] Key --> Ready(["ready for Module 2"])

1.1 · Install VSCode Slide 1

코드를 들여다보고 편집하는 에디터(IDE). 필수는 아니지만 곧 필요해집니다.

# macOS
brew install --cask visual-studio-code
# Windows
winget install Microsoft.VisualStudioCode
# Verify
code --version

code 명령이 없으면 — macOS: VSCode → ⌘⇧P → "Shell Command: Install 'code' command in PATH". Windows: 설치 재실행 후 "Add to PATH" 체크.

1.2 · Install Git Slide 2

변경을 한 커밋씩 추적 → 발표 때 "diff를 따라 걷기". 42에서 매일 쓰던 그 git이에요.

# macOS (보통 Xcode CLT로 이미 있음)
brew install git
# Windows
winget install Git.Git
# Verify
git --version

GitHub 계정/원격은 불필요 — git은 완전히 로컬로 동작합니다. repo는 프로젝트 안의 숨김 .git/ 폴더일 뿐이에요.

이 코스를 위해 git을 쓰려면 GitHub 계정이 꼭 있어야 할까요?

git(버전관리)과 GitHub(원격 호스팅)은 다른 거예요. git은 로컬에서 커밋·diff·되돌리기를 전부 합니다. GitHub은 그걸 원격에 공유할 때만 필요하죠.

1.3 · Install Node.js (LTS) Slide 3

React 프론트엔드를 빌드·실행하는 도구(npm 포함).

# macOS
brew install node
# Windows
winget install OpenJS.NodeJS.LTS
# Verify
node --version    # v20.x.x or v22.x.x
npm --version

또는 nodejs.org → LTS(v20/v22).

1.4 · Install Python 3.11 Slide 4

Flask 백엔드를 돌리는 언어. 버전을 3.11로 맞춥니다.

# macOS
brew install python@3.11
# Windows
winget install Python.Python.3.11
# Verify
python3.11 --version    # Python 3.11.x
py -3.11 --version      # Windows: py 런처로 특정 버전 선택
📌 왜 버전을 3.11로 콕 집나: 라이브러리(특히 ML 계열)는 특정 파이썬 버전에서만 빌드된 휠을 제공할 때가 많아요. 모두가 같은 3.11을 쓰면 "내 컴퓨터에선 되는데"식 버전 차이 버그가 사라집니다. python3.11로 명시 호출하면 시스템에 여러 버전이 깔려 있어도 안전해요.

1.5 · Create your project folder and venv Slide 5

프로젝트 폴더를 만들고, 그 안에 격리된 파이썬 환경(venv)을 켭니다.

# macOS
mkdir ~/ksept-lab && cd ~/ksept-lab
python3.11 -m venv .venv
source .venv/bin/activate

# Windows (PowerShell)
mkdir ~/ksept-lab; cd ~/ksept-lab
py -3.11 -m venv .venv
.venv\Scripts\Activate.ps1
📦 비유: venv는 "이 프로젝트 전용 서랍"이에요. 활성화 중 pip install한 건 시스템 전체가 아니라 이 서랍에만 들어갑니다 — 프로젝트끼리 라이브러리가 안 엉켜요.

venv isolates installs per project

flowchart TB Sys["system Python
(shared, don't pollute)"] subgraph A["project A · .venv"] a1["flask 3.x"] end subgraph B["project B · .venv"] b1["flask 2.x + other libs"] end Sys -.creates.-> A Sys -.creates.-> B

Windows에서 스크립트가 막히면 한 번만: Set-ExecutionPolicy -Scope CurrentUser RemoteSigned. 확인: which python.../ksept-lab/.venv/bin/python으로 끝나야 합니다.

venv를 활성화한 채 pip install flask를 하면?

venv 활성화 = "이 서랍을 기본으로 써"라는 뜻. 그래서 설치물이 격리됩니다. .venv는 git에서 제외돼요(용량 큼, 재생성 가능).

1.6 · Install the Claude Code CLI Slide 6

앱을 대신 스캐폴딩해 주는 AI 코딩 어시스턴트(지금 당신이 쓰는 그것).

# macOS
npm install -g @anthropic-ai/claude-code
# Windows (자체 바이너리, Node 불필요)
irm https://claude.ai/install.ps1 | iex
# Verify
claude --version
cd ~/ksept-lab
code .     # VSCode로 폴더 열기
claude     # 통합 터미널에서 실행 — 첫 실행 시 로그인 안내

Claude Code CLI는 다음 섹션의 API 키로 로그인할까요?

둘은 별개예요. Claude Code(도구)는 자체 계정으로 로그인하고, API 키는 당신 앱이 Claude를 호출할 때 쓰는 열쇠입니다. 다음 섹션에서 그 키를 받아 .env에 둬요.

1.7 · Get an Anthropic API key Slide 7

당신의 앱이 Claude를 호출할 때 쓰는 열쇠. Claude Code 자체는 자기 로그인이 있어 필요 없고, 이 키는 예제 앱용이에요.

  1. console.anthropic.com/settings/keysCreate Key → 지금 복사(다시 안 보임)
  2. 루트의 공유 .env 한 곳에 저장:
# macOS
cd ~/ksept-lab
echo 'ANTHROPIC_API_KEY=sk-ant-...your-key...' > .env

# Windows
'ANTHROPIC_API_KEY=sk-ant-...your-key...' | Out-File -Encoding ascii .env
🔒 핵심: .env는 git에서 제외됩니다. 각 앱보다 한 단계 위 (~/ksept-lab/)에 두면, 모든 예제 앱이 폴더 트리를 거슬러 올라가 이 키 하나를 자동으로 찾아 씁니다 — 키를 여러 번 적을 필요가 없어요.

One shared .env, found by walking up the tree

flowchart TB Env["~/ksept-lab/.env
ANTHROPIC_API_KEY=..."] subgraph apps["each example app"] A["Projects/Module_02_chat-app/"] B["Projects/Module_03_extractor/starter/"] C["rag-starter/"] end A -.walks up to find.-> Env B -.walks up to find.-> Env C -.walks up to find.-> Env

.env를 각 앱 폴더가 아니라 그 상위(~/ksept-lab/)에 두는 이유는?

키를 앱마다 복붙하면 새는 지점도 늘고 관리가 번거로워요. 상위에 하나 두면 모든 앱이 공유하고, .gitignore 한 줄로 커밋 사고도 막습니다. 비밀은 코드와 분리가 원칙이에요.