전체 글71 Ubuntu MySQL 8.0 설치 ✔ 패키지 업데이트 & 업그레이드 $ sudo apt(or apt-get) update $ sudo apt(or apt-get) upgrade ✔ MySQL Server Install $ sudo apt(or apt-get) install -y mysql-server ✔ MySQL Secure $ sudo mysql_secure_installation VALIDATE PASSWORD COMPONENT을 사용해 암호의 강도 설정을 할 수 있다. 복잡한 비밀번호 설정은 "y" | "Y" 단순한 비밀번호 설정은 "아무 키" MySQL을 설치하면 자동으로 생성되는 익명의 유저가 있다. 익명의 유저 계정을 삭제는 "y" | "Y" 삭제하지 않으려면 "아무 키" 다른 게스트들이 원격 접속으로 root 계정에 접근하.. 2023. 8. 26. [NestJS] 파일 업로드(File upload) Multer ✔ 필요한 종속성 설치 Nest는 Express용 multer 미들웨어 패키지를 기반으로 하는 내장 모듈을 제공한다. $ npm i -D @types/multer ✔ 단일 파일 업로드 단일 파일을 업로드하려면 FileInterceptor()를 @UseInterceptors에 연결하고 @UploadedFile() 데코레이터를 사용하여 요청에서 file를 추출하면 된다. @Post('upload') @UseInterceptors(FileInterceptor('file')) uploadFile(@UploadedFile() file: Express.Multer.File) { console.log(file); } FileInterceptor()는 2개의 인수를 가진다. fieldName : multipart/fo.. 2023. 7. 25. [NestJS] Jest 단위 테스트 Mock ✔ 필요한 종속성 설치 $ npm i --save-dev @nestjs/testing ✔ Mock Repository Repository를 Mocking 하는 이유는 서비스 계층에서 비즈니스 로직을 검증해야 하는데 Repository를 의존하고 있다. 그래서 의존하는 것에 따라 테스트가 실패할 수도 있고 성공할 수도 있다. 그러므로 비즈니스 로직에 실패하거나 성공하는 게 아닌 다른 요소로 인해 실패할 수도 있기 때문에 의존하는 것들을 가짜로 Mock으로 만들어서 의존성을 배제하여 비즈니스 로직만 테스트하게 만든다. // users/users.service.ts import { Injectable } from '@nestjs/common'; import { Repository } from 'typeorm'.. 2023. 7. 22. [NestJS] Passport JWT 토큰 인증 구현 & 에러 핸들링 JWT(JSON Web Token)에 대한 내용은 아래의 글을 참조 JWT(JSON Web Token) 이 글은 NestJS에서 JWT, Passport-jwt를 사용하여 토큰 인증을 구현하다가 겪은 내용을 정리한 글이다. ✔ 필요한 종속성 설치 NestJS에서 JWT 토큰과 Passport-Jwt를 사용하기 위해서 먼저 필요한 종속성을 설치해야 한다. $ npm install --save @nestjs/passport passport @nestjs/jwt passport-jwt $ npm install --save-dev @types/passport-jwt ✔ 동작 흐름 로그인에 발급받은 토큰 값을 HTTP 헤더에 "Authorization: Bearer 토큰 값" 추가하고 요청 AuthGuard JW.. 2023. 7. 6. [Docker] Redis 설치 Docker 설치는 아래 글을 참조 Docker 설치 및 명령어 정리 해당 내용은 Ubuntu 22.04.2 LTS 버전에서 진행 ✔ Docker Redis Image 다운로드 # redis 최신 버전 다운(아래의 2개가 동일함) $ docker pull redis $ docker pull redis:latest # redis 지정 버전 다운 $ docker pull redis:7.0.11 Docker Image 정상적으로 다운로드되었는지 아래의 명령어로 확인할 수 있다. $ docker images docker 명령어를 사용할 때 관리자 권한인 sudo를 사용하지 않게 권한을 주려고 하면 맨 위의 Docker 설치 및 명령어 정리 글을 참조하면 된다. ✔ Docker Redis Container 생성 .. 2023. 6. 28. DFS (Depth-First Search) BFS가 궁금하면 아래 글을 참조 BFS (Breadth-First Search) ✔ DFS(Depth-First Search) DFS는 깊이 우선 탐색이라고도 부르며, 그래프를 탐색하는 방법 중 하나이다. 하나의 정점으로부터 시작해 차례대로 모든 정점들을 한 번씩 방문하는 것으로 즉, 시작 노드에서 출발해 인접한 노드(가까운 노드)를 먼저 탐색하고 그 정점의 최대 깊이까지 탐색을 마친 후 돌아와 다른 분기로 다시 탐색하는 알고리즘이다. 넓게 탐색하기 전에 깊게 탐색 스택 or 재귀를 사용하여 구현 모든 노드를 방문할 때 사용 ※ 중요한 점은 방문한 정점은 다시 방문하지 않아야 한다. DFS는 스택으로도 구현할 수 있지만 재귀로 구현하는 편이 더 깔끔해서 재귀로 더 많이 구현하는 것 같다. DFS와 BF.. 2023. 6. 25. BFS (Breadth-First Search) DFS가 궁금하면 아래 글을 참조 DFS (Depth-First Search) ✔ BFS(Breadth-First Search) BFS는 너비 우선 탐색이라고도 부르며, 그래프를 탐색하는 방법 중 하나이다. 하나의 정점으로부터 시작해서 차례대로 모든 정점들을 한 번씩 방문하는 것으로 즉, 시작 노드에서 출발해 인접한 노드(가까운 노드)를 먼저 탐색하고 현재 깊이의 모든 노드를 탐색하면서 가는 알고리즘이다. 깊게 탐색하기 전에 넓게 탐색 두 정점 사이의 최단 경로를 구할 때 사용 같은 가중치를 가진 그래프에서 사용 큐(queue)를 사용하여 구현 ※ 중요한 점은 방문한 정점은 다시 방문하지 않아야 한다. 만약 가중치가 다른 그래프일 때 최단거리를 구하는 알고리즘은 다익스트라, 벨만포드 등으로 구현해야 한다.. 2023. 6. 17. [NestJS] Configuration 설정 & TypeORM 연결 ✔ 필요한 종속성 설치 Configuration과 TypeORM을 사용하기 위해서 Dependency를 설치해야 한다. $ npm i --save @nestjs/config $ npm i --save @nestjs/typeorm typeorm mysql2 @nestjs/config 패키지는 내부적으로 dotenv를 사용한다. @nestjs/config 패키지를 사용하기 위해선 TypeScript 4.1 이상이 필요하다. ✔ TypeORM 연결 NestJS에서 TypeORM을 연결하는 방법은 여러 방법이 존재한다. AppModule의 TypeOrmModule.forRoot에 직접 주입 json 파일 설정 ts 파일 객체에 설정 후 Root 인수에 객체 주입 ConfigService 사용 1. 직접 주입 A.. 2023. 5. 31. MySQL 유저 계정 생성 ✔ MySQL 유저 계정 생성 mysql 접속 $ mysql -u root -p Enter password: 패스워드 입력 계정 생성 CREATE USER '생성할 계정명'@'localhost' IDENTIFIED BY '패스워드'; Query OK, 0 rows affected 나오면 성공 mysql을 docker image로 받아서 사용하는 경우(ip부분에 172.17.0.1) 172.17.0.1은 저의 ip이기 때문에 자기 자신의 ip를 적으면 됩니다. ifconfig (윈도우일 경우 ipconfig)으로 docker ip 확인 CREATE USER '생성할 계정명'@'172.17.0.1' IDENTIFIED BY '패스워드'; Query OK, 0 rows affected 나오면 성공 생성한 계정.. 2023. 5. 5. 이전 1 2 3 4 5 6 7 8 다음