전체 글(333)
-
[Nest.js] Nest 공통 모듈 Library로 분리하기 (cannot find dist/main 오류)
개요저희 프로젝트에서는 Nest 프레임워크를 사용 중이고 서버의 역할을 분리하기 위해 monorepo를 사용하여 여러 개의 workspace로 나누었습니다. API를 담당하는 backend 서버와 실시간 통신을 담당하는 websocket 서버가 독립적인 workspace로 존재하는 상황입니다. 이렇게 독립적인 workspace로 분리하고 나서 조금 불편한 점을 발견했습니다. 바로 중복되는 모듈이 존재한다는 점이었습니다. 역할이 분리되었기 때문에 대부분의 소스 코드가 독립적이지만 redis에 관련된 모듈의 경우 backend 서버와 websocket 서버가 동일하게 사용하고 있었습니다. 저희 프로젝트는 아래처럼 websocket에 들어오는 변경 사항들을 redis에 저장해두었다가 스케줄러로 주기적으로 데..
2025.02.15 -
[백준 15486][JAVA] 퇴사 2
가장 끝 날짜부터 첫 날짜로 오면서 dp를 수행했다. dp[i]의 의미는 끝 날짜부터 i 날짜까지 얻을 수 있는 최대 이익이다. dp[i]의 값은 다음 두 가지 경우를 고려해야 한다. i번째 날짜에 해당하는 상담을 진행한다.i번째 날짜에 해당하는 상담을 진행하지 않는다.두 경우 중 큰 값을 골라야 한다. 1번을 생각해보자. 해당 날짜에 상담을 진행할 경우 그 상담으로 받을 수 있는 금액과 그 상담이 끝난 날짜 이후부터 얻을 수 있는 최대 이익을 더하면 최대 이익이 된다. 2번을 생각해보자. 해당 날짜에 상담을 진행하지 않을 경우 그 날짜 이후부터 상담으로 얻을 수 있는 최대 이익이 해당 날짜의 최대 이익이 된다. 두 경우 중 더 큰 값이 최대 이익이 된다. 여기서 중요한 점은 특정 날짜 이후부터 상담으로..
2025.02.15 -
[PostgreSQL] postgres SCAN 종류 (Bitmap SCAN)
개요postgres에서는 데이터를 찾을 때 다양한 SCAN을 사용합니다. 그 중 Sequential SCAN, Index SCAN, Bitmap SCAN에 대해 알아보려고 합니다. 쿼리를 실행할 때 쿼리 계획을 살펴보면 해당 쿼리가 어떠한 SCAN을 사용하는지 확인할 수 있습니다. 테스트를 할 page 테이블을 생성합니다.CREATE TABLE page(id serial PRIMARY KEY, content TEXT); 랜덤한 값 100만개를 넣어줍니다.INSERT INTO page (content)SELECT md5(random()::text || clock_timestamp()::text) -- 랜덤한 문자열 생성FROM generate_series(1, 1000000); Sequential S..
2025.02.12 -
[Node.js] HTTP POST로 SSE 구현하기 + nginx buffering 문제 해결
개요저희 프로젝트는 LangChain을 활용하여 AI 응답을 반환하는 API를 만들어서 사용하고 있습니다. AI가 생성한 응답을 그대로 HTTP 응답으로 반환해주는 API입니다. 하지만 이러한 형태는 AI의 응답이 길어질 경우 클라이언트가 기다리는 시간이 늘어나고 UX가 저하된다고 판단했기 때문에 streaming 기능을 적용하기로 결정했습니다. Language Model들의 대부분은 token 단위로 응답을 반환하는 스트리밍 기능을 제공합니다. token 단위로 받은 응답을 차례대로 클라이언트에게 뿌려주기만 하면 됩니다. 기술 선택사용자가 한 번 요청을 보내고 난 뒤 추가적인 요청을 보낼 필요가 없습니다. 서버는 요청에 해당하는 응답을 생성하고 token 단위로 사용자에게 보내주면 되기 때문에 web..
2025.02.10 -
[백준 1781][Java] 컵라면
https://www.acmicpc.net/problem/1781 문제 풀이그리디로 풀 수 있는 문제입니다. 변수는 두 가지가 존재합니다.데드라인컵라면 수가장 단순하게 생각해보면 단위 시간을 늘리면서 해당 데드라인에서 얻을 수 있는 최대 컵라면 수를 고를 수 있습니다. 하지만 이 방법은 현재 시점에서 최적의 선택이 최적의 해를 보장할 수 없습니다.예를 들어 데드라인이 1이고 컵라면 수가 1인 것과 데드라인이 2이고 컵라면 수가 9인 것이 있다고 합시다.데드라인이 1일 때 최적의 선택은 데드라인이 2인 문제를 푸는 것입니다.그런데 데드라인이 2인 문제를 풀어버리면 다음 데드라인 2일 때 아무것도 선택하지 못 합니다.데드라인이 1일 때 1인 문제를 풀고 2일 때 2인 문제를 풀어야 최적의 해가 됩니다. 즉 ..
2025.02.09 -
[PostgreSQL] PostgreSQL Full Text Search
tsvector @@ tsquerytsquery @@ tsvectortext @@ tsquerytext @@ textPostgreSQL 공식 문서를 정리한 포스팅입니다.https://www.postgresql.org/docs/current/textsearch-intro.html 12.1. Introduction12.1. Introduction # 12.1.1. What Is a Document? 12.1.2. Basic Text Matching 12.1.3. Configurations Full Text Searching (or just text search) …www.postgresql.org Full Text Search란?Full text search를 사용하면 쿼리의 조건을 만족하는 자연어 문서를..
2025.02.03