코틀린 1.0 으로 프로젝트를 진행 한 후 1년만에 다시 코틀린을 손에 잡았다.

뒤에 분이 '자바를 하려거든 코틀린'을 하세요~ 라는 노래를 부르고, 메인 프로젝트가 아니고 검증용 간단한 서비스를 필요로 했기에 부담없이 코틀린을 다시 쓰고 있는데....

역시 자바보다는 코틀린 ㅋ (개인적으로는 스칼라 >>>> 코틀린 >>>>>>>> 자바)


fun BufferedWriter.writeAndFlush(str: String) {
    this.write(str).let { newLine() }.let { flush() }
}


자바로 했으면 메소드를 하나 만들고  Streams.writeAndFlush(bw, str) 을 했겠지만 코틀린은 뭐 저렇게 된다는..?

저 개념 자체는 http://docs.scala-lang.org/overviews/core/implicit-classes.html 로 비슷하게? 사용 했지만

https://kotlinlang.org/docs/reference/extensions.html#extensions 'Extension' 라는 단어 자체는 SWIFT에서 먼저 접하고 사용했다. 


그리고 .let 은 정식 명칭이 멀까 찾아보니 못찾겠다 ㅋㅋ

참고 링크 1 : http://beust.com/weblog/2016/01/14/a-close-look-at-kotlins-let/
참고 링크 2: http://kunny.github.io/lecture/kotlin/2016/07/06/kotlin_let_apply_run_with/


신고


Jav로 개발을 할 때 뭔가 작업을 해야할 필요성이 있거나, 개인적인 메모를 남겨야 할 경우

//TODO, //FIXME 형식의 주석을 많이 작성했다.   이렇게 작성을 하면 Intellij 에서 Command+6 키를 이용하여 TODO window로 확인을 할 수 있어서 작업의 편의성이 증가한다.

Command+6


저 부분을 커스텀마이징 할 수 있는 사실을 오늘에서야 알았다 ㅋ (intellij 쓴지 5년차인데 ㅋ)

Command+, (Settings) 메뉴를 열고 Editor->TODO 메뉴에서

* 패턴의 추가 / 색상의 변경 / 필터링 등을 셋팅 할 수 있다. 





신고

RFC7807 과 problem+json

분류없음 2017.05.02 13:28 posted by dev.bistro


https://tools.ietf.org/html/rfc7807


기본적인 HTTP의 응답메시지에 들어있는 데이터로는 기본적인 내용만 파악가능할 뿐, 상세한 내용은 없다. 

관련한 스펙이다. 본문에서도 나와있는 것처럼 고객의 계좌에 충분한 잔고가 없을 경우의 응답은 403 Forbidden Code를 줄수 있을 것이다. 하지만 이것으로는 왜 금지된것인지, 해결방법은 무엇인지는 전적으로 클라이언트 코드에서 알아서 해야한다. 이를 위해 이 7807 스펙을 적용할 수 있을 것이다.


미디어 유형은 application/problem+json 이고, application/json 과 호환이 된다.


java의 구현체로는 링크 를 사용하면 되고, 스프링과의 사용은  problem-spring-web 을 추가하면 된다.


@GetMapping(value = "/{id}", produces =  APPLICATION_JSON_VALUE  )
    public ResponseEntity getProduct(@PathVariable  String id) {
        Account account = accountRepository.get(id);
        if (account == null || !account.enoughBalence() ){
            throw Problem.builder()
                         .withType(URI.create("https://example.org/order-failed"))
                         .withTitle("Order failed")
                         .withStatus(BAD_REQUEST)
                         .withCause(Problem.builder()
                                           .withType(URI.create("about:blank"))
                                           .withTitle("Out of Stock")
                                           .withStatus(BAD_REQUEST)
                                           .build())
                         .build();
        }
        ...
    }


서비스에서는 쓸 일이 없겠지만 stacktrace깢 보고자 할때는  둘 중 하나의 방법으로 셋팅을 하면 된다. https://github.com/zalando/problem-spring-web#stack-traces-and-causal-chains


신고


티스토리 툴바