TypeScript
-
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개의 ..
-
[nestjs/react] nestia로 sdk package 생성 해서 리엑트에서 사용하기(feat. github npm registry)Backend/NestJS 2023. 12. 21. 19:45
기전 nestjs 프로젝트를 nestia 환경으로 마이그레이션 중이다. nestia는 참 편리한게 많은데. 그 중 대박적인게 명령어 하나로 sdk를 생성 할 수 있는 것이다. 그래서 기존 프로젝트에 nestia를 설치한 후 그 구조에 맞게 변경을 시켰다. 그런 뒤, 리엑트에서 sdk를 다운 받아서, 백엔드에 요청하는 것을 하고자 한다. 일단 nestia 코드를 작성하는 것은 생략한다. 아래 링크로 대체하겠다. 참고로 samchon 이분이 개발했다. https://github.com/samchon/nestia-template GitHub - samchon/nestia-template: Nestia template project installed by "npx nestia start" Nestia templ..
-
[nestjs] TypeError: version.split is not a function (typeorm, mariaDB)Database/mysql 2023. 1. 9. 16:25
netjs 프레임워크에서 typeorm을 사용해서 mariaDB와 연동을 하려고 하는데, 아래와 같은 에러가 발생했다. query: SELECT VERSION() AS `version` [Nest] 48360 - 01/09/2023, 4:06:54 PM ERROR [TypeOrmModule] Unable to connect to the database. Retrying (2)... TypeError: version.split is not a function at parseVersion (.../src/util/VersionUtils.ts:19:13) typeorm에서 db에 연결할 때 버전을 확인하는 작업을 한다. 그 때 mysql과 mariaDB의 버전 저장 양식이 달라서, split 함수 사용 코드에..
-
[React] list for map visualization data chart in ReactFrontend/react 2021. 11. 5. 18:06
나의 결론부터 보고 싶으면 22번으로 가면 된다. 1. 한국인이 만든 라이브러리 https://www.npmjs.com/package/react-korea-map-visualization react-korea-map-visualization 한국 지도 데이터 시각화를 위한 리액트 라이브러리 (개발 테스트) www.npmjs.com 한국 맵용 시각화 라이브러리다. topoJSON을 사용한다. 검색 하자마자 바로 나와서 쉽게 만들 수 있겠다는 생각으로 프로젝트를 다운 받아서 필요한 코드들을 복붙해서 만드니. 속도가 너무 느려 터져서.. 사용할 수 없겠더라. 하지만, 라이브러리에 있는 한국 topoJSON 파일이 추후 사용됐다.. 아주 감사.. 없었으면 성공 못했다. 2.대한민국 최신 행정구역(SHP) 다운로..
-
[CORS] react & flask - Access to XMLHttpRequest at 'http://localhost:8080/' from origin 'http://localhost:3000' has been blocked by CORS policy: The value of the 'Access-Control-Allow-Credentials' header in the response is '' which must be 'true' when ..Frontend 2021. 11. 2. 15:03
최근 ReactJS로 웹 페이지를 만들고있다. 이 웹 페이지는 파일을 업로드하는 기능이 있는데, 업로드 과정에서 CORS 에러가 발생됐다. React는 localhost:3000을 사용하고 flask는 localhost:8080 포트를 사용한다. 굳이 node.js를 사용하지 않고 flask를 사용한 이유는, AI 모델과 연동이 되기 때문에 python 기반의 서버로 구축하는 것이고 django에 비해 구축이 가벼워서 채택했다. [문제 발생] react(localhost:3000) post-> flask(localhost:8080) Access to XMLHttpRequest at 'http://localhost:8080/test' from origin 'http://localhost:3000' has ..
-
[typescript] Start express with typescriptPrograming/javascript 2019. 12. 6. 16:43
1.Make a PROJECT_DIRECTORY $ mkdir plantonline-cron-service && cd $_ 2. Make package.json $ npm init -y // package.json { "name": "plantonline-cron-service", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC" } 3. Install modules $ npm install -S express $ npm install -D t..
-
[node] How to send remind-push to customersBackend/NodeJS 2019. 11. 27. 17:21
What is the remind-push? It is push notifications that leads users to access PLANT app service. So, We expect more connection & active users. When should I send it? 하루 중, 자주 접속 했던 시간이 지났는 데도 접속을 하지 않았을때 During a day, When they didn't connect until the time they frequently connect. How? I use data selectivity, histogram. 작업 프로세스 Step 1. 사용자들의 활동에 대한 날짜를 수집한다. Get timestamp that user activity. 2. ..
-
[node] How to double co-routine in promise & loopBackend/NodeJS 2019. 11. 26. 17:06
비동기 작업의 동기화, 코루틴 각 회원들의 프로필과 친구리스트를 회원별로 새로운 객체에 담고 싶을때 co-routine과 promise를 활용하여 DB 작업은 비동기로 처리하고 베이스 루틴은 동기적으로 처리하여 만들어진 객체를 반환한다. 이 작업은 코루틴 안에서 작업을 비동기적으로 하면서, 모든 작업이 완료되었을 때 반환한다. When all jobs are done, this funtion is return and the main tasks are processed asyncronously. const cofunc = bPromise.coroutine(function* () { try { ... const members = yield getMembers();// get DB // [{"id":"", "..