본문 바로가기

분류 전체보기

java 날짜 관련 Date,Calendar,SimpleDateFormat 문제점 오늘도 어김없이 java와 관련된 이야기를 포스팅 하려한다. 요 근래 자주 java와 관련있는 포스팅만 하는 것 같다. 다른 것들도 해야 되는데.. 아무튼 오늘은 java의 날짜와 관련된 포스팅을 한다.java의 날짜 관련API(Date, Calendar 기타 등) 설계부터가 잘못 되었고 구현조차 잘못된 클래스로 java의 가장 악명 높은 대표적인 클래스이다. 기존의 날짜 관련 API들은 문서없이 사용하기 쉽지 않고 일관성도 없는데다 알 수 없는 상수들을 남발한다. 한개씩 살펴보자.이상한 월 상수@Test public void constantTest() { Calendar calendar = Calendar.getInstance(); calendar.set(2017, 6, 18); SimpleDateFo..
(Jackson) LocalDate, LocalTime, LocalDateTime - Serialize 잭슨은 JSON -> Java 클래스로 Deserialize, Java 클래스 -> JSON으로 Serialize 할 때 매우 유용한 라이브러리다.하지만 잭슨이 나온 이후에 자바 8이 나왔는지 모르겠는데 LocalDate, LocalTime, LocalDateTime 등등의 클래스를 기본적으로 깔끔하게 처리해주지 못한다. 따라서 이번에는 어렵지는 않지만 새로 프로젝트 구성할 때마다 매번 까먹어서 찾아 헤매던 케이스들을 정리해봤다. 또한 예제의 설명은 스프링 부트를 기준으로 설명하겠다.우선 Deserialize를 안 본 사람은 해당 내용에서 이어지는 포스트이기 때문에 보고 오도록 하자.3줄 요약Serialize 한 형태가 요상하니 jackson-datatype-jsr310을 Dependency에 추가해두자..
(Jackson) LocalDate, LocalTime, LocalDateTime - Deserialize 잭슨은 JSON -> Java 클래스로 Deserialize, Java 클래스 -> JSON으로 Serialize 할 때 매우 유용한 라이브러리다.하지만 잭슨이 나온 이후에 자바 8이 나왔는지 모르겠는데 LocalDate, LocalTime, LocalDateTime 등등의 클래스를 기본적으로 깔끔하게 처리해주지 못한다. 따라서 이번에는 어렵지는 않지만 새로 프로젝트 구성할 때마다 매번 까먹어서 찾아 헤매던 케이스들을 정리해봤다. 또한 예제의 설명은 스프링 부트를 기준으로 설명하겠다.이 글을 본 다음에는 후속작인 Serialize를 보도록 하자.3줄 요약모든 필드마다 @JsonFormat 어노테이션 달아주기 귀찮으니 LocalDate, LocalTime, LocalDateTime 등등에 대한 기본 Cus..
JAVA8 util.time Java 1.8 날짜 정리자바 1.8 이전에는 날짜 연산이 쉽지 않았다. Joda 같은 라이브러리들을 쓰면 된다고 하는데, 필자는 Util 클래스에서 내부적으로 Calendar를 사용하여 연산하고 Date/long/String 간의 변환을 통하여 사용해왔다. 그러던 와중에 자바 1.8의 새로운 날짜들을 보니 신세계가 열렸다. 그래서 간단하게 소개하고 자주 사용될 만한 예제들도 나열하려 한다.먼저 중요하다고 생각되는 클래스들을 소개하겠다.클래스날짜 (Temporal)Instant : machine time에 유용한 1970년 1월 1일부터 시간을 세는 클래스 (millisecond 뿐만 아니라 nanosecond까지 센다)LocalDate : [년,월,일]과 같은 날짜만 표현하는 클래스 (시간은 포함하지 ..
[Mysql]sysdate , now 차이 SYSDATE() 와 NOW()의 차이점 MySQL 내부적으로 현재 날짜 및 시간 정보를 리턴해주는 Built-in함수로 SYSDATE()와 NOW() 2개가 있는데, 내부적으로 SYSDATE()와 NOW()의 작동 방식은 쿼리의 실행 계획에 상당한 영향을 미칠 정도로 크다. 메뉴얼의 내용을 다시 한번 확인해보자. -- // -- MySQL 메뉴얼 -------------------------------------------------------------------- SYSDATE() returns the time at which it executes. This differs from the behavior for NOW(), which returns a constant time that indicat..
[개발환경] 배포 서버 개발을 가정하고, 먼저, 개발 및 운영에 사용할 서버를 어떻게 배치 해야할지를 살펴보자일반적인 서버 개발환겨은 아래와 같이 local,dev,integration,qa,staging 그리고 production 환경을로 나뉘어 진다. 각자의 개발 과정에 따라, 각자의 역할과 목적이 다르고, 그에 따라서 시스템의 크기도 다르다. 꼭 모든 환경을 갖출 필요가 없으며, 프로젝트 환경에 따라서 각 환경을 합치거나 생략해도 된다.그러면 각 환경에 대해서 살펴 보도록 하자.환경설명local로컬 개발 환경먼저 개발을 하려면, 각자 개발자 PC에 개발 및 테스트 환경이 셋업 되어 있어야 한다. 각 개발자마다, 설치된 서버 환경을 local 환경이라고 한다. (예. 각 PC에 MySQL등의 DB와Tomcat등의 제품..
SubVersion(SVN)과 이클립스(Eclipse)를 연동 앞서 VisualSVN Server와TortoiseSVN을 설치했다면이제 IDE(통합 개발 환경)에서SVN과의 연동을 해보자! [Help] → [Eclipse Marketplace] 클릭! cf. 참고자료Subversive? Subclipse?SVN Connector Error 시 대처 방법 SVN Connector 수동 설치 방법 [Find] 부분에 svn을 검색 후Subversive의 Install 클릭! Confirm 클릭 설치하다 이런 창이 뜨면 그냥 기(Yes) 한다 라이센스에 동의한 뒤Finish! Preferences에 들어가서 [Team] 탭을 열어SVN이 있는 지 확인한다 만약 존재한다면 SVN Connector 탭을 누르면아무것도 연결되어 있지 않다 이곳에 Kit을 등록해줘야 하는데Ge..
IaaS, PaaS, SaaS란 - IaaS(Infrastructure as a Service)> : 서버를 운영하기 위해서는 서버 자원, IP, Network, Storage, 전력 등등 인프라를 구축하기 위해 여러가지가 필요합니다. Iaas는 이러한 것들을 가상의 환경에서 쉽고 편하게 이용할 수 있게 서비스 형태로 제공합니다. Iass를 서비스로 제공하기 위해 기존 서버 호스팅보다 H/W 확장성이 좋고 탄력적이며 빠른 제공을 할 수 있는 가상화 기술을 이용합니다. Iass는 Pass, Saas의 기반이 되는 기술입니다. - PasS(Platform as a Service) : 서비스를 개발 할 수 있는 안정적인 환경(Platform)과 그 환경을 이용하는 응용 프로그램을 개발 할 수 있는 API까지 제공하는 형태를 Paas라고 합니..