node.js

    Node.js - 버퍼/스트림 이해하기

    지난 글에서 버퍼 형식인 바이너리 데이터를 보았는데 오늘은 버퍼와 스트림에 대해서 알아볼 것이다. 버퍼 : 일정한 크기로 모아두는 데이터 일정한 크기가 되면 한 번에 처리 버퍼링 : 버퍼에 데이터가 찰 때까지 모으는 작업 스트림 : 데이터의 흐름 일정한 크기로 나눠서 여러 번에 걸쳐서 처리 버퍼(또는 청크)의 크기를 작게 만들어서 주기적으로 데이터를 전달 스트리밍 : 일정한 크기의 데이터를 지속적으로 전달하는 작업 사용 방법 1. 버퍼 방식 buffer.js const buffer = Buffer.from('저를 버퍼로 바꿔보세요'); console.log('from():', buffer); console.log('length:', buffer.length); console.log('toString():..

    Node.js 내장 모듈 - fs

    오늘은 Node.js 내장 모듈인 fs에 대해 알아볼 것이다. fs란 파일 시스템에 접근하는 모듈이다. 파일/폴더 생성, 삭제, 읽기, 쓰기 가능 웹 브라우저에서는 제한적이었으나 노드는 권한을 가지고 있음 파일 읽기 예제 readFile.js const fs = require('fs'); fs.readFile('./readme.txt', (err, data) => { if (err) { throw err; } console.log(data); console.log(data.toString()); }); 콘솔 결과 data를 그대로 출력할 경우 버퍼 형식으로 데이터가 표현된다. 버퍼는 일련의 바이너리 데이터를 나타내는 데 사용되는 객체이다. 각각의 값은 16진수로 표현되며, 데이터의 바이트를 나타낸다. 사..

    Node.js 내장 모듈 - child_process

    오늘은 Node.js 내장 모듈인 child_process에 대해 알아볼 것이다. child_process란 외부 프로세스를 생성하고 상호작용할 수 있는 기능을 제공하는 내장 모듈이다. 이 모듈을 사용하면 Node.js 애플리케이션 내에서 다른 프로그램을 실행하고, 그 프로그램과의 표준 입력(stdin), 표준 출력(stdout), 표준 오류(stderr)를 통해 데이터를 주고받을 수 있다. 주로 다음과 같은 상황에서 많이 사용한다. 외부 명령어를 실행하고 그 결과를 가져와야 할 때 별도의 프로세스에서 비동기적으로 작업을 수행해야 할 때 다른 Node.js 애플리케이션과 통신하거나 데이터를 공유해야 할 때 child_process는 아래와 같은 기능을 제공한다. exec : 쉘 명령어를 실행하고 그 결과..

    Node.js 내장 모듈 - worker_threads

    오늘은 Node.js 내장 모듈인 worker_threads에 대해 알아볼 것이다. (노드에서 worker_threads를 쓰는 경우는 극히 드물다..!) (멀티 스레드로 작업하는게 쉬운 일은 아니다.) 노드에서 멀티 스레드 방식으로 작업하는 경우 사용한다. (cpu를 많이 잡아먹는 암호화나 압축 등에 사용) isMainThread : 현재 코드가 메인 스레드에서 실행되는지, 워커 스레드에서 실행되는지 구분. 메인 스레드에서는 new Worker를 통해 현재 파일(__filename)을 워커 스레드에서 실행시킴. worker.postMessage로 부모에서 워커로 데이터를 보냄. parentPort.on('message')로 부모로부터 데이터를 받고, postMessage로 데이터를 보냄 사용 방법 wo..

    Node.js 내장 모듈 - util

    오늘은 Node.js 내장 모듈인 util에 대해 알아볼 것이다. util 모듈은 각종 편의 기능을 모아둔 모듈이다. deprecate와 promisify가 자주 쓰인다. 사용 방법 util.js const util = require('util'); const crypto = require('crypto'); const dontUseMe = util.deprecate((x, y) => { console.log(x + y); }, 'dontUseMe 함수는 deprecated되었으니 더 이상 사용하지 마세요!'); dontUseMe(1, 2); const randomBytesPromise = util.promisify(crypto.randomBytes); randomBytesPromise(64) .then..

    Node.js 내장 모듈 - crypto

    오늘은 Node.js 내장 모듈인 crypto에 대해 알아볼 것이다. crypto는 단방향 암호화를 제공하는 모듈로서 암호화는 가능하지만 복호화는 불가능하다. 암호화: 평문을 암호로 만듦 복호화: 암호를 평문으로 해독 단방향 암호화의 대표 주자는 해시(Hash) 기법이다. 해시(Hash)란 임의의 길이의 데이터를 고정된 길이의 값으로 변환하는 것을 말한다. 이 변환된 값은 해시값이라고 하며, 보통은 숫자와 문자로 이루어진 고정된 길이의 문자열이다. 해시 함수는 입력값을 고정된 길이의 해시값으로 변환하는 함수를 말한다. 해시 함수는 다양한 목적으로 사용된다. 가장 일반적인 사용 예시는 데이터 무결성 검증이다. 데이터 무결성이란, 데이터가 변경되지 않았음을 보장하는 것을 의미한다. 예를 들어, 어떤 파일이 ..

    Node.js 내장 모듈 - url

    오늘은 Node.js에서 제공하는 내장 모듈인 url에 대해 알아볼 것이다. 위 이미지는 url의 각 구성 요소에 대한 속성을 보여주고 있다. url 기준 상단은 기존 노드 방식이고 하단은 WHATWG 방식이다. 주소에 대한 명칭을 두 가지 단체(Node, WHATWG)에서 다르게 일컫는다. 예를 들어 https://www.naver.com/login 이란 주소가 있는데 주소를 받을 때 /login 이라는 앞단이 잘린 주소를 받으면 WHATWG 방식으로는 해석을 못한다. 이럴 때 기존 노드 방식을 사용하면 된다. url 모듈 사용 방법 const url = require('url'); const { URL } = url; const myURL = new URL('http://www.gilbut.co.kr..

    Node.js 내장 모듈 - path

    Node.js에서 제공하는 내장 모듈인 path는 파일 경로와 관련된 작업을 수행하는데 도움을 주는 모듈이다. 접근 방법 const path = require('path'); path 모듈은 다양한 메소드를 제공하며, 파일 경로를 구성하고 처리하는 데 사용된다. (ex: 운영체제별 분기처리 등) path 모듈의 메소드와 사용법 path.join([...paths]) : 전달된 모든 인수를 하나의 경로로 합친다. const path = require('path'); console.log(path.join('/usr', 'local', 'bin')); // 출력: '/usr/local/bin' path.resolve([...paths]) : 전달된 모든 인수를 절대 경로로 해석한다. const path = ..