2025/09 44

[RabbitMQ Java] Pub-Sub 1: Pub-Sub 모델, 그리고 Exchange

이전 튜토리얼 에서는 Work Queue를 생성했다. [RabbitMQ Java] Work Queue 직접 만들어보기와 메시지의 분배 방식이번 튜토리얼에서는 시간이 많이 걸리는 작업을 여러 작업자 간에 분배하는 데 사용할 Work Queue(작업 큐)를 만들어 보자. Work Queue(Task Queue)의 핵심 아이디어는 리소스 소모가 많은 작업을 즉시dev.go-gradually.meWork Queue의 기본 가정은 각 작업이 정확히 하나의 워커에게 전달된다는 것이다.이번 파트에서는 ​​완전히 다른 작업을 수행할 것이다.바로, 하나의 메시지가 이를 구독한 여러 컨슈머에게 메시지를 전달하는 형태이다.이 패턴을 "Pub/Sub"이라고 한다. 즉, 다음과 같다.- 생산자/소비자 모델은 하나의 메시지가 하..

[RabbitMQ Java] Work Queue 직접 만들어보기와 메시지의 분배 방식

이번 튜토리얼에서는 시간이 많이 걸리는 작업을 여러 작업자 간에 분배하는 데 사용할 Work Queue(작업 큐)를 만들어 보자. Work Queue(Task Queue)의 핵심 아이디어는 리소스 소모가 많은 작업을 즉시 실행하고 완료될 때까지 기다리는 것을 방지하는 것이다.먼저, 우리는 이어질 작업이 나중에 수행되도록 작업을 예약시킨다.또한 우리는 그 작업을 메시지로 캡슐화하여 큐에 보낼 것이다.백그라운드에서 실행되는 worker 프로세스가 각자 작업을 팝(pop)하고 최종적으로 작업을 실행한다.여러 worker를 실행하면 작업이 작업자 간에 공유되도록 만든다.이 개념은 짧은 HTTP 요청 창 동안 복잡한 작업을 처리하는 것이 불가능한 웹 애플리케이션에서 특히 유용하다.준비 작업이 튜토리얼의 이전 부..

[RabbitMQ Java] 가장 간단한 프로듀서-컨슈머 사용해보기

원래 RabbitMQ 는 할 생각이 없었고, Kafka를 해보려고 했는데Kafka Definitive Guide의 내용이 너무 방대해서 당장 애플리케이션을 만들기 위한 기술에는 부적합하다고 판단했다.따라서, RabbitMQ를 공부해보고자 한다.RabbitMQ는 메시지를 수신하고 전달하는 메시지 브로커이다. 간단하게 우체국에 비유해 보자.우편물을 우체통에 넣으면 우편 배달부가 결국 수신자에게 우편물을 배달할 것이라고 확신할 수 있다.이 비유에서 RabbitMQ는 우체통, 우체국, 그리고 우편 배달부이다. RabbitMQ와 우체국의 주요 차이점은 RabbitMQ는 종이를 다루지 않고 대신 이진 데이터 블롭(메시지)을 수용, 저장, 전달한다는 점이다.RabbitMQ와 메시징 전반에서는 몇 가지 전문 용어를..

[USACO Gold] Divisibility - PS(알고리즘)에서의 나눗셈

이와 같은 수학 문제는 코딩 테스트에는 잘 출제되지 않기 때문에 건너뛰는 사람들도 많지만,나는 시간복잡도 계산에 가장 강력한 인사이트를 부는 내용이 바로 이 수학 부분이라고 생각한다.그래서 이 수학 파트도 건너뛰지 않고 어느정도 설명을 진행하도록 하겠다.소인수분해 (Prime Factorization)양의 정수 a가 음이 아닌 정수 b의 약수(divisor) 또는 인수(factor)라고 불리는 것은, b가 a로 나누어떨어진다는 의미이다. 즉, 어떤 정수 k가 존재하여 b = ka가 되는 경우이다.정수 n > 1이 소수(prime)라는 것은 그 약수가 1과 n뿐일 때를 말한다.1보다 큰 정수 중 소수가 아닌 수는 합성수(composite)라고 한다. 모든 양의 정수는 유일한 소인수분해를 가진다. 즉, 소수..

PS/USACO Gold 2025.09.07

[USACO Silver] 1차원 누적 합

아래 내용은 미국 정보 올림피아드인 USACO의 알고리즘 문제 학습 가이드인 usaco.guide를 참고하여 작성되었습니다 Introduction to Prefix SumsComputing range sum queries in constant time over a fixed 1D array.usaco.guide 시작 전에 이 문제를 풀어보고 오자.난이도: Very Easy Library Checker judge.yosupo.jp 길이가 N인 다음 값을 계산하기 원하는 1차원 정수 배열이 있다고 가정해보자.우리는 여기서 서로 다른 Q개의 쿼리를 (a,b)으로 보낼 것이다.그때의 (a, b)는아래 식을 만족한다.간단한 예시를 위해, N을 6으로 두고 문제를 풀어보자.인덱스 i123456arr[i]164253..

PS/USACO Silver 2025.09.06

MountainCar - 단순 DQN으로 풀기

https://gymnasium.farama.org/environments/classic_control/mountain_car/ Gymnasium DocumentationA standard API for reinforcement learning and a diverse set of reference environments (formerly Gym)gymnasium.farama.org 요구사항 정의Mountain Car MDP는 사인곡선의 바닥에 확률적으로 배치된 자동차로 구성된 결정론적 MDP이다.가능한 동작은 자동차에 양방향으로 적용할 수 있는 가속뿐이다. 이 MDP의 목표는 오른쪽 언덕 꼭대기의 목표 상태에 도달하기 위해 자동차를 전략적으로 가속하는 것이다.Mountain Car Continuous ..

2025년 9월 1주차 회고

지금 할 수 있으면 해라.지금 할 수 없으면 하지마라.지금 해야하면 해라.이번주에 한 것밑바닥부터 시작하는 딥러닝 - 강화학습조모친상 이번주에 하지 못한 것강화학습으로 OpenAI Gym 환경 직접 훈련시켜보기커피 원두 종류 및 맛 분석(블렌딩 or 싱글오리진)쿠팡 다음주에 할 수 있는 것강화학습으로 OpenAI Gym 환경 직접 훈련시켜보기핀잇 기능 요구사항 도출 & 백엔드 설계다음주에 할 수 없는 것단단한 강화학습 독서PoEAA 독서&블로그 글 작성코틀린 코루틴 학습쿠팡커피 원두 종류 및 맛 분석(블렌딩 or 싱글오리진) 다음주에 해야하는 것USACO Gold 번역 및 문제풀이RabbitMQ Java/Spring AMQP 클라이언트 학습카카오 공채 내용 살펴보기항암치료 보조항상 무언가를 수행하기체계..

Pytorch GPU 사용 방법

아무 생각 없이 import torch 를 수행하면서 pip install torch를 실행시켰는데,이를 수행하니 파이토치가 GPU를 사용할 수 없었다. 추가적인 정보를 확인해보니, 전용 pytorch를 설치해줘야 GPU 사용이 가능했다.먼저 해당 링크에 접속해준다. Get StartedSet up PyTorch easily with local installation or supported cloud platforms.pytorch.org 해당 링크에서 자신의 컴퓨터와 cuda 설치 정보와 맞는 pytorch를 찾아, 해당 Run this Command를 쉘에서 실행시켜준다.cuda의 경우 최신 버전이 출시되더라도, pytorch는 그 버전을 stable로 지원하기까지 좀 시간이 걸린다.물론 Nightl..

키트루다(펨브롤리주맙)의 CIS 방광암 치료 사용

용어에 대한 설명은 해당 링크를 참고해주시기 바랍니다. 방광암과 CIS, 그리고 그 치료꾸준히 갱신될 예정입니다.잘못된 정보가 있다면 바로잡아주시길 바랍니다.방광의 구조점막층 (urothelium, 상피층)소변과 직접 맞닿아 있는 표피(상피). 여기서 암이 가장 먼저 발생한다.점막하층dev.go-gradually.me 소개2020년 1월 8일, 미국 식품의약국(FDA)은 유두종 유무와 관계없이 상피내암(CIS)을 동반한, BCG에 반응하지 않는 고위험 비근육 침습성 방광암(NMIBC) 환자를 치료하기 위해 펨브롤리주맙(키트루다)을 승인했다.국내 식품의약품안전청에서도 2024년 7월 25일에 키트루다를 전이성 방광암과 CIS의 치료제로 사용하는걸 허가했으며, 이는 30년만에 등장한 새로운 CIS의 항암 ..

[PoEAA] 서비스 계층의 역할

우리는 백엔드 개발을 배울 때, 단순히 '3-Layer 아키텍처를 써라.' 라는 이야기를 듣고, 컨트롤러-서비스-리포지토리를 작성하지만,무작정 XxxService 계층을 도입하면서 정작 서비스 계층에 어떠한 로직을 넣어야 하는지에 대한 고민에는 당황하기 십상이다. 이 서비스 계층의 등장 배경에 대해 완전히 이해할 때, 어떠한 로직을 서비스 계층에 넣고, 어떠한 로직을 도메인 엔티티에 넣을지 이해할 수 있을 것이다.'도메인' 이란?domain = 정의역소프트웨어 공학에서 '도메인'은 해결하고자 하는 문제의 영역을 의미하며, 특정 비즈니스 영역을 구현하게 되었을 때, 그 영역에만 존재하는 지식과 논리를 의미한다.예시로는 다음과 같은 것들이 있다.결제 도메인계정 도메인물류 도메인도메인 모델과 트랜잭션 스크립트..