no image
[Spring] Gradle 캐시 적용으로 CI 파이프라인과 빌드를 빠르게 하기
$GRADLE_USER_HOME아래 내용을 이해하려면 이 환경 변수를 우선 알고 있어야 한다.Gradle 은 GRADLE_USER_HOME 이라는 환경 변수를 지원하여 사용자가 직접 지정하여 이용할 수 있도록 지원해주고 있다. 이 환경 변수에는 단순히 폴더 경로만 지정해주면 되는데 이 환경 변수는 전역 설정 property, 초기화 스크립트, 캐시, 로그 파일 등을 저장하는 용도로 쓰인다.GRADLE_USER_HOME 이라는 환경 변수를 읽지 못했을 때는 사용자 홈 디렉토리의 .gradle 폴더를 바라본다. 프로젝트 저장소의 .gradle 폴더와는 다르기 때문에 혼동하면 안 된다. Wrapper 및 의존성Wrapperhttps://docs.gradle.org/current/userguide/gradle_..
2024.11.15
no image
[Spring] OpenFeign @SpringQueryMap 사용 시 별도 파라미터로 사용하기
어떤 API 에 쿼리 파라미터로 전달해야 하는 항목 중 파라미터를 다르게 전달해야 하는 경우가 있다고 생각해보자.예를 들어, keywordType 을 keyword_type 이라는 이름으로 전달해야 하는 상황이라고 생각해보자. @SpringQueryMap 을 사용하면 아래와 같이 작성할 수 있을 것이다.@FeignClientpublic interface MemberApiClient { @GetMapping(value = "/users") UserResponseDto userSearch(@SpringQueryMap UserRequestDto request);}@Builder@Getterpublic class UserRequestDto { @Builder.Default private U..
2024.11.15
no image
[Linux] Mac 에서 python 2 설치하기 (Homebrew + pyenv)
1. pyenv 설치 $ brew install pyenv ==> Auto-updating Homebrew... Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`). ==> Auto-updated Homebrew! Updated 3 taps (shivammathur/php, homebrew/core and homebrew/cask). ==> New Formulae dissent ==> New Casks lookaway loungy You have 16 outdated f..
2024.03.29
no image
[DB] Oracle PIVOT 사용 방법 및 조회 시 성능 주의사항
Oracle의 PIVOT 문법은 Oracle 11g부터 지원하는 기능으로 행을 열로 변환하여 사용할 수 있게 도와준다. SELECT ( 출력컬럼 ) FROM ( PIVOT 대상 쿼리문 ) PIVOT ( 집계함수(집계컬럼) FOR 컬럼 IN (컬럼값 AS 별칭 ... ) FROM절에 대상이 되는 테이블의 모든 컬럼은 GROUP BY의 대상이 된다. PIVOT문에 가로로 출력할 컬럼은 가로로 나열할 때의 GROUP BY의 대상이 된다. 집계함수에 사용되는 컬럼은 집계 대상이므로 GROUP BY 대상에서 제외되고 나머지 컬럼들은 세로로 나열할 때 GROUP BY 대상이 된다. 예를 들면 EMP 테이블에 아래와 같은 데이터가 있다고 하자 아래처럼 질의문을 작성하고 SELECT * FROM ( SELECT ENA..
2024.03.11
no image
[JPA] Querydsl LocalDateTime 에서 Date 로 변환할 때 오류나는 경우 (feat. Oracle)
@Entity@Table(name = "SOME_ENTITY")public class SomeEntity { @Id @Column(name = "id") private Long id; @Column(name = "created_at") private LocalDateTime createdAt;}@Getter@Builder@NoArgsConstructor@AllArgsConstructorpublic class SomeDto { private LocalDateTime createdAt;}위와 같은 Entity와 결과를 받아올 클래스가 있다고 가정하자.여기서 Querydsl의 Projections.field를 이용하여 createdAt 이라는 값을 select 한다고 해보자. 그러..
2024.03.06
no image
[DB] Oracle 날짜 계산 시 INTERVAL 보단 ADD_MONTHS 를 사용하자
회사에서 INTERVAL을 사용하는 쿼리 때문에 장애가 발생해서 남기는 글이다. Oracle에서 날짜를 더하거나 뺄 때 두 가지 방법이 있는데 하나는 INTERVAL을 사용하는 것이고, 다른 하나는 ADD_MONTHS를 사용하는 것이다. INTERVAL은 아래와 같이 사용할 수 있다. SELECT SYSDATE - (INTERVAL '1' YEAR) , SYSDATE + (INTERVAL '1' YEAR) , SYSDATE + (INTERVAL '1' MONTH) , SYSDATE + (INTERVAL '1' DAY) , SYSDATE + (INTERVAL '1' HOUR) , SYSDATE + (INTERVAL '1' MINUTE) , SYSDATE + (INTERVAL '1' SECOND) FROM ..
2024.03.04
no image
[JPA] QueryDSL 에서 enumPath 사용하기
회사에서 SQL 쿼리를 작성하다 보니 CASE WHEN을 사용해야 하는 경우가 있었는데(안티패턴으로 취급되기도 하지만) QueryDSL에서 CASE WHEN 과 함께 enum 으로 받고 싶어서 사용해보다가 뭔가 이상한 구석이 있어서 한번 기록으로 적어보았다. QueryDSL에서 CASE WHEN 사용법의 경우 이곳에 잘 정리되어 있다. 사용법 우선 EnumPath 를 사용할 경우 예시로 아래와 같이 사용할 수 있다. @RequiredArgsConstructor public class PartnerSubAccountRepositorySupportImpl implements PartnerSubAccountRepositorySupport { private final JPAQueryFactory queryFac..
2023.11.30
no image
[GIT] Upsource 말고 Jetbrains 에서 GitLab 통합 기능으로 코드 리뷰를 해보자
코드 리뷰를 도와주는 도구 중 Jetbrains 에서 만든 Upsource 라는 유명한 도구가 있다. 하지만 2022년 2월에 지원 종료를 하면서 기존에 사용하는 유저들만 계속 지원하고, 신규로 사용하고자 한다면 Space 라고 하는 통합 개발 플랫폼을 이용하라고 말한다. 현재 회사에서는 Upsource 를 이용하고 있지 않았고, 통합 개발 플랫폼도 사실상 GitLab 을 사용하고 있었기 때문에 Space 를 사용할 수도 없었다. 코드 리뷰를 하기 위한 도구를 물색하면서 Codestream 이라던가 다른 도구들을 살펴보았지만, Upsource 만큼의 편의성을 제공하는 도구는 없어보였다. Jetbrains 의 Marketplace 에서 GitLab MR 관련된 플러그인이 있긴 했지만 유료였다. 그렇게 딱히..
2023.10.15
no image
[GIT] 특정 시점에서의 변경 내역만 되돌리기
회사에서 다른 분이 작업했었던 브랜치가 master 에 병합이 되었는데 적용하지 말아야 하는 경우가 생겨서 이미 다른 사람들까지 병합이 된 상황에서 되돌려야 하는 경우가 생겼다. $ git log --oneline --graph * f82c9d2 (HEAD -> master, tag: v1.16.7o, origin/master, origin/HEAD) Merge branch 'hotfix/EMTT-350' into 'master' |\ | * cf2113f (origin/hotfix/EMTT-350, hotfix/EMTT-350) feat: cache key 확인 후 없으면 api 호출하도록 수정 | * adb8f11 refact: 인자 수정 | * e1653bd refact: isset 은 null 확..
2023.09.14