javascript 24

sequelize에서 timezone 설정 추가

sequelize를 통해 datetime 필드에 값을 삽입해봤을 때 계속해서 값이 UTC 시간대로 들어가게 되었다. 그래서 해당 블로그(http://ggamu.com/81)에서 제공하는 방식대로 database 자체에 timezone을 서울로 변경하였다. 하지만 그래도 계속해서 값이 UTC로 들어갔고 그래서 혹시 몰라 삽입하는 코드에 new Date('2018-10-18 11:11:11').toLocalString()를 설정해줬다. 하지만 그래도 역시나 ㅜㅜ 그래서 sequelize 라이브러리 자체에 설정을 하는 부분이 있는지 싶어서 확이해봤는데, 설정 자체에 timezone을 설정하는 부분이 있었다. 그래서 sequelize 객체를 만들때 사용하는 option에 timezone옵션을 부여해줬다.1234..

web/node.js 2018.11.26 (1)

node js에서 stream pipe 사용시 에러 처리 방법

node js에서 데이터를 stream을 사용하여 처리하고 pipe를 사용해서 계속해서 stream을 가지고 작업을 이어나갈 수 있다. 그런데 pipe를 통해서 작업을 진행하다 보니까 중간에 오류가 발생했을 때 try / catch 로는 정상적으로 처리하지 못하는 경우가 발생했다. 나에 경우에는 에러가 발생했을 때 try / catch에서 잡히지 않아서 프로그램이 Unhandled Promise Rejections를 출력 하며 죽어버렸다. 그 예는 다음과 같이 request를 통해서 받은 이미지를 sharp 라이브러리를 통해서 이미지 크기를 변경하려고 할 때 발생했다.1try { await request('https://image.toast.com/aaaaab/ticketlink/TKL_3/ion_mai..

web/node.js 2018.11.09

Elasticsearch query string 조회시 parse exception 에러 처리

elasticsearch에서 query_string로 데이터 조회시에 쿼리문으로 ) 특수문자가 포함하여 조회했다. 하지만 다음과 같이 문제가 발생했다. 1234567891011{ "error": { "root_cause": [ { "type": "parse_exception", "reason": "parse_exception: Encountered \" \")\" \") \"\" at line 1, column 11.\nWas expecting one of:\n \n ...\n ...\n ...\n \"+\" ...\n \"-\" ...\n ...\n \"(\" ...\n \"*\" ...\n \"^\" ...\n ...\n ...\n ...\n ...\n ...\n ...\n \"[\" ...\n \"..

node.js express에서 request 사용자 아이피 찾기

요청한 사용자의 Ip를 찾아서 로그를 남기거나 Ip 지역정보를 활용해서 geoIp를 찾아내거나 할 때 request를 요청한 사용자의 IP 주소가 필요하다. Spring에서는 간단하게 HttpServletRequest에서 getHeader의 X-FORWARDED-FOR에 있는 정보를 가져오거나 getRemoteAddr()을 통해 가져올 수 있다.1234567891011121314/** * 주문요청. * * @param req the req * @return the response entity*/@PostMapping(value = "/order")public ResponseEntity order(@Valid @RequestBody OrderRequestDto req, HttpServletRequest r..

web/node.js 2018.10.15

Javascript promise에 대해 알아보자.

기존에 ajax와 같은 비동기 요청이 종료가 되고 특정한 작업을 수행하고 싶을경우 콜백함수를 설정하여 진행했었다.1234567891011 Common.sendAjax({ url: Common.getFullPath('user/cert/check'), param: { 'otp' : $otpNum.val(), 'userId' : $joinEmail.val() }, type: 'POST', success: (e) => { // 성공 시 발생할 콜백함수 }, failed: () => { // 실패시 발생할 콜백함수 } });Colored by Color Scriptercs 이런 비동기 프로그래밍은 기존 동기식 프로그래밍 보다 작업을 요청하고 다른 작업을 할 수 있는 장점이 있다. 하지만 이는 그 유명한 콜백 지옥..

web/javaScript 2018.10.06

node.js에서 aws s3 스토리지에 이미지 저장하기

AWS에서 제공하는 S3 스토리지는 다양한 파일을 bucket에 보관할 수 있다. 자세한 내용은 생활코딩 강의 참고하면 좋다. https://opentutorials.org/course/608/3006 그럼 우선 aws sdk를 설치하여야 한다.1npm i aws-sdk --savecs 그리고 AWS IAM에서 생성한 사용자가 있어야 한다. 사용자는 S3에 대한 권한을 가지고 있어야 한다. 사용자를 생성하고 권한을 부여하는 기능은 어렵지 않기때문에 검색해서 적용하면 된다. 그리고 해당 사용자를 생성하면 csv 파일로 secretkey를 받을 수 있다. 이를 AWS S3에 접근하여 사용하기 위해서 사용된다. 기본 정보가 담긴 config.json 생성 우선 부여 받은 사용자 accessKeyId와 secr..

web/node.js 2018.10.06

elasticsearch percolating 쿼리

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