전체 글
-
노드 npm 명령어노드 2023. 4. 14. 15:43
기타 명령어 npm outdated : 어떤 패키지에 기능 변화가 생겼는지 알 수 있다. Wanted의 초록색 부분은 업데이트 하면 이 부분까지는 업데이트 해 주겠다~라는 뜻이다. 그런데 npm update를 하면 package.json에 따라서 업데이트 된다는 사실을 알고 넘어가자. npm uninstall 패키지명 : 패키지 삭제(npm rm 패키지명으로도 가능) npm search 검색어 : npm 패키지를 검색할 수 있다. (npmjs.com에서도 가능) npm info 패키지명 : 패키지의 세부 정보 파악이 가능하다. npm adduser : npm에 로그인을 하기 위한 명령어(npmjs.com에서 회원가입) npm whoami : 현재 사용자가 누구인지 알려준다. npm logout : 로그인..
-
노드 node_modules 와 npx, SemVer노드 2023. 4. 14. 15:16
node_modules npm install 시 node_modules 폴더가 생성된다. 내부에 설치한 패키지들이 들어 있다. express 외에도 express와 의존 관계가 있는 패키지들이 모두 설치된다. 설명을 하자면 express를 설치를 하면 express도 node 프로젝트이고 npm패키지니까 express만의 dependencies가 있을 것이다. 그래서 npm i express 하면 express의 dependencies 까지 모두 같이 설치가 되는 것이다 . 즉, 패키지를 설치하면 그 패키지의 dependencies까지 모두 설치가 된다. *지금은 자세히 알 필요는 없지만 실제로 배포할 때는 node_modules는 지우고 package.json, package-lock.json만 가지고..
-
npm노드 2023. 4. 14. 14:28
1. npm Node Package Manager 노드의 패키지 매니저이다. 다른 사람들이 만든 소스 코드들을 모아둔 저장소 남의 코드를 사용하여 프로그래밍이 가능하다. 이미 있는 기능을 다시 구현할 필요가 없어 효율적이다. 오픈 소스 생태계를 구성중이다. 패키지 : npm에 업로드된 노드 모듈이다. 모듈이 다른 모듈을 사용할 수 있듯 패키지도 다른 패키지를 사용할 수 있다. 의존 관계라고 부른다. 1. package.json 현재 프로젝트에 대한 정보와 사용 중인 패키지에 대한 정보를 담은 파일 같은 패키지라도 버전별로 기능이 다를 수 있으므로 버전을 기록해 두어야 한다. 동일한 버전을 설치하지 않으면 문제가 생길 수 있다. 노드 프로젝트 시작 전 package.json부터 만들고 시작한다. (npm ..
-
노드 클러스터 cluster노드 2023. 4. 14. 12:20
cluster 기본적으로 싱글 스레드인 노드가 CPU 코어를 모두 사용할 수 있게 해주는 모듈이다. 포트를 공유하는 노드 프로세스를 여러 개 둘 수 있음 요청이 많이 들어왔을 때 병렬로 실행된 서버의 개수만큼 요청이 분산된다. 서버에 무리가 덜 간다. 코어가 8개인 서버가 있을 때 : 보통은 코어 하나만 활용 cluster로 코어 하나당 노드 프로세스 하나를 배정 가능하다. 성능이 8배가 되는 것은 아니지만 개선된다. 단덤 : 컴퓨터 자원(메모리, 세션 등) 을 공유하지 못한다. Redis 등 별도 서버로 해결한다. //cluster.js const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os..
-
노드 https, http2노드 2023. 4. 14. 11:08
https 웹 서버에 SSL 암호화를 추가하는 모듈이다. 오고 가는 데이터를 암호화해서 중간에 다른 사람이 요청을 가로채더라도 내용을 확인할 수 없다. 개인 정보가 있는 곳은 https 적용이 필수이다. https 적용 화면은 다음과 같다 주소창 맨 앞에 자물쇠 표시가 보안 연결 (https)이 되었다는 뜻이다. http로 요청을 보낼 경우를 살펴보면 너무 상세한 정보가 다 공개되어 있다. Response Headers Request URL Cookie Query String 등등... 이런 요청들이 만약에 탈취당한다면 보안상 매우 큰 위협이 될 수 있다. 따라서 보안을 생각한다면 https 적용은 거의 필수라고 생각한다. https는 이런 요청들을 암호화 해서 전달을 한다. 그래서 만약 요청들이 탈취 ..
-
노드 세션 사용하기노드 2023. 4. 13. 16:36
쿠키의 정보는 노출되고 수정되는 위험이 있다. 해결방법은 다음과 같다 중요한 정보는 서버에서 관리하고 클라이언트에는 세션 키만 제공 서버에 세션 객체(session) 생성 후, uniqueInt(키)를 만들어 속성명으로 사용 속성 값에 정보를 저장하고 uniqueInt를 클라이언트에 보냄 //session.js const http = require('http'); const fs = require('fs').promises; const url = require('url'); const qs = require('querystring'); const parseCookies = (cookie = '') => cookie .split(';') .map(v => v.split('=')) .reduce((acc, ..
-
노드 쿠키 이해하기노드 2023. 4. 13. 15:47
쿠키의 필요성 요청에는 한 가지 단점이 있다. 누가 요청을 보냈는지 모른다. (IP 주소와 브라우저 정보 정도만 안다) 로그인을 구현하면 해결되는 부분 쿠키와 세션이 필요하다 쿠키 : 키 = 값의 쌍 name = pocarl 매 요청마다 서버에 동봉해서 보낸다. 서버는 쿠키를 읽어 누구인지 파악 처음에 요청을 보낼 때 서버가 응답할때 쿠키도 같이 보내준다. 그러면 브라우저는 쿠키를 저장해 놓다가 나중에 요청을 보낼때 쿠키와 함께 요청을 보내면 서버는 쿠키를 읽어서 그 요청이 누구에게서 왔는지 확인이 가능하다. REST 요청 확인하는 법을 잠깐 다시 보고 가자. Name은 요청 주소, Method는 요청 메서드, Status는 HTTP 응답 코드 Protocol은 HTTP 프로토콜, Type은 요청 종류 ..
-
노드 POST, PUT, DELETE 요청 보내기노드 2023. 4. 13. 14:19
서버쪽 소스를 다시 한번 보자. //restServer.js const http = require('http'); const fs = require('fs').promises; const users = {}; // 데이터 저장용 http.createServer(async (req, res) => { try { if (req.method === 'GET') { if (req.url === '/') { const data = await fs.readFile('./restFront.html'); res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }); return res.end(data); } else if (req.url === '/about'..