C# Serilog 사용법
로깅은 “나중에 문제 생겼을 때, 과거에 무슨 일이 있었는지”를 재현하기 위해 남겨두는 블랙박스 같은 역할을 합니다. 그 중에서도 Serilog 는 구조화 로그(Structured Logging)를 지원해서, 단순 문자열 로그를 넘어서 검색/분석 하기 좋은 로그를 남길 수 있게 해줍니다. 이글 에서는: Serilog 가 뭐고, 왜 쓰는지 ...
로깅은 “나중에 문제 생겼을 때, 과거에 무슨 일이 있었는지”를 재현하기 위해 남겨두는 블랙박스 같은 역할을 합니다. 그 중에서도 Serilog 는 구조화 로그(Structured Logging)를 지원해서, 단순 문자열 로그를 넘어서 검색/분석 하기 좋은 로그를 남길 수 있게 해줍니다. 이글 에서는: Serilog 가 뭐고, 왜 쓰는지 ...
WPF 에서 Scrollbar Style 을 꾸미는 법을 간단하게 알아보겠습니다. 1. Scrollbar Style 비교 Default Scrollbar Style Chrome Scrollbar Style 2. Scrollbar 구조 Scrollbar 의 구조는 Vertical 기준 3행으로 구성되어있다. 1행에는 Li...
현장 HMI/키오스크처럼 사용자가 OS UI를 의도치 않게 불러오지 못하게 하고, WPF 스크롤의 ‘끝에서 흔들림’(고무줄) 도 제거 하는 방법을 소개합니다. 1. Windows 11 에서 화면 가장자리 스와이프(Edge Swipe) 전부 끄기 (레지스트리) 가장자리 스와이프(좌/우/상/하)로 위젯, 알림센터, 시작 메뉴 등이 튀어나오는걸 OS 수준...
WPF Dispatcher: Invoke vs InvokeAsync WPF에선 UI 요소를 만든 스레드(UI 스레드)만 그 요소를 만질 수 있습니다. 백그라운드 스레드에서 UI를 건드리려면 Dispatcher를 통해 UI 스레드 큐에 작업을 등록(마샬링)해야 해요. 이 글은 Invoke와 InvokeAsync를 중심으로, 실행 시점과 우선순위, 패턴...
WPF에서의 동기화 도구 비교: lock, SemaphoreSlim, Mutex, Semaphore WPF 애플리케이션 개발에서는 멀티스레드 환경에서 공유 자원에 대한 동기화가 필수적입니다. 이를 적절히 처리하지 않으면 데이터 불일치, 교착 상태(Deadlock), UI 프리징 같은 문제가 발생할 수 있습니다. 이번 글에서는 자주 쓰이는 네 가지 ...
## MQTT란 무엇인가? MQTT(Message Queuing Telemetry Transport) 는 사물인터넷(Iot) 환경에서 널리 사용되는 경량 메시지 프로토콜 입니다. 처음에는 위성 통신용으로 개발되었으며, 지금은 스마트홈, 센서 네트워크, 원격제어 등 다양한 분야에서 활용됩니다. ## 특징 특징 ...
gRPC란 ? gRPC는 Google 에서 개발한 고성능 오픈소스 RPC(Remote Procedure Call) 프레임워크입니다. 서로 다른 시스템 간 통신을 마치 로컬 함수 호출처럼 처리할 수 있게 해줍니다. HTTP/2 기반 으로 빠른 전송과 스트리밍 지원 Protocol Buffers(proto) 를 사용한 이진 직렬화로 데이터 전송 ...
WPF Attached Property 란? WPF 의 Attached Property는 다른 객체의 속성처럼 사용할 수 있도록 종속 속성(DependencyProperty) 입니다. 주로 레이아웃 정보 전달이나 행동 주입(Behavior) 등에 사용 됩니다. <Grid> <Button Grid.Row="1" Grid.Co...
WPF DependencyProperty 란? WPF 에서 속성은 일반 C# 속성과 달리, 특별한 시스템에서 동작하는 DependencyProperty(종속 속성) 을 많이 사용합니다. 예를 들어 TextBox.Text, Button.Width, Opacity 같은 속성은 전부 DependencyProperty 입니다. 왜 필요할까? WPF는 단순...
WPF에서는 DataTemplate 을 사용하여 View 와 ViewModel을 깔끔하게 분리할 수 있습니다. 그런데 하나의 리스트에 다양한 형태의 데이터가 들어오는 경우, 어떤 템플릿을 써야할까요? 바로 그때 사용하는 게 DataTemplateSelector입니다. 목표 하나의 ListBox에 여러 타입의 아이템 표시 혹은 속성 값에 따...