TIL - 220713(수)

Jason Moon·2022년 7월 13일
0

TIL

목록 보기
32/47

오늘 한 일

  • 프로젝트 중간 발표 준비
  • 프로젝트 백엔드 코드 리뷰
  • 타입스크립트 공부
  • 자바스크립트 공부

오늘은 프로젝트에서 예약 하기 기능을 팀원가 함께 코드 리뷰를 했다. 자바스크립트의 Date 생성자 함수를 이용해 날짜 설정들을 해줬었는데 dayjs라는 라이브러리로 날짜 설정을 간편하게 할 수 있어서 dayjs를 쓰게 됐다. 확실히 날짜 차이 구하기에서 Date 생성자 보다 편하게 쓸 수 있었다.

const dayjs = require('dayjs');

// 현재 날짜 및 시간 객체 생성
let now = dayjs();
now.format();

// 날짜 및 시간 지정 객체 생성
let date = dayjs('2022-07-13', 'YYYY-MM-DD')
date.format() // 2022-07-13T00:00:00+09:00

// 포맥 지정 - format() 원하는 형태를 입력하고 원하는 형태의 문자열로 변경
date.format("DD/MM/YY");

// 날짜 객체의 원하는 시간 단위 값 구하기 - get()
let now = dayjs();
now.get('year') // 2022
now.get('month') // 07

// 날짜 객체의 원하는 시간 단위 값 변경 - set()

let date = dayjs("2021-10-10 10:30:25");

date.format(); // 2021-10-10T10:30:25+09:00

date.set("year", 2022).format(); // 2022-10-10T10:30:25+09:00
date.set("y", 2022).format(); // 2022-10-10T10:30:25+09:00

// 날짜 및 시간 더하기 - add()
// 더하는 숫자에 음수를 입력하면 빼기로도 사용할 수 있다.
let date = dayjs("2021-10-11 10:30:25");

date.format(); // 2021-10-11T10:30:25+09:00

date.add(1, "year").format(); // 2022-10-11T10:30:25+09:00
date.add(1, "y").format(); // 2022-10-11T10:30:25+09:00


// 날짜 및 시간 차이 구하기 - diff()
const date1 = dayjs("2021-10-11 10:30:25.495", "YYYY-MM-DD HH:mm:ss.SSS");
const date2 = dayjs("2020-04-08 13:25:30.000", "YYYY-MM-DD HH:mm:ss.SSS");

date1.format("YYYY-MM-DD HH:mm:ss.SSS"); // 2021-10-11 10:30:25.495
date2.format("YYYY-MM-DD HH:mm:ss.SSS"); // 2020-04-08 13:25:30.000

date1.diff(date2); // 47595895495

date1.diff(date2, "year"); // 1
date1.diff(date2, "y"); // 1
date1.diff(date2, "y", true); // 1.5077376883898348

date1.diff(date2, "month"); // 18
date1.diff(date2, "M"); // 18
date1.diff(date2, "M", true); // 18.09285226067802

date1.diff(date2, "week"); // 78
date1.diff(date2, "w"); // 78
date1.diff(date2, "w", true); // 78.69691715443122

중간 발표를 준비하면서 아래와 같이 트러블 슈팅도 함께 정리하는 시간을 가졌다.

트러블슈팅

문제 상황

팀원들 모두 로컬에서 node 16버전 이상에서 작업을 진행

ubuntu ec2 서버에서 git pull 받고 npm install 할 때 node 버전 문제로 reify fsevents 프리징 문제 발생

해결 과정

  1. 구글링을 통해 reify fsevents를 검색했고 비슷한 문제를 Node version14으로 다운그레이드해서 해결한 방법을 찾음. 서버를 node version14버전으로 다운그레이드 하니 정상적으로 작동
  2. 로컬환경에서 서버와 Node version을 맞추려고 다운그레이드를 하니 이번에는 로컬에서 npm install을 할 수 없는 문제가 발생. 서버의 Node version을 바꾸는게 확실한 해결책이 되지 않았음.
  3. 로컬에서 작업한 환경이 서버에서도 문제없이 돌아갈 방법을 찾아야 했고, 도커를 활용하기로 결정.
    로컬에서 작업한 것을 이미지화 하고 서버에서 도커 허브에 있는 이미지를 컨테이너로 실행하니 더 이상 Node version 차이로 인한 문제도 발생하지 않았음. 또한 추후 서버를 늘린다고 해도 빌드된 이미지를 가져다 쓰면 되기 때문에 환경 설정 문제 등을 고려하지 않아도 됨.

이번 문제를 해결하면서 자연스럽게 도커를 활용하게 됐고 도커를 쓰는 이유를 알 수 있었음.

📘 참고

day.js 사용법

profile
어려워 보여도 시간을 들여서 해보면 누구나 할 수 있는 일이다

0개의 댓글