일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Spring
- java
- css
- REST API
- winston
- 인접행렬
- LifeCycle
- puppeteer
- dfs
- nestjs
- Linux
- Kubernetes
- html
- JWT
- MySQL
- TIL
- node.js
- 탐욕법
- bean
- 인접리스트
- 알고리즘
- Deep Dive
- 프로그래머스
- typescript
- Interceptor
- 코딩테스트
- javascript
- GraphQL
- OOP
- 자료구조
- Today
- Total
목록분류 전체보기 (241)
처음부터 차근차근
NestJS Request Lifecycle 이번 글에서는 NestJS Application에서 어떠한 Request가 오고 나서 Response의 생명주기를 다룹니다. NestJS는 Node.js의 Express가 해결해주지 못했던 아키텍쳐에 대한 고민을 해결하기 위해 VueJS, AngularJS 등을 참고하여 만든 백엔드 프레임워크입니다. 그렇기 때문에 NestJS에는 클라이언트의 요청을 처리하기 위해 프레임워크가 제공하는 일련의 생명주기가 존재합니다. 위 그림을 예시로 봤을때 큰 틀에서 보면 Middleware -> Guard -> Interceptor -> Pipe -> Controller -> Interceptor 이러한 순서대로 처리됩니다. 그리고 각 단계에서 global, controlle..
Rest API 중심 규칙 Rest API 설계 시 가장 중요한 항목은 다음의 2가지로 요약할 수 있다. URI는 정보의 자원을 표현해야 한다. 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다. 다른 것들은 다 잊어도 위 내용은 항상 지켜야 한다. 참고 리소스 원형 도큐먼트 : 객체 인스턴스나 데이터베이스 레코드와 유사한 개념, 간단하게 문서 혹은 객체로 이해 컬렉션 : 서버에서 관리하는 디렉터리라는 리소스, 문서들의 집합으로 이해하면 편하다. 스토어 : 클라이언트에서 관리하는 리소스 저장소 1. URI는 정보의 자원을 표현해야 한다. resource는 동사보다는 명사를, 대문자 보다는 소문자를 사용한다. resource의 도큐먼트 이름으로는 단수 명사를 사..
오늘 한 일 NestJS 기본 정리 GraphQL 정리 진행 REST API 설계 원칙 기업 지원 NestJS 기본 정리 NestJS의 기본 중 Controller, Provider, Module을 정리하였다. 기본을 적으면서, 내가 부족한 것들이 무엇인지 깨달았다. 기본적인 내용이기에, 빠르게 공부해야 겠다는 생각을 하였다. NestJS 프로젝트를 진행하면서, 부족한 기본기들을 느껴 공식 문서를 확인하고 공부를 진행했다. 아직 해야할 게 많지만, 천천히 하나씩 공부하면 될 것이라는 판단이 느껴졌다. GraphQL 정리 GraphQL을 정리하면서 왜 이것을 사용하는지 깨달았다. RestAPI의 Overfetch, underfetch 문제를 단순하게 해결하고, 한번의 호출을 통해 많은 데이터를 가져온..
Module이란? Module은 Nest가 Application structure를 Organize하는데 사용되는 Metadata를 제공한다. Nest에는 기본적으로 Root Module이라는 것이 존재한다. 루트 모듈은 Nest가 애플리케이션 그래프(Nest가 module 과 Provider의 relationship & dependencies를 해결하는데 사용되는 내부 date 구조)를 구축하는데 사용하는 시작점이다. 또한 Nest에서는 모듈 간 연결이 효율적으로 가능하다. root module 외에도 추가로 밀접하게 연관된 기능들을 모아 여러개의 모듈을 구성하는 것을 권장하며, Nest에서는 이를 효율적으로 가능하도록 도와준다. @Module 데코레이터는 Nest가 App 구조를 만들 때 사용할 수 ..
Provider란? Provider(제공자)는 Nest의 기본 개념이다. Service, Repository, helper, factory 등 많은 기본 Nest Class들이 Provider로 취급될 수 있다. Provider는 의존성을 주입할 수 있다.(객체가 서로 다양한 관계를 만들 수 있으며, 이를 해주는 역할을 NestJS의 런타임이 맡고 있다.) 대표적으로 Controller에 요청을 반는 핸들러를 선언하고, 복잡한 로직은 Provider에 위임한다. Nest는 객체지향적은 의존관계를 설정할 수 있기 때문에 SOLID 원칙을 따르는 것을 권장한다. Service 간단한 Service 로직을 만들어보자. import { Injectable } from '@nestjs/common'; import..
GraphQL이란? GraphQL은 API를 위한 쿼리 언어이며 이미 존재하는 데이터로 쿼리를 수행하기 위한 런타임 입니다. GraphQL은 API에 있는 데이터에 대한 완벽하고 이해하기 쉬운 설명을 제공하고 클라이언트에게 필요한 것을 정확하게 요청할 수 있는 기능을 제공하며 시간이 지남에 따라 API를 쉽게 진화시키고 강력한 개발자 도구를 지원합니다. GraphQL은 페이스북에서 만든 쿼리 언어이며, 최근 핫한 쿼리 언어 중 하나입니다. Graph QL(이하 gql)은 SQL과 마찬가지로 쿼리 언어이다. SQL은 데이터베이스 시스템에 저장된 데이터를 효율적으로 가져오는 것이 목적이지만, gql은 웹 클라이언트가 데이터를 서버를 효율적으로 가져오는 것이 목적이다. 즉, gql의 문장은 주로 클라이언트 시..
Controller란? Controllers are responsible for handling incoming requests and returning responses to the client. -> 들어오는 요청에 반응하고, 적절한 응답을 보낸다. 컨트롤러의 목적은 특정 요청에 응답을 반환하는 것 여기서 routing mechanism이 도입되는데, 이것은 어떠한 요청에 어떤 컨트롤러가 반응할 지 결정한다. 각각의 컨트롤러는 하나 이상의 route를 가지고, 각각의 route는 다른 행동을 수행할 수 있다. Nest에서는 기본적으로 decorator를 통해 컨트롤러를 생성한다. Decorators associate classes with required metadata and enable Nest ..
오늘 한 일 채용관련 코딩 과제 진행 코딩 과제 진행 GraphQL을 통한 Backend Server 구축이였다. GraphQL을 처음 사용해봤으며, NestJS에 대해 조금 더 알게 되었다. 앞으로 블로그에 정리해야 할 내용을 생각해봤다. 1. NestJS Lifecycle 관련 정리 진행 저번 로그인, 로그아웃 과제에서 NestJS Lifecycle 관련 과제 진행한 것을 아직까지 정리하지 못했다. NestJS에 대해서 조금 더 정리해야된다는 필요성을 느끼게 되었다. 2. GraphQL 정리 진행 이번 과제를 통해 GraphQL을 조금 알게 되었으며, 블로그 정리를 하면서 더욱 발전할 수 있을 것 같다. 3. Javascript, Typescript 관련 정리 진행 이번 과제에서 Promise.a..
Binary Tree(이진 트리) 부모 노드의 자식 노드 수가 2개 이하로 구성되어 있는 Tree를 의미한다. 이진 트리는 다음과 같이 분류 할 수 있다. 정이진 트리(full binary tree): 자식 노드가 0 또는 2개인 이진 트리를 의미합니다. 완전 이진 트리(complete binary tree): 왼쪽에서부터 채워져 있는 이진 트리를 의미합니다. 마지막 레벨을 제외하고는 모든 레벨이 완전히 채워져 있으며 마지막 레벨의 경우 왼쪽부터 채워져 있습니다. 변질 이진 트리(degenerate binary tree): 자식 노드가 하나밖에 없는 이진 트리를 의미합니다. 포화 이진 트리(perfect binary tree): 모든 노드가 꽉 차 있는 이진 트리를 의미합니다. 균형 이진 트리(balan..
Tree란? 트리는 자식노드와 부모 노드로 이루어진 계층적인 구조를 가지며, 무방향 그래프의 일종이자 사이클이 없는(순환 구조를 갖지 않는) 자료구조를 의미한다. 비선형 자료구조로 계층적 관계를 표현한다. Tree로 이루어진 집합을 숲(forest)이라고 한다. Tree의 특징 그래프의 한 종류이며, '최소 연결 트리'라고도 불린다. 계층 모델이다. 트리는 DAG(Directed Acyclic Graphs, 방향성이 있는 비순환 그래프)의 한 종류이다. Loop나 circuit이 없다. 당연히 self-loop도 없다. 즉, 사이클이 없다. 노드가 N개인 Tree는 항상 N-1개의 간선(edge)을 가진다. 임의의 두 노드 사이의 경로는 유일무이하게 존재한다. 즉, 트리 내의 어떤 노드와 어떤 노드까지의..