불로소득을 향하여

최근, Java 17 + Spring Boot 3.0.2 버전을 사용하는 프로젝트에서 Jackson과 관련된 이슈를 발견했다. 글 작성의 편의를 위해 아래에서는 회원가입 API를 구현해야 하는 상황을 가정한다. Jackson의 동작원리와 Introspection이라는 개념에 대해 알고 있어야 한다. - [Spring] Jackson 라이브러리 이해하기 - [Java] 처음 들어보는 java.beans.Introspector 1. 발단 회원가입에 필요한 정보를 request body로 받기 위해, 아래와 같이 Java 16부터 정식으로 도입된 record 타입으로 생성했다. record SignUpRequest( @NotEmpty String name @NotEmpty String address, @Not..
2022년 12월에 런칭된 서비스 "어랏"을 개발하며 발생한 버그에 대한 경험을 작성한 글이다. 본인인증과 관련된 꽤 중요한 기능의 버그였는데, 런칭 전에 찾아내어 다행이었다. 아래 링크들을 참고하여 작성하였다. - https://kwonnam.pe.kr/wiki/springframework/transaction/transactional_event_listenerspringframework:transaction:transactional_event_listener [권남]kwonnam.pe.kr- https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/transaction/event/TransactionalEv..
· 회고
내가 소속되어 있는 어랏 프로젝트는 매 스프린트 마지막 날마다 다양한 방식으로 회고를 한다. PM님께서 아래 사이트에서 매번 다른 회고 방식을 가져오는데, 그중 무난한 거 하나 골라서 올해 2022년 회고를 해보려고 한다. - https://www.funretrospectives.com/category/retrospective/ FunRetrospectives | Have fun, learn from the past and prepare for the future! Have fun, learn from the past and prepare for the future! www.funretrospectives.com 내가 사용할 방식은 "The Good, the Bad, and the Ugly"인데, 아래 ..
여자 친구님께서 생일 선물로 사주신 헤드셋..!! 생일이 9월달이었지만 쫄라서 두 달 미리 받아서 알차게 사용 중임 ㅋㅋ 재택근무 자유롭게 할 수 있었던 회사 방침이 주 4일 출근 제도로 바뀌어서 시끄러운 사무실에서 귀 막을 것이 필요했다. 에어팟 프로가 있어서 노캔 키면 되긴 하지만, 오래 끼고 있으면 귓구멍이 확실히 아프더라. 그래서 굇수 개발자들은 다들 하나씩은 있는 헤드셋을 알아보며 최종적으로 에어팟 맥스와 소니 신상 xm5 사이에서 고민하다가, 잇섭님 영상을 보고 얘를 선택했다. 마음을 결정한 날 여자 친구가 바로 인터넷에서 30만 원 후반대 정도 가격에 구매했다. 박스를 까면 뾱뾱이로 잘 감싸져서 왔다. 빨리 ㅂ라리 열어야돼 빨릴!!!! MFI 인증도 받았군.. 배터리가 30시간 정도 간다고 ..
· 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..
· 회고
올해 2월, 이직에 성공하고 벌써 4개월이나 흘렀다. 정말 바쁘면서 알차게 시간을 보내고 있는데, 기록을 좀 남겨보고 싶어서 상반기 회고를 써보려고 한다. 2022년 1월 작년 12월 31일에 최종 합격하고 펑펑 놀았다. 인센티브 때문에 바로 그만두지 못해서 이직 텀이 일주일 정도밖에 없긴 했지만, 다행히 재택근무를 할 수 있어서 인수인계만 하고 나머지 시간은 심신의 휴식을 취했다 ㅎㅎ 취준생부터 쭉 써왔던 블로그도 잠깐 쉬어가기로 결정했는데, 이직하고 바쁘고 정신없어서 지금까지도 이전처럼은 글을 주기적으로 작성하지 못하고 있다. 퇴사 과정에서 인사팀이랑 좀 충돌이 있긴 했지만, 뭐, 좋게 좋게 잘 해결했고.. 하여튼 1월은 머리털 나고 이렇게 행복한 적이 있던가 싶을 정도로 놀고 즐겼다. 2022년 2..
· Study/Java
지난 주, 팀에 새롭게 합류하신 계약직 개발자 분의 첫 코드 리뷰를 진행했다. 거기서 @JsonIgnoreProperties(ignoreUnknown=true) 라는 처음 보는 어노테이션을 발견했는데, 어떤 역할을 하는 녀석인지, 꼭 필요한 기능인지 등 팀원들과 논의했던 결과를 기록하고자 한다. @JsonIgnoreProperties(ignoreUnknown=true) ? 친절하게도, 공식 문서에서 어떤 역할을 하는지 쉽게 예를 들어 설명해주고 있다. 읽어보면 이름을 정말 직관적으로 잘 지었다는 생각이 든다. Annotation that can be used to either suppress serialization of properties (during serialization), or ignore 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..
대흉근
'분류 전체보기' 카테고리의 글 목록