Claude Code 설치부터 초기 설정까지
Claude Code를 처음 접하면 “그냥 npm으로 설치하면 되는 거 아닌가?”싶지만, 설치 방법에 따라 업데이트 방식이 달라지고 이게 나중에 은근히 불편해진다. 이번 글에서는 설치 전 알아두면 좋은 것들과, 실제 초기 설정까지 순서대로 정리한다 시작 전에: Node.js가 필요한 이유 Claude Code는 JavaScript…
Claude Code를 처음 접하면 “그냥 npm으로 설치하면 되는 거 아닌가?”싶지만, 설치 방법에 따라 업데이트 방식이 달라지고 이게 나중에 은근히 불편해진다. 이번 글에서는 설치 전 알아두면 좋은 것들과, 실제 초기 설정까지 순서대로 정리한다 시작 전에: Node.js가 필요한 이유 Claude Code는 JavaScript…
“커서에서 Claude 모델 선택하면 Claude Code랑 똑같은 거 아닌가요?” 라는 생각을 해본적이 있다. 하지만 이 이면에는 하나의 오해가 깔려 있다. Claude가 코드를 잘 짜준다는 결과만 보다 보니, AI 모델과 AI 코딩 도구가 각각 어떤 역할을 하는지 구분이 안 되었기 때문이다.…
기존 커맨드 패턴의 한계 이전 버전(V5)에서는 커맨드 패턴 기반의 서블릿을 사용했다. 각 URL 경로마다 별도의 서블릿 클래스를 만들고, 이를 ServletManager에 일일이 등록해야 했다 이 방식에는 두 가지 명확한 단점이 있다 기능이 수십 개로 늘어난다면? 클래스 파일과 매핑 코드가 함께 폭발적으로…
리플렉션이 필요한 이유 커맨드 패턴으로 서블릿을 구현할 때 흔히 부딪히는 두 가지 불편함이 있다 기능 하나당 클래스 하나 – 클래스가 폭발적으로 늘어난다 반면 아래처럼 하나의 컨트롤러에 여러 기능을 모을 수 있다면 훨씬 깔끔해진다 URL 경로 /site1이 들어오면 site1() 메서드를 이름으로…
왜 분리가 필요한가? 이전 버전의 HttpRequestHandler를 보면 문제가 바로 보인다 home(), site1(), site2(), search() 같은 서비스 로직이 서버 코드 안에 직접 박혀 있다. 다른 프로젝트에서 이 서버를 재사용하려면? 이 로직들을 전부 갈아엎어야 한다. 재사용이 불가능하다. 해결책은 명확하다. 서버가 해야 할…
왜 객체로 만드는가 HTTP 메시지는 명확한 규칙을 가진다 이 규칙이 존재한다는 것은 구조화할 수 있다는 의미다. 문자열을 매번 직접 파싱하는 대신, HttpRequest, HttpResponse 객체로 캡슐화하면 코드의 복잡도가 극적으로 줄어든다 HttpRequest – 요청 파싱 생성자에서 BufferedReader를 받아 시작 라인 → 헤더…
2편까지 만든 서버는 어떤 URL로 요청이 오든 항상 같은 HTML을 응답했다. 실제 웹 서버는 URL 경로에 따라 다른 화면을 보여준다. 이번에는 /, /site1, /site2, /search 각 경로에 맞는 응답을 돌려주는 URL 라우팅을 구현한다 구현할 라우팅 스펙 GET / 홈 화면…
1편에서 만든 HttpServerV1은 요청을 순차적으로 처리했다. 첫 번째 요청이 5초 걸리면 두 번째 요청은 5초를 기다려야 했다. 실제 서비스라면 절대 용납할 수 없는 구조다. 해법은 단순하다. 요청마다 별도의 스레드를 할당하면 된다 구조 변경 V1의 구조는 메인 스레드가 연결 수락과 요청…
HTTP는 결국 TCP 위에서 동작하는 텍스트 프로토콜이다. 즉 다음과 같은 흐름이다 소켓을 열고, 텍스트를 읽고, HTTP 규약에 맞춰 응답을 쓰면 된다 HTTPServerV1 서버를 실행한 후 브라우저에서 http://localhost:12345에 접속하면 된다 설계 포인트 BufferedReader와 PrintWriter를 선택한 이유 HTTP는 텍스트 기반 프로토콜이다. 바이트…
3편에서 커맨드 패턴을 도입해 명령어마다 독립적인 클래스를 만들었다. 그런데 CommandManagerV3의 execute()를 보면 아직 한 가지 거슬리는 부분이 남아 있다 명령어를 찾고, null이면 처리하고, 아니면 실행한다. 로직 자체는 맞지만 null 체크가 흐름을 끊는다. 이상적인 코드는 이렇다 명령어를 찾고, 바로 실행한다. 이…