본문 바로가기

728x90

전체 글

[Claude Code] Excalidraw MCP 설정하기 Excalidraw MCP?AI에게 자연어로 다이어그램을 그리게 할 수 있는 MCP 서버다. 아키텍처 다이어그램, 플로차트, 시퀀스 다이어그램 등을 Excalidraw 특유의 손그림 스타일로 생성한다.Mermaid 문법으로 다이어그램을 만들던 방식과 달리, Excalidraw MCP는 시각적 요소(위치, 크기, 색상, 화살표 바인딩 등)를 직접 제어하기 때문에 더 자유롭고 세밀한 다이어그램이 나온다.GitHub: excalidraw/excalidraw-mcp공식 vs 커뮤니티Excalidraw MCP는 여러 종류가 있다. 공식 (excalidraw/excalidraw-mcp)커뮤니티 (yctimlin/mcp_excalidraw 등)방식MCP Apps (인라인 렌더링)로컬 Canvas 서버 + 브라우저설치.. 더보기
[Claude Code] Remote Control — 터미널 세션을 폰에서 이어가기 Remote Control?로컬 터미널에서 실행 중인 Claude Code 세션을 모바일 앱이나 브라우저에서 이어서 제어할 수 있는 기능이다. 코드는 로컬 머신에서 계속 실행되고, 폰은 리모컨 역할만 한다.할 수 있는 것:로컬 환경(파일시스템, MCP 서버, 프로젝트 설정) 그대로 원격 접근터미널 ↔ 브라우저 ↔ 모바일 앱 간 대화 실시간 동기화노트북 슬립/네트워크 끊김 시 자동 재연결사전 준비플랜: Pro 또는 Max (Team/Enterprise 미지원)인증: claude 실행 후 /login으로 claude.ai 로그인 완료버전: Claude Code 2.1.52 이상Workspace Trust: 프로젝트 디렉토리에서 claude를 한 번 이상 실행해 trust 승인시작하기1. 새 세션으로 시작 .. 더보기
[Claude Code] jira / confluence Atlassian MCP 설정하기 MCP?AI 모델이 외부 도구를 호출할 수 있게 해주는 표준 프로토콜이다.Claude Code에 Atlassian MCP를 붙이면, 터미널에서 Jira·Confluence를 자연어로 조작할 수 있다.1. 설정사전 준비Atlassian Cloud 계정Claude CodeMCP 서버 등록claude mcp add --transport sse --scope user atlassian https://mcp.atlassian.com/v1/sse 옵션 의미 --transport sseSSE 방식 통신--scope user~/.claude/mcp.json에 글로벌 저장atlassian서버 이름 scope 사용 가능 옵션user내 로컬 머신 전체에서 사용 (기본값)~/.claude/local현재 프로젝트 디렉토리에서만.. 더보기
[Claude Code] 클로드 코드 (Claude Code) CLI 사용 실무 팁 5가지 클로드 공식 문서에서 제시하는 가이드를 포함해, 회사에서 클로드 코드로 실제 개발하며 느낀 팁들을 정리해보려 한다. 어떻게 보면 지엽적일 수 있고, 경험에 기반한 내용이라고 볼 수 있을 것 같다.1. 표준 활용하기 — Rules, Skills, Memory, ReferenceClaude Code의 가장 큰 강점 중 하나는 프로젝트의 컨텍스트를 체계적으로 관리할 수 있다는 점이다. 공식 문서에서도 "Claude Code는 단순 챗봇이 아니라 에이전트"라고 강조하는데, 에이전트가 제대로 동작하려면 프로젝트에 대한 충분한 맥락이 필요하다.CLAUDE.md — 프로젝트의 DNACLAUDE.md는 Claude Code가 세션을 시작할 때마다 자동으로 읽어오는 프로젝트 메모리다. 코딩 컨벤션, 기술 스택, 주요 디.. 더보기
Spring MVC vs WebFlux 서버 설정 비교 — Tomcat, HikariCP, R2DBC 커넥션 풀 설정 가이드 들어가며Spring MVC와 WebFlux는 동시성 모델이 근본적으로 다르기 때문에, 서버 설정 방식도 달라야 한다. MVC는 요청마다 스레드를 점유하는 Blocking 구조이고, WebFlux는 Event Loop 기반의 Non-blocking 구조다.이 글에서는 실제 프로덕션 환경에서 사용 중인 설정값을 기반으로 Tomcat 스레드 풀, HikariCP 커넥션 풀, R2DBC 커넥션 풀 설정을 비교 정리한다.Spring WebFlux — Netty + R2DBC 설정Netty idle-timeoutNetty의 idle-timeout은 유휴 커넥션이 유지되는 시간이다. Istio를 사용하는 환경이라면 Istio의 idle timeout과 맞추는 것이 중요하다. 불일치 시 서버에서 이미 끊긴 커넥션을 I.. 더보기
이직과 첫 출근을 준비하며 이직첫 회사에서 인턴을 포함해 약 2년간의 근무를 마치고 새로운 회사로 이직을 하게 되었다.  백엔드 개발자로 커리어를 시작하게 해준 첫 회사였고 자유로운 조직 문화와 좋은 팀원들이 있었기에 즐겁게 다닌 회사였다.  인턴을 하며 부족한 게 많은 상태에서 시작했지만 일단 시작하고 부딪치며 부족한 부분을 빠르게 채우고 팀에 도움이 되기 위해 노력했다.  다른 사람보다 이해 속도가 빠르지 않고 무엇이든 경험해보면서 직접 느끼고 배우는게 많은 편이라 하나 하나의 경험이 전부 소중했다.  지금 생각해보면 부족한 부분이 드러나지 않도록 개인적으로 꾸준히 공부하고 적극적으로 업무에 임했던게 많은 도움이 된 것 같다.   길지 않은 시간 함께했음에도 불구하고 자신의 일처럼 축하해주고 새로운 출발을 응원해준 팀원들에게 .. 더보기
kotlin 확장함수를 mocking 하는 방법 확장함수는 인스턴스 함수처럼 모킹이 불가하다. 어찌보면 당연한 이야기일 수 있지만 나처럼 아무 생각없이 사용하는 사람이 있을 것 같아 글을 쓴다. Kotlin은 확장함수라는 유용한 기능을 제공한다. 매번 findById를 해서 예외처리하는 중복코드를 제거하기 위해 아래와 같이 확장함수로 빼서 사용하는 것도 가능하다. 스프링 repository 인터페이스의 경우 프록시 객체를 만들어 동작하기 때문에 내부에 구현을 넣으면 원하는 대로 동작하지 않아 확장함수를 사용한다. 그래서 아래와 같이 확장함수로 빼서 사용하는 것이 편리할 때가 많다. 단위 테스트 중 mockk 을 사용해서 아무 생각없이 아래와 같이 모킹을 하였고 타입 캐스팅 에러가 발생했다. every { accountRepository.getBy(ac.. 더보기
브라우저 캐싱 전략 웹 브라우저에서 서버로 데이터를 요청할 때, 캐시가 없을 경우 데이터가 변경되지 않았더라도 네트워크를 통해 데이터를 다운로드 받아야 한다. 캐시를 사용하면 불필요한 네트워크 통신 없이 좀 더 빠른 사용자 경험을 할 수 있다. 브라우저 캐시를 적용하는 방법 1. cache-control 적용 - response header에 캐시가 유효한 시간(초)를 함께 반환해 브라우저가 해당 시간동안 캐시로 응답 결과를 저장하도록 한다. - 캐시 시간이 초과되면 다시 네트워크로 요청을 보내 응답을 가져오고 다시 유효시간동안 캐시로 저장하게 된다. (갱신) - 브라우저는 cache-control 정보를 받으면 설정된 시간동안 새로운 요청이 와도 리소스를 요청하지 않는다. - 클라이언트의 메모리 캐시 -> 디스크 캐시 순.. 더보기

728x90