최신글

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

인기글

백준, 프로그래머스와 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

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

커밋 컨벤션 (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

HeidiSQL 설치하기

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

Tool 2025.05.06 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

181929. 원소들의 곱과 합

https://school.programmers.co.kr/learn/courses/30/lessons/181929 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제정수가 담긴 리스트 num_list가 주어질 때, 모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 solution 함수를 완성해주세요. 제한사항2 ≤ num_list의 길이 ≤ 101 ≤ num_list의 원소 ≤ 9 입출력 예num_listresult[3, 4, 5, 2, 1]1[5, 7, 8, 3]0 입출력 예 #1모든 원소의 곱은 120, 합의 제곱은 225이므로 1을 return합니다.입출력 ..

1. 기본 스킨 변경해보기

새로운 블로그 생성 !스킨 적용 테스트를 위해 우선새로운 블로그를 하나 생성 했다.(기존의 블로그 글을 계속 작성해야하므로...) 스킨이 완전히 만들어지면 이 블로그(가지가지하네)에 적용시킬 생각이다. 블로그 생성이 완료되면 블로그 관리 좌측탭 > 꾸미기 > 스킨 변경 메뉴로 이동 기본 스킨을 적용시켜본다. (아무거나 상관없다.)  적용이 완료되면 스킨편집 메뉴로 이동 그러면 이렇게 편집창으로 이동된다. html 편집 클릭 확인 현재 블로그의 HTML, CSS, 업로드된 image 파일 등을 확인할 수 있다.   기본 html 틀만 남기고 다 삭제해봤다.적용하고 홈으로 가보니 정말 아무것도 남지 않았다.  * 혹시 블로그 관리 페이지를 못찾겠다면블로그 주소/manage 로 접속하면 된다.ex) https..

Interceptor vs AOP(Aspect Oriented Programming)

Spring에서는 공통 기능을 모듈화하기 위한 여러 방법을 제공한다.그 중 많이 사용되는 두 가지가 바로 Interceptor와 AOP(Aspect-Oriented Programming)이다.이 글에서는 두 개념의 차이점과 사용 목적을 명확히 정리하고자 한다. Interceptor란?Spring MVC에서 제공하는 컴포넌트주로 HTTP 요청/응답 흐름을 가로채기 위해 사용DispatcherServlet에서 Controller로 가기 전/후에 동작 동작 시점preHandle() – Controller 실행 이전postHandle() – Controller 실행 이후, View 렌더링 전afterCompletion() – View 렌더링 이후 장점웹 요청(Request/Response)에 특화되어 있어 인증..

아키텍처, 설계 2025.06.11 0

181833. 특별한 이차원 배열 1

https://school.programmers.co.kr/learn/courses/30/lessons/181833문제정수 n이 매개변수로 주어질 때, 다음과 같은 n × n 크기의 이차원 배열 arr를 return 하는 solution 함수를 작성해 주세요.arr[i][j] (0 ≤ i, j n)의 값은 i = j라면 1, 아니라면 0입니다. 제한사항1 ≤ n ≤ 100 입출력 예nresult3[[1, 0, 0], [0, 1, 0], [0, 0, 1]]6[[1, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0], [0, 0, 1, 0, 0, 0], [0, 0, 0, 1, 0, 0], [0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 1]]1[[1]] 입출력 예 #1예제 1번의..