최신글

more

context-path와 Security: 예상과 다른 경로 매칭 문제

Spring Boot 프로젝트에서 REST API 경로에 공통 prefix(/api)를 적용하기 위해 context-path 설정을 사용하는 경우가 많다.하지만 이렇게 설정한 뒤, Spring Security에서 특정 경로를 허용하려 할 때, 의도한 대로 매칭되지 않고 403 혹은 401 에러가 발생하는 경우가 있다.문제 상황다음과 같이 context-path를 설정하고server: servlet: context-path: /api 그리고 Security 설정에서는 아래와 같이 /api/login을 허용하도록 구성했다http .authorizeHttpRequests(auth -> auth .requestMatchers("/api/login").permitAll() ..

@Cacheable 사용 시 역직렬화 오류 해결

문제 상황@Cacheable(value = "books", key = "...")public PagedResponse findAllCached(...) { return bookService.findAll(...);} PagedResponse 와 같은 제네릭 타입으로 캐싱할 때캐시에서 조회된 데이터가 LinkedHashMap으로 역직렬화되어 아래와 같은 오류가 발생 java.lang.ClassCastException: class java.util.LinkedHashMap cannot be cast to class cohttp://m.example.book_api.global.dto.PagedResponse (java.util.LinkedHashMap is in module java.base of ..

EXPLAIN ANALYZE 활용법

EXPLAIN ANALYZE란?MySQL에서 쿼리 실행 계획뿐만 아니라, 쿼리를 실제로 실행해 본 후 실제 실행 시간과 처리된 행 수 같은 실행 통계까지 함께 보여주는 명령어단순 EXPLAIN과 달리, 쿼리를 실제 실행하므로 정확한 성능 정보를 알 수 있다.옵티마이저가 예측한 실행 계획과 실제 수행 결과를 비교해, 실행 계획의 적절성을 검증할 수 있다.EXPLAIN ANALYZE 활용법 및 개선 방향실제 실행 시간과 옵티마이저 예상 비용을 비교한다.조인 방식(Nested Loop, Hash Join 등)과 인덱스 활용 여부를 확인한다.불필요한 컬럼 조회를 피하고, 필요한 컬럼만 선택한다. (커버링 인덱스 유도)통계 정보를 최신으로 유지해 옵티마이저가 정확한 계획을 세우도록 한다.변경 전후 성능을 수치로 ..

성능 개선 2025.07.04 0

[🐋 Docker + CI/CD] 4. AWS 연동

🐋 목차AWS 회원 가입 & 로그인EC2 설정서버 설정github repository 설정 프로젝트 설정 EC2 인바운드 규칙 설정배포 확인인스턴스 중지1. AWS 회원 가입 & 로그인https://portal.aws.amazon.com/billing/signup AWS Console - Signup portal.aws.amazon.com 이메일 인증, 주소 등록, 카드 등록, 본인 인증 등의 절차를 거쳐 회원가입을 진행한 로그인 한다 !2. EC2 설정왼쪽 위 검색창에서 ec2 를 입력 후 선택 ec2 화면에서 ‘인스턴스’ 를 선택 인스턴스 시작 버튼 클릭 인스턴스 생성이름 : my-serverAmazon Machine Image(AMI) : Amazon Linux 2023 AMI인스턴스 유형 ..

강의 2025.07.03 1

인기글

IntelliJ Community 설치하기

Java 개발용 IDEIntelliJ를 설치해보고자 한다.1. 설치설치 링크: https://www.jetbrains.com/ko-kr/idea/download IntelliJ IDEA 다운로드 www.jetbrains.com 다운로드 페이지 두번째 단락무료 평가판이 아닌, Community Edition을 다운로드 한다. 다운받은 설치 파일을 실행 후 설치 옵션 설정 2. 프로젝트 생성해보기 IntelliJ 실행 > 새 프로젝트 프로젝트 이름과 위치 설정 후생성 아래 코드 입력 후실행 버튼 클릭public class Main { public static void main(String[] args) { System.out.println("Hello world!"); }} ..

Tool 2025.04.14 0

백준, 프로그래머스와 GitHub 연동하기

크롬 확장 프로그램백준허브(BaekjoonHub)에 대해 소개하고, 설치, 적용하는 법을 정리해보고자 한다.1. 프로그램 설치아래 사이트로 접속하여 확장 프로그램을 추가해준다. https://chromewebstore.google.com/detail/ccammcjdkpgjmcpijpahlehmapgmphmk?utm_source=item-share-cb 백준허브(BaekjoonHub) - Chrome 웹 스토어Automatically integrate your BOJ submissions to GitHubchromewebstore.google.com 2. GitHub 연동하기추가가 완료되면, 우측 상단에 퍼즐 버튼을 눌러, 백준허브를 클릭해준다.  깃허브 연결버튼을 누르면, 연동 도움 사이트로 이동된다. ..

Github 연동 2025.03.28 0

커밋 컨벤션 (Commit Convention)

커밋 컨벤션(Commit Convention) 이란?Git에서 커밋 메시지를 작성할 때 일정한 형식(규칙)을 정해 놓은 것커밋 컨벤션의 장점커밋 메시지를 봤을 때 어떤 변경을 했는지 빠르게 파악 가능협업 시 코드 히스토리가 명확하고 일관됨자동 릴리즈(예: semantic-release)나 체인지로그 생성 등에 유리Conventional Commits - 가장 널리 쓰이는 형식 https://www.conventionalcommits.org/en/v1.0.0/ Conventional CommitsA specification for adding human and machine readable meaning to commit messageswww.conventionalcommits.org 기본 구조(optio..

Git 2025.04.18 0

TIL 작성 가이드

일시 : 4/14(월) 14:00진행 : 김기용 튜터님장소 : zoom📝 TIL 작성 가이드TIL(today I learn) 이란?개발 커뮤니티에서의 TILTIL 5가지 유형 정리TIL 잘쓰는 법 2가지TIL 을 100% 활용하는 방법TIL 작성을 시작해보세요1. TIL(today I learn) 이란? TIL 은 "Today I learned" - "오늘 내가 배운것"의 줄임말로,최근에 알게 된 흥미로운 사실을 공유하는 인터넷 문화에서 비롯되었다.2. 개발 커뮤니티에서의 TIL서로의 TIL을 통해새로운 개념을 배운다.본인의 코드에서 놓쳤던 부분을 발견한다.피드백을 주고 받는다. 개발 블로그 종류 (velog, tistory 등)https://velopert.com/https://pjh3749.tist..

특강 2025.04.14 1

1-4. 리베이스(rebase)의 기본

🎮 게임으로 Git 익숙해지기https://learngitbranching.js.org/?locale=ko Learn Git BranchingAn interactive Git visualization tool to educate and challenge!learngitbranching.js.org설명브랜치끼리의 작업을 접목하는 두번째 방법은 *리베이스(rebase)*입니다. 리베이스는 기본적으로 커밋들을 모아서 복사한 뒤, 다른 곳에 떨궈 놓는 것입니다. 조금 어렵게 느껴질 수 있지만, 리베이스를 하면 커밋들의 흐름을 보기 좋게 한 줄로 만들 수 있다는 장점이 있습니다. 리베이스를 쓰면 저장소의 커밋 로그와 이력이 한결 깨끗해집니다. 브랜치 합치기 (rebase)git rebase [합칠 브랜치명] 문..

Learn Git Branching 2025.04.10 0

Open JDK ver.8 설치하기

💡 과거에는 Oracle JDK를 기본으로 설치했지만, 이제 유료화 되었으므로 Open JDK를 설치한다.1. 설치설치 링크: https://adoptium.net/ Home | AdoptiumThe Adoptium® Working Group The Adoptium Working Group promotes and supports high-quality runtimes and associated technology for use across the Java ecosystem. Our vision is to meet the needs of Eclipse and the broader Java community by providing runtimesadoptium.net Other platforms and ..

Tool 2025.04.14 0

NVIDIA Jetson 보드 세팅 - Jetpack & Cuda 재설치

대학교 LAB에서Jetson 보드 세팅을 해본 경험이 있는데 혹시 모를 나중을 대비해블로그에 다시 정리해보고자 한다.  ㅡㅡㅡ주의ㅡㅡㅡ2023.02.08 에 작성된 문서이다.💻 목차준비물NVIDIA SDK manager 설치SDK manager 실행 후 로그인Step 1 - 젯슨 보드 연결 후 버전 선택Step 2Step 3 - 설치 진행Cuda 설치1. 준비물호스트pc(우분투 pc), 젯슨 보드키보드 마우스, 모니터 2개, 랜선 등 젯슨보드 분해 후 리커버리, 파워 버튼 찾아두기호스트 pc와 젯슨보드는 같은 공유기의 랜선으로 연결호스트pc 용량 확보 (30GB 정도)  젯슨 보드는 이렇게 연결해주었다. 왼쪽부터 파워선, 랜선, HDMI선, 5핀 (micro B) 선이 연결되어있다. 리커버리, 파워 버..

NVIDIA Jetson 2025.04.11 0

HeidiSQL 설치하기

DB GUI 툴인 HeidiSQL 을 설치해보려고 한다.가볍고, 직관적이라서 필자의 경우 MySQL Work bench 보다 HeidiSQL 을 선호한다.오픈 소스이다.1. 설치설치 링크: https://www.heidisql.com/download.php Installer 다운로드 후 실행 설치 모드기본값 - 모든 사용자 동의, 다음, 다음, 다음, 설치 설치 완료 !2. 실행설치 후 첫 화면이다. 세션 연결 방법+ 신규세션 이름 및 설정 입력열기

Tool 2025.05.06 0

@EntityGraph - fetch join을 어노테이션으로 처리하기

@EntityGraph란?JPA의 Entity Graph 기능을 Spring Data JPA에 적용한 어노테이션지연 로딩(LAZY) 필드들을 명시적으로 fetch join 하도록 설정할 수 있다.JPQL의 join fetch 없이 리포지토리 메서드 수준에서 연관 엔티티를 즉시 로딩할 수 있도록 도와준다.기본 사용법attributePaths: 즉시 로딩하고 싶은 연관 엔티티 경로내부적으로 JPQL의 join fetch와 유사한 SQL이 실행됨public interface MemberRepository extends JpaRepository { @EntityGraph(attributePaths = {"team"}) List findAll(); // findAll 호출 시 team도 함께 조회됨}예..

문법 2025.06.11 0

JSON 포맷 변경하기: Jackson 설정 커스터마이징

1. Jackson이란?Java 객체와 JSON 간 변환(직렬화/역직렬화)을 담당하는 라이브러리Spring Boot 기본 JSON 처리 라이브러리로 자동 설정 제공2. JSON 포맷 변경이 필요한 이유API 응답 형식 일관성 유지날짜/시간 포맷 표준화null 값 처리 방식 조절필드 네이밍 전략 변경 (camelCase ↔ snake_case)가독성 향상을 위한 pretty print 적용 등3. Jackson 설정 커스터마이징하는 방법 ObjectMapper 직접 설정@Configurationpublic class JacksonConfig { @Bean public ObjectMapper objectMapper() { ObjectMapper mapper = new ObjectMa..

문법 2025.05.23 1