진짜 개발자
본문 바로가기

전체 글 (총 582개)

Java - LocalDateTime, LocalDate 날짜 차이 구하기 (관련 이슈처리) LocalDateTime 1. 문제 상황App의 Server를 개발하던 중, 회원가입 부분을 구축하는 상황이었습니다. 회원가입시에는, 사용자의 출국날짜를 입력받게 되는데요, 이때 회원가입 진행 시간이 출국날짜 최소 하루 전이어야 하는 상황이었습니다. 날짜를 나타내는 데이터 타입의 경우 출국 시간까지를 표현하기 위해 LocalDateTime을 사용중이었고, 현재 일(Day)과 출국일(Day) 사이의 일수를 계산하기 위해 Duration 을 사용하였습니다. 이와 같은 상황에서 테스트를 거의 통과하는듯 싶었으나, 출국날짜를 회원가입이 가능한 최소 날짜인 내일로 지정하여 테스트를 하면 계속해서 도메인 제약사항에 걸려 Exception을 발생시켰습니다. 2. 원인 분석원인을 찾기 위해 위와 같이 두 날짜의 일수 ..
BuildTool - Gradle Script 파일과 Gradle 도메인 객체(Task 객체) Gradle Script 파일 Gradle의 스크립트 파일에 대해 알아보도록 하겠습니다. 이번 포스팅은 Gradle 철저 입문이라는 서적을 참고하여 작성되었습니다. Gradle Script 파일gradle 스크립트 파일에 기술된 내용은 실행시 Gradle의 도메인 객체들에게 적절히 위임됩니다. 따라서 작성한 내용이 어떤 도메인 객체에 위임되어 어떻게 실행되는지 파악하면, 스크립트 파일을 쉽게 이해할 수 있습니다. 1. Script 파일 구조Gradle의 Script 파일은 처리문 과 스크립트 블록으로 구성됩니다. 1.1 처리문 xxxxxxxxxxdef message = 'hi'hello()...우선, 처리문의 경우 지역변수, 속성 설정 및 메소드 실행등 일반적인 언어들의 처리문과 같습니다. java의 경..
BuildTool - Groovy란? (Groovy 문법과, 초간단 build.gradle 작성 예제) Gradle의 스크립트 파일 구조 Groovy란JVM에서 실행되는 스크립트 언어문법이 Java와 아주 가깝다Java와 호환이 되며 Java 클래스 파일을 그대로 Groovy 클래스로 사용할 수 있다 1. Gradle 설치https://galid1.tistory.com/467?category=761537gradle은 설치가 되어있다는 가정하에 진행하도록 하겠습니다. 아직 설치가 되어있지 않다면 위의 (Linux - CentOS7를 기준으로 간단한 설치방법을 정리해놓은 링크입니다.) 링크를 참고하여 설치를 해주세요. 2. Groovy 문법 (Gradle Script 작성을 위한)gradle 스크립트는 현재, Groovy 또는 Kotlin으로 작성이 가능합니다만, 저는 우선 Groovy문법으로 작성을 하도록 ..
Spring Boot - Timezone을 설정한 채로 배포하기(-Duser.timezone을 사용하지 않고) Spring Boot에서 Timezone을 설정하여 배포하기 1. Timezone을 설정해야 했던 시나리오Spring Boot를 이용해 서버를 구축하고 있던 중, 특정 도메인이 시간에 종속되는 상황이었습니다. 때문에, Timezone에 의존할 수 밖에없었습니다. 도메인을 간략히 설명드리자면, 사용자가 회원가입을 할때, 오전 10시에서 오후 6시사이에만 가능하도록 해야했습니다. 위의 메소드는 해당 문제상황을 간단하게 재연한 로직입니다. register()는 사용자가 "/test" 엔드포인트로 접근했을때, 회원가입을 시도했다고 가정한 메소드입니다. 먼저 LocalDateTime.now().getHour()를 이용해 현재시간을 저장합니다. 그림에서 보시는바와 같이 현재 시간은 오후 1시 즉, 13시 이므로, ..
BuildTool - Gradle 구성 파일 요약(init.gradle, settings.gradle, build.gradle) gradle의 설정파일들2 gradle의 설정파일들1. init.gradle초기화 스크립트라고 하며, build시에 가장 먼저 실행되는 스크립트 파일입니다. 주로 사용자 정보 및 실행환경 초기화 등에 사용됩니다. 2. settings.gradle빌드 대상 프로젝트를 설정하는 스크립트입니다. 예를 들어 프로젝트 하위에 여러개의 프로젝트가 담겨있는 멀티 프로젝트의 형태인 경우, build의 대상이 되는 프로젝트를 지정하는 스크립트 파일입니다. 3. gradle.properties환경에 따라 값이 달라지는 파라미터들을 스크립트 밖에 기술할 때 사용합니다. 4. build.gradle프로젝트의 의존관계나, 테스크를 정의할때 사용합니다. 일반적으로 gradle 프로젝트에서는 이파일만 있더라도 build가 가능합니다.
BuildTool - Build란? gradle의 설정파일들 build란?1. 일반적인 의미에서의 Build일반적으로 빌드란 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립적인 형태로 변환하는 과정과 그 결과를 말한다고 합니다. 예를들어 간단히 자바프로젝트를 만들어 진행하게 된다면, 그안에는 우리가 작성한 소스코드.java와 여러가지 정적 파일등에 해당하는 resource가 존재합니다. 빌드를 진행한다면, 소스코드를 compile하여 .class로 변환하고, resource를 .class에서 참조할 수 있는 적절한 위치로 옮기고, 추가적으로 META-INF와 MANIFEST.MF 들을 하나로 묶는(압축) 과정을 의미합니다. 컴파일이란? - 컴파일이란 컴퓨터가 이해할 수 있는 언어로 바꾸어주는 과정을 의미한다. 결과물로 목적파일이 생겨난다 ..
ITKnowledge - AsciiDoc 이란? AsciiDoc 이란 AsciiDoc 이란 ?asciidoc은 다음과 같이 정의 됩니다.노트, 기사, 문서, 서적, 웹페이지, 블로그게시물 등의 페이지를 작성하기 위한 완성된 텍스트 작성 형식(규격)HTML,PDF 등을 포함한 다양한 형식으로 AsciiDoc 문서를 번역하기 위한 텍스트 프로세서 AsciiDoc은 경량 마크업 언어에 속합니다. 경량 마크업언어의 대표적인 예로 mark down이 존재합니다. AsciiDoc은 이와 같은 종류 입니다. 즉, 간단한 기호와 태그 등으로 문서 편집을 쉽고 빠르고 아름답게(?) 만들도록 도와주는 경량 마크업 언어입니다.간단한 예문을 살펴보며 공부하는것으로 이번포스팅을 마무리하겠습니다. AsciiDoc 사용법간단한 AsciiDoc 사용법에 대해 알아보도록 하겠습니다..