블로그
-
C++ ADL(인자 종속 조회): swap 관용구가 동작하는 이유와 엉뚱한 함수가 호출될 때
네임스페이스 한정 없이 호출한 함수가 인자 타입의 네임스페이스에서 검색되는 ADL 규칙을 std::cout, 연산자 오버로딩, swap 관용구, 직렬화 예제로 설명하고, 의도치 않은 함수가 선택되는 문제와 막는 방법을 다룹니다.
-
C++ WebSocket 심화 | Boost.Beast·Ping/Pong·재연결·운영
Boost.Beast WebSocket 연결이 주기적으로 끊기거나 핸드셰이크가 400으로 실패하는 원인을 짚고, RFC 6455 프레임 구조, Ping/Pong 하트비트, 지수 백오프 재연결, strand로 쓰기를 직렬화하는 방법을 클라이언트·서버 코드로 설명합니다.
-
C++ CMake 링크 에러 LNK2019 | 원인과 해결
컴파일은 되는데 링크에서 undefined reference나 LNK2019가 날 때 에러 메시지를 읽는 법부터 원인별 해결까지 다룹니다. 정의 누락, target_link_libraries 누락, 라이브러리를 못 찾는 경우, C 함수 호출 시 extern "C", 링크 순서와 중복 정의를 다룹니다.
-
ASan과 TSan으로 런타임 버그 잡기: 메모리 오류·데이터 레이스 예제와 CI 통합
C++ AddressSanitizer와 ThreadSanitizer 정리. 런타임 검증이 필요한 이유, ASan으로 메모리 오류, TSan으로 데이터 레이스를 찾는 예제, MSan·UBSan·LSan과의 관계, CI 통합과 자주 나는 문제를 다룹니다.
-
TCP 위에 프로토콜 설계하기: 메시지 경계, 길이 프리픽스, 바이너리 직렬화, 엔디안과 버전 관리
C++ 네트워크 프로토콜 설계와 직렬화. TCP 메시지 경계 처리, 길이 프리픽스 프로토콜 구현, 바이너리 직렬화, JSON·Protobuf·MessagePack 비교, 엔디안 처리와 버전 호환성을 다룹니다.
-
C++ 네트워크 에러 처리: errno 해석, 타임아웃, 지수 백오프 재시도, 서킷 브레이커, EINTR
프로덕션에서 간헐적으로 연결이 끊길 때 errno를 어떻게 해석하고 어떤 에러만 재시도할지 판단하는 법을 다룹니다. SO_RCVTIMEO·select·논블로킹 connect 타임아웃 비교, 지터를 섞은 지수 백오프, 서킷 브레이커, EINTR과 부분 send·recv 처리도 설명합니다.
-
Eclipse Paho MQTT C 라이브러리: MQTTClient와 MQTTAsync, 콜백 스레드, 재접속, Last Will
libVDA5050++가 paho.mqtt.cpp를 거쳐 감싸는 Eclipse Paho MQTT C 라이브러리를 정리합니다. 라이브러리 4종과 빌드 옵션, 동기 MQTTClient와 비동기 MQTTAsync의 차이, 콜백이 도는 스레드와 메시지 해제 규칙, 접속 옵션 기본값, 자동 재접속과 재구독, 끊긴 동안의 발행, 영속성, TLS, 디버깅까지 VDA5050 로봇 클라이언트 예제로 다룹니다.
-
VDA5050 order 수명주기: 노드·엣지 시퀀스, base와 horizon, order update 이어붙이기
VDA5050 통신 모듈을 처음 맡았을 때 알아야 할 order 처리 규칙을 정리합니다. sequenceId 부여 규칙, base·horizon과 decision point, orderUpdateId로 경로를 이어붙이는 stitching, 주문 수락·거부 판단 순서, nodeStates·lastNodeId 보고, cancelOrder, state 발행 규칙과 3.0에서 바뀐 점까지 예제 메시지로 따라갑니다.
-
ROS2 시뮬레이션 환경 혼자 구축하기 | Docker + Gazebo 설정
실물 로봇 없이 ROS2와 Gazebo 시뮬레이션 환경을 Docker로 혼자 구축하는 방법을 정리합니다. Linux/Mac/Windows(WSL2)별 GUI 포워딩 설정, docker-compose 구성, 자주 겪는 X11/그래픽 문제 해결까지 다룹니다.
-
WebSocket vs SSE vs 롱 폴링 | 실시간 통신 방식 비교
WebSocket, SSE, 롱 폴링을 통신 방향과 구현 복잡도, 프록시·방화벽 환경 기준으로 비교하고 Node.js 서버·클라이언트 코드로 구현해 봅니다. AI 응답 스트리밍에 SSE를 쓰는 예시, RFC 6455 업그레이드 핸드셰이크와 프레임 구조, Ping/Pong 하트비트도 다룹니다.