최신글

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

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

[level 1] 389478. 택배 상자 꺼내기

https://school.programmers.co.kr/learn/courses/30/lessons/389478 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제1 ~ n의 번호가 있는 택배 상자가 창고에 있습니다. 당신은 택배 상자들을 다음과 같이 정리했습니다.왼쪽에서 오른쪽으로 가면서 1번 상자부터 번호 순서대로 택배 상자를 한 개씩 놓습니다. 가로로 택배 상자를 w개 놓았다면 이번에는 오른쪽에서 왼쪽으로 가면서 그 위층에 택배 상자를 한 개씩 놓습니다. 그 층에 상자를 w개 놓아 가장 왼쪽으로 돌아왔다면 또다시 왼쪽에서 오른쪽으로 가면서 그 위층에 상자를 놓습니다. 이러한 방식으로 n개의 택배..

프로그래머스 2025.04.24 1

1. 기본 스킨 변경해보기

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

[CH 2 키오스크 과제] 정리 & 회고

요구 사항 정의https://gajicoding.tistory.com/250 요구사항 정의필수 기능Lv 1. 기본적인 키오스크를 프로그래밍해보자Lv 2. 객체 지향 설계를 적용해 햄버거 메뉴를 클래스로 관리하기Lv 3. 객체 지향 설계를 적용해 순서 제어를 클래스로 관리하기Lv 4. 객체 지gajicoding.tistory.com문제 해결List.of()로 만든 리스트에서 add()가 안 되는 이유새롭게 알게된 문법가변 인자 (...)Map - compute(), computeIfAbsent(), computeIfPresent()가변 리스트 vs 불변 리스트키오스크 과제 학습 목표(체크리스트) ☑️ 완료, ✖️ 실패, △ 미흡☑️ 클래스를 작성하고 객체를 생성하여 활용할 수 있는가?☑️ 컬렉션을 활용해 ..

내일배움캠프 2025.04.29 0

티스토리 코드 블럭 스타일 변경하기

티스토리 작성 글 내, 코드 블럭 스타일을 변경하려고 한다. 코드 하이라이팅 컬러 변경왼쪽에 코드 넘버 추가코드블럭 radius *****'코드 넘버 추가' 가 필요 없다면블로그 관리 > 플러그인 > 코드 문법 강조 에서 원하는 테마를 선택하는 것도 좋다.스킨 적용하기1. highlight.js 를 다운받고, 압축을 해제한다.https://highlightjs.org/ 2. styles 폴더에서 원하는 css 파일을 고른다.테마 미리보기: https://highlightjs.org/demo 3. highlight.min.js 파일과 css 파일을 업로드 한다블로그 관리 > 스킨편집 > html 편집 > 파일 업로드 3. html 파일 편집HTML 탭에서 사이에 코드를 추가한다."./images..

가변 리스트 vs 불변 리스트

가변 리스트ArrayList, LinkedList와 같은 클래스를 사용하여 가변 리스트를 선언할 수 있다.List mutableList = new ArrayList();mutableList.add("Item 1");mutableList.add("Item 2"); 가변 리스트 특징가변성(Mutable): 리스트의 내용을 변경할 수 있다.항목을 추가하거나 삭제할 수 있다.동적 크기 조정: 리스트의 크기가 필요에 따라 자동으로 확장된다. 가변 리스트 장단점장점유연성: 리스트의 내용을 쉽게 수정할 수 있기 때문에 데이터의 변화가 잦은 경우 유용하다.성능: 데이터를 자주 수정하는 경우 성능이 더 뛰어난 경우가 많다.단점데이터 안전성 부족: 가변 리스트는 여러 스레드에서 동시에 접근할 때 데이터 무결성 문제가 발생..

문법 2025.04.29 1

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

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() ..