개요어느 날, 파일 업로드에 오류가 발생했다.프론트에서 이미지 업로드에 성공했으나, 업로드한 경로에 이미지가 없다고 404 에러가 발생했다.현재 프로젝트에서는 이미지는 CDN에 업로드하고, 파일 경로를 백엔드에 문자열로 저장한다.이미지 업로드, 데이터 저장 모두 성공적으로 요청되었기에 원인을 파악하려 하나씩 살펴보았다.[문제가 발생한 환경]Nest 9.1.4Multer 1.4.4-lts.1busboy 1.6.0 원인 확인Middleware로 NestJS를 사용하고 있었는데, 파일명에 한글이 포함된 경우만 NestJS로 넘어온 파일명이 이상하게 변환된 걸 확인했다.CDN에 파일을 요청할 때, 요청한 파일명과 백엔드에 저장한 파일명이 달라 404가 내려온 것으로 판단하였다. 해결을 위한 과정NestJS에서 ..
개요백오피스에서는 사용자의 등급에 따라 다양한 UI를 효과적으로 제공해야 하는 요구사항이 있었습니다.이를 해결하기 위해 Angular에서는 사용자의 등급에 따라 UI를 동적으로 변경할 수 있는 Structure Directive를 사용하였습니다. *ngIf 사용*ngIf="로그인한 계정의 등급 === 대상 등급"처음에는 *ngIf 디렉티브를 사용해서 조건부로 UI를 렌더링하는 방식을 사용하였지만, 아래와 같은 문제점이 있었습니다.로그인한 계정 정보를 가져오는 로직이 사용하는 컴포넌트 마다 중복됨조건의 가독성이 좋지 않음 Structure directive 제작이러한 문제를 해결하기 위해 Custom Structure Directive를 제작하였습니다. 아래는 해당 Directive의 구현 내용입니다.@D..
개요여러 이유로 서버가 재시동되는 경우가 있는데, 이전까지는PM2의 node와 Nginx를 수동으로 실행했다.최근 회사에서 서버 리부팅이 예정되어 있었고, 이 기회에 수동으로 하던 작업들을 자동화하기 위해 조사를 하고 적용해 보았다. Systemd(system demon)리눅스용 시스템 및 서비스 관리자이며, 부팅부터 서비스관리 로그관리 등을 담당하는 init 프로세스이다.systemctl은 service(데몬)를 관리하는 명령어 systemctl start, stop, restart, status 등의 명령어가 있다./etc/systemd/system/: 부팅 시 필요한 작업들을 모아놓은 디렉토리 PM2pm2 startup을 실행하면 startup script를 실행하기 위한 커맨드가 나온다.커맨드를 ..