javascript(7)
-
[RXJS] Hot Observable vs Cold Observable
개요 Hot 생성자의 경우에는 하나의 생성자에서 여러개의 구독자가 붙을 수 있다. ( anycast ) Cold의 경우 생성자는 구독할 때마다 각각의 타임라인에서 생성된다. ( unicast ) Hot의 경우 구독을 하더라도, 처리가 이루어지지 않을 수 있다. 기본적으로 Observable은 Cold이다. 따라서 Hot으로 변경하기 위해서는 Connectable Observable/Flowable로의 변환이 필요하다. (아니면 쉽게 subject를 통해 구현이 가능하다.) Cold Observable vs Hot Observable 비교 Hot Cold 데이터 배출 구독하지 않아도 계속 배출 구독하지 않으면 배출하지 않음 example 마우스 이벤트, 키보드 이벤트, 시스템 이벤트 웹 요청, 데이터 베이..
2022.07.10 -
Clinic.js를 사용해보자
개요 Clinic.js는 runtime을 분석하여 application의 문제점을 쉽게 찾아낼 수 있게 해주는 module이다. 1. 기존 debugging 1.1. --inspect 또는 --inspect-brk 옵션 사용 1. application 실행 아래의 명령을 통해서 application을 실행해준다. (source map file이 있는 경우 해당 option을 넣어주면 이슈 확인에 편리하다.) node --inspect-brk --enable-source-maps main.js 2. chrome://inspect에 접근해서 inspect를 클릭한다. 3. CPU 또는 memory profile을 이용한다. ( 자세한 사용법은 공식 문서가 더 잘나와 있으므로 참고하는걸 추천한다. ) 2. C..
2021.05.01 -
Nest.js 탐험기 - logging을 winston과 함께 사용해보자.
개요 이번 시간에는 logging을 적용해보려고 한다. winston을 사용해보려고 한다. Setup 우선 logging을 적용하기 위해 다음과 같이 설치해준다. yarn add winston winston-daily-rotate-file; winston Node 진영의 대표적인 로깅 라이브러리이다. 다양한 transport layer를 사용할 수 있고, 또한 custom하게 implementation이 가능하다. winston-daily-rotate-file의 경우에는 logrotate를 설정하기 위해서 사용했다. 코드를 작성해보자! 1. configuration 등록 우선적으로 winston을 먼저 셋팅해두자. import * as winston from 'winston'; import..
2021.02.12 -
Nest.js 탐험기3 (부록) - cache를 커스텀 해보자
1. 개요 Nest.js에서는 유용한 cache module을 제공하고 있다. 하지만 몇 가지 기능상에 제약이 있다. 예를 들어 실제 운영상에서 쓰인다면 다음과 같은 불편함들이 있다. cache manager를 inject해서 사용하는 경우, get, set 등의 기본적인 기능만 사용 가능하다. (물론 store에 접근하면 mGet이나 mSet을 사용할 수 있지만 불편하다..) 미세 옵션 등등을 조정하고 싶지만 할수가 없다. (retry라던가, showFriendlyErrorStack 등등의 ioredis option들을 자세히 확인할 수 없다.) 그래서 추가적으로 해당 부분들을 사용할 수 있게 바꾸어 보려고 한다. 2. 사용할 수 있는 옵션들 우리가 사용할 수 있는 옵션들은 크게 다음과 같을 것이다. ..
2021.01.22 -
Nest.js 탐험기3 - cache를 써보자
1. 개요 우리가 개발을 할 때, 가장 친숙하게 쓰이는 것이 cache module이 아닐까 생각해본다. 이 때, Cache module을 어떻게 nest.js에서 사용할 수 있을지 체크해보자 본 문서는 redis 기준으로 작성하였고, 따로 호환성을 고려하지 않고 작성해서 latest version으로 작성했다고 보면 된다. 2. 실습 환경 2.1. Redis를 docker container 셋팅 이미 docker 환경이 setup되어 있다면 아래와 같은 명령어를 통해 docker container를 띄우자. # run docker run --name redis-test -p 6379:6379 -d redis:alpine # 나중에 container 죽일 때 쓰면 된다. # kill container d..
2021.01.20 -
ECMA 2020 Changes
Features optional-chaining and nullish-coalescing 1. nullish-coalescing evaluation이 null 또는 undifined로 판단이 될 경우에는 fallback value를 설정할 수 있습니다. const person = {}; const name = person.fullName ?? "Anonymous"; //It prints "Hello, Anonymous" console.log(`Hello, ${name}!`); || 연산자와 유사하지만 "falsy" values (i.e. undefined, null, false, 0, 0n and "") 다음과 같은 값에 다 default를 설정하지만 nullish-coalescing은 nullish v..
2020.12.17