블로그
-
Git 머지 충돌 해결 실전 사례 | 대규모 리팩토링 브랜치 병합기
3개월간 진행된 대규모 리팩토링 브랜치를 main에 병합하면서 발생한 복잡한 머지 충돌을 해결한 실전 사례. 충돌 최소화 전략부터 단계적 병합, 테스트까지 전 과정을 다룹니다.
-
Git rebase interactive 사용법 | pick·squash·fixup·충돌 해결·실수 복구
git rebase -i로 커밋을 정리하는 법: pick, squash, fixup, reword, edit와 충돌 해결, reflog로 되돌리기까지 실무 순서로 정리합니다.
-
Git submodule 서브모듈 실무 | 추가·업데이트·CI·모노레포 대안
Git submodule로 서브레포를 끌어오는 법, 초기화·업데이트·삭제, CI 캐시·흔한 오류, submodule 대신 모노레포를 쓰는 기준까지 정리합니다.
-
Go context로 타임아웃·취소 처리하기 | 실전 패턴 가이드
Go에서 context.WithTimeout·WithCancel·WithDeadline으로 작업 한계를 걸고 취소를 전파하는 법. HTTP 서버·클라이언트 예제와 흔한 실수까지 정리합니다.
-
Java Virtual Thread로 동시성 코드 바꾸기 | JDK 21 마이그레이션 가이드
Project Loom의 가상 스레드는 플랫폼 스레드 부담 없이 블로킹 코드를 표현합니다. 기존 풀 대비 장점과 마이그레이션 체크포인트를 정리했습니다.
-
JavaScript 비동기 디버깅 실전 사례 | Promise 체인 에러 추적하기
JavaScript 비동기 코드에서 발생한 에러를 추적하고 해결한 실전 사례. Promise 체인, async/await, 에러 핸들링, 스택 트레이스 분석 방법을 다룹니다.
-
JavaScript var vs let vs const 완벽 비교 | 변수 선언 방식 선택 가이드
JavaScript var, let, const의 차이점을 스코프, 호이스팅, 재할당 관점에서 비교. 실전에서 어떤 것을 써야 하는지 선택 기준과 예제를 설명합니다.
-
Kotlin 코루틴 vs 스레드 완벽 비교 | 비동기 처리 선택 가이드
Kotlin 코루틴과 스레드의 차이점을 성능, 메모리, 사용성 관점에서 비교. 실전에서 어떤 비동기 처리 방식을 써야 하는지 선택 기준과 예제를 설명합니다.
-
Kotlin Coroutine: Channel vs Flow, 언제 쓰나 | 비교 실전 가이드
Kotlin에서 Channel(핫)과 Flow(콜드)의 차이, 백프레셔·수집 시점을 정리합니다. 코루틴 스코프와 함께 쓰는 실무 시나리오를 코드로 담았습니다.
-
Linux 디스크 full vs inode full 해결 순서 | 용량·아이노드 트러블슈팅
Linux 서버 disk inode full: df와 df -i로 구분하고, 로그·캐시·소량 파일 폭증 시 정리 순서와 예방(로그 로테이션)까지 정리합니다.