분류 전체보기 65

[DB] 트랜잭션 (feat. nest.js, PostgreSQL) +에러해결

트랜잭션 트랜잭션, DB가 처리하는 명령어의 최소 단위로 데이터를 조작하고 명령어를 내리는 조작 단위이다. 트랜잭션을 한국어로 번역하면 “거래” 이다. 즉 하나의 거래를 안전하게 처리하도록 보장해주는 작업이다. 실생활의 예시로 이해를 해보자. 계좌이체를 하는 상황을 생각해보고, A가 B에게 1만원을 보내야 한다고 가정해보자. 만약 트랜잭션이 없을 경우, (1) A가 B에게 1만원 보냄. --중간 처리과정에서 오류 발생-- (2) B는 1만원을 받지 못함 A 잔고: -10,000원 / B 잔고: 유지 트랜잭션이 있다면, 트랜잭션 기능으로 commit과 rollback의 작업 가능하도록 한다. 위의 상황에서 (1)번은 성공했지만 중간 처리과정의 오류로 (2)번에서는 실패했을 때 거래 전의 상태로 돌아갈 수 ..

IT Study/DB 2024.01.26

[TypeORM] QueryBuilder | SELECT 절에서 as 사용하기 (with. getMany vs getRawMany)

사용 언어 및 Stack: Nest.js, TypeORM, PostgreSQL 맞닥드린 문제: alias를 활용해서 변수명을 변경하고 싶다. 기본적인 SQL문은 SELECT 절에서 'as 별명'을 통해 변수명을 변경한다. 그러나 TypeORM에서도 동일하게 as를 넣어보면 적용이 되지 않는다는 것을 알 수 있다. "as"를 적용한 totalCalories 컬럼만 출력되지 않았다. 구글링 결과, getMany()가 아닌 getRawMany()를 적용해보았다. 변수명들이 변경된 것을 볼 수 있다. getMany() vs getRawMany() [ TypeORM 문서 ] " There are two types of results you can get using select query builder: entit..

IT Study/DB 2024.01.24

[CS] 절차지향 vs 객체지향 프로그래밍

언어를 처음 배우기 시작하면, "객체지향 프로그래밍이다"는 말을 자주 볼 수 있다. 내가 아는 객체라면 { } 객체 타입 이것밖에 안떠오르는데 객체지향 프로그래밍이 도대체 무엇일까? 객체지향와 절차지향를 비교해서 이해해볼 수 있다. 두 개념을 알기 위해서는 '프로시저'와 '의존'을 알아야 한다. '프로시저 '와 '의존성 '을 먼저 짚고 넘어가보자. 프로시저 프로시저는 데이터를 활용해서 로직을 처리하는 함수를 말한다. 특정 프로세스를 절차적으로 기술해놓은 것으로 절차적으로 처리하고자 하는 명령어들의 집합을 의미한다. 추가적으로, 프로시저와 함수의 차이는 무엇일까? 함수도 '명령어 집합'이라는 의미에서 일종의 프로시저로 볼 수 있다. 둘을 비교하는 것이 애매하기는 하나 강력한 차이라면 'side effect..

IT Study/CS 2024.01.11

[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
반응형