블로그
-
C++ I/O 병목 줄이기: cin·mmap·io_uring 성능 비교
같은 로직인데 C++만 시간 초과가 나는 이유를 sync_with_stdio, cin.tie, endl의 버퍼 플러시로 설명하고 getchar 직접 파싱과 출력 버퍼링까지 단계별로 최적화합니다. 대용량 파일용 mmap과 liburing 기반 io_uring 예제도 다룹니다.
-
C++ 멀티 컴파일러 전략과 CI/CD 파이프라인 구축 | 실무 가이드
내 PC에서는 되는데 다른 환경에서 깨지는 빌드를 막기 위해 GCC, Clang, MSVC를 함께 쓰는 전략을 다룹니다. 경고를 에러로 올리는 옵션, 컴파일러 감지 매크로와 플랫폼 차이 처리, GitHub Actions 빌드 매트릭스와 CMake Presets 구성까지 예제로 보여줍니다.
-
WebRTC 레퍼런스 — PeerConnection·ICE·STUN·TURN·시그널링·SFU
W3C WebRTC API, SDP·ICE, STUN·Coturn, WebSocket 시그널링, Perfect Negotiation, Simulcast·SVC, 혼잡 제어·FEC, SFU(mediasoup·Janus·Jitsi) 운영까지 실무 기준으로 정리한 참조 문서입니다.
-
C++ 실시간 모니터링 대시보드: Grafana·Prometheus 통합
새벽에 API가 멈췄는데 로그로는 원인을 못 찾을 때를 가정해, C++ 서버에 Counter·Gauge·Histogram 레지스트리를 직접 만들어 /metrics로 노출하고 Prometheus·Grafana 패널과 알람 규칙을 붙입니다. 카디널리티 폭증과 버킷 설정 실수도 다룹니다.
-
임베디드 C++ 최적화: 플래시 크기, RAM 정적 할당, 전력 소모, 실시간성(WCET)
64KB 플래시에 펌웨어가 안 들어가고, 스택이 넘치고, 배터리가 하루를 못 가는 상황을 다룹니다. LTO와 printf 제거로 플래시 줄이기, 정적 할당과 풀 allocator, 슬립 모드와 DMA, ISR 최소화와 WCET 예측을 C++ 관점에서 설명합니다.
-
탐욕 알고리즘이 맞는지 증명하기: 교환 논증과 활동 선택·거스름돈·작업 스케줄링 예제
매 순간 최선을 고르는 탐욕법이 언제 최적해를 보장하는지 교환 논증으로 확인하는 방법입니다. 활동 선택, 분수 배낭, 거스름돈, 지연 최소화 스케줄링, 회의실 배정, 허프만 코딩을 C++로 구현하고 DP가 필요한 경우와 비교합니다.
-
C++ 그래프 알고리즘: BFS·DFS, 다익스트라, Kruskal·Prim 최소신장트리, Union-Find
지도 최단 경로, 친구의 친구 탐색, 빌드 의존성 순서, 최소 비용 배선 같은 문제에 맞춰 BFS·DFS, 위상 정렬, 다익스트라, Kruskal·Prim, Union-Find를 C++로 구현합니다. 음수 간선에서 다익스트라가 틀리는 이유도 설명합니다.
-
C++ 동적 계획법: 메모이제이션 vs 타뷸레이션, 2D→1D 공간 최적화, 배낭·LCS·Bitmask DP
fib(40)이 느린 이유에서 출발해 메모이제이션과 타뷸레이션의 차이, 2D 테이블을 1D rolling array로 줄이는 방법을 설명합니다. 0/1 배낭, LCS, LIS, 편집 거리, Bitmask DP를 C++로 풀고 재귀 스택 오버플로를 피하는 법도 봅니다.
-
C++ 컴파일러 비교 | GCC vs Clang vs MSVC, 어떤 걸 써야 할까?
전처리, 구문 분석, 최적화, 코드 생성 단계를 직접 실습하며 같은 코드가 컴파일러마다 다르게 빌드되는 이유를 살펴보고, GCC의 -O2와 -O3 선택, Clang의 친절한 에러 메시지와 정적 분석, MSVC의 특징을 비교해 프로젝트에 맞는 컴파일러를 고릅니다.
-
MPEG-DASH 레퍼런스 — MPD(ISO 23009-1)·세그먼트·CENC/DRM·플레이어
ISO/IEC 23009-1 MPD(Period, AdaptationSet, SegmentTemplate)와 FFmpeg·Shaka Packager, CENC, dash.js·Shaka·ExoPlayer·AVPlayer까지 MPEG-DASH 실무·플레이어 가이드.