
Turbo Cache 와 Github actions/cache 로 CI 시간 -94% 단축시키기
문서 한 줄짜리 PR에도 CI가 3분 걸리던 monorepo에서 죽어 있던 cache를 살린 기록입니다. Turborepo의 그래프와 해시로 판단하고 actions/cache로 보관하는 구조를 나눠 설명하고, 무효화 범위를 시나리오로 따라갑니다.

10번 봐도 이해 안 되는 Lexical Scope 이야기
JavaScript의 스코프 규칙은 lexical scoping입니다. "lexical"이라는 단어 하나에서 closure, stale closure, 메모리 누수 패턴이 파생됩니다. 어원부터 LexicalEnvironment 구조와 메모리까지 따라가 봅니다.

프론트엔드 테스트 생태계 구조
Jest, Vitest, jsdom, Testing Library, MSW, Playwright가 각각 어느 레이어를 맡는지 정리합니다. Test Runner, DOM 환경, Component Rendering, Network Mocking으로 나눴 보고 실제 조합 패턴까지 살펴봅니다.

좋은 테스트 코드, 나쁜 테스트 코드 — util편 (1)
좋은 테스트와 나쁜 테스트를 가르는 네 가지 원칙을 util 함수 기준으로 정리합니다. 테스트 이름을 문서처럼 쓰는 법, 구현이 아닌 동작을 검증하는 법, 독립 실행과 "실패할 수 있는 테스트"의 조건을 실제 코드로 살펴봅니다.
kyu-log