전체 글 58

[NestJS] Queue 사용하기 (Redis)

nestjs Queue사용하기 프레임워크 : NestJS 언어 : Typescript 저장소 : Redis 큐를 사용하는 이유는 여러가지 경우가 있겠지만,  오래 걸리거나 당장 응답이 필요하지 않은 작업들을 Queue에 넣고, 워커 노드들이 큐에서  작업을 가져가는 구조는 매우 유용하다.  동작과정 1. 클라이언트 요청 : 클라이언트가 Rest API 서버에 요청을 보낸다.  2. API 응답 및 작업 큐 삽입 : Rest API 가 클라이언트에 즉시 응답을 보내고, 작업은 Queue에 넣는다. 3. 워커 노드의 처리 : Worker Node가 Queue에서 작업을 가져와 처리를 완료한다.  이 과정에서 Rest API는 Producer(생산자), Redis는 큐저장소, Worker는 Consumer(작..

framwork/NestJs 2024.12.26

[Ubuntu] 우분투에서 Wine으로 HeidiSQL 설치하기

기존에 우분투에서 데이터베이스를 cli로 확인하다가 명령어가 불편해져서 GUI 환경을 구성하고자 했다.  운영체제 : ubuntu 20.04.6 *Wine이란 ?  리눅스에서 윈도우 프로그램을 실행할 수 있도록 하는 오픈소스 프로그램! https://www.winehq.org/  WineHQ - Windows 프로그램을 리눅스, BSD, Solaris, macOS에서 실행하기Windows 프로그램을 다른 운영체제에서 실행하는 오픈 소스 소프트웨어입니다.www.winehq.org  1. wine 설치sudo apt updatesudo apt install winewine --version 2. heidiSQL에서 .exe 다운로드 받기https://www.heidisql.com/download.php Do..

기타/Linux 2024.12.18

[Jest] 테스팅도구 - Jest란?

Jest Jest는 자바스크립트 및 타입스크립트 애플리케이션을 테스트하기 위해 설계된 테스트 프레임워크이다. Facebook에서 개발한 Jest는 특히 리액트에서 시작해 점차 nodeJs, Vuejs, angular, NestJS 등 다양한 환경에서 사용되고 있다고 한다 !  *Jest의 기본 구성요소  1.  테스트  suite describe('UserService', () => { // 테스트 케이스가 여기에 작성됩니다.});=> Jest에서는 describe 블록으로 테스트 스위트를 정의함. 2. 테스트 케이스  it('should return the correct user', () => { expect(userService.findUserById(1)).toEqual({ id: 1, ..

Testing/Jest 2024.12.01

[Test] Testing 종류 : Unit Testing, Integration Testing, End to End Testing

애플리케이션 개발에 있어서 테스트는 매우 중요한 역할을 한다. 코드의 품질을 보장하고, 예상치 못한 오류를 사전에 예방하는데 도움을 준다. 테스트를 수행하는 방법에는 여러가지가 있으며,  그 중 대표적으로 Unit Testing, Integration Testing, End-to-End Testing이 있다. 각 테스트는 목적과 범위가 다르며, 적절하게 조합하여 사용하면 굿 !  1. Unit Testing (단위테스트) - 가장 작은 코드 단위에 초점을 둔다. 함수, 메서드, 클래스를 독립적으로 테스틑 하는 방법으로 유닛테스트의 핵심은 외부 의존성을 제거하고, 테스트 대상의 코드만을 집중적으로 검증하는 것이다 !  예를 들어,  데이터베이스나 외부 api와 같은 의존성을 Mock(가짜 객체)나 Stub..

Testing/Jest 2024.11.30

[Test] Mock, Stub, Fake : 테스트의 세가지 핵심 개념

테스트 코드 작성에 대한 공부를 하다보면 Mock, Stub, Fake 라는 용어를 자주 접하게 된다.이들은 모두 테스트할 때 의존성을 해결하기 위해 사용되며,  특히 외부 디펜던시( 데이터베이스, 로깅 등..)를 테스트 환경에서 대체하기 위해 활용된다 !  *왜 의존성을 대체하는 객체를 사용하는가 ?  -> 테스트를 작성할 때, 실제 의존성을 그대로 사용하는 방법도 있지만,  테스트 실행 속도가 느려지고 테스트가 의존성에 취약해질 가능성이 있다 !  (예를들어,, 데이터베이스에 연결된 테스트는  네트워크 상태나 데이터베이스 상태에 따라 결과가 달라질 수 있는.....) 따라서 의존성을 제거하고, 대체 객체를 사용해서 안정적인 테스트 환경을 구성하는 것이 중요함.  * Mock & Stub & Fake ..

Testing/Jest 2024.11.28

[Nestjs] Custom Validator 데코레이터 적용하기

NestJs에서 요청에 대한 유효성 검사를 할때 class-validator, class-transformer에서 validationPipe를 제공해주어 유효성 검사를 할 수 있다. https://github.com/typestack/class-validator#usage  GitHub - typestack/class-validator: Decorator-based property validation for classes.Decorator-based property validation for classes. Contribute to typestack/class-validator development by creating an account on GitHub.github.com  이렇게 기본적으로 제공되는..

framwork/NestJs 2024.11.22

[git] Git Bisect: 깃의 디버깅 도구

개발을 진행하다보면, 어느순간 갑자기 코드에 버그가 생겨난 경우가 있다. 이런 경우 버그가 생긴 시점을 찾아야하는데, 수많은 커밋중에서 버그가 발생한 정확한 지점을 찾는것은 쉬운일이 아니다.. 이럴때 유용한 git bisect라는 명령어가 있다 !  1. Git Bisect란? 이진 탐색 알고리즘을 이용해서 버그가 발생한 커밋을 찾아내는 git 명령어다. 대략적으로 설정하면 첫 번째로 의심되는 지점의 커밋을 지정하면, git bisect는 가장 최근의 커밋에서부터 사용자가 지정한 커밋, 두 지점 사이의 커밋들을 이진 탐색 방식으로 점검하면서 문제를 일으킨 지점을 찾는 것이다. 2. 기본 명령어 # Bisect 시작git bisect start# 현재 커밋을 bad로 지정git bisect bad# 문제 ..

기타/Git 2024.11.20

[Nestjs] multer로 이미지 파일 업로드하기

multer란 ?  - Node.js 환경에서 파일 업로드를 처리하는 미들웨어로 파일을 서버에 업로드할 때 유용하게 사용됨.  1. 설치 npm install multer @types/multer2. 서버 설정2-1. multer 설정 multer 미들웨어는 파일 저장 위치를 설정할 수 있게 해줌.  두가지 저장방식이 있음 1) 디스크 저장  2) 메모리 저장 나는 디스크에 바로 저장을 할 예정이라서 distStorage 옵션을 사용.  multer 설정옵션에 대한 클래스를 작성할 수 있다. /src/util/multer.config.tsimport { Injectable } from '@nestjs/common';import * as multer from 'multer';import { MulterOp..

framwork/NestJs 2024.11.19

[k3s] Prometheus를 사용하여 리소스 수집하기

https://anjelaaaaaaaa.tistory.com/41 Kubernetes에서 사용하는 패키지 매니저 노드에는 npm, 리눅스에는 apt가 있듯이 쿠버네티스에는 Helm이 있다  helm은 패키지를 " data-og-host="anjelaaaaaaaa.tistory.com" data-og-source-url="https://anjelaaaaaaaa.tistory.com/41" data-og-url="https://anjelaaaaaaaa.tistory.com/41" data-og-image="https://scrap.kakaocdn.net/dn/DLqVB/hyXzMbGAmA/McRe5HO4ZrgHkzeUnJssBK/img.png?width=543&height=214&face=0_0_543_21..

기타/kubernetes 2024.11.18

[React] react-dropzone 으로 드래그앤 드롭시 Aw snap 에러 발생 !

최근 만든 프로젝트에서 파일 드래그앤드롭 기능이 있었음.  리액트의 dropzone이라는 라이브러리를 사용한 기능이었는데,  개발환경에서는 아무 문제가 없었는데 프로덕션으로 배포했을때 문제가 발생했다. 근데 테스트 서버를 2개 배포했을때 한쪽에는 문제가 없었는데 한쪽 서버에만 계속 문제가 발생했음.  드래그앤 드랍 마우스 버튼을 떼는 순간  Aw, snap Error! 가 발생했고  에러코드는  Error code: RESULT_CODE_KILLED_BAD_MESSAGE 였음. 크롬이 바로 crash되면서 어떠한 콘솔도 확인할 수가 없었다 ㅠㅠ   구글링해서 찾은 해결책으로는..1. 크롬 업데이트를 해라 -> 해봤음. 안됨 2. 크롬 캐시를 삭제해라 -> 해봤음. 안됨 3. 파이어폭스를 써라 -> 해봄...

기타/문제해결 2024.11.16