Javascript/Node.js
-
cookie & sessionJavascript/Node.js 2020. 1. 21. 17:45
필요성 클라이언트에서 보내는 요청의 한 가지 큰 단점은 누가 요청을 보냈는지 모른다는 것이다. 이 문제는 쿠키와 세션으로 해결할 수 있다. 쿠키 서버로부터 쿠키가 오면 웹 브라우저는 쿠키를 저장해두었다가 요청할 때마다 쿠키를 동봉해서 보낸다. 서버는 쿠키를 읽어 사용자를 파악한다. 브라우저는 쿠키가 있다면 자동으로 동봉해서 보내주므로 따로 처리할 필요가 없다. 서버에서 브라우저로 쿠키를 보낼 때만 코드를 작성 해야한다. 개인정보 유출 방지를 위해 쿠키를 주기적으로 지우라는 말이 바로 이러한 이유 때문이다. 쿠키는 요청과 응답의 header에 저장된다. 쿠키는 보안성이 없고 조작될 위험성이 있어 개인정보를 쿠키에 넣어두는 것은 적절하지 못하다. 세션 쿠키와 동일하지만 어느정도 암호화를 시키기 때문에 서버에..
-
Node.js 란?Javascript/Node.js 2020. 1. 21. 17:32
서버 클라이언트에게 서비스를 제공하는 컴퓨터 또는 프로그램이다. 노드는 서버로도 사용할 수 있는 것이다. 명심하자. 자바스크립트 런타임 런타임이란 특정 언어로 만든 프로그램들을 실행할 수 있는 환경을 뜻한다. 이 말은 즉, 자바스크립트 프로그램을 실행할 수 있게 해준다는 것이다. 구글에서 만든 V8 엔진은 다른 엔진에 비해 속도가 매우 빨라서 노트 프로젝트가 진행된 것이다. 노드는 V8과 libuv 라는 라이브러리를 사용한다. 둘 다 C, C++로 구현했으나 자동으로 V8, libuv에 자동으로 연결해주므로 C, C++을 따로 공부할 필요는 없다. 이벤트 기반 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식을 의미한다. (네트워크 요청, 클릭 등) 이것을 event listener에 callbac..
-
PassportJavascript/Node.js 2020. 1. 15. 10:34
passport란? 페이스북, 구글과 같은 기존의 SNS 서비스 계정을 이용해 로그인을 하도록하는 연동 기능을 수행하는 모듈 로컬, 페이스북, 구글 등 다양한 서비스를 이용할 수 있으나, 각각 필요한 서비스 별로 설치 해야한다. 예를 들어, 로컬과 카카오톡을 사용할 경우 아래와 같이 설치한다. app.js module/passport/index.js module/passport/kakaoStrategy.js module/passport/Log.js routes/Auth/index.js 문제 app.js에서 passport initialize(), session() 메소드를 호출했음에도 불구하고, 초기화 관련 오류가 발생했다. 해결 app.js에서 설정 관련 코드 라우트 호출 함수 위에서 배치하는 것이 좋..
-
Single ThreadJavascript/Node.js 2020. 1. 6. 17:43
node.js node.js는 일반적으로 single thread 구조라고 알고있다. Event loop를 통해 하나의 thread만 받아서 실행하기 때문이다. 그러나, 해시 연산과 같은 CPU intensive한 작업들은 별도의 thread에서 처리한다. 설명 pdkdf2()라는 암호화 함수를 사용할 경우, 대략 1초가 소요된다. 이 작업을 2번 하게 될 경우에 2초가 소요되야 하지만, 똑같이 1초가 걸렸다. 이것은 별도의 thread에서 동시에 처리함을 의미한다. 출처 https://medium.com/@rpf5573/nodejs-nodejs는-single-thread가-아니다-f02b0278c390 [NodeJS] nodejs는 single-thread가 아니다 결론 medium.com
-
비동기Javascript/Node.js 2020. 1. 6. 17:36
비동기 특정 코드의 연산이 끝날 때까지 코드의 실행을 멈추지 않고 다음 코드를 먼저 실행하는 처리방식이다. 이런 방식으로 구동할 경우, idle time이 사라져 컴퓨터 자원을 최대한 사용할 수 있어 효율적이다. 그러나, 프로그래머가 원하는 순서대로 실행되지 않는 문제점이 발생한다. 콜백함수 코드가 순서대로 실행되지 않는 문제를 해소하기 위해 콜백함수가 탄생했다. 식당을 예약하듯이 우선 A(자리에 착석)라는 작업이 끝나야 B(음식 주문)를 실행할 수 있도록 한다. 마치 함수 안의 인자 안에 함수를 심은 모양새이다. Callback hell 위와 같은 형태를 callback hell이라고 부른다. 가독성이 떨어지고 로직을 변경하기 어렵다. 이를 해결하기 위한 두 가지 문법이 존재한다. promise pro..
-
RoutingJavascript/Node.js 2020. 1. 6. 17:25
라우팅 라우팅은 URI 및 특정한 HTTP 요청 메소드인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것을 말한다. 각 라우트는 하나 이상의 핸들러 함수를 가질 수 있으며, 이러한 함수는 라우트가 일치할 때 실행됩니다. 라우트 예시 package.json npm start를 실행하면, node ./bin/www가 실행 되는 것을 알 수 있다. www app 변수를 이용해 app.js를 가져오고, port를 지정하고 server를 구동하는 코드가 있다. app.js app.js에서 주목해야 할 곳은 app.use이다. index.js 파일은 '/'에 연결되고, users.js는 '/users'에 연결된다. index.js request를 받아서 method에 따라서 re..