IT Study 59

[NestJS] Swagger 설치 및 적용

Swagger API를 따로 작성할 필요없이 코드 기반으로 API를 문서로 자동화해주는 도구이다 API와 코드를 따로 작성하면서 빼먹고 놓치는 부분이 많았는데, Swagger를 통해서 코드를 수정하면서 API를 같이 수정할 수 있다는 것이 큰 장점이다. 0. Swagger 설치 NestJS v9 이상 부터는 @nesjs/swagger fastify-swagger 모듈을 설치하면 된다 npm install --save @nestjs/swagger 1. swagger 파일 생성 import { INestApplication } from '@nestjs/common'; import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger'; export functi..

IT Study/JavaScript 2024.01.08

[NestJS] Nest.js 시작하기

Nest JS란? Node.js 기반의 Express와 같은 서버 개발 프레임워크 중 하나이다. Nest.js는 Express 위에 구축된 프레임워크로, Express의 기능을 확장해서 체계적이고 모듈화된 구조를 제공한다. Express는 정해진 아키텍처가 없어서 개발자마다 다른 구조로 작성하는 경우가 많았다. 다른 사람들이 분석하는데 어려움이 있고 아키텍처부터 파악을 해야해서 코드의 가독성이 떨어진다. 또한 Nest.js는 TypeScript 언어 기반으로 작성이 되어있어서 정적 타입 검사, 객체지향 프로그래밍 등의 기능을 제공한다. 따라서 개발 단계에서의 버그들을 사전에 방지하고 코드의 재사용성과 유지 보수성을 높여준다. Nest.js 시작 1. Nest.js 설치하기 npm i -g @nestjs/..

IT Study/JavaScript 2024.01.07

[NestJS] Repository Pattern

Repository Design Pattern Repository 패턴은 Data Layer를 app의 나머지 부분에서 분리하는 디자인 패턴이다. Service Layer와 Data Source Layer 사이에서 중재자 역할을 하는 Layer다. Service Layer에는 비즈니스 로직인 서비스의 핵심이 되는 로직이 존재한다. Repository 패턴을 적용하지 않으면 비즈니스 로직에서 바로 데이터 베이스에 접근하게 된다. 바로 접근하면 안되는 것일까? Service Layer에서 DB에 바로 접근이 가능하긴 하지만 몇 가지 문제점들이 발생할 수 있다. 프로젝트 진행시 코드가 분리되어있지 않아서 비즈니스 로직에만 집중하기 어렵다. 여러 개의 서비스가 있을 경우, 동일한 쿼리로 DB에 접근한다면 코드의..

IT Study/JavaScript 2024.01.07

[NestJS] 게시글 DB에 저장하기 (with PostgreSQL)

Nest.JS를 처음으로 학습하고자, 코치님께 인프런 무료 강의를 추천받았다 강의평도 좋고 설명도 잘 되어있어서 초보자가 듣기에 매우 좋은 것 같다 다만, 한 가지 문제가 발생했다. 강의가 2021년에 게시되어서 그 사이에 TypeORM 부분의 버전이 달라졌다 ! 강의에서 에러가 나는 부분은 구글링을 통해서 해결을 해야했다 우선 실습 중인 프로젝트는 '게시글 CRUD 구현'이다. 기존 강의 실습 코드 // board.repository.ts import { Board } from './board.entity'; import { EntityRepository, Repository } from 'typeorm'; @EntityRepository(Board) export class BoardRepository..

IT Study/JavaScript 2024.01.04

[RNN] RNN, LSTM, GRU 모델

RNN 실습 1 IMDB 데이터셋을 활용 LSTM 모델 활용 리뷰 감성분류, 긍정/부정으로 이진 분류 라벨링 IMDB 데이터는 훈련데이터와 테스트 데이터를 5:5 비율로 제공 라이브러리 불러오기 import tensorflow as tf from tensorflow.keras import layers, Sequential from tensorflow.keras.optimizers import Adam from tensorflow.keras.datasets import imdb from tensorflow.keras.preprocessing.sequence import pad_sequences IMDB 데이터셋 불러오기 def load_data(num_words, max_len): (X_train, y_t..

IT Study/ML & DL 2023.12.31

[CNN] OpenCV 실습 | 이미지 조각 순서변경, 프리윗 필터, 회선처리

오픈소스의 컴퓨터비전 라이브러리인 OpenCV를 활용해 CNN 실습 진행 실습1. 이미지 조각 순서 변경 전 import cv2 def solve_puzzle(img, piece_order): for idx, num in enumerate(piece_order): if idx == num: continue piece_idx = piece_order.index(idx) piece_order[idx] = piece_order[piece_idx] piece_order[piece_idx] = num r, c = img.shape[0] // 2, img.shape[1] // 2 p1_0, p1_1 = map(lambda x: x*r, divmod(num, 2)) p2_0, p2_1 = map(lambda x: x..

IT Study/ML & DL 2023.12.31

[DL/NLP] RNN 실습 (with. nsmc data)

0. 세팅 및 데이터 셋 확인 !pip install korpora from Korpora import Korpora Korpora 라이브러리를 활용해 데이터셋을 가져온다 Korpora 는 연구 목적으로 공유된 말뭉치들을 손쉽게 다운로드, 사용할 수 있는 기능을 제공해, Korpora 라이브러리 내에 다양한 말뭉치 데이터들이 있다 그 중에서 Naver 영화 리뷰 말뭉치인 nsmc 데이터를 활용할 것이다 데이터 셋 구성 nsmc_corpus = Korpora.load('nsmc') train_data = list(nsmc_corpus.train.texts)[:3000] test_data = list(nsmc_corpus.train.texts)[:1000] train_label = np.array(list(..

IT Study/ML & DL 2023.12.23

[DL/NLP] Word2Vec - CBOW & Skip-Gram 방식

Word2Vec word2Vec은 워드 임베딩 기법으로 단어를 벡터형태로 전환하는 기법이다. 2013년 토론토 대학에서 발표했으며 현재까지도 많이 활용되는 기법이다. 신경망 모델을 사용해서 말뭉치에서 단어들의 연관성을 학습한다. 즉 주어진 문맥에서 발생하는 단어를 예측하는 문제로 단어 임베딩 벡터를 학습한다. word2Vec에는 CBOW와 Skip-Gram 두 가지 방법이 있다. CBOW vs Skip-Gram CBOW: 주변 단어를 활용해 중간에 있는 단어 예측 Skip-Gram: 중간 단어를 활용해 주변에 있는 단어 예측 0. 사전 준비 1) 라이브러리 호출 from gensim.models import word2vec import list_file 2) 데이터 확인 1. Word2Vec 모델 정의 ..

IT Study/ML & DL 2023.12.23

[DL/CNN] CNN 실습 (with. MNIST data)

0. 데이터셋 확인 사용 데이터: train 5000개, test 1000개 이미지 데이터의 크기 28x28 데이터 특징: 2차원의 0~255 픽셀 값으로 구성 CNN의 input data format은 3차원(가로, 세로, 채널) => 전처리로 채널 차원을 추가해야한다 9개의 이미지 시각화 라벨 데이터 0~9까지의 10개의 값으로 라벨링 되어있다 => 전처리 시, 원핫 인코딩 진행 필요 1. 데이터 전처리 1) x 데이터 채널차원 추가 numpy의 expand_dims 함수를 통해 채널 차원을 추가해준다 np.expand_dims (arr, axis) arr: 차원을 확장할 배열 axis: 새로 추가될 차원의 위치(default: 0 -> 인덱스 0 앞에 새로운 차원을 추가하겠다) 실습에서는 axis에..

IT Study/ML & DL 2023.12.22

[Backend] AWS RDS와 Mysql 연결하기 (+에러해결)

AWS RDS란? AWS Relational Database Service(RDS)는 클라우드에서 간편하게 데이터베이스를 설치, 운영 및 규모 조정할 수 있는 관계형 데이터베이스 서비스이다. 유저가 사용하기 쉽도록 인프라 등을 자동화 시켜주고 유저들은 드포인트로 접속할 수 있도록 데이터베이스를 제공받는다. RDS를 사용하면 클라우드에서 관계형 데이터베이스를 간편하게 설정, 운영 및 확장할 수 있다. 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같은 시간 소모적인 관리 작업을 자동화하면서, 비용 효율적이고 크기 조정 가능한 용량을 제공한다. 제공하는 DB 엔진으로는 MS SQL Server, Oracle, MySQL, PostgreSQL, MariaDB, IBM Db2, Aurora가 있다. ..

IT Study 2023.12.17
반응형