1. 비정상 종료되었을 때 자동으로 서버를 재시작하게 해주는 모듈 - forever npm install forever -g 로 전역설치 해준다음 forever start app.js로 노드 프로그램을 실행하기 forever list 를 통해 forever로 돌아가는 프로그램들을 확인할 수 있다. 소스 코드 수정으로 인해 forever를 재시작해야 하는 경우에는 forever restart app.js 를 입력하여 재시작하면 된다. forever를 종료하고 싶다면 forever stop app.js 를 하면 된다. 2. 클러스터링? 하나의 프로그램을 여러 개의 프로세스로 실행하는 방법. pm2 모듈을 활용할 수 있다. npm install pm2 -g 로 전역설치한다. 주요 명령어 pm2 start ap..
Backend/node.js
1. 패스포트로 로그인하기 패스포트는 노드에서 사용할 수 있는 사용자 인증 모듈이다. 사용 방법이 간단하고 사용자 인증 기능을 독립된 모듈 안에서 진행할 수 있도록 도와준다. 엑스프레스 환경에서는 미들웨어로 끼워넣을 수 있어서 더 간단하게 사용할 수 있다. 패스포트의 목적은 클라이언트에서 요청한 인증 정보로 사용자 인증을 하는 것이다. 인증 이외의 기능은 다른 코드로 만들어야 한다. 패스포트의 인증 방식은 'strategy'로 만들어져 있기 때문에 어떤 방식을 선택하느냐에 따라 방식이 달라진다. DB 데이터와 비교하는 로컬 인증 방식, 페북/트위터 등을 이용하는 OAuth 인증 방식 등이 있다. 패스포트의 기본 사용 방법 아래와 같이 인증에 성공하면 콜백함수를 호출하고 함수 안에서 redirect()메서..
1. 모듈화? app.js 하나에 코드를 다 때려박아 놓으면 분석하기가 매우 어려워진다. 기능별로 코드를 구분한 후 독립된 파일로 분리시키는 것이 효율적이다. 기본적으로 js 파일을 새로 만드는 것부터 모듈화는 시작된다. exports와 module.exports를 사용할 수 있다. module.exports를 사용하면 객체를 그대로 뽑아 쓸 수 있어서 훨씬 좋다. 심지어는 module.exports와 exports를 같이 쓰면 module.exports의 우선순위가 높아서 exports로 꺼내온 것은 무시된다. ==> module.exports를 쓰면 된다. 2. 모듈을 분리할 때 사용하는 전형적인 패턴 함수를 할당하는 경우 모듈 안에서 함수를 만들어 할당. 모듈을 불러온 후 소괄호를 붙여 모듈을 실행..
현재 요약하고 있는 책에는 mongoDB, MySQL의 연결방식이 쓰여 있지만 나는 postgresql을 실무에서 쓰고 있기 때문에 postgresql 연결방법에 대하여 적도록 하겠다. 1. postgresql을 지원하는 pg 모듈 설치 npm install pg 쉘에 이렇게 입력하여 일단 pg 모듈을 설치한다. 2. pg 모듈과 knex 모듈을 이용하여 db연결 var { Pool } = require('pg'); const pool = new Pool({ user: "User Name", host: "Host Name", database: "Database Name", password: "Password", port: 5432, }); pool.connect(); pool.query("쿼리 입력", ..
1. 기본 http 모듈로 서버 만들기 http 모듈에 기본적으로 정의되어 있는 createServer() 메서드를 이용하여 서버 객체 만들기 var http = require('http'); // 웹 서버 객체 생성 var server = http.createServer(); // 웹 서버를 시작하여 3000번 포트에서 대기 var port = 3000; server.listen(port, function() { console.log('웹 서버 시작. : %d', port); }); 클라이언트가 웹 서버에 요청할 때 발생하는 이벤트 처리하기 웹 브라우저에 이 서버에 데이터를 요청하면 그때마다 이벤트가 발생하므로 상황에 맞추어 콜백 함수를 각각 등록해주면 된다. 주요 발생 이벤트는 아래와 같다. conn..
1. 주소 문자열과 요청 파라미터 다루기 노드에서는 url 모듈을 사용 예를 들어 주소 문자열이 https://google.co.kr/?adfasf=123 이렇게 있다 하면 url 모듈이 주소를 파싱하여 protocol: 'https' host: 'google.co.kr' query: '?뒤의 것들' 처럼 읽어준다. 이 때 주로 사용하는 메서드는 parse(), format()이 있다. parse(): 주소 문자열을 파싱하여 URL 객체를 만들어 준다. format(): URL 객체를 주소 문자열로 반환한다. 쿼리스트링을 더 쉽게 표현할 수 있는 querystring 모듈도 있다. 2. 이벤트 이해하기 노드는 이벤트 기반으로 비동기로 처리한다. 이벤트? -> 한쪽에서 다른 쪽으로 어떤 일이 발생했을을 알..
1. 자바스크립트의 객체와 함수 js는 자료형을 명시하지 않는다. (-> 자료형을 명시하는 TypeScript가 있긴 함.) js에서는 자료형을 알아서 판단하는데 자료형으로는 Boolean, Number, String, undefined, null, Object 가 있다. 타입을 확인하고 싶을 때는 typeof 연산자를 사용한다. 문자열을 숫자로 변환하고 싶을 땐 parseInt()로 정수형으로, parseFloat()로 부동소수점 형태로 바꿀 수 있다. js의 객체는 변수 = {} 로 할당한다. 아래와 같이 객체의 속성은 대괄호를 통해서 할당하거나 . 연산자를 통해 할당할 수 있다. let Person = {}; Person['age'] = 20; Person['name'] = pure; Person...
전역 객체? 전역 객체는 언제 어디에서나 사용이 가능하다. 함수 안에서 선언한 변수는 그 함수 안에서만 유효하다. 하지만 전역 객체는 함수 안과 밖 모두에서 사용할 수 있도록 범위가 제한되어 있지 않은 객체다. 따라서 어디에서나 사용이 가능하다. 대표적인 전역 객체로는 console, process, exports가 있다. 전역 변수? 전역 변수 또한 마찬가지로 어디에서나 사용이 가능하다. 예) console.log('현재 실행한 파일 이름 : %s', __filename); console.log('현재 실행한 파일의 폴더 경로: %s', __dirname); 여기서의 __filename과 __dirname이 전역 변수이다. *console.dir() 메서드는 객체 안에 들어있는 모든 속성을 콘솔에 출력..