목록분류 전체보기 (68)
개발 기록이
Claude Code로 레거시 코드를 수정해 보려다가, 초반에 결제 구조랑 사용 방식이 생각보다 헷갈려서 정리해 봤다. 1. 우선 터미널에서 아래와 같이 npm으로 설치를 진행한다. npm install -g @anthropic-ai/claude-code 2. 프로젝트 폴더 경로에서 claude라고 입력한 후에 테마 선택을 해주고Welcome to Claude Code v2.1.114………………………………………………………………………………………………………………………………………………………… * █████▓▓░ * ███▓░ ░░ ..
MyBatis를 사용할 때 INSERT 이후 생성된 PK 값을 바로 사용해야 하는 경우가 있다.이때 사용할 수 있는 옵션인 useGeneratedKeys와 keyProperty에 대해 알아보자. 1. useGeneratedKeys DB에서 자동 생성된 키를 가져올지 여부를 설정하는 옵션.useGeneratedKeys="true"2. keyProperty생성된 키 값을 매핑할 객체의 필드명을 지정.keyProperty="가져오고 싶은 PK 필드명" 3. 사용 예시✔ DB 테이블 생성(MySQL 기준)CREATE TABLE mybatis_users ( user_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100)); ..
springboot, java, gradle, IntelliJ 환경에서 엑셀 다운로드하는 방법에 대해 알아보자. 1. 생성할 엑셀 형태 지정0행0열1 ~ 2열3 ~ 7열8 열9 열1행No도서상세정보도서대여자대여상태비고제목저자이름연락처회원등급회원가입일시관심도서유형 2. 병합되는 열 정리No, 대여상태, 비고는 2행이 병합되고 도서상세정보, 도서대여자는 각각 2열, 5열이 병합되어야 한다. 3. build.gradle에 엑셀 다운로드를 위한 POI 의존성 추가dependencies { implementation 'org.apache.poi:poi-ooxml:5.2.5'} 4. 엑셀 파일과 시트 생성(Workbook, Sheet)XSSFWorkbook workbook = new XSSFWorkbook();S..
1. springboot initializer 로 프로젝트 생성하기 https://start.spring.io/ 로 이동 2. 원하는 언어, 빌드 도구, 의존성 선택 Project : gradle - groovy 선택 Language : Java 선택 Spring Boot : 안정화된 버전으로 선택 (괄호 없는 버전 선택) Group, Artifact (Name) 입력 Packaging - Jar Configuration - YAML Java - 17 의존성 추가 Spring Web Lombok ... GENERATE 클릭 후 프로젝트 생성하기 3. 인텔리제이로 프로젝트 열기generate로 생성한 프로젝트 압축을 해제한 후 인텔리제이..
WITH RECURSIVE(재귀 쿼리) MySQL 8.0 버전부터 CTE(Common Table Expression)으로 재귀 쿼리를 사용할 수 있다. CTE (Common Table Expression) 란?SQL 문법에서 WITH 로 시작하는 구문.임시 테이블을 만들어서 그 쿼리 안에서 재사용할 수 있는 결과 집합을 만든다.ex)WITH 임시테이블명 AS ( // 사용할 SELECT 문) SELECT * FROM 임시테이블명; 재귀 CTE는 자기 자신을 참조하는 CTE를 의미하며 부모 - 자식 구조처럼 계층 구조 데이터를 한 번에 조회할 때 사용한다. ex) 기술팀 ㄴ 인프라팀 ㄴ네트워크 ㄴ 개발팀 .... WI..
오류 발생 ⚠️ 윈도우 환경에서 IntelliJ [File] > [New] > [Get from Version Control]에서 git clone으로 프로젝트 소스를 가져오려고 했더니 다음과 같은 에러가 발생했다.clone failed unable to read askpass reponse from C:\User\AppData\Local\JetBrains\IntelliJIdea2023.2\tmp\intellij-git-askpass-local.sh'bash line 1: \dev\tty : No such device or address ...이 에러는 IntelliJ에서 git clone을 수행할 때 인증 창(Git 자격 증명 입력창)을 띄우는 과정에서 실패하여 발생하는 에러라고 한다.unable to..
IntelliJ는 파일이나 폴더를 옮기면 import 하는 부분의 경로를 자동으로 바꿔준다. 하지만 JSP, JSX 내 이미지 경로나 CSS, 하드코딩된 정적 리소스 경로는 자동 추적이 안 되기 때문에 수동으로 변경해줘야 한다. 프로젝트 내 특정 문자열 경로 일괄 변경 방법 📍 단순 문자열 검색만으로는 원하는 부분만 정확히 찾기 어려운 경우가 있다.예를 들어, 큰따옴표("), 작은따옴표('), 괄호(()) 안에 포함된 경로만 바꾸거나, 특정 위치에 있는 문자열만 선택적으로 변경하고 싶을 때가 있는데 이러한 경우에는 정규식을 활용하면 원하는 부분만 골라내어 한꺼번에 변경할 수 있다. 1. 치환을 적용하려는 최상위 폴더에서 오른쪽 클릭 → [Replace in Files] 선택 2. 정규식(Regex..
1. AES 알고리즘대칭키 암호화 방식으로 암호화와 복호화에 동일한 키를 사용한다. 이 키는 비밀로 유지되어야 하며 암호화된 데이터는 키를 알고 있는 사람만 복호화할 수 있다. AES 알고리즘 중 AES-256을 사용하여 256비트(32바이트) 키로 더 강력한 보안 방법을 적용해보려고 한다. 2. 암복호화하기import java.util.Base64;import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySpec;public class CipherExample { public static void main(String[] args) throws Exception { // AES-256을 사용하려면 키 길이가 32바이트(256비트)여야 함. Stri..
1. public vs private public: 누구나(어디서든) 접근 가능private: private이 선언된 메서드나 변수가 속한 클래스 안에서만 접근 가능public class PrivateTest { public static void main(String[] args) { Cafe cafe = new Cafe(); cafe.orderCoffee(); // 커피 주문하기(호출 가능) // cafe.makeCoffee(); // private라서 호출 불가 } public static class Cafe { private void makeCoffee() { // 카페 관계자만 사용 가능(커피 만들기) Sy..
여러 사람에게 메일 발송을 하는 것처럼 반복적인 작업을 동기 방식으로 처리하면, 각 작업이 완료될 때까지 블로킹이 발생하여 전체 처리 시간이 늘어날 수 있다. ExecutorService를 활용한 비동기 처리에 대해 알아보자. 병렬 작업과 스레드풀병렬 작업(여러 작업을 동시에 처리) 증가 → 스레드 개수 증가 → CPU, 메모리 사용량↑ → 성능 저하병렬 작업 시 스레드풀을 사용하여 스레드 수 제어가 필요하다. 스레드풀(ThreadPool)의 동작제한된 개수의 스레드를 사용하여, 작업이 끝난 후에는 해당 스레드를 재사용하여 성능 저하를 막아준다. 자바에서 스레드풀 사용ExecutorService 인터페이스를 통해 스레드풀을 관리한다.Executors 클래스를 사용하여 다양한 유형의 스레드풀을 생성한다.*..