전체 글 25

[AI 도구] claude -p 로 PR 리뷰 자동화하기

배경대화형으로 쓰다 보면 "이 검사는 왜 매번 내가 시작해야 하나" 싶은 지점이 온다.내 블로그 파이프라인에도 발행 전 검증 단계가 있다. 사실 확인, 문체 점검, SEO 체크. 절차는 이미 스킬로 정리돼 있는데 시작 버튼은 늘 내가 누른다. 커밋할 때마다 알아서 돌면 좋겠다고 생각했다.-p 를 붙이면 비대화형으로 돌아간다는 건 알고 있었다. 그래서 그대로 스크립트에 넣어봤다. 내 기계에서는 잘 됐다. 그런데 이건 내 기계에서만 잘 되는 명령이었다.터미널 밖에서 Claude Code 를 돌릴 때 무엇이 달라지나?개념 — -p 는 대화형의 축소판이 아니다claude -p "..." 는 비대화형 실행이다. 프롬프트를 주고 결과를 받는다. 모든 CLI 옵션이 그대로 동작한다.문제는 기본 상태의 -p 가 대화형..

[React] 로그인은 되는데 쿠키가 안 붙는 이유

세션 기반 인증을 쓰는 Spring REST API 를 다른 포트에 띄워 두고 로그인 요청을 보냈더니 200 이 왔다. 세션도 만들어졌고 Set-Cookie 도 내려왔다. 그런데 바로 다음 요청에서는 로그인이 안 된 상태였다.원인은 두 군데였다. 서버가 Access-Control-Allow-Credentials 를 안 주고 있었고, 프론트가 credentials: 'include' 를 안 보내고 있었다. 둘 중 하나만 고치면 증상이 그대로다.현상POST /login → 200 {"ok":true,"sessionId":"31F361386A33FEF2ED9BA227964627A9"}GET /me → 200 {"cookieHeader":"null","loggedIn":false}로그인은 성공했다. 세션 ID ..

React 2026.09.01

[Git] merge와 rebase, 뭘 언제 쓰나

개인 앱 프로젝트를 마일스톤 단위로 쪼개서 만들었다. 기능 묶음마다 브랜치를 따고, 끝나면 main 으로 합치는 방식이었다. 세 번째 묶음을 합치고 나서 git log --graph 를 열었는데, 선이 갈라졌다 붙었다를 반복해서 어느 작업이 언제 들어갔는지 읽히지 않았다.찾아보면 "rebase 를 쓰면 히스토리가 깔끔해진다" 는 말이 흔하다. 그런데 이상했다. 두 방식 모두 결국 같은 파일 상태를 만든다. 최종 코드가 같은데 왜 둘 다 존재하고, 왜 한쪽이 더 깔끔하다는 걸까.merge와 rebase는 최종 파일 상태가 같은데 왜 둘 다 있고, 언제 뭘 골라야 하나?환경항목버전Git2.50.1 (Apple Git-155)확인한 문서git-scm.com 공식 레퍼런스 (2026-08-07 기준)두 명령이 ..

Git 2026.08.31

[AI 도구] Claude Code 권한 승인 매번 뜰 때

허용 목록에 넣었는데도 같은 명령에 계속 승인 창이 뜬다면, 원인은 대개 규칙 문법이거나 파일 위치다.Bash(ls *) 와 Bash(ls*) 는 다른 규칙이다. * 앞의 공백 하나가 매칭 범위를 바꾼다.그리고 어느 계층에서든 deny 가 걸리면 다른 계층의 allow 로는 못 푼다. 넓은 deny 하나가 좁은 allow 를 전부 덮는다.현상npm test 를 승인했는데 npm test -- --watch 는 또 물어본다"Yes, don't ask again" 을 눌렀는데 다음 세션에 또 뜬다팀 레포에 .claude/settings.json 을 커밋했는데 동료 기계에서는 규칙이 안 먹는다셋 다 원인이 다르다. 순서대로 짚었다.환경항목값Claude Code2.1.220OSmacOS 26.4git 레포예설정..

[React] React Compiler가 최적화를 포기할 때

지난 글 useMemo는 언제 쓰고 언제 쓰지 말까 는 "재고 나서 감싼다" 로 끝났다. 그러면 그 판단을 사람이 계속 해야 하느냐는 질문이 남는다.React Compiler 가 그 자리를 노린다. 1.0 이 2025년 10월에 정식 릴리스됐고, 빌드 타임에 메모이제이션을 자동으로 넣어 준다. 그렇다면 useMemo 와 useCallback 을 전부 지워도 되는 걸까.켜 보고 컴파일 결과를 직접 열어 봤다. 답은 "아니오" 였고, 컴파일러가 조용히 손을 떼는 코드가 있다는 게 이유다.컴파일러를 켜면 useMemo 를 전부 지워도 되는가?컴파일된 코드는 이렇게 생겼다평범한 컴포넌트 하나를 컴파일러에 통과시켜 봤다.function Clean({ items, tab }) { const visible = it..

React 2026.08.24

[AI 도구] Claude Code 확장 3가지, 뭘 언제 쓰나

배경 블로그 글쓰기 파이프라인을 짜면서 세 가지를 다 검토했다. 스킬, 서브에이전트, MCP. 셋 다 "Claude 에게 무언가를 붙이는" 수단이라고 설명돼 있는데, 설명만 읽어서는 언제 뭘 골라야 하는지가 잡히지 않았다. 특히 두 가지가 헷갈렸다. MCP 서버를 붙이면 도구가 늘어나니 컨텍스트를 더 먹는 것 아닌가. 서브에이전트는 정말로 컨텍스트를 아껴주나, 아니면 같은 대화를 두 번 하는 셈인가. 기능으로 구분하려다 실패했다. 셋 다 "확장"이라 기능 설명이 서로 비슷하게 들린다. 그래서 축을 바꿨다. 컨텍스트를 언제 먹는지로 줄을 세우니 그제야 정리됐다. 스킬·서브에이전트·MCP 는 컨텍스트를 각각 언제, 얼마나 먹나? 개념 — 셋이 각각 무엇인가 이미 아는 사람은 건너뛰어도 된다. 스..