Topic/Node.js | server
-
[ NodeJS ] express에서 swagger로 API 명세서 만들기Topic/Node.js | server 2023. 2. 18. 15:59
[ NodeJS ] express에서 swagger로 API 명세서 만들기 포스트맨으로 API 명세서로 활용하고 있었는데 API 서버 정보가 포스트맨 서버에 저장되는 문제가 우려돼 swagger로 자체 API 서버에 연결을 해서 해결을 해보려고 한다. npm i swagger-jsdoc swagger-ui-express —save -dev swagger-jsdoc: jsdoc 주석으로 api 문서를 표현하는 용도 swagger-ui-express: swagger와 express 연결하는 용도 project/swagger/swagger.js const swaggerUi = require("swagger-ui-express") const swaggereJsdoc = require("swagger-jsdoc"..
-
[ NodeJS] moment-timezone을 이용해 로컬과 EC2 서버 시간 동기화Topic/Node.js | server 2023. 2. 4. 18:29
본인의 컴퓨터가 아닌 서버 컴퓨터 작업을 하시는 경우 서버가 한국에 위치하지 않아서 시간이 다르게 출력되는 경우가 발생한다. 이럴 때 필요한 것이 moment-timezone 모듈입니다. moment 모듈과 moment-timezone 모듈을 설치 후, 선언한 moment의 타임존을 원하는 지역으로 설정하면 로컬 서버와 EC2 서버 시간을 동기화시킬 수 있다. // 최상단 app.js npm install --save moment npm install --save moment-timezone var moment = require('moment'); require('moment-timezone'); moment.tz.setDefault("Asia/Seoul");
-
[ NodeJS ] req에서 클라이언트 ip 추출하는 방법Topic/Node.js | server 2023. 1. 28. 19:29
node js / example.controller.js 일부 로직 let clientIp = req.headers['x-forwarded-for'] || req.connection.remoteAddress; if (clientIp.substr(0, 2) === '::') { clientIp = clientIp.substr(2); } 이렇게 clientIp를 정해주고 substr로 정리하면 clientIp = “999.999.999.999” 요청한 클라이언트의 ip를 받아와서 활용할 수 있다.
-
[ Redis ] 레디스 설치 및 실행 방법 (Mac | OSX)Topic/Node.js | server 2023. 1. 20. 12:16
레디스(Redis) 설치 및 실행 방법 셀러리(Celery)의 메시지 브로커인 레디스를 설치하고, 정상적으로 작동하는지 확인한 다음, 실행시키는 방법에 대해 알아보겠습니다. 레디스의 설치는 홈브루(Homebew)를 이용해 설치해야 하기 때문에, 레디스 설치에 앞서 먼저 홈브루를 설치해주겠습니다. 홈브루(Homebrew) 설치 방법 먼저, 설치를 위해 터미널 창을 열겠습니다. 그리고 홈브루 메인 홈페이지에 나와있는 대로 명령어를 복사 붙여 넣기 합니다. 홈브루-공식홈페이지-설치 명령어 홈브루 공식 홈페이지 주소: https://brew.sh/ 홈브루로 레디스 설치 맥의 터미널(terminal)을 열고 다음 명령어를 입력해서 레디스를 설치해줍니다. cmd: brew install redis 레디스 실행 레디..
-
[ NodeJS ] node-schedule에서 클러스터 2개 중복 실행 방지Topic/Node.js | server 2023. 1. 7. 11:47
cron.service.js 로직 /** * 매일 같은 시간에 해당 날짜로 DB 생성하는 로직 * @returns {Promise} */ const updateSchedule = async () => { // schedule.scheduleJob('00 08 10 * * 0-6', () => { // console.log('Cron-style Scheduling at 10:00 , Sun-Sat'); // }); let today = moment().format('YYMMDD'); let presentTime = moment().format('YY-MM-DD HH:mm'); mongoose.set('useFindAndModify', false); try { const TODAY = await Day.fi..
-
Node js란 무엇일까? (다시 개념정리)Topic/Node.js | server 2022. 6. 13. 23:01
Node.js Node js란 "Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임"이다. Chrome V8? V8은 웹 브라우저를 만드는 데 기반을 제공하는 오픈 소스 자바스크립트 엔진! 구글 크롬 브라우저와 안드로이드 브라우저에 탑재되어 있다. C++로 만들어졌고 싱글 스레드를 제공! JavaScript Engine? 자바스크립트 엔진은 자바스크립트 코드를 실행하는 프로그램! 여러 목적으로 자바스크립트 엔진을 사용하지만 대체적으로 웹 브라우저에서 사용된다. ex) Google V8 엔진 JavaScript Runtime? 런타임이란 프로그래밍 언어가 구동되는 환경으로, 자바스크립트 런타임은 자바스크립트 엔진, Web API, 콜백 큐, 이벤트 루프, 렌더 큐로 구성된다. ..
-
쿠키, 세션, 토큰 정리Topic/Node.js | server 2022. 2. 10. 11:24
쿠키 ✔️ 서버가 클라이언트 (브라우저)에게 일방적으로 주는 것 HTTP Response (응답코드, 헤더, 바디 중 헤더에 set-cookie) 각 옵션의 의미 domain: 같은 사이트 path: 같은 경로 / httpOnly: 자바스크립트 사용 여부 maxAge, Expires: 만료 기간 설정 sameSite: 3rd-cookie LAX: 3rd-party가 GET일 때만 허용 STRICT: 3rd-party 쿠키 차단 none: 적용 안함 (https일 때만 가능) secure: HTTPS에 쿠키를 전달 여부 쿠키의 인증 상 한계 MaxAge or Expires, HttpOnly, SameSite 등 각종 옵션들을 이용해 XSS, CSRF 등의 공격에 대비할 수 있는 방법이 있기는 하지만 결국..