[H2] Database "mem:testdb" not found, either pre-create it or allow remote database creation 해결

Intro 스프링부트에서는 아래와 같은 설정으로 간단하게 인메모리 H2 데이터베이스를 사용 할 수 있습니다. application.yml spring: datasource: url: jdbc:h2:mem:testdb username: sa build.gradle.kts runtimeOnly("com.h2database:h2") 이후 h2:console 설정을 켠다면, 콘솔 페이지에서 데이터베이스를 직접 확인 해 볼 수 있는데요 spring: h2: console: enabled: true settings: web-allow-others: true 위와 같이 설정했을때에는, /h2-console 경로로 들어가면 데이터베이스를 웹 페이지에서 직접 확인 해 볼 수 있습니다. 그런데, Test Connectio..

Programming/JPA ⁄ Spring 2022.11.15
[인텔리제이] 한글이 들어간 파일 모두 찾기

Intro 프로젝트에서 국제화 작업을 진행이 대부분 마무리되어, 이제는 모든 뷰단에서 완전하게 하드코딩된 한글 메시지가 제거가 되었는지 확인이 필요 했습니다. 눈에 보이는 페이지를 하나 씩 일일이 찾아서 변경을 했지만, 거의 완료가 되고 나서도 특정 이벤트에만 등장하는 숨겨진 텍스트들이 꽤나 있었습니다. 이때는 정규식 표현을 활용하여 손쉽게 모든 파일에서 한글이 입력된 부분만 찾아낼 수 있습니다. 한글 찾기 파일에서 찾기 Shift 키를 연속으로 두 번 누르고 Find in Files 를 검색 하시면, 단축키를 찾아 낼 수 있습니다. Linux / Windows 에서는 Ctrl+Shift+F 키 이며, Mac 에서는 Ctrl 키 대신 커맨드 키가 들어갑니다. 해당 단축키를 입력 해 보면 위에 보이는 것과..

Development/Develop Tools 2022.11.15
스프링 부트 java -jar 혹은 bootrun시 port 변경하기

Intro 이번글은 매우 간단한 글인데, 자꾸 까먹어서 블로그 글로 정리해두고 필요할 때 찾아보려고 작성 해 두려고 합니다. 스프링 부트 프로젝트를 IDE로 손쉽게 실행 할 수 있지만, Scale out 이나 로드밸런스 등의 테스트를 할 때는 같은 어플리케이션을 여러개 띄워두어야 하는 경우가 생깁니다. 테스트의 경우에는 인텔리제이에서 Run Configuration을 여러개 카피해서 사용하는게 가장 좋기는 하지만 이런 방법도 있다고 알고 있는 편이 좋겠고 실제로 쓸일이 제법 있었습니다. 포트 지정해 실행 아래와 같이 포트 설정을 하여 실행 할 수 있습니다. java -jar 아마 가장 흔하게 쓰이지 않을까 생각 됩니다. java -jar -Dserver.port=18080 ./target/my-app-0..

Programming/JPA ⁄ Spring 2022.11.14
[Java] Stream을 활용해 중첩 컬렉션 및 Tree 평면화하기

Intro TREE 형태로 만들어둔 메뉴 목록을 평면화해야 하는 일이 있었습니다. Stream의 flatMap을 활용하면 이중 컬렉션의 평면화를 아주 쉽게 할 수 있는데, 트리 전체를 평면화 시키는건 코드를 깔끔하게 작성하는데 고민이 많았습니다. 스트림을 활용해 트리 형태의 그래프를 평면화 시키는 작업을 한번 해 보도록 하겠습니다. 이중 컬렉션 평면화 가장 먼저 이중 컬렉션의 평면화를 몸풀기로 진행 해 보도록 하겠습니다. 이 작업은 필요한 경우가 잦아 모두 한번쯤은 작성해 해 보셨을거에요. 일단 중첩 컬렉션을 평면화시키는 메서드를 가진 인터페이스를 선언 하고 interface CollectionFlatter { Collection flatten(Collection collection); } 거기에 맞는 ..

Programming/Java 2022.11.07
[도커 방화벽 설정] 엘라스틱서치 특정 IP 클라이언트 접속만 허용하기

Intro 국비학원 최종 프로젝트때 잘 알지도 못하면서 검색 엔진을 도입 했었습니다. 물론 지금도 검색엔진에 대해 잘 모르다보니, 회사에서 진행중인 프로젝트에서 검색엔진을 활용하는 기능을 추가 할때면 SolrJ API를 이리저리 뒤져가며 낑낑대며 간신히 병목이 생기지 않을 정도만 하고 있습니다. 잘 알지도 못하는 검색엔진 도입의 대가는 실로 커서, 장점이라면 그때 당시 도와줄 사람이 없어 처음으로 공식 문서들을 뒤져가며 스스로 무언가를 바닥부터 만들어 내며 맨땅에서도 뿌리를 내릴 수 있는 야생성을 기르고 어떻게든 하면 된다는 자신감을 얻었습니다. 반면 단점도 만만치 않은데 일단 국비학원을 졸업한지 1년 4개월쯤 지난 지금도 그때 당시의 프로젝트를 여전히 띄워 두고 있습니다. 처음엔 집에 남는 노트북으로 ..

Development/DevOps 2022.10.29