[NestJS] TypeORM
TypeORM node.js 기반 TypeScript로 작성된 객체 관계형 매퍼 라이브러리 TypeORM 특징 & 이점 모델을 기반으로 데이터베이스 체계 자동 생성 가능 데이터베이스에서 개체 쉽게 삽입, 업데이트 및 삭제 가능 테이블 간의 매핑 간단한 CLI 명령 제공 ORM(Object Relational Mapping) 객체와 관계형 데이터베이스의 데이터를 자동으로 변형 및 연결하는 작업 객체와 데이터베이스의 변형에 유연하게 사용 가능 Entity? 데이터베이스 테이블로 변환되는 Class이므로 클래스를 생성한 뒤 그 안에 컬럼들을 정의한다. @Entity() : Board 클래스가 엔티티임을 나타냄 @PrimaryGeneratedColumn() : id 컬럼이 Board 엔티티의 기본키 임을 나타냄..
2024.01.15
[NestJS] Pipe 이용
Pipe? @Injectable() 로 주석이 달린 클래스 data transformation 입력 데이터를 원하는 형식으로 변환 data validation 입력 데이터를 평가하고 유효성을 검사 메소드가 호출되기 직전에 파이프를 삽입하고 파이프는 메소드로 향하는 인수를 수신하고 이에 대해 작동 Binding Pipes Handler-level Pipes 핸들러 레벨에서 @UsePipes 를 이용해서 사용한다. Parameter-level Pipes 파라미터 하나에만 해당 Global Pipes 클라이언트에서 들어오는 모든 요청에 적용되며 bootstrap(main.ts) 코드에 삽입한다. Built-in Pipes Nest JS의 기본적으로 사용할 수 있게 만들어 놓은 6가지 파이프 Validation..
2024.01.15
no image
[NestJS] CRUD 구현
In-Memory 방식의 구현 💡 우선 따로 DB 연동은 하지 않고 로컬 메모리와 연결하여 구현한다. 📄 boards.service.ts @Injectable() export class BoardsService { private boards = []; getAllBoards() { return this.boards; } } 📄 boards.controller.ts import { Controller, Get } from '@nestjs/common'; import { BoardsService } from './boards.service'; @Controller('boards') export class BoardsController { constructor(private boardsService: Boar..
2024.01.15
no image
[NestJS] NestJS 기본 요소
NestJS는 기본적으로 node.js의 Express를 기본 토대로 하여 만들어졌다. Express, Fastify 프레임워크를 래핑하여 동작한다. platform-express or platform-fastify 별도의 설정이 없으면 @nestjs/platform-express 이 기본적으로 사용된다. NestJS는 Angular로부터 영향을 많이 받았다. NestJS의 철학 Express에서 부가적으로 타입스크립트, 로깅을 사용하려면 새로 설정을 해줘야하는 번거로움이 있다. 이를 단순히 명령어 입력을 통해 구현할 수 있다. NestJS 시작하기 $ npm i -g @nestjs/cli $ nest new nestjs-test NestJS 기본 요소 nestjs-board-app ├── .eslint..
2024.01.15
no image
[NestJS] Overview
1. OVERVIEW First steps Nest는 타입스크립트와 순수 자바스크립트 둘 다 호환 가능 그러나 바닐라 자바스크립트를 이용하려면 바벨 컴파일러를 함께 사용해야함 1. 설정 Node.js 16 이상부터 가능 # 다음 명령어로 간단하게 새 프로젝트 생성 가능 $ npm i -g @nestjs/cli $ nest new project-name 프로젝트 구조는 다음과 같이 구성된다. src ├ app.controller.spec.ts # 컨트롤러 유닛 테스트 ├ app.controller.ts # 싱글 라우트에 관한 기본적인 컨트롤러 ├ app.module.ts # 애플리케이션의 루트 모듈 ├ app.service.ts # 싱글 메소드에 관한 기본적인 서비스 ┕ main.ts # Nest 애플리케..
2023.06.28
no image
[WebRTC] mediasoup로 webRTC SFU 구현하기
What is mediasoup? SFU(Selective Forwarding Unit) SFU는 오디오, 비디오 스트림을 엔드포인트로 부터 받고 다른 모든 사람들에게 미디어를 전달한다. node.js Library 서버 없이는 작동될 수 없으며 반드시 node.js 애플리케이션 내에서 임포트되어야한다. Signaling agnostic 💡 agnostic : '불가지론자, 불가지론의'. 뭐 이런 뜻이라는 데 그냥 '독립적인' 정도로 해석하면 될 것 같다. 시그널링 프로토콜이 필요하지 않다. 모든 존재하는 WebRTC 엔드포인트에 지원이 가능하다. mediasoup :: Overview Cutting Edge WebRTC Video Conferencing mediasoup.org SFU 하나의 피어는 오..
2022.10.02
no image
[WebRTC] WebRTC Overview, NAT, STUN
WebRTC Overview Stands for Web Real-Time Communication 라이브 스트리밍, 라이브 채팅을 위해 Peer to Peer 방식으로 연결한다. P2P방식은 매우 빠르며 브라우저간 대용량 커뮤니케이션을 가능하게 해준다. WebRTC는 표준화 된 API를 제공한다. 브라우저간 통신뿐만 아니라 mobile, IOT 디바이스 간에도 통신을 제공한다. P2P 통신 지연 시간이 존재한다. 역 프록시던 TURN 허브던 상관없이 트래픽 프로세스를 보고 트래픽을 복호화 하여 상대 리소스에 접근한다. WebRTC 통신 과정 A wants to connect to B A는 B의 Public 주소로 연결할 수 있는 방법을 탐색한다. B는 A의 Public 주소로 연결할 수 있는 방법을 탐색..
2022.08.07
no image
[Spring] Spring Security
Spring Security Spring 기반의 애플리케이션 보안을 담당하는 스프링 하위 프레임워크 💡 Warm Up Principal : 리소스에 접근하는 대상 Authentication : 인증 - 사용자가 본인이 맞는 지 확인 who are you? Authorization : 인가 - 사용자가 리소스에 접근할 수 있는지 확인 what are you allowed to do? Web Security 클라이언트는 애플리케이션에 요청을 보내고 컨테이너는 요청 URI의 경로를 기반으로 어떤 필터와 서블릿을 적용할 지 결정한다. 세부적으로는 위와 같은 구조로 매핑되는 데, Spring Security의 내부 필터의 사용에 대해서 프로그래머가 관여할 필요는 없다. 애플리케이션내 모든 @Bean 에 Sprin..
2022.05.19
[Spring] DI(Dependency Injection)
💡 클린코드 작성 원칙 응집도는 높이고 결합도는 낮춘다. 응집도(Cohesion) : 모듈 내부) 구성요소 간의 연관도 응집도가 낮다? → 각 모듈이 모두 따로 놀고 있으며 단순히 모두 다른 역할을 수행하는 모듈들을 한데 모아놓기만 함 결합도(Coupling ) : 모듈 외부) 모듈간의 상호의존성 결합도가 높다? → 각 모듈이 비슷한 기능을 수행할 가능성이 높음 DI(Dependency Injection) 의존성 주입 class Feed() { ... } class Meet extends Feed { ... } class Bone extends Feed { ... } class Puppy { private Feed feed; public Puppy() { this.feed = new Meet(); // ..
2022.05.04