편집 방침과 정정 이력
최종 수정일: 2026년 10월 31일
글을 쓰는 방식
명령어와 코드가 들어간 글은 가능한 한 직접 실행해서 본문과 대조합니다. 실행한 글에는 실행 환경(운영체제, 컴파일러·도구 버전)을 본문이나 이미지 캡션에 적습니다. 실행해 보지 못한 환경의 동작은 확인했다고 쓰지 않습니다. 초안 작성과 문장 다듬기에는 AI 도구를 보조로 쓰며, 게시 전 확인과 책임은 운영자에게 있습니다.
오류를 고치는 방식
틀린 내용을 발견하면 본문을 고치고 글의 수정일을 갱신합니다. 오탈자·오류 제보는 연락처로 받습니다. 사소한 표현 수정은 이력에 올리지 않고, 독자가 잘못 이해할 수 있었던 사실 오류만 아래에 기록합니다.
최근 정정 사례
2026년 10월에 공개 글을 실행해 보며 고친 것 중 일부입니다.
- cpp-invoke-apply — 멤버 데이터 포인터를 std::sort·transform에 바로 넘길 수 있다고 쓴 부분을 정정했습니다. 컴파일되지 않고 ranges 투영에서만 됩니다.
- cpp-series-11-1-file-io-basics — 열리지 않은 스트림에서 정수를 읽으면 0이 된다고 쓴 부분을 정정했습니다. 값은 그대로이고, 0이 되는 것은 형식 오류일 때입니다.
- cpp-cmake — "제너레이터 표현식 안의 공백은 에러"라는 서술이 CMake 3.30.3에서 재현되지 않아 고치고, 낮은 버전은 확인하지 못했다고 적었습니다.
- cpp-heap-corruption — glibc 2.34 이후에는 MALLOC_CHECK_ 변수만으로 동작하지 않고 LD_PRELOAD로 libc_malloc_debug.so.0을 불러야 한다는 점을 반영했습니다.
- tcp-connection-states-complete-guide — ss가 상태를 CLOSE-WAIT처럼 하이픈으로 출력하므로, grep 예시를 그에 맞게 고쳤습니다.
- git-push-rejected-non-fast-forward-fix — --allow-unrelated-histories만으로는 해결되지 않고 Git 2.54에서 divergent 안내와 함께 멈춘다는 점을 정정했습니다.
- git-interactive-rebase-practical-guide — rebase todo 형식, 빈 todo의 오류 메시지, zdiff3 충돌 마커 설명 세 곳을 실행 결과에 맞게 고쳤습니다.
- cpp-crtp-pattern — private 생성자 관용구의 오류는 클래스를 정의할 때가 아니라 객체를 만드는 시점에 난다는 점을 본문·예제·FAQ에서 바로잡았습니다.
- cpp-structured-binding — 구조적 바인딩 이름을 람다로 캡처하는 코드는 C++17 표준상 불가능하지만 Apple clang은 경고만 내고 통과한다는 점을 구분해 적었습니다.
- rust-case-study-01-ownership-debugging — RefCell 이중 빌림 panic 메시지가 컴파일러 버전에 따라 달라서 현재 출력으로 고쳤습니다.
- go-context-timeout-cancellation — Shutdown에 이미 취소된 컨텍스트를 넘기면 진행 중인 요청이 있을 때만 context canceled가 돌아오고, 요청이 없으면 nil이라는 점을 실행으로 확인해 덧붙였습니다.
- ros2-fast-dds-guide — fastdds discovery 명령의 포트 옵션을 --port에서 실제 옵션인 --udp-port로 고쳤고, tcpdump 포트 대역(7400번대)이 Domain ID 0일 때의 값임을 명시했습니다.
- ubuntu-apt-could-not-get-lock-fix — 우분투 24.04.5(apt 2.8.3)에서는 잠금 오류에 N: 안내 줄이 나오지 않는다는 점을 실행으로 확인해 반영했습니다.
- gstreamer-library-practical-guide — gst-launch-1.0에 파이프라인 전체를 따옴표 하나로 넘겨도 똑같이 동작한다는 설명을 정정했습니다. GStreamer 1.24.2에서는 syntax error가 나고, 파일이 없을 때는 set_state가 바로 실패를 돌려주기도 합니다.
- cpp-constexpr-function — constexpr 함수 안의 static 지역 변수가 C++14부터 허용된다는 설명을 정정했습니다. g++ 13.3에서 C++11·14·20은 오류이고 C++23부터 정의가 허용됩니다. 직접 겪었다고 쓴 경험담 두 건은 컴파일러 실험 결과로 바꿨습니다.
- ros2-gazebo-docker-simulation-setup-guide — desktop-full 이미지에 Gazebo Classic이 들어 있다는 설명을 정정했습니다. desktop-full은 새 Gazebo(Fortress)이고 Classic은 turtlebot3-simulations 설치 때 함께 들어옵니다. 또 arm64에서는 해당 패키지가 저장소에 없어 Dockerfile이 실패한다는 점을 추가했습니다.
- network-protocol-ftp-practical-guide — PASV 응답에 내부 IP가 있으면 연결이 실패한다는 설명을 정정했습니다. 컨테이너에서 curl 8.5.0과 lftp 4.9.2는 응답의 IP를 무시하고 제어 연결 주소를 써서 성공했고, 해당 동작을 끄면 실패했습니다. vsftpd 설정의 줄 끝 주석 오류도 직접 재현해 확인한 범위(데몬 종료)만 남겼습니다.
- cpp-noexcept-specifier — 한 클래스에 이동 생성자를 두 개 선언한 예제는 컴파일되지 않아 SlowWidget·FastWidget으로 나눴습니다. 또 복사 생성자를 지우면 noexcept가 없어도 vector가 이동을 쓰므로, 복사 생성자를 둔 상태에서 비교하도록 고쳤습니다. g++ 13.3에서 컴파일로 확인했습니다.
- cpp-span-guide — span<int>를 반환하는 함수에서 return v;(vector 지역 변수)는 g++ 13.3에서 컴파일 오류이므로, 댕글링을 보여 주려는 의도에 맞게 std::span<int>(v)로 명시했습니다.
- tcp-connection-states-complete-guide — tcp_tw_reuse의 기본값이 최근 커널에서는 2(루프백 연결에만 재사용)라는 점을 "기본 동작" 설명에도 반영했습니다. 컨테이너 커널의 syn_retries·keepalive 기본값 등은 글대로임을 확인했습니다.
광고와 수익
이 사이트는 Google AdSense 광고 수익으로 운영비를 충당합니다. 광고는 글 본문과 구분되며, 광고 여부가 글의 내용에 영향을 주지 않도록 씁니다. 자세한 내용은 개인정보처리방침과 면책 조항을 참고하세요.