node.js(4)
-
[RxJS] bufferCount 써보기
개요 stream으로 값을 불러오는 경우 여러개의 값을 bulk로 처리하고 싶을 때가 있다. 이 때 bufferCount를 통해서 여러값을 처리하도록 만들어 보자. 예제 test generator를 생성한다. const sleep = async function (ms: number): Promise { return new Promise(resolve => { setTimeout(resolve, ms); }); } const doBackground = async (count: number, subscriber: Subscriber) => { for (let i = 0; i < count; i++) { if (count % 4 == 0) { await sleep(10); }; subscriber.next(i..
2022.05.08 -
[RxJS] Promise.all 대신 mergeMap 써보기
개요 여러 async 함수를 동시에 수행해서 결과를 만들고 싶을 때, Promise.all()을 사용한다. 이 때 Promise.all에서 많은 함수가 동시에 call이 되는 것을 막고 싶을 때가 있다. 이를 편리하게 구현할 수 있게 RxJS에서는 mergeMap을 제공한다. 예제 준비코드 아래와 같이 일정 시간 delay후 종료되는 task함수를 만들자. const sleep = async function (ms: number): Promise { return new Promise(resolve => { setTimeout(resolve, ms); }); } const task = async function (id: string): Promise { console.log(id, new Date()); ..
2022.05.08 -
Sharp.js로 blurhash 이미지 합성하기
개요 sharp.js를 통해서 여러가지 이미지 처리를 할 수 있다. 이 글에서는 blurhash를 뒷배경으로 깔아보자. 준비사항 1. 이미지 준비 아래와 같이 무료 이미지를 준비해둔다. 2. blurhash, sharp 설치 yarn add sharp --save yarn add blurhash --save yarn add @types/sharp --dev 예제 우선 다음 단계로 진행한다. blurhash 값 생성 blurhash image decoding 원본 이미지와 합치기 1. blurhash 값 생성 sharp를 통해서 image를 로드하고, blurhash값을 생성해준다. async test(): Promise { const originalImageFilePath = path.join(__dir..
2022.03.31 -
Node.js - trampoline이란? ( tail call, recursion )
개요 trampoline이라는 기법을 알아보려고 한다. 시나리오 먼저 1 ~ n 까지 더하는 함수를 작성한다고 하자. 테스팅 코드 우선 아래의 코드를 통해서 테스트를 진행할 것이다. const test = (name, n, fn) => { try { console.time(name); fn(n); console.timeEnd(name); } catch (error) { console.error(error); } } // test('counter1', 100, counter); 1. 기본 우리는 바로 다음과 같이 작성할 것이다. const counter1 = (n) => { let sum = 0; for (let i = 1; i { if (n === 0) { return n; } return n + cou..
2022.03.13