본문 바로가기

IT218

[node.js] stream api - sample code (1) https://nodejs.org/api/stream.html 정독하고 코드 확인해보는 시간을 가졌습니다. 너무 당연한건 적진 않았습니다.모든 스트림은 EventEmitter 객체입니다. (EventEmitter도 파해쳐 봐야겠어요) Types of Stream - writable - readable - duplex: both writable and readable. ex) net.Socket - transfrom: 데이터를 수정 할 수 있는 duplex streams ex) zlib.createDeflate() Streams Promises APIcallback functions을 이용하는 것이 아니라, Promise를 반환하는 비동기 스트림 함수 const {pipeline} = require('no.. 2024. 5. 3.
node.js, single thread 아닌가요? Activity monitor에서 node 프로세스를 확인해보니 쓰레드가 11개가 있다고 나옵니다.우리가 여태까지 node.js는 single thread로 동작한다고 알고 있었는데요. 확인해보니 11개이네요.이유를 한번 살펴보도록 하겠습니다. 우리가 작성한 코드들은 single thread로 동작한다는건 변함이 없습니다. 다만, node.js 자체를 구동하기 위해서는 single-thread는 아닙니다.  Event loop and Worker threads우리가 작성한 코드는 single thread로 동작하는 반면, node.js는 non-blocking i/o operation을 위해 multi thread를 사용합니다. 이러한 operation은 가능하면 system' kernel에 떠넘기지려고.. 2024. 5. 3.
stream 이해 배경메모리보다 큰 데이터를 처리하기 위해 나온 기술 개념제한된 메모리 공간에서 지속적으로 처리되고 있는 array와 같다.  반쪽짜리 정보stream이 더 빠르다?-> 아니다. 더 느리다. 메모리가 충분하다는 전재로 본다면, 메모리가 훨씬 빠르다. 결코 메모리보다 빠르지 않다. 이유는 stream consumer 쪽에서 데이터를 처리하는 속도가 producer가 보내는 속도보다 느릴 경우 버퍼가 꽉차게 되어 잠깐 뭠춰달라고 요구하기 때문이다. pipeline이 여러개 일 수록 이런 현상은 더욱 많이 발생된다. (버퍼가 꽉찬 상태에서 데이터를 받을 경우 손실된다.) 테스트400mb 정도 큰 파일 생성const fs = require("fs")const file = fs.createWriteStream("... 2024. 5. 3.
package-lock.json 프로젝트를 구성하는 외부 package들이 어떤 의존성을 가지고 있는지 기록해 놓은 파일 같은 버전의 외부 package를 사용하더라도 시간에 따라 내부 의존성이 달라질 수 있다. 이유는 보통 내부 의존성을 호환되는 버전으로 설정되어 있기 때문에 언제 설치하냐에 따라 내부 의존성의 버전이 달라지게 되므로, 정상작동이 안될 수 도 있다. 그렇기에 package 수정사항이 있으면 package-lock.json도 같이 업데이트 되어야 한다. 2024. 5. 3.
npx 개념 pacakge를 조금 더 쉽게 실행-> 기존 방식대로 package를 실행 하려 한다면 2가지 방법이 있었다.프로젝트 내에 /node_modules/.bin에 접근 후 원하는 페키지를 실행npm i -g {package_name} 으로 로컬 전역에서 실행하게끔 조치첫번째 방법은 매번 디렉토리를 이동해야 해서 번거럽고, 두번째 방법은 프로젝트마다 버전이 다를 경우 난감하다. npx 명령어를 이용하면 편리하게 사용할 수 있다. 동작과정packacge root (path)에서 Package 존재 여부 확인있으면 실행없으면 npx가 최신 버전을 npm registry에서 받아서 바로 실행실행 후 전역에 남겨지지 않으며 설치 기록에 남지 않음❯ npm install -D uglify-js❯ which uglify.. 2024. 5. 3.
[JS] prototype 코딩애플 - 이거보고 prototype 이해 못하면 강의접음 영상을 보고 요점만 정리한 글입니다.  개념부모로 받은 유전자라고 생각하는 것이 편하다.내가 직접 선언하지 않았지만, 부모로 부터 물려받아 사용이 가능하다. 코드객체를 생성하여 prop을 확인해보니 mouse와 eye는 존재하지만 handsome은 존재하지 않는다.하지만 handsome을 선언하면 유전자(prototype)를 검사하여 존재 여부를 판단한다.function human() { this.mouse= 1, this.eye = 2}human.prototype.handsome = '50%'const a = new human()console.log(a) // human: { "mouse": 1, "eye": 2 } console... 2024. 4. 30.