ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • util 모듈 && fs 모듈
    웹프로그래밍/node.js 2019. 8. 7. 23:05

    util 모듈

    util.deprecate는 지원이 조만간 중단될 메서드임을 알려줄 때 사용한다.

    const util = require('util');
    const crypto = require('crypto');
    
    //deprecated는 지원이 조만간 중단될 메서드임을 알려줄 때 사용
    const dontuseme = util.deprecate((x,y)=>{
        console.log(x+y);
    });
    
    dontuseme(1, 2);
    
    

    함수를 사용하면 콘솔에 값은 나오지만 경고도 함께 출력 된다.

     

    util.promisify로 promise를 지원하지 않는 (err, data) => {} 꼴의 콜백 또한 프로미스로 만들 수 있다. 

    const randomBytesPromise = util.promisify(crypto.randomBytes);
    const pbkdf2Promise = util.promisify(crypto.pbkdf2);
    
    crypto.randomBytes(64, (err, buf) => {
        const salt = buf.toString('base64');
        console.log('salt', salt);
        console.time('암호화');
        crypto.pbkdf2('현주바보', salt, 651395, 64, 'sha512', (err, key) => {
            console.log('password', key.toString('base64'));
            console.timeEnd('암호화');
        });
    });
    
    //promise를 지원하지 않는 (err, data) => {} 꼴의 콜백은
    //util.promisify로 프로미스로 만들 수 있다.
    
    randomBytesPromise(64)
        .then((buf) => {
            const salt = buf.toString('base64');
            return pbkdf2Promise('현주바보', salt, 651395, 64, 'sha512');
        })
        .then((key) => {
            console.log('password', key.toString('base64'));
        })
        .catch((err) => {
            console.error(err);
        });
    
        (async()=> {
            const buf = await randomBytesPromise(64);
            const salt = buf.toString('base64');
            const key = await pbkdf2Promise('현주바보', salt, 651395, 64, 'sha512');
            console.log('password', key.toString('base64'));
        })();

    fs 모듈

    파일 읽기

    const fs = require('fs');
    //fs가 프로미스를 10버전에서 지원 그래서 콜백으로
    fs.readFile('./readme.txt', (err, data) => {
        if(err) {
            throw err;
        }
        console.log(data);
        console.log(data.toString());
    });

    파일 쓰기

    const fs = require('fs');
    
    fs.writeFile('./writeme.txt', '글을 써주세요', (err) => {
        if(err) {
            throw err;
        }
        fs.readFile('./writeme.txt', (err, data) => {
            console.log(data.toString());
        })
    });

     

    파일스트림으로 읽어오기 (버퍼링)

    const fs = require('fs');
    
    const readStream = fs.createReadStream('./readme3.txt', {highWaterMark: 16});
    const data = [];
    
    readStream.on('data', (chunck) => {
        data.push(chunck);
        console.log('data', chunck, chunck.length);
    });
    
    readStream.on('end', () => {
        console.log('end', Buffer.concat(data).toString());
    });
    
    readStream.on('error', (err) => {
        console.log('error', err);
    })
    // 스트림은 이벤트 기반으로 동작합니다. data,end,error...
    // 버퍼(청크)들이 들어올 때 마다 data이벤트가 발생합니다.

    스트림은 데이터가 버퍼에 채워지면 보내기를 반복한다. 

    버퍼들의 흐름을 스트림이라고한다.

     

    '웹프로그래밍 > node.js' 카테고리의 다른 글

    예외처리  (0) 2019.08.08
    events모듈  (0) 2019.08.08
    path모듈 && url모듈 && crypto모듈  (0) 2019.08.07
    데이터베이스  (0) 2019.06.04
    사용자 수정 API 성공, 실패시  (0) 2019.06.03

    댓글

Designed by Tistory.