분류 전체보기
Nestjs 에서 Swagger 사용하기
Nestjs 에서 Swagger 사용하기
2021.06.24generate swagger ui npm install --save @nestjs/swagger swagger-ui-express main.ts 에 다음과 같이 작성합니다. import { NestFactory } from '@nestjs/core'; import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger'; import { AppModule } from './app.module'; // nsetjs hot reloading setup declare const module: any; async function bootstrap() { const app = await NestFactory.create(AppModule); const config ..
Nest js implements, injectable(DI) 알아보기
Nest js implements, injectable(DI) 알아보기
2021.06.24typescript implements import { AppController } from './app.controller'; import { AppService } from './app.service'; import { ConfigModule } from '@nestjs/config'; import { LoggerMiddleware } from './middlewares/logger.middleware'; @Module({ imports: [ConfigModule.forRoot({})], // module 을 불러왔으면 추가를 해줘야함 controllers: [AppController], providers: [AppService], }) export class AppModule implements N..
문제 - 뮤직비디오 (결정알고리즘)
문제 - 뮤직비디오 (결정알고리즘)
2021.06.22지니레코드에서는 불세출의 가수 조영필의 라이브 동영상을 DVD로 만들어 판매하려 한다. DVD에는 총 N개의 곡이 들어가는데, DVD에 녹화할 때에는 라이브에서의 순서가 그대로 유지 되어야 한다. 순서가 바뀌는 것을 우리의 가수 조영필씨가 매우 싫어한다. 즉, 1번 노래와 5번 노래를 같은 DVD에 녹화하기 위해서는 1번과 5번 사이의 모든 노래도 같은 DVD에 녹화해야 한다. 또한 한 노래를 쪼개서 두 개의 DVD에 녹화하면 안된다. 지니레코드 입장에서는 이 DVD가 팔릴 것인지 확신할 수 없기 때문에 이 사업에 낭비되는 DVD를 가급적 줄이려고 한다. 고민 끝에 지니레코드는 M개의 DVD에 모든 동영상을 녹화하기 로 하였다. 이 때 DVD의 크기(녹화 가능한 길이)를 최소로 하려고 한다. 그리고 M개..
Docker full stack - docker file 작성하기
Docker full stack - docker file 작성하기
2021.06.14frontend 개발 환경과 운영 환경 구분하기 개발환경과 운영환경을 구분하기 위해 Dockerfile , Dockerfile.dev 를 만듭니다. Dockerfile.dev FROM node:alpine WORKDIR /app COPY package.json ./ RUN npm install COPY ./ ./ CMD ["npm", "run", "start"] 운영환경에서 nginx 설정 정적 파일을 제공해주기 위한 Nginx를 위해서 frontend 안에 nginx 폴더 생성하고 default.conf 파일 생성 default.conf server { # nginx 가 listen 하고 있는 port 번호 listen 3000; location / { # html 파일이 위치할 루트 설정 root /..
Docker fullstack - React Js 구성하기
Docker fullstack - React Js 구성하기
2021.06.14cra 를 사용하여 react app 만들기 fullstack 폴더에서 frontend 폴더를 생성합니다. npx create-react-app frontend UI를 위한 코드 작성 수정되는 UI 를 바로 확인하기 위해서 react app을 실행합니다. npm start http://localhost:3000 글을 입력할수 있는 Input box 와 확인을 누를 수 있는 Button을 추가하겠습니다. App.js import logo from './logo.svg'; import './App.css'; function App() { return ( 확인 ); } export default App; 이벤트 핸들러 와 최종적인 코드입니다. 이글은 react 를 위한 글이기보단 docker 설정에 초점을 맞..
Docker fullstack - Node Js 구성하기
Docker fullstack - Node Js 구성하기
2021.06.14구성 node.js react.js postgres nginx docker-fullstack 폴더를 만든뒤 backend 폴더를 만들어줍니다. /backend/package.json npm init -y package.json 파일 만들기 { "name": "backend", "version": "1.0.0", "description": "", "main": "server.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "start": "node server.js", "dev": "nodemon server.js" }, "keywords": [], "author": "", "license": "ISC", "dependenc..
라이브러리 없이 만드는 JWT - 2
라이브러리 없이 만드는 JWT - 2
2021.06.06우리만의 token module 만들기 nest g mo jwt nest cli 로 jwt module 을 생성합니다. static module 과 dynamic module 여기서 기억해둬야 할부분은 module 의 종류는 두가지가 존재하는데, 첫 번째는 'static module'입니다. UserModule 같은 경우 어떠한 설정도 되어 있지 않습니다. 이게 바로 static module 입니다. 여기서 또 중요한 점은 .forRoot에 마우스를 올려보면 .forRoot는 Dynamic Module이라는 사실입니다. Dynamic module 은 설정이 적용되어 있는 module 입니다 그게 다에요 ! Users module 에서 ConfigModule 을 ConfigService 로 불러 쓴 것처럼..
라이브러리 없이 만드는 JWT - 1
라이브러리 없이 만드는 JWT - 1
2021.06.06Token 만들기 우선 token 을 만들기 위해서는 javascript 에서 쓸수있는 json web token 이 필요합니다. npm i jsonwebtoken npm i @types/jsonwebtoken --only-dev // sign with RSA SHA256 var privateKey = fs.readFileSync('private.key'); var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256'}); json web token 의 예제입니다. privateKey 에 제가 설정한 token key 가 들어가면 됩니다. 이를 위해 app module 을 수정할게요 ... imports: [ ConfigModule.forR..
Nestjs , Typeorm 에서 Hasing passwords
Nestjs , Typeorm 에서 Hasing passwords
2021.06.05비밀번호 단방향 암호화 데이터 베이스에 입력된 비밀번호를 그대로 노출하게 된다면 보안에 큰 결함이 생기게 됩니다. 그래서 입력된 비밀번호를 단방향 암호화를 통해 못생기게 바꿔줄 예정입니다. 먼저 암호화를 하기 전에 Listener 에대해 짚고 넘어가야 합니다. Typeorm listener Listener 는 기본적으로 entity 에 무슨일이 생길때 실행됩니다. entity 는 nestjs 에서 정의하는 데이터베이스 모델이에요 우리가 원하는것은 Beforeinsert 데코레이터 입니다. insert 가 되기전에 먼저 실행해주는 데코레이터 입니다. User class 에 BeforeInsert 부분을 추가합니다. 그리고 password 를 암호화 하기위해 "bcrypt" 를 사용합니다. bcrypt np..
Nestjs - User model
Nestjs - User model
2021.06.01nest g mo users로 모듈을 생성합니다. 이전에 연습삼아 만들고 있었던 레스토랑 모듈은 빼주도록 하겠습니다. entities 에서도 빼줄게요 imports 에 UsersModule 이 잘 추가되었습니다. users 폴더 안에 entities 폴더를 만들고 user.entity.ts 파일을 만들게요 user.entity.ts 는 database 모델을 정의하기 위한 ts 파일입니다. TypeOrmModule 의 syncronize 값을 True 로 바꿔주면 user.entity.ts 에서 정의한 Column 들을 그대로 데이터베이스에 반영합니다. user.entity.ts import { Column, Entity } from 'typeorm'; type UserRole = '..
Nestjs - Typeorm Repository 사용하기
Nestjs - Typeorm Repository 사용하기
2021.05.31repository import restaurants 라는 App 안에서 resturants.module.ts 에서 entities 안에 정의된 모델을 import 해야 합니다. TypeOrmModule.forFeature() 안에 배열 형식으로 entities 안에 정의된 모델을 import 합니다. DB에 접근할 수 있는 service 만들기 restaurants/restaurants.service.ts 파일을 만든뒤 다음과 같이 작성합니다. 그런다음 restaurants.resolver.ts 로 이동하여 constructor(private readonly restaurantService: ResaurantService) {} 를 추가합니다. 마지막으로 restaurants.module.ts 에서 p..
TypeORM setup 과 Nestjs Config
TypeORM setup 과 Nestjs Config
2021.05.23postgresql 을 사용할 것이고 postgresql 이 설치되어 있따는 가정하에 진행 합니다. 실행 환경은 MAC OS 입니다. nestjs 에서 typeorm 을 사용하기 위해서 다음과 같이 설치합니다. npm i --save @nestjs/typeorm typeorm pg app.module.ts import { Module } from '@nestjs/common'; import { ConfigModule } from '@nestjs/config'; import { GraphQLModule } from '@nestjs/graphql'; import { TypeOrmModule } from '@nestjs/typeorm'; import { RestaurantsModule } from './res..