콘텐츠로 건너뛰기

Programmer

json에서는 comment(주석)이 허용되지 않음

intellij를 사용하고 있는데, TODO와 FIXME를 이용해서 작업 진행에 대해서 잘 체크해보려고 시도해 보았다. 그런데 그동안 전혀 생각하지도 않았던 문제에 봉착했다. 사용하는 파일중에 json이 있었던 것이다. intellij에서 TODO나 FIXME (혹은 또다른 커스텀 코멘트)는 주석라인에서만 동작한다. 그런데 json 파일에 //  (코멘트)를 추가했더니… 더 보기 »json에서는 comment(주석)이 허용되지 않음

JPA에서 count()는 Long Type을 return 함

통계에서 사용하는 쿼리를 만들다보니, (약간은) 부득이 하게 JPA Query Method를 사용하지 않고 @Query annotation을 이용해서 아래처럼 구현하였다.

호출하는 쪽의 로직은 아래와 같다.

자세한 로직은 회사 업무상 대외비이기 때문에 약간 이상한 네이밍인 점은 신경쓰지 않기로 하자. 어쨌거나 위의 로직을… 더 보기 »JPA에서 count()는 Long Type을 return 함

맥에서 MS Windows 가상머신 무료로 사용하기

공공기관이나 금융기관을 사용하게 되면, 윈도우 머신이 아니라서 불편한 게 이만저만이 아니다. (especially, at January, aka, 연말정산) 그런데 요즘에는 회사에서도 맥 라이센스만 지원하는 경우가 많아서 윈도우 정품을 구하기가 어렵다. 그런데 의외로 합법적이면서 무료로 맥에서 윈도우를 사용할 수 있는 방법이 있었다. https://developer.microsoft.com/en-us/microsoft-edge/tools/vms… 더 보기 »맥에서 MS Windows 가상머신 무료로 사용하기

Mac HighSierra에서 default `(back-quote) 사용하기

아마도 sierra(?) 이후부터 `(back-quote, 일명 역따옴표) 키를 누르면 원화(₩)로 표시된다. (아마 일본어 버전에서는 엔화가 표시되겠지…) 그런데 마크다운을 많이 쓰는 개발자의 입장에서는 여간 불편하지 않다. 그래서 `(back-quote)를 default로 사용할 수 있도록 설정을 변경하였다.

해당 옵션은 애플리케이션이 reload 될 때 적용된다.… 더 보기 »Mac HighSierra에서 default `(back-quote) 사용하기

JUnit5 @Nested, @DisplayName 활용

시작 JUnit5에서 개인적으로 가장 많이 활용하고 있는 기능은 @Nested 이다. 예전 포스트라서 약간 view가 깨지는 부분도 있지만 이런 테스트케이스는 어떨까?(또는 옛날사이트)에서도 많이 고민했던 부분을 JUnit5에서 공식적으로 해결해주었다.   소스 코드 간단한 분기문이 있는 코드를 만들어본다. 실제 서비스에서는 훨씬 복잡한 코드가… 더 보기 »JUnit5 @Nested, @DisplayName 활용

Swagger에서 httpMethod multiple-value를 지원하지 않음

아무런 문제가 없어보이는 코드에서 오류가 발생했다.

분명 HttpMethod는 multi value를 지원하는 값이다.

나중에야 사용하고 있는 swagger에서 multi value를 지원하지 않는 것을 알게 되어 기록을 남겨둔다.

you can currently only have one HTTP verb per op. https://github.com/swagger-api/swagger-ui/issues/183

Base64 encode 와 encodeUrlSafe 차이

Base64 인코딩을 사용하고 있는데, java.lang.IllegalArgumentException: Illegal base64 character 2b 오류가 발생하여 디버깅하다가 알게된 내용을 정리한다. 컴퓨터 분야에서 쓰이는 Base 64 (베이스 육십사)란 8비트 이진 데이터(예를 들어 실행 파일이나, ZIP 파일 등)를 문자 코드에 영향을 받지 않는 공통 ASCII 영역의 문자들로만 이루어진 일련의 문자열로 바꾸는 인코딩… 더 보기 »Base64 encode 와 encodeUrlSafe 차이

Guava Joiner/splitter 활용

나는 variable type을 정확하게 하는 편을 좋아하는데, 외부API를 연동하게 되면 어쩔 수 없이 텍스트를 다루어야 할 때 생긴다. 그럴 때마다 Guava 유틸 클래스들을 자주 이용하는 편인데, 특히 Joiner는 오래 전부터 사용하고 있었다. 그러다가 최근에 아래 로직을 refactoring하려다보니 Joiner의 반대 기능이… 더 보기 »Guava Joiner/splitter 활용

Lombok @ExtensionMethod 오류

Lombok에서 getter/setter/constructor/log 등을 만들어주는 기능을 아주 잘 사용하고 있다. 이제는 lombok이 없으면 개발을 하기 힘들 지경. 새로운 회사에 와서 가장 먼저 pom.xml에 추가하자고 주장했던 것 중에 하나도 lombok이었다. 최근에는 Lombok Experimental도 관심을 많이 가지고 @UtilityClass와 같은 걸 잘 사용하고 있다.… 더 보기 »Lombok @ExtensionMethod 오류

PowerMock 예제

예전에 PowerMock사용법(final class의 테스트)라는 제목으로 블로깅을 한 적 있다. 그게 2011년 7월이니까 근 6년 가까이 PowerMock을 사용할 일이 생기지 않았다. 단순히 SpringRunner나 Mockito만으로도 충분한 테스트를 만들 수 있었다. 그런데 최근에 작업중인 프로젝트에서 시간에 의존하는 테스트가 존재했다. 그래서 평소에는 Ignore시키고 있다가… 더 보기 »PowerMock 예제