알고 있으면 좋지만 필요할 때 찾아서 쓰면 될 것들
노드는 운영체제 정보에도 접근할 수 있고 클라이언트가 요청한 주소에 대한 정보도 가져올 수 있다.
os
노드는 os 모듈에 정보가 담겨 있어 운영체제 정보를 가져올 수 있다.
os.cpus().length를 하면 코어의 개수가 숫자로 나온다.
cluster 모듈을 사용하면 코어 개수에 맞춰서 프로세스를 늘릴 수 있다.
path
폴더와 파일 경로를 쉽게 조작할 수 있도록 도와주는 모듈
운영체제별로 경로 구분자가 다르기 때문에 필요
윈도우 : C:\User\BBNO 처럼 \로 구분
POSIX : /home/BBNO 처럼 /로 구분
*POSIX는 맥과 리눅스와 같이 유닉스 기반의 운영체제들을 의미
path.sep : 경로의 구분자
path.delimiter : 환경 구분자 ( 윈도우 ; ) ( POSIX : )
path.parse : 파일 경로를 root, dir, base, ext, name으로 분리
path.parse()
{
root: 'C:\\',
dir: 'C:\\User\\BBNO',
base: 'path.js',
ext: 'js',
name: 'path'
}
path.normalize : \나 /를 실수로 여러 번 사용했거나 혼용했을 때 정상적인 경로로 변환
path.join() :
path.resolve() :
/를 만나면 path.resolve는 절대 경로로 인식하여 앞의 경로를 무시하고, path.join은 상대 경로롤 처리한다.
path.join('/a','/b','c'); // 결과 : a/b/c/
path.resolve('/a','/b','c'); // 결과 : /b/c
\\를 사용할 때
\n은 줄바꿈이라는 뜻으로 C:\node와 같은 경우 오류가 발생할 수 있다.
따라서 C:\\node처럼 표시해야 한다.
상대 경로와 절대 경로
상대 경로 : 현재 경로(.) 상위 경로(..)
절대 경로 : C:\User\BBNO
url
url.parse(주소) : 주소를 분해합니다. WHATWG 방식과 비교하면
url.format(객체) : WHATWG 장식
query
crypto
안호화를 도와주는 모듈
1. 단방향 암호화
비밀번호는 보통 단방향 암호화 알고리즘을 사용한다.
복호화 할 수 없는 암호화 방식으로 해시 함수라고 부르기도 한다.
사용자의 비밀번호는 복호화할 필요가 없기 때문에
암호화된 문자열로 저장하고 암호화한 데이터와 비교한다.
해시 기법
어떠한 문자열을 고정된 길이의 다른 문자열로 바꾸는 방식
const crypto = require('crypto');
console.log('base64:', crypto.createHash('sha512').update('비밀번호').digest('base64'));
console.log('hex: ',crypto.createHash('sha512').update('비밀번호').digest('hex'));
console.log('base64:', crypto.createHash('sha512').update('다른 비밀번호').digest('base64'));
createHash(알고리즘) : 사용할 해시 알고리즘. 현재는 sha512를 많이 사용한다. (md5, sha1은 취약해짐)
update(문자열) : 암호화할 문자열
digest(인코딩) : 인코딩할 알고리즘. base64가 가장 짧아서 애용됨
pbkdf2
10만번 sha512 변혼 반복
2. 양방향 암호화
암호화된 문자열을 복호화 할수 있으며, 키라는 것이 사용됨
const crypto = require('crypto');
const algorithm = 'aes-256-cbc';
const key = 'abcdefghijkl2nopqrstuvwxyz123456';
const iv = '0234567890123456';
const cipher = crypto.createCipheriv(algorithm,key,iv);
let result = cipher.update('비비노', 'utf8', 'base64');
result += cipher.final('base64');
console.log('암호화 : ', result);
const decipher = crypto.createDecipheriv(algorithm,key,iv);
let result2 = decipher.update(result, 'base64', 'utf8');
result2 += decipher.final('utf8');
console.log('복호화 : ', result2);
util
각종 편의 기능을 모아둔 모듈
API가 추가되고 있으며, 중요도가 적은 것은 사라지기도 한다.
'Program > Server' 카테고리의 다른 글
[Photon] 서버 개요 (0) | 2022.09.13 |
---|---|
[NodeJS] http 모듈로 서버 만들기 (0) | 2022.09.13 |
[NodeJS] Process (0) | 2022.09.13 |
[NodeJS] 이론 (0) | 2022.09.06 |
멀티플레이어 게임 이론 (0) | 2022.07.15 |