지난 주, 팀에 새롭게 합류하신 계약직 개발자 분의 첫 코드 리뷰를 진행했다.@JsonIgnoreProperties(ignoreUnknown=true) 라는 처음 보는 어노테이션을 발견했는데,어떤 역할을 하는 녀석인지, 꼭 필요한 기능인지 등 팀원들과 논의했던 결과를 기록한다. @JsonIgnoreProperties(ignoreUnknown=true) ?공식 문서에서 어떤 역할을 하는지 쉽게 예를 들어 설명해주고 있다.읽어보면 이름을 정말 직관적으로 잘 지었다는 생각이 든다.Annotation that can be used to either suppress serialization of properties (during serialization), or ignore processing of JSON p..
불로소득을 향하여
public enum UserStatus { NORMAL, DORMANT, SUSPENDED } 위와 같은 enum 클래스가 있다고 가정하자. UserStatus status = ...; switch(status) { case UserStatus.NORMAL: .... break; case UserStatus.SUSPENDED: .... break; } 위처럼 switch 문을 사용하면 "An enum switch case label must be the unqualified name of an enumeration constant" 라는 에러가 발생한다. 아래처럼 바꿔주면 에러는 사라진다. UserStatus status = ...; switch(status) { case NORMAL: .... bre..
객체를 클래스로 정의할 때, 자주 등장하는 녀석이다. 여러 기능들을 포함하고 있는 간편한 기능인데, 사용 시 주의해야 할 사항도 있으니 함께 알아보려고 한다. 아래 글과 블로그를 참고했다. - @Value - Lombok 사용상 주의점(Pitfall) Overview @Value 어노테이션은 @Data 어노테이션의 변형된 녀석인데, 특이한 점은 객체를 불변(Immutable)으로 만들어준다는 점이다. 여기서 불변(Immutable)이란, 객체 생성 후 그 상태를 수정할 수 없는 것을 뜻한다. 그렇기 때문에 객체의 상태를 변경할 수 있는 @Setter는 생성되지 않는다. (@Setter, @Getter는 요즘 Spring 개발자치고 모르는 사람이 없을 정도로 기초적인 어노테이션이기 때문에 이 글에서는 굳이..
Spring과 Lombok을 사용한다면 꼭 알고 있어야 하는 생성자 관련 어노테이션들이다. 아래 Lombok 공식 문서와 블로그를 참고로 글을 작성하였다. - @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor - Lombok 사용상 주의점(Pitfall) Overview @NoArgsConsructor, @RequiredArgsConstructor, @AllArgsConstructor, 이 3형제는 이름에서부터 어떤 역할을 하는 어노테이션들인지 대략 짐작이 간다. 일단 3형제 뒤에 붙은 Constructor라는 단어로부터, 이 3형제는 프로그래머 대신 생성자를 만들어주는 역할을 한다는 것을 유추할 수 있다. 그러니까, 객체 내부에 선언되..
MultiPartFile 타입으로 파일 업로드 테스트를 하던 중 아래와 같은 에러가 발생했다. The field file exceeds its maximum permitted size of 1048576 bytes 아래 Stack Overflow에서 해결 방법을 찾았음. https://stackoverflow.com/a/48428279 How to set the max size of upload file I'm developing application based on Spring Boot and AngularJS using JHipster. My question is how to set max size of uploading files? If I'm trying to upload to big file I..
아래 사이트에 removeIf를 사용하는 다양한 방법이 소개되어있다. https://www.tabnine.com/code/java/methods/java.util.ArrayList/removeIf java.util.ArrayList.removeIf java code examples | Tabnine public boolean revokeApprovalsForUser(String userId, final String zoneId) { return store.removeIf(approval -> userId.equals(approval.getUserId())); www.tabnine.com
사무실에서 Dell U2520D(가로) + P2422H(세로) 조합을 쓰고 있는데 굉장히 만족스러워서 집에도 듀얼 모니터 환경을 구성하고자 세로로 돌려 피벗 모니터를 열심히 서칭했다. 집에 있는 메인 모니터는 U2720q로 4K 모니터이기 때문에 조건은 아래와 같았다. 24인치 세로로 돌렸을 때 가장 알맞은 크기였다 팀원 중 한분은 27인치를 세로로 돌려서 쓰고 계신데 어~~~엄청엄청 큼; IPS 패널 + QHD IPS는 뭐 다들 선호하는 패널이니 부가 설명은 x 사무실에서 쓰는 U2520D는 QHD, P2422H는 FHD인데 메인 모니터 보다가 서브 모니터 보면 역체감이 엄청 심했다;; 과장 좀 더해서 눈 썩는 기분? 심지어 집 메인 모니터는 4K이기 때문에 QHD를 사기로 결정했다. Dell 제품 처..
문제는 여기서 볼 수 있다. 문제가 정말 심플하면서 Dynamic Programming(이하 DP) 방식의 기초 활용법을 느낄 수 있는 문제라 생각하여 포스팅한다. 분석 문제는 아주 간단하다. n개의 계단이 있는 꼭대기까지 도달 가능한 경우의 수를 구하는 문제다. 대신 한 번에 1개 혹은 2개의 계단을 올라갈 수 있다. 처음부터 경우의 수를 따져보면 쉽게 패턴을 발견할 수 있다. (1)은 1개의 계단을 올라가는 기호, (2)는 2개의 계단을 올라가는 기호로 사용하겠다. if n == 1: 경우의 수는 아래 딱 한 가지뿐이다. - (1) if n == 2: 경우의 수는 아래 두 가지이다. - (1) (1) - (2) if n == 3: 경우의 수는 아래 세 가지이다. - (1) (1) (1) - (1) (..
Git, SVN 등을 통해 소스코드 형상 관리를 하는 것처럼 DB도 형상관리가 가능하다. 그러한 tool 중 많이 쓰이는 것이 바로 Flyway이다. Flyway 공식 홈페이지에서 Documentation을 봐도 좋고, 간단하게 개념을 잡으려면 비록 6년전 글이지만 여기도 괜찮다.