본문 바로가기

전체 글39

[Algorithm] Floyd-Warshall Algorithm(플로이드-와샬 알고리즘) Floyd-Warshall 알고리즘은 기존에 포스팅했던 Dijkstra 알고리즘이나 Bellman-Ford 알고리즘과 다르게, 모든 정점들 사이의 최단거리를 계산하는 알고리즘이다. 그래프의 초기 상태는 다음과 같다. 두 정점사이의 거리를 나타내는 dist 배열을 나타내보자. dist[i][j]는 정점 i에서 정점 j까지의 거리이다. dist 배열의 초기값은 i==j일때는 0으로, 정점 i와 정점 j가 연결되어있다면 두 정점을 잇는 간선의 가중치로, 두 정점이 연결되어있지 않다면 적당히 큰 수인 INF로 설정했다. 초기 dist배열의 모습은 아래와 같다. Floyd-Warshall 알고리즘의 핵심은 정점 k(14) dist[5][4]=min(dist[5][4],dist[5][2]+dist[2][4])=mi.. 2021. 8. 9.
[Node.js-Tutorial] 8. Cookies and Session 본 포스팅의 소스코드는 GitHub에서 확인할 수 있습니다. 8. Cookies & Session 이번 강의는 쿠키와 세션에 대해 다뤄보도록 하겠습니다. 쿠키와 세션이 무엇인지 알아보기 전에 쿠키와 세션이 필요하게 된 배경에 대해서 알아보도록하겠습니다. HTTP 통신은 두가지의 특성을 지닙니다. 비연결 (Connectionless) 무상태 (Stateless) Connectionless는 클라이언트(=브라우저)가 서버에게 request를 보내고, 서버는 클라이언트에게 response를 보내면 더 이상의 연결을 하지 않는다는 뜻입니다. 이를 확인할 수 있는 부분은, 우리가 한 사이트에 접속하여 완전한 페이지를 받았으면 다른 사이트로 이동하지 않는 이상 인터넷과 연결을 해제해도 사이트 화면이 그대로 유지됩니.. 2021. 7. 1.
[Node.js-Tutorial] 7. Middlewares 본 포스팅의 소스코드는 GitHub에서 확인할 수 있습니다. 7. Middlewares 이번 강의에서는 미들웨어에 대해 알아보도록 하겠습니다. 본격적으로 시작하기에 앞서 미들웨어가 무엇인지 간략히 설명하고 넘어가겠습니다. 미들웨어는 단어에서도 유추 가능하듯이 중간에 위치한 소프트웨어입니다. 어느 곳의 중간이냐면, 요청(request)와 응답(response)의 중간입니다. 이번 강의의 예제들은 이전과 같이 강의자료에 제공이 되겠지만, 많은 파일을 사용하지 않을 예정이기 때문에 강의와 함께 처음부터 작성해 나가는것을 추천드립니다. (1) Middleware basic npm을 통해서 다양한 미들웨어를 설치하여 이용할수 있습니다. 하지만 그 전에, 미들웨어가 어떻게 작동되는 지 감을 잡아보도록 하겠습니다. .. 2021. 7. 1.
[Node.js-Tutorial] 6. Express 본 포스팅의 소스코드는 GitHub에서 확인할 수 있습니다. 6. Express 이전까지는 Node.js의 특징과 관련된 문법에 대해 알아보았습니다. 이번 강의는 Node.js의 꽃 Express에 대해 알아보겠습니다. (1) HTTP 통신 Express를 시작하기에 앞서 우리가 사용하는 인터넷이 어떻게 이루어지는 지 알아보도록 하겠습니다. 위 사진은 Node.js 스터디 페이지의 주소 부분입니다. 주소의 맨 앞에 https가 붙은 것을 확인할 수 있습니다. HTTPS는 HTTP 통신에서 보안이 개선된 방식입니다. 아무튼 HTTP 통신이랑 큰 틀은 비슷합니다. HTTP 통신은 다음과 같은 구조에서 이루어 집니다. 클라이언트(웹 브라우저)는 서버에게 URL(자원의 위치)나 URI(자원의 식별자)를 통해 요.. 2021. 7. 1.
[Node.js-Tutorial] 5. Modules 본 포스팅의 소스코드는 GitHub에서 확인할 수 있습니다. 5. Modules 이번 강의는 모듈에 대해 진행하도록 하겠습니다. 모듈은 하나의 독립적인 소프트웨어입니다. 모듈을 사용하게 되면 소스코드의 길이가 줄어들어 가독성이 향상되고 기능별로, 함수별로 분리하여 작성하기 때문에 유지 및 보수가 편리합니다. 다른 언어에서의 경험에 빗대자면 C++을 해보신 분이라면 #include 를 통해 사용자 정의 헤더 파일이나 내부 라이브러리를 가져와 사용할 수 있었습니다. ex) #include 혹은 Python를 사용하셨다면 import나 from ... import ...를 통해 다를 모듈을 가져와 사용할 수 있었습니다. ex) from math import * Node.js에서는 module.exports랑 .. 2021. 7. 1.
[Node.js-Tutorial] 4. Promise, async/await 본 포스팅의 소스코드는 GitHub에서 확인할 수 있습니다. 4. Promise, async/await 이번 4강에서는 소스코드의 가독성을 높이고, 비동기 처리가 특징인 Node.js에서 자주 사용되는 Promise를 다뤄보도록 하겠습니다. (1) Promise 비동기 처리는 자원을 효율적으로 사용하고 속도를 높이는 방법으로 많이 사용합니다. 비동기로 실행할 때는 callback 함수를 매우 많이 사용하는데, 이는 앞서 1.Introduction에서 언급한 바와 같이 callback hell에 갇혀 코드의 가독성이 떨어지고 실수할 여지가 많습니다. 이를 해결하기 위한 것이 Promise입니다. const promiseResult=new Promise((resolve)=>{ resolve(1); }).th.. 2021. 7. 1.