v1.3.0 — 읽기가 첫 줄로, 그리고 설치본에서도 문서대로
./guide를 열면 이제 챕터 읽기가 첫 줄이다.
무엇을 할까요
1) 챕터 읽기 31챕터
2) 학습 점검 (퀴즈/시험) 216문항
3) 장애 대응 (실전 훈련) 14스테이지
메뉴 순서가 곧 학습 순서다 — 읽기 → 확인 → 겪기. ./guide를 처음 여는 사람은 아직 아무것도 읽지 않았으므로, 읽지 않은 내용을 묻는 퀴즈로 먼저 보내지 않는다.
문서가 이미 맞고 코드가 틀렸던 경우다. README.md는 v1.1.0부터 "챕터 읽기 · 학습 점검 · 장애 대응"이라고 적어 왔는데 메뉴만 반대 순서였다.
설치본으로 쓰는 사람의 경로를 훑었다
v1.2.0에서 설치 기능이 생기면서 "저장소 안에서 실행한다"는 오래된 가정이 처음으로 문제가 됐다. v1.2.1이 런처를 고쳤고, 이번에는 같은 축으로 남은 자리를 마저 닫는다.
./exam의 대상 인자가 어디서 실행하든 같게 풀린다
README가 안내하는 세 형식 중 둘이 동작하지 않았다.
| 형식 | v1.2.1까지 | v1.3.0 |
|---|---|---|
exam exams/01-beginner/….json |
저장소 루트에서만 | 어디서든 |
exam 01-beginner/….json |
어디서도 안 됨 | 어디서든 |
exam 01-beginner |
동작 | 동작 |
원인은 하나였다 — 대상 해석의 .json 분기가 준 경로만 보고, exams/ 폴백이 디렉터리 분기에만 있었다. 그래서 티어 지정만 멀쩡했고, 그것만 쓰이는 동안 드러나지 않았다.
두 번째 줄은 v1.0.0 이래 한 번도 동작한 적이 없다. 설치 기능이 이 결함의 성격을 바꿨다 — 전에는 저장소 안에서만 쓰였으니 문서의 오타 정도였지만, 이제는 설치한 사람이 문서대로 따라 하면 반드시 막히는 자리다.
랩이 멈췄을 때 안내하는 명령이 절대경로가 됐다
docker compose -f shooting/lab/compose.yaml logs는 붙여넣어 쓰라는 명령인데 상대경로였다. 저장소 루트에 서 있지 않으면 실패한다. 엔진이 실제로 쓰는 경로는 늘 절대경로였으니 동작에는 문제가 없었고 안내 문장만 틀렸다.
첫 설치가 "이미 최신입니다"로 시작하지 않는다
릴리스 직후에는 최신 태그가 main의 tip에 있어, 갓 클론한 HEAD가 곧 그 태그다. 그래서 조기 반환 분기를 그대로 타 모든 첫 설치가 "이미"라는 말로 시작했다. 재실행에서는 그대로 나온다.
검증에 대해 — 테스트가 없어서가 아니라, 있을 수 없는 모양이어서
v1.2.1 노트가 "링크의 모양만 검사하고 동작을 검사하지 않았다"를 남겼다. 이번 것은 결이 조금 다르다.
대상 해석 함수에는 테스트가 하나도 없었다. 그런데 있었더라도 잡히지 않았을 가능성이 크다 — 이 함수는 현재 디렉터리를 암묵적 입력으로 쓰는데, 테스트는 늘 저장소 루트에서 돌기 때문에 그 입력이 언제나 "맞는 값"이었다. 결함은 입력이 달라질 때만 보이고, 그 입력을 바꾸는 것은 설치 기능이 생기기 전까지 아무도 하지 않았다.
지금은 테스트 7개가 세 형식을 저장소 안과 밖 양쪽에서 돌린다. cwd를 명시적으로 바꾸는 것이 핵심이다.
네 건 모두 수정 전에 실패하는 것을 먼저 확인했고, 마지막에는 로컬 저장소를 file:// 원본으로 삼아 실제 설치한 뒤 설치본에서 직접 돌려 확인했다.
벤더 브랜치
postgresql/mysql/oracle 세 브랜치를 이 릴리스 시점의 main에서 재생성해 push했다. 세 브랜치 모두 Ran 600 tests … OK (skipped=1), 챕터 마커 잔여 0.
알려진 한계
v1.2.0의 「알려진 한계」가 그대로 유효하다 — curl | bash 신뢰 모델, --purge의 tty 요구, PATH 자동 등록 안 함, MySQL 판정 회피, PostgreSQL 판정의 두 구멍, Oracle 스테이지 부재, CI 부재. 이번 릴리스에서 새로 늘거나 준 것은 없다.
shoot doctor의 [ok] compose 파일 shooting/lab/compose.yaml은 여전히 상대경로다. 붙여넣는 명령이 아니라 표시용 라벨이라 짧은 쪽을 택했다.
요약
| v1.2.1 | v1.3.0 | |
|---|---|---|
| 챕터 | 31 | 31 |
| 문제은행 / 문항 | 23 / 216 | 23 / 216 |
| 스테이지 | 14 | 14 |
./guide 첫 항목 |
학습 점검 | 챕터 읽기 |
README의 ./exam 형식 3개 중 동작하는 수 |
1 | 3 |
| 테스트 | 592 | 600 |
커밋 4개. 전체 변경 이력: v1.2.1...v1.3.0
호환성: 제거되거나 의미가 바뀐 CLI 인자, 스키마 변경, 진행·결과 기록 형식 변경, 챕터 경로 변경이 없다. ./exam의 대상 인자는 되던 것이 그대로 되고 안 되던 것이 되기 시작하므로 하위 호환이다. 메뉴 순서는 바뀌었지만 고르는 방식은 같다.