Study

· Study/Java
현재 내가 참여 중인 프로젝트에서는 정적 팩토리 생성자를 이용하여 객체를 생성하는 경우가 많은데, 다른 프로젝트의 코드 리뷰를 하면서 보니 그러한 생성자 네이밍에도 뭔가 규칙이나 컨벤션이 있을 것 같았다. 물론 정적 팩토리 생성자의 장점 중 하나가 create, make 등 생성자 이름에 의미를 부여할 수 있다는 것이지만, 나는 흔히들 쓰는 of, from의 차이가 궁금했다. 우연히 개발자 단톡에서 아래와 같은 Java 공식 문서를 공유 받아, 간략하게 정리해보려고 한다. - [Oracle] Method Naming Conventions 어떤 문서냐? 위 문서에서는 Java의 Date-Time API에서 사용 중인 여러 클래스의 다양한 메소드 네이밍 컨벤션을 표로 정리했다. 문서를 해석해보자면, 그러한 ..
· Study/Git
최근 팀 내에서 git rebase를 사용하다가 조그마한 사고가 있었다는 이야기를 듣고, 482번째 rebase에 대해 다시 검색하면서 알아보다가 이대론 안되겠다 싶어 글로 남겨 기억에 남기고자 한다. 아래 링크에 들어가면 볼 수 있는, 아주 아주 아주 이해하기 쉽게 잘 써놓은 블로그를 우연히 만나 거의 번역 수준으로만 작성할 예정 ㅎ; 다시 보니 Edureka라는 온라인 교육 플랫폼에서 운영하는 블로그 같다. 아래 글은 git이 어떻게 동작하는지, commit은 무엇이고 branch는 무엇인지부터 시작하지만, 그 부분은 건너 뛰고 git에서의 merging 이라는 개념부터 번역을 작성하려고 한다. - Git Rebase vs Git Merge: Which is Better? Merging이란? Merg..
· Study/Java
지난 주, 팀에 새롭게 합류하신 계약직 개발자 분의 첫 코드 리뷰를 진행했다. 거기서 @JsonIgnoreProperties(ignoreUnknown=true) 라는 처음 보는 어노테이션을 발견했는데, 어떤 역할을 하는 녀석인지, 꼭 필요한 기능인지 등 팀원들과 논의했던 결과를 기록하고자 한다. @JsonIgnoreProperties(ignoreUnknown=true) ? 친절하게도, 공식 문서에서 어떤 역할을 하는지 쉽게 예를 들어 설명해주고 있다. 읽어보면 이름을 정말 직관적으로 잘 지었다는 생각이 든다. Annotation that can be used to either suppress serialization of properties (during serialization), or ignore p..
· Study/Lombok
객체를 클래스로 정의할 때, 자주 등장하는 녀석이다. 여러 기능들을 포함하고 있는 간편한 기능인데, 사용 시 주의해야 할 사항도 있으니 함께 알아보려고 한다. 아래 글과 블로그를 참고했다. - @Value - Lombok 사용상 주의점(Pitfall) Overview @Value 어노테이션은 @Data 어노테이션의 변형된 녀석인데, 특이한 점은 객체를 불변(Immutable)으로 만들어준다는 점이다. 여기서 불변(Immutable)이란, 객체 생성 후 그 상태를 수정할 수 없는 것을 뜻한다. 그렇기 때문에 객체의 상태를 변경할 수 있는 @Setter는 생성되지 않는다. (@Setter, @Getter는 요즘 Spring 개발자치고 모르는 사람이 없을 정도로 기초적인 어노테이션이기 때문에 이 글에서는 굳이..
· Study/Lombok
Spring과 Lombok을 사용한다면 꼭 알고 있어야 하는 생성자 관련 어노테이션들이다. 아래 Lombok 공식 문서와 블로그를 참고로 글을 작성하였다. - @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor - Lombok 사용상 주의점(Pitfall) Overview @NoArgsConsructor, @RequiredArgsConstructor, @AllArgsConstructor, 이 3형제는 이름에서부터 어떤 역할을 하는 어노테이션들인지 대략 짐작이 간다. 일단 3형제 뒤에 붙은 Constructor라는 단어로부터, 이 3형제는 프로그래머 대신 생성자를 만들어주는 역할을 한다는 것을 유추할 수 있다. 그러니까, 객체 내부에 선언되..
· Study/Java
아래 사이트에 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년전 글이지만 여기도 괜찮다.
· Study/ETC
취준을 하며 많이 본 서비스이지만, 현재 온보딩 기간 중인 이직한 회사에서 실제로 사용 중인 것을 알게 되었다. 그래서 좀 더 확실히 알기 위해 정보를 찾아보다가 늘 좋은 기초 정보를 얻는 위시캣(IT아웃소싱 업체) 블로그에서 좋은 글들을 찾아서 남긴다. '파이어베이스'(Firebase)란 무엇인가? 파이어베이스 심층 탐구 : 상편 '파이어베이스'(Firebase)란 무엇인가? 파이어베이스 심층 탐구 : 중편 '파이어베이스'(Firebase)란 무엇인가? 파이어베이스 심층 탐구 : 하편
대흉근
'Study' 카테고리의 글 목록