CodeSoom / ddomal

실어증 환우 분들을 위한 말연습 어플리케이션입니다
https://www.ddomal.com
10 stars 2 forks source link

2 주차 작업일지 #47

Closed gringrape closed 3 years ago

gringrape commented 3 years ago

201123

목표

gringrape commented 3 years ago

201124

목표

gringrape commented 3 years ago

201125

목표

RxJS 에서는 Observable 이라는 구조를 제안한다. image See also https://rxjs-dev.firebaseapp.com/guide/observable

이 구조가 이 상황에서 유용한 이유는

첫번째로 생산자 중심(Push)이라는 점이다. Promise 의 경우처럼 생산자(함수)는 단순히 호출되는 것이 아니라 소비자의 동작을 어떤 시점에서 해줄지 컨트롤 해줄 수 있게된다.

두번째로 스트림을 통한 일관된 자료 소비방법(프로토콜)을 갖고 있다. 자료가 어떤 것이든 스트림을 통해 소비할 수 있기 때문에, 지금 경우처럼 '~ 할 때 마다' (개념적으로 무한 스트림???) 를 처리하는데 굉장히 유용하다. 복수형의 비동기 처리에 있어서 Promise 가 잘못하는것 (내가 아는한....) 을 굉장히 잘 매우고 있다고 생각된다.

세번째로 테스트가 쉬워진다. '~ 할 때마다' 를 Promise 에서 보면 개념적으로 복잡하지만, Observable 관점에서 보면 스트림이라는 말로 단순하게 정리가 된다. 따라서 테스트를 위해 모킹할때는 단순하게 스트림 구조만 사용해주면 된다.

gringrape commented 3 years ago

201126

목표

내가 작성한 코드의 개념정리

모킹이 필요한 부분

참고 자료

테스트의 의의

마이크의 볼륨에 따라서 Volume meter 와 같은 애니메이션 만드는 원리

https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API/Visualizations_with_Web_Audio_API

인수테스트

gringrape commented 3 years ago

201127

할 일

피드백

알게 된 것

클래스 모킹 방법

gringrape commented 3 years ago

201128

목표

redux-saga 를 지금 학습해서 적용할 이유가 있을까?

있다. 이전에는 아니라고 답했겠지만, 지금은 아니다. RxJs 를 적용하면서 개념적으로 어려운것은 별로 중요한 문제가 아니라는것을 알았다. RxJs 를 알기전에는 하루 종일 고민해도 어떻게 테스트하면 좋고 구현하면 좋을지 잘모르겠던 문제가 알고나서는 10분만에 답이 나왔다. 실질적으로 테스트하기 쉬운 개념과 구조는 개발상에 있어서 비즈니스 로직이외에 발생하는 소모적인 고민을 확줄여주기 때문에 좋은것 같다.

물론, 학습 비용은 있다. 하지만 이후에 발생할 고민들을 생각하면 지금 훌륭한 도구가 있다는 것에 감사하고 적극적으로 배우는것이 좋겠다. 게다가 현재는 비동기 액션 처리부분이 많지 않고 매우 단순하기 때문에 적용하기도 쉬울 것이다. dispatch 를 너무 많이 보는 것이 힘들어지기도 했다. 결론은 지금 적용가능한 정도로 배운다.

redux-saga

saga 는 무엇?

https://docs.microsoft.com/en-us/previous-versions/msp-n-p/jj591569(v=pandp.10)?redirectedfrom=MSDN 위의 문서는 Process Manager 라는 개념을 사용하고 있다. Process Manager 는 여러개의 Aggregate 가 존재할때, 각 모듈의 작업을 중앙에서 조율하는 역할을 한다. Aggregate 들이 소통하는 방식은 크게 명령과 이벤트다. (이 명쾌한 분류가 굉장히 재미있다) 좌석모듈에게 '좌석을 예약해라' 하는 것은 명령이고, 그 결과로 좌석이 예약되었음을 알려주는 것이 이벤트다.

이벤트로 소통하는 대표적인 방식이 콜백, Promise, Observable 인 것 같다. 특히 Promise 와 Observable 이 재미있는데, 마치 커피를 기다릴때 나오는 진동벨같이 띵똥하고 울리면 해야할 일을 하면 되어서 재미있다.

프로세스 매니저 구조를 사용하면, 각 모듈은 작업순서를 알필요가 없어진다! 중앙에서 명령하기 때문에 각 모듈의 로직은 심플해지고, 명령을 받고 이벤트 토큰을 발행하거나 이벤트가 일어나면 뭔가를 하는 심플한 존재가 되어버린다.