fix(content): 전문가 검증 지적 2건 반영 (티어 강좌 정밀성)
All checks were successful
CI / backend-test (push) Successful in 1m1s
CI / frontend-build (push) Successful in 38s
CI / backend-dep-scan (push) Successful in 29s

4개 트랙 전문 리뷰(강좌 48·퀴즈 240) 결과 CRITICAL 0·정답키 오류 0.
확정된 정밀성 MINOR 2건만 수정:

- Lv2 테스트 강좌: 'at>0→at>=0으로 바꾸면 빨간불' 실습이 제시된 테스트로는
  안 깨지던 문제(살아남는 뮤턴트) — 선두 @ 케이스 테스트 추가로 실제 성립하게
- Lv3 인덱스 강좌+퀴즈 해설: 전방일치 LIKE('보안%')가 Postgres 기본 로케일에선
  일반 B-Tree를 못 탄다는 조건(text_pattern_ops 필요) 명시 — 운영 DB 해설도 갱신

정답키·사실오류·버그코드는 240문항·48강좌에서 발견되지 않음.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
AWESOMEDEV 2026-07-20 12:51:55 +09:00
parent f571462b95
commit 9045303a7a
3 changed files with 9 additions and 2 deletions

View File

@ -5477,7 +5477,7 @@
"option3": "WHERE lower(email) = 'kim@awesomedev.dev' (일반 email 인덱스만 있는 경우)", "option3": "WHERE lower(email) = 'kim@awesomedev.dev' (일반 email 인덱스만 있는 경우)",
"option4": "WHERE created_at >= '2026-07-01' (범위 조건)", "option4": "WHERE created_at >= '2026-07-01' (범위 조건)",
"answerIndex": 2, "answerIndex": 2,
"explanation": "인덱스는 원본 컬럼값 그대로 정렬돼 있으므로, lower()처럼 컬럼을 함수로 감싸는 순간 그 정렬표를 쓸 수 없게 됩니다. 꼭 필요하면 lower(email)에 대한 함수 기반 인덱스를 따로 만들어야 합니다. 반면 등호 비교, 전방 일치 LIKE('보안%'), 범위 조건은 모두 B-Tree 인덱스가 처리할 수 있는 형태입니다." "explanation": "인덱스는 원본 컬럼값 그대로 정렬돼 있으므로, lower()처럼 컬럼을 함수로 감싸는 순간 그 정렬표를 쓸 수 없게 됩니다. 꼭 필요하면 lower(email)에 대한 함수 기반 인덱스를 따로 만들어야 합니다. 반면 등호 비교와 범위 조건은 B-Tree 인덱스가 그대로 처리합니다. (전방 일치 LIKE('보안%')도 원리는 범위 검색이지만, Postgres 기본 로케일에선 text_pattern_ops 인덱스를 따로 만들어야 탑니다.)"
}, },
{ {
"courseSlug": "lv3-db-indexing", "courseSlug": "lv3-db-indexing",

View File

@ -46,6 +46,10 @@ describe('isValidEmail', () => {
it('@가 없으면 false를 돌려준다', () => { it('@가 없으면 false를 돌려준다', () => {
expect(isValidEmail('intern.awesomedev.dev')).toBe(false); expect(isValidEmail('intern.awesomedev.dev')).toBe(false);
}); });
it('@로 시작하면 false를 돌려준다', () => { // @ = (at === 0)
expect(isValidEmail('@awesomedev.dev')).toBe(false);
});
});`; });`;
const CODE_RUN = `# frontend/ 에서 — Vitest 설치와 실행 const CODE_RUN = `# frontend/ 에서 — Vitest 설치와 실행

View File

@ -145,7 +145,10 @@ WHERE phone = '01012345678' -- O
-- 앞이 열린 LIKE 시작 글자를 모르면 정렬 트리를 없다 -- 앞이 열린 LIKE 시작 글자를 모르면 정렬 트리를 없다
WHERE title LIKE '%보안%' -- X (앞이 % ) WHERE title LIKE '%보안%' -- X (앞이 % )
WHERE title LIKE '보안%' -- O (전방 일치는 범위 검색으로 변환됨) WHERE title LIKE '보안%' -- 전방 일치는 원리상 범위 검색이지만,
-- Postgres 기본 로케일(ko_KR )에선 일반 B-Tree가 탄다.
-- text_pattern_ops 인덱스를 만들어야 탄다:
-- CREATE INDEX ix_title_pat ON t (title text_pattern_ops);
-- OR 양쪽 인덱스가 있어야 Bitmap OR로 합쳐 있다 -- OR 양쪽 인덱스가 있어야 Bitmap OR로 합쳐 있다
WHERE actor = 'a' OR ip = '1.2.3.4' -- 한쪽만 인덱스면 결국 Seq Scan WHERE actor = 'a' OR ip = '1.2.3.4' -- 한쪽만 인덱스면 결국 Seq Scan