전체 글

    AWS EC2 HTTPS

    잘되던 소셜로그인이 안된다는 이야기를 듣고 수정을 하는데 원인을 알 수 없었다. 가만 뒤져보니 이거 콜백url이 이상하게 https에 빨간줄이 그어져 있는게 아닌가.. https를 파이썬에서 90일마다 갱신시켜주는 것으로 붙여놨는데, 얼마전에 무슨 일이 있던건지 빨간줄이 그이며 모두 http로 바뀌었다. 나만 이런게 아니라 유명한 사이트들도 빨간줄이 그인 것을 보고, 구글 정책이 바뀌지 않았나 예상해본다. 그래서 AWS내에 있는 Certificate Manager, Route53, Load Balancer 를 이용하여 HTTPS를 붙이기로 했다. Route 53에 들어간다. 호스팅영역 & 등록된 도메인 둘 중 하나 선택 2-1. 이미 도메인을 가지고 있다면 호스팅 영역에 도메인을 입력하고 퍼블릭 호스팅 ..

    Error: EACCES: permission denied

    0|app | [Error: EACCES: permission denied, open 'logs/Munhak-2021-10-03-20.log'] { 0|app | errno: -13, 0|app | code: 'EACCES', 0|app | syscall: 'open', 0|app | path: 'logs/Munhak-2021-10-03-20.log' 0|app | } node app.js 로는 잘 되는데, pm2로 실행하면 오류가 걸리는 상황이었다. pm2의 권한 문제였고, root로 되어있는 파일을 일반 사용자가 건드리려다 보니 생긴 문제였다. 레퍼런스를 간신히 찾았지만 적용하긴 가성비가 안 맞았다. https://programmer.ink/think/eacces-permission-denied.ht..

    Nodejs Excel Mysql

    엑셀 파일을 넣었을 때 엑셀 양식에 맞춰 DB에 다 넣어야하는 경우가 생겼다. 엑셀은 처음 다뤄보는거라 난감했는데, 직접 작업을 해보니 엑셀보단 DB에 효율적으로 넣는게 좀 더 까다로웠다. 설치 npm -g install xlsx const excelProducts = xlsx.utils.sheet_to_json(excelFile.Sheets["Sheet1"], { raw: false, header: 1, dateNF: 'yyyy-mm-dd', blankrows: false, }) 엑셀파일의 Sheet1번을 읽어 온다. Node내에서 엑셀을 읽을 때는 엑셀 파일을 읽어야 하는데, 1. 엑셀 파일을 서버 file에 저장한다. 2. file에 저장된 엑셀을 읽고, 필요없어진 엑셀 파일은 바로 삭제 한다. 이..

    Node.js Slack Error Logging slack-node (노드JS 슬랙 에러 로깅)

    winston과 morgan등을 통해 log를 저장했으나, 해당 log들을 제때제때 확인하고 싶었고, 프론트 화면으로 보여주기엔 공수가 너무 많이 들어갔다. 슬렉으로 오류 메시지를 받기로 했다. slack-node는 마지막 업데이트가 5년전이라 사용하기 좀 뭐했는데, 거창한 기능을 사용할게 아니라서, 그냥 사용했다. 다른 slack npm도 써봤는데, 인증키도 받아야하고, 귀찮은 작업이 많았다. 물론 POST같은 요청도 처리할 수 있어서 나중에 slack을 이용해서 뭔가 만든다고 하면, 유용하게 사용할 수 있겠지만 지금 프로젝트에선 필요도 없고, 당장 쓰기도 복잡해보여서, 선택 안했다. slack-node는 웹훅의 url만으로도 메시지를 가볍게 보낼 수 있다. 1. Slack APP을 생성한다. http..

    Nodejs Redis 활용

    Nodejs Redis 활용 사용한 예시 exports.diaryMainWeightUpdate = async (req, res, next) => { try { const member = res.locals.member; const { weight, created_at } = req.body; const monthFirstDay = moment(created_at).startOf('month').format('YYYY-MM-DD'); const connection = await mySqlDbRds.getConnection(async conn => conn); const [weightUpdate] = await connection.query(query.weightUpdate, [weight, member.m..

    React react-router-dom 라우팅 기능 사용

    App에서 import를 하고 사용 import React from 'react'; import { BrowserRouter, Route } from "react-router-dom" 페이지를 이동하는데 사용할 수 있고, Fragment는 의 사용성 때문에 Fragment를 사용하여 태그를 없애고 사용가능한 것

    node.js ssl & https

    https://www.notion.so/SSL-HTTPS-19f3571108ea4d6baaabb531042f2359 SSL & HTTPS Ubuntu Nginx 환경에서 CertBot을 사용하여 https 사용하기 www.notion.so 팀작업할 때 총명님이 정리해놓은 자료

    Node.js Mongodb aggregate lookup

    router.get('/answers/like', authMiddleware, async (req, res) => { try { const user = res.locals.user; let { page } = req.query; page = (page - 1 || 0) < 0 ? 0 : page - 1 || 0; const answerCount = await AnswerCard.find({ userId: user.userId }); const myAnswerInfo = await AnswerCard.aggregate([ { $match: { userId: { $eq: user.userId } } }, { $project: { _id: { $toString: '$_id' }, questionId: 1, c..