일시성 정책: 프로그래머의 컴퓨터 사용 철학

2025-05-13

이 글은 프로그래머의 독특한 컴퓨터 사용 습관을 자세히 설명하며, 그 중심에는 "일시성 정책"이 있습니다. 이 철학은 모든 데이터는 의도적으로 영구적이고 정리되어 있거나, 엄격하게 임시적이어야 하며, 우발적인 영구성을 피해야 한다고 주장합니다. 예를 들어, 영구적인 셸 기록 비활성화, GUI 데스크탑의 정기적인 정리, 웹 브라우저의 빈번한 닫기 등이 있습니다. 저자는 효율성 향상, 더 나은 정리, 불필요한 데이터 감소와 같은 이점을 설명합니다. 기업 기록 관리 및 자동화된 OS 설정과 같은 관련 관행과 함께 이메일 및 브라우저 기록과 같이 예측할 수 없는 유용성으로 인해 영구적으로 유지되는 정책의 예외에 대해서도 논의합니다.

더 보기

코루틴 철학: 프로그래머의 사색

2025-03-27

이 글은 저자의 개인적인 경험을 통해 코루틴의 철학을 탐구합니다. 프리프로세서 기법으로 C 언어에서 코루틴을 시뮬레이션했던 초기부터 C++20 네이티브 코루틴이 등장하기까지, 저자는 코루틴의 사용과 장점에 대한 통찰력을 공유합니다. 상태 머신과 스레드와의 비교를 통해 코루틴의 유연성, 디버깅 용이성, 그리고 쉬운 정리 기능이 강조되며, 특히 네트워크 프로토콜이나 데이터 스트림 처리와 같은 순차적인 작업에 유용함을 보여줍니다. 이 글에서는 다양한 코루틴 구현 방식, 큐와 프리필터를 사용한 최적화 기법, 그리고 코루틴의 미래 전망을 탐구합니다.

더 보기
개발

PuTTY 아이콘의 진화: 손으로 그린 그림에서 SVG로

2025-03-12

이 글은 1990년대 손으로 그린 그림에서 오늘날 확장 가능한 SVG 벡터로 PuTTY 아이콘이 진화해 온 과정을 보여줍니다. 저자는 처음에 MSVC 아이콘 편집기를 사용하여 32x32픽셀 아이콘을 만들었지만 당시 16색 팔레트와 디스플레이 기술의 제약을 받았습니다. 시간이 지남에 따라 더 높은 해상도 디스플레이와 다양한 도구의 요구 사항을 충족하기 위해 저자는 프로세스를 개선하여 여러 크기와 형식으로 아이콘을 자동 생성하는 스크립트를 개발했습니다. 이것은 진정한 확장성을 달성한 SVG 버전으로 이어졌습니다. 디자인 철학은 간단하고 명확하며 "믿음직스러운 구식" PuTTY 스타일을 반영하며 오늘날까지 사용되고 있습니다.

더 보기

버그 추적기 재고: 관심사 분리

2025-03-10

저자는 여러 버그 추적기를 오랫동안 사용하면서 데이터 표현에 근본적인 결함이 있고, 반복적인 불만으로 이어진다는 것을 알아냈습니다. 세 가지 주요 문제가 강조됩니다. 사실과 계획을 혼동하는 통합된 '수정 버전' 필드, 코드 현실과 미래 의도의 경계를 모호하게 만드는 2단계 상태 및 해결책 시스템, 버그 목록과 할 일 목록의 혼동으로 인해 버그와 관련 없는 작업에 어려움이 발생하는 것입니다. 저자는 '관심사 분리' 원칙을 제안하며, '사실'과 '계획' 테이블로 분할할 것을 제안합니다. '사실' 테이블에는 버그의 객관적인 정보(존재 여부, 버전, 심각도)가 기록되고, '계획' 테이블에서는 의도, 일정, 주관적인 우선 순위가 추적됩니다. 이러한 분리는 버그 추적을 간소화하고, 다양한 프로젝트 유형에 더 잘 적응하며, 버그 해결에만 집중하는 프로젝트에서는 '계획' 테이블을 완전히 생략할 수도 있습니다.

더 보기

혼자서 개발하기: 베테랑 프로그래머의 Git 포지 거부

2025-03-05

베테랑 프로그래머 Simon Tatham은 오랫동안 GitHub나 GitLab과 같은 코드 호스팅 플랫폼을 사용하지 않고 독립적인 Git 저장소를 사용하여 오픈소스 프로젝트를 유지해왔습니다. 그는 그 이유로 신뢰성(대기업 의존 대신 자체 관리 중시), 효율성(복잡한 포지 시스템의 오버헤드 회피), 사용자 경험(계정 생성의 수고 최소화), 워크플로 자율성(플랫폼 제약보다 독립적인 개발 프로세스 우선)을 제시합니다. 그는 이메일을 통한 패치 제출을 선호하며, Git 저장소 URL, 증분 Git 번들 등 선호하는 방법들을 자세히 설명하고 각각의 이유를 설명합니다. 그의 방법이 투명성이 낮다는 점을 인정하지만, 포지의 장점이 단점을 능가한다고는 아직 확신하지 못합니다. 그는 투명성과 경량 관리를 모두 제공하는 대체 시스템에 열려 있다고 결론짓습니다.

더 보기

XOR 심층 탐구: 부울 논리부터 암호화까지

2025-02-18

이 글에서는 컴퓨터 과학에서 단순해 보이는 XOR(배타적 논리합) 연산자를 심층적으로 다룹니다. 부울 논리에서의 XOR부터 시작하여 정수의 비트 연산으로 확장하고, 암호화, 픽셀 그래픽, 게임 이론, 유한체 등 분야에서 XOR의 응용을 탐구합니다. 저자는 매력적인 스토리텔링과 수많은 예시를 통해 XOR의 특성과 용도, 예를 들어 암호화에서의 간단한 암호화 방법, 픽셀 그래픽에서의 가역적인 그리기와 지우기, Nim 게임에서의 최적 전략 결정 등을 설명합니다. 마지막으로, 이 글에서는 XOR을 집합의 대칭 차집합, 지수가 2인 군, Nim 합, GF(2) 유한체, CRC 체크섬 등의 수학적 개념과 연결하여 XOR 연산자의 더 깊은 수학적 기반과 광범위한 응용을 보여줍니다.

더 보기
개발