Node 54

child_process

노드에서 다른 프로그램을 실행하고 싶거나 명령어를 수행하고 싶을 때 사용 현재 노드 프로세스 외에 새로운 프로세스를 띄워서 명령을 수행함. 명령 프롬프트의 명령어인 dir을 노드를 통해 실행(리눅스라면 ls를 대신 적을 것) 파이썬 프로그램 실행하기 파이썬3이 설치되어 있어야 함 assert: 값을 비교하여 프로그램이 제대로 동작하는지 테스트하는 데 사용합니다. dns: 도메인 이름에 대한 IP 주소를 얻어내는 데 사용합니다. net: HTTP보다 로우 레벨인 TCP나 IPC 통신을 할 때 사용합니다. string_decoder: 버퍼 데이터를 문자열로 바꾸는 데 사용합니다. tls: TLS와 SSL에 관련된 작업을 할 때 사용합니다. tty: 터미널과 관련된 작업을 할 때 사용합니다. dgram: UD..

Node/노드 기능 2022.07.24

worker_threads

노드에서 멀티 스레드 방식으로 작업할 수 있음. isMainThread: 현재 코드가 메인 스레드에서 실행되는지, 워커 스레드에서 실행되는지 구분 메인 스레드에서는 new Worker를 통해 현재 파일(__filename)을 워커 스레드에서 실행시킴 worker.postMessage로 부모에서 워커로 데이터를 보냄 parentPort.on(‘message’)로 부모로부터 데이터를 받고, postMessage로 데이터를 보냄 new Worker 호출하는 수만큼 워커 스레드가 생성됨 여러개의 워커 스레드 const {Worker, isMainThread, parentPort, workerData} = require('worker_threads'); if(isMainThread){ //메인스레드 const t..

Node/노드 기능 2022.07.24

crypto와 util

암호화는 멀티 스레드로 돌아간다. 암호화는 가능하지만 복호화는 불가능 암호화: 평문을 암호로 만듦 복호화: 암호를 평문으로 해독 단방향 암호화의 대표 주자는 해시 기법 문자열을 고정된 길이의 다른 문자열로 바꾸는 방식 어떤 문자열을 hash함수를 통해 나온 결과는 항상 같기 때문에, 해시 결과만 저장하면 된다. Hash const crypto = require('crypto'); //헤시는 복호화가 힘들기 때문에 해커들이 복호화하지 않는다 console.log(('base64 = ', crypto.createHash('sha512').update('비밀번호').digest('base64'))); console.log(('hex = ', crypto.createHash('sha512').update('비밀..

Node/노드 기능 2022.07.24

process

node의 processs는 운영체제에 관한 정보를 가지고 있다. process.version : 설치된 노드 버전 process.arch : 프로세서 아키텍처 정보 process.platform : 운영체제 플랫폼 정보 process.pid : 현재 프로세스 ID process.uptime : 프로세스가 시작된 후 흐른 시간 process.execPath : 노드 경로 process.cwd : 현재 프로세스가 실행되는 위치 __(던더스코어) filename, __dirName , process.cwd를 통해 경로를 많이 알아낸다 process.cpuUsage : 현재 cpu 사용량 process.env 시스템 환경 변수들이 들어있는 객체 환경 변수는 process.env로 접근 가능 비밀키(데이터베이스..

Node/노드 기능 2022.07.23

모듈 심화, 순환 참조

require 심화 몇 가지 알아둘 만한 속성이 있음 require가 제일 위에 올 필요는 없음 require.cache에 한 번 require 한 모듈에 대한 캐싱 정보가 들어있음. require에서 호출했던 모듈을 한번 더 호출하면 require.cache에서 캐싱되어 있는 모듈을 조회해서 준다 require.cache를 초기화 하면 다시 파일을 불러와서 캐시에 저장한다 require.main은 노드 실행 시 첫 모듈을 가리킴 import같은 경우 node에서 사용하는 것이 아닌 JavaScript에서 사용하는 것으로 캐싱을 사용하지 않는다 순환 참조 두 개의 모듈이 서로를 require 하는 상황을 조심해야 함 Dep1이 dep2를 require하고, dep2가 dep1을 require 함. Dep..

Node/노드 기능 2022.07.23

_filename, _dirname, exports와 this

_filename, _dirname node에서 브라우저와 다르게 컴퓨터에 접근할 수 있다(헤커가 심어놓은 js파일을 잘 못 실행할 경우, 해킹 위험이 있다) __filename: 현재 파일 경로 __dirname: 현재 폴더(디렉터리) 경로 module, exports module.exports 외에도 exports로 모듈을 만들 수 있음 const odd = '홀수입니다'; const even = '짝수입니다'; exports.odd = odd; exports.even = even; //module.exports === exports === {}//초기 빈 객체로 되어있다 exports.객체명 = 객체명으로 값을 채운 뒤에 module.exports를 사용하게 된다면 참조값이 변경되기 때문에 선언했던..

Node/노드 기능 2022.07.23

Global과 콘솔, 타이머

Node가 JavaScript에 제공하는 기능이 있다(내장 객체 기능, required,export..등) -> 외우지 말고 이런 기능이 있다 생각하고 찾아보자 Global(브라우저의 Window) 최신 브라우져에서는 global로 통일 하였다. 노드의 전역 객체 브라우저의 window 같은 역할 모든 파일에서 접근 가능 window처럼 생략도 가능(console, require도 global의 속성) global은 생략가능하다(console.log -> global.console.log를 생략한 것이다.) global 속성에 값을 대입하면 다른 파일에서도 사용 가능 좋지 않은 방법이다(어디서 해당 값을 넣었는지 파악하기 어렵기 때문에 권장하지 않는다) Console(브라우저 console 객체와 유사)..

Node/노드 기능 2022.07.23

모듈로 만들기

노드는 자바스크립트 코드를 모듈로 만들 수 있음 모듈: 특정한 기능을 하는 함수나 변수들의 집합 모듈로 만들면 여러 프로그램에서 재사용 가능 같은 폴더 내에 var.js, func.js, index.js 만들기 var.js const odd = '홀수입니다'; const even = '짝수입니다'; module.exports = { //파일에서 한번만 넘겨줄 수 있다. odd, //키와 값변수가 같아서 생략 odd : odd even }; /* export default { odd, even } */ func.js //const value = require('./var'); const { odd, even } = require('./var'); //구조분해할당 //import { odd, even } f..

Node/노드 기능 2022.07.23