1. Claude Code(클로드 코드)의 활용을 극대화해주는 설정과 도구들의 모음(Claude Code Skills, Plugins, ETC)[ Claude Code의 실행 ] Claude Code 실행 Alias 클로드 코드를 실행시키려면, 기존에는 프로젝트 디렉토리로 이동한 후에 claude 명령어로 클로드를 실행시켜야 했다. 하지만 이러한 과정 역시 번거로운데, c mem과 같은 명령어만 입력해도, 유사한 이름의 프로젝트 디렉토리로 이동한 후에 자동으로 클로드를 실행해주면 매우 용이할 것이다. 다음의 파일을 실행하여 클로드 실행에서 편리함을 가져가주도록 하자. Haiku 모델 비활성화Haiku 모델은 일관성 없는 결과를 내놓으며 결과의 품질을 떨어뜨린다. 또한 세션이 길어지거나 복잡해지면 앞..
1. AI 시대를 맞이하는 개발자의 역할과 작업 방식의 변화 오늘날 다양한 AI 코딩 도구들이 나오면서, 개발자들은 많은 작업 방식의 변화를 맞이하고 있다. 이러한 변화는 실제하며, 나 역시도 이러한 과도기를 적극적으로 맞이하고 있다. 개인적으로 맞이한 변화가 무엇이고, 어떠한 생각을 가지고 있는지 정리해보았다. [ IDE(IntelliJ)의 활용 시간 감소 ]가장 먼저 IDE(IntelliJ)의 활용 시간 감소이 대폭 줄어들었다. IDE의 활용도가 많은 생산성 향상과 효율성 증대를 일으킨다는 것을 체감하기에, 신입 사원을 교육할 때면 마우스 없이 개발하며, 키보드와 IDE 단축키의 활용을 극대화하는 의도적 연습을 시키곤 했다.하지만 오늘날 이러한 가치는 이전 대비 대폭 감소했고, 켄트 백(Kent B..
1. MySQL의 wait_timeout 설정과 HikariCP 6.1.0에 추가된 maxLifeTime 분산 기능[ MySQL의 wait_timeout 설정과 커넥션 풀의 maxLifeTime 설정이란? ]외부 리소스와의 연결을 위해, 반드시 추가해야 하는 설정 중 하나가 타임아웃이다. 타임아웃을 제대로 설정하지 않으면, 다른 컴포넌트의 응답이 느려질 때 애플리케이션 전체가 영향을 받을 수 있다. 대표적으로 MSA 환경에서 외부 API와 통신을 할 때 타임아웃 설정이 중요하다. 타임아웃 설정이 존재하지 않으면, 외부 API의 응답이 지연될 때 애플리케이션의 스레드가 대기 상태에 빠져 전체 서비스의 응답 속도가 느려지며 장애를 전파받을 수 있기 때문이다.데이터베이스 관점에서도 타임아웃 설정은 매우 중요하..
1. Validation 애노테이션 사용 시에 발생하는 ConstraintDeclarationException 에러[ Validation 애노테이션 사용 시에 발생하는 ConstraintDeclarationException 에러 ]에를 들어 다음과 같은 컨트롤러가 존재한다고 하자. 파라미터로 받는 name은 최소 길이가 10이여야 한다는 유효성 검사를 도와주는 @Length 애노테이션이 붙어 있다. 그리고 이를 추싱화한 TestControllerInterface에는 관련 애노테이션 정보가 존재하지 않는 상황이다. 이러한 상황에서 컨트롤러를 호출하게 되면 어떤 결과가 나올까?import org.hibernate.validator.constraints.Length;import org.springframewo..
1. synchronized의 한계를 극복하기 위한 Lock 인터페이스와 ReentrantLock 클래스이전 포스팅에서 설명하였듯, synchronized 키워드를 활용한 동시성 제어는 다음의 2가지 치명적인 문제가 있었다.공정성 문제: 락의 획득 순서가 보장되지 않음무한 대기 문제: 대기하는 스레드를 깨우는 등의 제어를 할 수 없음 이런 문제를 해결하기 위해 자바 1.5부터 java.util.concurrent 라는 동시성 문제 해결을 위한 라이브러리 패키지가 추가되었다. [ 무한 대기 문제를 해결하기 위한 LockSupport 클래스 ]먼저 무한 대기 문제를 해결하기 위해 LockSupport 클래스가 추가되었다. LockSupport는 스레드를 블로킹/언블로킹하기 위한 가장 기본적인 도구로, ..