사람이 일생상활에서 취급하는 정보 중에는 일반적인 숫자나 문자열만치 자주 쓰이지는 않지만 날짜· 시각도 있다. 얘들은 컴퓨터 내부에서는 커다란 정수 하나로만 달랑 표현되겠지만 사람에게 보일 때는 일정한 형식을 갖춘 부분숫자의 나열로 표현된다. 또한, 그걸 표현하는 형식 내지 부분숫자들(년월일, 시분초)을 나열하는 순서는 언어나 문화에 따라 대동소이한 차이가 있다.

날짜 문자열은 마치 프로그래밍 언어 문법처럼 형식이 있으며, 문법과 의미 차원에서 정오(맞고 틀림)가 존재한다. 가령, 2015*5#20은 구분자 문자열이 잘못 지정되어서 문법에 어긋나며, 2015/5/100은 문법엔 맞지만 5월 100일이라는 게 존재하지 않기 때문에 의미가 잘못됐다.

날짜· 시각은 그냥 이런 문자열로 입력받게 할 수도 있다. 하지만 필요하다면 달력 같은 걸 내려서 사용자가 전체 날짜를 보면서 내가 원하는 날짜를 마우스로 콕 찍을 수도 있게 하는 게 좋을 것이다. 이 날짜가 무슨 요일인지, 그리고 지금으로부터 과거나 미래로 얼마나 떨어져 있는지를 달력을 통해 시각적으로 확인 가능하다면 날짜를 정확하게 선택하는 데 큰 도움이 되니까 말이다.

그러니 날짜· 시각을 입력받는 GUI 컨트롤은 에디트와 리스트를 겸하여 뭔가 콤보 박스 같은 형태로 만드는 게 좋다.
흔히 date picker라고 불리는데, 이런 컨트롤은 당장 웹사이트에서 더 많이 보는 것 같다. 무슨 예약· 예매 기능이 있는 사이트들이 대표적인 예이다.

대충 만든 사이트라면 년월일을 그냥 각각 콤보 박스에다가 집어넣어 놓곤 한다. 뭐, 생년월일이나 신용카드 유효 기간처럼 수 년 이후의 미래나 수십 년 이전의 과거를 입력받는 거라면 달력을 일일이 스크롤하는 게 번거로우며 단도직입적으로 날짜를 고르는 방식이 나쁘지 않다. 게다가 이런 날짜는 내 의지와는 상관없이 답정너 형태로 존재하는 날짜들이다.
그 반면, 현재로부터 비교적 가까운 날짜에 있을 스케줄을 '내 자유의지'에 따라 잡는 상황에서는 달력이 있는 게 좋을 것이다.

자바스크립트로 만들어진 웹 컴포넌트 말고, Windows의 로컬 프로그램에서 사용 가능한 공용 컨트롤은 95때부터 바로 있었던 게 아니다. 나중에 Internet Explorer 4와 함께 도입되었다(공용 컨트롤 버전 4.7). 바로, 날짜/시각 선택 컨트롤과 달력 컨트롤이며, 클래스 이름은 각각 SysDateTimePick32와 SysMonthCal32이다.

사용자 삽입 이미지

날짜/시각 선택 컨트롤은 스타일을 뭘로 주느냐에 따라서 날짜와 시각 중 하나를 입력받게 할 수 있다. 시각 모드일 때는 컨트롤의 오른쪽에 up/down 버튼이 붙지만, 날짜 모드일 때는 오른쪽에 콤보 버튼이 붙는다. 각 숫자들은 숫자 키로 직접 입력하거나 상하 화살표로 증가· 감소를 시킬 수 있다.

날짜 모드일 때 콤보 버튼을 누르거나 F4 키를 누르면 달력이 나타나서 달력의 날짜를 클릭하는 방식으로 날짜를 지정할 수도 있다. 그리고 달력 컨트롤은 날짜 선택 컨트롤이 일시적으로 표시해 주는 그 달력을 상시 표시해 놓는다.
하긴, 본인 역시 <날개셋> 한글 입력기에서 낱자 선택 콤보 박스를 이런 식으로 만들곤 했다. F4를 눌렀을 때 나타나는 셀 리스트는 drop list일 뿐만 아니라 그걸 단독으로 list box 형태로 쓸 수도 있게 말이다.

그런데 달력 컨트롤은 공용 컨트롤 6.0 것을 쓸 때와 그렇지 않은 재래식 버전을 쓸 때 동작이 살짝 다르다. 재래식은 년과 월을 클릭하면 그냥 년 또는 월을 선택하는 단순한 콤보 박스가 나타나는 반면, 새것은 그걸 클릭하면 달력 자체가 일(day) 대신 월, 1년, 10년 단위로 스케일이 커진다. 마치 지도를 확대/축소하듯이 말이다. 이 새로운 동작 방식은 Windows Vista에서 처음으로 추가되었다.

사용자 삽입 이미지
사용자 삽입 이미지

실행 파일의 호환성 옵션으로 들어가서 시각 테마를 끄더라도 공용 컨트롤 6.0의 달력 컨트롤은 그렇게 동작한다. 즉, 이것은 외형의 차이가 아닌 코드 로직의 차이이다.

그러니 날짜/시각 선택 컨트롤과 달력 컨트롤은 ComboBox와 ComboLBox의 관계와 같으며, 리스트 컨트롤과 헤더 컨트롤의 관계와도 얼추 비슷하다.
얘는 공용 컨트롤 중에서도 조금 나중에 도입된 놈이기 때문에 InitCommonControls만 호출해 준다고 해서 초기화가 되지 않는다. 반드시 Ex 버전을 써서 이렇게 초기화해야 한다.

INITCOMMONCONTROLSEX ics;
ics.dwSize=sizeof(ics); ics.dwICC=ICC_DATE_CLASSES;
::InitCommonControlsEx(&ics);

물론, 공용 컨트롤 6.0 매니페스트가 지정된 프로그램들은 저 함수를 호출하지 않아도 모든 공용 컨트롤들을 곧장 사용할 수 있다.
그럼 다음 시간에는 운영체제의 날짜· 시각 설정 UI를 이 컨트롤과 연계해서 살펴보도록 하겠다.

* 여담: 언어적인 이슈

number가 '수'도 되고 '번호'도 되는 것만큼이나, time은 시각도 되고 시간도 돼서 개념이 언어적으로 무척 혼란스럽다. 두 시각의 차가 시간이니 날짜에 대응하는 current time은 '현재 시각'이 돼야 맞다.
'째'(얼추 nth)와 '번째'(nth time)도 이와 비슷한 맥락에서 쓰임이 무척 혼동스럽다. 한국어에서 '째'는 서열이나 순위 개념이고 '번째'는 횟수 정도에 대응한다.
x시 y분에 A역을 발차해서 z시 w분에 B역을 도착한다는 식으로 열차의 운행 스케줄을 적어 놓은 도표도 시간표가 아니라 시각표라고 한다.

Posted by 사무엘

2015/11/11 08:33 2015/11/11 08:33
,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1158

간극은 있다 (the Gap Fact)

본인이 번역한 신앙 서적이 하나 출간되었기에 오늘은 이곳에서 소식을 좀 전하고자 한다. 제목은 <간극은 있다>이다. 부제는 "루시퍼의 죄로 인해 야기된 홍수에 대한 성경적 해설".

원서의 저자는 Perry Demopoulos라는 미국 출신의 우크라이나 선교사이다. Gap Fact라는 제목으로 2014년에 책이 나왔다. 제목에서 알 수 있듯이 이 책은 성경적 과거 연대기에서 매우 중요한 비중을 차지하는 창 1:1-2 사이의 '간극'을 다루고 있다.

세상에서는 창 1:1-2 사이에 간극이 있었다고 주장하는 사람들이 일부 있다 "카더라"라는 차원에서 '간극 이론'(gap theory)이라는 용어가 통용된다. 그러나 간극을 성경적으로 확고하게 믿는 사람들의 관점에서는 이건 동해를 일본해라고 부르는 것만큼이나 말도 안 되는 소리이다. 간극은 겨우 이론· 학설 따위가 아니라 확고한 진리이고 팩트이기 때문에 이들은 gap truth 내지 gap fact라는 말을 쓴다. 그 뉘앙스를 본인은 서술형으로 좀 의역해서 "간극은 있다"라고 책 제목을 뽑았다.

본인은 성경을 문자 그대로 믿는 신자로서 창세기 1장이 말하는 6일 창조는 정말 말 그대로 24시간 문자적인 하루 단위였다고 믿으며, 지금으로부터 6천여 년 전의 아담 이전에는 인류가 존재하지 않았다고 믿는다. 여기까지는 소위 말하는 '창조 과학회'라는 단체가 주장하는 것과 견해가 완전히 일치한다.
그러나 지구와 우주 전체의 역사는 인간과 '현 세상'의 역사만치 짧지 않다, 정확히 말하면 "반드시 짧아야만 할 필요가 없다"라는 것이.. 세속 과학과의 타협이 아니라 성경 교리를 토대로 내리는 결론이다.

창조 과학회는 그야말로 '젊은 지구, 젊은 우주' 덕후이다. 생명의 기원에만 신수설을 주장하는 게 아니라 천문· 지질학의 연대 측정 방식까지 모두 부정하며, 오로지 '노아의 홍수'만으로 모든 지질 이변을 설명하는 걸로 유명하다. 본인은 걔네들이 주장하는 과학 디테일에 대해서야 크게 관심이 없다. 불신자들이 알아서 가루가 되도록 반박하고 까고 있으며 본인의 신앙 역시 거기에 근간을 두고 있는 게 아니니 말이다.

창조 과학회는 성경 믿음을 수호한다고 하면서 성경 믿음에 대한 팀킬까지 야기하고 있다는 게 나 같은 신자의 입장에서는 훨씬 더 큰 문제이다.
그들이 생각하는 진화론이란 곧 비인간적인(?) 적자생존 약육강식이고 피흘림과 죽음이다. 걔들은 잘 알다시피 진화론이 단순한 무신론을 넘어 나치즘과 공산주의 등 온갖 악한 사상의 근간이 됐다고까지 공격할 정도로 진화론을 완전 극혐한다.

뭐 인간이 원숭이나 아메바로부터 진화한 게 아니라 하나님에 의해 처음부터 창조되었다고 주장하는 것 자체는 건전하고 좋다고 치자. (여기서 '원숭이나 아메바' 따위에 트집 잡는 진화론자가 없길 바란다. 공통 조상이야 그 무엇이 됐건 중요하지 않으며, 아무튼 저절로 '진화'를 했다는 게 중요한 키워드임.)
그런데, 그런 이념을 몰아내려다 보니 그들이 읽는 창세기 1장엔 그 어떤 일체의 죄, 타락, 심판, 사망 같은 부정적인 심상이 있어서는 안 된다. 창세기 1장의 배경엔 무조건 반드시 아름답고 긍정적인 것만 있어야 한다.

그 결과, 얘들은 "죄의 원조 = 오로지 아담"에 완전히 꽂혀 버렸다. 선악과를 시간적인 순서상 제일 먼저 먹은 건 아담이 아니라 이브이고, 인간보다도 루시퍼라고 불리던 사탄 마귀가 먼저 죄를 짓고 타락했는데 그건 까맣게 잊어버렸다. 도대체 어쩌다가 주객이 전도된 그런 오류에 빠졌는지 모르겠다.
그 이름도 유명한 롬 5:12는 너무 당연한 얘기이지만 최초로 죄를 지은 '인간'에 대한 이야기일 뿐, 영원부터 영원까지 하나님의 모든 경륜을 통틀어서 죄라는 걸 처음으로 지은 인격체(사람뿐만 아니라 영적 존재들까지 포함)에 대한 문맥이 아니다.

재창조· 간극을 안 믿는 사람치고 사탄은 정확하게 언제 창조되어 언제 타락했고, 쫓겨나서는 어디로 갔는지 딱 부러지게 설명하는 사람은 단언하건대 전혀 없다. 물과 어둠은 언제 창조됐는지, 6일 창조 중 둘째 날에만 "보기 좋았더라"라는 말이 왜 없는지 같은 것도 설명할 수 있을 리가 없다.

사탄은 교만에 빠져서 자신이 하나님과 대등한 지위를 차지하려고 반역을 저지르는 그야말로 엄청난 죄를 지었다. 그런데도 처벌을 받긴 한 건지 행동 반경에 별다른 제약이 없이 잘만 살아 있다.
그 반면 사람은 어떤가. 이브는 뱀의 꼬드김에 넘어가서 겨우 금지된 선악과 하나 좀 먹는 아주 소심한(?) 죄를 지었을 뿐이다. 아담은 이브보다 더 고의로 적극적으로 하나님 말씀을 어기긴 했지만, 사랑하는 이브가 저 지경이 돼 버렸으니 차라리 같이 죽자는 심정으로 같이 선악과를 먹은 것이다. 어떤 경우든, 사람이 지은 최초의 죄에는 최소한 교만이나 신성모독 같은 괘씸죄 요소는 없었다.

그런데도 아담 부부는 그 날로 낙원에서 추방당하고, 창조 세계가 와르르 타락해서 이 모든 고생이 시작되고, 그야말로 후손들의 인류 역사가 모조리 꼬여 버리는 헬게이트가 시작됐다.
사람과 사탄의 처분을 비교해 보면 이거 좀 형평성이 심각하게 안 맞다는 생각이 들지 않는가? 본인은 옛날엔 이 논리를 들추면서 복음을 거부하고 하나님을 조롱하던 불신자를 실제로 본 적이 있었다.

아담의 죄가 사탄의 죄보다 격이 낮고 죄질이 가볍다는 사실은 오직 킹 제임스 성경을 통해서만 발견할 수 있다. 창 3:5가 '하나님(God)처럼 되어'가 아니라 '신들(gods)처럼 되어'이기 때문이다(사 14:14와 비교해 볼 것!).
더구나 사탄 마귀의 옛 이름인 '루시퍼' 자체도 킹 제임스 성경(사 14:12)에만 존재한다. 얘는 단순히 바빌론 왕이 아니라 진짜 사탄에 대한 이야기로 이중 적용이 가능하다고 말이다. NIV도 아니고 이런 엄청난 영적 조명을 얻을 수 있는 성경을 손에 쥐고서 간극을 안 믿는다고? 논리적으로 정말 말도 안 되는 소리이다.

먼 옛날에 하나님께서 이전 세상을 창조하셨는데 거기서 사탄 마귀가 반역하고 타락함으로써 그 세상은 물의 넘침으로 멸망(벧후 3:6)하고, 땅이 형태가 없고 공허하게(창 1:2) 되었다고 해야만 논리가 맞아 떨어진다. 지금 세상은 6일 동안 새로 "재창조"된 것이며, 에덴 동산에 뱀의 모양으로 몰래 침입해 들어간 사탄은 예전에 누리던 영광에 비해서는 그야말로 빈털터리가 된 상태인 것이다.

재창조· 간극과 관련된 FAQ 중에는 "사람이 죄를 지은 것 대해서는 하나님께서 회개의 여지를 주시고 예수님 같은 구원자를 보내기도 하셨는데 루시퍼에 대해서는 왜 저렇게 가차없이 쫓아내고 세상을 다 뒤집어엎고 완전히 주적을 삼으신 걸까?"가 있다. 이 의문도 루시퍼와 인간이라는 두 인격체가 최초로 저지른 죄의 죄질을 비교해 보면 바로 답을 얻을 수 있다.
루시퍼는 엄연히 내란수괴인 정치범이다. 제5공화국 장 태완 장군의 대사를 빌리자면, 탱크를 몰고 가서 머리통을 날려 버릴 반란군이요 역적놈의 새X이다. 그 반면, 사람은 생계형 잡범에 가까운 죄를 지은 것이다. 그러니 법적으로 서로 다르게 처분하는 게 당연한 귀결 아니겠는가? 하나도 어려울 거 없다.

물론 한번 죄에 빠지고 타락이 진행되면서 아담의 후예들 역시 사탄 마귀와 별 다를 바 없는 반란 가담자로 흑화해 갔으며, 이들은 사탄 마귀를 집어넣으려고 만들어진 지옥에 사후에 불청객으로 들어가게 된 건 사실이다. 또한, 그 엄청난 내란 반역죄에 비해 하나님께서 루시퍼에 대한 완전한 심판 집행은 좀 이례적으로 길게 보류하고 계신 것도 사실이고 말이다. (사람과 관련된 다른 뜻이 있어서..;;)

이전 세상에는 공룡이 살았건 네안데르탈 인이 살았건, 다른 영적 존재들이 살았건 그건 내 알 바 아니다. 단지 아담과 같은 호모 사피엔스만이 전혀 없었을 뿐이며, 그 옛날 생명체들은 설령 지금까지 화석으로 남아 있더라도 인간과 유전적인 관계는 없다.

이런 사탄의 죄와는 달리 아담의 죄는 현 세상을 망가뜨리긴 했지만 사탄의 죄처럼 당대 세상을 깡그리, 송두리째 멸망시킬 정도는 아니었다. 훗날 노아의 홍수는 코로 호흡하는 지표면의 육상 생물만 절멸하는 수준이었으며, 루시퍼 시절의 홍수와는 규모면에서 비할 바가 되지 않는다.

창 1:2의 "the earth was without form, and void"가 대환란 심판 문맥인 렘 4:23 "I beheld the earth, and, lo, it was without form, and void"와 표현이 일치한다는 것은 그야말로 대박이 따로 없다.
창세기의 소돔 사람들이, 그리고 사사기의 베냐민 지파 불량배들이 "우리가 그들을 알리라"라고 말한 것은 서로 정확하게 같은 심상이다.
창세기에서 라헬이 죽기 전에 산파가 "두려워하지 말라, 네가 이 아들을 얻으리라"라고 말한 것과, 사무엘기상에서 비느하스의 아내가 죽기 전에 여인들이 "두려워하지 말라, 네가 아들을 낳았다"라고 말한 것에는 당연히 동질감이 있다.

그것만큼이나 earth was without form and void는 창 1:2와 렘 4:23 공히 명백하게 심판 문맥이고 부정적인 심상이다! 스타 테란 종족으로 치면 SCV가 건물을 짓다 만 상태가 아니라, 파괴된 건물의 잔해인 것이다. 성경을 제대로 읽어서 여기저기 네트워크가 형성된 사람이라면 이런 심상을 놓칠래야 놓칠 수가 없다.
세속 학계에서도 두 논문에 통상 여섯 단어 정도가 연달아 복붙한 듯이 일치하면 그건 우연이 아니라 거의 필연이고 표절을 강력하게 의심하게 된다. 그 잣대를 보더라도 창 1:2와 렘 4:23은 인과관계를 부정하기란 절대 불가능하다.

이런 심상을 무시하고, 어둠도 부정적인 게 아니고 중립적이고 하나님께서 선하게 창조하신 거라고 궤변을 늘어놓는 것은.. 하나님께서 원하시는 뜻과 하나님께서 허락하시는 뜻을 혼동하는 것과 같다. 죄악도 다 하나님의 섭리로 예정된 것이라는 식으로 하나님의 성품을 완전히 왜곡하는 짓이다.
하나님께서 지옥을 만드신 게 과연 하나님이 기뻐하고 원하시는 뜻에 의해서 이뤄진 것인가? -_-;; 이와 비슷한 급의 혼돈을 정치 분야에다 비유하자면, 북한 체제(수뇌부)와 북한 주민을 구분 안 한 나머지 이상한 방법으로 통일을 해야 한다고 쫓아다니는 짓거리와도 같다.

난 재창조 간극이 없을 때 성경에 야기되는 논리 모순과 부조리들이 아주 빤~히 눈에 보인다. 마치 교회 대환란 통과 교리가 야기하는 모순과도 일맥상통한다. 그러니 공룡 박사이자 열혈 간극 반대자요, 젊은 지구 창조론자로 유명한 켄트 호빈드(Kent Hovind) 씨가 몇 년 전에 엉뚱하게 교회 대환란 통과 교리로 전격 전향한것은 우연이 아니라 동일한 오류에 빠진 결과로 여겨진다. 옛날에 안티오크던가 거기를 비롯해 "간극 극렬 반대 + 교회 환란 통과" 진영을 몇몇 본 적이 있다. 거기는 그렇게 같은 영인 것 같다.
성경 교리 체계가 와르르 무너지는 와중에 지금이 무슨 공룡 발자국 화석이 인간과 같은 시기네 뭐네 한가롭게 따질 때가 아니다.

눈에 도대체 뭐가 씌여서 이런 건전한 교리가 별 희한한 거짓 고소와 중상모략으로 매도되고 있는지 참 기가 차고 통탄할 노릇이다. 젊은 우주(지구)는 너무 무리수다 싶어서 아예 창세기 1장의 6일을 문자적으로 받아들이기를 포기하는 것보다야, 그 6일은 그냥 냅두고 간극만 설정하는 게 100배 이상 더 건전한데도 말이다.

사실, 재창조 교리도 아담 이전의 세상에 대해서 아주 상세한 디테일을 제공하지는 않기 때문에, 세속 과학과 여전히 맞지 않는 게 있을 수 있고 선뜻 믿어지지 않는 시나리오가 있을 수는 있다. 간극 반대자들의 트집 역시 성경 해석 쪽이 아니라 이런 지엽적인 과학 디테일 쪽에서 많이 나오기도 한다.
허나, 우리가 무슨 문자적인 24시간 6일 창조를 믿지 않는다는 둥, 아담 이전부터 인간이 살았다고 주장한다는 둥, 있지도 않은 소설을 근거로 비방을 하지는 않기를 간절히 바란다.

본인은 이런 마음을 담고 정말 없는 시간을 쪼개어 최고의 속도와 최고의 품질로 번역을 했다.
회사 다니면서 학교 다니고, 일요일엔 교회에서 하루를 다 보내고, 그러고 남은 개인 시간엔 몽땅 한글 입력기 개발하고.. 글감이 있으면 개인 블로그에다 글까지 꼬박꼬박 써 올리고..
그 와중에 도대체 무슨 짬을 내서 방대한 분량의 책 번역도 할 수 있었는지는 모르겠다. 또 하라면 못 할 것 같다. -_-;;

다만, 시간 스케줄링에 관한 한 세상에 공짜는 없다. 저런 극한의 최적화를 한 대신에 본인은 여가와 유흥이라고는 없는 인생을 살아 왔으며, 운동 부족-_- 때문에 키 대비 체중이 증가하고 있어서 고민이다.
그리고 본인은 무엇보다도 30여 년 평생 모솔이다. 정말 시간이 없어서 할 수가 없다.

참 안타깝고 유감스럽고 불행한 일이지만, 우리나라에 킹 제임스 성경을 번역해서 보급하는 데 큰 기여를 해 온 모 출판사 겸 교회 진영은 간극을 정당한 이유 없이 그저 반대하며, 자신과 믿음이 다른 진영에 대한 거짓 비방을 일삼고 있다. 반대하는 논리들이 나 같은 사람이 보기엔 대부분 말이 안 되는 것들이다. 아직도 진화론과의 절충, 유신론적 진화론, 아담 이전의 인간(세상이 아니라) 따위의 케케묵은 레퍼토리를 벗어나질 못하고 있다. 간극에 대해 제대로 알지도 못하고서 그저 반대하는 것이다.

그러니.. 공은 공이고 과는 과이다. 협력할 건 협력하지만 이 주제에 관해서는 본인 역시 본인의 양심을 걸고 단 한 발자국도 물러설 생각이 없으며 그들의 교리적 오류를 꾸준히 폭로할 것이다. 하다못해 아까 얘기했던 '둘째 날', 사탄의 타락 시기 이런 거 해명이나 좀 하고서, 제대로 된 대안을 제시하고서 자기 주장을 했으면 싶다. 거짓에는 논리와 팩트가 답이다.

창 1:1-2 사이에 간극이 있다는 것은 성경에 스타에 대해서 "처음에 저그 해처리에서 저글링이 나오니라. 그 저글링은 발업이 되고 *and* 아드레날린업이 되었느니라." 라는 구절이 있는 것과 같다.
발업은 스포닝 풀을 지은 순간 바로 가능하지만, 아드레날린업이 되기까지는 그 사이에 레어업에 퀸, 하이브업까지 어마어마한 테크 간극이 필요하지 않은가? 성경에서는 이런 스타일로 기록된 문장을 얼마든지 찾을 수 있다. 대표적인 예가 예수님의 초림과 재림 간극이고 말이다(예: 사 61:2).

진리가 다른 진리와 모순을 일으키고 다른 진리를 파괴한다면 그건 진리가 아니다.
부디 gap이라는 fact가 널리 알려져서 많은 사람들이 진리로 돌아오고 성경의 깊숙하고 은밀한 주제에 대한 안목이 넓어졌으면 좋겠다.
본인은 제프리 티벳의 <창 1:1-3 주석>도 번역했으며, 의도한 건 아니었지만, 다니고 있는 교회에서 거의 재창조 교리 전문가 및 간극 에반젤리스트-_-처럼 활동하고 있다.

Posted by 사무엘

2015/11/05 08:25 2015/11/05 08:25
, , , ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1156

과거 Windows XP 시절부터 눈치 챈 분이 계시려나 모르겠다.
XP에서부터 아시다시피 대화상자 컨트롤들에 테마가 적용되어서 얘들의 비주얼이 알록달록 한결 예뻐졌다. 단, 모든 프로그램에 테마가 자동 적용되는 건 아니며 공용 컨트롤 6.0을 사용한다는 표식이 존재하는 프로그램에 대해서만 테마가 적용된다. 이것은 Windows 프로그래머라면 추가적으로 알고 있을 것이다.

그런데, 콤보 박스의 경우 공용 컨트롤 6.0 것을 사용하면 동작이 약간 달라졌다. ▼ 버튼을 눌러서 drop list를 꺼내면 drop list의 크기가 예전보다 훨씬 더 길쭉해져 있다. 프로그램이 리소스 차원에서 지정해 준 것보다 훨씬 더 길어졌다.
이것은 테마의 적용 여부와는 무관하게 공용 컨트롤 6을 적용하는 것만으로도 나타나는 변화였다.

다음은 <날개셋> 편집기의 문자표 대화상자를 Windows 2000에서 구동한 것과 XP(및 그 이후 모두 포함)에서 구동한 것의 차이를 나타낸 스크린샷이다. 테마나 글꼴과는 무관하다는 것을 보이기 위해 XP에서도 고전 테마를 사용했고, 글꼴 역시 Tahoma로 통일시켰다.
문자표뿐만이 아니라 “보기-편집화면 설정”에서 이미 30개가 넘는 글꼴이 존재하는 한글 글꼴 콤보 박스를 내려 봐도 같은 현상을 볼 수 있다.

사용자 삽입 이미지사용자 삽입 이미지

그리고 이것은 비단 내 프로그램에서만 발생하는 차이가 아니다. 다음은 Windows 2000과 XP의 워드패드에서 글꼴 콤보를 내린 모습이다. 워드패드는 Windows 7에서 크게 바뀌었지 2000과 XP는 외형의 차이가 거의 없으니 말이다.

사용자 삽입 이미지사용자 삽입 이미지

콤보 박스에서 drop list의 크기는 원래 콤보 박스가 생성될 때 CREATESTRUCT에 지정되어 있던 크기로 결정되어 왔다. 그 크기는 따로 저장된 뒤, 지금 당장 콤보 박스는 아이템을 1줄만 표시 가능한 정도로 세로 크기가 자동으로 조정되었다.

하지만 공용 컨트롤 6에 있는 콤보 박스는 알 수 없는 이유로 인해 이런 전통적인 동작이 바뀌었다. 원래 지정되었던 세로 크기는 무시되고 drop list는 아이템을 최대 30개까지 표시하는 크기로 지정된다. 그래서 XP에서부터 공용 컨트롤 6을 사용하는 프로그램은 콤보 박스의 drop list가 굉장히 커진 것이다.
그 대신 이 개수를 얻어 오고 바꾸는 메시지가 새로 추가되었다. CB_(GET/SET)MINVISIBLE이 그것이다. 이 메시지는 공용 컨트롤 6 기반의 콤보 박스에서만 사용 가능하다. 개수의 기본 초기값이 30인데, 이것은 이례적으로 상당히 큰 값이다.

단, 공용 컨트롤 6이라 해도 CBS_NOINTEGRALHEIGHT 스타일이 지정된 콤보 박스에는 이런 새로운 정책이 전혀 적용되지 않고 이전의 콤보 박스와 동일한 크기로 drop list가 튀어나온다. 이 스타일은 크기 보정을 전혀 하지 않고 마지막 줄에 아이템의 일부가 잘려 나오는 것도 감수한다는 옵션인데.. 개인적으로 이런 옵션이 왜 있는지 모르겠다. 이걸 사용하는 콤보 박스는 난 지금까지 전혀 못 봤다. 마치 extended UI만큼이나 실용적인 의미가 거의 없음.

여러모로 Windows GUI에서 콤보 박스의 동작과 메시지 API가 왜 이렇게 설계되었는지 본인으로서는 이해할 수 없다. (1) 공용 컨트롤 6이 됐다고 해서 저런 동작이 함부로 바뀌어서는 안 되며, (2) 콤보 박스의 drop list 크기는 자신의 원래 크기를 기반으로 동작해야 한다. 그리고 (3) drop list의 크기를 알아 오거나 바꾸는 메시지는 진작부터 있어야 했다.
XP에서부터 콤보 박스의 drop list 크기가 갑자기 커졌다는 건 오래 전부터 알고 있었지만 왜 그런지는 10년 가까이 제대로 모르고 있었다. 이유를 알게 됐다고 해서 그 이유를 수긍하는 것도 아니긴 하지만.

이것 말고도, Windows XP 첫 버전의 공용 컨트롤 6에서는 owner draw 방식이어서 문자열이 필요하지 않은 콤보 박스에다가도 아이템을 추가할 때 그냥 NULL을 주면 프로그램이 뻗는 어이없는 버그가 있었다. 원래는 그렇게 안 해도 돼야 되는데. 그래서 꼭 0-length 문자열 ""이라도 집어넣어 줘야 했다. 테마 내지 공용 컨트롤 6 기반이 아닌 기존 컨트롤에서는 문제가 없었으니 명백한 운영체제의 버그였다.

<날개셋> 한글 입력기가 최초로 XP 테마를 도입한 버전이 2.3이었는데, 바로 이 버그 때문에 엄청 곤혹을 치렀었다. 이 버그는 XP sp1에서 바로 고쳐지긴 했지만, 비주얼 말고 도대체 뭘 고쳤길래 같은 콤보 박스에 이런 동작이 차이가 났는지 본인으로서는 알 길이 없다. 요컨대 공용 컨트롤 6의 컨트롤들은 설령 다른 테마 없이 고전 테마로 표시된다 하더라도 근간이 기존 컨트롤과는 근본 출신이 다르다.

Posted by 사무엘

2015/11/02 08:33 2015/11/02 08:33
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1155

문자· 문서를 처리하는 기계의 역사를 살펴보면 기계식 타자기가 발명된 뒤 나중에는 전자식 타자기가 만들어지고, 그게 더 나중에는 컴퓨터가 달린 휴대용 워드 프로세서 기기 형태로 발전했다.

그 뒤 특정 장치에 구애받지 않고 범용 컴퓨터에서 동작하는 워드 프로세서 소프트웨어도 개발되긴 했지만 이 역시 특정 컴퓨터 내지 프린터 번들의 성격이 강했다. 아무래도 워드 문서의 최종 목적지는 인쇄였던지라 프린터의 입김에서 자유로울 수 없었으니 말이다. 게다가 윤곽선 글꼴이 없었으니 글꼴부터가 애초부터 프린터의 해상도에 따라 도트판/레이저판으로 나뉠 수밖에 없었다.

이런 척박한 여건에서 옛날 도스 시절에 '한글'을 처리할 수 있는 워드 프로세서가 몇몇 컴퓨터 선구자들에 의해 개발되었다. 그래픽 모드에서 실행되었던 도스용 한글 워드 프로세서로 제대로 살아남은 건 아래아한글밖에 없다.
관공서에서 많이 쓰였던 '하나' 내지, 삼보 컴퓨터 번들로 제공되었던 '보석글'(엄밀히 말하면 순수 국산 프로그램은 아님)은 그래픽 기반이 아니었기 때문에 편집 중에 각종 속성들은 태그 부호로 표시되었다는 한계가 존재한다..

0. 하나

사용자 삽입 이미지
1995년까지 금성이 아닌 LG 소프트웨어라는 브랜드로도 생각보다 오랫동안 개발됐다. 95년이면 아래아한글은 이미 Windows용까지 나왔을 정도였으니 시대에 너무 뒤쳐지긴 했다. 물론 금성/LG 소프트웨어에서도 그 시기에 다른 팀을 꾸려서 Windows용 '윈워드'라는 제품을 개발했으며 이걸 2.0까지도 만들긴 했지만... 더 오래는 못 갔다.

‘하나’도 아래아한글처럼 문서 확장자가 hwp였다. 하지만 둘은 동일한 포맷은 물론 아니었다. 아래아한글이 하나 문서를 읽거나 쓰는 건 ‘공용(공통) 파일’이라는 이름으로 최소한 아래아한글 2.5나 3.0 등 도스용 에디션의 막바지 시절에야 추가됐다. 자기 hwp와 구분을 위해 확장자는 일부러 kwp라고 했다.

하나와 아래아한글 모두 관공서에서 사랑받은 프로그램답지 않게 한때 보안이 좀 허술했다. 하나의 경우 암호를 걸어서 저장해도 암호가 문서 파일의 헤더에 평문으로 버젓이 저장되었는지 군대에서 이렇게 암호를 뚝딱 풀어서 중대의 영웅으로 추앙받았다는 분의 무용담이 전해진다.

한편, 1994년경엔 아래아한글 2.1 (2.1과 2.5 공용) 파일 포맷의 암호도 어느 서울대 출신의 천재 해커에 의해 뚫려서 화제가 됐는데..
이건 이적행위 증거를 찾으려고 지금의 국정원, 당시의 안기부에서 작정을 하고 해커를 고용해서 뚫은 것이었다고 한다. 개발사인 한컴이 이적행위를 했다는 건 물론 아니고, 사용자 중에 불온문서를 만든 사람이 있었다는 뜻.
단순한 오덕질이나 사적 이익 때문이 아니었다는 점이, 그리고 또한 단순히 한 특정 문서의 암호만 brute force 방식으로 대입해서 알아낸 게 아니라 전반적인 암호화 알고리즘 자체를 파악하고 예측하는 데 성공해 버렸다는 점이 무척 놀랍다.

그 당시 한컴은 2의 32승 운운하면서 “암호를 걸었던 사람이 암호를 잊어버리면 우리조차도 암호를 풀 수 없다. 암호를 뚫으려면 130년은 족히 걸릴 것”이라고 언론 보도까지 내면서 아주 자신만만한 모습이었다. 그런데 그것이 실제로 일어나자 망연자실할 수밖에 없었다. 다음 3.0 버전에서는 즉시 암호화 알고리즘을 변경해야 했다.

그럼 다음부터는 자체한글 '그래픽' 모드에서 실행된 프로그램 얘기를 하겠다.
본인은 오래 전에 윤곽선 글꼴로 한글을 찍는 기능이 어떤 형태로든 있었던 도스용 프로그램을 주목하여 몇 가지 예를 든 적이 있다.
아래아한글 2.x를 제외하면 그래픽 에디터 내지 배너 프로그램이 걸려들곤 했는데, 그것들 말고 아래아한글과 비슷한 급의 상업용 워드 프로세서로는 다음 두 프로그램이 있다. 단, 본인은 어렸을 때 이들 프로그램을 직접 써 보지는 못했다.

1. 사임당

난 10여 년 전에 우리나라에서 5만원권 지폐를 신권 형태로 첫 발행했을 때 이 프로그램이 떠올랐다. 지폐에 들어간 모델 때문이긴 하지만, 그래도 써 본 적도 없는 프로그램을 어떻게 그렇게 분명하게 기억하고 있었는지는 모르겠다.

사용자 삽입 이미지

사임당은 윤곽선 글꼴, 위지윅, 컬러 지원, 그래픽 처리 등의 기술적인 면에서는 아래아한글 2.x 초반대 버전보다 더 뛰어나면 뛰어나지 절대로 못하지는 않았던 매우 우수한 프로그램이었다. 그런 기능들은 따지고 보면 오히려 아래아한글이 도입 타이밍이 더 늦거나 전문용에만 오랫동안 봉인돼 있었다. GUI만 봐도 뭔가 비범한 구석이 느껴지지 않는지?

사용자 삽입 이미지

저기 '무른연모'라는 글자를 보아하니 휴먼샘체/팸체(안상수체는 아님) 같은 한글 가변폭 글꼴도 잘 지원하고 있었다.
사임당은 분명 시대를 앞서갔던 프로그램이었지만, 위키백과의 설명에 따르면 비싼 가격과 강경한 복제 방지 정책 때문에 그리 많이 보급은 못 됐으며 아래아한글을 실질적으로 위협하지 못하고 사라졌다고 한다.

사임당의 개발사인 한컴퓨터 연구소/주식회사도 오늘날의 한글과컴퓨터 못지않은 워드 프로세서 개발 전문 기업이었다. 예전부터 사임당의 전신인 '한글 2000'이라는 프로그램을 만들었고, 사임당 말고도 저가 보급형 프로그램인 '쪽박사, 글박사' 같은 프로그램을 따로 개발했다. 글박사의 경우 본인도 초딩 시절에 컴퓨터 잡지에 소개된 걸 본 기억이 있다. 무려 1992년에! 하지만 이 역시 실물을 직접 써 보지는 못했다.

사임당, 글박사 등의 스크린샷을 보면 저기서 만든 워드 프로세서들은 전통적으로 세로획도 1픽셀인 고딕 계열 글꼴을 UI 표시용 한글 글꼴로 써 왔다. 세로획이 2픽셀인 명조 계열 글꼴을 사용한 아래아한글과는 대조적이다.

2. 21세기 워드

아래아한글과 사임당으로도 모자라서 도스에서 한글 윤곽선 글꼴을 지원했던 그래픽 워드 프로세서가 더 있었다. 그것은 바로.. 지금은 알집과 카발(온라인 게임)로 유명한 그 회사가 먼 옛날 초창기에 만들었던 제품이다.

사용자 삽입 이미지

본인은 실물을 써 보지는 못했지만 컴퓨터 잡지에서 광고를 한 건 봤다. 글꼴을 가지고 대놓고 아래아한글을 디스하고 있었다.
모 제품은 가격이 8만 8천원이나 하는데도 글꼴이 꼴랑 다 깨지는 비트맵 명조로밖에 안 나오는 반면,
우리 21세기 워드는 그거 거의 반값으로도 아주 미려한 윤곽선 글꼴 신명조가 나온다고...;;

디스 당한 모 제품은 뭔지 직접적으로 언급은 안 돼 있지만, 누가 봐도 아래아한글 2.0이던가 2.1의 일반용인 건 뻔한 노릇이었다.
이를 의식해서인지 아래아한글도 2.5 버전에 와서야 일반용/전문용 구분을 없애고 16비트 컴퓨터에서도 컬러와 윤곽선 글꼴을 실현시켰지만.. 때가 좀 늦은 조치였다.

21세기 워드는 글자 크기 조절과 윤곽선 글꼴을 빼면 나머지 워드로서의 기능은 아래아한글 1.5x와 크게 차이가 나지 않았다고 한다. 화면을 딱 봐도 색상이나 글꼴은 아래아한글 1.5x를 대놓고 오마주한 것 같지 않은가? ㅎㅎ
단, 한글의 비트맵 글꼴 명조체는 아래아한글 1.5x가 사용하던 그 명조와는 다르다. 아래아한글은 custom 3차원 조합 테이블을 사용한 약간 더 정교한 글꼴인 반면, 21세기는 그냥 그 당시에 널리 통용되던 초중종 8*4*4벌 도깨비 조합 규칙으로 구현된 명조이다.

어떻게 아냐고? 다 방법이 있다.
도깨비 조합형은 세로줄형 모음에서 받침 ㄴ일 때와 이외의 다른 모음일 때의 구분이 없다. 그래서 '편'(집)일 때와 (입)'력'일 때 ㅕ가 길이가 똑같아서 받침 ㄴ일 때 아래 공간이 약간 허해 보인다.
그 반면, 지금 <날개셋> 편집기의 '바탕'으로 채용돼 있는 아래아한글의 명조는 받침 ㄴ일 때 세로 모음들이 딱 1픽셀 더 길어서 아주 조금 더 균형이 잡혀 보인다. 이런 작은 차이가 존재한다.

사소한 글꼴 디테일 얘기는 그렇고.
그 당시 이스트소프트는 파릇파릇한 공대생 몇 명이 갓 창업한 벤처/스타트업 수준에 불과했기 때문에 기술과 영업 역량에 한계가 있었다. 물론 그 여건에서 천재 프로그래머 몇 명이 이 정도를 뚝딱 만든 건 정말 대단한 일인 건 맞지만, 그런 몇 가지 차별화 요소만 갖고 아래아한글이라는 기득권 아성을 무너뜨릴 수는 없는 노릇이었다.

21세기 워드는 사임당 정도의 엘리트주의로 간 것 같지는 않지만, 어쨌든 그렇게 망하고 역사 속으로 사라졌다. 이걸 계기로 이스트의 창립자분은 뭔가 깨달은 게 있었는지, "그냥 기술적으로 뛰어나기만 한 제품"이 아니라 "사용자에게 잘 어필되고 실질적으로 팔리는 제품"을 만들어야겠다는 실용주의 노선으로 생각을 급선회하게 됐다고 한다. 하긴, 에디슨도 처음엔 자기 오덕질대로만 외곬스러운 발명을 하다가 나중에야 그렇게 깨닫는 계기가 있었다고 들었다.

21세기 워드를 만들었던 회사는 그로부터 6, 7년쯤 뒤 21세기가 실제로 임박하자, 이번엔 '새 폴더'를 비롯해 아주 익살스러운 외형의 압축 프로그램을 무료로 뿌리면서 컴백했다. 본인은 2000년 말, 알집을 4.8대 버전 때 처음으로 접했다. 그런 식으로 잘나갈 수도 있었고 "개인에게만 무료, 기업은 유료" 정책도 나쁘지 않은 것 같았는데.. 프로그램이 압축 본연의 기능이 탄탄하지 않다는 나쁜 소문이 2000년대 초중반에 워낙 퍼지면서 안 쓰게 됐고.. 지금은 빵집을 거쳐서 반디집이 국민 압축 프로그램 타이틀을 물려받았다. 빵집은 퀄리티가 나쁘지는 않았으나 보다시피 개발이 중단됐으니 말이다.

워드 얘기를 하다가 갑자기 딴 얘기가 길어졌네.
아무튼, 저 두 프로그램들은 아래아한글에 밀려 역사 속으로 사라졌다. 그로부터 20여 년 뒤, 도스가 아닌 Windows 얘기이긴 하지만 지난 2014년 가을엔 삼성조차 1992년 이래로 개발돼 왔던 훈민정음을 완전히 포기하고 MS 워드로 복귀를 선언했다. 훈민정음은 처음부터 Windows용으로 개발됐고, 버전 4.5 시절엔 마치 Visual Basic 4처럼 16비트용과 32비트용이 동시에 따로 출시된 탄탄한 제품이기도 했는데 말이다.

훈민정음이 GG를 쳤는데 그럼 아래아한글은? 지금까지 쌓인 인프라가 워낙 많고, 또 아래아한글과 워드는 내부 구조가 서로 너무 다르다 보니 사용자가 하루아침에 전멸하고 쫄딱 망할 것 같지는 않다. 그러나 '갈라파고스화' 알박기 덕분에 겨우 연명하고 있는 비중도 크며, 학교· 군대· 관공서가 아닌 사기업에서 HWP의 입지는 이미 눈에 띄게 줄어들었다는 것을 감안해야 할 것이다. 그리고 결정적으로, 이젠 워드, 엑셀 같은 너무 흔한 필수 프로그램은 그냥 다 공짜로 뿌리는 거나 다름없는 세상이 되기도 했고.
그러니 이스트도 결국은 돈 되는 건 게임이라고 생각하고 진작부터 과감하게 카발을 개발한 것 같다. 이 컴퓨터 소프트웨어 업계가 앞으로 어찌 되려나 참 눈 돌아가겠다.

Windows의 개발 역사에 대해서는 현직 마소 고참 개발자인 레이먼드 챈 아저씨가 The Old New Thing이라는 개인 블로그에서 10년이 넘게 오늘날까지도 구수한 입담으로 그때 그 시절 이야기를 하고 있다. 그것처럼 개인적으로는 아래아한글 1.0부터 현재까지의 역사를 몽땅 꿰뚫고 있는 어떤 개발자가 아래아한글 내지 그 시절 경쟁 워드 프로세서들의 역사를 구구절절 회상하는 코너가 좀 있으면 좋겠다. 필기체가 개발된 사연, 1.2 버전에서 테트리스 게임이 개발된 사연, 한컴 2바이트 코드의 제정 경위, 옛날 공 병우 박사와의 인연 등등 얘기가 엄청 많을 것 같은데..!

Posted by 사무엘

2015/10/30 08:34 2015/10/30 08:34
, , , ,
Response
No Trackback , 5 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1154

날개셋 한글 입력기 8.2

<날개셋> 한글 입력기가 8.0이 나온 뒤 거의 4개월 만에 8.2로 버전이 올라갔다. 1.0 이래로 개발 10주년을 자축한 지가 엊그제 같은데 벌써 15주년이 됐다. ㄷㄷㄷㄷ 이번에도 여느 버전업 때와 마찬가지로 온갖 부분에서 자잘한 개선과 변경 사항이 생겼다. 이 8.2는

  • 1.0 이래로 개발 15주년 돌파
  • 전체 소스 코드가 7만 줄 돌파
  • 32비트 msi 배포 패키지가 정확히 2MB 돌파
  • 32비트 ngs3.dll 커널 크기가 700KB 돌파

라는 여러 기록을 보유하게 되었다.

타자연습은 변화 사항이 없지만 API 구조와 폰트 로딩 방식의 변경 때문에 불가피하게 재컴파일 업데이트를 하게 됐다. 입력기는 8.2인데 타자연습은 구버전을 계속 사용한다면, 실행은 되겠지만 이제 글꼴 리스트에 글꼴들이 제대로 표시되지 않을 것이며, '고급 입력 스키마/입력기'는 로딩이 되지 않을 것이다. 그러니 타자연습도 부득이 같이 업데이트를 해야 한다.

1. Windows 10 지원

이번 8.2는 Windows 10에서 정식으로 테스트된 최초의 버전이다.
Metro UI에서는 제어판이나 텍스트 필터처럼 데스크톱 GUI를 사용하는 기능들을 모두 사용할 수 없게 막았다. 이건 뭔가 새로운 기능을 추가한 것도 아니고, 지금까지는 굳이 필요하지 않던 안전 체크 오버헤드만이 추가된 것일 뿐이다. 본인은 개인적으로 Metro UI는 왜 존재하는지 모르겠다.

명령 프롬프트에서 한글 입력이 더 진행되지 않던 문제를 고쳤고, 그 상태에서 제어판이 동작하지 않던 문제도 해결했다. (명령 프롬프트는 Metro 앱이 아니기 때문에 제어판 접근이 가능해야 한다.) 두 문제 모두 Windows 10의 명령 프롬프트는 예전 버전과는 영 다른 방식으로 동작하기 때문에 발생했었다.

이 정도 보완만 해 주면 되는 듯하나, Edge 브라우저에서 페이스북의 댓글란에 한글 입력이 제대로 안 되는 것은 기술적으로 해결 불가능한 문제로 남았다. 도대체 입력 문자를 어떻게 넘겨 줘야 MS IME 와 동일하게 동작할 수 있는지 현재로서는 알 수 없다. Edge의 버그에 더 가까운 것 같다.

늘 느끼는 것이지만, Windows에서 한글 입력기를 만드는 일은 프로토콜이 IME에서 TSF로 바뀌면서 무질서도와 난관이 한 10배 가까이 뛰고 더 복잡하고 어려워졌다. 예전에는 뭔가 static하고 write-only이기만 하던 고정 프로토콜에다가 문자열을 넣어서 메시지만 쏴 주면 됐지만 지금은 스레드 동기화부터 시작해서 온갖 복잡한 COM 객체 관리, 게다가 레거시 프로그램에 대한 호환 유지, 스펙대로 동작하지 않는 프로그램에 대한 보정.. 등 지저분함이 이루 말로 표현할 수 없다.
극소수 프로그램에서 드디어 텍스트의 임의 조작이 가능해진 것은 분명 큰 발전이지만, 그것 말고 똥싸 놓은 걸 치워야 하는 것도 많다.

2. 입력 패드에 후보 변환 기능 추가

요 근래엔 <날개셋> 한글 입력기의 제3의 구현체인 입력 패드가 장족의 발전을 거듭해 왔다.
7.9에서는 '화면 키보드' 기능에 눌린 글쇠 표시 기능이 추가되었으며, 이 작업을 발전시켜 8.0에서는 입력 패드가 여타 구현체와 대등한 수준으로 키보드 입력이 가능해졌다. 그리고 이번 8.2에서는 조합 중인 글자 하나에 한해서 한자 후보 변환까지 가능해졌다. 그리고 이 기능을 구현하기 위해 후보 변환 프로토콜을 전반적으로 재설계· 확장하는 대공사가 선행되었다.

지금까지 <날개셋> 한글 입력기가 내부적으로 사용하는 프로토콜은 중간에 후보 변환 요청이 있는 경우, 사용자가 무슨 후보로 변환할지 완전히 응답을 해야(취소하는 것도 포함해서) 다음 단계로 진행이 되는.. 일종의 순차· 동기적인 진행만을 지원했다.

이것은 편집기처럼 한자 후보 목록이 별도의 modal 대화상자로 출력되는 구현체에는 곧장 적용 가능한 만한 반면, 외부 모듈처럼 (1) 후보 목록이 뜬 채로 key 입력을 계속 받아들여야 하는 구현체에는 적합하지 않은 구조였다. 그렇기 때문에 동일 코드의 중복 같은 지저분한 편법이 필요했다. 그런데 외부 모듈과 비슷하게 동작하는 구현체(= 입력 패드)가 또 추가되고, 적합하지 않은 프로토콜을 여기에 또 적용할 수는 없기 때문에 이 기회에 리팩터링을 왕창 하게 되었다.

또한, 기존 프로토콜은 한자 후보 선택을 받은 뒤에 cursor를 이동시키거나 텍스트를 조작할 수만 있었지, (2) 반대 순서의 동작을 시킬 수는 없다는 한계도 지니고 있었다. cursor를 이동시켜서 다른 위치에 있는 글자에 대해 후보 변환을 할 수가 없었다.

아래아한글이나 MS IME에서 '토선생'이라는 단어를 입력해서 '생'을 조합하고 있는 상태로 한자 키를 누르면.. 앞의 '토선'이 선택되고 土船이 후보로 제시된다. 그거 변환을 하고 나면 cursor는 다시 '토선'이 아니라 '생'의 뒤로 딱 되돌아온다.
그러나 <날개셋> 한글 입력기는 cursor 위치는 변함이 없고 뒷부분의 '선생'이 선택되고 先生이 후보로 제시된다. 전자와 같은 동작은 프로토콜 차원에서 근본적으로 구현할 수 없기 때문이었다.

8.2부터는 드디어 이런 한계가 없어졌다. 내 프로그램 역시 MS IME와 완전히 동일한 방식으로 자유자재로 텍스트를 조작하면서 원하는 때에 후보 변환 UI를 modal 형태든 그렇지 않은 형태든 꺼낼 수 있다. 단, 실제로 MS IME와 동일한 방식으로 동작하는 기능 자체는 당장 반영되지 않았고 <날개셋> 한글 입력기의 소스 내부에 #ifdef ... #endif의 형태로 막혀 있다. 일단은 이론적으로 구현 가능해졌다는 것만 입증하고 넘어갔다.

<날개셋> 입력 패드에 후보 변환 기능은 이런 최신 프로토콜을 기반으로 구현되었다. 외부 모듈에 존재하는 후보 선택 UI를 그대로 가져다 쓰는 것을 고려했지만 현실에서의 여러가지 문제점으로 인해 그렇게 하지 않고 또 자체 구현을 했다. 외부 모듈의 후보 선택 UI는 운영체제의 프로토콜과 맞물려서 패드에는 필요하지 않은 오버헤드가 너무 많기 때문이었다.

사용자 삽입 이미지

입력 패드의 후보 선택 UI는 <날개셋> 한글 입력기의 GUI 엔진이 자체 제공하는 리스트박스 컴포넌트를 이용하여 최대한 간결· 단순하게 구현되었다. 외부 모듈의 것과 거의 동일하지만 확장 모드(tab 키)는 지원되지 않으며, 세로쓰기 모드의 지원도 기술적으로 불가능하지는 않으나 구현을 과감히 생략했다.

그 대신 입력 패드의 후보 리스트는 스크롤 막대를 마우스로 누르거나 끌어 보면, 줄 단위 스크롤이 가능하여 좀 더 직관적이라는 차이가 존재한다. 외부 모듈의 그것은 언제나 페이지 단위 스크롤만 된다. 물론 마우스가 아니라 키보드 화살표로 선택막대를 움직이면 페이지 단위로 스크롤된다. 페이지 단위로 이동 후 1~9 숫자를 선택하는 동작도 여전히 고려했기 때문이다.

후보 UI를 구현할 때 같이 구현돼야 하는 중요한 요소 중 하나는 후보 윈도우를 어디에다 표시할지를 결정하는 것이다. cursor 근처 아래에다가 표시해 주는 게 원칙인데, 이걸 hook 프로시저를 통해 알아 와야 한다. 이때는 IME 쪽 인터페이스만 사용하는 게 아니라 오버헤드를 감수하고라도 정확도의 향상을 위해 TSF 인터페이스도 사용한다. 훅킹으로 응용 프로그램에서 TSF edit session까지 요청해 보는 것은 처음이어서 프로그래밍이 굉장히 흥미로웠다. 32비트와 64비트를 구분 없이 모두 잘 지원하는 건 물론이고.

단, 이미 사용하고 있는 시스템의 IME가 한영 내지 한자 키를 가로채고 있으면 키보드 입력 모드에서도 이 입력 패드가 그 key들을 가로챌 수 없다. 그러므로 입력 패드에서 한자 변환을 하려면 F9 같은 다른 위치에다가 C0|0x82 같은 후보 변환 기능을 배당해 놓고 있어야 한다.

3. 글꼴 쪽의 변화

'한메가는본문'이라고 타자기 자형처럼 생긴 한글 글꼴이 지금까지 있었다. 개인적으로는 이것과 Lucida Console 영문 글꼴이 같이 잘 어울린다고 생각했는데, 이번 8.2에서는 이것과 같은 계열인 '한메굵은본문'이 추가되었다. 도스용 한메한글이 출력하던 글꼴을 그대로 재현한 것이다.

한메 계열 글꼴은 초성 5, 중성 2, 종성 3벌로 되어 있어서 도깨비 8*4*4보다 구조가 더 간단하다. 특히 '고'의 ㄱ과 '공'의 ㄱ이 동일해서 더욱 타자기 글꼴 같은 느낌이 나지만, 그렇다고 진짜 샘물이나 타자기 계열만치 과격한 모양은 아니다. 또한, '한솔바탕'과도 좀 비슷해 보이지만 그래도 엄연히 차이가 느껴진다.

그리고 이번에 굵은본문을 분석하고 추가하는 과정에서, 기존 가는본문의 조합 규칙이 몇 년째 잘못되어 있던 것도 같이 발견하여 고쳤다. 당장 '메' 자를 보면 차이를 발견할 수 있다.

사용자 삽입 이미지

잘 알다시피 <날개셋> 한글 입력기는 컴퓨터에서 한글을 '입력'하는 모든 아이디어와 기술을 구현하는 기반 시스템이다. 그런데 편집기는 다른 구현체와는 달리 독자적인 한글 글꼴 출력 시스템도 갖추고 있으며, 특별히 과거에 존재했던 다양한 독창적인 비트맵 글꼴들을 몽땅 한데 재현하는 일에도 덤으로 관심을 두고 있다. 아래아한글, Windows 3.x, mshbios 등. 입력 방식뿐만 아니라 글꼴도 보존 가치가 있는 옛날 데이터가 또 발견된다면 얼마든지 채택되고 추가될 것이다.

그리고 이번 버전에서는, 겉으로 차이가 느껴지지는 않겠지만 글꼴의 전반적인 로딩 방식을 memory-map 기반으로 바꿨다. 그래서 여러 프로그램에서 <날개셋> 한글 입력기 외부 모듈을 사용하고 있고 여러 프로그램들이 동일한 한자 글꼴 같은 걸 중복해서 로딩하더라도, 메모리가 제각각 따로 할당되는 게 아니라 1파일 1메모리가 보장되어 더 효율적으로 동작하게 했다. 뭐, 요즘처럼 메모리가 넘치는 환경에서는 겨우 16*16 비트맵 글꼴 나부랭이는 중복 로딩을 한다 해도 별 부담이 되진 않겠지만 말이다.

4. 변수 N의 의미 확장

기본 입력 스키마가 글쇠배열에다 제공하는 변수로는 P (caps lock 여부), N (num lock 여부), T (오토마타의 조합 상태), D~F (입력 중인 한글 자모)가 있다. T, D~F는 정수인 반면 P와 N은 일종의 0 아니면 1의 boolean값이었다.
그런 키보드 램프의 상태에 따라 서로 다른 문자를 되돌리고 싶으면 해당 변수 값을 토대로 ? : 조건부 수식을 지정하면 된다. caps lock은 그렇다 치더라도 num lock의 경우, 세벌식 글쇠배열의 숫자 자리를 키패드처럼 바꾸는 용도로도 활용할 수 있어서 매우 편리하다.

본인은 이 생각을 아주 오래 전부터 했기 때문에 저건 <날개셋> 한글 입력기의 1.0때부터 있던 기능이었다. 단지 그때는 지금 같은 입력 스키마와 문자 생성기의 계층 구분이 없었기 때문에, 그 기능이 입력 스키마의 변수가 아니라 그냥 입력 옵션 중 하나로 제공되었을 뿐이다.

그런데 이번 버전에서는 옵션을 추가로 줄 경우, N에 num lock (비트 1)뿐만 아니라 scroll lock (비트 2)도 같이 줄 수 있게 했다. 이 옵션이 지정되어 있으면 N은 앞으로 키보드의 상태와 관련된 다른 유의미한 비트 플래그가 도입될 경우 4, 8, 16 같은 식으로 의미가 계속 추가될 것이다.

scroll lock은 사실 굉장한 잉여 램프로 전락해 있으며 caps lock만치 문자 입력에서 중요한 역할을 하지는 않는 게 현실이다. 그렇기 때문에 별도의 독립된 변수를 할당하지는 않고 기존 N에서 비트만 추가하는 것으로 의미를 정했다.
그래도 기능을 일단 만들어 놓으면 이것도 아주 창의적으로 활용하는 사용자가 분명 있으리라고 생각된다.

따라서 이 옵션을 켠 상태에서 num lock만 인식하려면 글쇠 수식을 N ? A: B 이렇게 작성할 게 아니라 번거롭지만 N&1 ? A: B라고 써 줘야 한다.
세벌식 키패드 수식을 생성해 주는 빠른설정 기능은 여기에 맞춰 &1이 추가되도록 알고리즘이 수정되었다.

5. 키보드 드라이버 보정

이번 버전에서는 입력기나 편집기 계층이 아니라 시스템 계층에서 꽤 참신한 기능이 하나 또 추가되었다. 바로 키보드 드라이버의 글쇠 인식을 인위적으로 변조하는 기능이다.
내 프로그램의 내부에는 Shift+Space를 '한영'으로 바꿔서 인식하는 type-3 키보드의 동작을 도로 무효화하는 보정이 있었다. 그런데 이 로직이 편집기와 외부 모듈과 패드의 구현체에 몽땅 중복으로 존재하며, 이것도 켜거나 끌 수가 있게 해야겠다는 생각에 별도의 계층으로 빼냈다.

그리고 type-3 보정뿐만 아니라 type-1 보정도 추가했다. 바로, 오른쪽 Ctrl/Alt를 한영/한자가 아니라 있는 그대로 인식하는 것 말이다. 이로써 한국어 키보드에서도 Ctrl/Alt의 좌우 구분이 가능해졌다. 물론, 아무 보정을 하지 않는 것도 가능하고 말이다. 왜 이런 유용한 기능을 진작에 넣지 못했나 하는 아쉬움이 느껴진다.

그리고 여기서 키보드 드라이버 보정을 한 것은 물론 응용 프로그램이 아니라 <날개셋> 한글 입력기 내부에서만 통용된다. type-1 보정을 했다고 해서 오른쪽 Alt로 응용 프로그램의 메뉴를 바로 열 수 있는 건 아니다.

시스템 계층 설정에는 지금까지 글꼴과 관련된 설정과 기능 몇 가지만 있었는데 '보정 없음, type 1, type 3'이라는 세 항목 중 하나를 선택하는 UI도 추가되었다.
시스템 설정의 내용은 사용자 컴퓨터의 레지스트리에 저장되지, ist/st 같은 파일에는 저장되지는 않는다. '미저장 확인'을 누르면 해당 프로그램이 실행되어 있는 동안만 유효하니, '확인'을 눌러야 레지스트리에까지 저장되어 다음에 프로그램을 재실행할 때도 반영된다.

6. 키패드 글쇠와 키보드 글쇠의 구분 기능

Scroll lock 지원과 키보드 드라이버 보정. 이번 버전엔 어쩌다 보니 키 입력 인식과 관련된 기능이 여럿 추가됐는데, 이것만 들어가기에는 좀 아쉽다.
이번 8.2에서는 <날개셋> 한글 입력기의 개발 역사상 최초로 일부 글쇠에 대해 키패드 글쇠와 키보드 글쇠를 구분해서 인식할 수 있게 되었다.

그 대상은 바로 상하좌우 화살표(4) + Home/End/Pg Up/Pg Dn(4) + Ins/Del(2) + 엔터 이렇게 총 11개이다.
단축글쇠 배당 대화상자를 열어서 이들 키를 누르면.. 오른쪽에 종류를 묻는 콤보 상자가 추가로 뜬다. 사용자는 종전처럼 "구분 없이 아무 거나 인식"을 선택해도 되고, 키보드 것만 혹은 키패드 것만 인식하게 설정할 수 있다. 문자 키와 키패드 사이에 따로 몰려 있는 구역도 '키보드' 영역이다.

그리고 고급 입력 스키마에서는 바로 N 변수에서 1(num lock), 2(scroll lock)에 이어 4가 이 글쇠의 변별을 담당한다.
Windows의 키보드 메시지에서 extended key 플래그가 바로 여기에 전달된다. 다른 글쇠들은 키보드 글쇠일 때 플래그가 켜져 있지만, 엔터만 유일하게 키패드 글쇠일 때 플래그가 켜져 있다. 여기에는 사연이 좀 있다.

extended key란 예전의 84/86키 키보드에는 없다가 지금과 같은 101/103키 키보드에서 중첩되어 새로 추가된 key를 나타내는데, 예전에는 키패드에 엔터가 없다가 나중에 키패드에 새로 추가됐기 때문이다.
그 반면, 나머지 home, end 같은 건 원래 키패드에만 있다가 나중에 별도의 구역이 또 추가된 것이기 때문에 '키보드'에 속하는 구역의 글쇠들이 extended이다.

아무튼 이런 옵션과 변수를 통해서 단축글쇠와 고급 입력 스키마에서 모두 키보드와 키패드를 구분해서 글쇠를 인식할 수 있다.

7. 보조 입력 도구

끝으로, 사소한 사항으로는..
보조 입력 도구인 '부수로 한자 입력'에서 부수나 한자를 우클릭했을 때 해당 글자를 클립보드에 복사하는 명령을 추가했다. 지금까지는 이 명령이 문자표에만 있지 부수 한자 입력에는 없었다.

그리고 문자표에는 알다시피 문자를 운영체제의 특정 글꼴로 출력하거나 내장 비트맵 글꼴로 출력하는 옵션이 있는데, 제어판의 시스템 계층에서 설정된 그 후보 출력용 글꼴을 지정하는 옵션도 추가했다. 지금까지 이런 기능이 왜 없었는지 모르겠다.
이들 보조 입력 도구는 지금으로부터 5~6년 전, 5.5x 시절에 처음으로 도입되었다. 참 격세지감이다.

위의 신규 기능들을 구현하는 과정에서 꽤 황당한 버그가 오랫동안 남아 있던 것을 발견했다.
원래 날개셋 제어판을 열었다가 '확인'을 눌러서 닫으면 입력 설정만 저장되는 게 아니라 모든 플러그 인들의 설정도 파일로 저장된다. 텍스트 필터들의 내부 설정들이 여기에 포함되며, 문자표는 사용자가 예전에 선택한 글꼴과 view 모드를 이 방식으로 기억하고 있는다.
그런데 64비트 에디션은 그런 플러그 인 기능들을 설정을 변경한 뒤 사용하고, 날개셋 제어판을 '확인'을 눌러서 닫았는데도 해당 프로그램(편집기 같은..)을 재실행했을 때 예전 설정이 보존되어 있지 않았다. 파일 오프셋과 관련된 착오가 있는 것을 확인해서 즉시 고쳤다.

Posted by 사무엘

2015/10/27 08:22 2015/10/27 08:22
Response
No Trackback , 7 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1153

성경 Trivia -- 下

0.
이번엔 먼저 난센스 퀴즈 개드립부터 좀 시작하자. 노아(성경에 나오는)의 아내의 이름이 무엇일까?

정답은 잔 다르크.
저 이름은 잘 알다시피 '아르크의 잔/요안'이라는 뜻이며, Arc(아르크)는 ark(궤, 방주)와 발음이 같기 때문이다.

아 제기랄....;;; 아무리 난센스라지만 그 병맛스러움은 이말년 서유기에서 나타태자가 시전했던 희대의 병맛 퀴즈,
궁예가 몰고 다니는 승용차의 이름은? 애꾸스
지금 인도는 몇 시일까? 인도네시아
귀가 불타면? 타이어. (이건 뭐 그... 거북선, 소방관, 포크레인, 활명수던가.. 그 초병맛 그림 퀴즈의 소재로 써도 되겠다 -_-;;;)

그리고 본격 2차 세계대전 만화에서 롬멜 준장이 시전한 초썰렁 퀴즈
네덜란드에 있는 강력한 방어선은? 암스테르 '담'
이 전차가 왜 '3호 전차'일까? '3호선'이면 일산까지밖에 못 가니까.
영국의 수상은 왜 이름이 '처칠'일까? 부인이 일곱 명이어서

에 필적하는 것 같다. 썰렁하게 해서 죄송~~ ㅡ,.ㅡ;;

1.
성경에는 서로 다른 책 내지 다른 문맥에서 굉장히 놀라울 정도로 유사/동일한 표현이 존재하는 쌍(pair)이 있다. 예를 들어,

  • 아들을 낳고는 죽은 산모 이야기는 아들을 낳고는 죽은 산모: 라헬(창 35:16-18), 그리고 이름도 안 나오는 엘리의 며느리 및 비느하스의 아내(삼상 4:19-21)
  • 동성애자들의 "우리가 그들을 알리라" 드립: 소돔 (창 19:4-5), 그리고 베냐민 지파의 벨리알의 아들들(삿 19:21-22)

이것들은 비록 시기와 장소가 다르지만 심상은 서로 동일하다.
그리고 이와 동일한 맥락에서 without form and void는 창 1:2와 렘 4:23이 서로 동일하게 부정적인 심상이다. 시기가 각각 과거와 미래로 다를지라도 말이다.
또한, 창 1:28과 창 9:1의 replenish the earth 역시 "예전에 꽉 차 있다가 비게 된 땅을 다시 채우라"라는 동일한 심상이 존재한다고 충분히 유추 가능하다.

2.
성경에서 완전히 동일한 건 아니지만, 결국 이쪽에서 저쪽으로 바로 seamless하게 이어지기 때문에 문맥에 따라서는 둘이 동일하다고 볼 수도 있는 개념의 쌍이 있다.

  • 무교절과 유월절: 눅 22:1 vs 행 12:3-4. 유월절이 끝난 뒤에 곧바로 무교절이 이어지지만, 가끔은 단일한 명절 series로 취급되기도 한다.
  • 지옥과 불못: 계 20:14. 궁극적으로는 지옥도 불못에 던져지긴 하지만 지옥에 있던 혼들이 다 그대로 불못으로도 가므로 둘은 "구원받지 못하는 사람이 영원을 보내게 되는 장소"라는 개념 하에서는 하나로 볼 수도 있다.
  • 하늘의 왕국과 하나님의 왕국: 마 19:23-24와 막 10:23-24. 두 왕국은 일면 다른 개념이긴 하지만, 가끔 성경에서 두 용어가 좀 구분 없이 섞여 쓰인 듯한 곳도 있다. 처음에는 구분이 그다지 필요하지 않았는데 유대인의 예수님 거부, 교회 태동, 초림과 재림 사이의 gap으로 인해 더 분명하게 다른 개념이 된 셈이다.

3.
하나님은 사람의 자유 의지는 절대로 건드리지 않으신다. 무슨 마인드 컨트롤 해서 로봇처럼 강제 조종을 하지는 않으신다. 하지만 일단 마음을 먹고 방향을 결정한 사람이 일단 나아가기 시작하면 거기에 '가속도'를 불어 넣기는 하신다. 마치 자동차의 파워스티어링처럼 일단 핸들을 살짝 돌리기 시작하면 작은 힘으로도 확 돌아가게 하신다.
그래서 하나님은 일단 삐딱서니 타고 반골 기질을 보인 파라오의 마음을 더욱 강퍅하게 만드셨으며, 기타 여러 악인들을 비슷한 방식으로 농락하셨다. 그분은 미혹의 영을 보내서 사람들로 하여금 거짓을 믿게 낚기도 하신다. (살후 2:11; 왕상 22)

그렇게 거짓을 믿게도 하실진대 반대로, 우리로 하여금 진리를 믿도록 우리가 가진 믿음이 아니라 '이 땅에서 아버지 하나님을 믿었던 예수님의 믿음'을 선물로 주기도 하신다는 것이 논리적으로 더욱 수긍이 간다. faith of Jesus는 예수님을 믿는 믿음이 아니라 말 그대로 예수님의 믿음인 것이다.

4.
우리는 무슨 분야에서든 열심히 노력하면 자기 삶의 질은 '지금'보다는 어떤 형태로든 당연히 더 나아진다. 단지, '남들만치' 나아진다는 보장이 없을 뿐이다. ㅋㅋㅋ
내가 열심히 코딩을 하면 <날개셋> 한글 입력기가 예전 버전보다 더 좋아지고, 한글 입력 기능의 범위가 더 확장되고 내가 자아성취와 정신건강에 증가한다는 건 지당한 이치이다. 단지 이거 만든다고 해서 반드시 무슨 부귀영화가 찾아온다는 보장이 없을 뿐이다. 음 이건 뭐 자가디스인가.. ㅎㅎ
이건 마치 성경 말씀처럼 들린다.

  • 시험을 피할 길을 내서 너희가 능히 시험을 능히 감당 가능하게 해 주겠다고 말했지, 시험을 아예 없애 주겠다고 하나님이 약속하지는 않은 것과 같다. (고전 10:13) 크리스천에게 구원의 영원한 보장만큼이나 확실하게 면제· 바이패스가 보장된 건 '그 대환란'뿐이다.
  • 간구를 잘하면 모든 이해를 뛰어넘는 평안을 주겠다고 했지, 역경과 고난 자체를 없애고 당장 문제를 해결해 주겠다고 말하지는 않은 것과 같다. (빌 4:7)
  • 영적으로 복을 주신다고 했고 어찌 보면 크리스천들은 복을 이미 넘치도록 받았다(엡 1:3). 사랑도 받았다. 단지, 구약 시대처럼 당장 땅(부동산!)과 재물의 복을 주겠다고 말하지는 않은 것과 같다.

그렇다고 반대로, 예수쟁이들은 성경대로 살면 365일 24시간 내내 가시밭길뿐이고 오로지 시험과 고난과 박해밖에 없고 배 쫄쫄 굶는 거지가 된다는 얘기도 아니다(북한 같은 예외· 극단적인 곳이 아닌 한!). 하나님은 그렇게 야박하고 잔인한 분이 아니다. 물질적인 복은 그냥 케바케일 뿐이란 뜻임. 요 21:23에서 제자들의 미래 순교 여부가 그냥 랜덤 케바케였던 것처럼 말이다. 구원과는 직접적인 관계가 없고 덜 중요한 이런 후천적이고 환경적인 요인들이나 가변적인 것이다.

이래저래 겉을 남하고 비교하고 상대적으로 비교하는 것은 사람의 정신건강에 이로울 게 별로 없다. 비교를 굳이 하려면 "저 사람은 평소에 기도와 성경 읽기를 어떻게 하나? 하나님과 좋은 관계를 유지하는 비결이 무엇일까? 도대체 어떻게 저 상황에서 기쁨과 감사가 나올까?" 이런 걸 벤치마킹하고 자기에게 도입할 생각을 해야 한다.

5.
(사람을 채용할 때는) "또 그 사람의 '구글다움(googleyness)' 여부를 봅니다." (☞ 관련 기사)

여기서 KJV 신자로서 나의 직업병이 0.1초 만에 하나 발동되는데..
성경에서 우리말로 옮기기 난감한 대표적인 단어 중 하나인 godliness가 떠오르기 때문이다. 저것도 이와 방식으로 만들어진 단어이다.

정말 직관적으로 풀이하자면 '신스러운'이다. 하나님의 성품과 부합하는, 하나님다운.. 정도.
우리말 성경에서는 한때 '경건'이라고 옮기곤 했는데 이건 단순 '독실, 엄숙' 같은 뜻이 아니기 때문에 정확한 번역은 아니다. 게다가 반의어인 ungodliness로까지 가면.. 그래도 울며 겨자 먹기로 '불경건'을 쓸 수밖에.

한 가지 확실한 건, 구글 직원이라면 구글다워야 하는 것만큼이나
크리스천에게서는 지식과 행실, 머리와 심장에서 모두 하나님답고 하나님의 성품이 잘 드러나야 한다는 것이다.
이게 종교적인 연기· 위선이나 정신줄 놓은 광신하고 분간이 안 돼서 오해와 편견이 무진장 많다는 게 문제일 뿐.

6.
로보캅...은 아니고 초대 교회 시절에 사도 요한의 제자라고 알려진 '폴리캅'이라는 사람이 있었다.
그는 요한계시록에 나오는 소아시아 교회 중에 서마나 교회의 감독이었으며, 80대 중반의 나이로 AD 150~160년경에 순교했다고 알려져 있다.

"지금이라도 예수 믿지 말고 황제에게 경배하고 제물을 바치면 당신의 나이를 감안해서라도 반역 행위를 없던 걸로 해 주겠다"라는 제안을 받았으나, 그는 이를 일언지하에 거절했다.
"예수님은 내 인생 80년 평생 동안 한 번도 나를 배반한 적이 없고 늘 신실하셨는데 내가 어찌 나를 구원하신 나의 왕을 모독할 수 있단 말이오?"

그는 처음에는 맹수들에게 잡아먹히는 방법으로 처형될 예정이었다. 그러나 모종의 이유로 인해 화형으로 방식이 바뀌었다.
불태웠는데 그는 고통에 몸부림치지도 않았고 여전히 살아 있었다고 한다. 결국은 칼과 창으로 난도질 당함으로써 순교했는데.. 전승에 따르면 폴리캅이 죽을 때 그의 몸에서 비둘기 한 마리가 튀어나왔고, 피가 넘치면서 화형장에 붙어 있던 불을 꺼 버렸다고 한다. 그렇다고 이 차돈처럼 하얀 피가 나온 건 아니었고.

그 당시 군중들은 우리의 예상과는 전혀 딴판으로, "저 개독 예수쟁이 뒈져라!"라고 외치지 않았다. "저 무신론자 뒈져라!"라고 외쳤다! 눈앞에 있는 황제를 숭배하지 않고, 어떤 형상 성물도 없고 보이지 않는 신을 믿는다는 개념을 이해를 못 한지라 크리스천들을 숫제 무신론자라고 생각했던 것이다. 온갖 성물 형상들로 가득한 종교와는 분위기가 영 딴판이었음이 틀림없다.

7.
유대교 신정국가이던 구약 시대 이스라엘 민족은 지구상의 그 어떤 민족· 부족도 하지 않는 이상한 종교 행위를 해야 했다.
누가 죄를 지었으면 지금 천주교에서 하는 것처럼 고해성사를 하고 죄를 지은 당사자가 자가속죄를 위해 무슨 고행이나 뺑이를 치는 게 아니라, 웬 뜬금없이 흠 없는 불쌍한 가축을 잔인하게 죽이고 피를 쏟고 시체를 불태워야 했다.

구약 제사장은 사람들에게 율법을 가르치고 해설하는 화이트칼라 먹물 문돌이이기만 한 게 아니라, 반쯤은 동물 잡는 백정 같은 일을 하면서 고된 육체 노동도 해야 했다.
그러니 신체에 장애가 있는 사람은 이런 직분을 맡을 수 없다고 모세오경에 기록된 게 있는데, 이걸 보고는 성경이 무슨 장애인을 차별하고 비하하네 이렇게 이상하게 트집잡는 개독안티도 있다. 별로 상대할 가치 없다.

죄라는 건 겨우 고행이나 얼차려로 대충 말소하거나 다른 어설픈 선행으로 퉁칠 수 있는 게 아니다. 누군가가 피를 흘려야만 대속이 가능한 심각한 사항이며, 그래서 불쌍한 동물의 죽음이 야기되어야 하고.. 죄의 형벌을 받는 지옥이라는 게 저런 뜨거운 불이 가득한 고통의 장소라는 것을 유대인들은 매일 시청각으로 접하며 지냈다.

요즘 병원이나 제약 연구소의 뒤뜰을 보면 사람을 대신하여 임상실험에 동원됐다가 죽은 동물들을 기리는 위령탑이 있고 연구원들이 1년에 한 번쯤은 거기서 쥐나 토끼가 좋아하는 먹이를 얹어서 고사(?)도 지낸다.
그런 사고방식이라면 구약 성전 뒤뜰에서는 성전 직원(?)들이 1년에 몇 번이고 인간의 죄를 대신해서 죽은 동물들의 고사를 지내 주는 게 마땅하다.

그러나 성경에는 그런 사고방식은 전혀 존재하지 않는다. 히브리서 9~10장은 죄사함을 위해서는 동물의 피만으로는 오히려 부족하다, 불완전하다는 말만 할 뿐, 동물을 불쌍히 여기는 박애주의(?) 따위와는 억만 리 떨어져 있다. “황소와 염소의 피가 죄들을 제거하는 것은 불가능하니라.” (히 10:4)

끝으로, 동물 얘기가 나왔으니 말이다. 상식 차원에서 이미 아는 분도 계실 텐데, 성경은 신구약 66권을 통틀어 고양이에 대한 언급이 전무하다. 쥐, 개, 여우 같은 주변 동물은 다 등장하는데도. 더구나 성경이 다루는 시기와 지역에 고양이는 분명히 존재했을 텐데 부정한 동물로라도 전혀 언급되지 않는다. 무척 흥미로운 점이다.

8.
구약은 저렇고, 신약 기독교회의 역사에는 피흘린 순교자의 발자취가 있다.
교회가 그냥 세상 정부의 군대 같은 조직이거나 여느 시민 단체와 별 차이가 없었다면, 자기 조직을 위해 목숨을 바친 선배들의 영웅적인 행적을 그야말로 대대적으로 선전하면서 정훈 교육 소재로 써먹어야 한다.

당장 한글 학회는 조선어 학회 사건에 굉장한 자부심을 갖고 있고 조선어 학회 '수난'(그냥 사건이 아니라)이라고 부른다. 자기네 행사가 있을 때는 국민의례를 하고 나서 그때 고초를 겪은 국어학자들(특히 옥사한 이 윤재· 한 징 선생)에 대한 묵념을 추가적으로 한다.
그런 식이라면 교회 예배당엔 주 기철 목사 동상을 곳곳에 만들고 누구를 기리는 노래를 만들고, 매주 예배 때 믿음의 선진들에 대한 묵념이라도 해야 마땅하다. 기독교회의 현충일 같은 날도 좀 있어야 한다. 그나마 천주교가 이에 근접해서 각종 성인 성자들을 만들어 놓고 별걸 다 기념하긴 한다.

그러나 오늘날 기독교회에서 그렇게 하지 않는 이유는..
짐승들의 공로와 마찬가지로 순교자들의 공로 역시, 그게 아무리 크다 해도 예수님의 공로보다 더 위대하다고 여기지는 않기 때문이다. 아니 둘은 완전히 근본적으로 다르다. 순교자들의 죽음과 예수님의 죽으심은 성격이 완전히 다르다!

그리고 또 다른 이유로는... 그 많은 순교자들은 죽었지만 여전히 살아 있기 때문이다! 하늘나라에서 다시 기쁘게 만나 볼 사람들이다. 그러니 애초에 영원히 못 볼 사람인양 추모를 할 필요가 없는 것이다! 그냥 단순히 교훈과 도전을 얻고 예우를 하는 것 이상으로 그들을 우상화할 필요도 없다. 그들 역시 똑같은 인간이었고 우리 역시 이미 그들과 동급의 성도(saint. 성인 성자가 아님)이기 때문이다.
따라서 이 두 개념을 요약하자면 이렇게 된다.

  • 구약 유대교: 죽임당한 동물 위령탑 없음
  • 신약 기독교: 순교자 묵념 없음

아울러, 신약 시대에 교회에 존재하는 유일한 의식 내지 규례는 딱 두 가지, (1) 침례와 (2) 주의 만찬이다. 둘 다 예수님의 재림 이전까지만 유효하며, '상징'일 뿐이지 혼의 구원하고는 직접적인 관계가 없다는 공통점이 있다.

* 에구, 서로 다른 글들을 한데 묶고 편집해서 올리는 것도 고역이다. -_-;;

Posted by 사무엘

2015/10/24 08:39 2015/10/24 08:39
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1152

성경 Trivia -- 上

1.
성경은 유대인과 이방인에 대해서 각각 무어라 말할까?
선민인 유대인에 대해서도 죄를 짓고 계약을 위반했을 때는 역사적으로 정말 많이 심판하고 정말 처참한 꼴을 많이 허락하셨다. 그럼에도 불구하고 얘들은 완전히 뿌리뽑히고 멸망하지는 않고, 잡초처럼 처절하고 끈질기게 살아남고 회복되고 최후의 승자가 될 거라는 보장만 해 주셨을 뿐이다.

한편, 이방인에 대해서는 가장 대표적으로 부정적으로 얘기한 예는 가나안 민족과 소돔이다. 전자는 유대인들로 하여금 짐승과 어린아이까지 하나도 남기지 말고 싹 죽이라고 하나님께서 명령을 하셨고 앞뒤 문맥을 모르는 개독안티들이 그걸 트집을 잡을 정도이다. 후자 소돔은 더 설명이 필요하지 않고.

하지만 그런 부분을 제외하면 이방인에 대해서도 의외로 긍정적으로 나온 게 성경 곳곳에서 발견된다. 비록 유대인 같은 명시적인 율법을 받지 않았고 여호와 하나님을 직접적으로 들어서 알지는 못했지만, 그래도 얘들도 기본적으로 알 거 다 알았다. 살인이나 간음죄를 저지르면 안 되고, 그랬다가는 천벌과 인과응보를 받는다고 굳게 믿고 있었다는 점이 부각된다. 이것은 "구약 시대에 이방인들은 어떻게 구원받았나?" 같은 질문에 답을 구하는 단서가 될 수 있다.

  • 아비멜렉(창 20:4-5)은 간음이 죄라는 것을 뼛속까지 숙지하고 있었고 그래서 하나님 앞에서 떳떳했다. 26장에 나오는 다른 아비멜렉도 마찬가지.
  • 이방인이던 아하수에로 왕의 측근들은 남편과 아내와 가정의 영적 질서에 대해서 우리처럼 바울 서신을 보지 않고도 잘 알고 있었다(에 1:17,18).
  • 요나와 같은 배를 탔던 이방인들은 살인을 저질렀다가는 자신들이 큰일 난다는 관념이 박혀 있었다(욘 1:14). 요나를 바다에 던지기 전에 얼마나 고뇌하고 있는지를 보라.
  • 바울을 맞이했던 미개한 백성들도 살인을 저지르면 반드시 천벌 받는다는 것을 알고 있었다(행 28:4).

2.
느부갓네살 왕은 유대인 포함 온갖 민족들을 심판한 정복자였으며 어찌 보면 유례를 찾기 힘든 개막장 폭군이었다. 역사상 "꿈 내용이 생각은 안 나는데 어쨌든 니들이 내 기억을 복원해서 해석까지 안 해 주면 몽땅 뒈질 줄 알아라" 이런 짓거리를 한 군주가 있었던가? -_-;;

그런데 그런 막장인 것치고는 이 사람은 하나님을 찬양하는 장면도 많이 나오고 성경에서의 묘사가 꽤 호탕하고 긍정적이다. 이방인 주제에 하나님께서 "나의 종"(렘 43:10)이라고 불러 주셨다.
게다가 미쳐서 소처럼 됐다가도 다시 왕위를 회복까지 한다. 어떻게 이런 일이 있을 수 있을까? 느부갓네살은 출애굽기의 파라오처럼 성경적으로 적그리스도의 예표 중 하나임에도 불구하고, 그 사람 개인은 궁극적으로 아마 구원받았을 것으로 여겨진다. 참 독특한 인물이다.

3.

  • 에스더: 법을 지키는 것, 예전 법을 초월하는 새로운 법을 만드는 것에 대한 개념 차이를 보여 준다. 권위의 영적 의미에 대한 좋은 조명을 준다.
  • 요나: 애국심과 민족주의를 존중하는 한편으로, 이를 초월한 구원 이념을 가르친다.

4.

  • 미래에 대해서: 이 구절은 아직 성취된 예언이 아니라 더 멀리 재림 때가 돼서야 성취될 사건이다.
  • 과거에 대해서: 이 구절은 노아의 홍수를 가리키는 게 아니라 더 옛날 이전 세상 시점의 일이다.

생물학적인 남녀와 부모· 자녀 관계가 있기 전에 삼위일체 하나님부터 아버지와 아들 개념이 있었고, 남녀간의 사랑이 있기 전에 하나님의 성품에 사랑이 존재했다.
그런 것처럼 지구의 자전으로 인한 24시간짜리 낮과 밤이 존재하기 전에 이미 전우주적인 빛이 있었고 빛과 어둠의 분리로 인한 낮과 밤이 있었다. 6일 창조 중 첫째 날에 나오는 낮과 밤은 넷째 날에 나오는 낮과 밤하고는 개념적으로 차이가 있다. 성경은 가시적인 만물과 비가시적인 영적 만물이 서로 나란히 대칭을 이룬다는 비례와 예표 원리를 줄곧 가르친다.

5.
성경에는 잘못 해석할 경우 의미와 뉘앙스가 완전히 정반대로 바뀌는 지뢰밭이 몇 군데 있으니 주의가 필요하다.
먼저 용어부터 살펴보면, '누룩', '불 침례' 같은 건 긍정적인 심상이 절대로 아니다. 마 3과 눅 3에서 나오는 불 침례는 지옥에서 온몸이 불에 활활 타는 걸 얘기한다. 절대로 불 같은 성령의 권능을 얘기하는 게 아니다. 아마 '불꽃'의 모양처럼 갈라진 혀(행 2:3)랑 헷갈린 것 같은데.. 성경의 묘사는 그게 전부이다. 좌우 문맥을 잘 살펴보기 바란다.

그리고 크리스천 개인의 작지만 소중한 믿음, 희생, 헌신을 비유적으로 표현하고 싶으면 '겨자씨' 내지 요 12:24에서 모티브를 따서 차라리 '밀알'이라고 표현하는 건 적절하다. 그 반면 누룩은 성경에서 절대적으로 부정적인 존재이다. 누룩이 들어가서 온 빵이 부풀었다는 비유(마 13:33) 역시 교회의 기형적인 팽창과 부패와 변질을 얘기하는 것이지, 무슨 복음 전파나 하나님 나라 확장 같은 긍정적인 얘기가 결코 아니다. 그런데 보아하니 '누룩 선교회'도 있다고 한다. 헐.. -_-;; IT 기업이 "버그 소프트웨어" 내지 "BSOD 시스템즈" 이렇게 상호를 지은 것과 비슷하다.

하긴, 똑같은 겨자도 마 17:20의 '겨자씨만 한 믿음'은 긍정적인 반면, 마 13:31-32에서 '겨자가 나무가 된 이야기'는 부정적인 묘사이니 이것도 참 절묘하다. 그건 누룩과 마찬가지로 변질과 부패를 가리킨다. "콩 심은 데 콩 나고, 팥 심은 데 팥 난다"를 정면으로 거스른 현상이며, '공중의 새' 역시 성경적으로 심히 부정적인 심상이기 때문이다. 이 시점에서 "모든 부정하고 가증한 새들의 집"(계 18:2)을 떠올린다면 심상이 100% 동일하지는 않아도 얼추 맞게 연결된다.

이런 '누룩'과 동일 선상에서 하나 더 첨언하자면, '썩다'라는 표현을 사용하는 것도 조심해야 한다. '썩음'(corruption)은 행 2:27, 행 13:34-37, 롬 1:23, 고전 15:42, 벧전 1:23 등 성경에서 일관되게 매우 부정적인 심상이며 크리스천과는 전혀 어울리지 않는다. 요 12:24와, 심지어 고전 15:36도 뿌려진 씨앗은 떨어져서 그냥 '죽는다고' 했지, 죽어서 굳이 썩는다고 얘기하지는 않았다! 크리스천은 단어를 선택할 때도 주의를 매우 기울여야 함을 알 수 있다.

다음으로, 살후 2:7의 막고 있는 자, 계 6:2의 흰 말 탄 자는 적그리스도이지 예수님 같은 좋은 쪽이 아니다. 다니엘서에도 이렇게 주객이 뒤바뀔 여지가 있는 예언이 나오는데 당장 정확하게 기억은 안 난다.
변개된 성경들은 사 14:12에서 루시퍼의 정체를 감추고 아예 마귀에게 예수님의 칭호를 부여하거나(계 22:16), 혹은 예수님을 저렇게 심판 받는 나쁜놈으로 만들어 놓기도 했다.

6.
성경에서 "어, 왜 이럴까? 여기에는 어떤 의미가 있을까?" 잠시 생각을 좀 해야 하는 대목으로 본인은 다음 장면들을 꼽겠다.

  • 히브리 산파의 거짓말(출 1:17-20)과 라합의 거짓말(수 2)
  • 불의한 청지기 비유(눅 16)
  • 일한 시간과 무관하게 같은 보수를 받은 포도원 일꾼 비유(마 20)

상반된 진술이 동시에 나오는 부분으로는

  • 어리석은 것을 따라 대답하라 vs 대답하지 말라 (잠 26:4,5)
  • "하나님께 묻지 않고 의사들에게 구했더라"(대하 16:12) vs "네 위장을 위해 약 처방을 하라"(딤전 5:23)

이것 말고 예가 더 있을 것이다. 물론 이것들은 문맥 분간을 잘하고 잘 "나눠야" 하는 대목들이다.

7.
성경에는 김대기스러운 '적절하게'가 바울 서신에서 두 번이나 나온다. (고전 6:12; 10:23)
그리고 성경에는 "A가 B와 대응하는데 하물며 C와 대응할 D는 어떻겠느냐?" 요런 비례식 논법이 신구약을 통틀어 즐겨 쓰인다 바울도 자주 사용했다. 대표적인 예는 "유대인들의 삽질과 실족만으로도 우리에게 이런 유익을 줬는데 하물며 쟤들이 잘되면 얼마나 복이 크겠는가?"(롬 11:12) 앞으로 성경을 읽을 때 요 표현을 눈여겨보시기 바란다.

8.
{주}의 말씀들은 순수한 말씀들이니 흙 도가니에서 정제하여 일곱 번 순수하게 만든 은 같도다. (시 12:6)

하나님의 말씀의 순수함과 보존 약속에 대한 근거를 논할 때 KJV 신자들이 즐겨 인용하는 구절이다. 순수함이 금속 가공에다 비유되어 있는 것이 인상적인데, 여기서 은을 try하고 거듭 purify했다는 것을 한 단어로 표현하면 ‘제련’일까 ‘재련’일까?
우리말에서 ㅐ와 ㅔ의 발음 구분이 문란해지면서 외래어 표기와(데미지/대미지?) 일부 고유어의 스펠링까지(결제/결재? 메다/매다?) 오락가락 하는 것이 몇 가지 있는데, 제련/재련도 대표적인 예이다.

답부터 말하자면 시 12:6이 말하는 작업은 ‘제련’이다. 제련은 원석을 용광로에 녹여서 금속을 뽑아 내는 일을 말한다. 석유로 치면 원유를 분별 증류하여 휘발유, 경유, 등유 따위를 얻는 일이다.
그 반면 재련은 일단 주성분이 결정된 쇠붙이를 더 단단하게 만들기 위해 또 시뻘겋게 달군 채로 두들기고 찬물에 확 담그는 작업을 말한다.

딱히 칼이나 낫 같은 물건을 더 단단하게 만드는 작업이 아니라면, 일상적으로 제철소에서 하는 일, 특히 금속의 순도와 관계가 있는 일은 전부 ‘제련’이다. 재련의 용례는 거의 대부분이 제련의 잘못이다. 금속 냉병기를 아이템으로 다루는 국내 온라인 게임들은 이거 용어가 제대로 사용돼 있는지 모르겠다.

물론 시 12:6이 말하는 것처럼 제련도 반복 작업이 있을 수 있다. 또한 닥치고 용광로에서 다 녹여 버리는 제련과는 달리, 재련은 정말 말 그대로 두들기고 달구고 식히는 등 마치 사우나를 하는 것 같은 ‘연단/단련’의 느낌이 더 강하다. 그렇기 때문에 “단련을 받은 뒤에 내가 금같이 나오리라”(욥 23:10) 같은 구절에서는 재련을 연상하기가 더 쉽다.

그러나 여기서도 표현이 ‘강철같이 나오리라’가 아니라 ‘금같이 나오리라’이고, 불순물이 없는 pure gold/fine gold를 지향하는 것이므로 일단은 재련이 아니라 제련을 말하는 것이 맞다. 성경에는 용광로도 지옥뿐만이 아니라 고난이나 연단의 의미가 있다. (잠 17:3, 렘 11:4 등)

Posted by 사무엘

2015/10/21 08:24 2015/10/21 08:24
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1151

다차원 적분

※ 이 글의 내용은 예전에 썼던 <확률과 조합에서 발견한 자연대수 e>와 <원에 대한 적분 외>의 연장선상에 있다.

1차원 선에서 0부터 1까지의 선분의 길이는 두 말할 나위 없이 1이다.
2차원 공간에서 원점, (1,0), (0,1)을 지나는 이등변삼각형의 넓이는 1의 절반인 1/2이다.
이를 더 확장해서 3차원 공간에서 원점과 (1,0,0), (0,1,0), (0,0,1)을 꼭지점으로 갖는 사면체의 부피는 1/6이다.
이를 일반화해서 n차원 적분을 생각해 보면, 차원이 하나 올라갈 때마다 n차원 축을 한 칸씩만 점유하는 초입방체의 부피는 1/(n!)로 팩토리얼의 역수가 되고,  전체 초면체와의 비는 기하급수적으로 감소한다는 걸 알 수 있다. x^n의 부정적분은 (x^(n+1)) / (n+1) + C이다.

한편, 한 변의 길이가 2인 정사각형의 넓이는 4이고, 그 안에 들어가는 반지름이 1인 원의 넓이는 잘 알다시피 pi이다. 원과 사각형의 넓의 비는 pi/4, 즉 78.5% 정도 된다.
이를 공간으로 확장하면 한 변의 길이가 2인 정육면체의 부피는 8이고, 그 안에 들어가는 반지름이 1인 구의 부피는 4*pi/3이다. 구와 정육면체의 부피 비율은 pi/6 (약 52.3%)으로, 넓이일 때보다 비율이 더 작아진다. 이 비율 역시 차원이 증가할수록 더욱 작아진다는 것은 두 말할 나위가 없을 것이다.

그럼 혹시 4차원, 5차원, n차원 초구의 부피를 구할 수도 있지 않을까? 몰론 있다.
원의 방정식의 핵심이라 할 수 있는 f(x) = sqrt( r^2 - x^2 ) 라는 함수를 먼저 정의하자. 얘는 x가 0에서 r로 갈 때 임의의 구간에서 원의 높이를 나타내는, 즉 '둥긂'을 수학적으로 기술하는 함수이니까 말이다.

반지름이 r인 원의 넓이는 잘 알다시피 int( 2*f(x), x=-r..r) 로 나타내어지며 pi*r^2이라는 유명한 공식이 나온다.

그럼 반지름이 r인 구의 부피는 pi*r^2에서 r 대신 f(x)를 다시 집어넣어서 적분을 하면 된다.
int(pi*f(x)^2, x=-r..r) 가 (4/3)*pi*r^3이 된다.

4차원부터도 동일한 방식으로 적분을 계속하면 된다. 수많은 구들이 4차원에 있는 원 표면의 높이 변화량만치 연속적으로 쌓여 있는 것이므로.. 저 r 대신에 또 f(x)를 집어넣으면
int(4*pi*f(x)^3/3, x=-r..r) 은 드디어 파이까지도 제곱이 되어 4차원 초구의 부피는 (1/2)* pi^2 * r^4가 나온다. 한 변의 길이가 2인 4차원 초정육면체와의 부피 비율은 약 30.8%대로 곤두박질친다.

5차원 초구는? int( pi^2 * f(x)^4 / 2, x=-r..r)의 결과는 (8/15) * pi^2 * r^5 (약 16.4%)
6차원 초구는 pi^3 * r^6 / 6 (약 8%)가 된다. 사면체의 부피만큼이나 이것도 비율이 갈수록 곤두박질친다.
요렇게 비율이 한데 수렴하고 특히 짝수차일 때와 홀수차일 때 번갈아가며 무슨 특성이 발견되는 건 리만 제타 함수의 값하고도 비슷해 보인다. 게다가 리만 제타 함수도 n이 짝수일 때는 나름 pi^n의 유리수배가 되기도 하니, 반지름 길이가 1인 n차원 초구의 부피하고도 비록 수학적 의미는 딴판일지언정 좀 비슷해 보이는 구석이 있다.

수학 전공자 중에는 위의 적분들을 직접 손으로 푸는 용자도 있다. 그나마 짝수 승일 때는 루트가 없어지기 때문에 계산이 더 쉬워지는 편. 난 차마 손으로 풀어 볼 시간이나 자신은 없어서 그냥 수학 패키지를 돌려서 답을 구했다.
딱 보면 알겠지만 식에는 규칙성이 있다. 홀수승일 때와 짝수승일 때를 따로 생각해서 각각 차수가 2씩 증가할 때마다 pi에 붙는 제곱도 1씩 증가하고 계수는 2/n씩 증가한다고 보면 정확하다. 짝수승일 때는 1/2 (4차원), 1/24 (6차원)처럼 상수 계수가 1/n!으로 깔끔하게 증가하는 반면, 홀수승일 때는 계수가 좀 복잡하게 올라간다.

울트라 초천재가 아니고서야 4차원이 넘어가는 초구의 존재를 인간의 머리로 제대로 상상하고 실감하기는 거의 불가능할 것이다. '넘사벽'이라는 말이 괜히 있는 게 아니다~!
눈과 귀로 직감할 수 없는 차원이라는 게 신앙의 영역에 있다면, 이해가 안 되더라도 말 그대로 믿음으로 받아들일 수밖에 없을 것이다. 그러나 수학은 그런 게 아니라 고도의 논리와 이성의 영역에 있다.

아쉬운 대로 고차원 공간을 시뮬레이션 할 수 있는 방법은 프로그램을 작성하는 것이다. 다음 코드는 n차원 공간을 -1부터 1까지 점을 순서대로 마구 찍은 뒤, 원점으로부터 거리가 1 이내인 점의 개수를 세서 부피 비율을 구한다. 깔끔한 재귀호출 대신 사용자 정의 스택으로 구현했다.

double GetVolume(int dim, double delta)
{
    double buf[8], vl; int pos=0, i;
    double initv=-1.0-delta;
    __int64 x=0,y=0; buf[0]=initv;
    while(pos>=0) {
        if(pos==dim) {
            for(vl=0, i=0; i<dim; i++) {
                vl+=buf[i]*buf[i]; if(vl>1.0) break;
            }
            if(i==dim) ++x; ++y; --pos; //1 이내에 들면.
        }
        else {
            buf[pos+1]=initv;
            if( (buf[pos]+=delta) > 1.0) --pos; else pos++;
        }
    }
    return (double)x/y;
}

그래서 이렇게 찍으면 결과는 다음과 같이 나온다.

printf("%f\n", GetVolume(2, 0.01)); //0.785075
printf("%f\n", GetVolume(3, 0.01)); //0.523467
printf("%f\n", GetVolume(4, 0.03)); //0.302340
printf("%f\n", GetVolume(5, 0.05)); //0.164649

처음엔 -1부터 1까지 0.01씩 움직이니까 200등분을 했지만 4차원과 5차원으로 갈수록 66등분, 40등분으로 간격을 늘린 이유는.. 당연히 4승, 5승으로 급격히 증가하는 계산량을 감당할 수 없기 때문이다. 그래서 2차원과 3차원은 값이 상당히 정확히 나온 반면, 4차원과 5차원은 오차가 좀 큰 편이다.
그래도 계산이 워낙 단순무식하고 간단하므로 OpenMP 지시자를 집어넣거나 직접 손으로 코드 차원에서 스레드를 강제 분배하든가 해서 멀티코어+병렬화 최적화로 계산 속도를 몇 배 정도 끌어올릴 여지는 존재한다.

사실은 4차원 이상으로 갈 필요도 없이, 3차원 공간에 구가 여러 개 포개어져 있는 장면을 상상하는 것도 쉽지 않다.
학교 수학 시간에 집합 사이의 bool 관계를 구하는 문제에서 집합의 개수는 3개를 넘어간 적이 없었다. 왜냐하면 2차원 평면에서 집합들의 모든 소속 가짓수를 벤 다이어그램으로 그릴 수 있는 한계가 3개이고 2^3, 총 8가지 가짓수이기 때문이다.

그러나 3차원 공간에서 구를 4개 포개어서 입체 벤 다이어그램을 그리면 16가지 가능성을 모두 표현할 수 있다. 구 3개가 8가지 가짓수를 만들고, 거기에 위에다 4개의 구를 적당히 겹쳐 놓으면 8개에다가 넷째 구와 겹치는 놈 8가지가 또 추가되어서 16개가 되니까 말이다. 이 역시 코드로 작성해서 무식하게 확인하면 다음과 같다.

struct SPHERE { double x,y,z; };
const SPHERE fp[4]={
    {0,0,0},
    {0.4,0,0},
    {0.2,0.4,0},
    {0.2,0.2,1.5}
};
auto Square = [](double x) { return x*x; };
SPHERE d;
bool bitfl[16]={false,};
for(d.x=-1; d.x<=1.5; d.x+=0.02)
    for(d.y=-1; d.y<=1.5; d.y+=0.02)
        for(d.z=-1; d.z<=1.5; d.z+=0.02) {
            int bt=0;
            for(int i=0; i<4; i++)
                if( Square(fp[i].x-d.x)+Square(fp[i].y-d.y)+Square(fp[i].z-d.z) <=1) bt|=(1<<i);
            bitfl[bt] = true;
        }
for each(int n in bitfl)
    printf("%d ", n);

반지름은 모두 1이고, (0,0,0), (0.4,0,0), (0.2,0.4,0), (0.2,0.2,1.5)인 4개의 구를 설정한다. 그리고 -1부터 1.5까지 0.02 간격으로 뺑뺑이를 돌려서.. 각 점별로 자기가 속하는 구의 번호에 해당하는 2진수 비트들(8+4+2+1)의 합을 구한다. 그 뒤 그 합에 해당하는 플래그를 켠다.

나중에 플래그의 값을 출력해 보면 모든 비트들이 1로 바뀌었음을 알 수 있다. 즉, 어느 구에도 속하지 않은 놈, 모든 구에 속한 놈, 1, 3, 4번 구에만 속한 놈, 2, 3번 구에만 속한 놈 등등 16가지 가능성이 실제로 모두 존재한다는 뜻이다. 어찌 보면 당연한 얘기이다. 그 반면 구가 5개를 넘어가면 그 32, 64가지 가능성을 한꺼번에 3차원에서 표현할 수는 없게 된다.

사용자 삽입 이미지

반지름이 수십~수백 정도에 달하는 충분히 큰 구의 복셀의 표면을 보는 느낌은 어떨까 문득 궁금해진다.
수학 패키지 소프트웨어들은 3차원 음함수의 그래프를 아무래도 폴리곤+와이어프레임 형태로 근사해서 보여 줄 것이다. 하지만 곡선/곡면을 폴리곤이 아니라 아예 계단현상을 볼 수 있는 복셀로 근사해서 보면 또 느낌이 굉장히 이색적일 것 같다.

사용자 삽입 이미지

표면에는 역시나 원들 무늬가 그러져 있구나!
앞서 보다시피 5차원~6차원 이상으로 가면 단순무식하게 점을 때려박는 것도 계산이 너무 많아서 도저히 감당할 수 없다.
이럴 때 정확한 초구의 부피를 구할 수 있는 건 역시나 수학 해석적인 방법이라는 것을 알 수 있다.
미분 내지 역함수인 부정적분을 할 때 변수의 차수와 계수가 왜 저렇게 변하는지는 다항함수의 차이 극한값을 구해 보면 알 수 있다. 극한부터 시작해서 미분· 적분이라는 개념을 생각해 낸 건 정말 위대한 발견인 것 같다.

Posted by 사무엘

2015/10/15 08:39 2015/10/15 08:39
, , , ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1149

1. 최초의 인공위성

세계에서 최초로 발사된 인공위성은 잘 알다시피 1957년 10월에 구소련이 발사한 스푸트니크 1호이다. 얘는 배터리를 이용해서 기계가 약 3주 동안 동작했으며, 약 3개월 동안 지구 궤도를 돌다가 슬슬 힘이 다하면서 지구 궤도로 떨어지고 불타 없어졌다.

그 뒤 이에 자극 받은 미국은 몇 차례 실패를 한 끝에 1958년 3월에 뱅가드 1호라는 인공위성을 간신히 띄웠다. 얘는 시기적으로 2등 콩라인에 머물렀고 당시 소련의 스푸트니크 2호처럼 생명체를 태우는 실험도 못 했지만, 그래도 기술적으로 굉장한 진보를 이룬 게 있었다.

먼저, 당시로서는 굉장한 첨단 기술이던 태양 전지를 도입해서 현지에서도 전력을 공급함으로써 기계의 수명을 비약적으로 향상시켰다. 무려 3개월간을 지상과 교신하는 데 성공했다.
지금이야 인공위성이라 하면 커다란 직사각형 집광판이 달린 모습이 당연시되고 있지만 그게 처음부터 관행이었던 건 아니었던 것이다.

그리고 더 무서운 점은.. 얘는 궤도 진입과 관리를 어떻게 고퀄로 했는지, 발사로부터 60년에 가까운 시간이 흐른 지금까지도 지구를 돌고 있다고 한다.
물론 교신이 끊어지고 아무 동작도 못 하는 고철덩어리 우주쓰레기 신세이지만, 참 가늘고 길게 가고 있다. 앞으로 최하 200년 이상은 더 그렇게 돌 수 있다고 한다.

보이저 1호/2호가 아직도 지구와 교신이 되는 것만큼이나 참 신기한 일이다. 물론 외행성 탐사선이야 태양 전지가 전혀 쓸모가 없으니 원자력 전지를 사용한다.
미국이 처음에 인공위성을 띄우느라 삽질한 것을 보면 우리나라의 나로 호 생각도 난다. 단지 차이는 미국은 한국보다 그걸 50년쯤 전에 먼저 했다는 것뿐이다. 마이카 시대도 한국보다 50년 이상 전부터 시작됐고.

2. 화약의 위력

1605년 영국의 화약 음모 사건 때 지하실에 몰래 비축된 흑색화약의 양은 문헌에 따라 약간 차이가 있지만 드럼통 30여 개 분량이었다고 한다. 화약 전체의 무게는 아무리 많이 잡아도 1.x ~ 2톤을 넘지는 않았을 것이다.
또한 이들 흑색화약의 TNT 대비 위력계수는 0.55 정도로 알려져 있으므로 가이 포크스가 준비한 화약의 위력은 오늘날로 치면 TNT 1톤이 약간 안 되는 정도였으리라 추정된다.

물론 그건 음모가 성공했을 경우 의회 건물을 몽땅 박살 내고 잉글랜드 수뇌부들을 모두 날려버리고도 남는 충분한 위력이었다. 영국에서는 가이 포크스가 잡힌 날을 지금까지도 유대인들의 부림절처럼 기념하고 있고, 그때 화약의 위력이 어땠을지를 시뮬레이션하고 분석해서 역사 교양 다큐멘터리로 방영하곤 했다. 자기네 나라 역사에서 중요한 사건이었으니 말이다.

그 뒤.. 1995년 4월의 미국 오클라호마 폭탄 테러 때 가해자들이 트럭으로 운반해 터뜨린 폭발물은 TNT 약 2.3톤급의 위력이었다. 고층 건물이 1/3이 완전히 날아가 버렸으며 유리창은 모조리 박살 나서 수류탄 파편으로 변했고, 주변의 자동차들이 터지면서 2차 폭발을 일으켰다.

그리고 오늘날 미국이 운용하고 있는 가장 큰 재래식 폭탄 MOAB은 자기 무게는 약 11톤이고 실제 위력은 TNT 약 13톤급이다. TNT보다 더 위력이 강한 폭약을 사용하기 때문이다. 아, 참고로 1톤 정도의 무게는 교통사고 현장에서 전복된 승용차를 낑낑대며 들어올려 보면 느낄 수 있을 것이다.

그런데 재래식 폭탄이 아니라 핵무기로 가면 폭발력 수치의 뒤에 0이 몇 개 더 추가된다.
1945년 8월, 히로시마에 떨어졌던 '리틀 보이' 원자폭탄이 TNT 16,000톤급의 위력으로 분류된다. 참고로 나중에 나가사키에 떨어진 '팻 맨'은 위력이 더 업그레이드 되어 22,000톤 정도. 쉽게 말해 수십 킬로톤이다.
'리틀 보이'의 실제 무게는 약 4670kg 남짓으로, 5톤도 채 되지 않았다. 그런데 저런 폭발력이 나온다는 건 핵무기가 얼마나 무시무시하고 캐사기적인 비대칭 무기인지를 짐작케 한다.

1961년에 구소련이 개발하여 터뜨린 '차르 봄바'라는 초대형 수소 폭탄은 인류가 지금까지 개발한 가장 강력한 무기이다. 폭탄 자체의 무게는 27톤이고 위력은 킬로급을 넘어서 50~58 메가톤 정도로 집계되었다. '메가'는 10의 6승이다. 핵무기로 가면 화약 음모 사건이니 MOAB 폭탄 같은 건 그냥 잊어버려야 된다.

옛날에 메가쑈킹 작가가 남긴 주옥같은 명대사 중에 "꽃피는 봄이 오니 메가톤급 외로움이 텍사스 소떼처럼 밀려오는구나."가 있었는데.. 외로움이 메가톤급이나 되면 사람은 멘탈붕괴를 감당치 못해 머리를 쥐어뜯고 뒹굴다 자살하고 난리가 날 것이다..;; 그리고 그런 엄청난 외로움은 겨우 텍사스 소떼의 stampede 수준의 bandwidth와 throughput으로는 전송을 감당할 수 없을 것이다. 과장을 해도 실제 수치가 뭔지는 알고 과장해야 하리라 여겨진다.

3. 마력과 토크

자동차의 엔진 성능을 나타내는 대표적인 두 잣대는 일명 마력이라고 불리는 출력과, 그리고 토크이다.
물리학적으로 따져 보면 출력은 일률(단위 시간당 일을 하는 양) 단위인지라 차의 속도와 관계가 있으며, 토크는 rpm별로 이때 엔진이 내는 회전력을 나타내는 힘의 단위이다. 이것도 엄밀히 말하면 회전축의 길이가 명시돼 있으니 일의 단위이긴 하지만 그래도 거리는 고정돼 있고 kgf의 값만 측정하니 힘의 단위인 것이나 마찬가지이다.

엔진의 토크는 최대 토크가 나오는 rpm을 지난 뒤부터는 감소한다. 그렇기 때문에 최대 출력이 나오는 rpm은 최대 토크가 나오는 rpm보다 더 큰 데서 나온 뒤, 그 이후부터 감소한다. 최대 출력 함수는 최대 토크 함수를 rpm 변수에 대해 적분한 것과 같기 때문이다.
이건 하루 중 태양의 고도가 가장 높은 때(정오 무렵)와 하루 중 가장 더울 때(오후 2~3시쯤)가 살짝 차이가 나는 이유와도 비슷한 맥락인 것 같다. 태양의 고도는 토크이고 그래서 열이 축적돼서 더운 것은 출력에 대응하니까.

그리고 자동차 엔진의 출력은 사람의 심폐 기능에다가도 비유할 수 있다. 이건 체력, 특히 지구력과 결정적인 관계가 있다.
마라톤 선수처럼 심장과 폐가 워낙 발달한 사람은 평상시에 분당 맥박이 겨우 4~50회만으로도 감당이 된다고 한다. 저회전에서 토크가 굉장히 높은 디젤 엔진과 구조적으로 다를 바 없다.

4. 디스크와 드럼

자동차와 컴퓨터. 서로 전혀 관계가 없어 보이는 두 기계에서 그래도 '디스크'와 '드럼'이라는 용어를 공통으로 접할 수 있다는 게 무척 신기하다. 잘 알다시피 이게 자동차에서는 브레이크를 구현하는 방식이고, 컴퓨터에서는 메모리를 구현하는 방식이다. 둘 모두 '드럼'은 거의 퇴출되고 '디스크'가 주류가 돼 있는 것도 비슷하다.

자기 드럼은 뭔가 하드디스크처럼 생기긴 했지만 크기가 더 크고 속도와 신뢰성이 우수했다(특히 자기 '테이프'보다야..). 반쯤은 RAM처럼 사용할 수도 있었다. 하지만 크기에 비해 기억 용량이 너무 적고 비싸서 196, 70년대 이후로는 증기 기관차가 퇴출되듯이 퇴출됐다. 오늘날의 하드디스크는 플로피 디스크와 마찬가지로 드럼이 아니라 '자기 디스크'의 일종이다.

자동차에서도 옛날에는 앞바퀴는 디스크 브레이크, 뒷바퀴는 드럼 브레이크 이랬던 것 같은데 요즘은 냉각이 더 유리한 디스크 브레이크가 모든 바퀴에서 대세이다. 드럼 브레이크는 버스· 트럭 같은 대형차(외부 오염에 더 강해서) 아니면 완전 반대로 경차에서나(생산 원가가 더 저렴해서) 볼 수 있다.
타이어의 휠 안쪽에 뭔가 반들반들하게 광택이 나는 커다란 금속 원판이 달려 있는 건 디스크 브레이크이고, 반대로 좀 꽹과리처럼 생긴 원형 금속 캡슐이 달려 있는 게 드럼 브레이크이다.

5. 화장실의 남녀 구분

화장실의 남녀 구분 여부는 마치 도로에서 중앙선의 존재 여부와 비슷해 보인다.
통행량이 많은 큰길엔 반드시 중앙선이 존재하지만 그냥 좁은 골목 샛길에는 통행 구분이 딱히 존재하지 않으며 심지어 일방통행도 있다. 그것처럼 가정집 안의 화장실이나 비행기처럼 비좁은 교통수단의 화장실은 남녀 구분이 없다. 그러나 대규모 공공장소 안의 화장실은 남녀 구분이 있다.

남녀 구분이 있는 화장실의 경우, 사람들은 한 성별의 화장실을 발견하면 다른 성별의 화장실도 분명 근처에 있을 것으로 기대한다. 그런데 어떤 건물은 남녀 화장실이 건물의 한쪽 끝과 다른 한쪽 끝으로 멀리 떨어진 경우가 있는데, 이건 본인이 보기에 심리적으로 좋은 디자인이 아닌 것 같다. 화장실을 찾긴 했는데 이성의 화장실이고 내가 갈 수 있는 화장실이 발견될 기미가 안 보이면... 아예 화장실이 전혀 안 보이는 것보다 실망과 박탈감이 더 크기 때문이다. 지하철역으로 치면 반대편 승강장 횡단을 할 수 없는 역과 비슷하며, 운전에다 비유하면 길을 발견하긴 했는데 내가 원하는 방향으로는 갈 수 없는 상황과 비슷하다. (일방통행 내지 좌회전 불가 같은)

여느 시끄러운 음악이나 기계음과는 달리, 전화 통화 소리가 주변 사람에게 더욱 불쾌감을 유발하는 소음이라고 알려져 있다. 왜냐하면 전화 통화는 사람이 알아들을 수 있는 언어인데 대화가 전부 들리는 게 아니라 반쪽짜리만 들려서 문맥을 제대로 파악할 수 없기 때문이라고 한다. '내가 원하지 않는 반쪽짜리'를 사람들이 더욱 싫어하는 예는 이런 식으로 여러 곳에서 찾을 수 있는 것 같다. 똑같이 목이 말라도 사막에서 목이 마른 것과 망망대해 바다 한가운데서 목이 마른 것의 차이랄까..?

그리고 화장실 얘기가 나왔으니 다른 얘기를 또 하나 덧붙이자면...
공공장소의 화장실에서 휴지는 그냥 (1) 변기에다 버릴지 아니면 반드시 따로 (2) 휴지통에다 버릴지에 대한 지침이 예상 외로 케바케이고 뒤죽박죽이다. 왜 이렇게 차이가 나는 건지는 모르겠다. 마치 높임법에서 압존법이 (1) 써라(과장이 사장보다 더 높냐?) 또는 (2) 쓰지 마라(과장이 니 친구냐?) 사이에서 오락가락 하는 걸 보는 듯하다.

6. 기타 메모

"나비: 나방"은 음악으로 치면 마치 음악에서 "장조: 단조"의 차이처럼 느껴진다.

인텔 80186 CPU와 코레일 8100호대 전기 기관차: 뭔가 (1) 숫자 형태가 비슷하고, (2) 후속 버전에 밀려 존재감 없이 싹 묻힌 물건이라는 공통점이 있다.

엄지손톱 모양의 그 색 프리즘(CIE-1931 색 공간)하고, 모음 삼각도를 나타낸 포먼트 그래프가 뭔가 비슷한 점이 있어 보인다. 흰색에 속하는 (1/3, 1/3) 지점은 모음 삼각도로 치면 제일 만만한 중간 모음인 schwa 정도에 대응하려나?

컴퓨터에 화면이 너무 작아서 여러 브라우저/문서 창을 alt+tab 눌러 가며 전환해야 하는 건 작업 생산성 면에서 좋지 않다.
이것은 컴퓨터 내부로 치면 메모리가 너무 부족해서 자꾸 디스크 페이징이 일어나는 것과 같은 맥락이다. 이게 늘어나면 컴퓨터의 성능은 급격히 곤두박질친다.
자동차는 최대한 부드럽게 가감속을 하고 최대한 관성에 의지하고 엔진 배기량에 맞는 경제 속도로 달릴수록 연비와 가성비가 킹왕짱이 되는 반면, 길이 막혀서 가고 서기를 반복할수록 연비는 거의 저것만치 급격히 떨어지게 된다. 공회전은 말할 것도 없고, 정지 상태에 있던 차가 처음 움직일 때가 연비가 제일 쥐약이기 때문이다.

우리나라 육군에는 '육군 과학화 전투 훈련단'(KCTC)라는 이색적인 부대가 있다. 여기 군인들은 전투력 고취를 위해 원정 훈련을 오는 다른 육군 부대들을 상대로 위장까지 하고서 가상의 북한군 역할을 한다. 특수부대 급으로 훈련을 굉장히 혹독하게 받고 홈그라운드인 훈련장 지리에도 능통하기 때문에 얘네들을 격퇴하는 부대가 별로 없을 정도라고 한다. 물론 싸움은 실탄이 아니라 정교하게 피격 판정을 해 주는 레이저 총 + 공포탄으로 한다. 예비군 페인트탄 같은 유치한 분위기는 아님.
이름하여 '전문대항군'인데, 이걸 읽으니까 쟤들은 버추어 파이터로 치면 듀랄 같은 역할을 한다는 생각이 들었다.

음식이나 연료는 인체나 기계 내부에서 동일 질량 다른 물질로 화학적으로 변하는 것일 뿐이고 그 변하는 과정에서 힘이 발생한다. 물질 자체가 소멸하고 질량이 그대로 에너지로 바뀌는 것 아님. 쉽게 말해 넣은 연료의 무게와 동일한 무게의 배기가스가 나온다는 뜻이다.
또한, 소리는 진동이지 이동이 아니다. 이동이면 그건 바람이지 소리가 아니다. 물론 이동 과정에서도 진동이 있을 수 있으니 바람 소리도 들리는 것이다.

일사병(땡볕이 중심)과 열사병(고온 다습이 중심), 삭제(유출을 막음)와 암호화(유출되더라도 뭔 말인지 모르게), 불법체류(합법 입국 후 배째라)와 밀입국(애초에 입국 자체를..) 등 비슷하지만 사실은 완전히 다른 개념이 참 많은 것 같다.
힘(찰나)과 일(힘의 축적), 열과 온도(공기 80도와 물 80도의 차이는?), 질량(??)과 무게(질량으로 인해 생긴 힘) 등.
과학을 제대로 공부하면 직관만으로는 제대로 구분하기 힘든 개념을 명확하게 구분하여 원리를 알 수 있어서 좋다.

Posted by 사무엘

2015/10/12 08:24 2015/10/12 08:24
, ,
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1148

옛날 물건들 추억

1. 특수한 그리기 도구(?)

오래 전에 아이패드를 보고는 문득 이런 물건 생각이 났다.
저렇게 태블릿과 비슷하게 생긴 판때기 모양의 장난감이었는데, 전기를 쓰지는 않고 안에 가루 같은 게 꽉 차 있었다. 그리고 그 표면에다 펜으로 뭘 그리면 그림이 그려졌다. 흔들거나 다른 특수한 방법으로 내용을 다 지우고 화면을 초기화할 수도 있었다.
이런 식으로 내부의 가루 상태를 이용해서 단색 그림을 그리는 패드가 있었는데 이 이상 더 자세한 정보가 남아 있질 않고 인터넷으로 더 검색도 할 수 없다. 이런 거 기억하시는 분의 제보를 기다린다.

2. 카세트 테이프의 주행

지금이야 음악 감상은 컴퓨터의 디지털 기술 기반으로 완전히 바뀌었지만 옛날에는 카세트 테이프라는 게 시대를 풍미하는 음성 매체였다.
카세트 테이프에는 주행용 구멍이랄까 회전축이랄까 그게 두 개가 있다. 재생을 하면 두 구멍 중 오른쪽에 있는 것 하나만 돌아간다. 되감기를 하면 왼쪽 것이 돌아가고. 즉, 한쪽의 동력이 다른 한쪽으로도 전해지는 형태이다.

사용자 삽입 이미지

그런데 난 테이프를 재생하는 중에 두 구멍의 회전 속도가 왜 서로 차이가 나는지가 어릴 때부터 굉장히 궁금했다.
갓 재생을 시작해서 테이프들이 아직 왼쪽에 몰려 있을 때는 왼쪽 구멍의 회전이 느리고 오른쪽 구멍의 회전이 빨랐다.
그러나 한 편을 다 들어서 테이프가 오른쪽에 몰려서 오른쪽이 거대해지고 나면, 반대로 왼쪽은 빨리 돌아가고 오른쪽은 느려졌다.

지금 그 모양을 다시 생각해 보니 카세트 테이프는 직경이 다른 두 톱니바퀴의 회전으로 인한 변속이라는 개념을 설명해 주는 좋은 예였다. (테이프가 한쪽에서 다른 쪽으로 감기면서 양 구멍의 직경이 서로 달라지므로..)
아니, 더 나아가 테이프는 톱니라기보다는 벨트에 더 가까운 형태이니, CVT 무단변속기를 떠올릴 수 있을지도 모르겠다.
지금 카세트 테이프 재생기가 있으면 주행 과정에서 양 구멍/바퀴의 변속비가 얼마까지 달라지는지를 더 눈여겨보고 싶다.

3. 노래방 기계 글꼴

요즘 노래방을 가 보면 옛날에 비해 가사의 글꼴이 더 새끈한 걸로 바뀐 것만 봐도 시대가 바뀌었다는 걸 개인적으로 딱 바로 알 수 있었다.
오랫동안 노래방 가사 자막용으로 쓰인 서체는 아래 그림에서 보듯이 아래아한글 40*40 비트맵 명조를 떠올리게 하는 구닥다리 비트맵 명조체였기 때문이다. 1990년대 초반에 아래아한글 1.x로 조판된 듯한 옛 영진 출판사 책들을 보는 느낌이다.

사용자 삽입 이미지

그러다가 이 명조체를 대체한 것은 큐닉스 서체인 가을체와 으뜸체 정도. 노래방 기계에서는 요 둘이 굉장히 많이 쓰인 것 같다.

사용자 삽입 이미지사용자 삽입 이미지

나중에는 노래방에서도 서울남산이나 나눔(바른)고딕을 볼 수 있지 않을까 싶다.

4. 옛날 키보드

한동안 완전히 잊고 있었는데.. 그러게, 한 30년 전쯤의 구닥다리 컴퓨터들은 키보드의 구성이 지금과는 살짝 달랐다. 미국 원판은 84키이고 한국에서는 한영/한자가 추가돼서 86키였다.

사용자 삽입 이미지

난 초딩 시절에 컴퓨터 학원에서 이 구식 키보드를 본 기억이 있다. 지금 키보드와 다른 점은 다음과 같다.

  • 일단 F1~F10 기능키는 왼쪽에 2열 종대로 늘어서 있고 F11과 F12는 존재하지 않는다.
  • 문자 키와 키패드 사이에 여분의 화살표 내지 키패드 기능 키들(pg dn/up, home, end, insert, del)이 따로 존재하지 않는다. 따라서 Num lock이 켜져 있는 동안은 키패드 기능 키들을 사용할 수 없다.
  • Ctrl은 지금 Caps lock이 있는 곳에 있다. 그 대신 Caps lock은 우측 하단에 있다. (그래 그랬다, 완전 추억 쩐다!)
  • ESC가 지금의 Num lock 자리에 있다.
  • 키패드에는 +가 지금의 엔터 자리에 있다. 그리고 / 는 키패드에 존재하지 않는다.

그러다가 지금 키보드의 전신인 101키 키보드가 나오고, 국내에서는 역시 한영/한자가 추가돼서 103키가 되었다. Windows 95부터는 Win키가 그것도 좌우에 하나씩 2개나 추가되고, 또 컨텍스트 메뉴키가 더해져서 10키가 되었고, 이것이 현재까지 전해 내려오고 있다.
그나저나 키보드의 연결 단자 자체도 DIN 내지 AT 단자부터 시작했다가 PS/2 단자를 거쳐 지금은 USB가 대세가 됐으니 이것도 격세지감이다.

저런 '정식 키보드'는 규격이 전부 통일되어 있는 반면, 기계마다 살짝 차이가 있어서 혼동을 주는 건 노트북 컴퓨터 키보드에서 키패드의 기능키들이 배당된 방식들이다. 특히 pg up/dn이나 home/end 같은 것.
그리고 노트북은 부족한 키의 기능을 보충하려다 보니 자체적인 fn 키도 있는데.. 일반 노트북의 경우 좌측 하단에 Ctrl fn win alt의 순으로 키가 있었던 반면, 맥북은 fn ctrl alt win으로 순서가 미묘하게 바뀌어 있어서 이것도 적응이 몹시 힘들었다.

Posted by 사무엘

2015/10/09 08:34 2015/10/09 08:34
, , , ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1147

« Previous : 1 : ... 125 : 126 : 127 : 128 : 129 : 130 : 131 : 132 : 133 : ... 230 : Next »

블로그 이미지

그런즉 이제 애호박, 단호박, 늙은호박 이 셋은 항상 있으나, 그 중에 제일은 늙은호박이니라.

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2026/08   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

Site Stats

Total hits:
4001414
Today:
1590
Yesterday:
6203