node 10

[Node] package.json과 node-modules

package.json - 설치한 패키지 버전을 관리하는 파일 - 노드 프로젝트를 시작하기 전에 폴더 내부에 무조건 package.json을 만들고 시작 - scripts : npm 명령어를 저장해두는 부분 - npm run [스크립트 명령어] : 해당 명령어가 실행됨 - npm install [패키지 이름] : package.json이 저장된 폴더 위치에서 패키지 설치 (npm install express) - dependencies : 의존관계에 있는 패키지들이 모여 있음 - devDependencies : 개발용 패키지들 - nodemon : 소스코드가 바뀔때마다 자동으로 노드를 실행시켜주는 개발용 패키지 node-modules - 설치한 패키지들이 모여있는 폴더 - Express 하나만 설치했는데..

Node.js 2022.12.17

[Node] cluster

cluster 모듈 - 싱글 프로세스로 동작하는 노드가 CPU 코어를 모두 사용할 수 있게 해주는 모듈 cluster 모듈의 장점 - 포트를 공유하는 노드 프로세스를 여러개 둘 수 있음 → 요청이 들어왔을 때 병렬로 실행된 서버의 개수만큼 요청이 분산되게 할 수 있음 → 서버에 무리가 덜 가게 되게 함 cluser 모듈의 단점 - 프로세스들 간에 메모리를 공유하지 못하는 문제 - 세션을 메모리에 저장하는 경우 문제가 될 수 있음 → 레디스 등의 서버를 도입하여 해결 cluster의 종류 - 마스터 프로세스 : CPU 개수만큼 워커 프로세스를 만듦. 8086 포트에서 대기, 요청이 들어오면 만들어진 워커 프로세스에 요청을 분배 - 워커 프로세스 : 실제로 일을 하는 프로세스 const cluster = r..

Node.js 2022.12.11

[Node] https와 http2

1️⃣ https 모듈 - 웹 서버에 SSL 암호화를 추가 - GET 이나 POST 요청을 할 때 오가는 데이터를 암호화해서 중간에 다른 사람이 요청을 가로채더라도 내용을 확인할 수 없게 함 - 로그인이나 결제가 필요한 창에서 https 적용이 필수 - 인증서를 인증기관에서 구입 혹은 Let's Encrypt 같은 기관에서 무료로 발급 받아야함 const https = require('https'); const fs = require('fs'); https.createServer({ cert: fs.readFileSync('도메인 인증서 경로'), key: fs.readFileSync('도메인 비밀키 경로'), ca: [ fs.readFileSync('상위 인증서 경로'), fs.readFileSync(..

Node.js 2022.12.11

[Node] 쿠키와 세션

쿠키 - 유효기간이 있음 - 키-값의 쌍 형태 - 서버는 미리 클라이언트에 요청자를 추정할 만한 정보를 쿠키로 만들어 보내고, 그 다음부터는 클라이언트로부터 쿠키를 받아 요청자를 파악 서버에서 쿠키 만들기 const http = require('http'); http.createServer((req, res) => { console.log(req.url, req.headers.cookie); res.writeHead(200, { 'Set-Cookie': 'mycookie=test' }); res.end('Hello Cookie'); }) .listen(8083, () => { console.log('8083번 포트에서 서버 대기 중입니다!'); }); - 쿠키는 문자열 형식(mycookie=test)으로..

Node.js 2022.12.11

[Node] REST, HTTP 메서드 개념

REST? - REpresentational State Transfer - 서버의 자원을 정의하고 자원에 대한 주소를 지정하는 방법 ( = 약속 ) - HTTP URI를 통해 자원을 표시하고, HTTP 메서드를 통해 해당 자원에 대한 CRUD 연산을 적용한 것 - 꼭 파일일 필요는 없고 서버가 행할 수 있는 것들을 통틀어서 의미함. HTTP 요청 메서드 - 클라이언트가 웹 서버에게 사용자 요청의 목적이나 종류를 알리는 수단 GET : 존재하는 자원에 대한 요청 데이터 조회, CRUD로 따지면 Read POST : 새로운 자원을 생성 데이터 등록, CRUD로 따지면 Create PUT : 존재하는 자원에 대한 변경 (자원 전체를 갱신) 데이터 수정, CRUD로 따지면 Update PATCH : 존재하는 자..

Node.js 2022.12.11

[Node] 이벤트, 이벤트 메서드

스트림을 공부했을 때, on('data', 콜백) 또는 on('end', 콜백)을 사용했음 바로 data라는 이벤트와 end라는 이벤트가 발생할 때 콜백함수를 호출하도록 이벤트를 등록한 것! 이렇게 노드에서 이벤트를 만들고 호출하고 삭제해보자 const EventEmitter = require('events'); const myEvent = new EventEmitter(); myEvent.addListener('event1', () => { console.log('이벤트 1'); }); myEvent.on('event2', () => { console.log('이벤트 2'); }); myEvent.on('event2', () => { console.log('이벤트 2 추가'); }); myEvent.o..

Node.js 2022.12.10

[Node] 파일시스템, 버퍼, 스트림 알아보기

fs - 파일 시스템에 접근하는 모듈 📌 fs.readFile - 파일 읽기 - 결과물 : 버퍼(buffer) 형태로 출력되어서 사람이 읽을 수 있는 형색으로 변환 ( toString 사용 ) 📌 fs.writeFile - 파일 만들기 📌 프로미스 기반의 fs 모듈 - fs는 기본적으로 콜백 형식의 모듈이므로 실무에서 사용하기가 불편 const fs = require('fs').promises; fs.readFile('./readme.txt') .then((data) => { console.log(data); console.log(data.toString()); }) .catch((err) => { console.error(err); }); readFile과 readFileSync 메서드 📌 readFi..

Node.js 2022.12.10

[Node] 노드의 내장 모듈들

주요한 노드 내장 모듈들에 대해 빠르게 알아보자! 1️⃣ os - 사용자 컴퓨터의 운영체제 정보 - 일반적인 웹 서비스를 제작할 때는 사용 빈도가 높지 않지만 운영체제 별로 다른 서비스를 제공하고 싶을 때 유용 • os.arch(): process.arch와 동일 • os.platform(): process.platform과 동일 • os.type(): 운영체제의 종류를 보여줌 • os.uptime(): 운영체제 부팅 이후 흐른 시간(초)을 보여줌. process.uptime()은 노드의 실행 시간 • os.hostname(): 컴퓨터의 이름을 보여줌 • os.release(): 운영체제의 버전을 보여줌 • os.homedir(): 홈 디렉터리 경로를 보여줌 • os.tmpdir(): 임시 파일 저장 경..

Node.js 2022.12.10

[Node] 노드의 내장 객체들

말 그대로 빠르게 노드 프로그래밍을 할 때 자주 사용되는 노드의 내장 객체들에 대해 하나씩 살펴보자 global - 전역 객체 : 모든 파일에서 접근 가능 - 생략 가능 : console 객체도 원래는 global.console 이었음 - 남용 주의 : 프로그램의 규모가 커질수록 어떤 파일에서 global 객체에 값을 대입했는지 찾기 힘들어져 유지 보수에 어려움을 겪을 수 있음 console - 디버깅과 에러 내용 및 코드 실행 시간 확인에 사용 - console.log 메서드가 대표적 - console.time(레이블) : time과 timeEnd 사이의 시간을 측정 - console.error(에러 내용) : 에러를 콘솔에 표시 - console.table(배열) : 테이블 형식으로 표현 - cons..

Node.js 2022.12.08

[Node] Node의 동작 방식과 장단점

Node? - Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임 - 런타임 ? 특정언어로 만든 프로그램을 실행할 수 있는 환경 - Javascript 런타임 == Javascript 실행기 Node의 동작방식 노드는 자바스크립트 언어가 실행되는 실행기라고 보면 되기에, 자바스크립트의 특징을 가지고 있는게 당연 ! 1️⃣ 이벤트 기반 (event-driven) - 이벤트가 발생하면 이벤트 리스터에 등록해 둔 콜백함수 호출 → 발생한 이벤트가 없거나 이벤트를 처리했으면 노드는 다음 이벤트가 발생할 때까지 기다림 📌 setTimeout() 으로 Javascript 동작방식 알아보기 function run() { console.log('3초 후 실행'); } console.log(..

Node.js 2022.12.05