본문 바로가기

개발 및 운영/Node.JS7

Node.JS Stream Backpressure 처리에 대해 전에 한번 확인 했던 것 같은데 stream 을 만들어 쓸려니까 또 까먹었다.. 테스트 소스: https://gist.github.com/jclab-joseph/d4258a4f8c2d19c15ccc8dfb27540f16 Readable Stream 에서 push 할 때 그냥 callback 으로 기다리게 하면 좋을려만.. 과정은 이렇다. - this.push 의 return 이 false 이면 내부 버퍼가 다 찬 것이다. (실제 고정 버퍼는 아니고 highWaterMark 사이즈를 넘었다는 것이다. 따라서 다시 push 할 필요는 없다. 버퍼링 된 것이다.) - 버퍼가 비워지면 다시 _read 가 호출된다. 그러면 다시 push 가 가능하다. (this.push 가 false 가 되면, Duplex 또는.. 2022. 9. 15.
잘 되던 TypeOrm 이 RepositoryNotFoundError 을 뱉음 분명히 잘 되던 코드였고... 로컬에서도 잘 동작하는데 CI 에서 빌드해서 올라간 이미지에선 RepositoryNotFoundError 오류를 뱉으며 동작하지 않게 되었다.. 기존 dependencies "typeorm": "^0.2.38", "@nestjs/typeorm": "^8.0.2", 새롭게 dependency 를 다운받아 보니 @nestjs/typeorm 가 8.1.3 으로 올라가 있었는데 peerDependency 로 typeorm 은 ^0.3.0 이었다. 버전이 안맞아 안되었던거 같다. 하지만 이를 수정해도 동작하지 않았다. 오히려 다른 문제가 발생했는데... 아래와 같은 오류였다. ConnectionNotFoundError: Connection "default" was not found... 2022. 6. 15.
멈춘 Promise 디버깅 하기 소스 초반에.. import * as uuids from 'uuid'; const promiseMap: Map = new Map(); const OrigPromise: PromiseConstructor = global.Promise as PromiseConstructor; function arrayArguments(input: IArguments): any[] { const arr = []; for(let i=0; i { const uuid = uuids.v4(); promiseMap.set(uuid, { uuid, stack }); func(function() { promiseMap.delete(uuid); resolve.call(null, ...arrayAr.. 2020. 4. 27.
asn1-stream: Node.JS asn1 stream 파서 https://www.npmjs.com/package/asn1-stream asn1-stream ASN1 parser with a stream interface www.npmjs.com asn1을 stream으로 파싱하는걸 찾았는데 없네요... infinite length 파싱은 구현은 대충 해 놓았지만 동작하지 않을겁니다... ASN1에 대해 잘 아시는 분은 infinite length 을 사용하는 예제 Payload좀 만들어 주세요...ㅠㅠ 아님 구현하셔서 PR주시면 매우감사! 참고로.. 최상위 객체만 next stream으로 출력하기 때문에 최상위 객체속에 여러 객체가 있고 큰 데이터가 있으면 메모리 이슈가 발생할 수 있습니다. asn1으로 대용량 데이터 전송 스키마를 만드신다면 최상위 객체에 데이.. 2020. 1. 21.
wip: node.js C++ Embedding에 대해... node.js를 runtime그대로 사용하지 않고 libnode를 이용해서 C++ Project내에 embedding하여 사용하고 있습니다. 이에 대해서는 제가 만든 node-app 소스를 이용하여 쉽게 접근할 수 있습니다. 일단 일반적인 상황에서는 테스트를 해 보았고 잘 동작하는거 같습니다만... 몇가지 Issue들이 있으며, 최근 Worker를 활용하면서 몇 가지 큰 이슈 상황이 있습니다. (필독) 일단 기본적인 embedding에 대해 * 필수적으로 tracing관련하여 Fix된 commit을 적용해야 합니다. #PR 31217 코멘트를 참고해 주세요. 이 PR을 모티브해서 감사하게도 #PR 31245 을 올려주셨습니다. * NODE_USE_V8_PLATFORM=1 으로 빌드된 경우 문제되는 상황이.. 2020. 1. 12.
javascript Error: UnsupportedEnvironment Error: UnsupportedEnvironment 오류 아마 js-crypto 라이브러리에서 오류가 날 것이다. 이런경우 npm install --save webcrypto-liner 를 설치하면 된다. 2019. 12. 5.
반응형