nodejs
-
라우팅 모듈화를 통한 MVC 패턴 ::마이구미Nodejs 2017. 1. 21. 17:08
이번 글은 MVC 패턴에 대해 다뤄본다.MVC 패턴을 라우팅 모듈화를 통해 더 견고하게 만들어보자. MVC란 무엇인가? 위키의 정의를 보자.모델-뷰-컨트롤러(Model–View–Controller, MVC)는 소프트웨어 공학에서 사용되는 아키텍처 패턴이다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있다. MVC에서 모델은 애플리케이션의 정보(데이터)를 나타내며, 뷰는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소를 나타내고, 컨트롤러는 데이터와 비즈니스 로직 사이의 상호동작을 관리한다이해하기 쉽게 설명하자면, M - 데이터베이스, ..
-
pm2를 활용한 클러스터링 :: 마이구미Nodejs 2016. 7. 26. 10:50
이번 글에서는 pm2를 활용해 클러스터링을 해보자.먼저, 이전에 작성한 글을 읽어보고 오는 것이 좋다.죽지 않고 유지하는 pm2 사용법을 알아보자 일단 모듈을 설치하자. npm install clusternpm install httpnpm install os 기본적인 클러스터 예제이다. var cluster = require('cluster'); var http = require('http'); var os = require('os'); var numCPUs = os.cpus().length; if (cluster.isMaster) { // Master: // Let's fork as many workers as you have CPU cores console.log(numCPUs); for (var i..
-
방화벽 위한 iptables 설정 [CentOS] :: 마이구미리눅스 2016. 7. 20. 00:51
이번 글은 방화벽 설정에 대한 iptables에 대해 알아볼 것이다. 많은 기능들이 있는데 다 생략생략생략. 딱 필요한 내용! 방화벽 설정에서 포트에 대해 필요한 것들만 실습을 통해 알아본다! 실습은 Nodejs와 함께 진행하겠다. 필요한 건 당연히 서버, 그리고 NodeJS에 대한 살짝의 지식? 해봐야알기 때문에 따라할 수 있게 진행할 것이기 때문에 NodeJS 살짝만. express 프로젝트까지는 만들었다고 가정하겠다. express는 그냥 Nodejs의 프레임워크다. ( http://expressjs.com/ko/starter/installing.html 모른다면 요기요기 ) var express = require('express'); var app = express(); app.get('/', f..
-
죽지 않고 유지하는 pm2 사용법 :: 마이구미Nodejs 2016. 7. 2. 15:14
이번 글은 Node.js에서 사용할 수 있는 프로세스 관리자 모듈을 알아보겠다.크게 모듈에는 Strongloop, PM2. Forever 세 가지가 있다.Forever는 나머지에 비해 다소 기능이 떨어진다. 소규모 프로젝트에 어울린다.이번 글에서는 PM2를 다룰 예정이다. Node.js 웹서버를 실행하기 위해서는 대부분 node 명령어를 사용한다. $ node 노드 실행 시 오류가 있으면 프로세스는 중단된다. 또한 종료하여도 중단된다.그래서 한번이라도 사용해봤다면 이런 생각은 한번쯤 했을 것이다.그렇다면 어떻게 톰캣처럼 서버가 계속 중단되지 않고 실행될까?그때 이용하는 모듈이 PM2이다. $ npm install pm2 먼저 npm를 이용하여 pm2를 설치한다.끝이다. 이제 pm2 명령어들만 알면 된다...
-
euc-kr 문제 해결을 위한 iconv :: 마이구미Nodejs 2016. 6. 17. 19:47
이번 글은 Node.js 모듈 iconv에 대해 알아보자.본인의 경험을 토대로 글을 써보겠다.본인은 cherrio를 활용하여 네이트 페이지를 크롤링을 시도했다.살짝 잘 가져오는 지를 확인하기 위해 크롤링을 시도해보았다. 기본적인 예제다. 문제 없는 코드이다. 하지만 예측하지 못한 결과가 나왔다. 문자가 깨진 상태로 출력되었다.그 이유는 utf-8이 아닌 euc-kr을 쓰는 페이지였다. 이러한 경우 iconv을 쓰면 간단히 해결 가능하였다. $ npm install iconv 혹시나 본인이 경험했던 iconv 모듈 설치 시 에러가 뜨는 경우가 있을 것이다.아래를 보자. node-gyp 관련 문제이다.자세히 알아보기 위해 문서를 보자. npm 사이트에서 node-gyp 문서의 Installation을 확인해..
-
백준 1003번 피보나치 함수 :: 마이구미알고리즘 풀이/수학 2016. 6. 15. 22:07
이번 글은 백준 알고리즘 문제 1003번 "피보나치 함수"에 대해 다뤄본다.피보나치 수는 너무도 대중적이기에 많이 들어보았으리라 생각한다.' 0 1 1 2 3 5 8 13 21 34 55.......' 일단 문제를 보자. n번째 피보나치 수를 구하는 과정에서 재귀를 통해 돌아갈 때 n이 0일 때와 1일 때의 경우가 얼마나 되는지 카운트를 구하는 문제이다. 먼저 순수한 방법으로 풀어보자.위 그림에 있는 소스를 활용해서 0일때 1일때 카운트 변수 만들어서 if문 들어가면 ++해주면 된다. 이렇게 하더라도 사실상 원하는 결과값이 나온다.알고리즘 문제에는 시간 제한이 있다.그 말은 막 짜면 안되고, 문제가 원하는 로직은 꼭 존재한다.그걸 캐치하여 최소한의 시간으로 돌아가도록 소스를 짜야한다. (속도를 고려하는 ..
-
nodejs를 이용해 데이터베이스에 삽입하기(객체배열)Nodejs 2016. 6. 12. 17:20
이번 글은 ajax를 활용해 DB에 삽입하는 과정을 살펴보겠다.역시나 javascript, nodejs를 사용한다. 예시의 흐름은 이렇다.클라이언트 쪽에서 객체배열을 ajax를 post 형식으로 서버로 전달하여 db에 삽입할 것이다.객체배열은 이러한 형태이다. [ { a : 'a1', b : 'b1' }, { a : 'a2', b : 'b2' }, {......} ] 시작해보자.간단히 ajax를 이용할 함수를 만들겠다.function send_nodeDB(){ var data = [{},{}....]; //ArrayObject $.ajax({ type:"POST", url:'http://182.161.117.18:8888/db', data: JSON.stringify(data), contentType: ..
-
크로스 도메인 No 'Access-Control-Allow-Origin' 해결해보자크로스 브라우징 2016. 6. 11. 15:33
이번 글은 크로스 도메인에 관련된 글이다.웹 개발 하는 도중 크로스 도메인 문제를 안 겪은 사람은 없을 것이다.해결방법은 여러가지 있겠지만, 이 글에선 jsonp를 통해 해결해보겠다.client는 당연히 javascript를 이용할 것이고, server는 nodejs를 이용하겠다. client 도메인 - 'http://182.161.117.18' server 도메인 - 'http://182.161.117.18:8888' $.ajax({ url: 'http://182.161.117.18:8888/', type: 'get', dataType: 'json', contentType: "application/json", success: function (data) { }, error:function(request..