준호씨의 블로그

코틀린 마이크로서비스 개발 - 오타 등 정리. 정오표는 어디에? 본문

개발이야기

코틀린 마이크로서비스 개발 - 오타 등 정리. 정오표는 어디에?

준호씨 2020. 8. 27. 00:41
반응형

얼마 전부터 온라인 스터디를 통해 스터디하고 있는 책입니다. 책을 보다 보면 좀 이상한 부분들이 보여서 오류 수정 또는 개인적인 생각들을 정리해 보고 있습니다.

도서 오류 신고, 정오표

일부는 에이콘 출판사 홈페이지에 "도서 오류 신고"에 신고하기도 했는데요.

http://www.acornpub.co.kr/book/microservices-kotlin

 

코틀린 마이크로서비스 개발

자바 생태계의 주류 언어로 자리매김한 코틀린 언어를 바탕으로 마이크로서비스와 리액티브에 대해 알아본다.

www.acornpub.co.kr

어떤 신고들을 했는지 이력을 볼 수 없어서 불편합니다.

신고한 내용이 정오표에 추가되었습니다.

몇 개 더 신고했으니 계속 추가될 거 같습니다.

원서 정오표

원서 사이트는 https://www.packtpub.com/web-development/microservices-kotlin 입니다.

https://www.packtpub.com/support/code-downloads에서 원서 제목인 "Hands-On Microservices with Kotlin"를 검색하면 기 등록된 Errata를 확인할 수 있는 거 같은데요. 아직 하나도 등록된 게 없네요. 원서에는 정말 오타나 오류가 없으려나요?

 

아무튼 다음부터는 직접 정리한 오타들입니다. 스터디하면서 확인된 부분들은 계속 추가해 나가려고 합니다.

 

들어가며

p26

도서 정보 페이지인 http://acornpub.co.kr/book/ml-with-kotlin -> 도서 정보 페이지인 http://www.acornpub.co.kr/book/microservices-kotlin

1장

p36

UI 컴포턴트조차도 -> UI 컴포넌트조차도

 

p41

느스한 결합 -> 느슨한 결합

 

p45

모터니텅 -> 모니터링

 

4장

p195

override fun createCustomer(customerMono: Mono<Customer>): Mono<*> {
    return customerMono.subscribe {
        customers[it.id] = it
    }.toMono()
}

이렇게 구현하고 요청을 아래처럼 날리고

$ curl -X POST http://localhost:8080/customers/ -H 'content-type: application/json' -d '{"id": 18, "name": "New Customer", "telephone": {"countryCode": "+44", "telephoneNumber": "7123456789"}}'
{"disposed":false,"scanAvailable":true}

http://localhost:8080/customers를 띄워보면

[
  {
    "id": 1,
    "name": "Kotlin"
  },
  {
    "id": 2,
    "name": "Spring"
  },
  {
    "id": 3,
    "name": "Microservice",
    "telephone": {
      "countryCode": "+44",
      "telephoneNumber": "7123456789"
    }
  }
]

id: 18 이 생성되지 않습니다.

intellij에서는 non-blocking scope에서 부른다고 뭐라고 합니다.

혹시 springboot 버전이 책에서는 2.1.2인데 2.3.1로 사용해서 생기는 문제인가 해서 다시 낮춰보았지만 마찬가지입니다. non-blocking 영역에서 subscribe를 호출하면 로직이 제대로 실행되지 않는 거 같습니다. 관련 설명이 있으면 좋을 거 같습니다.

p198

    override fun createCustomer(customerMono: Mono<Customer>): Mono<*> =
            customerMono.map {
                customers[it.id] = it
//                it
                Mono.empty<Any>()
            }

명시적으로 빈 객체를 리턴하는 부분인데 빈 객체가 리턴되지 않고 scanAvailable이 나타납니다.

$ curl -i -X POST http://localhost:8080/customers/ -H 'content-type: application/json' -d '{"id": 18, "name": "New Customer", "telephone": {"countryCode": "+44", "telephoneNumber": "7123456789"}}'
HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 22
 
{"scanAvailable":true}

빈 객체가 리턴되어야 될 거 같은데 저만 그런 건지 좀 이상하네요.

p199

오타

컴포넌트 스캔에 통해 -> 컴포넌트 스캔을 통해

 

URL 표기 이상

(X) https://kotlinlang.org/docs/reference/typesafe-builders.html

https://kotlinlang.org/docs/reference/type-safe-builders.html

 

다음은 오타는 아니고 개인적인 의견입니다.

RESTful API 작성 시 단수형/복수형이 혼합되어 있음. 개인적으로 복수형을 선호

여기뿐 아니라 수많은 부분에서 단수형을 사용하는 부분이 보입니다. 사실 이 부분은 취향의 문제일 수도 있어서 오류라고는 할 수 없습니다. 다만 여러 RESTful API 가이드에서 복수형을 사용하라고 가이드하고 있고 저도 복수형이 여러모로 편리하다고 생각하고 있어서 책에서 단수형으로 된 부분도 일부러 복수형으로 고쳐서 실습하고 있습니다.

가이드 예

https://restfulapi.net/resource-naming/

 

REST Resource Naming Guide - REST API Tutorial

 

restfulapi.net

 

 

반응형
Comments