📁Back-end

들어가며.. 특정 토큰을 받아 메세지 보내기 기능을 구현할 수도 있지만 나는 특별히 토큰을 이용하여 구현할 필요가 없었기 때문에 채널의 url을 발급받아 진행하는 방법을 사용했다. 준비사항 Slack에 자동으로 메세지를 보내기 위해서는 다음의 두 가지 준비물이 필요하다. 1. webhook을 이용하기 위해 url 발급받기 2. npm install nestjs-slack 1번 준비물은 아래 블로그의 3)번 글을 참고하면 쉽게 발급받을 수 있다. https://labs.brandi.co.kr/2019/01/30/kwakjs.html Node 서버로 Slack 메신저 자동화하기 Overview백엔드 업무를 하면 데이터 요청과 CS문의를 자주 받습니다. 날짜만 다를 뿐 같은 유형의 문의가 대부분이죠. 결국 반..
👻사용하게된 이유 "trello"와 같은 협업 웹 사이트를 만들던 중 할일을 만들 수 있는 Board 테이블에 Board 테이블 생성자가 멤버들을 초대할 수 있는 구조를 만들었다. 초대를 어떻게 구현할까 고민하다가 Board 생성자가 초대할 멤버의 메일을 적으면 그 멤버의 메일로 인증코드가 가고, 코드 입력 시 인증이 성공하며 초대받은 멤버가 Board 를 볼 수 있고, 사용할 수 있는 구조를 만들게 되었다. 이 때문에 nodemailer를 접하게 되었다. 👻사용방법 nodemailer 공식 홈페이지 / Youtube 사실 nodemailer 공식 홈페이지에 가면 예시와 함께 사용법을 자세하게 알 수 있다. https://nodemailer.com/ 추가적으로 참고한 유튜브는 다음과 같다. https:/..
아스키 코드 아스키 코드(ASCII 코드)는 영문 알파벳, 숫자, 특수 문자 등을 컴퓨터에서 사용할 수 있도록 각 문자에 대응하는 7비트 또는 8비트의 이진수로 표현한 것이다. ASCII는 "American Standard Code for Information Interchange"의 약자로 미국 표준 협회에서 제정한 표준 코드이다. 아스키 코드는 0부터 127까지의 값으로 표현되며, 숫자와 일부 특수 문자도 이 코드를 사용하여 표현된다. 한편, 확장 아스키 코드는 8비트로 확장된 아스키 코드로, 추가적인 문자와 기호를 포함하고 있다. UTF-8과 같은 유니코드와 함께 현재는 더 다양한 문자를 나타내기 위해 사용되고 있다. 아스키 코드 관련 JS 코드 charCodeAt() : 문자의 아스키 번호를 반환..
컴파일러 옵션 tsc --init을 하게되면 tsconfig 파일이 생성되는데 여기서 컴파일 옵션을 설정해줄 수 있다. target 기본적으로 설정되어 있는 옵션, 주석처리 되어있지 않다. 어떤 자바스크립트 버전으로 코드를 컴파일하고 싶은지 설정하는 옵션. target을 설정함으로써 컴파일된 코드를 지원하는 브라우저를 정의한다. es5는 모든 코드 유형이 컴파일 된다는 뜻이다. es5로 let, const 같은 키워드를 컴파일하면 js파일에서는 var로 보인다. 왜냐하면 target이 es5이고 es5 세계에서는 let과 const가 없기 때문이다.(es6로하면 let과 const를 볼 수 있다) 여기서 좋은 점은 타입스크립트로 구형 브라우저에서도 작동하는 코드를 만들 수 있다는 점이다. 추가적으로, t..
Typescript 컴파일러 실행 기본적인 타입스크립트 컴파일러 실행 명령어 : tsc app.ts 위의 명령어를 실행하게 되면 ts파일이 컴파일되어 js 파일로 새로 생성된다. 하지만, 이 명령어를 사용하게 되면 매번 파일 수정이 있을 때마다 매번 새로 실행 시켜줘야한다. 이를 해결하기 위해서는 아래의 "감시모드"를 이용하면 된다. 감시모드(Typescript watch mode) : 파일이 변경될 때마다 타입스크립트가 다시 컴파일하도록 파일을 감시하라고 하는 것. tsc app.ts --watch // 또는 tsc app.ts -w 터미널에 이렇게 쓰게 되면 해당 파일에 대해 감시 모드가 되고, 파일에서 무언가를 변경하고 저장하면 dist에 있는 파일이 변경되고 자동으로 다시 컴파일된다. 파일의 변경..
준비사항 TypeORM 및 MySQL 패키지 설치 npm i @nestjs/typeorm typeorm mysql2 Nest JS와 TypeORM으로 프로젝트 코드 구성 controller, service 파일은 각자 구성하였다고 가정하고 Nest.js 을 실행했을 때 가장 먼저 열리는 초기 파일인 app.module.ts 파일에 대한 설정에 대해 다뤄보려고 한다. 기본적인 코드는 아래와 같이 작성했다. // app.module.ts import Joi from 'joi'; import { Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { TypeOrmModule, Typ..
초기 설정 - prisma 패키지 다운로드 npm install prisma @prisma/client - prisma 시작 / 초기화 npx prisma init : prisma/model , .env, gitignore 파일 생성된다. - env, prisma 변경 - prisma 모델 작성 - prisma 모델 작성 후 db 연동 npx prisma db push : 이 때 mongoose,sequelize 와 prisma의 다른점은 mongoose, sequelize는 모델/ 테이블을 수정하기 위해서 테이블을 내렸다가 다시 올려야하고 올리는 순서도 중요한데, prisma는 prisma의 모델 부분을 수정한 뒤에 다시 npx prisma db push 명령어를 사용하게 되면 테이블을 자동으로 변경할..
개요 sequelize로 생성된 API에서 3 layered architecture로 바꾼 뒤 prisma로 변경하는 과정에서 prisma model을 생성할 일이 있었다. 상품의 status를 나타내는 부분에서 type에 enum값을 쓸 일이 있었는데 prisma 모델 설정시 enum 값을 넣는 방법을 몰라서 찾아봤는데, 블로그 글은 없고 공식 문서에만 적혀있길래 한 번 정리해봤다. (내용자체는 진짜 짧다) ENUM 값 추가하기 prisma 공식 문서에서는 다음과 같이 enum 값을 쓰라고 정리되어 있다. model User { id Int @id @default(autoincrement()) email String @unique name String? role Role @default(USER) } ..
아키텍처 패턴? 아키텍쳐 패턴은 소프트웨어의 구조를 구성하기 위한 가장 기본적인 토대를 제시한다. 각각의 시스템들과 그 역할이 정의되어 있고, 여러 시스템 사이의 관계와 규칙 등이 포함되어 있다. 따라서, 검증된 구조로 개발을 진행하기 때문에 안정적인 개발이 가능하다. 복잡한 도메인 문제를 해결할 때 아키텍처 패턴을 사용하면 모델이나 코드를 더 쉽게 변경할 수 있다는 측면에서 이점을 가질 수 있다. 대표적인 아키텍처 패턴 대표적인 아키텍처 패턴으로는 아래의 4가지를 들 수 있다. - MVC 패턴 (Model View Controller Pattern) - 계층형 아키텍처 패턴 (Layered Architecture Pattern) - 클린 아키텍처 패턴 (Clean Architecture) - 마이크로 ..
윤찬님
'📁Back-end' 카테고리의 글 목록