현재 내가 참여 중인 프로젝트에서는 정적 팩토리 생성자를 이용하여 객체를 생성하는 경우가 많은데, 다른 프로젝트의 코드 리뷰를 하면서 보니 그러한 생성자 네이밍에도 뭔가 규칙이나 컨벤션이 있을 것 같았다. 물론 정적 팩토리 생성자의 장점 중 하나가 create, make 등 생성자 이름에 의미를 부여할 수 있다는 것이지만, 나는 흔히들 쓰는 of, from의 차이가 궁금했다. 우연히 개발자 단톡에서 아래와 같은 Java 공식 문서를 공유 받아, 간략하게 정리해보려고 한다. - [Oracle] Method Naming Conventions 어떤 문서냐? 위 문서에서는 Java의 Date-Time API에서 사용 중인 여러 클래스의 다양한 메소드 네이밍 컨벤션을 표로 정리했다. 문서를 해석해보자면, 그러한 ..
Study
최근 팀 내에서 git rebase를 사용하다가 조그마한 사고가 있었다는 이야기를 듣고, 482번째 rebase에 대해 다시 검색하면서 알아보다가 이대론 안되겠다 싶어 글로 남겨 기억에 남기고자 한다. 아래 링크에 들어가면 볼 수 있는, 아주 아주 아주 이해하기 쉽게 잘 써놓은 블로그를 우연히 만나 거의 번역 수준으로만 작성할 예정 ㅎ; 다시 보니 Edureka라는 온라인 교육 플랫폼에서 운영하는 블로그 같다. 아래 글은 git이 어떻게 동작하는지, commit은 무엇이고 branch는 무엇인지부터 시작하지만, 그 부분은 건너 뛰고 git에서의 merging 이라는 개념부터 번역을 작성하려고 한다. - Git Rebase vs Git Merge: Which is Better? Merging이란? Merg..
지난 주, 팀에 새롭게 합류하신 계약직 개발자 분의 첫 코드 리뷰를 진행했다.@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..
객체를 클래스로 정의할 때, 자주 등장하는 녀석이다. 여러 기능들을 포함하고 있는 간편한 기능인데, 사용 시 주의해야 할 사항도 있으니 함께 알아보려고 한다. 아래 글과 블로그를 참고했다. - @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형제는 프로그래머 대신 생성자를 만들어주는 역할을 한다는 것을 유추할 수 있다. 그러니까, 객체 내부에 선언되..
아래 사이트에 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
문제는 여기서 볼 수 있다. 문제가 정말 심플하면서 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년전 글이지만 여기도 괜찮다.
취준을 하며 많이 본 서비스이지만, 현재 온보딩 기간 중인 이직한 회사에서 실제로 사용 중인 것을 알게 되었다. 그래서 좀 더 확실히 알기 위해 정보를 찾아보다가 늘 좋은 기초 정보를 얻는 위시캣(IT아웃소싱 업체) 블로그에서 좋은 글들을 찾아서 남긴다. '파이어베이스'(Firebase)란 무엇인가? 파이어베이스 심층 탐구 : 상편 '파이어베이스'(Firebase)란 무엇인가? 파이어베이스 심층 탐구 : 중편 '파이어베이스'(Firebase)란 무엇인가? 파이어베이스 심층 탐구 : 하편