개발
총 19개의 포스트
환경: 본 글은 Next.js 14.2 · Pages Router 기준으로 재현/검증했다.
주의: 본문에서 /app은 basePath를 뜻하며, App Router의 app/ 디렉터리와는 무관하다.
“이 컴포넌트 좀 수정해주세요.”라는 간단한 요청을 받고 코드를 열었다가 머리가 지끈거린 적이 있다. UserProfile 컴포넌트 하나가 API 호출, 로딩 상태 관리, 에러 처리, 화면 렌더링까지 모든 걸 다 하고 있었다. 작은 수정을 위해 500줄짜리 컴포넌트를 뜯어고쳐야 했고, 한 부분을 건드리면 다른 부분이 깨지는 악순환이 반복됐다.
React를 처음 배울 때 useState가 이상했다. 분명 const [count, setCount] = useState(0)로 선언했는데, setCount(1)을 호출하면 count가 바뀐다. const는 상수 아닌가?
면접에서 “수백 개의 커밋 중에서 버그가 생긴 정확한 시점을 어떻게 찾을 건가요?”라는 질문을 받고 당황한 적이 있다. 당시에는 git log로 하나씩 찾아보거나 최근 커밋부터 되돌아가며 확인하겠다고 답했지만, 다른 방법은 없는지 다시 물었다.
Claude Code를 사용하다 보면 이런 상황을 맞닥뜨린다. 메인 기능 개발 중인데 갑자기 긴급 버그가 생겨서 핫픽스를 해야 하는 상황. 브랜치를 전환하면 Claude Code의 컨텍스트가 날아가고, 다시 돌아와서 작업 흐름을 복구하는 데 시간이 오래 걸린다.
블로그 글이 점점 쌓이다 보니 원하는 글을 찾기가 어려워졌다. 처음에는 검색 기능을 추가할까 고민했지만, 너무 복잡해질 것 같아 태그 기능을 도입했다.
요즘 playwright를 가지고 놀고 있다. 원래는 E2E 테스트용 도구인데, 반복적인 작업을 자동화하기에도 꽤 괜찮아 보였다. 기존에 셀레니움을 써서 자동화한 서비스를 플레이라이트로 바꾸면서, 훨씬 쉽고 직관적이고 VSCode나 GitHub Actions 환경과도 궁합이 잘 맞는다는 느낌을 받았다.
무료로 쓰고 있는 오라클 클라우드 인스턴스에서 도커 컴포즈로 개인적인 서비스들을 실행하고 있다. 가끔 생각날 때 이미지 업데이트를 해주는데, 명령어 치는 것도 귀찮아서 스크립트를 간단하게 만들었다. 사실 명령어를 치나, 스크립트를 실행하나 거기서 거기지만 심심해서 만들었다.