본문 바로가기

Programming

(467)
4. Node 기능 살펴보기 (8) - fs메서드 살펴보기 1 앞선 아티클에서 파일을 읽고 쓰는 메서드를 살펴보았습니다.  const fs = require('fs').promises;const constants = require('fs').constants;fs.access('./folder', constants.F_OK | constants.W_OK | constants.R_OK) .then( () => { return Promise.reject('이미 폴더가 존재함'); }) .catch( (err) => { if (err.code === 'ENOENT') { console.log('폴더가 없음'); return fs.mkdir('./folder'); } ..
4. Node 기능 살펴보기 (7) - 버퍼와 스트림 6 지금까지 크게 버퍼를 사용하는 방식과 스트림을 사용하는 방식을 살펴보았습니다. 이제, 이 두 방식을 통해 동일한 작업을 처리할 경우 어떤 차이가 있는지를 살펴보겠습니다. readFile과 createReadStream 메서드를 이용해서 1GB 수준의 크기의 파일을 만들때 시간 차이가 얼마나 발생할지 확인해보죠. 우선 createWriteStream( )을 이용해서 대용량 파일을 생성해 보겠습니다. 생각보다 시간이 꽤 걸립니다. const fs = require('fs');const file = fs.createWriteStream('./big.txt');for (let i = 0; i  일단, 이렇게 만들어진 [big.txt]는 무려 270MB 수준입니다.       ○ 버퍼로 복사하기(readFile)..
4. Node 기능 살펴보기 (7) - 버퍼와 스트림 5 앞선 아티클에서 readStream과 writeStream을 pipe를 사용해서 연결하는 방법까지 함께 살펴보았습니다.    4. Node 기능 살펴보기 (7) - 버퍼와 스트림 4앞선 아티클에서 우리는 읽기 스트림에 대해서 살펴보았습니다. 그렇다면, 이번에는 반대로 쓰는 기능도 있겠죠? wrtieStream에 대해서 살펴보고 예제를 작성해 보겠습니다.   const fs = require('fs');nozeroslope.tistory.com  이번 아티클에서는 이 pipe를 응용하여 좀 더 다양한 기능을 구현해 보겠습니다. 일단 pipe는 스트림 사이에 여러 번 연결이 가능합니다. 이 뜻이 예시가 없으면 잘 이해가 안 가실 텐데, 예제를 위해 zlib 모듈을 사용해 보겠습니다.  zlip은 노드에서 파..
4. Node 기능 살펴보기 (7) - 버퍼와 스트림 4 앞선 아티클에서 우리는 읽기 스트림에 대해서 살펴보았습니다. 그렇다면, 이번에는 반대로 쓰는 기능도 있겠죠? wrtieStream에 대해서 살펴보고 예제를 작성해 보겠습니다.   const fs = require('fs');const writeStream = fs.createWriteStream('./writeme2.txt');writeStream.on('finish', () => { console.log('파일 쓰기 작업 완료!');});writeStream.write('글을 작성한다.');writeStream.write('글을 다시 한번 작성한다.');writeStream.end();/* 출력파일 쓰기 작업 완료!*/   위의 실행 결과를 살펴보면, 우선 콘솔 창에서는 "파일 쓰기 작업 완료!"..
4. Node 기능 살펴보기 (7) - 버퍼와 스트림 3 앞선 아티클에서 버퍼에 대해서 살펴보고, 버퍼의 취약점과 이를 보강하기 위한 스트림 개념을 살펴보았습니다.    4. Node 기능 살펴보기 (7) - 버퍼와 스트림 2앞선 아티클에서 Buffer 클래스를 사용한 예제를 확인했습니다. 이제 Buffer 클래스의 사용법을 조금 더 자세히 살펴보도록 하겠습니다.  const buffer = Buffer.from('버퍼로 변환할 문자열입니다.');consolnozeroslope.tistory.com  const fs = require('fs');const readStream = fs.createReadStream('./readme3.txt', { highWaterMark: 16});const data = [];readStream.on('data', (chunk..
4. Node 기능 살펴보기 (7) - 버퍼와 스트림 2 앞선 아티클에서 Buffer 클래스를 사용한 예제를 확인했습니다. 이제 Buffer 클래스의 사용법을 조금 더 자세히 살펴보도록 하겠습니다.  const buffer = Buffer.from('버퍼로 변환할 문자열입니다.');console.log('from(): ', buffer);console.log('length: ', buffer.length);console.log('toString(): ', buffer.toString());const array = [Buffer.from('단어 ' ), Buffer.from('사이 '), Buffer.from('공백들')];const buffer2 = Buffer.concat(array);console.log('concat(): ', buffer2.toStrin..
4. Node 기능 살펴보기 (7) - 버퍼와 스트림 1 앞선 아티클에서 readFile과 readFileSync를 사용해 특정 텍스트 파일을 읽었고, 해당 파일의 데이터는 data로 불러왔습니다. 그런데, 이 파일들을 항상 마지막에 toString( )을 이용해 변환하여 출력하는 과정을 겪었습니다.    4. Node 기능 살펴보기 (6) - 동기 / 비동기 메서드 3앞의 아티클에서는, 동기-블로킹 방식으로 readFile을 구현하는 예제를 살펴보았었습니다.    4. Node 기능 살펴보기 (6) - 동기 / 비동기 메서드 2앞선 아티클에서 설명했다시피, 동기 / 비동기는nozeroslope.tistory.com  왜 그런 방식으로 출력을 진행했을까요? 답을 바로 말씀드려 보겠습니다. 바로 여기서 반환된 data는 '버퍼'이기 때문입니다.       흔히 ..
4. Node 기능 살펴보기 (6) - 동기 / 비동기 메서드 3 앞의 아티클에서는, 동기-블로킹 방식으로 readFile을 구현하는 예제를 살펴보았었습니다.    4. Node 기능 살펴보기 (6) - 동기 / 비동기 메서드 2앞선 아티클에서 설명했다시피, 동기 / 비동기는 블로킹 / 논 블로킹과 비슷해 보이지만 엄연히 다른 개념이라는 것을 알아둬야 합니다.    4. Node 기능 살펴보기 (6) - 동기 / 비동기 메서드 1우nozeroslope.tistory.com  const fs = require('fs');console.log('**START**');let data = fs.readFileSync('./readme2.txt');console.log('1번', data.toString());data = fs.readFileSync('./readme2.txt'..