본문으로 바로가기

[Buffer] 청크, 버퍼, 스트림

category 🌐 Network/🔗 HTTP 2020. 3. 7. 17:49

node.js에서 fs 모듈을 이용하면 종종 buffer를 마주칠 때가 있다.

 

예를 들면, 최근에 진행한 프로젝트에서는 이미지 리사이징을 해야할 일이 생겼는데 이미지나 비디오를 처리하려면 stream과 buffer에 대해서 알고 있어야 했다.

 

딱히 node에만 적용되는 이야기는 아니다. Flutter에서는 Streambuilde를 이용해 stream을 핸들링한다. 

 

 

https://darrengwon.tistory.com/125

 

Node.js가 제공하는 내장 객체, 변수, 모듈

cf) node.js에는 window 전역 객체가 없다. global이 있다. __filename, __dirname console.log(__filename); // 실행 중인 파일의 경로 console.log(__dirname); // 실행 중인 경로 process 객체 console.log(pro..

darrengwon.tistory.com


import fs from "fs";

// 파일 읽기
fs.readFile("./memo.txt", (err, data) => {
  if (err) {
    console.warn(err);
  }
  console.log(data.toString());
});

 

* Buffer 버퍼와 Stream 스트림

fs.readFile에서 data.toString()을 거치지 않고 data만 출력하면 <Buffer 72 65 61 64 20 6d 65 20 62 72 6f 21>와 같이 Buffer가 출력된다.
 
  데이터를 조각(청크, chunk)내어 buffer에 채운 후 다 차면 buffer를 통째로 옮기고 새 buffer에 아직 옮기지 못한 데이터 조각을 다시 채운다. 데이터 조각을 buffer에 채우는 일을 버퍼링(buffering)이라고 부른다. 영상이 버퍼링 중이라며 재생되지 않는 경우를 종종 경험했을텐데 buffer에 데이터를 채울 때까지 기다리는 버퍼링 작업을 말하는 것이다.

  한편 buffer가 다 차면 이를 전송하고 다시 buffer를 채우는 버퍼링 작업을 연속하는 것이 스트림(stream)이다. 단발성 single buffer도 존재하지만 지속적으로 buffer가 나오는 것을 stream buffer라고 한다. 버퍼를 이용해 데이터를 전송하는 '흐름'이 스트림이라고 이해하자.

 

 


darren, dev blog
블로그 이미지 DarrenKwonDev 님의 블로그
VISITOR 오늘 / 전체