분류 전체보기 43

[MyBatis] Interceptor로 생성일(CreatedDate) 자동 입력하기, Auditing

JPA는 데이터의 생성일, 수정일 등 을 자동으로 넣어주는 Audit라는 기능을 제공합니다. Auditing을 이용하여 엔티티를 언제 생성/수정 했는지 기록하게 할 수 있습니다. Mybatis Interceptor를 이용하여 Message객체를 DB에 저장할 때 생성일을 (CreatedDate) 자동으로 추가 시켜보겠습니다. application.properties mybatis.config-location=classpath:mybatis-config.xml mybatis-config의 위치를 설정해줍니다. mybatis-config.xml AuditingInterceptor라는 Interceptor를 만들어서 플러그인 등록 해줍니다. Message public class Message { private..

[CD / Jazz] Cannonball Adderley (캐넌볼 애덜리) - Somethin' Else RVG Edition

재즈 좋아하는 친구한테 처음으로 추천받아 산 재즈 앨범입니다. 마일즈 데이비스, 행크 존스, 샘 존스, 아트 블래키 등 재즈 음악에 대해 잘 모를 때 였음에도 아는 이름들이 참여 뮤지션으로 소개되어있어서 의심없이 구매 했네요 웅장 근데 사실 이 앨범의 주인공은 마일즈 데이비스 라는 소문이 있네요 ㅎㅎㅎ 블루노트 레이블에서 발매한 앨범이고 RVG 에디션 입니다. (루디 반 겔더 에 의해 최신 디지털 기술로 24비트 리마스터링하여 다시 발매하는 Blue Note 의 시리즈 라고 하네요) 음반 매장에 블루노트 코너에 모여 있는 RVG Edition을 볼 때 마다 하나 씩 모아보고 싶다는 생각을 했었는데 이 앨범으로 스타트를 끊게 되었습니다.. 블루노트.. 참으로 느낌있게 잘 만든다 1번 트랙 재생하자마자 든 ..

CD 2024.01.29

[CD / HipHop] Owen (오왼) - P.O.E.M 8주년 기념 리마스터 CD

오왼 P.O.E.M 앨범 시디, 바이닐이 1월13일에 재 발매 되었습니다. 원래 사고싶었던 앨범이라 발매 소식을 듣고 바로 캘박해두고 기다렸네요 근데 오왼 인스타에서 앨범 자켓이 변경된거 보고 살짝 실망하긴했음.. 색이 반전되었네요 언컷포인트 나오면서 저작권 포기하고 나왔다고 들은거같은데 그 이유 때문인가.. 암튼 원래 자켓이 훨씬 이쁘긴하다 발매 하자마자 바로 구매 성공한 시디 물량 많이 찍은거같아요 글을 쓰는 지금까지도 재고가 남아있네요 시디에는 EE(Eclipse Empire) 로고가 박혀있네요 메킷레인을 정말 좋아했었는데 기분이 참 묘합니다 해체한다고 했을 때 슬프기도 하고 아쉬웠는데 그래도 형이 행복하다면.. 트랙 수는 10곡으로 동일합니다 보너스트랙 기대한 사람.. 암튼 앞으로 이 음반만 주구..

CD 2024.01.25

[CD / Funk / Samba] Banda Black Rio (반다 블랙 리오) - Super Nova Samba Funk

Banda Black Rio 1976년에 결성된 리우데자네이루 출신의 브라질 음악 그룹입니다. 펑크를 기반으로 하지만 삼바, 재즈, 브라질 리듬을 포함한 레퍼토리를 보유하고 있습니다. 라고 위키백과가 설명 해주네요 오늘 추천드릴 음반은 2011년에 발매한 Banda Black Rio의 라는 앨범입니다. 쥬얼케이스로 된 CD를 선호하는데 디지팩으로 되어있네요 수납장에 수납하기도 그렇고 크기도 제각각이라 개인적으로 혐지팩을 정말 싫어합니다.. 트랙수는 16곡이고 삼바,펑크,재즈,소울이 고루 섞여있는 앨범이라고 봅니다 많이들 생각하시는 펑크음악처럼 신나는 곡도 있고 몽환적인 소울느낌의 곡도 있고 아주 그냥 뷔페입니다 브라질 음악의 새로운 시대를 열었다는 평가를 받고..

CD 2024.01.24

[Spring] 실시간 채팅 서버 구현 (STOMP, Redis Pub/Sub), 상세 시나리오

STOMP (Simple Text Oriented Messaging Protocol) WebSocket을 기반으로 한 통신 프레임워크 입니다. 서버와 클라이언트간 양방향 통신을 지원하고, Pub/Sub 구조로 되어있어 실시간 채팅을 구현하기 용이합니다. STOMP 메시지는 메시지 브로커를 통해 전송 됩니다. (Publisher -> Message Broker -> Subscriber) Publisher가 특정 Topic에 메시지를 보내면 Message Broker는 그 Topic을 구독중인 Subscriber에게 메시지를 전달합니다. 메시지 브로커는 다양한데 Redis를 사용하도록 하겠습니다. 세팅 먼저 websocket과 redis를 사용하기 위해 build.gradle 프로퍼티를 정의하고 redis ..

[IntelliJ] import 자동 정리 설정

단축기로 사용하지 않는 import를 정리하는 방법도 있지만, 파일마다 정리를 해주어야 하고 (프로젝트 전체 정리가 안됨) 깜빡하고 정리를 안하고 넘어가는 경우가 많아서 import 자동 정리 설정을 해놓는 편이다. 설정 방법은 : Settings -> Editor -> General -> Auto Import -> Optimize imports on the fly (import 문 즉시 최적화) 적용 버튼을 눌러서 적용을 하게 되면 import 문들이 바로 삭제가 안되어서 잘 적용 안되었다고 생각할 수 있는데 문서를 편집하는 순간 자동으로 사용하지 않는 import 들을 정리 해준다.

[Spring] Spring Message, properties 한글 깨짐 해결하기

애플리케이션에 Message를 적용할 때 한글로 입력해놓은 메시지들이 ???. 로 깨지는 경우가 있다. 설정 -> 파일 인코딩 전역 인코딩 : UTF-8 프로젝트 인코딩 : UTF-8 프로퍼티 파일에 대한 디폴트 인코딩 : UTF-8 모두 변경 후 IDE를 재시작 한다. 재시작 하면 이 전에 properties 에 입력해놓은 한글들이 ???.로 변경되어있다. 한글로 다시 입력해주고 실행하면 해결된다.

[Spring] Spring Security 회원가입/로그인 구현 예제

Spring Security로 회원가입 / 로그인을 처리 하는 예제는 아래와 같다. Spring Security 라이브러리 추가 시큐리티 설정을 할 SpringSecurity 클래스 생성 사용자 정보를 담는 UserDetails를 구현 한 PrincipalDetails 클래스 생성 시큐리티에서 유저의 정보를 가져오는 UserDetailsService를 구현 한 PrincipalDetailsService 클래스 생성 유저 정보를 담을 User 도메인 클래스 생성 회원가입 시 주고 받을 UserSaveRequestDto 생성 User를 저장 할 UserRepository 클래스 생성 회원가입 화면을 띄워줄 UserController 클래스 생성 회원가입 기능을 구현 할 UserService 클래스 생성 회원..

[Web] Nginx WebSocket 설정, Nginx WebSocket 안될 때

웹 사이드 프로젝트 진행 중 실시간 채팅, 알림 기능을 WebSocket을 이용하여 구현했다. AWS EC2 서버에 프로젝트를 배포하고 WebSocket으로 구현한 채팅, 알림 기능도 별 문제없이 동작하였는데. *탄력적 IP DNS, 8080 포트로 접근 const socket = new WebSocket('ws://주소:8080/chatroom'); 자동 배포, 무중단 서비스를 만들기 위해 Nginx를 사용하는 순간 WebSocket 연결에 문제가 생겼다. 배포 과정에 서비스가 중단되지 않기 위해 Nginx 리버프 프록시를 이용해 8081, 8082 포트에 번갈아 가며 요청을 전달하도 록 하였는데 ( 이 과정은 생략하겠습니다 ) Nginx는 80(http), 443(https) 포트를 할당하며, 80번..

2023.09.07

[Spring] iTunes Search API 사용법, 음원 정보 검색하기

나는 음악을 좋아하고 바이닐, CD 컬렉터이다 인스타그램이나 디스콕스 처럼 내 수집품을 포스팅하는 사이트를 만들고 싶었다 처음에는 유저가 직접 아티스트 명, 앨범 명을 입력할 수 있도록 하였는데 입력방식이 제각기이다 보니 데이터 정리도 안되고 앨범 아트도 직접 업로드해야하는 불편함이 있었다. 그래서 음원사이트 나 디스콕스의 Open API를 써서 음원 정보를 가져오기로 했고 그 중 Api Token이 따로 필요없고 쓰기 편한 iTunes Search API를 선택했다. 내가 원하는 기능은 아래와 같다 Input에 아티스트 명을 입력하면, Select에 입력한 아티스트의 앨범들이 추가 Select에서 앨범을 선택하면, 선택한 앨범의 장르와, 앨범아트가 디스플레이 사용 방법은 간단했다. 본인이 필요한 데이터..