목록분류 전체보기 (6)
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를 받는 경우 보통 이를 정제/변환하는 과정을 거쳐 활용을 하도록 로직을 작성하는 경우가 많은데, 이러한 정제/변환 과정에서 다음과 같은 코드를 필연적으로 많이 만날수밖에 없다. ..
스프링 MVC를 사용한다고 한다면 모든 웹 요청은 기본적으로 DispatcherServlet을 통해서 들어오게 된다.이 DispatcherServlet은 자바의 표준 Servlet을 확장(혹은 상속. extends키워드는 확장이 더 옳은 표현이라고 본다.)한 클래스로 핸들러 매핑 메서드와의 연결과 에러처리, 뷰 렌더링 등 수많은 작업들이 일어나는 곳이다. 아주아주 역사가 깊은(또는 복잡한…) 자바 표준 Servlet을 잘 감싸준 이DispatcherServlet 덕분에 우리는 아래와 같이 간결하게 URL매핑 코드를 만들어줄 수 있다. @Controllerpublic class MainController { @GetMapping("/main") public String getMainView(){ //do..
스프링 스케쥴링 활용Spring에서는 일정한 주기마다 작업을 실행할 수 있는 Schedule기능이 포함되어있다. Spring Batch만큼 순차작업이나 실패에 따른 복구등의 많은 기능을 가지고 있지 않지만, 간략한 설정과 어노테이션만으로 편리하게 설정이 가능한 장점을 가지고 있다. 최소한의 코드를 가진다는건 한눈에 파악할 수 있고, 빠르게 수정이 가능하다는 뜻이다.스프링의 Schedule기능은 다음과 같이 구성할 수 있다. 우선 설정파일에 스케쥴을 사용하겠다는 의미로 @EnableScheduling을 추가하여 스케쥴링 기능을 사용하겠다는 것을 표기하여 줄 수 있다.@EnableScheduling@SpringBootApplicationpublic class Application {public static ..
아래는 Robert C. Martin이 작성했던 글 http://blog.cleancoder.com/uncle-bob/2015/11/18/TheProgrammersOath.html 을 번역한 글입니다. 컴퓨터 프로그래머로서 직업의 명예를 방어하고 보존하기 위해,나는 능력과 판단에 있어 최선을 다할것을 약속합니다.나는 해로운 코드를 만들지 않을 것입니다.나는 항상 최선을 다해서 코드를 작성할 것입니다. 구조적으로 또는 코딩단계에서 문제가 적응되는 것을 최대한 방어할 것입니다.나는 각 배포코드 전부가 정상적으로 작동하는지를 확실, 신속, 반복 테스트를 통해서 모든 요소가 정상적으로 작동하는지 확인할 것입니다.나는 작으며 최대한 많은 배포 가능한 코드를 만들어낼 것입니다. 이는 다른 이들의 작업에 영향을 주지..