Codex 와 Claude CLI 명령어 비교
·
Honey Tip!
터미널에서 AI 코딩 에이전트를 쓸 때,프롬프트를 길게 쓰는 것보다 필요한 순간에 /review 한 번, 길어지면 /compact 한 번, 위험해 보이면 권한 제어 한 번이 더 큰 차이를 만든다.아래는 현업에서 가장 자주 쓰이는 커맨드 중심으로 Codex와 Claude Code를 “기능 단위”로 비교한 글이다.목적(실무에서 자주)Codex (OpenAI)Claude Code (Anthropic)차이 포인트세션/대화 초기화/new/clearCodex는 “새 대화” 개념Claude는 “기록 삭제” 개념대화 압축(토큰 절약)/compact/compact [instructions]Claude는 압축 시 “포커스 지시” 인자를 공식 지원모델 변경/model/model 상태/토큰 확인/status/statusCod..
Gatling을 활용한 부하 테스트
·
Honey Tip!
프로젝트 점검을 위한 성능 테스트를 준비하면서 여러 도구를 검토해봤다. 고민했던 도구들 도구 장점 단점 선택 JMeter • GUI 지원• 다양한 플러그인 확장 • XML 파일로 Git 관리 어려움• 무겁고 리소스를 많이 소모함• CI/CD 통합 복잡 ❌ nGrinder • 웹 UI 제공• 리포트 기능• 분산테스트 지원 • 별도 서버 구축 필요• Controller + Agent 관리 부담• 로컬 실행 불편 ❌ Gatling • 코드 기반 (Java/Kotlin)• Git으로 버전 관리• 리포팅 및 분석 기능• 로컬 실행 간편• CI..
이미지와 데이터 동시 처리 시 발생하는 Multipart 문제 해결
·
트러블슈팅
문제진행 중인 프로젝트에서이미지 파일(MultipartFile) 과 일반 데이터(JSON) 를 동시에 전송받는 API를 개발해야 했다.하지만 다음과 같은 오류가 발생했다...Resolved [org.springframework.web.bind.MissingServletRequestPartException: Required request part 'file' is not present]/* 또는 */Content type 'application/json' not supported 원인Spring Boot에서는 요청을 처리할 때, 요청의 Content-Type에 따라 동작 방식이 달라진다.@RequestBody 는 요청 전체가 application/json 타입일 때만 사용된다.즉, 파일과 JSON을 함께 ..
코딩테스트에서 자주 등장하는 확장 함수
·
Language/SQL
🎯 숫자 관련 함수ROUND(x, d)숫자를 d 자리까지 반올림 (default 0)ROUND(3.1415, 2)3.14CEIL(x)x보다 크거나 같은 최소 정수CEIL(3.2)4FLOOR(x)x보다 작거나 같은 최대 정수FLOOR(3.9)3TRUNCATE(x, d)소수점 d 자리까지만 표시TRUNCATE(3.1415, 2)3.14🔤 문자열 관련 함수SUBSTRING(str, start, len)문자열 일부 추출SUBSTRING('Hello', 1, 2)'He'LEFT(str, n)왼쪽부터 n글자 추출LEFT('Hello', 3)'Hel'RIGHT(str, n)오른쪽부터 n글자 추출RIGHT('Hello', 2)'lo'CONCAT(str1, str2, ...)문자열 연결CONCAT('A', 'B')'..
손쉽게 Swagger JSON 으로 Postman Collection 만들기
·
Honey Tip!
개요Postman에서 제공하는 OpenAPI 문서를 활용하면, API 엔드포인트를 일일이 추가하지 않고도 자동으로 Postman Collection을 생성할 수 있음Spring Boot 프로젝트에서 OpenAPI 문서를 기반으로 Postman Collection을 생성하는 방법을 작성스웨거 설정이 되어있다고 가정Spring Boot 버전사용해야 할 springdoc-openapi 버전Spring Boot 2.7.xspringdoc-openapi-ui:1.7.0Spring Boot 3.xspringdoc-openapi-starter-webmvc-ui:2.0.2OpenAPI 문서 다운로드Swagger UI 접속 > /api/v3/api-docs/approval 클릭http://localhost:8080/v3..
Unable to load io.netty.resolver.dns.macos 오류 해결 (Mac DNS 문제)
·
트러블슈팅
문제어플리케이션 실행 시, ERROR 로그 발생Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS. Check whether you have a dependency on 'io.netty:netty-resolver-dns-native-macos'. Use DEBUG level to see the full stack: java.lang.UnsatisfiedLinkError: failed to load the required native library원인Netty에서 ma..
Spring JPA Open-in-View 경고 해결
·
트러블슈팅
문제어플리케이션 실행 시, WARN 로그 발생 spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning원인spring.jpa.open-in-view=true(기본값) 설정 시, View 렌더링까지 영속성 컨텍스트(세션)가 열려 있음View에서 Lazy-loading을 사용하면 View 자체가 DB 접근 주체가 됨이는 MVC 패턴 위배하며 예측 불가능한 쿼리 실행과 N+1 문제 발생 가능해결application.yml 에 다음과 같이 설정..
Spring Data Redis: Repository store assignment 문제 해결
·
트러블슈팅
문제어플리케이션 실행 시, 수많은 Spring Data Redis - Could not safely identify store assignment for repository candidate interface 로그 발생원인Spring Boot가 Repository 인터페이스를 찾았는데 해당 인터페이스가 Redis용인지 JPA용인지 판단을 못할 경우 경고 발생특히 여러 DataStore(JPA + Redis 등)를 동시에 쓸 때 흔하게 발생함해결Redis Entity에 선언되어 있는지 확인@RedisHash("bannerClick")Repository 인터페이스가 명확하게 Redis 전용인지 확인public interface BannerClickRedisRepository extends CrudReposi..
[Kotlin] 제네릭의 out과 in 쉽게 이해하기
·
Language/Kotlin
공변과 반공변자바 개발자라면 제네릭 타입의 와일드카드 ? extends T, ? super T를 다뤄본 적 있을 거예요.코틀린에서는 이 개념을 out과 in 키워드로 표현합니다.이번 글에서는 공변성(Covariance)과 반공변성(Contravariance)에 대해 쉽고 간결하게 설명하겠습니다.📘 공변성 (Covariance) - out공변이란, 타입 파라미터의 상속 관계가 제네릭 클래스까지 이어지는 것을 의미합니다.out T는 읽기 전용(Generic Producer)입니다.T 타입의 값을 반환(return)할 수는 있지만, 넣을 수는 없습니다.class Cage { private val animals: MutableList = mutableListOf() fun getFirst(): T { ret..
GraphQL 살펴보기
·
Language/SQL
개요GraphQL이란 Facebook이 개발한 API 쿼리 언어(Query Language)REST API와 달리, 클라이언트가 원하는 데이터만 선택해서 가져올 수 있음REST API vs GraphQL 차이점비교 항목REST APIGraphQL데이터 요청 방식여러 개의 엔드포인트를 호출단일 엔드포인트(/graphql)에서 모든 요청을 처리Over-fetching필요 없는 데이터까지 반환됨원하는 데이터만 선택 가능Under-fetching추가 요청이 필요할 수 있음한 번의 요청으로 필요한 모든 데이터 조회 가능성능여러 요청을 보내야 할 수도 있음최적화된 요청 가능문서화별도 API 문서 필요자체 문서화 (GraphiQL 등 지원)GraphQL 의존성 추가dependencies { ... impleme..