본문 바로가기

Java22

Map으로 Iterator (반복문) 를 진행할 경우 주의 사항 FindBugs를 사용하기 시작했다.포프님의 유닛테스트 vs 정적테스트 라는 주제의 영상을 보면서 으잉? 정적분석기가 그렇게 좋은거였어? 라는 생각에 부랴부랴 오늘부터 시작하게 되었다.FindBugs에 대해선 다음에 한번 정리를 해보겠다. 어찌됐든 오늘 진행한 상황은 아래와 같다. 배포 예정 중인 프로젝트에 대해 FindBugs를 돌려보았다. 아래와 같은 경고가 등장하였는데 어떤 문제인지 한번 생각해보자. (문제가 있던 코드) 코드 자체는 크게 어려운게 없다.Map으로 들어온 인자값을 keySet()으로 set으로 변환후 for를 돌며 key값으로 Map의 value를 template() 에 넘겨주는 일이다. FindBugs에서는 아래와 같은 경고가 나왔다.(findbugs에서 경고) 경고 메세지를 보면.. 2016. 9. 26.
[Joda-time] 월, 일, 요일, 오전/오후 표현하기 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.. 2016. 7. 26.
Generic 타입 추론시 주의할 점! (super type token 문제) 요즘 박재성(a.k.a자바지기)님의 강의를 들으며 부쩍 TDD를 사용하려고 노력중이다.그래서 회사일을 하면서도 최대한 테스트 코드를 적용중이다.진행 도중 기존 코드에서 인자값으로 받는 API 주소와 리턴타입만 다른 여러 메소드들이 있어 이를 리팩토링 하는 과정에서 테스트 코드를 작성하다가 이상함을 발견하였다. 의도한 바와 다르게 데이터 형변환이 되는 것이다. 회사 코드를 직접 올린순 없어서 대충 비슷하게 코드를 작성해 보았다. 블로그에는 사진으로 코드를 설명하겠다.(자세한 코드는 Github에 올려놓았다.) 아래와 같은 json 데이터가 있다고 가정하자. 위 데이터를 받아서 처리 하기 위해 2개의 POJO를 만들었다. 그리고 이를 시험할 테스트 코드는 아래와 같다. 보다시피 DataResponse이냐 D.. 2016. 7. 20.
[Exception] java.lang.SecurityException: Invalid signature file digest for Manifest main attributes 아주 오래된? 3년전 프로젝트를 git에서 받아 실행하는데 콘솔에 아래와 같은 에러가 나왔다. java.lang.SecurityException: Invalid signature file digest for Manifest main attributes 일반적인 원인은 maven-shade-plugin 으로 over-jar를 생성하는 과정에서 .RSA, .SF, .DSA 이 3가지 확장자 파일들이 병합이 안되는데 있었다. 아마 메이븐 버전이 업데이트 되면서 관련 업데이트가 있었던 것 같다. (3년전에는 이 설정으로 개발, 배포 다 했었으니깐? ) 어찌됐든 해결책은 pom.xml 을 열어 maven-shade-plugin 에 아래와 같은 설정 코드를 추가하면 된다. *:* META-INF/*.SF META-.. 2016. 1. 8.