Skip to content
Rach0209Public

About

프로그래밍(Python·C++·Java) + SQLD 자격증 독학용 퀴즈·오답노트·복습 앱 (정적 웹, 설치 불필요)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📘 독학 스터디

프로그래밍 기초와 SQLD 자격증을 오해 없이, 순서대로 독학하기 위한 학습 앱입니다. 설치할 것도, 서버도 없는 정적 웹 앱이라 브라우저만 있으면 됩니다.

  • 🌐 바로 사용: https://rach0209.github.io/study/ (폰·다른 PC 포함, GitHub Pages)
  • 💻 내 PC 에서: 저장소를 받아 index.html 을 열거나 start.bat 더블클릭

커리큘럼 (총 4개 트랙 · 46강 · 퀴즈 333문제)

순서 트랙 강의 퀴즈 핵심
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)로 가기 쉽습니다.

SQLD 트랙 안내

  • 한국데이터산업진흥원 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

레슨의 구성 (모든 레슨 동일)

  1. 🎯 이 레슨이 끝나면 (학습 목표)
  2. 📖 먼저 알아둘 용어 — 정의를 정확히
  3. 본문 설명
  4. ⚠ 흔한 오해 바로잡기 — ❌오해 / ✅실제 / 이유 (오해 방지의 핵심)
  5. 💻 코드로 확인하기 — 실행 결과 포함
  6. ✍ 직접 해보기 — 힌트와 예시 답안
  7. ✅ 확인 퀴즈 — 80% 이상이면 레슨 완료

공부 방법 (추천)

  1. 레슨 읽기 → 예제는 눈으로만 보지 말고 직접 쳐서 실행
  2. "직접 해보기" 풀기 (예시 답안은 풀어본 뒤에)
  3. 퀴즈 → 틀린 문제는 자동으로 오답노트에 저장
  4. 매일 🔁 복습 먼저: 틀린 문제가 1·3·7·14일 간격으로 다시 나옴 (5번 연속 맞히면 정복)

홈의 "이어서 학습하기" 는 마지막으로 연 레슨으로 이동합니다(처음이면 첫 레슨). 진도는 브라우저(localStorage)에 저장됩니다. ⚙ 설정·백업 에서 백업 파일을 저장해 두세요.

폰·PC 동기화 (GitHub Gist, 선택)

GitHub 토큰을 한 번 넣으면 기기 간 진도(이어서 학습하기, 완료 레슨, 오답노트)가 합쳐집니다.

  1. https://github.com/settings/tokens/new?scopes=gist&description=study-sync 에서 classic 토큰을 만듭니다. 권한은 gist 하나만, 만료일은 90일 등으로 설정합니다.
  2. 앱의 ⚙ 설정·백업 → 기기 간 동기화에 토큰(ghp_…)을 붙여 넣고 연결합니다. 계정에 비공개 Gist 가 하나 생깁니다.
  3. 다른 기기에서도 같은 토큰으로 연결하면 끝입니다.
  • 문제를 풀면 몇 초 뒤 자동 저장되고, 탭으로 돌아올 때 최신 기록을 가져옵니다. 두 기기의 기록은 항목별로 합쳐지며(완료는 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).

배포 (GitHub Pages)

main 브랜치의 루트가 그대로 배포됩니다. 수정 → 검증 → push 하면 1~2분 뒤 사이트에 반영됩니다.

git add -A && git commit -m "update" && git push

About

프로그래밍(Python·C++·Java) + SQLD 자격증 독학용 퀴즈·오답노트·복습 앱 (정적 웹, 설치 불필요)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages