본문 바로가기
C# 클래스 기능별 네이밍 🔹 1. ~ Handler (핸들러)특정 이벤트나 요청을 처리하는 역할.주로 이벤트 기반 시스템이나 메시지 큐, HTTP 요청 등의 처리기에 사용됨.✅ 예시RequestHandler → HTTP 요청을 받아서 적절한 서비스로 넘김.EventHandler → 특정 이벤트 발생 시 실행되는 로직을 담당.ErrorHandler → 예외 처리 담당.🔹 2. ~ Service (서비스)비즈니스 로직을 담당하는 계층데이터베이스 접근 없이, 순수한 애플리케이션 로직을 수행.보통 여러 개의 Repository 또는 DAO를 조합해서 비즈니스 기능을 구현함.비즈니스 로직이란?  - 사용자의 요구사항을 처리하는 코드  - 이 프로그램이 실제로 해야하는 핵심 기능을 담당  ex) 비즈니스 로직 O : 게임에서 플레이어가.. 2025. 2. 12.
[MagicOnion] Heartbeat 💓 Heartbeat ?- 서버 클라이언트간의 연결 확인을 위한 기능- 특정 시간 내에 응답이 없으면 타임아웃을 설정하여 자동으로 연결을 종료할 수 있다. 📌 왜 HTTP/2 PING 프레임을 사용하지 않는가? [Client] ← PING/PONG → [LoadBalancer] ← PING/PONG → [Server] 위의 구조로 Client와 Server 사이에 Loadbalancer가 있을때 Loadbalance가 핑을 가로 챌 수 있음, 그러면 '서버'로 전달이 안될수 있음. 그래서 MagicOnion은 자체적으로 Heartbeat를 구현하였고, 서버와 클라이언트 간의 데이터를 명시적으로 보내는 메커니즘을 제공합니다! 2025. 2. 4.
큰 수의 법칙, 수학적 확률, 통계적 확률 🎲 큰 수의 법칙, 수학적 확률, 통계적 확률 🎲확률과 통계의 기초 개념을 이해하는 것은 다양한 문제 해결에 중요한 역할을 한다.이번 포스트에서는 큰 수의 법칙, 수학적 확률, 그리고 통계적 확률에 대해 살펴보겠다. 1. 큰 수의 법칙 (Law of Large Numbers) - 큰 수의 법칙은 반복적인 실험을 통해 어떤 사건이 발생하는 **상대적인 빈도(확률)**가 이론적인 기댓값에 수렴하는 경향을 나타내는 법칙이다. 예시동전 던지기를 예로 들어보면, 동전을 10번 던졌을 때 앞면이 나오는 횟수는 정확히 5번이 아닐 수 있지만, 1000번이나 10000번을 던지면 점점 50%에 가까운 비율로 수렴하게 됩니다.즉, 실험을 충분히 많이 반복하면, 경험적 확률이 이론적 확률에 가까워집니다.수학적 의미큰 수의 .. 2024. 11. 17.
가중치에 따른 랜덤 값 뽑기 가중치에 따른 랜덤 값 뽑기 🎲게임 서버나 애플리케이션 개발 시, 특정 항목을 랜덤하게 선택해야 할 경우가 종종 있다.그럴때 각 항목에 가중치를 부여해서 확률적으로 선택되는 방법이 매우 유용하다. 예를 들면 항목 A가 45%, B가 35%, C가 15%, D가 5%로선택되게 하는 방법이다. 이 포스트에서는 C# Random.Shared를 사용하여 어떻게 가중치 기반 랜덤 값을 뽑는지 설명하려 한다. 🎯  일단 가중치란 무엇을까? 🤔 **가중치(Weight)**는 각 항목이 선택될 확률을 상대적으로 조정하는 수치이다.예를 들어, A 항목이 45%, B 항목이 35%, C 항목이 15%, D 항목이 5%의 가중치를 가지고 있다면,A가 선택될 확률이 가장 높고, D는 상대적으로 가장 낮다.가중치는 확률을.. 2024. 11. 15.
[Git] git merge, rebase, squash 1. Git merge (병합) 목적: 두 개 이상의 브랜치를 병합하여 작업을 통합. 동작 방식: merge 명령은 두 브랜치를 통합할 때 **새로운 병합 커밋(merge commit)**을 생성합니다. 병합 커밋은 두 브랜치의 변경사항을 결합하고, 히스토리에 브랜치가 병합된 시점을 표시합니다. 장점: 기존 브랜치 히스토리를 보존하고 병합 이력을 명확히 남깁니다. 협업 시 브랜치 간 작업 흐름을 쉽게 추적할 수 있습니다. 예시: 1. [파란색 main] 'git 정리하게 다시' 기준으로 bgr 브랜치 생성 2. [파란색 main] 1. 기능추가 커밋 추가 후 푸시까지 3. [핑크색 bgr] 기능 추가 커밋 추가 후 푸시까지 4. [파란색 main] 브랜치에 bgr 기능추가를 병합함 5. 맨위에 Merge.. 2024. 11. 8.
[MagicOnion] Client Disconnect 사유 추가 Client에  WaitForDisconnectAsync 추가하면 왜 연결이 끊겼는지 확인 가능한데, WaitForDisconnectAsync API는 기존 WaitForDisconnected의 개선된 버전으로, 연결이 끊어진 이유를 수신할 수있다. 🖥️ 클라이언트의 연결 함수public async Task ConnectAsync(string address){ var channel = GrpcChannelx.ForAddress($"{address}"); _hub = await StreamingHubClient.ConnectAsync(channel, this, serializerProvider: MemoryPackMagicOnionSerializerProvid.. 2024. 11. 7.