C/C++ 디자인 패턴 (4) — 프로토타입(Prototype)
문서 편집기에서 "선택한 객체 복제"를 구현한다고 하자. 선택된 것은 Document*로만 알고 있는데, 실제로는 Invoice일 수도 Memo일 수도 있다. 복사 생성자는 정적 타입을 알아야 호출할 수 있어서, 타입마다 if나 dynamic_cast를 늘어놓게…
문서 편집기에서 "선택한 객체 복제"를 구현한다고 하자. 선택된 것은 Document*로만 알고 있는데, 실제로는 Invoice일 수도 Memo일 수도 있다. 복사 생성자는 정적 타입을 알아야 호출할 수 있어서, 타입마다 if나 dynamic_cast를 늘어놓게…
사각형, 원, 삼각형을 그리고 복사·붙여넣기하고 파일에서 다시 읽어 들이는 도형 편집기는 객체지향 설계를 연습하는 고전적인 예제다. 도형 종류를 값으로 구분해 switch로 처리하면 새 도형을 추가할 때마다 흩어진 switch를 모두 찾아…
컨테이너가 "격리"된다고 할 때 그 격리를 실제로 만드는 건 커널의 네임스페이스다. 도커나 podman 없이도 unshare 명령 하나로 같은 격리를 만들 수 있고, 그렇게 해보면 컨테이너 런타임이 무엇을 조립하고 있는지가 훨씬…
ps aux로 프로세스 목록을 보거나, 좀비(zombie) 프로세스가 쌓여서 시스템이 이상하게 동작하는 걸 겪어본 적이 있다면 "프로세스가 어떻게 뜨고, 어떻게 관리되고, 어떻게 사라지는가"를 커널 관점에서 이해할 필요가 생긴다. 유저 공간에서는 fork()/exec()…