목요일, 3월 16, 2006

스킨, 템플릿

옛날 내가 처음 PC를 봤을 때, 프롬트는 'WHICH? ' 였다. 컴퓨터는 삼보 트라이젬 88 II 라는 그 당시 XT모델로써는 고속 CPU인 8MHz짜리 8088 CPU를 탑재하고 하드디스크도 10M 짜리를 탑재한 무시못할 모델이었다. 당시 XT에 하드를 탑재하기 위해서는 하드디스크 컨트롤러를 따로 슬롯에 장착해야 했다.

이 컴퓨터는 부팅 후 그 유명한 AUTOEXEC.BAT이라는 파일에서 메뉴를 프린트 한 후 'WHICH? '라는 프롬트를 띄웠다. 물론 1.BAT, 2.BAT, 3.BAT, 4.BAT 이라는 배치파일도 있었고 1번은 보석글 II, 2번은 워드스타, 3번은 DataEase 라는 데이터베이스, 4번은 워드퍼펙트를 띄우게 돼 있었다.

매뉴얼에서 프롬트는 'A> ' 이라야 하는데 'WHICH? ' 라고 나왔기 때문에 나는 이 컴퓨터의 운영체제는 MS-DOS가 아닐 거라고 믿고 있던 적도 있었다. MS-DOS명령어인 DIR이나 CLS 같은게 먹히는 것을 보고 나름대로 조사해본 결과 AUTOEXEC.BAT의 구조를 알아냈고 (당시 아무도 이야기 해 주지 않았다. 매뉴얼만 봤을 뿐) WHICH? 라는 프롬트 대신 $P$G 라는 것이 더 낫겟다 싶어서 그걸로 바꾸기도 했다. 이때는 이런걸 고쳐서 효과가 나는게 신기할 따름이었다.

세월이 흘러 유닉스와 X-Windows 시스템을 접하고 나서 .cshrc 파일을 고치면 프롬트나 alias 따위를 고칠 수 있다는 것을 깨닫고 마음에 안드는 것들을 고치기 시작했다. 홈 디렉토리에 있던 각종 설정파일들 (대부분은 '.'으로 시작하는 것들)을 눈여겨 바라본 것도 이 시기다. .cshrc를 마음에 들게 고친 후, X-Windows의 윈도우 매니저(MWM, TWM)설정 파일들도 관심을 두고 고치기 시작 했다. 어느 정도 지나자 내 설정파일들을 복사해 가는 사람들이 나타나기 시작했고, 나는 좀 더 제너럴 하게 고치기 시작했다. 다른 사람 프롬트에 내 로그인 네임이 나타나는 건 좀 아니다는 생각도 있고, 이왕 고칠거 좀 제대로 해보자 라고 고치기 시작한 것이다.

그 다음 암흑기를 거쳐 성격이 개조되게 되었다.

지금은 블로그나 각종 설정파일들이 난무하는 세계에서도 대략 '있으면 쓰고 없으면 말고' 정책으로 밀고 나가고 있다. 워드 문서를 작성할 때에도 각종 스타일을 만들어 이름을 붙이고 폰트나 여백설정을 맘에 들게 고치려는 생각이 잠시 들 때도 있었으나 생각을 지우는데 성공했다. 이 블로거에서도 만만치 않은 커스터마이즈 기능이 있는 것 같으나, 현재 가장 간단한 스킨으로 밀고 나가고 있다. 좀 불편한게 있다고 하더라도 그냥 쓰기위해 노력하고 있는 중이다.

금요일, 3월 10, 2006

중간평: An Introduction To General Systems Thinking

이 책은 닭이 슬쩍 끼워넣어 놓은 General Principles of Systems Design 이라는 책의 자매품(companion)이라 불려진다. GPSD책을 먼저 본 후 (그 책에는 단독으로도 읽힐 수 있다고는 했지만 믿지 않았다) 아무래도 선수과목인 이 책을 먼저 봐야겠다고 판단하고 결자해지 차원에서 닭에게 이 책도 달라고 해서 머나먼 콜롬비아에서 이 책을 입수 했다. -_-V

이 책은, 뭐랄까, 소위 말하는 제너럴리스트(Generalist, 스페셜리스트와는 대조되는)에 대한 소개 차원이라고 보면 된다. 무공으로 따지면 영웅문 3부인 의천도룡기에 나오는 '건곤대나이신공' 정도랄까... 책을 읽다보면 여러 가지 느낌이 온다. 단순히 새로운 지식을 습득하는 느낌은 아니다.

먼저 용도에 대한 것. 의천도룡기의 주인공인 장무기는 건곤대나이 신공을 익힌 후 각파의 무공을 무리없이 쓸 수 있었다. 소림사의 '용조수'를 바로 보고 따라할 수 있는 능력을 지녔다. 제너럴리스트도 마찬가지이다. 전혀 새로운 학문의 새로운 개념을 배울 때, 제너럴 시스템에 대한 이해도를 가지고 있으면 무리없이 새로운 개념을 수용할 수 있을 뿐더러 그 특징까지도 꿰뚫고 있을 수 있다.

다음 읽는 대상에 대한 느낌. 건곤대나이신공은 그 무공이 난해하기로 유명하다. 창시자 마저도 6단계 까지 밖에 익히지 못했고 7단계는 그냥 이럴 것이다 정도로 정리해 놓은 것. 익히지 못한 이유는 다름아닌 내공(!)부족. 이 책도 똑같은 느낌이 난다. 경험이 바탕이 되고 실패를 경험하지 못한 사람은 이 책을 이해하지 못하리라. 더 문제는 이해 한다고 착각할 수도 있다는 것.

이 책은 대단히 유용하고 자신의 능력을 엄청나게 끌어올릴 수 있는 책임에는 틀림이 없는 것 같다. 다만, 그러기 위해서는 내공이 뒷받침되어야 한다. 섣불리 책의 내용을 이해했다고 착각하다간 주화입마에 빠지게 된다.

아직 중간 정도까지밖에 읽지를 못해서 이 정도이지만, 아마도 이 느낌이 계속될 듯 하다.

수요일, 3월 08, 2006

최적화 - 파이프라이닝

요즘 나오는 마이크로프로세서들은 대부분 파이프라이닝 기능을 가지고 있다. 파이프라이닝은 CPU내부 작동 시 독립적으로 작동하는 부분을 충분히 활용하는 기술이다. 하나의 CPU instruction을 수행하는데 일련의 여러 가지 일 (가져오기, 계산하기, 저장하기, 등등)이 필요한데, 하나의 명령을 수행 할 때 다음 명령을 가져오는 일은 미리 해둘 수 있는 것 을 활용한 것이다.

인간도 이러한 최적화를 자신도 모르게 수행한다. 예를 들어 문으로 들어갈 때 문앞까지 간 다음 손으로 문을 열지 않고 문 앞 적당한 거리에서 부터 손이 문의 손잡이 앞으로 간다. 열쇠를 꺼내야 한다면 그 전에 이미 손은 주머니로 갈 것이다.

파이프 라이닝 기술은 CPU가 분기를 할 때 깨지게 된다. 조건에 따라서 미리 가져온 명령이 무용지물이 될 수 있기 때문이다. 심각할 것 까진 아니겠지만 어쨌든 파이프라이닝 손실에 따라 성능에는 약간의 문제가 생긴다.

인간도 이러한 실수가 있다. 문이 잠기지 않은 줄 알았는데 잠겼을 경우 문앞에서 주머니에 손을 넣어 열쇠를 꺼내야 한다.

인간의 파이프라이닝 최적화는 무의식적으로 진행되기 때문에 경우에 따라서는 좀 심각한 경우도 있을 수 있다. 남자화장실의 소변기에서 소변을 볼 때, '남대문'이라는 애칭을 가지고 있는 지퍼를 열고 일을 본다. 그러나 인간의 최적화에 따라 자주가는 화장실에 갈 때에는 보통 무의식적으로 소변기 앞에 서기도 전에 걸어가면서 지퍼를 내린다. 그런데 가끔가다가 너무 빨리 지퍼를 내리는 경우도 있다. 화장실 문을 열기도 전에 말이다. 이 때 화장실 문이 잠겨있는 걸 발견했다면 심각할 수도 있겠다.