프로그래밍 기초와 SQLD 자격증을 오해 없이, 순서대로 독학하기 위한 학습 앱입니다. 설치할 것도, 서버도 없는 정적 웹 앱이라 브라우저만 있으면 됩니다.
- 🌐 바로 사용: https://rach0209.github.io/study/ (폰·다른 PC 포함, GitHub Pages)
- 💻 내 PC 에서: 저장소를 받아
index.html을 열거나start.bat더블클릭
| 순서 | 트랙 | 강의 | 퀴즈 | 핵심 |
|---|---|---|---|---|
| 1 | 🐍 Python 기초 | 10강 | 55 | 변수 → 조건/반복 → 리스트/딕셔너리 → 함수 → 파일/예외 → 클래스 |
| 2 | ⚙️ C++ 기초 | 10강 | 59 | 컴파일 모델 → 타입/메모리 → 함수/참조 → 포인터 → RAII/스마트 포인터 → 클래스 → 상속/다형성 → STL |
| 3 | ☕ Java 기초 | 8강 | 41 | JVM → 타입/String → 배열 → 객체/참조 → 상속/인터페이스 → 컬렉션 → 예외 → 람다/스트림 |
| 4 | 🗄️ SQLD 자격증 | 18강 | 178 | 시험 안내 → 데이터 모델링(과목1, 4강) → SQL 기본(SELECT·함수·WHERE·GROUP BY·조인) → SQL 활용(서브쿼리·집합/그룹 함수·윈도우·계층형·PIVOT·정규식) → 관리 구문(DML·TCL·DDL·DCL) → 실전 모의고사 2회 |
왜 C 가 아니라 C++ 인가? 일반 소프트웨어(게임·금융·자율주행·로봇·AI 추론 엔진) 채용이 넓고, 포인터/메모리 개념은 C 와 공통이라 나중에 임베디드(C)로 가기 쉽습니다.
- 한국데이터산업진흥원 SQL 개발자(SQLD) 필기시험의 공식 출제범위를 기준으로 구성했습니다. 시험은 50문항·90분·문항당 2점, 총점 60점 이상 합격이며 과목별 40% 미만이면 과락입니다(과목1 8점 미만, 과목2 32점 미만).
- 시험 일정·접수·응시료는 바뀔 수 있으니 반드시 dataq.or.kr 공고를 확인하세요.
- 문제는 기출 경향(결과 예측, NULL·조인·그룹·윈도우 함정, 용어 구분)을 반영해 새로 만든 것이며 실제 기출문제 복원본이 아닙니다. 시험 직전에는 시중 기출 문제집으로 난이도를 점검하세요.
- SQLD 는 Oracle 문법이 중심이고 SQL Server 와의 차이도 출제됩니다. 레슨에서 두 방언의 차이를 표로 비교합니다.
- SQLP 는 SQLD 합격 후 별도 과정이라 이 트랙에 포함하지 않았고, 로드맵에 예정 트랙으로만 올려 두었습니다.
SQLP(SQLD 합격 후) → 자료구조·알고리즘 → Git/리눅스 → 임베디드(C) → 로봇(ROS2) → AI/ML
- 🎯 이 레슨이 끝나면 (학습 목표)
- 📖 먼저 알아둘 용어 — 정의를 정확히
- 본문 설명
- ⚠ 흔한 오해 바로잡기 — ❌오해 / ✅실제 / 이유 (오해 방지의 핵심)
- 💻 코드로 확인하기 — 실행 결과 포함
- ✍ 직접 해보기 — 힌트와 예시 답안
- ✅ 확인 퀴즈 — 80% 이상이면 레슨 완료
- 레슨 읽기 → 예제는 눈으로만 보지 말고 직접 쳐서 실행
- "직접 해보기" 풀기 (예시 답안은 풀어본 뒤에)
- 퀴즈 → 틀린 문제는 자동으로 오답노트에 저장
- 매일 🔁 복습 먼저: 틀린 문제가 1·3·7·14일 간격으로 다시 나옴 (5번 연속 맞히면 정복)
홈의 "이어서 학습하기" 는 마지막으로 연 레슨으로 이동합니다(처음이면 첫 레슨). 진도는 브라우저(localStorage)에 저장됩니다. ⚙ 설정·백업 에서 백업 파일을 저장해 두세요.
GitHub 토큰을 한 번 넣으면 기기 간 진도(이어서 학습하기, 완료 레슨, 오답노트)가 합쳐집니다.
- https://github.com/settings/tokens/new?scopes=gist&description=study-sync 에서 classic 토큰을 만듭니다. 권한은 gist 하나만, 만료일은 90일 등으로 설정합니다.
- 앱의 ⚙ 설정·백업 → 기기 간 동기화에 토큰(
ghp_…)을 붙여 넣고 연결합니다. 계정에 비공개 Gist 가 하나 생깁니다. - 다른 기기에서도 같은 토큰으로 연결하면 끝입니다.
- 문제를 풀면 몇 초 뒤 자동 저장되고, 탭으로 돌아올 때 최신 기록을 가져옵니다. 두 기기의 기록은 항목별로 합쳐지며(완료는 OR, 점수는 높은 쪽, 카드·마지막 레슨은 최근 쪽) 한쪽이 다른 쪽을 덮어쓰지 않습니다.
- 토큰은 그 기기 브라우저에만 저장되고 백업 파일에는 들어가지 않습니다. 의심되면 GitHub 에서 토큰을 삭제하면 즉시 무효가 됩니다.
- Secret Gist 는 주소를 아는 사람은 볼 수 있지만 들어 있는 것은 진도 기록뿐입니다.
- 두 기기의 시계가 크게 어긋나 있으면 "더 최근" 판단이 틀릴 수 있습니다(자동 시간 설정 권장).
- 사이트 이용: 브라우저만 있으면 됩니다.
- Python: python.org 에서 3.10 이상
- C++: g++ (Windows 는 MSYS2 의 mingw-w64 또는 Visual Studio Build Tools). 어려우면 godbolt.org / onlinegdb.com 으로 시작
- Java: JDK 17 이상 (Temurin)
- SQL: 설치 없이 SQLite 웹 실습 사이트로 시작할 수 있고, 시험 문법에 맞추려면 Oracle XE(무료)를 권장
- 편집기: VS Code 추천
- 콘텐츠 검증/수정: Node.js 와 Python (위 언어 도구는 해당 트랙을 검증할 때만 필요)
index.html 앱 진입점 (스크립트 로드 순서 = content → merge.js → app.js)
start.bat index.html 을 기본 브라우저로 여는 바로가기 (Windows)
css/style.css 디자인 (다크 모드 자동, 모바일 대응)
js/app.js 앱 엔진 (화면, 퀴즈, 오답노트/복습, 진도 저장, Gist 동기화)
js/merge.js 두 기기의 진도를 합치는 순수 함수
content/ ← 강의 내용. 여기만 고치면 됨
roadmap.js 예정 트랙 목록
python.js cpp-1.js cpp-2.js java.js
sqld-1.js ~ sqld-4.js SQLD (시험 안내+모델링 / SQL 기본 / SQL 활용 / 관리 구문+모의고사)
tools/verify.js 콘텐츠 검증 (구조 + 예제 코드를 실제 실행해 출력 비교)
tools/sqlrun.py SQL 예제 실행기 (SQLite). Oracle 함수 일부(NVL, DECODE, REGEXP_* 등)는 흉내
tools/fill-sql.js SQL 예제의 `output: '@@'` 를 실제 실행 결과로 채움
tools/test-merge.js 기기 간 동기화 병합 규칙 테스트
레슨은 content/*.js 의 객체입니다. 기존 레슨을 복사해 id, title, 본문, quiz 를 바꾸면 됩니다.
새 트랙 파일을 만들면 index.html 의 <script src="content/..."> 목록(merge.js 앞)에 추가하세요.
- 본문은 줄 단위 배열 (
**굵게**,`코드`,- 목록, 표, 코드 펜스 지원) - 예제:
{ title, lang, code, output, notes, stdin, noverify, prelude }—lang은 python / cpp / java / sql - 퀴즈: 객관식
{q, choices, answer, explain}/ 주관식{q, accept:[...], explain}, 코드가 있으면code+lang추가 - SQL 예제에
prelude: true를 주면 공통 실습 테이블(window.SQLD_COMMON: EMP 8행, DEPT 3행)이 앞에 붙어 실행됩니다.
node tools/verify.js # 전체 (구조 + 예제 실행)
node tools/verify.js sqld # 한 트랙만
node tools/verify.js --no-run # 구조만 빠르게
node tools/test-merge.js # 동기화 병합 규칙 테스트구조 오류(정답 인덱스 등)를 잡고, 예제의 output 이 실제 실행 결과와 같은지 확인합니다.
- C++ 예제는 g++ 또는 clang++ 가 설치되어 있어야 검증됩니다 (없으면 "미검증"으로 표시하고 건너뜀).
- SQL 예제는 Python 내장 SQLite 로 실행합니다. SQLite 에 없는 Oracle 전용 문법(ROLLUP/CUBE, CONNECT BY, ROWNUM, PIVOT,
(+), ANY/ALL 등)은noverify: true로 표시하고, 출력은 같은 의미의 표준 SQL 을 SQLite 로 계산한 값을 옮겼습니다. 새 SQL 예제는output: '@@'로 두고node tools/fill-sql.js content/sqld-N.js를 실행하면 실행 결과가 채워집니다. - 현재 상태: 예제 154개를 실제 실행해 모두 통과, Oracle 전용 15개는 실행 검증 불가(
noverify).
main 브랜치의 루트가 그대로 배포됩니다. 수정 → 검증 → push 하면 1~2분 뒤 사이트에 반영됩니다.
git add -A && git commit -m "update" && git push