목록JavaScript & Node.js (30)
한 걸음씩 기록하며
1. Node.js 싱글 스레드? 논 블로킹? : async/await의 함정 1) Node.js는 사실 싱글 스레드 방식으로 일하지 않는다. 모두 잘 알듯이, Node.js는 싱글 스레드, 비동기식 이벤트 기반, 논 블로킹 I/O 라는 특징을 가지고 있다. 싱글 스레드임에도 Node.js가 빠르게 작업을 처리할 수 있는 이유는, 바로 논 블로킹 I/O이기 때문이다. 논 블로킹이란 이전 작업이 완료될 때까지 기다리지 않고 다음 작업을 수행하는 것을 의미한다. Node.js가 작업을 처리 안하고 가버리면 그러면 누가 그 작업을 처리하는가? 백그라운드(libuv)가 한다. 비동기적으로 처리할 수 있는 이벤트를 백그라운드에서 처리해주기 때문에, Node.js가 싱글 스레드임에도 빠른 작업 속도를 낼 수 있는 ..
0. TLDR EC2로 열어놓은 서버 MongoDB에 접근하는 방법 중 하나(Robo3T 연결) MongoDB에서 계정을 생성하고, 해당 계정이 DB를 관리 1. DB 보안과 접근 서버에 있는 DB를 누구나 접근하면 큰일난다. 그래서 대부분의 DB들은 (MongoDB, MySQL 등) 다음과 같은 기초적인 보안 기능을 제공한다. 그렇다면 어떤 방식으로 DB에 접근할 수 있을까? 대부분 아래의 2가지 방식이다. Whitelist : 허용된 IP만 DB에 접근할 수 있도록 설정하는 방식 계정 : 허용된 사용자만 DB에 접근할 수 있도록 계정을 관리하는 방식 본 글은 2번째 방식인, 계정을 관리하여 접근을 허용하는 방식을 MongoDB에서 구현해볼 것이다. 2. 계정 생성하고 권한 부여하기 참고로 본 글은 아..
0. 환경 변수 (Environment Variables) 환경 변수란 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임이다. OS의 환경변수는 시스템의 실행 파일이 놓여 있는 디렉토리의 지정 등 OS 상세서 동작하는 응용 소프트웨어가 참조하기 위한 설정이 기록된다. 우리가 집에서만 개발을 한다면 문제가 없겠지만, 우리는 다양한 환경과 OS에서 작업하게 된다. 그렇기 때문에 개발을 함에 있어서 운영 체제 레벨에서 관리하는 환경 변수를, 우리가 직접 설정하고 관리하는 작업이 필요하다. 이것을 위한 모듈이 "dotenv"이다. 1. dotenv dotenv는 일반적으로 .env라는 파일을 만들어서, 환경 변수 및 유출되면 안되는 정보를 담는 방식으로 활용된다. 해당 .env 파일은 원격..
*본 글은 아래의 이터레이션 글과 이어집니다. https://haksae.tistory.com/134 [Iteration, Iterable, Iterator]이란 무엇인가 1. Iteration Protocol 이터레이션 프로토콜이란 순회 가능한 자료 구조를 만들기 위해서 ES6부터 도입된 규약이다. 이는 객체 자료구조와 무관한 컬렉션 탐색 기능을 제공하기 위해 지켜야하는 구현 haksae.tistory.com 1. Generator 1) 제너레이터는 ES6에 도입된 함수로서, 이터러블을 생성하는 함수이다. (당연히 제너레이터로 만든 이터러블은 이터러블 프로토콜과 이터레이터 프로토콜을 따르는 객체이다.) 2) 제너레이터는 제너레이터 함수의 반환으로, 제너레이터의 이터러블에서 반환하는 이터레이터는 자기 자..
1. Iteration Protocol 이터레이션 프로토콜이란 순회 가능한 자료 구조를 만들기 위해서 ES6부터 도입된 규약이다. 이는 객체 자료구조와 무관한 컬렉션 탐색 기능을 제공하기 위해 지켜야하는 구현 규약이라고 할 수 있다. ES6 이전에는 배열, 문자열, DOM 콜렉션 등이 각자 방법으로 데이터를 순회할 수 있도록 구성되어 있엇지만, ES6에 들어서면서 이러한 순회 가능한 데이터들이 이터레이션 프로토콜을 준수하여 동일하게 동작하게 설계했다. 이터레이션 프로토콜에는 1) Iterable Protocol, 2) Iterator Protocol, 2가지가 있다. 1.1 Iterable Iterable Protocol 1. 오브젝트가 반복할 수 있는 구조여야한다. (ex: array, map, set..
1. JSON JSON이란 Javascript Object Notation의 약자이다. 직역하면 자바스크립트 객체 표기법이다. JSON은 실제로 객체 표기법을 위해 만들어졌지만, 지금은 경량화된 파일 형식으로 쓰이고 있다. 복잡한 파일 형식은 파일 교환에 비효율적이기에, JSON은 파일 교환에 많이 사용된다. Ajax와는 별도의 개념이지만, JSON은 Ajax라는 서버와의 교신 방식에 짝꿍처럼 같이 쓰이고 있다. 일반적인 자바스크립트의 객체 형식은 다음과 같다. let jsObj = { name: "haksae", age: 20 nation: "korea" } 그러나 이를 JSON은 다음과 같은 형식으로 표기한다. 이러한 경량화된 파일 형식은 데이터 통신에 이점을 가진다. {"name": "haksae"..
[NPM] Node Package Manage의 약자로 자바스크립트 개발자들이 유용한 패키지를 빠르고 쉽게 공유할 수 있게 하는 패키지 매니저이다. 패키지란 자바스크립트 개발자들이 만든 일련의 유용한 도구 및 프레임 워크를 의미하는 것으로, NPM은 이러한 패키지를 관리하는 장소이자 도구, 방법이다. 현재 NPM은 자바스크립트 런타임 Node.js의 기본 패키지 매니저로 사용되고 있다. NPM은 두 가지 주된 요소로 구성된다. 1) 패키지 출시 및 다운로드를 위한 CLI(Command-Line Interface) 도구 자바스크립트 패키지 호스팅을 위한 온라인 저장소 [package.json] NPM가 패키지를 줍고 받는 장소라면, package.json은 주고 받는 패키지에 대한 상세 설명서라고 할 수 ..
1. body-parser const express = require('express'); const app = express(); app.post('/',function(req,res){ var post = req.body; console.log(post) }) Node.js, express를 사용하여 위의 요청에 대한 응답을 처리하면, console.log(post)는 undefined로 출력된다. 즉 req.body 부분이 undefined로 처리된다는 것이다. 그러면 이를 어떻게 해결해야할까? 바로 "body-parser"이다. "body-parser"는 node.js의 모듈로써, 클라이언트 POST request data의 body로부터 파라미터를 편리하게 추출해주는 역할을 한다. 2) body..