분류 전체보기(185)
-
[리눅스 프로그래밍 시리즈 27편]epoll 완전 이해: 고성능 이벤트 기반 서버의 표준 (edge/level trigger)
목표: epoll의 동작 원리와 select와의 차이를 이해한다 결과: 대규모 동시 접속을 처리하는 고성능 서버 구조를 설계할 수 있다1. 왜 epoll이 필요한가?select는 다음 한계가 있다.fd 수 제한(보통 1024)매 호출마다 fd_set 복사O(n) 스캔 epoll은 이 문제를 해결하기 위해 등장했다.O(1)에 가까운 이벤트 처리대규모 연결 처리에 적합2. epoll 개념epoll은 관심 있는 fd를 커널에 등록해두고, 이벤트가 발생한 fd만 반환받는다.즉 불필요한 스캔이 없다.3. epoll 핵심 API#include int epoll_create1(int flags);int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);i..
13:27:17 -
[리눅스 프로그래밍 시리즈 26편]select 완전 이해: 여러 소켓을 동시에 처리하는 이벤트 기반 I/O
목표: select를 이용해 여러 파일 디스크립터를 동시에 감시하는 방법을 이해한다 결과: 단일 프로세스로 다수의 클라이언트를 처리하는 서버를 구현할 수 있다1. 왜 select가 필요한가?25편의 fork 서버는 단순하지만 비용이 크다.프로세스 생성 비용컨텍스트 스위칭 증가좀비 프로세스 관리 해결: 이벤트 기반 I/O하나의 프로세스가 여러 소켓을 동시에 처리한다.2. select 개념select는 여러 파일 디스크립터(fd)를 감시하다가읽기/쓰기 가능한 fd가 생기면 알려준다.3. select 함수#include int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeou..
2026.04.06 -
[리눅스 프로그래밍 시리즈 24편] 소켓 프로그래밍 기초: TCP 서버/클라이언트 구현 (connect, bind, listen, accept)
목표: TCP 소켓의 기본 흐름을 이해한다 결과: 간단한 서버와 클라이언트를 직접 구현할 수 있다1. 소켓이란?소켓(Socket)은 프로세스 간 네트워크 통신의 끝점(endpoint) 이다.우리가 사용하는 대부분의 네트워크 프로그램은 소켓을 기반으로 동작한다.예:웹 브라우저채팅 프로그램API 서버2. TCP vs UDP프로토콜특징TCP연결 지향, 신뢰성 높음UDP비연결, 빠름이번 편에서는 TCP를 사용한다.3. 서버 측 기본 흐름socket() ↓bind() ↓listen() ↓accept() ↓read()/write()4. 클라이언트 측 기본 흐름socket() ↓connect() ↓read()/write()5. 서버 예제 코드#include #include #include #include int ma..
2026.04.02 -
[WPF 실무 32편] WPF Messenger 패턴 (ViewModel 간 통신 완전 정리)
MVVM 구조에서 가장 많이 막히는 부분 중 하나는 ViewModel 간 데이터 전달입니다.예를 들어A 화면 → B 화면 데이터 전달Dialog 결과 전달전역 이벤트 처리이럴 때 사용하는 것이 바로Messenger 패턴 (CommunityToolkit.Mvvm) 입니다.1. 왜 Messenger가 필요한가?MVVM에서는 ViewModel끼리 직접 참조하면 안 됨문제결합도 증가테스트 어려움구조 깨짐 그래서 중간 전달자 필요2. Messenger 개념Sender → Message → Receiver✔ 메시지를 보내고✔ 필요한 ViewModel만 받는다3. Toolkit Messenger 사용 준비using CommunityToolkit.Mvvm.Messaging;4. 메시지 클래스 정의public class..
2026.04.02 -
[WPF 실무 32편] WPF Messenger 패턴 (ViewModel 간 통신 완전 정리)
MVVM 구조에서 가장 많이 막히는 부분 중 하나는 ViewModel 간 데이터 전달입니다.예를 들어A 화면 → B 화면 데이터 전달Dialog 결과 전달전역 이벤트 처리이럴 때 사용하는 것이 바로Messenger 패턴 (CommunityToolkit.Mvvm) 입니다.1. 왜 Messenger가 필요한가?MVVM에서는 ViewModel끼리 직접 참조하면 안 됨문제결합도 증가테스트 어려움구조 깨짐 그래서 중간 전달자 필요2. Messenger 개념Sender → Message → Receiver✔ 메시지를 보내고✔ 필요한 ViewModel만 받는다3. Toolkit Messenger 사용 준비using CommunityToolkit.Mvvm.Messaging;4. 메시지 클래스 정의public class..
2026.03.24 -
[WPF 실무 31편] ObservableProperty / RelayCommand 자동화 심화 (Toolkit 고급 기능 완전 정리)
30편에서 CommunityToolkit.Mvvm의 기본 사용법을 배웠습니다.이번 편에서는 실무에서 자주 쓰는 고급 기능을 다룹니다.✔ ObservableProperty 연동 처리 ✔ NotifyPropertyChangedFor 사용법 ✔ NotifyCanExecuteChangedFor 사용법 ✔ RelayCommand 파라미터 전달 ✔ 비동기 Command (AsyncRelayCommand) 를 정리합니다.1. ObservableProperty 복습30편에서 배운 기본 구조입니다.public partial class MainViewModel : ObservableObject{ [ObservableProperty] private string name;}✔ Name 프로퍼티 자동 생성 ✔ Pr..
2026.03.23