일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java
- typescript
- html
- 인접행렬
- Spring
- GraphQL
- bean
- OOP
- 알고리즘
- css
- dfs
- 탐욕법
- TIL
- Kubernetes
- 프로그래머스
- MySQL
- Interceptor
- javascript
- winston
- node.js
- puppeteer
- 자료구조
- 코딩테스트
- LifeCycle
- Deep Dive
- JWT
- REST API
- 인접리스트
- nestjs
- Linux
- Today
- Total
목록전체 글 (241)
처음부터 차근차근
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/zM9I8/btsBB9T6qpc/EuKQQKtzVMTKoXLFAYX3Zk/img.png)
서버가 클라이언트 인증을 확인하는 방식으로는 대표적으로 쿠키, 세션 토큰 3가지 방식이 존재합니다. 이번 포스팅은 쿠키 세션, 토큰이을 만든 이유, 인증 방식에 대해서 알아보겠습니다. HTTP의 특징과 쿠키, 세션을 사용하는 이유 쿠키, 세션, 토큰 등을 사용해 클라이언트 인증을 확인하는 이유는, HTTP 프로토콜의 특성이자 약점인 Connectionless, stateless한 특성을 보완하는 이유입니다. 기본적으로 HTTP는 Connectionless와 stateless한 특성을 가지고 있습니다. Connectionless : 클라이언트가 요청을 한 후 응답을 받으면 그 연결을 끊어버리는 특징 헤더에 keep-alive라는 값을 줘서 Connection을 재활용하는데, HTTP 1.1에서는 이것이 D..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cJMsnJ/btsBC03maSm/Xa0weCN6P4avtiNWfVXyO0/img.png)
Database(DB) 데이터베이스는 전자적으로 저장되고 체계적인 데이터 모음입니다. 여기에는 단어, 숫자, 이미지, 비디오 및 파일을 포함한 모든 유형의 데이터가 포함될 수 있습니다. AWS 데이터베이스를 한 마디로 정의하자면 '데이터의 집합'이라고 할 수 있습니다. 간단한 예시로, 우리가 오늘 보내거나 받은 카톡 메세지, 버스/지하철에서 찍은 교통카드, 카페에서 구매한 아이스 아메리카노의 정보가 모두 데이터이며, 이는 데이터베이스에 기록됩니다. Database는 왜 필요한가?? 데이터를 저장하고 조회한다는 관점에서 보면, 간단히 우리가 파일들을 폴더에 저장하여 정리하고 파일을 검색해서 조회하는 데이터 저장소와 비슷해 보일 수 있습니다. (잘 정리되어 있는 외장하드 직박구리 폴더..?) 그러나, 데이터..
오늘 한 일 회사 기술면접 진행 Survey-test Refactoring 기업 면접 진행 기술 면접을 진행하였다. NestJS에 대한 질문뿐만 아니라 DB설계와 API 설계 시 확장성에 대한 질문을 많이 받았다. 또한 현재 내가 설계한 비즈니스 로직에 대해 어떤 문제점이 있는지도 한번 고민하게 되었다. 내가 설계한 DB에 대해서 확장성, 기능적인 문제에 대해 고려하여 설계하였는가?? Entity 설계 시 TypeORM의 강점 중 하나인 Array 타입을 적용 그러나 확장성, 기능적인 문제에 대한 고려 부분에서는 미숙한 점이 있었다. 1. 설문지 답안이 제출된 상태에서 어떠한 설문지 문항의 점수가 수정되었을 경우, 제출된 답안의 점수는 어떻게 수정할 수 있을까? 2. 현재 도메인은 Survey 하나인데..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bCxP1X/btsBlakYQwq/S948V1tEVuCRZxQu9MJZJK/img.png)
NestJS에서는 Custom Exception을 구현할 수 있습니다. Custom Exception을 구현하여 Production 환경에서는 물론 개발 환경에서도 더 쉽고 빠른 디버깅이 가능하도록 구현할 수 있습니다. 저는 Custom Exception을 구현하여 다음과 같은 기능을 구현했습니다. message가 아닌 errorCode를 구현하여 클라이언트에서 예외를 명확하게 구분할 수 있도록 수정 일반 예외처리(설문지 조사 실패, ID 로그인 실패 등)과 서버에서 발생한 치명적인 에러(ORM Error, Server 자체 에러)를 구분하고, 치명적인 에러의 경우 StatusCode를 500으로 일괄 처리하며, 서버 문제를 외부에 노출시키지 않도록 처리 Exception을 직접 구현하여 코드 레벨에서 ..
이번에는 Winston을 통한 NestJS Logger Interceptor를 구현해보겠습니다. 저번에 Winston을 NestJS App에 초기 설정을 하였는데, 이 부분을 먼저 읽고 오시면 도움이 됩니다. [NestJS] Winston Logger 초기 설정 및 Logger 사용 이번 시간에는 NestJS에 Logger를 적용해보겠습니다. GraphQL 과제에서 Logging 기능을 추가해야 되기 때문에, 공부할 겸 적용시켰습니다. Log?? 컴퓨팅에서 로그파일은 운영체제나 다른 소프트웨어가 실 hangju95.tistory.com 사용 의도 접속한 사람의 IP와 자주 사용하는 정보를 기록하기 위해 brutal force 공격을 통해 접속을 많이 하는 경우 Ban 처리도 가능할 것으로 기능 구현 예정..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/EEjm0/btsBgKukxrk/7Yk1ZJSt8lLnaZklYnwKO0/img.png)
이번 시간에는 NestJS에 Logger를 적용해보겠습니다. GraphQL 과제에서 Logging 기능을 추가해야 되기 때문에, 공부할 겸 적용시켰습니다. Log?? 컴퓨팅에서 로그파일은 운영체제나 다른 소프트웨어가 실행 중에 발생하는 이벤트나 각기 다른 사용자의 통신 소프트웨어 간의 메시지를 기록한 파일이다. 로그를 기록하는 행위는 logging이라고 한다. -Wikipidia Server 구축 시 Logging 작업은 굉장히 중요합니다. Product 환경에서 에러가 발생 시, 문제가 어디에서 발생했고 해당 코드는 어디에 있는지 추적하기 편하게 해줍니다. 또한 사용자 접속 시 Ip 기록을 하여 접속자 수, 접속 기록 등을 확인할 수도 있습니다. 로그 관리는 개발자에게 필수이기 때문에 한번 적용해보겠습..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cyFoWo/btsA8NLBJUg/RKSv4XkmPHvqe0ZLaZpY8K/img.png)
이번 포스트는 GraphQL의 Mutation에 대해 다루겠습니다. Resolver나 초기 설정에 대해 궁금하시다면 해당 글을 확인하면 됩니다. [NestJS] GraphQL Resolvers 저번 시간에는 NestJS에 GraphQL 초기 설정을 진행했습니다. 안 보고 오신분들이라면 한번 쯤 보고 오시는 것을 추천드립니다. [GraphQL] NestJS에서 GraphQL 초기 설정 GraphQL이란? GraphQL에 대한 상세한 설 hangju95.tistory.com [GraphQL] NestJS에서 GraphQL 초기 설정 GraphQL이란? GraphQL에 대한 상세한 설명이 적혀 있습니다. [GraphQL] GraphQL이란? GraphQL이란? GraphQL은 API를 위한 쿼리 언어이며 이미..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bHnT5q/btsA7qJdIvv/mcWQdokvkF7k0KT8LOIha0/img.png)
저번 시간에는 NestJS에 GraphQL 초기 설정을 진행했습니다. 안 보고 오신분들이라면 한번 쯤 보고 오시는 것을 추천드립니다. [GraphQL] NestJS에서 GraphQL 초기 설정 GraphQL이란? GraphQL에 대한 상세한 설명이 적혀 있습니다. [GraphQL] GraphQL이란? GraphQL이란? GraphQL은 API를 위한 쿼리 언어이며 이미 존재하는 데이터로 쿼리를 수행하기 위한 런타임 입니다. GraphQL은 AP hangju95.tistory.com 이번 시간에는 NestJS에 Resolver를 만들어보겠습니다. Object type GraphQL은 Query를 통해 Data를 받아오는데, 이때 Schema가 사용됩니다. 따라서, Resolver를 만들기 전 우리는 Gra..
GraphQL이란? GraphQL에 대한 상세한 설명이 적혀 있습니다. [GraphQL] GraphQL이란? GraphQL이란? GraphQL은 API를 위한 쿼리 언어이며 이미 존재하는 데이터로 쿼리를 수행하기 위한 런타임 입니다. GraphQL은 API에 있는 데이터에 대한 완벽하고 이해하기 쉬운 설명을 제공하고 클라이 hangju95.tistory.com GraphQL installation GraphQL을 사용하기 위해선 아래에 있는 패키지가 필요합니다. # For Express and Apollo (default) $ npm i @nestjs/graphql @nestjs/apollo @apollo/server graphql NestJS에서는 두 가지 방법으로 GraphQL을 build할 수 있도..
Spring, NestJS 등 객체 지향 프레임워크를 사용하면 항상 나오는 제어 역전과 의존성 주입은 어떻게 동작하는 것이고, 왜 중요한 것일까요? NestJS와 Spring의 IoC는 비슷한 것 같으니, NestJS를 통해 정리해보겠습니다. 1. Inverse of Control 제어 역전을 한 마디로 표현해보겠습니다. 나 대신 프레임워크가 코드를 동작시키고 제어한다. 입니다. 단순한 Javascript 예시를 통해 알아보겠습니다. // 객체를 생성하는 Class class IoCExample { print() { console.log("hello world"); } } // 객체 생성 (개발자가 직접 코드를 구현) const object = new IoCExample(); // 생성한 객체의 메소드를..