본문 바로가기

전체 글25

iOS WebView 파일 업로드 확장자 누락 — 매직 바이트로 해결한 방법 프로덕션 DB에서 파일 URL이 uuid.으로 끝나는 레코드 2,700건을 발견했습니다. 확장자가 통째로 사라진 겁니다. 원인은 iOS WebView의 파일 업로드 방식에 있었고, 서버 측 확장자 추출 로직이 이를 전혀 대비하지 못하고 있었습니다. 이 글에서는 원인을 추적한 과정과, 파일명 → Content-Type → 매직 바이트 3단계 폴백으로 해결한 방법을 공유합니다.📑 목차들어가며1. 원인 추적 — 왜 확장자가 사라졌는가2. 기존 코드의 문제점 — lastIndexOf(".")의 함정3. 해결: 3단계 확장자 감지 전략4. 매직 바이트란? — 파일 시그니처 기초5. Java 구현 — resolveExtension 완성 코드6. 추가 개선 — URL 선택 로직도 확장자 기반으로마무리참고 자료들어가.. 2026. 3. 26.
Claude Code 실사용자가 본 Codex와의 차이 Claude Code와 OpenAI Codex를 토큰 비용, 코딩 벤치마크, ChatGPT vs Claude 앱까지 3가지 축으로 비교합니다. 순환 루프, Sycophancy 등 실사용 한계까지 정리합니다.📑 목차들어가며 - 왜 이 비교가 필요한가?Claude Code와 Codex, 한눈에 보기토큰 및 비용 측면 비교코딩 실력 비교 - 벤치마크와 실전ChatGPT vs Claude 앱 자체 비교실사용에서 느낀 Claude Code의 한계결론 - 벤치마크보다 중요한 것참고 자료들어가며 - 왜 이 비교가 필요한가?2026년 현재, AI 코딩 에이전트 시장은 Anthropic의 Claude Code와 OpenAI의 Codex가 양대 축을 이루고 있습니다. 저는 Claude Code를 주력으로 사용한 지 꽤 .. 2026. 3. 18.
운영 배치서버가 죽은 이유 — JFR 분석부터 JDK 교체까지 JDK 8u212가 AWS SQS의 새 중간 CA 인증서를 처리하지 못해 배치서버가 다운됐습니다. lumen-sidecar로 자동 수집한 JFR을 Gemini CLI + lumen-mcp로 1차 분석하고, Claude Code로 코드 레벨까지 추적해 30분 만에 원인을 특정한 과정을 정리했습니다. 💡 한 줄 요약: JDK 8u212(2019년)가 AWS의 새 중간 CA 인증서를 처리하지 못해 SQS SSL 핸드셰이크가 9분간 폭주했고, 결국 서버가 다운됐습니다. JFR + lumen-mcp + Claude Code 조합으로 원인을 특정하고 JDK 교체로 해결했습니다.환경JDK: Azul Zulu 8.38.0.13 (OpenJDK 8u212, 2019년 버전)WAS: Apache Tomcat 9.0.19.. 2026. 3. 12.
IntelliJ AI 코딩 에이전트 Junie, 2개월 실사용 후 결론 JetBrains Junie를 2개월간 실무에서 써봤습니다. IntelliJ 통합은 좋았지만, 불투명한 크레딧 정책과 멀티 프로젝트 한계로 결국 다른 도구로 넘어갔습니다. 2025년 10월~12월 기준 사용 경험입니다. 목차들어가며 - 왜 Junie를 선택했나사용 환경 및 조건장점: IntelliJ 네이티브 통합의 편리함단점 1: 멀티 프로젝트 컨텍스트의 벽단점 2: 불투명한 크레딧 정책단점 3: 확장성의 한계결론: 누구에게 추천하는가들어가며 - 왜 Junie를 선택했나2025년 하반기, AI 코딩 도구 춘추전국시대가 열렸습니다. GitHub Copilot, Claude Code, Cursor, Firebase Studio 등 선택지가 넘쳐났죠. 당시 저는 코딩 에이전트를 적극 활용하는 편은 아니었습니다.. 2026. 3. 11.
Claude Code CLAUDE.md: 팀 지침을 위한 계층 구조와 스킬 분리 실전 적용기 Claude Code의 CLAUDE.md를 팀에서 운영하다 보면, ~/.claude에 공통 지침을 넣는 방식의 한계를 느끼게 됩니다. 개인 설정과 섞이고, 무관한 프로젝트에서도 로드되고, 팀 동기화도 안 됩니다. 이 글에서는 공통 지침을 워크스페이스 저장소로 이동하고, 계층형 구조와 플러그인(커맨드·스킬·에이전트)으로 팀 규칙을 체계적으로 관리한 경험을 정리합니다. 💡 한 줄 요약: ~/.claude는 개인 영역으로 남기고, 팀 지침은 Git으로 관리되는 워크스페이스 저장소에 계층형으로 배치하면 됩니다.📑 목차들어가며1. ~/.claude에 팀 공통 지침을 두면 생기는 일2. 해결: 공통 지침을 워크스페이스 저장소로 이동3. 계층으로 정리4. 플러그인: 지침으로 다루기 어려운 것들5. 서브에이전트 동.. 2026. 3. 11.
Gemini CLI에 Serena MCP 연동하기 - Git Clone 방식 실전 설정 지난 포스팅 Claude Code에 Serena MCP 연동하기 - Java/TypeScript LSP 설정에서 Claude Code에 Serena를 붙이는 방법을 다뤘습니다. 이번엔 Gemini CLI 버전입니다. 기본 개념은 같지만 설정 명령어와 구성 파일 형식이 다르고, 소스를 직접 클론해서 쓰는 방식을 택했기 때문에 그 차이를 중심으로 정리합니다.목차Claude Code 버전과 뭐가 다른가Serena 클론 및 환경 구성Project Server 시작Gemini CLI에 MCP 등록하기설정 파일 직접 확인하기실전 테스트 및 대시보드 활용마무리Claude Code 버전과 뭐가 다른가 구조 자체는 동일합니다. Gemini CLI → Serena MCP Server → Project Server(LSP).. 2026. 3. 8.