블로그
-
C++ 메모리 누수 심화 디버깅 | 힙 프로파일링·패턴·스마트포인터·순환참조·프로덕션
Valgrind Memcheck와 AddressSanitizer·LeakSanitizer가 무엇을 추적하는지, still reachable 같은 리포트를 어떻게 해석할지부터 unique_ptr::release, 중복 shared_ptr 생성, enable_shared_from_this 오용처럼 스마트 포인터가 숨기는 누수의 진단법을 다룹니다.
-
컨테이너 오케스트레이션 심화 — 스케줄러·DNS·CNI·스토리지·프로덕션 패턴
Kubernetes·Docker Swarm 내부를 깊이 있게 다룹니다. 스케줄링 프레임워크, CoreDNS·서비스 디스커버리, Flannel·Calico 오버레이, PV/PVC·StorageClass, PDB·토폴로지 분산 등 운영 관점까지.
-
TCP 동작 원리: 3-way handshake, 흐름·혼잡 제어(CUBIC·BBR)와 소켓 디버깅
TCP 3-way handshake와 연결 종료, rwnd·cwnd 기반 흐름·혼잡 제어, Reno·CUBIC·BBR 알고리즘 차이를 설명하고 C++·Python·Node.js 소켓 예제와 RST·느린 전송 문제를 분석하는 디버깅 방법을 다룹니다.
-
Rust 소유권 에러 예제: cannot move out·cannot borrow as mutable·조건부 반환 빌림과 수명 에러 해결
cannot move out of borrowed content(E0507), cannot borrow as mutable more than once(E0499), 조건부로 참조를 반환할 때의 E0502, 지역 변수 참조 반환(E0515), 스레드 클로저의 E0373 같은 Rust 소유권 에러를 문제 코드와 컴파일러 메시지로 재현하고, 원인과 해결 코드를 예제별로 보여 줍니다.
-
HTTP vs FTP vs SSH 프로토콜 비교 | 용도·보안·파일 전송 선택 가이드
HTTP(S), FTP/FTPS, SSH(SFTP·SCP)의 포트·인증·암호화 방식과 채널 구조 차이를 비교하고, 웹 API·대용량 파일 전송·원격 서버 관리 상황별로 어떤 프로토콜을 고를지와 FTP에서 SFTP나 객체 스토리지로 옮기는 절차를 curl·OpenSSH 예제로 다룹니다.
-
npm install 에러 해결 10가지: EACCES, ENOSPC, Timeout, peer dependency
npm install이 EACCES, ENOSPC, ERR_SOCKET_TIMEOUT, peer dependency 충돌, ERESOLVE, 404, node-gyp 빌드 실패, 캐시 손상, lock 파일 충돌, Windows 경로 길이 제한으로 실패할 때 원인별 해결책을 정리합니다.
-
C++ 가상 소멸자가 없을 때 생기는 누수: virtual·protected 소멸자 선택 기준
기반 클래스 포인터로 파생 객체를 delete했는데 파생 소멸자가 불리지 않아 메모리와 파일 핸들이 새는 이유를 보여주고, virtual 소멸자, 순수 가상 소멸자, protected 소멸자 중 언제 무엇을 쓰는지와 vtable 오버헤드를 설명합니다.
-
C++ use-after-move 버그: std::move가 캐스팅일 뿐인 이유와 이동 의미론 실수 10가지
std::move는 캐스팅일 뿐이라는 사실에서 출발해 이동된 객체를 다시 쓰는 use-after-move 버그, const 객체 이동, return에 std::move를 붙여 RVO를 막는 실수 등 이동 의미론 에러 10가지와 고치는 방법을 다룹니다.
-
C++ 람다 캡처로 생기는 dangling reference: 값 캡처·shared_ptr·[*this]로 수명 지키기
참조로 캡처한 지역 변수가 스코프를 벗어난 뒤 람다가 실행되면 dangling reference 크래시가 납니다. 값 캡처와 shared_ptr, [*this]로 수명을 지키는 방법과 비동기 콜백이나 람다 반환에서 자주 하는 캡처 실수를 예제로 다룹니다.
-
C++ 범위 기반 for문 no begin function 에러: 내부 변환과 커스텀 컨테이너 begin·end
for (auto x : c)에서 no begin function 에러가 나는 이유를 범위 기반 for문의 내부 변환으로 설명하고, 커스텀 컨테이너에 begin()·end()를 붙이는 법과 값 복사, 반복 중 수정, 임시 객체 순회 같은 실수 8가지를 고칩니다.