node
-
aws sqs를 이용한 lambda로 fcm push 전송하기Backend/NestJS 2024. 1. 4. 18:37
현재 Cron으로 특정 시간대에 push 알림이 동작한다. 봇서버 하나에서 모든 처리를 다 해서, Message Queue를 이용해 lambda에서 푸시를 전송하기로 했다. 목차 1. AWS SQS 생성 2. NestJS SQS 처리 코드 작성(producer / customer) 3. AWS Lambda 코드 작성 4. AWS Lambda 생성 및 설정 1. AWS SQS 생성 푸시 알림의 경우 FIFO일 필요가 없어서, 스탠다드를 선택했다. 그리고 이름을 지정해준다. 따로 더 설정할게 없으면 스크롤을 내려서 생성 버튼을 누른다. 생성이 되었다면, Name, URL, Region을 복사해두자. 2. NestJS SQS 처리 코드 작성(producer / customer) 코드 작성에 앞서 아래 2개의 ..
-
[node] How to limit the HTTP request size and upload file size?Backend 2022. 6. 30. 15:29
디얼핏홈 관리자페이지에서 생활습관 개선 프로그램을 일자별로 설정한다. 거의 2년을 하다보니 일수가 797일차까지 되었는데, 자꾸 7월6일부터 추가가 안되고 서버에서 API 동작시 실행되는 로그도 안찍히고 500에러가 났다. 이유를 분석하니, 서버에서 배열 인풋값을 받을때 용량이 초과되어서였다. 그래서 아래와 같이 용량을 늘려줬다. solution: index.ts import bodyParser from "body-parser"; app.use(bodyParser.json({limit: "50mb"})); app.use(bodyParser.urlencoded({limit: "50mb", extended: true}));
-
[solved] npm install, gyp ERR! stack Error: `make` failed with exit code: 2Backend/NodeJS 2020. 12. 1. 16:17
npm 또는 yarn으로 노드 프로젝트의 모듈을 설치하려는데, # npm install MODULE 아래와 같은 gyp 관련 에러가 발생했을땐, 30 warnings and 12 errors generated. make: *** [Release/obj.target/fse/fsevents.o] Error 1 gyp ERR! build error gyp ERR! stack Error: `make` failed with exit code: 2 ... info This module is OPTIONAL, you can safely ignore this error 혹시 노드 버전을 12.x 를 사용중이라면 10.x 으로 다운그레이드 해주자. # nvm install 10.16.3 # nvm use 10.16.3 ..
-
table row search function 만들기Programing/javascript 2020. 9. 11. 09:19
React로 웹 페이지를 만드는데 테이블 검색 기능이 필요했다. 구글에 좀 찾아보니 아예 검색 기능이 제공되는 테이블을 쓰는게 편해보여서 바꾸니까,, 커스텀 해야하는 것들이 성가셔서 직접 만들기로 결정했다. 테이블이 아래와 같을 경우 검색을 한다면, 이메일과 이름 컬럼을 필터링 해야한다. 검색 필터 주요 부분이다. input은 검색 TextField의 값이고 d는 사용자 정보 객체를 담은 배열이다. d = [{id=1, email:'test@test.com', name: '테스터'}, {id=3, email:'test1@test.com', name: '테스터1'}] const filtered = data.filter( d => d.email.indexOf(input) != -1 || d.name.inde..
-
[javascript] date time difference, 날짜 시간 비교 함수Programing/javascript 2020. 9. 9. 09:42
- 시간 절대값 비교(날짜 무시) const HOUR_TO_SEC = 3600; const MINUTE_TO_SEC = 60; const timeDiff = (_date1: any, _date2: any) => { const diff = moment.utc(moment(_date1, "YYYY-MM-DD HH:mm:ss").diff(moment(_date2, "YYYY-MM-DD HH:mm:ss"))).format("HH:mm:ss"); const hour_to_second = parseInt(diff.substring(0, 2)) * HOUR_TO_SEC; const minute_to_second = parseInt(diff.substring(3, 5)) * MINUTE_TO_SEC; const sec..
-
The configuration file __MACOSX/eb-node-express-sample-v1.1/.ebextensions/._create-sns-topic.config in application version 1.2 contains invalid YAML or JSON. YAML exception: Invalid Yaml: unacceptable character '�' (0x0) special characters are not all..Infra/AWS 2020. 8. 7. 16:53
Elasticbeanstalk에 node.js 어플리케이션을 배포하기위해 .zip 파일을 업로드하면 아래와 같은 에러 이벤트가 발생하는 경우가 있다. The configuration file __MACOSX/eb-node-express-sample-v1.1/.ebextensions/._create-sns-topic.config in application version 1.2 contains invalid YAML or JSON. YAML exception: Invalid Yaml: unacceptable character '�' (0x0) special characters are not allowed in "", position 0, JSON exception: Invalid JSON: Unexpecte..
-
[node] How to crypt to password on backend serverBackend/NodeJS 2020. 5. 12. 12:42
개발중인 서비스를 런칭하기에 앞서, 패스워드 암호화 부분을 개선했다. (기존 방식은 예전에 작업하던 소스를 그대로 적용했던터라, 다시 보니 좀 허술해 보였다.) 암호화라고 하면 크게 두가지를 나눠 생각해 볼 수 있다. 기준은 복호화가 필요하냐 안하냐이며 복호화가 필요한 경우 crypto(암호화)를 해야하고, 필요하지 않은 경우 hash(해쉬)를 한다. 대표적으인 암호화 방식은 AES가 있고 제일 많이 사용된다. 해쉬는 SHA를 주로 사용한다. 계정 패스워드의 경우 복호화가 필요 없기 때문에 SHA-512 해시 방식을 적용했다. 구조는 간단한다. 비밀번호 생성시 랜덤값인 salt를 이용해 해쉬값을 만든다. crypto.randomBytes(64, (err: any, buf: any) => { salt = ..
-
[IOS] How to in app purchase verify receipt with Node.js (javascript). error status: 21002Backend/NodeJS 2020. 4. 21. 14:58
IOS 인앱 결제 구독 영수증 검증 모듈을 작업했다. 테스트용 sandbox에 http 요청을 보냈는데, 아래와 같은 에러 상태가 리턴 됐다. status: 21002 receipt 값과 password 값엔 이상이 분명 없는데 뭔가 이상했다. 아래와 똑같이 코드를 작성하면 해결된다. const verifySubsIOS = async (transactionReceipt) => { const verifyURL = `https://sandbox.itunes.apple.com/verifyReceipt`; // use 'https://buy.itunes.apple.com/verifyReceipt' for production const options = { uri: verifyURL, method: `POST`,..