예외 처리 — try·catch·throw와 예외 안전 3등급
RAII의 동기로만 스치던 예외를 정면으로 다룬다. throw/try/catch 기본, 예외가 스택을 거슬러 오를 때 소멸자가 자원을 정리하는 스택 언와인딩, 예외 안전 3등급(basic·strong·nothrow), 그리고 noexcept가 왜 이동 생성자와 vector 성능에까지 얽히는지 정리한다.
RAII의 동기로만 스치던 예외를 정면으로 다룬다. throw/try/catch 기본, 예외가 스택을 거슬러 오를 때 소멸자가 자원을 정리하는 스택 언와인딩, 예외 안전 3등급(basic·strong·nothrow), 그리고 noexcept가 왜 이동 생성자와 vector 성능에까지 얽히는지 정리한다.
org-mode가 '단일 통합 시스템'으로 독보적인 반면 Neovim은 플러그인을 조합해 PKM을 구성한다. 평문 마크다운·로컬 저장이라 Neovim과 충돌 없이 공존하는 Obsidian을 중심으로, 왜 갈아타기보다 병행이 자연스러운지 정리한다.
DAP(Debug Adapter Protocol)는 LSP와 같은 뿌리(VS Code)에서 나온 디버깅용 표준이다. nvim-dap 플러그인 스택, 언어별 어댑터(debugpy·delve·codelldb), 그리고 LSP와 결정적으로 다른 '세션 중에만 뜨는' 생명주기를 정리한다.
hunk는 diff에서 @@로 구분되는 연속 변경 덩어리다. 이 단위를 알면 한 파일에 뒤섞인 여러 변경을 git add -p로 골라 커밋을 깔끔하게 나눌 수 있다. 개념과 CLI 흐름을 정리하고, 에디터(gitsigns) 쪽은 별도 글로 잇는다.
GitHub Star는 저장소를 다시 찾기 위한 북마크·관심 표시이고 Watch는 저장소 활동 알림을 구독하는 기능이라는 차이와 알림을 줄이는 방법을 정리한다.
GitHub에서 내가 작성·댓글·리뷰·멘션으로 관여한 Issue와 Pull Request를 검색 qualifier로 다시 찾는 방법을 목적별로 정리한다.
gradlew bootRun에 -Xmx나 시스템 프로퍼티를 넘기려다 --args가 안 먹는 이유를 파헤친다. 핵심은 bootRun이 Gradle 데몬 JVM과 앱 JVM 두 개를 띄운다는 것. --args(앱 인자)와 -Dspring-boot.run.jvmArguments(앱 JVM 옵션)가 각각 어디로 흘러가는지, 왜 java -jar에는 그런 래핑이 필요 없는지 정리한다.
sesh는 선언형 세션 매니저(smug·tmuxp)와 다른 범주다 — 레이아웃을 만드는 게 아니라 디렉토리·git repo에서 세션을 즉석으로 열고 전환하는 피커. 설치·prefix+T 바인딩·핵심 CLI와, smug에서 옮기며 배운 '범주 오선택'까지.
Rust 개발 도구를 Cargo의 package/build/test/dependency 역할, crate·module·visibility 구조, rustdoc/doctest, rustfmt, Clippy로 나눠 설명한다. Cargo가 모든 외부 도구를 대체한다고 단순화하지 않고 전 과정에서 언제 어떤 도구를 쓰는지 정리한다.
Rust의 슬로건 'fearless concurrency'. safe Rust가 소유권·Send/Sync와 동기화 타입으로 데이터 레이스를 막는 원리를 설명한다. std::thread와 mpsc 채널, Arc