반응형

nodejs

    elasticsearch percolating 쿼리

    엘라스틱 서치에서 일반적인 검색 기능은 특정 인덱스에 문서를 저장하고, 쿼리에 매칭되는 문서를 불러오는 방식으로 수행된다. 하지만 percolating 쿼리 방식은 그 반대로 동작한다. 쿼리를 사전에 저장하고, 새로 유입된 문서가 매칭되는 쿼리가 있는지 확인해 매칭되는 쿼리를 반환한다. 업무적으로 필요한 기능이어서 알아보던 중 알게되어서 정리해본다. https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-percolate-query.html 인덱스 생성아래 인덱스생성에 보면 두 가지 필드를 볼 수있다. 먼저 message 필드는 percolator에서 정의된 문서를 임시 인덱스로 인덱싱하기 전에 사전 처리하는 데 사용되는 필드이..

    elasticsearch session timeout 이슈

    node.js에서 엘라스틱서치 클라이언트 사용시에 반복되는 요청이나 오랜 시간이 필요한 요청이 있을때 session이 끊어져 버리고 socket hang up 이슈가 발생한다. ※해결방법 session timeout과 keepalive 옵션을 지정해주면 된다. 아래 내용을 보고 참고하여 설정하시길.

    node.js 애플리케이션 프로세스 관리 도구 매니저

    PM2는 built-in 되어있는 Load Balancer와 함께 node.js 애플리케이션의 runtime and process 관리 기능을 제공해 주는 라이브러리이다. PM2를 이용하여 application이 죽지 않고 돌아갈 수있게 watch 기능을 제공해주는 기능도 제공한다. 그리고 error.log, info.log, 자원 점유 등등 여러 기능을 제공해준다. 간단하게 설치부터 사용법에 대해 정리해보자. 설치 $ npm install pm2 -g 실행방법 $ pm2 start app.js 사용법은 아주 간단하다. 위와 같이 command로 프로그램을 실행할 때 여러 옵션도 줄 수 있다. 12// wedul_app.js 를 max_space_size를 500으로 지정하고 실행하라.pm2 start ..

    request-promise를 통해 가져온 euc-kr 문자열 인코딩 문제 해결 (iconv)

    크롤러를 만들기위해 필요로하는 페이지를 가지고 오기위해 request-promise를 사용하였다. 요새 대부분의 홈페이지는 utf-8을 사용하기 때문에 큰 문제가 없으나 euc-kr를 사용하는 옛날 사이트들이 있다. 그런 사이트들의 정보를 그냥 request해서 가지고 오게되면 한글이 다 깨져버린다. 그것을 해결해보자. 우선 request-promise를 사용하여 데이터를 가지고 와보자.12345678const request = require('request-promise'); class Crawler { async crawler() { let doc = await reqest('http://url'); }}Colored by Color Scriptercs 역시 euc-kr를 사용하는 것을 확인하고 있고..

    Rest Operator와 Spread Operator

    es6를 사용하면서 보게된 Rest Operator와 Spread Operator에 대해 정리를 해보자. Rest Operator기존에 리터널 문법을 사용하여 객체나 배열의 값을 변수로 바인딩하여 사용할 수 있었다. 근데 object라는 객체의 값이 많은경우에는 여기서 값을 모두 하나하나 뽑아내는건 어렵기 때문에 하나의 객체로 뽑아낼때 사용한다.123456789101112131415161718192021222324// 기존에 하나씩 속성을 뽑아서 사용하던 방식const object = {a : 'wedul', b : 'cjung', c : 'gglee', d : 'babo'};const {a, b} = object;console.log(a, b); #출력wedul, cjung // Rest Operato..

    node.js로 구글 스프레드시트에 접속하여 데이터 가져오기

    자신의 구글 드라이브에 있는 엑셀 (스프레드시트)에 접속하여 데이터를 가져오는 방법을 알아보자. 우선 google-spreadsheet에 접근할 수 있는 Js를 다운로드 받자.1npm i google-spreadsheet --savecshttps://www.npmjs.com/package/google-spreadsheet 구글 스프레드 시트 만들기 구글 드라이브에 스프레드 시트를 만들자. 저 주소 URL에 블록처리되어있는 부분이 바로 키로 사용된다 구글 스프레드 시트 접속권한 사용자 생성 그리고 이 스프레드 시트에 접속할 수 있는 계정을 만들어야한다. https://console.developers.google.com 이곳에 접속하여 사용자를 만들고 키를 생성한다. (단순하게 들어가서 확인해보면 무리없이..

    router 경로 enumset 처럼 받는 방법과 테스트 사이트

    router.get('/wedul/:name(cjung|gglee), () => { }); 이런식으로 기재되어 있는 router 주소 매핑을 책에서 봤다. 자세한 설명이 없어서 알아보던 중 /wedul/ 주소 다음에 cjung 또는 gglee가 올 수 있는 형태라고 한다. 이걸 찾아보면서 router 경로를 만들고 테스트 까지 해볼 수 있는 사이트를 찾았다. http://forbeslindesay.github.io/express-route-tester/ Route에 규칙을 추가하고 path에 테스트할 규칙을 입력하면 key와 RegExp 그리고 결과까지 확인 할 수 있도록 제공해준다. 좋다.

    테스트 모듈 Assert 정리

    Assert는 node.js의 단위 테스트를 하기위해서 제공되는 테스트 모듈이다. 해당 모듈의 주요 메소드를 정리해보자. Assert 메소드 정리 // 모듈 로드 const assertion = require('assert');assertion.ok(object)인자값이 true가 아니면 에러assertion.ifError(object)인자값이 false가 아니면 에러assertion.equal(object, object) 두 개의 인자를 == 으로 비교 assertion.notEqual(object, object)두 개의 인자를 != 으로 비교assertion.staticEqual(object, object)두 개의 인자를 === 으로 비교assertion.notStaticEqual(object, ob..

    node.js에서 NODE_ENV를 사용하여 개발, 운영 환경 구분하기.

    express에서는 NODE_ENV라는 환경변수를 통해 개발환경과 운영환경에 따른 설정정보를 다르게 가져올 수 있다. 설정방법 Mac1export NODE_ENV=productioncs Window1set NODE_ENV=productioncs 사용방법expreess 모듈에서 process.env.NODE_ENV 값을 접근하여 저장된 환경설정 값을 가져올 수 있다. 아래와 같이 설정했을 때 환경설정이 없거나 developer이면 config/developer.js 파일을 읽어서 정보를 읽고 productiond이면 production.js 파일을 읽어온다. 이런 방식을 사용해서 개발과 운영에서 사용되는 db 정보 등등을 구별해서 사용할 수 있다.123456789101112131415161718192021..

    Node js 테스트 프레임워크 Mocha

    회사에서 node.js를 이용해서 백엔트 프로젝트에 참여하게 되어서 새롭게 node.js를 공부하게 되었다. 그러면서 node.js에서 새롭게 사용할 테스트 프레임워크를 찾던중 mocha라는 것을 발견했다. Mocha - node.js에서 사용하는 테스트 프레임워크로써 suite를 만들어서 unit 테스트를 가능하도록 제공해주는 프레임워크이다. 설치방법 mocha는 Node.js 6.x 버전 이상이부터 지원한다.123npm i mocha -g npm i --save-dev mochacspackage.json에 해당 스크립트를 추가해준다.123"script" : { "test" : "mocha"}cs 사용방법root 경로에 test directory를 생성하고 javascript를 추가한다. 그리고 des..

반응형