100%를 한번에 바꾸는건 어려워도 1%를 100번 바꾸는건 쉽다.

생각정리 자세히보기

개발/Node.js(Express) 11

[Node.js] puppeteer libatk-bridge-2.0.so.0 이슈 해결

최근 회사에서 puppeteer를 사용하여 크롤링을 해야하는 일이 있었다. 그렇게 로컬에서 잘 테스트를 마치고 배포를 하였는데, 갑자기 서버가 죽어버렸다. 에러코드는 다음과 같았다. error while loading shared libraries: libatk-bridge-2.0.so.0: cannot open shared object file: No such file or directory 열심히 해당 내용을 구글링했고, 다음의 게시글을 발견하였다. https://github.com/puppeteer/puppeteer/issues/1598 Error while loading libatk-bridge-2.0.so.0 · Issue #1598 · puppeteer/puppeteer When running..

[Node.js] Express에 HTTPS 적용하기

최근, 프로젝트에 HTTPS를 써야하는일이 생겨서 적용을 시키게 되었습니다. 배움에는 끝이 없다... 정말... 적용법을 시작하기 앞서 각각의 개념에 대해서 정리해보았습니다. HTTPS란? HTTP에서 보안이 강화된 프로토콜로, SSL을 이용하여 암호화를 합니다. 기존의 HTTP의 경우 암호화되지 않은 방법으로 데이터를 전송하므로, 메시지를 주고 받는 과정에서 감청당할 수 있습니다. 만약 중요한 정보를 전송한다면, 메시지를 주고받는 과정이 암호화 되지않은 상태로 노출될 수 있습니다. SSL이란? SSL은 서버와 클라이언트간의 통신을 제 3자가 보증하는 전자문서로, 주로 하는 역할은 암호화입니다. SSL은 암호화된 데이터를 전송하기 위해서 공개키와 대칭키를 혼합해서 사용합니다 자세한 내용 https://o..

[Node.js] EC2에 Express APP 배포하기

안녕하세요! 최근에 사이드 프로젝트를 진행하면서, 배포를 진행했습니다! 배포과정이 참 쉽지않았지만, 처음부터 끝까지 그 과정을 다 끝내고 다니 뿌듯했습니다. 그 과정을 자세하게 서술해보겠습니다. EC2 인스턴스 생성 먼저, AWS 계정을 만들고 인스턴스를 생성해야합니다. 계정은 생성했다는 전제하로 설명드리겠습니다. 계정을 생성하고 들어가면 인스턴스 시작 버튼을 누릅니다. 인스턴스 시작을 누르고 넘어가면 많은 운영체제들을 설치 할 수 있습니다. 저는 ubuntu 20.04 LTS 버전으로 진행했습니다. 취향에 따라 다른 운영체제를 선택하셔도 좋습니다. 다음은 인스턴스의 스펙을 설정하는 부분입니다. 저는 프리티어로 설정했습니다. 그 다음으로 넘어가면, 키 페어를 생성하는 화면으로 넘어가게 됩니다. 이 키 페..

[Node.js] Passport (로컬 로그인 with session)

Passport란? Passport is authentication middleware for Node.js. Extremely flexible and modular, Passport can be unobtrusively dropped in to any Express-based web application. A comprehensive set of strategies support authentication using a username and password, Facebook, Twitter, and more. 즉, Passport는 Node.js에서 인증을 도와주는 미들웨어이며, 여러가지 전략 (인증 방법을 전략이라고 칭한다.)을 지원함. 필자는 API서버로서 session기반의 전통적인 ID, PW..

[Node.js] Cookie 공부

프로젝트를 하면서 인증에 관련된 부분을 진행하면서 지식의 부족함을 느꼈다. 그래서 생활코딩의 강의를 참고해서 공부를 진행하였다, 추후에 더 공부를 해야할 것 같다. 예제 코드 var http = require('http'); // 서버 모듈 var cookie = require('cookie'); // cookie를 파싱하는 모듈 http.createServer(function(req, res){ var cookies = {}; // 쿠키를 담을 객체 if (req.headers.cookie !== undefined) { // 쿠키 예외처리 cookies = cookie.parse(req.headers.cookie); // 객체에 헤더안의 쿠키를 파싱 } res.writeHead(200, { 'Set-c..

[Node.js] Node.js에 MVP 패턴을 적용하기

디자인 패턴이란? 프로그램이나 어떤 특정한 것을 개발하는 중에 발생했던 문제점들을 정리해서 상황에 따라 간편하게 적용해서 쓸 수 있는 것을 정리하여 특정한 "규약"을 통해 쉽게 쓸 수 있는 형태로 만든 것. 즉, 더 쉽고 편리하게 개발을 할 수 있는 특정한 방법들이다. MVP패턴이란? 어플리케이션을 3가지로 나눠서 구축하는 개발 방법론이다. MVC패턴에서 파생된 디자인 패턴중에 하나이다. Model : 데이터를 처리하고 가공하는 핵심 알고리즘 및 로직 View : 그래프, 그림 등 사용자에게 보여지는 UI Presenter : View에서 들어오는 요청을 받고 Model에 데이터를 요청후, 다시 View에 응답 Node.js에 MVP 패턴 적용. Node.js에서는 Router에서 요청을 받고 DB에 접..

[Node.js] dotenv 적용하기

dotenv란 .env라는 파일에 정보를 저장하고, 그 안의 정보를 환경변수로 등록해주는 모듈이다. 요즘 진행하는 프로젝트에 dotenv를 적용했다. dotenv를 적용한 이유 1. config폴더 밑에 db에 관련된 계정정보, 메일을 전송하기 위한 계정정보를 JSON형식으로 관리했다. 2. 나중에 더 민감한 정보를 다룰때에 환경변수로 등록해서 관리하면 보안이나 관리하는데에 용이하다고 판단하여 적용했다. dotenv 적용 방법 우선, dotenv모듈을 설치해야한다. npm i dotenv 설치를 하면 패키지가 추가된것을 확인할 수 있다. 패키지를 추가하면 .env 파일을 프로젝트 최상단에 추가한다. .env파일의 형식은 다음과 같다. # Server Port PORT=9000 # Connect DataB..

[Node.js] nodemailer를 이용한 메일 전송

프로젝트에서 nodemailer를 사용을 했다... 4시간이나 삽질을 해서 다음에는 해매지않도록 기록을 해두려고 한다. 먼저 패키지를 설치해야한다. npm i -s nodemailer 패키지를 설치하면 package.json이 다음처럼 변경된다. { "name": "back", "version": "0.0.0", "private": true, "scripts": { "start": "node ./bin/www" }, "dependencies": { "cookie-parser": "~1.4.4", "debug": "~2.6.9", "express": "~4.16.1", "morgan": "~1.9.1", "mysql2": "^2.3.3", "nodemailer": "^6.7.2", "sequelize": ..

[Node.js] Sequelize Model 설정

Sequelize의 동작방식 크게 두가지 방식으로 나눌수있다. 1. DB 스키마를 DB에서 다루는 방식 2. DB 스키마를 Sequelize에서 다루고 실행때마다 model 폴더안에 있는 entity들을 가져와서 스키마를 생성한다. 1번의 경우는 ERD를 따로 작성했을경우에 사용한다고 한다. 2번의 경우는 JS에서 DB를 관리할수있는 편리함이 있다. 2번이 더 유용해보이지만 따로 DBA가 있는경우 1번 방식을 사용한다고 한다. 이번 프로젝트를 진행하는 목적이 공부를 하기위함이고, 이미 ERD를 작성했으니 1번 방식으로 진행을 하려고 한다. DB 테이블을 자동으로 models폴더에 js파일로 생성하기. 설정하는 파트의 부분은 ERD를 전부 작성했다는 전제하로 설명한다. sequelize-auto라는 라이브..