기억 보단 기록 을 ( 28 Page ) 
 Swagger 로 API 문서 자동 화 하 기 
 일반 적 으로 여러 명 이 서 개발 하 는 웹 서비스 에서 단일 프로젝트 가 DB 에서 데이터 를 가져오 고 , 화면 을 그려 주 고 , 회원 정보 를 저장 하 는 등 모든 것 을 담당 하 진 않 는다 . 아무리 간단 한 구조 라 해도 아래 와 같 은 형태 정도 는 유지 한다 . ( 웹 구조 ) 이런 구조 로 처음 개발 하 거나 혹은 유지 보수 를 진행 중 인 경우 , 해당 API 서버 가 어떤 Spec 을 가진 데이터 를 주 고 받 는지 에 대한 문서 작업 이 꼭 필요 하 다 . 하지만 이런 문서 작업 은 굉장히 시간 이 많이 들 고 , 매번 기능 이 추가 되 거나 변경 될 때 마다 작업 하 기 가 여간 귀찮 은 게 아니 다 . 그러 다 보 니 이런 API Spec 문서 를 자동 화 하 는 것 이 나오 게 되 었 다 . SwaggerSwagger 는 간단 한 설정 으로 프로젝트 에서 지정 한 URL 들 을 HTML 화면 으로 확인 할 수 있 게 해 주 는 프로젝트 이 다 . 백 마디 말 보다 는 . . 
 Spring · 2016 . 08 . 28 22 : 32 
 Freemarker ( 프리 마커 ) 안 전하 게 사용 하 기 
 Freemarker ( 프리 마커 ) 는 현재 Java 진영 에서 가장 대중 적 인 View Template Engine 이 다 . ( 공식 사이트 ) JSTL 이나 Velocity 같 은 경우 업데이트 가 이미 2 ~ 3 년 전 에 정지 된 상태 이 고 , Handlbar . java 나 Thymeleaf 는 아직 까지 널리 퍼지 진 않 아서 많 은 회사 에서 사용 중 이 다 . ( JSP 사용 중 이 라면 . .. 신규 프로젝트 는 Freemarker 로 바꾸 자 아니 면 Handlebar . java 도 괜찮 다 ) 공식 레퍼런스 가 굉장히 잘 되 어 있 고 , 기능 도 좋 아 거의 모든 프로젝트 에서 Freemarker 를 사용 중 인데 실제 서비스 에서 사용 하 려면 몇 가지 안전장치 가 필요 하 여 소개 한다 . ( 문법 이나 소개 글 이 필요 하 다면 여기 를 참고 하 자 ) 모든 코드 는 Github 에서 관리 중 이 니 코드 를 보 면서 읽 으면 더욱 . . 
 Spring · 2016 . 08 . 05 20 : 51 
 IE 7 / 8 에서 Mysq timestamp / datetime 값 으로 Date 생성 하 기 
 Javascript · 2016 . 08 . 03 08 : 34 
 매주 월 / 목요일 저녁 마다 박재성 ( a . k . a 자 바지기 ) 님 의 Java 강의 를 수강 중 이 다 . ( 현재 1 기 인데 다음 2 기 가 시작 되 면 꼭꼭 듣 길 추천 한다 . 참고 ) 매 시간 마다 즐거운 깨달음 의 연속 이 지만 특히 나 어제 ( 2016 년 7 월 29 일 ) 의 경우 그동안 답답 했 던 내용 들 이 속 시원 하 게 해결 이 되 어 기쁜 마음 에 아침 부터 정리 를 하 게 되 었 다 . ( 풀렸 다 ! !) SpringFramework 는 웹 프레임워크 가 아니 다 . Java 기반 의 프레임워크 로서 여러 모듈 로 구성 되 어 있 는데 , 이중 웹 어플리케이션 을 만들 고자 등장 한 게 SpringMVC 모듈 이 다 SpringMVC 를 사용 중 이 라면 자주 만나 는 용어 가 Servlet Container ( 서블릿 컨테이너 ) 와 DI Container ( DI 컨테이너 혹은 Spring Container , IoC . . 
 Spring 으로 개발 을 하 다 보 면 @ Bean 과 @ Component 를 언제 써야할지 헷갈릴 때 가 있 다 . 둘 다 목적 이 명확 하 지 않 은 Bean 을 생성 할 때 사용 하 는 어 노테이션 인데 왜 2 개 로 나누 어 져 있 나 궁금 했었 는데 , 박재성 님 의 강의 를 통해 둘 의 차이 를 알 게 되 었 다 . ( @ Bean ) ( @ Component ) 위 코드 를 보 면 알 수 있 는데 @ Bean 의 경우 개발자 가 컨트롤 이 불 가능 한 외부 라이브러리 들 을 Bean 으로 등록 하 고 싶 은 경우 에 사용 된다 . ( 예 를 들 면 ObjectMapper 의 경우 ObjectMapper Class 에 @ Component 를 선언 할 수 는 없 으니 ObjectMapper 의 인 스턴스 를 생성 하 는 메소드 를 만들 고 해당 메소드 에 @ Bean 을 선언 하 여 Bean 으로 등록 한다 . ) 반 대로 개발자 가 직접 컨트롤 이 가능 한 Clas . . 
 Java 는 1 . 7 까지 Date 가 구리 기 로 소문났 다 . ( 참고 ) 1 . 8 부터 는 많이 개선 되 었 지만 . ... 회사 에서 개발 을 하 다 보 면 1 . 8 에서 개발 할 수 있 는 경우 가 별로 없 다 . 대부분 1 . 6 ~ 1 . 7 일 경우 가 많 은데 ( 리팩토링 은 먹 는 건가요 ? ㅠㅠ ) 그렇 다 보 니 1 . 8 의 개선 된 Date 나 람다 , 스트림 은 회사 에선 꿈 도 못 꾸 고 최대한 그 에 준하 는 서드 파티 라이브러리 들 을 사용 하 면서 만족 해야 한다 . 이번 에 소개 할 내용 은 Java 의 구리 고 도 구린 Date 를 해결 하 기 위해 나온 Joda Time 이 다 . Joda Time 의 상세 한 설명 은 위 네이버 블로그 를 통해 보 면 될 것 같 고 , 여기 선 생각 보다 많이 쓰이 는 특정 일자 의 월 , 일 , 요일 , 오전 / 오후 를 Joda time 으로 출력 하 는 코드 를 작성 하 겠 다 . ( 작성 하 고 보 니 짧 . ...... 다 ㅠ ) Joda t . . 
 요즘 박재성 ( a . k . a 자 바지기 ) 님 의 강의 를 들으며 부쩍 TDD 를 사용 하 려고 노력 중 이 다 . 그래서 회사 일 을 하 면서 도 최대한 테스트 코드 를 적용 중 이 다 . 진행 도중 기존 코드 에서 인자 값 으로 받 는 API 주소 와 리턴 타입 만 다른 여러 메소 드 들 이 있 어 이 를 리팩토링 하 는 과정 에서 테스트 코드 를 작성 하 다가 이상 함 을 발견 하 였 다 . 의도 한 바 와 다르 게 데이터 형 변환 이 되 는 것 이 다 . 회사 코드 를 직접 올린 순 없 어서 대충 비슷 하 게 코드 를 작성 해 보 았 다 . 블로그 에 는 사진 으로 코드 를 설명 하 겠 다 . ( 자세 한 코드 는 Github 에 올려 놓 았 다 . ) 아래 와 같 은 json 데이터 가 있 다고 가정 하 자 . 위 데이터 를 받 아서 처리 하 기 위해 2 개 의 POJO 를 만들 었 다 . 그리고 이 를 시험 할 테스트 코드 는 아래 와 같 다 . 보 다시피 DataResponse 이 냐 D . . 
 현재 담당 하 고 있 는 프로젝트 에 기능 이 추가 되 면서 개인 적 으로 공부 도 할 겸 해서 기록 으로 남기 는 중 이 다 . 기존 프로젝트 에 이미 포함 된 내용 인데 내 가 몰랐 던 부분 을 알 게 되 면서 남긴 거 라 내 가 이 기능 을 사내 프로젝트 에 넣 었 습니다 ! 이런 건 아님 을 먼저 알리 며 . . 아래 내용 의 모든 코드 는 이미 Github 에 올려져 있 다 . 코드 를 다 이미지 로 찍 어서 복 붙 으로 따라 갈순 없 으니 여기 를 참고 하 자 사내 에서 서비스 하 고 있 는 프로젝트 들 은 IE 7 , 8 을 공식 지원 하 고 있 다 . 그래서 요즘 유행 하 는 angular , react 는 서비스 프로젝트 에서 는 쓰 지 못하 고 내부 시스템 에서 만 사용 하 는 중 인데 , js 프레임 워크 들 을 못 쓰 면서 경험 하 는 제일 큰 답답 함 이 클라이언트 템플 릿 문제 이 다 . ( 다른 게 더 답답 할 수 도 있 음 . .) 클라이언트 템플 릿 이 란 용어 에 생소 . . 
 Javascript · 2016 . 06 . 17 17 : 00