개발(58)
-
Nest.js 탐험기3 (부록) - cache를 커스텀 해보자
1. 개요 Nest.js에서는 유용한 cache module을 제공하고 있다. 하지만 몇 가지 기능상에 제약이 있다. 예를 들어 실제 운영상에서 쓰인다면 다음과 같은 불편함들이 있다. cache manager를 inject해서 사용하는 경우, get, set 등의 기본적인 기능만 사용 가능하다. (물론 store에 접근하면 mGet이나 mSet을 사용할 수 있지만 불편하다..) 미세 옵션 등등을 조정하고 싶지만 할수가 없다. (retry라던가, showFriendlyErrorStack 등등의 ioredis option들을 자세히 확인할 수 없다.) 그래서 추가적으로 해당 부분들을 사용할 수 있게 바꾸어 보려고 한다. 2. 사용할 수 있는 옵션들 우리가 사용할 수 있는 옵션들은 크게 다음과 같을 것이다. ..
2021.01.22 -
Nest.js 탐험기3 - cache를 써보자
1. 개요 우리가 개발을 할 때, 가장 친숙하게 쓰이는 것이 cache module이 아닐까 생각해본다. 이 때, Cache module을 어떻게 nest.js에서 사용할 수 있을지 체크해보자 본 문서는 redis 기준으로 작성하였고, 따로 호환성을 고려하지 않고 작성해서 latest version으로 작성했다고 보면 된다. 2. 실습 환경 2.1. Redis를 docker container 셋팅 이미 docker 환경이 setup되어 있다면 아래와 같은 명령어를 통해 docker container를 띄우자. # run docker run --name redis-test -p 6379:6379 -d redis:alpine # 나중에 container 죽일 때 쓰면 된다. # kill container d..
2021.01.20 -
Nest.js 탐험 2 - Filter를 등록해보자.
개요 Nest.js에 대한 글을 한동안 올리지 못했는데, 이번에는 Filter에 대해서 다뤄보도록 한다. Filter란? 목적 Exception을 handling할 때 주로 사용한다. Handler 별로 또는 global로 셋팅이 가능하다. 예제 1. Error 정의 다음과 같이 에러를 개략적으로 정의해본다. // malgogiException.ts export class MalgogiException extends Error { status: number; constructor(status: number, message?: string) { super(message); this.status = status; } } 2. Filter 정의 주어진 Exception을 handling할 Filter를 정의한..
2021.01.16 -
Node.js event loop 정리해보기
개요 node의 event loop에 대해서는 개략적으로만 알고 있었는데, 이번 기회에 한 번 정리해보려고 한다. 구조 우선 해당 블로그에 내용이 잘 정리되어 있어 내용은 링크로 대체한다. https://sjh836.tistory.com/149?category=710138 Microtask queue, task queue 기본적으로 Node.js는 event queue를 통해서 task queue를 관리를 하고 있는데, 단일 event queue로 관리되는 것이 아니라 각각의 역할에 따라서 queue가 존재한다. 가장 크게는 microstask queue와 task queue로 나눌 수 있다. task queue는 기본적으로 application의 로직들의 처리를 담당하고 있고, microtask que..
2021.01.03 -
MySQL lock & Isolation level
MySQL lock & isolation level 본 문서는 inno DB engine 기반으로 작성이 되어 있다. MySQL lock types 아래와 같은 lock들이 존재한다. 1. Base lock 기본적으로 Row level lock이다. S (shared lock): read a row X (exclusive lock): update or delete a row 2. Intenstion lock 테이블 안의 “row에 대해서 나중에 어떤 row-level락을 걸 것”이라는 의도를 알려주기 위해 미리 table-level에 걸어두는 lock, multiple granularity locking 방식의 일부로 동작함 아래의 쿼리를 통해 intention lock의 상태를 볼 수 있다. SHOW ..
2021.01.01 -
Datagrip에서 presto 접속 설정하기
개요 간단하게 Datagrip에서 presto 접속 설정하는 방법에 대해서 알아보자 순서 1. JDBC drvier download 가장 기본적으로 JDBC drvier가 필요하다. 맞는 버전을 presto document 에서 받아주면 된다. 현재 보면 path가 /docs/current/installation/jdbc.html인데, 여기서 current 부분에 맞는 버전을 기입하면 쉽게 맞는 버전을 찾아볼 수 있다. 그리고 Download를 해주자. 그리고 원하는 위치에 저장을 해둔다. 2. Driver 추가 2.1. driver를 datagrip에 추가해주어야 하는데, driver는 좌측의 database 패널에서 + 버튼 클릭 후 > Driver를 선택해주면 된다. 2.2. 이름을 PrestoSQ..
2020.12.28