목록전체 (106)
개발스토리
그래프 탐색 ■ 하나의 정점으로부터 시작해서 차례대로 모든 정점들을 한 번씩 방문하는 탐색 과정 EX) 특정 도시에서 다른 도시로 갈 수 있는 지 없는 지에 대한 탐색 과정 DFS(깊이 우선 탐색) ■ root node나 다른 임의의 노드에서 시작하여 다음 branch로 넘어가기 전에 해당 branch를 완벽하게 탐색하는 방법 ■ 넓게 탐색하기전에 깊게 탐색하는 것 ■ DFS가 BFS보다 좀 더 간단함 DFS(깊이 우선 탐색)의 특징 ■ 전위 순회를 포함한 다른 형태의 트리 순회는 모두 DFS의 한 종류이다. ■ 그래프 탐색의 경우 어떤 노드를 방문했었는 지 여부를 반드시 검사해야 한다. ■ DFS는 스택 자료구조(혹은 재귀함수)를 이용하며, 구체적인 동작 과정은 다음과 같다. 1. 탐색 시작 노드를 스..
cluster cluster 모듈은 기본적으로 싱글 프로세스로 동작하는 노드가 CPU 코어를 모두 사용할 수 있게 해준다. 포트를 공유하는 노드 프로세스를 여러 개 둘 수 있으므로, 요청이 많이 들어왔을 때 병렬로 실행된 서버의 개수만큼 요청이 분산되게 할 수 있다. 서버에 무리가 덜 가게 된다. 성능은 개선되지만, 메모리를 공유하지 못한다는 등의 단점도 있다. 세션을 메모리에 저장하는 경우 문제가 될 수있다. 이는 레디스 등의 서버를 도입하여 해결 가능 const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os').cpus().length; if(cluster.isMaster){ consol..
https 모듈은 웹 서버에 SSL 암호화를 추가한다. GET이나 POST 요청을 할 때 오가는 데이터를 암호화해서 중간에 다른 사람이 요청을 가로채더라도 내용을 확인할 수 없게 한다. https는 아무나 사용할 수 있는 것은 아니다. 인증서 발급을 받아야 한다. 아래 코드는 인증서가 있다는 가정하에 작성했다. const https = require('https'); const fs = require('fs'); https.createServer({ cert : fs.readFileSync('도메인 인증서 경로'), key : fs.readFileSync('도메인 비밀키 경로'), ca : [ fs.readFileSync('상위 인증서 경로..
쿠키와 세션 이해하기 클라이언트에서 보내는 요청에는 한 가지 큰 단점이 있다. 바로 누가 요청을 보내는 지 모른다는 것이다. 그래서 많은 웹 사이트들은 로그인 기능을 포함한다. 로그인을 구현하려면 쿠키와 세션에 대해 알고 있어야 한다. 로그인을 한 후에 새로고침을 해도 로그아웃이 되지 않는다. 그것은 바로 클라이언트가 서버에 우리가 누군 지 지속적으로 알려주고 있기 때문이다. 우리가 누군지 기억하기 위해 서버는 요청에 대한 응답을 할 때 쿠키라는 것을 같이 보낸다. 쿠키는 유효 기간이 있으며 키-값의 쌍이다. 서버로 부터 쿠키가 오면 웹 브라우저는 쿠키를 저장해두었다가 요청할 때마다 동봉해서 보낸다. 서버는 요청에 들어있는 쿠키를 읽어서 사용자가 누구인지 파악한다. 쿠키는 요청의 헤더에 담겨 전송된다. ..