개발 일기장
-
20.04.20 ~ 20.04.24 TWIL개발 일기장/TWIL 2020. 4. 26. 23:48
@Builder.Default 애노테이션 기본값을 넣어주고 싶다면 @Builder.Default를 사용하면 된다. // Before @Builder public class BookStore { // 바뀌지 않을 고정값이었기에 final을 선언했었다 private final String name = "조르바의 서점"; private String address; private int bookCount; } // After @Builder public class BookStore { @Builder.Default private String name = "조르바의 서점"; private String address; private int bookCount; } Spring RestTemplate 사용 시 모든 요..
-
20.03.30 ~ 20.04.03 TWIL개발 일기장/TWIL 2020. 4. 4. 16:01
rxJava로 retry 처리 스케줄러가 돌아가면서 외부업체 api를 날리다 실패했을 경우 retry가 필요할 것 같아, retry로직을 작성했다. 처음에 생각한 코드는 다음과 같다. publc class BookingRequestService { private final BookingApiService bookingApiService; public Booking(BookingApiService bookingApiService) { this.bookingApiService = bookingApiService; } private static final String MAX_RETRY = 3; public BookingResponse requestBooking() { int reqeustCount = 1; w..
-
20.03.23 ~ 20.03.27 TWIL개발 일기장/TWIL 2020. 3. 30. 23:50
fixture란? 그렇다면 mock(mock object)는 무엇인가? 테스트 코드를 작성할 때, 실제 DB에 가져오는 데이터나 실제 객체(인스턴스)가 아니라 직접 임의로 만들어주는 걸 다 mock이라고 생각했는데, fixture라는 개념이 있다는걸 알게 됐다. 간단하게 말하면 fixture의 목적은 반복적인 테스트를 하기 위해 잘 알고 있고(well known) 고정된(fixed) 환경 내에서 이뤄지고 있다는 걸 보장하기 위함이다. input 데이터를 세팅하거나, mock 객체의 setup, creation이다. 또는 DB의 구체적인 데이터 셋을 세팅하는 것이다. 이건 따로 포스팅을 하면 좋을 주제일 것 같아서 나중에 포스팅하고 링크를 걸어둬야겠다. 작성한 포스팅으로 추상화 신경쓰기 호출하는 쪽에서는 ..
-
20.03.16 ~ 20.03.20 TWIL개발 일기장/TWIL 2020. 3. 21. 17:48
재택근무 재택근무라고 사무실보다 일을 더 안할거라고 생각하면 정말 오해다. 오히려 쉬는시간에 대한 구분이 없어 일을 더하는 기분. 삽질을 하고 있으면 시간을 허무하게 보낸 거 같은 현타.. 배워야할 기술들 신규 프로젝트 건으로 카프카를 익혀야할 것 같다. 우선순위는 아니다. 코틀린, JPA를 학습하는게 기술적으론 우선순위다. 추가적으로 AWS를 써본적이 없어서 콘솔창을 한참을 뒤져보고 돌아다녔다. 아직까진 터미널로 작업하기보다는 GUI를 제공하는 툴이 있으면 그걸 더 활용하는 편인데, 적절한 균형을 맞춰야 할 것 같다. Unit Test와 Integration Test 사실 Unit Test는 스프링이 없어도 돌아갈 수 있어야한다. 하나의 함수에 대해 내가 지정한 input, 설계한대로의 output을 ..
-
20.03.09 ~ 20.03.14 TWIL개발 일기장/TWIL 2020. 3. 15. 23:52
refrence로 전달되는 리스트를 변형해서 값을 반환할 때는 안전하게 복사해서 사용하자. 코드 리뷰 당시 인자로 전달되는 객체를 사용하는 곳이 없어서 변경하지 않아도 됐지만, 안정적인 코드 개발을 위해 필요한 습관. 인자로 받는 객체를 다른 곳에서도 사용할 수 있는데, 인자로 받은 객체를 변경해버리면 다른 사용하는 곳에서도 변경이 일어나버리기 때문에 side effect를 생각해서 객체를 복사해서 사용하는게 낫다. public Product makeCookieBox(Ingredient ingredient) { return new Product( getCandy(ingredient), getChocolate(ingredient), // 예제 메서드 getSnack(ingredient) ); } // AS..
-
20.03.02 ~ 20.03.07 TWIL개발 일기장/TWIL 2020. 3. 7. 17:02
이번주 코드리뷰, 개발을 통해 배운 것들. 1. 가독성! private static final BASE_URL_PREFIX = "https://zorba91.tistory.com"; // Before String secondContentUrl = BASE_URL_PREFIX+"/2" // After // 문자열을 연결할 때 + 사이에 공백을 주자. String secondContentUrl = BASE_URL_PREFIX + "/2" // Before if(isMatch(args)) { // do something... } // After // if문 딱 붙이지말고, 뒤에 공백을 주자. if (isMatch(args)) { // do something... } 2. 외부 의존성을 띈 테스트는 줄이자. 통..
-
카카오 뉴인턴에서 정규직 전환 실패에 대한 회고개발 일기장/직장 생활 2019. 11. 24. 16:42
정규직 전환 면접에서 떨어졌다. 3개월 동안 뉴인턴으로 카카오에 재직하며 평가기간을 거쳤다. 3개월 전에는 카카오 이직에 대한 후기를 남겼었는데, 3개월이 지난 지금은 실패에 대한 회고를 하고 있다니 씁쓸하다. 실패에 대한 기록 또한 훗날 나에게 도움이 될거라는 생각에 이렇게 기록을 남겨둔다. 프로그래밍을 시작한지 얼마 안되서 너무 빨리 높은 자리에 온게 아닌가 생각이 많이들긴 했었다. 그러나, 세상의 기회는 완벽하게 준비 되었을 때 찾아오는게 아니라는 걸 알기에 찾아온 기회를 어떻게든 내 것으로 만들고자 최선을 다하기로 마음 먹은 것이었다. 9월에 입사하여 곧장 제주로 갔다. 우리 셀이 메인으로 서비스하고 있는 서비스는 '1boon' 이라는 플랫폼이었다. 하루에 방문자 수가 백만 단위로 들어오는 트래픽..