'2017/05'에 해당되는 글 3건

  1. 2017.05.02 RFC7807 과 problem+json
  2. 2017.05.02 reactive streams, frp
  3. 2017.05.01 Superseded by Akka HTTP

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


신고

reactive streams, frp

분류없음 2017.05.02 10:48 posted by dev.bistro


쓰고는 있는것 같지만... 제대로 쓰고 있는지 제대로 알고 있는지 항상 아리송한 것들?

정답은 아니고... 그냥 다시 한번 훑어보는 정도

(밑의 내용들이 다 맞는지도 모르겠다, 그리고 보고나서도 새로운걸 많이 본것 보다는 여전히 아리송하다는거 ㅎ)



Reactive Streams

- asynchronous stream processing with non-blocking back pressure 를 위한 표준 스펙

- 2013년 경부터 넷플릭스, 피보탈, 트위터, 타입세이프등이 모여서 논의를 했고 시작은 akka, play 팀이다. (역시!) [2][3]

- 이 구현체로 JDK9, RxJava2, 스프링-리액터 등이 있다.

- RxJava는 이 스펙의 등장으로 인해서 1 -> 2 메이저 버전올라갈때 완전히 재작성 되었다. [4]


리액티브 프로그래밍 Vs 리액티브 시스템, FRP [5]

- 리액티브 시스템은 여러 독립 프로그램이 통합되어 유기적인 결합은 하는 아키텍쳐 스타일

- 리액티브 프로그래밍 : 하나의 어플리케이션에 리액티브 스타일의 프로그래밍을 할 수 있다 (퍼즐의 하나로 표현한다)

- FRP : 최근들어 잘못 사용되는 경우가 많다. 정확한 정의는 [6] , [7]도 참고


[1] https://en.wikipedia.org/wiki/Reactive_Streams#cite_note-16

[2] https://github.com/reactive-streams/reactive-streams-jvm/blob/v1.0.0/README.md#specification

[3] 오라클 문서 JDK9의 리액티브-스트림을 구현하는 표준 Flow API : https://community.oracle.com/docs/DOC-1006738

[4] http://realignist.me/code/2017/01/25/rxjava2-changelog.html

[5] https://www.hanbit.co.kr/network/category/category_view.html?cms_code=CMS6076376207

[6] http://conal.net/papers/icfp97/

[7] http://www.enshahar.me/2014/07/frp.html


zuul/erueka 기반으로 cf 

신고

Superseded by Akka HTTP

language/scala 2017.05.01 20:21 posted by dev.bistro

spary 팀이 akka-http 에 합류하더라도, spary는 계속 진행될 거다 라는 내용은.. 아마 https://github.com/sirthias의 글에서 본 걸로 기억이 난다. 당시만 해도 akka-http가 시작되는 정도였지만  spary는 거의 중단된채 akka쪽에 힘쓰는걸 보니, 말과는 다르게 접히겠구나 생각되었다.  

오늘 갑자기 생각나서 들어가보니  PRdocumentation 와는 다르게 Superseded by Akka HTTP 라는 내용으로 README.md가 대체되었다. 그리고 sparu 1.3.3 과 함께 고민을 하게 하면 akka-http는 experimental 에서 2.5.0 까지 나왔인줄 알았는데 현재 10.0.5 -_-;

akka에서 분리되어 독립 project가 생겼고,버전을 10으로 크게 올렸다.

akka: http://akka.io/docs

akka-http : http://doc.akka.io/docs/akka-http/current/scala.html



신고

'language > scala' 카테고리의 다른 글

SCALA TYPE ERASURE & TYPETAG  (0) 2017.06.30
SCALA UPPER/LOWER TYPE BOUND & VIEW BOUND  (0) 2017.06.28
Superseded by Akka HTTP  (0) 2017.05.01
FP 비엄격성  (1) 2015.05.18
scala package object  (0) 2014.11.05
scala의 lazy 비용  (0) 2014.10.21


티스토리 툴바