보호되어 있는 글입니다.
분류 전체보기
보호되어 있는 글입니다.
(이 글에서는 OSIV/OEMV 모두 OSIV로 지칭합니다)(이 글을 작성할 수 있게 소스를 준 노랑에게 감사합니다) 우연히 노랑이라는 크루를 통해 `@Transactional`을 붙이지 않았는데 더디체킹이 된다는 소리를 들었고 실제로 Query를 보니 update를 하지 않았는데 update가 되었다. 처음 봤는데 신기했다. 동시에 무엇때문에 그러는지 궁금해지기 시작했다. 문제의 코드는 아래와 같다. public void cancelReservationById(final long id) { waitingRepository.findFirstByReservationIdOrderByCreatedAtAsc(id) .ifPresentOrElse( (..
레벨 2 미션을 처음 했을 때, 습관처럼 컨트롤러에서 반환 값을 ResponseEntity로 감싸서 처리했다.예를 들어, 아래와 같은 코드였다.@GetMapping("/users/{id}")public ResponseEntity getUser(@PathVariable Long id) { return ResponseEntity.ok(userService.findUser(id));}사실 이전 프로젝트에서도 큰 고민 없이 이렇게 사용했고, "왜?"라는 질문조차 던지지 않았다.미션을 제출한 후에도 자연스레 의심 없이 지나쳤다. 그러다 우연히 다른 크루의 코드 리뷰를 보며 처음으로 궁금증이 생겼다. 이때부터 생각했다. `ResponseEntity`가 무엇이고 왜 써야 하지? 안 쓰면 어떻게 될까? 🚀..
웹 개발을 공부하다 보면 클라이언트와 서버라는 말을 자주 듣게 된다.간단히 말해 클라이언트는 웹브라우저처럼 서버에 정보를 요청하는 쪽이고, 서버는 이 요청을 받아서 처리한 후 응답을 보내주는 쪽이이다.클라이언트가 서버에게 보내는 메시지를 요청(Request)이라고 하고, 반대로 서버가 클라이언트에게 보내는 메시지를 응답(Response)이라고 부른다.우리가 사용하는 많은 웹사이트는 페이지를 새로 고치지 않고도 데이터를 주고받으며 자연스럽게 동작한다.이런 방식을 바로`비동기 통신`라고 한다.비동기 통신을 하려면 클라이언트는 서버에게 요청을 보낼 때 데이터를 'Body'라는 부분에 담아서 보내야 한다.서버도 클라이언트에게 응답할 때 마찬가지로 'Body'에 데이터를 담아서 보내준다.이렇게 Body에 담아서 ..
평소에 정적 팩터리 메서드에 대해 어느정도 알고 있었지만 뭔가 나만의 기준이 모호하다는 것을 느꼈다. 사용하다보면 뭔가 규칙성이 크게 없다는 느낌을 자주 받았다. 그러다가 아래와 같은 리뷰를 받고 정리하고 넘어가야겠다고 생각했다. 아래 코드에 위에 같은 리뷰를 받았다.public class Deck { private final Queue cards; private Deck(final List cards) { this.cards = new LinkedList(cards); } public static Deck createShuffledDeck(final ShuffleStrategy shuffleStrategy) { final List generated..
이번 블랙잭 미션에서 나는 상속을 사용했다. 왜 상속을 사용했나? 인터페이스이 말을 하기에 앞서 나는 인터페이스로 조합이나 상속을 적용하는 것을 고려하지 않았다. 일단 제일 처음 고민 했던 건 인터페이스다 하지만 요구사항을 보고 바로 철회했다. 내가 생각하는 인터페이스의 장점은 아래와 같다. 아래 코드는 `Driver`가 `K3Car`를 운전하는 코드이다.public class K3Car { public void startEngine() { System.out.println("K3Car.startEngine"); } public void offEngine() { System.out.println("K3Car.offEngine"); } public void pressAccelerator(..
출석 미션을 하다가 페어가 물어봤다."isBlank()과 isEmpty()의 차이가 뭐야?"나는 그냥 단순히 blank는 스페이스 같은 임의의 공백도 다 잡아내고 isEmpty는 아무것도 입력하지 않으면 true라고 했는데 내가 생각해도 너무 대충 알고 있는 것 같아 제대로 공부할 필요성을 느꼈다. 사실 지금까지 대강 알고 해왔다는 것에 반성했다. 자 그럼 이제부터 자세히 알아보자!! 1. isEmpty() 문자열의 길이가 0이면 `ture`를 반환한다.내부적으로 `isEmpty()`는 `String`객체의 텍스트를 나타내는 바이트 배열의 길이에 의존한다. 게다가 `isEmpty()`메서드는 텍스트가 비어 있는지 아닌지를 계산하기 위해 모든 유형의 문자를 계산한다. 따라서 빈 공백, 표, 줄..
우테코에서 출석 미션을 하는데 Comparable을 사용할 일이 많았다. 페어프로그래밍 하면서 페어에게 설명해주고 싶었는데 항상 관성적으로 써오던 인터페이스라 그냥 '객체를 서로 비교할 때 사용하시면 좋습니다'라는 말 밖에 생각나지 않았다. 그렇다. Comaprable에 대해 제대로 공부해본 적이 없었다. 그래서 지금 하고자 한다. 1. Comparable은 무엇인가?Comaprable은 이 객체와 다른 객체를 비교할 수 있다는 것을 의미하는 인터페이스이다. `java.lang.Comparable` 형태로 존재하며, T라는 제네릭 타입을 통해 "어떤 타입을 비교할 건지"를 지정해준다.자바 API 문서를 확인해보면, Comparable은 다음과 같이 정의되어 있다. Comparable 주..
