전체 글 368

Spring 로그인 실패 처리 롤백 문제 - TransactionTemplate로 해결

🔐 로그인 잠금(Lock) 처리 — 트랜잭션 문제회원 로그인할 때, (최초 로그인 실패 시점으로부터) 30분 내에 5회 이상 실패하면 계정에 잠금(lock)을 걸어서 로그인을 제한하는 기능을 구현했다. 그런데 이 과정에서 트랜잭션 때문에 실패 로그가 DB에 반영되지 않는 문제가 발생했다. ❗ 문제 상황login 메서드에서 회원이 비밀번호가 틀린 경우, 예외를 터뜨린다. 로그인 실패 로그를 DB에 저장하기 위해서 setLoginFailureHistory() 를 호출한다. 그러나... ❌ 예외가 발생하면서 부모 트랜잭션이 롤백 →실패 기록(로그인 실패 카운트)이 DB에 커밋되지 않음 즉, 실패 로그를 남겨야하는데 예외가 터지면서 실패 로그 저장 로직이 롤백되버리는 문제가 발생했다. 시도 1 — RE..

QueryDSL fetchJoin 사용 시 주의사항

fetchJoin 이란?QueryDSL 에서의 fetchJoin은 연관된 엔티티를 한 번의 쿼리로 즉시 로딩하고, 영속성 컨텍스트에 함께 적재하는 기능이다.즉, N+1 문제를 해결할 때 자주 사용된다.join : 단순히 SQL 조인만 수행 (Lazy 로딩될 수 있음)fetchJoin : 조인 + 즉시 로딩(Eager Loading), 영속성 컨텍스트에 연관 엔티티까지 채워 넣음 Eager 로딩과 fetchJoin의 차이// Team 클래스@OneToMany(fetch = FetchType.EAGER)List memberList = new ArrayList();Eager: 쿼리를 항상 즉시 로딩 → 쿼리 제어 불가.fetch type = "Eager_loading" : 항상 eager 로딩으로 고정한다..

개발 일지 2025.08.18

npm 과 pnpm 의 공통점/차이점

Vue.js 를 빌드할 수 있는 도구에는 webpack, vite가 있다. 그동안 회사에서 webpack을 써왔는데 이번에 Next.js (= React + 백엔드) 프로젝트를 Vite 기반의 Vue.js 로 리팩토링하는 중이다. Vite 라는 도구는 들어봤지만 사용해보는건 처음이라 관련된 명령어 npm, pnpm 공통점, 차이점에 대해 알아보려한다. node.js란? JavaScrpit를 실행하기 위한 런타임 환경. Java로 따지면 JRE(Java Runtime Environment = JVM + 라이브러리, 자바 런타임 환경) npm pnpm 방식Node.js 패키지 관리자. 명령어 대부분 동일사용webpack 에서 사용vite 에서 사용효율성비효율각 vue.js 프로젝트마다 node_m..

개발 일지 2025.05.17

Message를 수신할 때마다 실행되는 MQTT Listener 만들기

MQTT(Message Queue Telemetry Transfort)란?publish, subscribe 기반의 메시징 프로토콜이다. TCP/IP 프로토콜 위에서 동작하며 네트워크 대역폭이 제한되는 원격 위치와의 연결을 위해서 설계되었다. 무선 네크워크에 연결된 단순한 기기들간의 간단한 소통을 위해 만들어진 만큼 리소스를 매우 적게 요구하므로 IoT(Internet of Things, 사물인터넷) 에서 가볍에 많이 쓰이는 프로토콜이다. MQTT라는 프로토콜을 구현한 소프트웨어가 바로 메시지 브로커 mosquitto 이다. MQTT 를 깔고 나면 프로그램의 이름이 "mosquitto"인 것을 확인할 수 있다. 회사에 Message Queue 를 이용하는 Listener 서버가 있는데 이와 관련된 부분..

개발 일지 2025.04.30

맥북 pro 12일 사용 후기 (M4 pro + Nano texture)

구매한 맥북 사양웹 개발을 위해 구매한 맥북 사양은 다음과 같다.M4 pro 칩RAM 48GB SSD 1TB 14코어 CPU. 20코어 GPU+ Nano texture(나노 텍스처) : 밝은 곳에서 빛이 비치더라도 선명하게 볼 수 있는 기능 + Apple care plus 사용 후기 작성 배경맥북을 열흘 정도 사용해보고 내 맥북에서 발생한 문제와 장단점, 사용 후기를 쓰려 한다. Apple care plus 으로 환불 가능한 기간이 2주인데 열흘 동안 문제가 지속돼서 바로 환불했다. 맥북을 며칠 사용해보니 키보드, 마우스 이슈가 있었다.온라인 스토어에서 주문하고 애플 스토어에 직접 방문해서 반품하고 왔다. (배송으로 환불 신청해도 되지만 직접 가는 게 환불 처리가 빠름) 내 맥북에서 발생한 문제 두..

카테고리 없음 2025.03.23

Spring bean life cycle - Chrome driver 충돌 문제

개인 프로젝트에서 Chrome driver 를 사용하는데 Linux 버전에 대한 Chrome 옵션 설정을 추가하자마자 Spring Bean 생성 오류가 나면서 서버가 다운됐다. Chrome Driver - Spring 생명 주기 충돌 문제에 관한 포스팅을 하려한다.+ Window의 경우에는 Chrome 옵션을 넣을 필요가 없으나 OS가 Linux 인 경우에는 Chrome 옵션(headerless 등)을 넣어야한다. (docker 에서는 linux 기반으로 돌리는데 linux에서는 chrome option 값이 필요함.) 스프링 빈 생성 주기 (Spring Bean Lifecycle)객체 생성 → new를 통해 빈 객체가 생성됨. (@Component, @Bean 등)의존성 주입 → @Autowi..

카테고리 없음 2025.03.08

18회 IoT 지식능력검정 후기(2024 12 01) 및 오답 정리

2024/12/01  18회  IoT 지식능력검정 필기 후기회사에서 IoT 관련된 일을 하던 중 권유를 받아 시험에 응시하게 되었다. 평소에 네트워크 지식이나 IoT 관련 지식이 부족하다고 느껴서 공부하기에 좋은 기회라는 생각이 들었다. 그래서 컴퓨터 과학 지식도 넓힐 겸 한 달 전부터 공부를 시작했다. 합격만을 목표로 한다면 한달보다 짧은 기간(2-3주)에도 가능할 거라 본다.책은 사지 않고 9회분 기출 문제를 하나씩 풀면서 notion 에 정리했다. CBT IOT 기출문제 참고  기출을 풀어보면 알겠지만 정처기 필기처럼 문제 은행식이고 정답 번호까지 동일한 문제가 다수였다. 책은 사지 않아도 충분히 합격 가능한 시험이다. (교재를 찾아봐도 가장 최근에 나온 책이 2019년에 나온 책일 정도)오늘 시험..

자격증 2024.12.01

2024 3회 정보처리기사 필기 후기 및 오답정리

2024 3회 정보처리기사  필기 후기7월 7일에 응시한  3회 정처기 시험 후기를 남기려한다.그동안 필기는 요약본, 기출문제만으로 된다는 합격 후기를 많이 봤다. 그래서 두 가지로만 3주 정도(직장인 기준) 공부하고 합격했다. 막상 시험을 보니 시나공 요약본 2023, 기출문제 (2020-2022)에서 본 적 없는 문제가 체감 상 5 ~ 10문제는 되는것 같았다 ㅠㅠ 90점 이상 고득점을 바란다면 이것만으로는 부족하지만 합격 커트라인 60점을 넘기 위해서는 괜찮은 편이다. 최신 기출 문제집에는 2023년 기출 문제들을 확인할 수 있다고 하니 참고하면 도움이 될 것 같다. 시험 시간 2시간 반 동안에 100 문제를 풀면 되는데 넉넉해서 중간에 나왔다. 다른 기사 시험에 응시하는 분들도 섞여있었고 많은 사..

자격증 2024.07.08

53회 SQLD (2024 05 25) 합격 후기 및 오답정리

53회 SQLD 시험 합격 후기 이번 시험은 기출 문제에 비해서 어려운 문제가 많았다. 한 달 동안 2023 이기적 sql 교재 하나로만 공부했는데 다시 돌아간다면 노랭이 + 다른 기본서를 참고해서 두 달 정도 깊게 공부할 것이다. 시험을 보다가 2023 교재에는 없는 피벗 테이블 문제가 하나 나와서 당황했다ㅠㅠ(교재가 오타도 많고 별로라 느꼈는데 그래도 합격 점수(78점)를 받은 걸 보면 교재가 아주 별로는 아님)5만원 내고 응시했는데 결과도 한 달 뒤에 나오고 시험지를 가져올 수 없었다. 아쉬운대로 카페에서 답을 맞춰보며 도움이 많이 됐다. - https://cafe.naver.com/sqlpd참고로 정처기와는 다르게 시험 장소가 근처에 많지 않아서 접수 첫 날에 바로 하는 걸 추천한다.-------..

자격증 2024.05.26