Keep calm and code on

현재 프로젝트에서는 integrationTest와 별도의 test폴더를 분리하여 사용하고 있다. 아래와 같이 설정하여 integrationTest폴더를 별도로 설정하고 컴파일/테스트를 분리하여 처리하고 있다. plugins { kotlin("jvm") version "1.6.0" } group = "com.example" version = "0.0.1-SNAPSHOT" java.sourceCompatibility = JavaVersion.VERSION_11 repositories { mavenCentral() } dependencies { implementation("org.jetbrains.kotlin:kotlin-reflect") implementation("org.jetbrains.kotlin:ko..
아래와 같이 사용자의 조건에 따라서 광고를 내보내야 하는 경우를 가정해봅시다. 광고1 : 서울 or 부산 광고2: 대구 and 남자 and 30대 광고3: (30대 이하 and 여자) or (20대 이하 and 남자) 광고 도메인은 위와같이 다양한 경우의 수에 맞추어 노출될수 있는 광고를 추출하고 내보낼 수 있어야 합니다. 기존의 데이터는 단순히 고정된 값으로만 표현할 수 있으며 그렇기 때문에 위와같이 어떤 광고가 나올수 있는지를 뽑아내는건 쉽지 않은 문제입니다. 각 경우에 맞추어 필드로 조건을 만들어준다고 하더라도 3번케이스와 같이 두 조건이 결합된경우 이를 쿼리하기는 쉽지 않을것입니다. elasticsearch에서는 문서의 쿼리를 먼저 정의하고, 쿼리시 문서를 제공하는 방식으로 필터가 가능한 perc..
NullPointerException은 자바 언어로 개발하면서 가장 친근하게 느껴지는 예외이다. 컴파일 레벨에서 쉽사리 잡히지도 않거니와 경우의 수가 너무나 다양하기 때문에 이를 잘 처리하는 것도 쉽지 않다. 코틀린처럼(Null Safety - Kotlin Programming Language) 예쁘게 null을 처리할 수 있는 방법이 있지도 않으며 Optional을 모든 경우에 쓰기에는 복잡성만 한가득 늘어나게 된다. 일반적으로 애플리케이션간 혹은 메시지를 주고 받을때 주로 DTO형식을 많이 이용하게 된다. 외부지점에서 DTO를 받는 경우 보통 이를 정제/변환하는 과정을 거쳐 활용을 하도록 로직을 작성하는 경우가 많은데, 이러한 정제/변환 과정에서 다음과 같은 코드를 필연적으로 많이 만날수밖에 없다. ..