728x90
반응형

전체 글 470

Lombok @Getter(Class Level) Ignore Stragegy - 오버라이드 된 메소드와 대소문자를 구분하지 않고 중복 비교

상황은 이러하다.User 클래스에 userName 이라는 이름의 private 인스턴스 멤버를 선언하고 해당 클래스 레벨에 @Getter를 적용하였다.(필드 레벨에는 이러한 현상이 발생하지 않는다.)또한 해당 User클래스는 Security에서 지원하는 UserDetails 인터페이스를 구현하였고 getUsername() 메소드를 오버라이딩 하였다.@Getter@Setterpublic class User implements UserDetails { private String userName; // 롬복의 @Getter에 의해 getUserName() 생성 @Override public String getUsername() { return this.userName; }}..

JAVA 2024.06.14

IntelliJ - Gradle기반 LiveReLoad 적용법

InteliJ에서 IntelliJ Build 기반 설정을 모두 해제한 상태로 Gradle Build 기반에 대한 LiveReload 적용법을 설명한다. 일반적으로 InjelliJ Build 기반의 LiveReload는 IDE자체 Setting을 몇개 추가함으로써 작동하므로, 크롬브라우저의 LiveReload 적용이 필요없다. 하지만 Gradle Build 기반의 LiveReload는 크롬의 LiveReload 플러그인에 의존하여 작동되기 때문에, IDE자체 Setting을 하더라도 해당 플러그인이 깔려있지 않다면 작동되지 않는다. Gradle Build 기반의 LiveReload 기능은 IntelliJ Build 기반 보다 반영속도가 훨씬 빠르다. [build.gradle] 의존성 추가 dependenc..

IDE 도구/IntelliJ 2024.04.04

Cloud Firestore 및 Storage - nosql CRUD 및 Securiy 설정

FireBase Collection Collection은 일반적인 관계형 데이터베이스의 테이블과 유사하다. Collection에 데이터를 저장하면 Documents 단위로 저장되는데, 이는 각 테이블에 저장된 Row(행)과 유사하다. Cloud Firestore 데이터베이스 생성 및 활성화 우선은 테스트 모드로 시작한 뒤 마지막에 Security Rule, API key 설정 진행할 예정이다.. (마지막까지 꼭 참고하길 바란다!) 아래와 같이 Firebase 콘솔에서 직접 추가/제거/수정이 가능하다 우리는 코드로 직접 추가/수정/제거를 할 예정이므로 위 과정은 생략한다. 다음은 첨부파일이다. 콘솔의 좌측 네비 빌드 메뉴에서 Storage를 선택하고 우측에서 [시작하기] 버튼을 클릭한다. 다음은 어플리케이..

카테고리 없음 2024.02.20

Firebase - Project 생성 및 Application 적용, Authentication 회원가입/로그인 (깃허브)

Firebase Project 생성 및 Application 적용부터 Authentication 로그인 과정 Firebase Project 생성 및 Application 적용 NPM을 사용할지 CDN방식을 사용할지 정한다. 필자는 터미널에서 NPM 명령어를 통해 설치했다. > npm install firebase @10.1.0 2. SDK 모듈 파일 추가 [ firebase.ts ] 혹은 js () import { initializeApp } from "firebase/app"; const firebaseConfig = { apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", authDomain: "sample-example-aee43.firebaseapp.com",..

카테고리 없음 2024.02.20

Spring legacy - 클래스파일 경로에 있는 xml 파일 빌드 (인텔리제이 혹은 배포)

context.xml파일 일반적으로 classpath는 src/main이다. src/main 하위에서 java 혹은 resources 두갈래로 갈린다. 우리는 java 파일이 존재하는 경로에 mapper.xml을 저장할 예정이므로 groupID와 artifactID를 포함한 도메인 경로와 파일이 실제로 존재하는 하위 디렉토리 로 경로를 지정한다. pom.xml파일 src/main/java **/*.xml src/main/resources **/*.* 위 xml로드 부분인 resources코드를 추가하면 src/main/java에 존재하는 모든 xml파일을 컴파일 한다. STS에서는 일반적으로 위 코드를 하지 않더라도 컴파일과정을 거쳐 빌드 된 후 톰캣에 배포된다. 하지만 인텔리제이에서는 위 코드가 생략되..

SpringFramework 2024.02.19

Spring 한개 이상 - 복수개의 properties파일 로드 안되는 현상

1. 서로 다른 두개 이상의 Context파일에 서로 다른 복수개의 properties파일을 로드한다고 가정한다. ignore-unresolvable="true" 위 속성을 추가해야 한다. 만약 해당 속성을 추가하지 않는다면, 우선순위가 높은 설정파일에만 적용이 된다. 2. 하나의 Context파일에 서로 다른 복수개의 properties파일을 로드한다고 가정한다. order="1" ignore-unresolvable="true" 위와 같이 order속성과 ignore-unresolvable 속성을 함께 추가해야한다.

SpringFramework 2024.02.18

Spring Legacy Mybatis Execute Query 콘솔출력

Maven Dependency를 추가한다. [ log4j2-jdbc4.1 ]을 추가한다. org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4.1 1.16 [ log4jdbc.log4j2.properties ] 파일 추가 log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator log4jdbc.dump.sql.maxlinelength=0 JDBC Driver 설정에 대한 Properties 파일을 아래와 같이 변경한다. /* [오라클] */ // 변경 이전 값 oracle.driver=oracle.jdbc.driver.OracleDriver oracle.url=jdbc:oracle:thin:@5..

SpringFramework 2024.02.18

IntelliJ Tomcat 콘솔 로그 영어출력 & 데이터 한글출력 ORA-01861 에러 해결

블로그에는 잘못된 코드 및 설정 정보가 많은것 같다. 오류가 난 개발 환경은 인텔리제이, Maven, 외장 Tomcat이다. 우선 잘못된 정보는 아래와 같다. -Duser.language=en -Duser.region=us Tomcat Edit Configuration에서 VM Options에 위와같이 입력하면 로그는 영어로, 데이터는 한글로 출력되며, 깨지지 않는다. 그러나 AWS RDS로 오라클 DataBase 사용시 ORA-01861이라는 오류를 직면하게 된다. HTML 삽입 미리보기할 수 없는 소스 예를들어 WHERE조건절에 아래와 같은 쿼리를 작성했을 때 오류가 발생한다. WHERE AT_DATE = TO_CHAR(SYSDATE,'YYYY-MM-DD') ## AT_DATE는 Date타입이다. 해..

IDE 도구/IntelliJ 2024.02.18

Lv.3 [동적계획법] - 정수 삼각형

[ 문제 링크 ] HTML 삽입 미리보기할 수 없는 소스 [ 문제 설명 이미지 ] 더보기 동적계획법 큰 문제를 작은 문제로 나누어 푸는 방법. 복잡한 문제를 풀기 위해 작게 조각내어 문제를 풀고 합치면 된다. 정수삼각형 숫자로 구해진 삼각형이 있고 위에서부터 대각선으로만 내려올 수 있다. 내려오면서 숫자를 더했을 때 어떤 경로로 이동했을 때 가장 큰 숫자가 나오는지 가장 큰 최대값을 구하는것이 문제이다. 굉장히 많은 경우의수가 나올수 있기 때문에 어렵게 느껴질 수 있지만, 이중 하나만 때어놓고 생각해보면 7에서 3으로 가는것과 7에서 8로 가는것 둘중 어느것이 최대값으로 가는것인지 생각해보면 굉장히 단순하다. 이 작은 조각의 단위가 여러개 있는것 뿐이다. 중간의 경우 8 1 0 2 7 4 4 처음 2는 ..

Lv.4 [깊이우선탐색] - 올바른 괄호의 갯수 (풀이 미완성)

[ 문제 링크 ] HTML 삽입 미리보기할 수 없는 소스 [ 문제 설명 이미지 ] 더보기 올바른 괄호의 갯수 A 입력값으로 괄호쌍의 갯수가 주어지고 이 괄호의 조합중에 올바르게 닫힌 괄호의 갯수가 몇개인지 구하는 문제 모든 케이스를 다 순회하면서 조건에 맞는 경우만 카운트한다. 괄호가 열렸다가, 닫혔다가 하면서 점점 증가하며 여러 케이스가 생기고 각 케이스에서 열리고 닫히는 순서를 달리하면서 또 다른 케이스들이 파생되기 때문에 선형적으로 증가하지 않게되므로 비 선형구조 탐색에서는 너비,깊이 우선 탐색이 있다. N = 2라고 가정 주어진 괄호를 하나씩 차근차근 쌓아나가것으로 문제를 접근한다. 열리는괄호 닫히는괄호 각각 N개씩있다. N이 2일때 열리는것 혹은 닫히는것 각각의 기준을 놓고 시작할 수 있다. 그..

Lv.2 [너비우선탐색] - 게임 맵 최단거리 (풀이 미완성)

[ 문제 링크 ] HTML 삽입 미리보기할 수 없는 소스 [ 문제 설명 이미지 ] 더보기 게임 맵 최단거리 미로의 시작 점에서 시작해서 목적지까지 찾아가는 최단 거리를 구하는 문제이다. 최단거리 탐색 중 BFS - 너비우선 탐색에 대한 전형적인 문제이다. 현재 시점에 움직일 수 있는 여러가지 경우의 수 중 모든 경우를 다 확인해야 한다. 맵에서 player가 특정 위치에 있을 때 대각선을 제외한 이동가능 경우의 수는 4가지 경우의 수가 나온다. 이 4가지 경우를 모두 가본다. 각 방향대로 1칸씩 움직인 이후에 다음 위치를 경우의 수 대로 생각하는 방식이다. 현재 시작점 위치를 0으로 두고 각각의 이동할 수 있는 경우의 수를 모두 가보는 것이다. 현재 위치의 수보다 1씩 더해서 이동하게 된다. 만약 벽이 ..

Lv.2 [Hash] - 의상(위장)

[ 문제 링크 ] HTML 삽입 미리보기할 수 없는 소스 [ 문제 설명 이미지 ] 더보기 의상(위장) 스파이가 위장할 수 있는 아이템들의 종류가 있다. 각 종류들을 조합해서 위장을 하게 되는데, 그 모든 경우의 수가 몇가지가 되는가 위장 용품은 착용을 할 수 있고 안할 수도 있다. 쉽게 접근하면 위장용품들의 각 갯수를 서로 곱하면 모든 경우의 수가 나온다. 하지만 착용 안할 수도 있다. 경우의 수에 1을 더해서 모두 곱해주면 된다. 모든 위장용품을 하나도 착용하지 않은 경우가 포함되기 때문에 추후 1을 빼주면 된다. 문제의 핵심은 경우의 수를 구하는 것이 아니라 아이템의 종류별로 갯수를 카운트하는데에 있다. 문제에서는 헤드기어 2종류, 아이웨어 1종류가 있다. 종류별로 총 몇개가 나오는지를 카운트 하는것..

Lv.3 [시뮬레이션] - 숫자 게임

[ 문제 링크 ] HTML 삽입 미리보기할 수 없는 소스 [ 문제 설명 이미지 ] 더보기 숫자게임 A B 두 팀의 숫자를 순서대로 내서 큰 수를 낸 팀이 승점을 갖게 된다. 숫자가 같은경우 비기는경우는 승점이 없다. A팀은 숫자와 순서가 정해져 있다. (실제 게임상에서는 B팀이 A팀의 순서는 알지만 순서에 매핑되어있는 숫자는 모른다.) B팀의 순서를 여러가지로 조합했을 때 얻을 수 있는 최대 승점이 몇인지 구한다. B팀이 배열될 수 있는 모든 경우의 수를 다 비교해 보고 그 상황에서의 승점들을 구해서 최대값을 구하면 된다. 만약 전체 모든 경우의 수를 다 확인하고, 그 안에서 내가 원하는 값을 찾는 탐색 법으로 풀수 있다. 하지만 B가 최대 승점으로 이긴다는 조건이 있고, 이 조건에 맞는 조합을 재연해 ..

Lv.2? [이진 탐색] - 예산(kit 전용 문제)

[ 문제 링크 ] HTML 삽입 미리보기할 수 없는 소스 [ 문제 설명 이미지 ] 더보기 예산 각 지방에서 신청한 예산안 들이 있는데, 국가의 총 예산을 넘지 않는 선에서 수용 가능한 최대 상한가를 구하라는 문제이다. 예산의 상한가가 정해지면, 요청된 예산이 상한가보다 크거나 같을 경우 상한가 만큼만 지급하고, 상한값보다 작으면 신청된 예산값만 지급한다. 각 지방에서 신청한 예산 액이 있고, 이 예산액의 총 합이 국가에서 지정한 총예산값을 넘기면 안된다. 특정 상한값을 정하고 상한값보다 큰 경우 상한값 만큼만 제공한다. 상한값을 찾아내는것이 문제의 핵심이다. 이진탐색 주어진 데이터에서 내가 원하는 특정 데이터를 찾아내는것을 `탐색` 이라고 한다. 가장 단순한 방법은 모든 경우의 수 0에서부터 최대값 사이..