본문 바로가기
반응형

개발/기타49

PostgreSQL 문자열 합치기 PostgreSQL에서 문자열을 합치는 방법을 알아보자. PostgreSQL은 기본적으로 Oracle과 문법이 많이 비슷하다. 1. '||' 사용 // 문법 STR1 || STR2 || ... // 예시 'Hello' || 'World' // HelloWorld 한가지 주의할 부분은 합치려는 문자열 중에 NULL이 있는 경우 NULL이 리턴된다는 것이다. 'Hello' || NULL || 'World' // NULL 2. CONCAT 사용 // 문법 CONCAT(STR1, STR2,...) // 예시 CONCAT('Hello', 'World') // HelloWorld CONCAT을 사용할 때는 NULL이 포함이 되어도 NULL을 무시한다. 'Hello' || NULL || 'World' // Hello.. 2023. 5. 29.
PostgreSQL Upsert(Update&Insert) 사용 PostgreSQL를 사용해서 upsert를 실행하는 문법을 알아보자. upsert는 Insert 시 pk가 중복 등으로 Insert 하려는 값이 존재하는 경우 해당 row를 update하는 쿼리이다. 먼저 문법을 보면 아래와 같다. INSERT INTO // insert문 ON CONFLICT // 충돌 체크 DO UPDATE // update문 문법을 기준으로 쿼리를 작성해보면 아래와 같은 예시가 된다. USER테이블에 insert문을 실행하는데 'id' 컬럼에 해당하는 row가 없으면 insert, 이미 존재하면 age에 +1을 한 값으로 update한다. INSERT INTO USER (id, name , age) VALUES('user1', 'Hong', 1) ON CONFLICT (id) DO.. 2023. 5. 29.
Gradle 멀티모듈에서 특정(one) 모듈(subproject)만 빌드 Gradle에서 멀티모듈 환경으로 개발을 하는 경우 기본적으로 빌드 시 매번 전체 모듈이 빌드가 된다. 하지만 상황에 따라서 특정 모듈(subproject)만 빌드를 수행하고 싶을 때가 있다. 이럴때 매번 전체 모듈을 빌드하더라도 원하는 결과물은 생성되겠지만 불필요하게 빌드시간이 증가하게 된다. 아래와 같이 간단한 Gradle 명령으로 특정 모듈만 빌드가 가능하다. Parent(Root) - A모듈 - B모듈 - C모듈 위와 같이 Parent에 A, B, C 프로젝트가 자식 모듈(subproject)로 구성된 멀티 모듈 환경이 있다고 가정하자. 먼저 일반적인 Gradle 명령은 다음과 같다. Parent(Root) 기준으로 전체 모듈이 빌드가 된다. gradle build 특정 모듈만 빌드를 하고 싶은 .. 2023. 5. 27.
크롬 CORS 에러 -blocked by CORS policy: The request client is not a secure context and the resource is in more-private address space `private` 오랜만에 개발하면서 크롬에서 CORS를 만났다. 처음에 CORS 설정을 다 해줬는데도 에러가 발생하여 원인을 찾는데 시간이 걸렸다. 이번에 발생한 발생한 CORS 에러는 일반적으로 봤던 CORS 에러와 달랐는데 에러 메시지를 끝까지 안본것이 문제였다. 먼저 일반적으로 발생하는 CORS 에러는 다음과 같다. Access to XMLHttpRequest at 'http://xxxx' from origin 'http://xxxxx' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the r.. 2023. 2. 1.
STS(Eclipse) git failed to write credential 에러 STS(Eclipse)에서 git 관련 pull, push 등 명령을 수행할 때 메시지창이 뜨면서 failed to write credential 에러 메시지가 나타는 경우가 있다. 아래 메시지가 뜨면 매번 git 계정정보를 작업 시 마다 입력해줘야 되서 많이 불편하다. 이 현상이 나타나는 이유는 STS의 git 저장소 Key가 꼬여서 나타나는 현상으로 저장된 Key를 모두 삭제해주면 해결 된다. 삭제 방법은 STS에 "Preferences > General > Security > Secure Storage > Contents(탭)" 메뉴로 접속해서 GIT 부분의 내용을 삭제하면 된다. 2022. 9. 18.
Tomcat SymbolicLink(심볼릭링크) 허용 Tomcat 구성 중에 NAS로 심볼릭링크를 설정했는데 링크가 먹히지 않는 상황이 발생했다. 검색을 해보니 Tomcat은 보안상의 이유로 심볼링 링크를 막는다고 한다. 아래와 같이 conf/context.xml간단한 설정으로 심볼릭링크를 허용할 수 있다. 참고로 아래는 Tomcat 버전은 8버전 이상인 경우에 해당하는 설정이다. ... Tomcat 7버전 이하에는 conf/server.xml에서 context부분에 allowLinking="true"를 추가한다. 참고로 심볼릭링크를 사용하면 성능적으로는 좀 안좋다는 얘기가 있다. 필요한 경우에만 사용하자 2022. 9. 5.
Gradle Nexus Repository 설정 gradle을 사용하면서 repository를 사설repository인 Nexus를 사용하도록 설정하는 방법을 정리해본다. 사전에 Nexus에 Maven Central Repository 미러링 설정은 해두었다. 1. gradle wrapper 설정 gradle wrapper는 서로 다른 개발환경에서 각자의 gradle 버전에 영향을 받지않고 프로젝트에서 설정한 gradle을 사용하기 위한 방법이다. gradle-wrapper.properties 파일 수정 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists # distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-b.. 2022. 5. 6.
Git(gitLab) Repository 옮기기(이동) 소스 형상관리로 git을 사용할 경우 Repository를 필요에 따라서 다른 곳으로 옮겨야 하는 경우가 있다. 이렇게 Repository를 옮길때 git의 commit이력까지 모두 옮길 수 있는 방법은 아래와 같다. # 기존 소스 clone git clone --mirror [기존 Source 리파지토리 주소] # 리파지토리 폴더로 이동 cd 리파지토리명 # 신규 리파지토리 설정(신규 리파지토리는 생성되어 있어야 함) git remote set-url --push origin [신규 Target 리파지토리 주소] # Push git push --mirror git push --mirror을 진행하다가 아래와 같은 "pre-receive hook declined" 오류가 발생해서 push가 안되었다. >.. 2022. 4. 18.
반응형