전체 글 132

프로그래머스 - 달리기 경주(Javascript)풀이

https://school.programmers.co.kr/learn/courses/30/lessons/178871?language=javascript 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 얀에서는 매년 달리기 경주가 열ㄹ비니다. 해설진들은 선수들이 자기 바로 앞의 선수를 추월할 떄 추월한 선수의 이름을 부릅니다. 예를들어 1등부터 3등까지 "mumu", "soe", "poe" 선수들이 순서대로 달리고 있을 떄, 해설진이 "soe" 선수를 불렀다면 2등인 "soe" 선수가 1등인 "mumu" 선수를 추월했다는 것입니다. 즉 "soe" 선수가 1등, ..

알고리즘 2024.05.08

Nest.js - onModuleInit, onModuleDestroy 서버 실행과 종료시 실행되는 로직 구현

먼저 프로젝트 세팅으로 시작합니다. nest new study-nest 다 만들어진 이후 해당 프로젝트 디렉토리에 접속하여 설정관련 클래스들을 넣을 모듈을 하나 생성합니다. nest g module config 여기서 구현해볼 상황은 웹서버가 실행되고 난 뒤 계속 지속적인 작업이 필요하고, 서버가 종료될 시 끝내야 할 작업이 필요할 때 상요하면 좋을 것이 OnModuleInit과 OnModuleDestroy 입니다. 두 인터페이스는 Nest.js 에서 지원하는 라이프 사이클 인터페이스 입니다. OnModuleInit 이 인터페이스는 해당 모듈이 초기화될때 실행되는 메서드 onModuleInit 을 구현해야합니다. 이 메서드는 Nest.js가 모듈의 종속성을 모두 해결한 후, 모듈 자체가 초기화될 때 호출..

Nest.js 2024.04.17

Moleculer - Node.js 프로젝트 세팅

Moleculer CLi 설치 npm install -g moleculer-cli 공식문서 - https://moleculer.services/docs/0.14/moleculer-cli.html 프로젝트 생성(타입스크립트) moleculer init project-typescript education 위 명령어를 입력시 여러 질문들이 나오는데 Gateway 관련부분을 yes 를 입력하면 자동으로 api.service.ts 가 만들어지면서 ApiGateway 가 mixins 옵션에 추가되는거 같다. (mixins 는 공식 문서에서 아래처럼 나와 있는데 결국 해당 서비스의 기능들이 모두 사용가능하게 된다는 것 같다.) 더보기 Mixins are a flexible way to distribute reusab..

Node.js 2024.04.13

React - DragDrop 구현

회사에서 Drag Drop 이벤트를 사용을 하는 부분이 라이브러리를 통해 구현되어 있었는데 커스텀이 힘든 경우가 대부분이였었다.. 그렇기에 HTML 에서 지원하는 방식으로만 구성해봤다. 공식문서 https://developer.mozilla.org/en-US/docs/Web/API/HTML_Drag_and_Drop_API HTML Drag and Drop API - Web APIs | MDN HTML Drag and Drop interfaces enable applications to use drag-and-drop features in browsers. developer.mozilla.org "use client" import { DragEvent } from "react" const DragItem ..

React 2024.04.10

LeetCode - Same Tree Javascript

Same Tree 의 경우 두 이진트리가 같은지 확인하는 문제이다. 두 이진트리가 같다는것은 두 트리의 구조가 동일하며, 노드들의 값이 모두 같아야 한다는 것을 의미하는 것이다. 재귀적으로 두 트리를 동시에 탐색하는 방식으로 풀었다. 각 단게에서 현재 노드의 값이 같은지 확인하고 왼쪽 자식과 오른쪽 자식을 각각 재귀적으로 비교하면 정답이다. p = [1,2,3]; q = [1,2,3]; function TreeNode(val, left, right) { this.val = (val===undefined ? 0 : val) this.left = (left===undefined ? null : left) this.right = (right===undefined ? null : right) } 정답 var i..

알고리즘 2024.03.30

Nginx - 로드밸런싱 알고리즘

Nginx 에서는 대표적인 로드밸런싱 알고리즘 여러가지가 있지만 그중에서 라운드 로빈과 리스트 커넥션 개념을 정리해보려 한다. (라운드 로빈, 리스트 커넥션, IP 해시, 리스트 타임 등등....) 리스트 타임은 Nginx plus에서만 사용할 수 있는 방법이다. 1. 라운드 로빈(Round Robin) 라운드로빈은 기본값으로 설정된 부하분산 방법이다. 요청이 순차적으로 각 서버에 동일하게 분배되는 방식이다. upstream 풀에 지정된 서버의 순서에 따라 요청을 분산한다. upstream 내부에 가중치(weight)를 설정할 ㅅ ㅜ잇는데 더 높은 정숫값으로 설정된 서버는 더 많은 요청을 받도록 설정할 수 있다. http { upstream back { server api.backend.com:8080 ..

NginX 2024.03.23

Jest - Cannot find module

서비스 클래스 테스트 코드 작성중 계속 테스트 할 서비스 클래스에서 import 하는 모듈을 못 찾는다는 에러가 떴다. ../../ 이처럼 상대경로로 변경하면 해결되는데 기존에 vscode 를 통해 자동완성했던 것들이 너무 많아서 다른 방법 찾다가 해버린 방법 여기서는 jest.config.js 가 아닌 package.json 키값으로 함 "moduleNameMapper": { "^src/(.*)$": "/$1" }, package.json 키 값에 넣고 npm run test 다시 하면 모듈을 제대로 찾는다.

Nest.js 2024.03.17

Nest.js - Molecular 서비스 브로커 예제

이 글은 어떻게든 Molecular 로 사용해보기 위해 적용해본 코드 및 정의이므로 정답이 아닐 수 있습니다. Molecular는 Node.js를 위한 빠르고 강력한 MSA 프레임워크이다. 효율적이고 안정저깅며 확장 가능한 서비스를 구축하는데 도움이 된다고 공식문서에 나와있다. Moleculer is a fast, modern and powerful microservices framework for Node.js. It helps you to build efficient, reliable & scalable services. Moleculer provides many features for building and managing your microservices. 해당 라이브러리를 사용하면 Service..

Nest.js 2023.12.18

Nest.js - TypeORM 설정

TypeORM 은 Node.js 환경에서 사용되는 객체 관계 매핑 라이브러리이다. Nest.js에서 적용하는 방법 1. npm 으로 typeorm 라이브러리 다운 2. AppModule에 TypeOrmModule.forRoot({}); 설정 (db 연결정보 및 엔티티 위치) 3. Entity 정의 4. 사용하려는 모듈에 TypeOrmModule.forFeature([엔티티]) 등록 5. 해당 모듈에 속한 클래스 생성자에서 @InjectRepository(엔티티) 를 통해 해당 엔티티에 대한 레포지토리를 주입 받아 사용 코드 1. TypeORM 및 데이터베이스 드라이버 설치 npm install --save @nestjs/typeorm typeorm mysql 2. TypeORM 모듈 등록 - AppMo..

Nest.js 2023.11.26

Nest.js - Interceptor 로 로그 및 응답 데이터 변형하기

Nest.js 에서 Interceptor 주요 기능과 특징 1. 컨트롤러 실행 전후 로직 : Interceptor는 컨트롤러 메서드가 실행되기 전과 후에 특정 로직을 수행할 수 있다. 이를 통해 요청을 가로채거나 응답을 수정할 수 있다. 2. 응답변형 : 인터셉터를 사용하여 컨트롤러에서 반환된 응답을 변형하거나, 특정 형식으로 포멧팅할 수 있다. 3. 비동기처리: Interceptor는 RxJS 의 Observable 을 사용한다. 이를 통해 비동기 데이터 스트림을 관리하고, 효율적인 비동기 처리를 할 수 있다.  4. 로깅 및 모니터링: 요청과 응답에 대한 로깅을 수행하거나 실행시간을 측정하는 등의 모니터링 작업을 인터셉터에서 처리할 수 있다. 구현코드 일단 인터셉터를 구현하려면 NestInterce..

Nest.js 2023.11.26