다음 버전 개발 근황

2016년 12월 현재, <날개셋> 한글 입력기 8.8이 한창 개발 중이다. 내년 2~3월쯤에 나올 예정이다.

1. 제어판에 가상 키코드 변환 기능

지금으로부터 10년도 더 된 먼 옛날, <날개셋> 한글 입력기가 3.41 버전에서 지금과 같은 트리 구조의 제어판이 도입된 이래로, '입력기 계층' 탭은 오랫동안 별다른 UI나 기능이 없는 잉여 공간이었다.
어느 글자판(입력 항목)을 사용하건 공통으로 적용되는 옵션이나 기능들은 '편집기 계층'에 있었지, 딱히 입력 항목들만을 한데 싸잡아서 무슨 공통된 명령을 내릴 만한 건 없었기 때문이다.

그러다가 5.0이 나오면서 이 탭이 잠시 쓰인 적이 있었다.
5.0부터는 입력 설정 데이터의 파일 포맷이 바뀌었다. 그래서 이제 지원되지 않는 옛(3~4 버전용) 설정 데이터가 감지되면 제어판은 그 데이터를 읽지 않고 일단 프로그램 설치 직후의 기본 입력 설정을 내놓은 뒤, 처음에 이 '입력기 계층' 탭을 가리키게 했다. 그리고는 이 탭의 빈 공간에다가 "사용자의 예전 입력 설정은 구버전 방식이기 때문에 변환을 해야 불러올 수 있습니다" 이런 메시지를 임시로 출력시켰다.

사용자 삽입 이미지

5.0의 과도기가 지난 이후로 지금까지 파일 포맷이 또 변경된 적은 없다. 그렇기 때문에 이제는 저런 메시지를 볼 일이 없을 것이다. 그러나 먼 미래에 포맷이 바뀐다면 '입력기 계층' 탭은 또 그런 용도로 쓰일 여지가 남아 있다.

입력기 계층 탭이 이런 legacy 포맷 안내문 말고 일상적인 설정 기능을 갖게 된 것은 7.7 버전부터이다. 글쇠배열(key), 입력 설정(ist), 종합 설정(set)라는 세 계층별로 설명문을 넣을 수 있는데, 종합 설정 단위의 설명문을 넣는 기능이 입력기 계층에 들어갔기 때문이다. 여기에다가는 등록되어 있는 각 입력 항목들의 용도와 의미, 글자판 전환 글쇠들의 로직 같은 총체적인 설명을 집어넣으면 된다.

물론 그래도 하이퍼링크 형태로 '설명문 지정' 한 줄 달랑 들어간 게 전부였으니.. 입력기 계층 탭은 여전히 아주 초라해 보이는 건 사실이었다.

사용자 삽입 이미지

그러다가 이번 8.8 버전부터 이 탭에 그럴싸한 명령이 하나 더 추가되었다. 입력 설정들 중에 가상 키코드가 지정된 것들의 배열을 일괄 변환하는 기능이다. 이 기능이 도입된 배경을 설명하자면 다음과 같다.

사용자 삽입 이미지

<날개셋> 한글 입력기는 지난 8.6 버전을 계기로 운영체제의 어떤 키보드 드라이버와도 잘 연계해서 동작하는 기능이 강화되었다.
기본 입력 스키마가 제공하는 글쇠배열은 그 밑에 쿼티 드라이버를 쓰건 드보락을 쓰건 콜맥을 쓰건 47개 글쇠들의 자기 위치가 불변으로 잘 고정되어 있다. 그러나 그 47키 글쇠배열 말고 다른 방식으로 글쇠를 인식하는 기능들은 가상 키코드 기반이기 때문에 키보드 드라이버의 영향을 받는다.

기본 입력 스키마가 제공하는 '추가 글쇠 인식 기능', 고급 입력 스키마가 제공하는 '고급 글쇠 인식', 그리고 편집기 계층에 있는 단축글쇠들도 다 그러하다. 그렇기 때문에 S라는 글쇠를 인식하라고 하면 쿼티에서는 왼손의 A 오른쪽에 있는 글쇠이지만, 드보락에서는 오른손 새끼손가락으로 누르는 글쇠가 된다.

이 문제를 해결하기 위해서는 굳이 글쇠의 인식 방식을 바꾸는 모험을 하기보다는 모든 입력 항목들의 설정에 대해서 저렇게 가상 키코드에 의존하는 부분을 다른 글쇠배열의 동일한 위치 기준으로 값을 변환해 주는 기능을 넣는 게 좋겠다는 결론을 내렸다. 그리고 이 기능이 들어가기 딱 좋은 위치가 바로 '입력기 계층' 탭인 것이다.

내가 지금 드보락 드라이버를 사용하고 있는데 입력 설정은 쿼티 기준이다 싶으면, '변환' 버튼을 누른 뒤 글쇠배열을 '한국어/Korean'이나 'US Qwerty' 같은 걸 선택하면 된다. 즉, from과 to 중에 from만 지정하면 된다. to는 지금 <날개셋> 제어판을 구동한 프로그램이 사용하고 있는 글쇠배열로 자동으로 결정된다.
그리고 to뿐만 아니라 from에 해당하는 글쇠배열도 운영체제에 설치돼 있어야 한다. 이 프로그램은 운영체제가 제공하는 기능을 사용해서 변환하기 때문이다.

사용자 삽입 이미지

이거 한 방이면 입력 항목들뿐만 아니라 편집기 계층의 단축글쇠까지도 변환된다. from이 쿼티, to가 드보락이라면 A,S,D,F 라는 글쇠는 드보락에서 동일 위치에 해당하는 A,O,E,U로 바뀐다. 반대로 from이 드보락, to가 쿼티라면 H,T,N이 J,K,L로 바뀐다. 이런 식이다.

설명문도 마찬가지이지만, '입력기 계층' 탭에서 건드리는 범위는 편집기 계층을 일부 포함할 수도 있다. 그러나 입력기 계층까지 명백하게 포함하는 개념이기 때문에 이것은 편집기 계층 대신 입력기 계층으로 분류된다.

옛날에는 텅 비어 있었지만 지금은 그럭저럭 공간이 채워진 탭들의 선례를 살펴보면 다음과 같다.

(1) 사실은 입력기 계층뿐만 아니라 '편집기 계층'과 '시스템 계층' 탭도 다른 탭들에 비해 널널하긴 마찬가지이다.
편집기 계층은 한자 후보 변환 관련 기능만 빼면, cursor의 이동 방식이라든가 '삽입/겹침' 같은 건 따지고 보면 1.0부터 있었던 기능이 전부이다. 이 방면으로 딱히 기능이 더 추가될 여지가 없었던 듯하다. '단축글쇠'와 '최종 변환'이라는 세부 카테고리 역시 3.0 이래로 지금까지 더 추가된 게 없다.
다음으로 시스템 계층도 글꼴 본뜨기 같은 액세서리밖에 없다가 최근에는 키보드 드라이버 보정 기능이 여기에 추가돼 들어갔다.

(2) 기본 입력 스키마의 '글쇠 인식 옵션' 탭.
오랫동안 유의미한 옵션이라고는 사실상 '빈 입력 스키마와 호환되게' 옵션밖에 없던 안습의 극치였다. 몇 가지 옵션들을 구상해서 넣은 건 있었으나 실제로 구현되지 않아서 사용불가 상태였다. 그러니 탭을 없애고 글쇠배열 탭에다 합병을 해 버려도 할 말이 없었으나... 그 옵션 자체는 엄연히 글쇠배열이 아닌 입력 스키마의 영역이었고, 미래의 기능 추가에 대비해서 탭을 유지하고 있었다.
실제로 후대 버전에서는 변수 인식과 관련된 여러 옵션들이 추가되었으며, 결정적으로 임의의 단축글쇠 리스트를 꾸미는 기능도 추가되면서 이 페이지 역시 꽉 차게 되었다. 옛날에 구상했던 기능들은 대부분 고급 스키마의 형태로 오늘날 실현되었다.

(3) 외부 모듈의 '고급 시스템 옵션' 탭.
4.82 버전에서 'TSF 지원 확장' 옵션 딱 하나가 추가된 걸로 아주 초라하게 시작했으나, 그 뒤로 각종 한영 상태 동기화 옵션과 기본 IME 지정 명령처럼 <날개셋> 외부 모듈이 IME로서 운영체제/타 프로그램과 소통하는 방식을 지정하는 고유한 옵션들이 많이 추가됐다.
최근에는 자신과 연결할 키보드 드라이버를 지정하는 옵션까지 추가되어 페이지가 빈틈이 없이 꽉 찼다. 나중에 옵션을 한두 개 더 추가하려면 'TSF 지원 확장'에 딸려 있는 안내문을 없애거나 분량을 줄여야 할 것이다.

가상 키코드 변환 기능 덕분에 인제 '입력기 계층' 탭은 별도의 독립된 도움말 페이지도 할당받았고 버튼도 두 개나 생겼다.
미래에는 이 탭이 지금보다 더 풍성해지는 날이 오기를 기대해 본다.

2. 글쇠배열의 이름과 별도로 입력 스키마에도 고유한 이름

얘기가 갑자기 딴길로 많이 샜구나. 다시 본론으로 들어오도록 하겠다.
3.0대 버전 이래로 지금까지 굉장히 어정쩡한 관계이긴 했는데.. 어떤 입력 항목에 대해서 '글쇠배열의 이름'과는 별개로 입력 항목 차원에서 고유한 이름을 사용자의 필요에 따라 지정할 수 있게 했다. 입력 항목의 이름이란, <날개셋> 한글 입력기의 여러 구현체들에서(편집기, 외부 모듈 등) '한글 세벌식', '영문 쿼티'처럼 "글자판을 선택하세요" 목록 내지 메뉴에 나타나는 이름들을 가리킨다.

지금까지 입력 항목의 이름이란, 곧 입력 스키마가 갖고 있는 글쇠배열의 이름과 동일했다. 어떤 입력 방식에서 글쇠배열이 차지하는 비중이 워낙 큰 게 사실이니 이런 접근 방식이 지금까지 큰 문제는 없었다.

그러나 글쇠배열은 여느 한글 또는 영문 배열과 다를 바 없고 오토마타나 사용자 정의 조합만 달리해서 여러 입력 방식을 만들어 낸다면 지금 같은 체계는 좀 문제가 있다. 글쇠배열을 바꾼 건 없는데 글쇠배열 탭에 가서 이 입력 방식 특성을 표현하는 이름을 입력해야 하기 때문이다.

이제 8.8버전부터는 제어판을 열어서 입력 항목을 가리키면, 지금까지 읽기 전용이던 이름 입력란에다 이름을 입력할 수 있다.
이게 공란이면 예전처럼 글쇠배열의 이름이 입력 항목의 대표 이름으로 유지된다(회색 글자). 그러나 저기에 문자열이 입력되면 그 문자열이 대표 이름이 된다.

사용자 삽입 이미지

그러므로 쿼티 영문 글자판을 기반으로 한글 로마자 입력 방식을 구현했거나 사용자 조합 기능을 추가해서 다른 문자 입력 체계를 구현했다면, 그걸 나타내는 새로운 이름을 입력 항목 차원에서 써 주면 된다. 이렇게 하면 글쇠배열의 이름을 굳이 건드리지 않고도 자기가 만든 입력 방식이 대외적으로 식별되는 명칭을 새로 지정할 수 있다.

입력 항목의 대표 이름은 설명문과 비슷한 형태로 저장된다. '빈 입력 스키마'는 원래부터 아무 옵션이 없고 아무 동작도 안 하는 스키마이기 때문에.. 설명문과 대표 이름을 모두 지정할 수 없으며, 대표 이름도 그대로 '빈 입력 스키마'로 언제나 고정된다.

저걸 구현하느라 난생 처음으로 에디트 컨트롤에다 EM_SETCUEBANNER 기능을 써 봤다. 이게 지원되지 않는 운영체제에서는 그냥 저 회색 디폴트 텍스트가 나타나지만 않고 다른 영향은 없다. 원래 cue banner는 '여기에 이름을 입력하세요' 같은 고정된 UI 가이드/힌트를 출력하라고 있는 텍스트이기 때문에 저렇게 런타임 가변적인 텍스트를 찍는 건 약간 이질적인 활용이긴 하다.

저 기능이 최초로 추가된 건 Windows XP의 공용 컨트롤 6.0부터다. 수식의 변수 도움말을 출력하기 위해 진작부터 사용해 온 풍선 도움말(balloon text)과 도입 시기가 동일하다. 그런데 참 희한하게도 이 기능은 한중일 동아시아 언어권 에디션 또는 MUI 팩이 설치된 XP에서는 버그로 인해 동작하지 않았다고 한다. 우리 같은 사람은 Vista와 그 이후에서나 cue banner를 구경할 수 있게 됐다.
반대로, Windows XP에 도스용 QBasic이 영미권에서는 삭제됐지만 동아시아 에디션에서는 있었다고 하니 이것도 신기한 노릇이다.

3. 문자표

문자표 대화상자에도 약간의 변화가 생겼다.
맨 위에 '종류'라는 콤보박스가 추가되어, 단순히 글꼴이 존재하는 모든 문자들을 코드값 순으로 나열하기만 하는 게 아니라 다른 임의의 문자표를 제공할 여지를 마련했다. 사실, 이 용도로는 MS Word나 아래아한글의 문자표 대화상자처럼 탭 컨트롤을 쓰는 것도 좋으나 그것보다 더 구현하기 쉽고 만만한(..) 콤보박스를 사용했다.

이것이 예전 무려 3.0 시절부터 있던 'KS X 1001 문자표' 체크박스를 대체했다.
사실, 완전히 다른 문자표를 출력하는 기능이 무슨 옵션인 것처럼 체크 형태로 있던 건 굉장히 이상한 UI 디자인이긴 했다.
마치 성별을 입력받는 UI가 남/녀 라디오나 콤보박스로 있는 게 아니라, "[X] 여자" 체크박스로 달랑 주어지는 것처럼 말이다. 내부적으로 표현되는 정보량이 1비트라고 해서 체크박스가 모든 상황에서 적합한 건 아니다.

체크박스가 콤보박스로 바뀌었는데 문자표가 여전히 두 종류밖에 없으면 좀 심심하니 "모든 한글 자모"라는 문자표를 하나 더 넣었다. 이것은 유니코드에 존재하는 모든 한글 낱자들을 초중종별 사전 순으로 표시해 준다. 여러 영역에 뿔뿔이 흩어져 있는 한글 자모들을 한데 열람하고 옛한글을 문자표로 입력할 때 큰 도움이 될 것이다.

사용자 삽입 이미지

이제 사용자가 별도의 리스트로 작성한 custom 문자표를 뒤에 줄줄이 추가하는 기능도 생각할 수 있으나, 일단 미래의 과업으로 미루기로 한다.

4. 방점 지원

<날개셋> 편집기가 드디어 한글의 뒤에 붙은 방점(U+302E, U+302F)을 한글의 왼쪽에다 제대로 표시해 준다. 또한 cursor의 이동· 삭제 단위를 판별할 때 방점은 앞의 한글과 같이 한 묶음으로 처리된다. 안 그래도 <날개셋> 편집기는 세로쓰기도 지원하니, 방점이 이렇게 세로로 찍혀 나오면 문서가 더욱 볼 만할 것이다.

사용자 삽입 이미지

다만, 방점은 자신만의 고유한 폭을 차지하는 게 아니라 한글 16*16 공간 안에 같이 삽입된다. 그렇기 때문에 한글 글꼴 자체가 큼직하다면 방점이 제대로 보이지 않을 수 있다. 방점과 잘 어울리는 약간 홀쭉한 옛한글 글꼴이 좀 있어야 할 것 같다. 그나마 '한메가는본문'이 이런 범주에 드는 글꼴 같지만 얘는 옛한글을 지원하지는 않는다.

한글 한 글자를 구성하는 덩어리에 초중종성에 이어 방점까지 옵션으로 붙을 수 있다니 이건 무슨 픽셀에서 RGB에 이어 알파채널까지 붙는 것과 비슷해 보인다. 그렇다고 이거 지원을 위해 <날개셋> 한글 입력기의 내부에서 한글 하나를 나타내는데 제4의 성분을 통째로 다 집어넣은 건 아니다. 그런 무모한 짓을 한 건 아니고 그냥 한글 입력 오토마타의 내부 구조만 살짝 확장했다.

내가 처음에 한글을 입력할 때야 그 조합 내부에다가 방점을 같이 넣을 수 있지는 않다. 방점은 입력되는 순간 한글 조합을 종료시켜 버린다. 단지, 이미 방점이 곁들어진 한글에다 달라붙을 때 그 방점을 임시로 유지한 채로 자모를 고치거나 추가로 입력할 수만 있게 했다.
그리고 이 상태에서 bksp를 누르면 언제나 방점부터 먼저 지워지고 그 뒤에 한글 자모가 지워진다. cursor가 이동하는 단위하고 bksp로 글자를 지우는 단위, 그리고 앞에서 뒷글자를 지울 때와 뒤에서 앞글자를 지울 때 동작에 차이가 발생할 수도 있어서 꽤 어려울 수도 있는 작업이었는데 결국 문제를 이런 식으로 깔끔하게 해결했다.

5. 텍스트 필터 추가

"한글 형태 정규화" 필터에는 NFC와 NFD 정규화 둘만 있었는데, 거기에다가 "NFD부터 적용 후 NFC"라는 제3의 동작 옵션을 추가했다.
이렇게 하면 '가ㅿ'처럼 종성이 없는 현대 한글 자모 + 채움 문자 없는 종성 한글 낱자가 한데 이어져서 정규화가 잘못되어 있던 한글이 현대 한글 또는 옛한글로 한데 합쳐진다.

예전 방식으로 이런 문자열을 NFC 정규화 하면 '가'는 그대로 있고 ㅿ는 채움 문자가 추가되어 두 글자가 서로 완전히 분리되곤 했다. 새로 추가된 옵션은 그보다 더 융통성 있게 동작할 것이다.

사용자 삽입 이미지

사실, 텍스트 필터들은 옛날에 6.x 버전 때 잔뜩 추가되고 나서 그 뒤로 변화가 거의 없었다. 그런데 이번엔 "문자 코드값 산술 치환"이라는 새로운 필터가 추가됐다.
그냥 모든 글자들에 대해 코드값을 나타내는 변수 A에 대한 수식을 실행해서 그 수식값으로 문자를 바꿔 준다. 0을 지정하면 그 문자를 지운다. surrogate는 자동으로 처리되기 때문에 A>=0x10000이라고 생각하면 된다.

쉽게 말해 이 기능은 <날개셋> 편집기에 이미 들어있는 '문자 영역 찾기' 기능의 '바꾸기' 버전이라 할 수 있다. 앞뒤 글자를 가리키는 P와 N 변수를 사용할 수 있으며, 여기서 글자를 변경했다고 하더라도 뒷글자의 수식에서 P변수에는 바뀌기 전 앞글자의 코드값이 들어간다.
A - (A>='a' && A<='z' ? 32:0) 이런 수식을 주면 알파벳 대문자를 소문자로 바꿀 수 있으며 전/반각 변환도 그냥 수식으로 처리할 수 있다. 그리고 정규화된 한글 낱자에서 특수 처리를 위해 외형상 잘 보이지 않는 채움 문자만 제거하고 싶을 때도 이 필터를 사용하면 된다.

6. Windows 10 + 구글 크롬에서 발생하는 외부 모듈의 이상한 문제

본인은 근래에 한 사용자로부터 아주 괴이한 현상에 대한 신고를 받았다.
Windows 10 (일단은 64비트) + 구글 크롬의 주소창에서 한글을 입력한다. 그리고 조합이 있는 상태에서 그대로(예: '가' 입력 중) 마우스로 그 주소 입력란을 클릭한다. 그러면 외관상 당연히 조합이 종료돼야 한다.
그런데 그 상태에서 한글을 입력하면 아까 조합 중이던 한글이 덧나서 '가강' 내지 '가가ㄴ'처럼 된다.

<날개셋> 한글 입력기가 개발 짬밥이 몇 년인데 저런 미개하고 원시적인 버그가 있다는 건 말이 안 되는데? 게다가 다양하게 실험을 해 보니 이 버그는 다음 조건 중 하나만 만족해도 발생하지 않는다. 혹시나 해서 말인데, 모든 테스트는 64비트 기준임.

  • 일단 날개셋 말고 MS IME는 어디서든 별 이상 없음.
  • 크롬에서 '가능한 경우 하드웨어 가속 사용' 옵션을 끄면 날개셋 역시 저런 문제 없이 조합 종료 처리가 옳게 됨. 아놔 웹 페이지 렌더링에서 가속을 받는 것하고 IME 프로그램의 동작이 도대체 무슨 상관이냐? -_-;;
  • Windows 10 중에서도 1주년 업데이트를 갓 받은 버전 1607, 빌드 14393.xx대에서만 확실하게 발생하며, 그 이전(버전 1511, 빌드 10586) 내지 이후(버전 1607, 빌드 14971) 버전에서는 발생하지 않는 듯함.

크롬에서 발생하는 문제이긴 하지만 날개셋 + 운영체제 + 크롬이 삼박자로 모두 정밀한 조건을 기가 막히게 만족할 때만 발생하기 때문에 이건 도대체 어떻게 처리해야 할지 모르겠다. Windows 10은 시도 때도 없이 업데이트가 너무 자주 되고 있기 때문에, 만약 후대 빌드에서 문제가 발생하지 않는다면 이건 그냥 '알려진 문제'에다 언급만 하고 넘길 가능성이 높다.

7. 예제 데이터와 도움말

예제 입력 데이터도 몇 개 더 추가하고 Samples 아래에 디렉터리를 더 세부적으로 구분했다. key와 ist 중 한글 입력과 관계 있는 것은 Hangul로, 한글 입력이 아닌 것을 Non-Hangul로 나눴다.
그리고 아직은 예제가 각각 하나씩밖에 없지만 후보 데이터는 Candidate로, 한글 표현 영역 데이터는 Range로 이동해서 배치했다. 확장자가 다 같은 txt이어서 분간이 안 되기도 하니 말이다.
이제 Samples 디렉터리 자체에는 제어판 내장값 예제 데이터인 scheme.xml만 있다. 여기에는 용도가 고정된 파일들만 있을 것이다.

Non-Hangul들은 평범하게 글쇠배열이나 오토마타 수식이 아니라 '날개셋 고급 입력기' 문자 생성기가 제공하는 기능들을 활용해서(사용자 정의 조합과 후보, 출력 치환) 외국 문자나 각종 알파벳 변형 문자들을 입력한다. 알파벳+성조 번호로 성조가 붙은 알파벳을 입력하는 한어병음, X를 덧붙여서 악센트 부호 알파벳을 찍는 에스페란토, 심지어 베트남어 VIQR 입력 방식까지 있다. 내가 만든 건 아님.

그리고 도움말엔 부록의 "한글 낱자 코드 참조표 - 자음" 부분과, 기본 자료 구조의 "한글이 표현되는 방식"에 설명을 보강했다. KS X 1026에서 종성 ㅇ 겹받침이 옛이응 겹받침으로 전격 변경된 것과 관련된 내용을 추가했으며, 현행 한글 코드에 대한 비판에 대한 해명도 넣었다. 한글 11172자와 수백 자의 옛한글 낱자가 유니코드에 일일이 배당된 것이 뭔가 잘못된 것처럼 생각하는 분들이 있는데 본인은 그렇게 생각하지 않는다고 말이다.

이렇듯, 개발 2개월째를 맞는 차기 버전 8.8은 핵심 기능을 제외하고도 겉의 UI와 데이터에 유의미한 변화들이 잔뜩 추가되었다. 다음으로 타자연습 얘기를 하겠다.

8. 타자연습

(1) <날개셋> 타자연습은 현재 최신 버전(입력기 8.6 + 타자연습 3.51)에 중대한 버그가 있다는 걸 이 자리에서 먼저 밝힌다. ‘글쇠 익힘’에서 ‘글자 단위 연습’을 사실상 할 수가 없다. 상자에 있는 글자를 그대로 따라 쳐서 완성하는 순간 프로그램이 뻗어 버리기 때문이다.

이건 타자연습은 잘못이 없고 입력기가 한창 새 기능들이 추가되던 와중에 어이없는 실수가 들어갔기 때문이다. 처음부터 있었던 버그는 아니고 8.5~8.6쯤에서 들어간 것으로 추정된다. 세벌식 커뮤니티에서는 오래 전부터 나돌던 이슈였던 것 같은데 본인은 지금까지 이걸 알지 못했다.

(2) 오랫동안 존재했을 것으로 추정되는 굉장히 어처구니없는 버그를 사용자의 제보 덕분에 발견하여 수정했다. <날개셋> 타자연습에는 사용자 계정 이름을 변경하는 기능이 있는데 그게 사실상 거의 쓸 수 없는 무용지물이었다. 계정을 갓 생성한 직후에는 개명이 가능하지만, 나중에 그걸로 본격적으로 로그인을 한 뒤에는 개명 기능이 동작하지 않았기 때문이다. 이 문제 역시 확인된 즉시 해결했다.

(3) 지난 3.5버전부터 연습글을 관리하는 체계가 리스트 xml이 아닌 디렉터리 기반으로 간소화되었는데.. 이 때문에 지금까지 제공되던 성경 본문 tc 파일을 곧장 사용하는 게 불가능해졌다.
다음 버전에서는 사용자가 지정한 연습글 디렉터리에다 tc 파일이 있으면 그 tc 파일에 있는 모든 연습글들을 별도의 꾸러미에다 자동으로 몽땅 등록해 주는 기능이 들어갈 것이다. 골치 아프게 ProgramData\YmSoft\NgsType 이런 디렉터리 찾을 필요 없이, 자기가 쓰는 연습글 디렉터리에다가 파일을 넣기만 하면 문제가 해결된다.

(4) 문장 연습 중에 현재 사용 중인 글자판의 이름을 표시하는 기능이 추가되었다. 연습 중에는 어차피 화면 좌측 하단의 ‘환경설정’ 버튼에 접근할 수가 없어지니 이 버튼을 아예 숨겨 버리고 여기에다가 <날개셋> 편집기의 상태 표시줄처럼 글자판의 이름이 표시되게 했다.

<날개셋> 타자연습은 세벌식 최종 전용 타자연습(= 한글 전용)을 표방하고 있어서 전통적으로 이런 쪽을 신경쓰지는 않고 있었는데, 이것도 표시하는 기능이 없는 것보다는 있는 게 좋아 보인다. 게임의 경우 글자판이 바뀌면 바뀐 글자판 이름이 화면 좌측 하단에 잠시 떴다가 사라진다.
사실은 앞서 언급했던 입력 스키마 이름과 글쇠배열 이름을 분리하는 기능 역시, 타자연습의 이 작업을 하던 중에 아이디어가 떠올라서 추진한 것이다.

이 정도면 타자연습의 다음 버전도 단순히 3.52 수준이 아니라 3.6 정도로 너끈히 갈 수 있을 듯하다.

Posted by 사무엘

2016/12/08 08:30 2016/12/08 08:30
Response
No Trackback , 6 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1303

1. 북한에서 수뇌부가 거주하는 곳은?

우리나라야 대통령이 근무하는 관저는 북악산 기슭에 있는 '청와대'이다. 대통령은 출퇴근 이동을 하지도 않으며, 잘 알다시피 보안을 위해 아예 이 캠퍼스 안에 가족이 다 눌러앉아서 지낸다.
그럼 한편으로 북한에서 청와대에 해당하는 건물은 무엇일까?

일명 주석궁이라고 불리는 평양의 그 거대한 건물을 떠올리는 분들이 많을지 모르겠다. 본인 역시 오랫동안 그렇게 생각했는데.. 사실은 그렇지 않다는 사실을 최근에 알게 됐다.
주석궁은 2~30년 전, 김 일성이 살아 있던 시절에는 '금수산 의사당'이라고 불리면서 김 일성이 거주하고 집무하는 관저로 쓰인 게 맞다. 그러나 저 사람이 죽고 나서는 그 궁전 전체가 무슨 성경에 나오는 지성소 같은 성역이 되어 버렸다. 이름도 '금수산 기념 궁전'로 바뀌었다가 지금은 '금수산 태양 궁전'이 됐다.

우리나라의 경우 전직 대통령이 서거하면 현충원에 묻어 준다. 그것처럼 김 일성 역시 개인적으로는 북한의 현충원뻘인 '대성산 혁명렬사릉'에 묻히길 원했으나.. 독재자를 한도 끝도 없이 우상화해야만 체제가 유지될 수 있는 북한에서 바랄 걸 바라야지. 그 유언은 상큼하게 씹혔다. (베트남에서는 호치민의 유언도 그렇게 씹혔음.)

그 큰 주석궁 전체가 예전에는 프로토스 넥서스에 해당했는데 이제는 시타델 오브 아둔 같은 역할로 바뀌었다. 김 일성의 미라가 들어갔으며 나중에는 김 정일의 미라까지 추가로 들어갔다. 그리고 근처의 지하철역이던 광명 역은 보안 강화를 위해 폐역되고 열차가 무정차 통과하게 됐다. 달랑 미라 두 구만 보관하기에는 아무래도 너무 큰 건물인데.. 다른 공간은 어떻게 바뀌었나 모르겠다.

어쨌든 이런 이유로 인해 금수산 태양 궁전은 일종의 박물관 내지 왕릉 같은 곳이 됐기 때문에 지금 김 정은이 거기에 늘 상주하지는 않는다. 김 일성이 죽은 뒤 오늘날까지 김씨 가문이 사용하는 관저 내지 아지트는 평양, 신의주, 원산, 심지어 백두산 근처 등 여러 곳에 흩어져 있다. 평양 근처에 있는 걸로 알려진/추정되는 아지트도 시내에서 상당히 떨어진 외곽 모처이며, 위성 첩보 사진으로 위치를 추측할 뿐이다.

요컨대 거기는 워낙 폐쇄적이고 비밀도 많은 집단이다 보니.. 대한민국의 청와대, 미국의 북악관 같은 딱 떨어지는 단일 집무 공간이라는 개념이 현재 공식적으로 없는 셈이다. 더구나 그런 아지트들의 지하에는 무슨 거미줄 같은 네트워크가 깔려 있을지 생각하면 의문은 더욱 커질 수밖에 없을 것이다.

2. 김 정일의 카게무샤(대역)

우리나라 육군에는 KCTC(육군 과학화 전투 훈련단)이라는 훈련장이 있으며, 거기엔 '전갈 대대'라고 타 부대를 상대로 북한군 코스프레를 하면서 가상의 적군 역할을 전문적으로 수행하는 부대가 있다. 얘들은 마치 버추어 파이터의 듀랄 컨셉 같아 보인다고 본인이 예전에 언급한 바 있다. 여느 군부대 사격장이나 각개전투장에서 볼 수 있는 북한군 차림의 인형(?) 표적만으로는 실전 같은 훈련을 하기에 충분치 못하니 군대에서 저런 것까지 도입한 것이다.

그런데 우리나라는 북한군 코스프레만 하는 게 아니다. 북한 김돼지의 코스프레를 전문으로 하는 북한 전문가를 몰래 양성해서 운용하기도 했다. 요즘도 있는지는 모르겠지만 과거에는 그런 게 확실하게 있었다는 것이 김 달술 씨 같은 전직 코스프레 요원의 증언을 통해 알려져 있다.

그런 사람을 왜 두냐고? 북한의 고위 관료나 심지어 김돼지를 직접 만날 예정인 우리나라 측의 대통령 내지 고위 관료를 비밀리에 교육· 훈련시키기 위해서라고 한다. 언어는 일단 같은 한국어를 쓰는데 현실적으로는 일본보다도 위험한 반국가단체 빨갱이들의 수괴요 적장이고.. 그런데 또 대놓고 적대시만 하기에는 좀 민망한 존재이니.. "직접 만나서 얘기를 나누게 되더라도 절대로 기선제압 당하지 말고 쫄지 마라."라는 취지에서 우리 내부에서 모의 훈련을 할 만도 해 보인다. 이건 북파 공작원을 양성하는 것과도 목적이 완전히 다르다.

김돼지 등 북한 역할을 하는 사람은 무슨 공작원처럼 인간흉기로 양성되지는 않는다. 단지, 자고 일어나면 맨날 역대 로동신문과 평양 방송을 송두리째 흡입하면서 북한 정세를 학습하고 김돼지의 말투와 몸짓, 요즘 관심사, 머리에 든 것 따위를 숙지했다고 한다.

당연한 말이지만 단순히 정치 드라마에서 김돼지 연기만 하는 배우와는 차원이 다른 양의 공부를 해야 한다. 그런데 남한 내부에서 북한의 사고방식을 룰 기반으로 정공법으로 익힐 수는 없으니, 결국 통계 기반으로 북한에 대한 빅데이터 머신 러닝 딥 러닝을 몸으로 실행하는 셈이다. 또한, 마치 음란물 자동 탐지 필터를 개발하는 엔지니어가 직업적으로 맨날 음란물에 파묻혀 지내야 하듯, 저 아저씨는 합법적으로 맨날 이적표현물에 파묻혀서 산다고 볼 수 있다.

북한 내부에서는 쿠데타나 암살에 대비해서 가짜 김돼지가 예비용으로 돌아다닐 법도 한데, 어쨌든 남한에서는 뭔가 다른 용도로 김돼지의 코스프레가 이런 식으로 그것도 몇 대에 걸쳐 비밀리에 양성되어 왔다는 게 신기하다. 인간을 화성으로 보낼 생각으로 지구의 하와이 모처에다가 화성 같은 환경을 꾸며 놓고 우주인들에게 몇 개월 동안 생존 훈련을 시키는 것과 비슷한 관행으로도 보인다.

우리가 자체적으로 이런 짓을 해 봤자 도대체 어디로 튈지 모르는 북한 사람과 만나는 데 무슨 도움이 됐겠냐 싶지만... 카더라 통신에 따르면 큰 도움이 됐다고 한다. 실제로 김 정일이 만나서 거론한 것, 질문한 것은 남한에서 자체적으로 준비해 간 예상 문제의 범위를 별로 벗어나지 않았으며 적중률도 대단히 높았다고 한다. 특히 우리나라 역사상 북한 수뇌를 최초로 직접 대면한 김 대중의 경우 70대 중반의 고령에도 참모진들이 준비해 준 대응 매뉴얼을 일일이 숙지하면서 답변을 아주 잘한 것으로 알려져 있다.

북한 때문에 이 나라에서는 안 그래도 지금까지 곳곳에 비밀도 많고 비리도 많고 숨겨진 게 너무 많은 채로 돌아갔던 게 사실이며, 저 카더라 통신도 한쪽에서 일방적으로 발표한 것이니 전적으로 믿을 수 있을지는 미지수다. 그렇게 기껏 철저히 준비하고는 김돼지를 만나고 와서 이뤄진 열매가 겨우 이 모양이라면 말이다.
김 대중 대통령이 집권하자마자 국정원을 싹 뒤집어엎고 북파 공작원들의 신원을 북쪽에다 넘겨 줘 버렸다는 말까지 나도는데.. 그것도 내가 직접 확인할 수는 없는 노릇이고.

다만 김 대중· 노 무현 같은 친북 성향의 정권이 설령 악의가 없었다고 하더라도 결국은 북한에 엄청난 거금을 퍼 주고도 북한은 하나도 바뀌지 않았으며 전화· 서신 왕래 하나 제대로 이뤄진 게 없었다. 가만히 놔두기만 하면 붕괴했을 북한 정권은 이 돈으로 원래 계획했던 핵을 무난히 개발하는 쾌거를 이뤘다. 철도 연결이나 이산가족 상봉 깜짝쇼쯤은 도박판에서 돈 다 날리고 받은 위로금 개평 수준?

남북 경제 협력 명목이랍시고 이뤄 냈다는 개성 공단을 온갖 이상한 논리와 궤변으로 옹호하는 사람들이 있는데.. 그들은 양심이 있다면 박통 시절에 노동자들의 열악한 근무 여건(특히 전 태일 열사)을 같이 논해서는 안 될 것이다. 박통 시절에 아무리 노동자 인권이 열악했어도 임금의 90%를 체제 충성 비용으로 국가가 떼어 가던가?

이래도 햇볕 정책이 악의적이지 않은 실책일 뿐이라고 별다른 비판 없이 넘어간면, 그렇다면 6· 25 때 이 승만 정권의 한강교 폭파와 인명 살상이야말로 훨씬 더 악의적이지 않은 실책일 뿐이라고 실드 치고 넘길 수도 있겠다. 이게 전체 그림의 진실인 것이다.

정치색 들어간 얘기는 이쯤에서 접고 다시 본문으로 돌아오면..
이렇듯 국가 대표로서 적성국가 사람과 대면하는 건 어지간히 힘든 일이 아니다. 옛날에 이 후락 중앙정보부장도 몰래 북한을 방문했을 때, 거기서 무슨 일을 당할지 모르니 만약을 대비해 언제든지 즉시 자폭 가능하게 독약 앰플을 준비해 갔을 정도였다.

그리고 같은 전방에서도 상대적으로 낙후해 있는 동부 전선 강원도 산간지대 말고.. 서울과 가까운 평지이고 판문점도 있는 서부 전선이 훨씬 더 엄선된(체력· 사상 모두) 정예 군인들이 배치된다. 여기 일대는 민통선과 DMZ의 구분이 좀 므흣해서 북한군과 직접 대면하기 쉽고 각종 높으신 분들도 많이 오며, 덩달아 어느 지역보다도 월북 가능성이 높기 때문에 여기가 그야말로 노다지 진급 코스이다. 육사 졸업생은 바로 이런 데에서 소대장으로 첫 근무를 시작한다.

3. 탈북자가 가는 곳

북한 주민들이 탈북을 하는 경로는 신분과 지위에 따라 다양하다. 외국에 파견 나가 있다가 별안간 망명을 신청하기도 하고, 천신만고 끝에 중국 국경으로 넘어간 뒤 다른 나라를 거쳐 한국으로 오기도 한다. 배를 타고 넘어오거나 국경에서 근무 중인 군인이 별안간 남쪽으로 오는 경우도 있다.

이렇게 남쪽으로 넘어오는 북한 주민들은 명목상으로는 반국가단체의 지배 하에 있다가 탈출해 온 '대한민국 국민'이다. 그렇기 때문에 우리나라의 입장에서는 자유 대한의 품에 안긴 그들을 최대한 인간적으로 대우한다. 그러나 한편으로는 탈북자로 위장 행세를 하는 간첩도 있기 때문에, 대접을 하기에 앞서 이들에 대한 최소한의 의심과 검증은 거친다. 탈북했다가 별안간 "나 마음이 바뀌었으니 북으로 다시 보내 주쇼" 하고 떼쓰는 이상한 아줌마도 있는데 이건 99.9% 간첩이다.

필요 이상으로 이상하게 북한을 자주 방문하는 사람도 굉장히 의심해야 한다. 그런 놈들은 북에 가서는 돈 왕창 바친 뒤 또 지령 받아서 되돌아오기 때문이다. 정치· 종교 쪽으로 유명한 사람이 북에서 자기 지위와 관련된 약점을 한번 잡힌 뒤부터는(마약이나 성 스캔들 같은) 북에 대해서 소신 발언은 끽소리도 못 하는 친종북 인사가 돼 버린다.

뭐 이런 경위가 있기 때문에, 탈북자라고 주장하는 사람이 접수되면 곧바로 하나원 같은 정착 지원 시설로 가는 게 아니다. 이들은 정확한 신원 파악을 위해 먼저 탈북자 전용 신문 센터에 며칠간 수용되어 정밀 조사를 받는다. 이건 국정원 자체는 아니지만 국정원에서 관할하는 시설이며, 시흥시 수인로라는 대로변에 자리잡아 있다. 당연히 아무 이정표도 없고, 밖에서 봐서는 이런 시설이 있는지 일반인은 전혀 알 수 없다.

정밀 조사를 통해 이들이 정말로 북한에서 왔고 악의가 없는 탈북자가 맞는지를 최종 확인한다. 우리나라도 정부 수립 이래로 지금까지 탈북자가 한두 명 쌓인 게 아니고 이 바닥 장사를 하루 이틀 하는 게 아닌데, 수많은 탈북자들의 증언을 바탕으로 교차 검증 가능한 데이터쯤이야 왕창 쌓여 있다. 정말로 북한의 그 지역에서 그 당시를 살았던 사람이라면 모를 수가 없는 내용을 거듭 질문해서 제대로 대답하는지 확인한다.

검증을 통과한 뒤 탈북자들은 하나원에서 총 12주간 남조선 사회 제도에 대한 교육을 받은 뒤, 각종 정착 자금을 받고 사회로 배출된다. 게임에서 튜토리얼을 한 뒤, 캐릭터가 본게임 필드에 스폰돼서 처음엔 깜빡거리는 실드 모드이다가 그 뒤부터는 실드 모드가 꺼지는 것과 같다.
세월이 흐르면서 탈북자가 워낙 많아지고 이들을 받아들이는 게 '귀순 용사'로 일일이 띄울 필요도 없는 일상적인 일과가 되자.. 하나원 역시 2010년대에 와서는 화천군에 멀티를 또 만들었다. 본원은 안성 품곡마을 근처에 있다.

하나원과 신문 센터 모두 법적으로 '가급 보안 시설'이고 지도에는 전혀 나와 있지 않다. 북한이 위치를 알아서 좋을 게 하나도 없는 시설이니까. 국정원 본원 자체도 코렁시설이지만 신문 센터라든가 국가 정보 대학원 같은 추가적인 연계 코렁시설도 있다는 점이 흥미롭다.
그나저나 서독산과 수리산의 사이에 있는 안양 박달동은 보아하니 산지 같은데 산 전체가 몽땅 온갖 군부대로 가득하구나. 예비군 훈련장도 당연히 있고. 산 전체가 탄약고인 천안 성환읍 학정리를 보는 듯한 느낌이다.

Posted by 사무엘

2016/12/05 19:37 2016/12/05 19:37
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1302

Visual Studio 201x, MSDN 이야기

1. 도움말 시스템

Visual C++ (지금의 Visual Studio)이 개발된 이래로 IDE가 제공하는 도움말 및 API 레퍼런스 시스템은 다음과 같이 변모해 왔다.

  • 1세대 1.x~2.x: 그냥 평범한 WinHelp 기반 hlp
  • 2세대 4.x, 5: 리치 텍스트(RTF) 기반의 자체적인 도움말 시스템이 IDE 내부에 통합되어 제공. 같은 컴퓨터 사양에서 RTF 기반 엔진은 이후에 등장한 IE+HTML 기반 엔진보다 텍스트 표시와 스크롤 속도가 훨씬 더 빨랐다.
  • 3세대 6: RTF 대신 HTML 기반의 외부 도움말로 갈아탐. MSDN이라는 명칭 정립.
  • 4세대 200x (.NET ~ 2008): HTML 기반이지만 CHM 말고 다른 컨테이너를 사용하는 Document Explorer. 도움말을 IDE 내부에 구동할 수도 있고 외부에 구동할 수도 있음. 융통성이 생겼다.
  • 5세대 201x: Help Viewer 도입. 버전도 1.0부터 리셋 재시작.

하긴, 비주얼 C++의 프로젝트 파일 포맷도 이와 거의 비슷한 단계를 거치며 바뀌어 왔다. vcp(1세대), mdp(2세대), 3세대(dsw/dsp), 4세대(sln/vcproj), 5세대(sln/vcxproj)의 순. 단, 비주얼 C++ 5는 2세대 도움말 기반이지만 프로젝트 파일은 예외적으로 3세대 6.0과 동일한 dsw/dsp기반이다.

본인은 지금의 일명 5세대 도움말 시스템을 별로 좋아하지 않았다.
일단 5세대 시대를 처음으로 시작한 Visual Studio 2010은 후대 버전은 안 그런데 얘만 유독 무겁고 시동 속도가 무척 느렸다.
그리고 같이 내장된 Help Viewer 1은 '색인' 탭으로 가면 심한 랙이 걸려서 몹시 불편했다. 재래식 4세대 도움말에 비해 기능 차이는 별로 없는데 느리고 무거워지기만 해서 학을 뗐다.

그나마 2012부터는 IDE가 가벼워지고 도움말의 랙도 없어진 듯하다. 그 대신 2010에는 없던 다른 사이드 이펙트가 생겼다.
첫 구동되어서 Help Viewer 스플래시 화면이 뜰 때 마우스 포인터가 움직이지 않을 정도로 컴퓨터가 잠시 stun(멈칫)된다. 구닥다리 내 컴에서만 그런 줄 알았는데 회사의 초고성능 최신식 컴퓨터에서도 동일한 현상이 발생한다.

먼 옛날의 불안정한 유리몸이던 Windows 9x도 아니고 엄연히 7~10급의 최신 OS에서 하드웨어를 도대체 어떻게 건드렸길래 마우스 포인터조차 움직이지 않는 상태가 되나?

잘 알다시피 요즘 Visual Studio IDE는 평범한 Win32 API로 GUI를 만드는 게 아니라 닷넷 + Windows Presentation Foundation 기반으로 특수하게 하드웨어 가속도 받으면서 아주 뽀대나는 방식으로 그래픽을 출력한다.
글자를 찍는 계층도 뭐가 바뀌었는지, 텍스트 에디터에는 트루타입 글꼴만 지정되지 FixedSys 같은 비트맵 글꼴을 사용할 수 없게 바뀌었다. '굴림'은 트루타입이니 사용은 가능하지만 embedded 비트맵이 대신 찍히는 크기에서도 ClearType이 적용되어 색깔이 살짝 바뀌어 찍히며, 같은 글자끼리도 폭이 좀 들쭉날쭉하게 찍힌다.

이렇듯, 재래식 GDI API로 글자를 찍었다면 절대로 나타나지 않을 사이드 이펙트들이 좀 보인다.
그런 특수한 그래픽/GUI를 사용하기 위해서 마치 게임 실행 전처럼 하드웨어 초기화가 일어나고, 그때 마우스 포인터가 살짝 멈추는가 하는 별별 생각이 든다.

2. GDI API 설명은 어디에?

요즘(2010년대) Visual Studio의 MSDN 레퍼런스엔 왜 GDI API들이 누락돼 있는지 궁금하다. BitBlt, SetPixel 같은 것들. desktop app development에 해당하는 몇백 MB짜리 도움말을 분명히 설치했는데도 로컬 도움말에 포함되지 않아서 저것들 설명은 느린 인터넷 외부 링크로 대체된다.

VS 2010에서는 GDI 관련 API들이 색인으로는 접근 가능하지만 목차에서는 존재하지 않아서 접근불가였다. 그리고 MFC 레퍼런스도 단순한 API wrapper의 경우(가령 CDC::MoveTo) See also 란에 자신의 원래 API 함수에 대한 링크(가령 MoveToEx)가 있는데, 요건 내부 링크가 아니라 인터넷 MSDN 사이트의 외부 링크로 바뀌어 있었다.

즉, 그때부터 GDI API의 설명은 제외될 준비를 하고 있었던 듯하다. 그 뒤로 2012인가 2013 이후부터는 그것들이 색인에서도 제외되고 완전히 없어졌다. 2015도 마찬가지인 걸 보니 GDI의 누락은 단순 지엽적인 실수가 아니라 의도적인 계획인 것으로 보인다.

kernel32, user32, advapi32 등 나머지 API들은 다 남아 있는데 왜 GDI만 없앴는지, 얘는 정말로 완전히 deprecate 시킬 작정인지 알 길이 없다. Windows NT 3.1 초창기 때부터 20년이 넘게 운영체제의 중추를 구성해 온 놈인데 그걸 호락호락 없애는 게 가능할까? 게다가 BeginPaint, GetDC처럼 GDI를 다루지만 실제로는 USER 계층에 속해 있는 기초 필수 API조차 언급이 누락된 것은 좀 문제라고 여겨진다.

이런 것 때문에 본인은 Visual Studio는 옛날 Document Explorer 기반이던 200x도 여전히 한 카피 설치해 놓고 지낸다.
옛날에는 또 Visual C++ 2005의 MSDN만 TSF API 레퍼런스도 없고 뭔가 나사가 빠진 듯이 컨텐츠가 왕창 부실해서 내가 놀랐던 기억이 있다. 2003이나 2008은 안 그랬고 걔만 좀 이상했었다.

3. 프로젝트에 소속되지 않은 소스 코드도 심층 분석

Visual C++. 2013인지 2015인지 언제부턴가 프로젝트에 등재되지 않은 임의의 C/C++ 소스 코드를 열었을 때도 이 파일을 임시로 파싱해서 인텔리센스가 동작하기 시작했다. 이거 짱 유용한 기능이다.
전통적으로 프로젝트 소속이 아닌 파일은 문맥을 전혀 알 수 없으며 빌드 대상도 아니기 때문에 IDE에서의 대접이 박했다. 정말 기계적인(문맥 독립적이고 명백한) 신택스 컬러링과 자동 들여쓰기 외에는 자동 완성이나 인텔리센스 따위는 전혀 제공되지 않았다. 전혀 기대를 안 하고 있었는데 이제는 걔들도 miscellaneous file이라는 범주에 넣어서 친절하게 분석해 준다.

4. Spy++

Visual C++에는 프로그램 개발에 유용하게 쓰일 만한 아기자기한 유틸리티들이 같이 포함돼 있다.
'GUID 생성기'라든가 '에러 코드 조회'는 아주 작고 간단하면서도 절대로 빠질 일이 없는 고정 멤버이다.
옛날에는 'OLE/COM 객체 뷰어'라든가 'ActiveX 컨트롤 테스트 컨테이너'처럼 대화상자가 아닌 가변 크기 창을 가진 유틸리티도 있었는데 OLE 내지 ActiveX 쪽 기술이 인기와 약발이 다해서 그런지 6.0인가 닷넷 이후부터는 빠졌다.

그 반면, 기능이 제법 참신하면서 1990년대부터 지금까지 거의 20년 동안 변함없이 Visual C++과 함께 제공되어 온 장수 유틸리티는 단연 Spy++이다.
얘는 제공하는 기능이 크게 변한 건 없었다. 다만 아이콘이 초록색 옷차림의 첩보요원(4.x..!), 분홍색 옷차림(6.0~200x), 검정색 옷차림(2010~현재)으로 몇 차례 바뀌었으며, 운영체제의 최신 메시지가 추가되고 도움말이 hlp에서 chm으로 바뀌는 등 외형만이 최소한의 유지보수를 받아 왔다.

아, 훅킹을 사용한다는 특성상 2000년대 중반엔 64비트 에디션이 따로 추가되기도 했다. 하지만 GUI 껍데기는 x86용 하나만 놔두고 64비트 프로그램에 대해서는 내부적으로 64비트 서버 프로그램을 실행해서 얘와 통신을 하는 식으로 프로그램을 개발하면 더 깔끔했을 텐데 하는 아쉬움이 남는다. 그러면 사용자는 겉보기로 한 프로그램에서 32비트와 64비트 구분 없이 창을 마음대로 들여다보고 훅킹질을 할 수 있을 테니 말이다.

실제로 <날개셋> 입력 패드도 그런 식으로 동작하며, 당장 Visual C++ IDE도 내부적으로 64비트 IPC 서버를 따로 운용하기 때문에 IDE 자체는 32비트이지만 64비트 프로그램도 아무 제약 없이 디버깅이 가능하다. 하지만 안 그래도 훅킹을 하느라 시스템 성능을 잡아먹는 프로그램인데.. 성능 문제 때문에 깔끔하게 64비트 에디션을 따로 빌드한 것일 수도 있으니 Spy++ 개발자의 취향은 존중해 주도록 하겠다.

Spy++는 워낙 역사가 긴 프로그램이기 때문에 초창기 버전은 창/프로세스들의 계층 구조를 전용 트리 컨트롤이 아니라 리스트박스를 정교하게 서브클래싱해서 표현했다. 쉽게 말해 과거 Windows 3.1의 파일 관리자가 디렉터리 계층 구조를 표현한 방식과 비슷하다. 사실은 리스트박스에서 owner draw + user data로 계층 구조를 표현하고 [+/-] 버튼을 눌렀을 때 하부 아이템을 표시하거나 숨기는 건 1990년대 초반에 프로그래밍 잡지에서 즐겨 다뤄진 Windows 프로그래밍 테크닉이기도 했다.

그러다가 VC++ 2005인가 2008 사이쯤에서 Spy++은 운영체제의 트리 컨트롤을 사용하는 걸로 리팩터링이 됐다. 사용자의 입장에서는 기능상의 변화가 없지만 내부적으로는 창을 운용하는 방식이 완전히 바뀐 것이기 때문에 이건 내부적으로 굉장히 큰 공사였으리라 여겨진다.

그런데 VC++ 2010과 함께 제공된 Spy++는 일부 단축키들이 동작하지 않는 버그가 있었다. 전부 먹통인 것도 아니고 창 찾기 Alt+F3, 목록 새로 고침 F5, 속성 표시 Alt+Enter 같은 게 동작하지 않아서 프로그램을 다루기가 불편했다. 이 버그는 잠깐 있었다가 다시 2012 이후에 제공되는 Spy++부터는 고쳐졌다.

Posted by 사무엘

2016/12/03 08:31 2016/12/03 08:31
, ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1301

* 옛날 2014년에 썼던 글을 관련 내용을 크게 보강하여 리메이크 한 것이다.

디지털 컴퓨터라는 게 0과 1, 2진법을 사용하다 보니, 2^n이라 하면 정보량과 관련해서 특히 컴퓨터쟁이들에게 아주 친근한 수이다.
그런데 2^n보다 1 더 크거나 작은 수가 소수라면 제각각 수학적으로 좀 독특한 의미를 갖게 된다.

1.
2^n-1 형태인 수를 메르센 수라고 한다. n층짜리 하노이의 탑의 원반을 옆으로 모두 옮기기 위해서는 이 메르센 수만치 지수함수적으로 증가하는 횟수만치 원반을 이동시켜야 한다. 그리고 메르센 수 중에서 소수인 놈을 메르센 소수라고 한다.
얘가 소수이려면 n도 반드시 소수여야 한다. n을 a와 b라는 두 자연수의 곱이라고 생각하고 2^ab - 1을 인수분해해 보면 그래야만 하는 구조적인 이유를 알 수 있다.

사용자 삽입 이미지

(2^ab는 (2^a)^b 와 같다. 2^(a+b)하고 혼동하지 말 것.)

n이 합성수여서 2 이상인 두 자연수 a, b의 곱으로 나타내어질 수 있다면 2^n-1은 빼도 박도 못하고 무조건 합성수가 돼 버린다. 전체 결과가 소수가 되려면 a는 1이고 b는 소수로 귀착되는 것밖에 가능성이 없다. 비록 이 조건이 만족된다고 해서 2^n-1이 언제나 반드시 소수가 된다는 보장은 없지만 말이다.
가장 작은 반례는 2^11-1이다. 11은 소수이지만 2047은 23*89로 소인수분해 되는 합성수이다.

메르센 수는 2^n에서 1이 부족한 형태라는 특성상 2진법으로 나타내면 모든 자리수가 1이다. 컴퓨터에서 취급이 간편하기도 하고, 또 n의 소수 여부를 판정한 뒤에 곧장 무려 2^n-1이라는 방대한 수를 취급할 수 있다는 특성상.. 컴퓨터로 가장 큰 소수를 찾는 프로젝트는 대개 메르센 수를 대상으로 진행되곤 한다. 물론 실제로는 메르센 수가 아닌 소수도 많이 있으며, 반대로 메르센 수 중에서도 메르센 소수는 매우 드물다는 점을 감안할 필요가 있다.

저런 거 찾는 건 거의 애니메이션 렌더링과 같은 급으로 상상을 초월하는 계산량으로 컴퓨터를 열받게 하고 혹사시키는 작업이다. 그나마 양만 많지 내부 과정 자체는 단순무식한 편이니 병렬화가 수월한 건 다행인 점이다.

메르센 소수는 짝수 완전수와 필요충분 관계로 정확히 대응하는 것으로 유명하다. (약수의 합이 자신과 같은 6, 28, 496 같은 수) 메르센 소수 2^n-1에다가 2^(n-1)을 곱하면 완전수가 나오기 때문이다. 괄호 순서에 유의할 것. 즉, 저기서 n에다 소수를 집어넣으면 된다. 천재 수학자 오일러가 모든 짝수 완전수는 이런 형태라는 것을 증명했다.
현재까지 메르센 소수는 약 50여 개가 알려져 있으나, 무한히 존재하는지는 불명이다.

2.
그럼, 다음으로 2^n+1의 경우를 생각해 보자. +1은 -1보다 더 자비심이 없다. n은 소수가 아니라 반드시 2의 거듭제곱 형태여야 그 값이 소수일 일말의 가능성이 생긴다. 이는 n의 소인수 중에 홀수가 절대로 존재해서는 안 됨을 의미한다. 아까 전과 비슷한 방식으로 2^ab + 1을 인수분해해 보면 그 이유를 알 수 있다.

사용자 삽입 이미지

n의 소인수에 홀수가 존재해서 그걸 b라고 설정하면 아까 -1일 때와는 부호만 미묘하게 다르게 저렇게 인수분해가 되며, 이 수는 100% 합성수임이 보장돼 버린다. (2^a - 1)이라면 a=1인 걸로 맞춰서 없앨 수라도 있지만, (2^a + 1)은 도저히 처분할 방법이 없다.

하긴, 고등학교 공통수학 수준의 인수분해 공식을 생각해 봐도, n이 홀수일 때에 한해서 (a^n + b^n)은 a+b로 나눠 떨어지며 인수분해가 된다. 나눠진 몫에 해당하는 항은 a^n에서 b^n으로 a와 b의 차수가 조금씩 늘고 줄고 부호가 교대로 바뀐다.
이를 일반화하면, n이 굳이 홀수가 아니더라도 6이나 10처럼 홀수 소인수가 포함돼 있으면(3, 5) (a^n + b^n)은 굳이 a+b가 아니더라도 (a^2+b^2) 같은 것으로라도 나눠 떨어지며 인수분해가 된다. 그렇지 않고 홀수 소인수가 전혀 없다면 +의 경우는 인수분해를 할 수 없다.

부연 설명 차원에서 인수분해된 식들이 전개되는 양상을 시각적으로 살펴보면 이러하다.
a^n - b^n은 n의 값과 관계없이 언제나 a-b로 나눠 떨어지며, 나눠진 몫의 항들은 부호가 모두 +가 유지된다. 전부 +인 항들이 한 칸 옆으로 물러간 채 -로 바뀌어서 전부 +/-가 상쇄돼 버리고 맨 앞의 +와 -만 남는다
++++
 ----
+...- (a-b)

하지만 a^n + b^n일 때는 +와 -가 교차하는 항들이 한 칸 옆으로 맞물려서 상쇄돼야 맨 앞과 뒤의 +가 남을 수 있다. 그러니 이때는 항이 홀수 개여서 양 끝이 +가 유지돼야 인수분해가 가능해지는 것이다.
+-+-+
 +-+-+
+....+ (a+b)

(쪼개고 쪼개도 분자 단위에서 계속 앞뒤로 + - 극을 갖는 자석 같아 보이기도 하고..;;)
이 두 경우를 모두 종합한 듯이 인상적인 상황은 (a^n - b^n)에서 n이 2의 거듭제곱 형태일 때이다. n=8인 경우를 예로 들어 보면, 이 식은 (a^4 + b^4)(a^2 + b^2)(a + b)(a - b)라고 아주 드라마틱하게 인수분해가 된다. n이 2의 거듭제곱이면 (a^n + b^n)은 -일 때와는 반대로 인수분해가 도저히 더 되지 않는 다항식계의 소수(?) 같은 존재가 된다.

그렇기에 2^n+1도 n이 반드시 2의 거듭제곱 형태여야만 구조적으로 인수분해가 되지 않고 소수일 가능성이 생기는 것이다. 그리고 2^(2^n)+1 형태인 수를 페르마 수라고 하며, 그 중 소수인 놈을 페르마 소수라고 한다. 간단하게 2^n-1로 정의되는 메르센 수와는 양상이 다르다.

그러니, 태생적으로 딱 봐도 페르마 소수는 메르센 소수보다도 더욱 드물 것 같이 생겼는데, 실제로 그러하다.
n에 비례해서 숫자가 넘사벽급으로 너무 폭발적으로 커지는 관계로, 페르마 소수는 n=0..4인 처음 겨우 5개밖에 알려져 있지 않다(3, 5, 17, 257, 65537). n이 아니라 2^n으로 계산한 것이다.

여기서 페르마란 "페르마의 마지막 정리" 내지 추측을 제시했던 17세기 프랑스의 그 엄친아 변호사 겸 아마추어 수학자를 가리키는 거 맞다..
페르마 자신은 저런 형태로 생성된 모든 수들이 소수일 거라고 1637년에 추측하였으나, 그로부터 100여 년 뒤인 1732년, 오일러가 n=5인 2^32+1은 소수가 아니라고 반증을 해 버렸다. 아까 그 메르센 소수와 완전수 관계를 증명한 그 오일러 말이다.
지금이야 그 정도 크기의 수는 컴퓨터로 소수 여부를 아주 간단히 판별할 수 있지만 오일러는 컴퓨터도 없던 시절에 저걸 도대체 어떻게 알아낸 걸까? 찰스 웨슬리가 찬송시 And can it be that I should gain을 쓰기도 전의 일이다(1738).

제곱근인 65536 이내의 모든 홀수들을 브루트 포스 식으로 일일이 주판 돌려서, 제자들까지 멀티코어로 동원해서 나눠 본 건 물론 아니고..
2^32 + 1의 소인수는 반드시 64k+1 의 형태라는 것을 어떤 계기로 알아내고는 찾았다고 한다. 범위를 많이 좁힌 것이다.
실제로 2^32 + 1은 641 * 6700417인데, 이는 (64*10+1)*(64*104694+1)이다.
그는 이를 일반화하여 페르마 수의 소인수는 반드시 "2의 거듭제곱의 a배 + 1"이라는 사실까지 정립했다.

n=5에 속하는 2^32+1에 이어 n=6 (2^64 + 1)의 경우도 합성수라는 게 추가로 밝혀진 건 오일러 이후로 또 100년이 넘게 지난 무려 1855년의 일이다(by Thomas Clausen). 나머지 페르마 수들도 대략 32까지 구해 보니 줄줄이 다 합성수라는 것이 계산을 통해 밝혀졌다. 페르마의 예상과는 정반대로 흘러간 셈이다.
그러니 65537을 끝으로 페르마 소수는 더 존재하지 않는 게 아닌가 추측되고 있으나, 이 역시 홀수 완전수의 존재 여부만큼이나 정식으로 증명된 것은 아니다.

메르센 소수가 짝수 완전수와 동치 관계이듯, 페르마 소수 역시 굉장히 의외의 곳에 큰 의미를 지니고 있다. 이것은 작도 가능한 정다각형의 특성과 관계가 있다. 변의 개수의 소인수가 2 and/or 페르마 소수들로만 이뤄진 정다각형은 눈금 없는 자와 컴퍼스를 이용해 작도 가능하다. 작도 가능한 수는 아무래도 사칙연산과 '제곱근'만으로 기술 가능한 수이니, 제곱근만을 연달아 적용하는 건 2의 거듭제곱만치 또 거듭제곱을 하는 것과 심상면에서 비슷해 보이긴 한다.

그렇기 때문에 작도 불가능한 최초의 정다각형은 정칠각형이며, 반대로 정17각형은 절차가 굉장히 복잡하고 까다롭긴 해도 작도 가능하다. 17은 페르마 소수이니까. 이걸 발견하여 증명한 사람은 오일러...는 아니고 18세기 독일의 천재 수학자인 가우스이며, 그것도 굉장히 어린 나이에 발견했다. sin 1도가 초월수가 아니라 대수적인 수이듯, cos 2*PI/17 역시 형태만 복잡할 뿐, 대수적인 수임을 의미한다.

사용자 삽입 이미지

(그림의 출처: 나무위키)
뭐, 이론적으로만 가능하다는 거지, 실제로 해 보면 누적되는 오차와 지저분한 보조선들 때문에 감당이 어려울 것이다. 하물며 정257각형과 심지어 정65537각형은? 이것도 이론에서나 작도 가능하다는 얘기다.

자, 지금까지 한 얘기들을 요약하면 다음과 같다.

  • a^n-b^n은 언제나 a-b로 나눠 떨어지며 2^n-1 역시 그런 꼴의 수이므로, 얘를 소수로 만들려면 a-b가 반드시 1인 상황을 만들어야 한다. 그리고 메르센 수에서 그 경우란 n이 소수인 경우밖에 없다.
  • 그리고 2^n+1의 일반형인 a^n+b^n은 아까처럼 한쪽 인수를 1로 만드는 게 불가능한 대신에, 인수분해 가능 여부가 n의 차수에 따라 조건부로 결정된다. 소수를 만들려면 물론 애초에 인수분해를 할 수 없는 상황을 만들어야 하며, n은 단순히 짝수인 정도를 넘어 소인수에 홀수가 전혀 없어야 한다. 그래서 n 자체가 2의 거듭제곱 형태인 것만 남는다.

그러고 보니 페르마뿐만 아니라 메르센도 17세기 동시대를 살았던 프랑스 사람이기 때문에 둘이 공통점이 있다. 메르센은 블레즈 파스칼의 스승이기도 했다. 프랑스, 독일 그쪽은 수학· 과학 쪽으로 그때로부터 지금까지 한가닥 하고 있는 대단한 동네이다.

* 소수 관련 여담

(1) 소수 자체가 안 그래도 수가 커질수록 (log n) / n 급의 스케일로 자연수에서 등장 빈도가 극도로 드물어진다. 그런데 그 소수들 중에서도 굉장히 까다로운 조건을 만족하는 메르센 내지 페르마 소수 같은 것들은 한계치 최대치가 존재한다 해도 이상할 게 없을 것이다. 굳이 수 자체가 특이한 게 아니더라도 2 간격으로 나란히 존재하는 쌍둥이 소수 쌍(5와 7, 11과 13, 17과 19..) 같은 것도 말이다. 그런데 한계치가 있다면 그 최대값이 알려져 있어야 할 텐데 그것이 수수께끼이다.

(2) 오일러의 업적 중에는 소수와 관련해서도 정말 살떨리는 것들이 많다. 자연수의 제곱의 역수의 무한합이 원주율과 관계 있는 수로 수렴한다는 것을 규명했을 뿐만 아니라 이건 소수의 분포와도 관계가 있기 때문에 임의의 두 수가 서로 소일 확률과 같다고 입증한 건 뭐.. 할 말을 잃게 만든다. 예전에 본인의 블로그에서 다룬 적이 있다.

(3) 또한 그는 소수의 개수가 무한한 건 말할 것도 없고, 소수의 역수의 무한합이 무한대로 발산한다는.. 거의 충격과 공포 안드로메다급의 명제도 증명했다. 물론 속도는 이중 로그(로그에다 또 로그) 급으로 끔찍하게 느리니 기대하지 말자. 그냥 자연수의 역수의 합만 해도 얼마나 느린데 하물며 소수의 역수는! 쉽게 말해 10에다 0을 10의 20승개만치 붙인 영역만치 소수의 역수를 더하면 합이 20이 될까말까 한다는 뜻이다. 쟤가 도대체 제곱의 역수의 무한합보다 뭐가 더 나은 구석이 있다고 발산을 하는 걸까?

단, 쌍둥이 소수들의 역수의 합은 유한으로 수렴한다고 한다. 쌍둥이 소수가 유한하다면 당연히 유한 수렴이겠지만, 무한하다 하더라도 얘는 발산하지 못한다고.. 구체적인 값은 모르겠지만 추세가 그렇게 된다는 큰 그림만 증명을 한 것이다. 어떻게 증명했는지는 나한테 묻지 마시길.

(4) 가우스, 오일러 등 인류 역사상 수많은 괴수 천재 수학자들이 초월적인 업적을 남기고 갔지만, 어떤 형태로든 소수 생성 규칙을 표방하는 모든 예측· 추측은 지금까지 하나도 완벽하게 적중한 게 없었다. 저 페르마의 추측처럼 말이다.
소수를 생성하는 규칙을 무슨 정보 검색이나 패턴 매칭에다가 비유해서 설명하자면, 정밀도와 재현율(precision & recall) 어느 것 하나라도 확실하게 잡는 규칙이 지금까지 발견된 적이 없다는 것이다. 정밀도가 100%라면 모든 소수를 커버하지는 못해도 일단 이 규칙이 생성하는 수는 다 소수임이 보장되는 것이고, 재현율이 100%라면 종종 소수가 아닌 놈(false alarm)이 섞여 있더라도 소수는 하나도 빠짐없이 커버한다는 뜻이다.

(5) partition number라는 게 있다. f(2)라면 1+1, 2 이렇게 2가지, f(3)이라면 1+1+1, 2+1, 3 이렇게 3가지, f(4)라면 1 1 1 1, 2 1 1, 2 2, 3 1, 4 이렇게 5... 뭔가 테트리스 조합처럼 올라가는데, 이 수열이 2 3 5 7 11 (15 22...) 이렇게 앞부분은 소수와 굉장히 비슷한 양상으로 시작한다. 무슨 파이의 그럴싸한 근사값을 보는 듯한 느낌이나, 얘는 실제로는 소수와는 수학적으로 아무런 관련이 없는 놈이다.

n에 대해서 f(n)의 값을 구하는 건 다이나믹 프로그래밍으로 해결 가능하다. 피보나치 수열 구하는 것보다는 어렵고 꽤 재미있는 프로그래밍 excercise이므로 관심 있으신 분은 도전해도 좋다. 참고로 점화식 함수 내지 테이블은 보기와는 달리 1변수로는 안 되고 2변수 형태로 짜야 한다.

Posted by 사무엘

2016/11/30 08:31 2016/11/30 08:31
, , , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1300

오늘은 미풍양속에 어긋나는 다소 민망한 주제 이야기를 이것저것 나열하고자 한다. 작년과 재작년에도 이 주제와 관련된 글을 1년에 하나씩은 쓴 적이 있었는데.. 관심 있으신 분은 '투신'이라는 키워드로 검색을 해 보면 나온다.

1.
2012년과 2013년에는 아파트에서 투신 자살하는 사람에게 다른 사람이 깔려 죽는 사고가 한 건씩 있었다. 물론 피해자만 죽은 건 아니고 가해자도 나란히 사망. 자동차 위에라도 떨어졌으면 보통은 살던데 겨우 사람은 자신이 충격을 받고 깔렸다고 해서 투신 자살 가해자를 살릴 정도로 실드 역할을 하지는 못한다.

그런데 동일한 패턴의 사고가 그로부터 3년쯤 뒤인 2016년에 또 반복됐다.
5월 31일 저녁, 광주 북구 오치동에서는 퇴근한 남편, 부인, 6살짜리 아들 이렇게 일가족이 아파트 단지 입구로 들어가는 중이었는데, 처지를 비관하여 동일 아파트의 20층에서 뛰어내린 한 20대 청년이 세 명 중 가장인 남편을 덮쳤다.
뉴스 보도에 따르면 뛰어내린 그 사람은 현장에서 즉사했고, 깔린 40대 남성은 치명상을 입고 급히 병원으로 옮겨졌지만 약 3시간 만에 숨졌다고 한다.

누군가가 투신 자살한 것은 '사건'이지만, 투신 자살자에게 다른 사람이 깔려 죽은 건 '사고'이다.
안타까운 음주· 졸음운전 교통사고가 해마다 반복되는 것처럼, 이런 사고도 교통사고만치 잦지는 않지만 어째 이렇게 반복되나 모르겠다.

가해자는 공시를 준비 중인 공무원 지망생이었다고 한다. 허나, 잘 알다시피 살인적인 경쟁률을 자랑하는 그 시험에서 호락호락 좋은 결과가 나올 리는 없었을 것이고, 이 때문에 열등감, 무력감, 비관의식 등에 사로잡혀 극단적인 선택을 했으리라 여겨진다. 자살 말고 다른 극단적인 선택을 한 어떤 사람은 아예 정부 청사에 침입해 들어가서 어설프게 성적을 조작하려 하기도 했다. 어느 경우든 다 멘탈이 정상적인 상태는 아니다.

그런데 저 사람의 경우, 자기가 죽으면서 결과적으로는 자신의 워너비에 속하는 다른 '공무원'을 같이 죽게 했으니 이 아이러니를 말로 어찌 표현해야 할지 모르겠다. 그 가장은 전남 소재의 어느 도청에서 근무하는 공무원이었기 때문이다(집은 광주). 부인 되시는 분은 그냥 남편도 아니고 최고로 안정적인 직장에 다니던 남편을 하루아침에 잃은 충격과 대미지가 차마 감당 가능한 수준이 아니었을 것이다. 게다가 둘째 아이를 임신까지 한 상태였는데! 그 자살자 때문에 저 가정도 완전히 파탄 나고 말았다.

2.
이제 좀 옛날 이야기를 하겠다.
우리나라는 해방 후 아직 어수선한 미군정 시절이던 1947년 5월 1일, 에블린 맥헤일(Evelyn McHale)이라는 20대 초반의 아가씨가 여느 아파트도 아니고 엠파이어 스테이트 빌딩의 전망대에 올라가서 무려 86층, 거의 300m에 달하는 높이에서 뛰어내렸다. 1940년대 당시엔 그 건물이 세계에서 가장 높은 건물이었다.

이 사람은 무슨 모델이나 연예인, 유명인사도 아니고, 정말 평범하게 월급쟁이 직장인 생활을 하다가 평범하게 남친 사귀고 약혼까지 하고.. 정황상 자살할 만한 이유가 전혀 없던 사람이었다. 머릿속으로 도대체 무슨 생각을 하고 있었는지.. 단지, 약간 성깔 부리는 완벽주의자 성향은 좀 있었던 것 같으며, 유서를 보면 그런 기질이 더욱 느껴진다. (☞ 이 사건에 대한 더 자세한 정황 설명)

그녀는 운명의 그 날엔 별안간 집을 나와서 "남친에게서 결혼 프러포즈를 받았지만 난 좋은 아내가 될 자신이 없다. 난 어떤 남자에게도 좋은 아내가 못 될 것 같다. 그이는 내가 없으면 더 잘 살 것이다. 나는 가족· 타인을 불문하고 아무에게도 내 모습, 내 존재를 더는 노출하고 싶지 않다. 내가 죽더라도 제발 장례식 같은 거 치르지 말고 시신을 화장해서 완전히 없애 달라" 라는 요지의 꽤 염세적인 논조의 유서를 썼다. 그러고 나서 그 높은 곳에서 아래로 뛰어내렸다.

건물 아래는 사람과 차들로 가득한 뉴욕 시내 한복판이었다. 그녀는 사람이 아닌 어느 리무진 승용차 위에 떨어졌다. 워낙 높은 곳에서 떨어지는 바람에 자동차는 굉음을 내며 박살이 났지만, 차가 그렇게 충격을 받아 주고도 그녀는 목숨을 부지하지 못하고 현장에서 즉사함으로써 생을 마감했다.

단, 자신의 존재를 세상에서 완전히 지우고 없애고 싶었던 그녀의 바람은 전혀 이뤄지지 못했다. 오히려 나 같은 사람조차 인터넷 검색을 통해 알 정도인 유명한 사람이 되고 말았다.
그 이유는 떨어진 직후의 모습 때문이다. 시신은 마치 "잠자는 숲속의 미녀"처럼 300m 미터 높이에서 투신 자살한 사람이라고는 도저히 믿을 수 없을 정도로 양호하고 평온했다.

마침 현장 근처를 지나던 어느 사진학도가 굉음을 듣고 투신 지점으로 달려왔는데.. 이거 보통 모습이 아님을 직감하고 현장 보존 상태에서 사진을 남겼다. 이건 인위로 연출한 장면이 아니며.. 섬뜩하지만 "세상에서 가장 아름다운 자살"이라는 타이틀이 붙었다.

에블린 맥헤일의 투신 모습 보기

비록 겉으로는 저렇게 평온해 보여도 신체 내부는 다발성 골절, 장기부전, 폐출혈 등으로 다 망가졌을 것이다.
아무리 자동차가 충격을 흡수해 주고 공기 저항까지 있었다 하더라도, 기본적으로 수십 kg에 달하는 '인간'이 낙하산도 없이 워낙 높은 곳에서 떨어졌으니..

하물며 그냥 콘크리트 바닥에 떨어졌다면 300미터보다 훨씬 더 낮은 곳에서 투신해도 시신은 절대로 온전히 남아나지 못한다. 피 튀고 뼈 꺾이고 심하면 머리가 깨져서 뇌수가 새어나오기도 한다. 즉사할 정도의 높이에서 떨어졌다면 그 어떤 자세로 떨어지더라도 결국은 머리에까지 어떤 형태로든 충격이 전해지기 때문이다.
아무렇게나 아파트에서 뛰어내리는 사람은 절대로 저런 우아한 자세로 죽지 못하며, 시신 수습하고 청소하는 사람들한테 큰 민폐만 끼친다는 걸 명심해야 할 것이다.

또한, 에블린은 무슨 실연을 비관해서 자살한 게 절대 아니니 오해 없기 바란다. 오히려 멀쩡히 약혼/청혼까지 다 성사된 상태에서 자살했기 때문에 결과적으로는 자기가 반대로 남친에게 큰 충격과 상처를 남긴 꼴이 됐다. 그녀는 몇 개월 안으로 임박한 결혼이 자기 인생을 완전히 얽어매고 속박한다고 생각한 것 같다. 죽기 직전까지는 아무것도 튀는 게 없는 삶을 살았는데 도대체 머릿속으로 무슨 생각을 하고 있었는지 알 수 없는 노릇이다.

이 사건 이후로 엠파이어 스테이트 빌딩의 전망대에는 자살 방지를 위해 쇠로 얽히고 섥힌 난간이 설치되었다.

3-1.
공교롭게도 에블린 맥헤일 이전에도 죽은 모습이 칭송의 대상이 된 여인이 또 더 있었다.
1880년대 말, 프랑스 센(Seine) 강에서 어떤 소녀가 익사한 채로 발견되었다. 그런데 옛날이어서 그녀가 어디에 사는 누구인지 신원이 전혀 밝혀지지 않았다고 함. 외관상의 상처는 전혀 없었기 때문에 실족사가 아니면 자살로밖에 볼 수 없었다.

그런데 죽은 것치고는 얼굴이 아름답고 표정도 굉장히 평온하고 순수하고 행복해 보였던지라 이 시신을 검시한 어떤 사람은 즉시 데스마스크를 만들어 시신의 형상을 남겼다. 예술가들도 감탄했을 정도라고 한다. 저 소녀는 자기가 죽고 나서 몸이 저렇게 칭송받고 데스마스크가 만들어질 걸 과연 예상했을까 싶다.

L'Inconnue de la Seine

3-2.
한편, 에블린 맥헤일은 같은 미국에서 의문의 참혹한 죽음을 당한 엘리자베스 쇼트(Elizabeth Short), 일명 '블랙 달리아'라는 아가씨와 거의 동갑내기이다. 둘 다 1923~1924년생이고, 엘리자베스의 시신이 발견된 때는 1947년 1월 15일로 같은 1947년이다.

저 사람은 본격적인 할리우드 배우 지망생이었다. 시신이 발견되기 약 1주일 전부터 연락이 두절된 실종 상태였는데 이때 어디서 누구에게 무슨 일을 당했는지 알 길이 없다고. 하지만 이 사람이 옷이 다 벗겨지고 전신 피멍에 허리가 두 동강 나고 혈액과 장기 적출로도 모자라 입이 양쪽으로 귀까지 찢어진 정말 끔찍하고 처참한 모습으로 발견되어야만 할 정도로.. 누군가에게 원한을 살 정황은 전혀 없었다. 금전 쪽으로든 치정 쪽으로든. 사람 입이 찢겼다는 얘기는 "나는 공산당이 싫어요" 이 승복 이후로 처음 듣는다.. ㄷㄷㄷㄷㄷ

범행 용의자는 영국의 잭 더 리퍼처럼 신체 해부와 외과 수술에도 식견이 있는 어느 싸이코패스일 거라고밖에 볼 수 없는데 이건 결국 영구미제 사건으로 남았다. 21세기도 아니고 1940년대에 워낙 엽기적인 사건이다 보니, 오히려 자기가 블랙 달리아를 죽인 범인이라고 뜬금없는 거짓 자수를 한 관심병 미친놈들만 몇십 명이나 나와서 수사에 혼선을 끼쳤다고 한다. 고문이나 강압 수사도 없었는데 웬 허위 자백이냐..;;

4.
투신 자살과 관련하여 마지막으로 떠오르는 사례는 일본의 '오카다 유키코'(1967-1986)이다.
검색을 통해 사진과 프로필을 보면.. 예쁘고 공부도 잘하고 다 잘하는 엄친아 연예인 지망생 그 자체. 데뷔 후엔 실제로 인기가 아주 좋아서 1980년대 중반을 풍미한 일본 아이돌계의 떠오르는 샛별 소리를 들었다.

그런데 보아하니 이 아가씨도 너무 완벽주의자였던 것 같다. 그야말로 살인적인 스케줄 강행군을 소화하면서 연예인 활동을 했는데.. 치정 스캔들 때문인지, 악성 루머 때문인지, 소속사와의 불화 때문인지, 자기 자신에게 만족하지 못하고 인생에 회의를 느꼈는지, 아무튼 하나로 딱 떨어지는 원인이나 정황 없이 그녀는 1986년 4월 8일, 별안간 소속사 건물의 창문 밖으로 뛰어내림으로써 생을 마감했다. 아, 당일엔 투신 자살에 앞서 가스를 피워서 자살을 시도하다가 저지당하기도 했다.

오카다 유키코는 배를 땅으로 향하는 자세로 콘크리트 바닥에 쓰러졌다. 그리고 고인에게는 참 안타까운 일이지만 죽은 모습이 미국의 에블린 맥헤일의 경우와는 달리, 저질 옐로우 저널리즘의 먹잇감으로 전락해 버렸다. 일본의 찌라시들은 겨우 고삐리 연예인이 죽은 모습을 바닥에 튄 핏자국까지 그대로 모자이크 처리 하나 없이 사진으로 찍고 내보냈기 때문이다. (겉으로 욕하면서도 결국은 다 사서 보거든 ㄲㄲㄲㄲㄲ)

이런 선정적인 보도 때문인지, 이 아이돌의 자살로 인해 당시 일본 내부에서는 그야말로 수십~수백 명에 달하는 팬들이 같이 자살했다고 하니 더욱 섬뜩하지 않을 수 없다. 한번 유명해지고 나면 자기 혼자 곱게 세상에서 뿅 없어지는 것조차도 자기 마음대로 안 된다. 그러니 정말 입과 몸을 사리면서 행동해야 할 것 같다. 자살 이것도 정말 어지간한 멘탈로 가능한 게 아닐 텐데..! ㅠㅠ

* 아 진짜 마지막으로 하나만 더..
별도의 번호까지 또 할당해서 소개하기는 좀 뭣하다만.. 2011년에 우리나라에서는 어떤 40대 여성이 25층에서 투신 자살했는데 하필..;; 맨홀 뚜껑을 정확하게 강타하고 그 구멍 아래로 떨어져 숨지기도 했다. 다른 인명이나 차량 피해가 없는 것은 다행스러운 점이다만, 이건 뭐 멀쩡히 길거리를 가던 행인이 땅이 쑥 꺼지고 맨홀로 빠진 것만큼이나 황당한 소식이다.

Posted by 사무엘

2016/11/27 08:34 2016/11/27 08:34
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1299

등산 답사기: 예봉산, 삼성산

1. 예봉산

북한산 백운대 다음으로 본인이 찾아간 산은 남양주에 있는 예봉산이었다. 언젠가 한번 방문하려고 오래 전부터 점찍어 둔 산이었다.
예봉산은 한강을 사이에 두고 검단산을 마주보고 있으며, 해발 683m로 검단산과 비슷한 높이이다(검단산보다 약~간 더 높음). 그리고 예봉산은 주변에 예빈산, 운길산, 적갑산 같은 봉우리들이 있어서 산맥을 구성하고 있다.

지금으로부터 반 년쯤 전에 검단산을 올랐을 때는 뿌연 안개 때문에 아래를 전혀 내려다보지 못했다. 한강이고 뭐고 하나도 안 보였다. 그래서 다음에는 강 건너편의 예봉· 예빈산 일대를 올라서 거기서 경치 구경을 다시 하려고 마음먹었으나.. 사실 이번에도 너무 이른 아침에 올라서 그런지 경치가 막 선명하게 잘 보이지는 않았다. 뭐, 그래도 한강을 내려다보겠다는 목표 자체는 그럭저럭 성취했다.

예봉산까지 무슨 교통편을 이용해서 갈지가 문제였다. 일단 산이 경의중앙선 팔당 역과 가까이 있긴 하다. 하지만 완전 가까운 건 아니고 몇백 m를 지나서 굴다리 밑으로 지난 뒤, 또 몇백 m를 걸어 올라가서 각종 마을과 유원지를 지나야 등산로 입구가 나온다. 직선거리가 아닌 실제 이동 거리는 그리 가까워 보이지 않았다. 더구나 등산로 근처까지 마을버스가 다니는 것 같지도 않았다. 그 대신 로드뷰를 통해 등산로 입구 근처에 차를 세울 만한 넓은 공터가 있다는 걸 확인했다.

이 점을 감안하여 본인은 여기는 차를 가져가기로 마음먹었다. 차를 가져가면 알다시피 산을 편도 횡단을 할 수 없어지고 이동 경로에 큰 제약이 걸린다(차가 있는 곳으로 반드시 되돌아와야 하므로). 그걸 감수하고도 이렇게 결정을 내렸다.

서울 동부에서 저기로 가려다 보니 지난번 검단산에 갈 때처럼 하남 시내를 저절로 거쳐 가게 됐는데.. 팔당대교 진입로는 뭔지는 몰라도 굉장히 배배 꼬여 있었다. 그냥 직진만 하면 될 것 같은데 오른쪽으로 꺾었다가 P턴을 하고 뭔가 굉장히 골치아프게 돼 있었다. 그리고 양평으로 가는 국도 6호선(경강로)과, 팔당 역 경유 남양주로 가는 길(팔당로)은 같이 나란히 지나는 듯해도 서로 왕래가 불가능했다. 팔당대교에 있을 때부터 어느 길로 들어갈지를 결정하고서 빠져나가야 했다.

요컨대 팔당대교는 진입과 진출이 모두 좀 이상한 구조였다. =_=;; 뭔가 이렇게 된 사연이 있는 것 같다.
뭐 아무튼 현장에 도착은 잘 했고..

사용자 삽입 이미지

여기가 인터넷을 통해 미리 봐 놓은 공터이다. 본인은 등산 전날 밤에 정확하게 이곳에 미리 도착해서 차를 세워 놓고 캠핑을 했다.

밤이 되니 밖은 기온이 거의 10도 무렵까지 뚝 떨어졌다. 또한 주변은 가로등 포함 불빛이라고는 하나도 없고 칠흑같이 어두컴컴했다.
그에 반해 차 안은 따뜻하고 아늑하기 그지없었다. 자동차 덕분에 이런 오지에서도 안전하고 편안하게 외박을 한다는 게 참 놀랍고 신기한 일이 아닐 수 없다.

물론 차 안도 온기가 언제까지나 유지되지는 못하기 때문에 드디어 싸늘해지고 한기가 느껴지기 시작했다. 이때부터는 미리 준비해 간 담요를 뒤집어쓰기만 하면 됐다. 이튿날 아침이 되니 온도차 때문인지 차의 창문들은 온통 성에가 껴 있었다. 밖에서 차 안을 들여다볼 수 없는 은폐 효과까지 덤으로 달성됐구나.

아침 7시 무렵, 해가 뜨자마자 본인은 곧장 산을 올랐다. 정상까지 갔다가 차를 세워 둔 이 마을로 돌아오긴 하되, 그래도 갈 때와 올 때의 경로 자체는 다르게 경로를 구상했다.

사용자 삽입 이미지

예봉산은 직전에 갔던 북한산에 비하면 정~말로 특징 없는 마이너한 산이었다.
계곡이나 암반 같은 자연 분야로나, 보안 시설이나 묘지나 역사 유적 같은 인간 분야로나.. 특이사항이라고는 정말 아무것도 없었다.
등산로 자체는 그럭저럭 닦여 있지만 계단이나 안내 표지판, 벤치, 난간 같은 것도 거의 찾을 수 없었다. 보다시피 인제 여기에 난간 하나 설치하는 공사가 진행 중이었다.

전망대도 없어서 정상에 도달하기 전까지는 한강 경치고 나발이고 뭐 없었다. 그냥 비탈길 따라 끝없이 올라가고 내려가는 게 전부였다. 손이 필요한 구간이 있는 것도 아니고 다리 트레킹만으로 충분하다. 이 정도 높이와 규모의 산이 이 정도로 밋밋하기도 쉽지 않을 텐데.

이렇게 마이너하고 한적하고 덜 유명하니까 검단산보다도 훨씬 한산하고 주차 걱정도 없는 거라는 생각이 들었다. 국립공원인 북한산이었으면 저렇게 공터에 아무렇게나 차 달랑 세우는 건 상상도 할 수 없을 것이다. 당연히 유료 주차장에다 차를 대야 했겠지.

사용자 삽입 이미지

약 80분 동안 낑낑댄 끝에 정상에는 별 문제 없이 도달했다. 주변엔 아무도 없는 관계로 타이머를 이용해 이렇게 내 모습을 남겼다.
아 그러고 보니 맥북을 챙기는 걸 깜빡했다. =_=;;

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

하산은 팔당 역 쪽으로 가긴 하지만 그래도 올라왔던 길과는 다른 방향으로 했다. 인제 슬슬 산 정상으로 올라오는 등산객들이 보이기 시작했다. 여기는 그래도 계단이 쭉 깔려 있고 중간에 한강 방면의 전망대도 딱 한 군데 있어서 등산로 같다는 느낌이 들었다.

강 건너편의 저 높은 산이 바로 검단산이다. 또한, 팔당대교와 희고 길쭉한 팔당 역도 선명히 보인다. 나머지 울창한 숲과 나무, 등산로 계단 장면은 그렇게 특별한 게 없으므로 첨부를 생략하겠다.

하산하면서 좀 걱정은 했다만, 마을 어귀에 있는 팔당2리 마을회관까지 내려왔다가 다시 차를 세워 놓은 쪽으로 몇백 m를 걸어서 차에 무사히 잘 도달했다. 차는 4시간 가까이 주인을 기다리며 잘 세워져 있었다.

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

돌아오는 길엔 팔당 역의 바로 옆에 있는 남양주 역사 박물관을 구경했다. 남양주에 무슨 특별한 역사 유물이 있는지 잘은 모르겠지만 산대놀이, 묘비 글씨 탁본, 기와 무늬, 바느질 무늬 같은 것들이 전시돼 있었다.

아침 시간이 되니 역 주변에는 등산객과 자전거족들이 많이 서성이는 게 보였다. 이렇게 등산을 마치고 집으로 돌아왔다.

2. 삼성산

2016년 한 해 동안 서울 근교에 있는 어지간히 높은 산들은 다 오른 듯하다. 점찍어 둔 산이 두어 곳 정도 더 남았는데, 지금까지 관악산 일대의 서울 남서부를 못 간 상태였다.
관악산 자체는 예전에도 몇 번 간 적이 있기 때문에 예봉산의 다음으로는 더 서쪽에 있는 '삼성산'을 선택했다.

차를 가져가지 않고 전철을 1시간을 훌쩍 넘게 타서 안양까지 이동했다. 서울 방면은 전철역에서 버스를 타고 한참을 남쪽으로 또 가야 산에 접근 가능한 반면, 안양 방면은 전철역 + 국도 1호선 대로변에서 비교적 가까이에 등산로가 시작되는 곳이 있었기 때문이다.
그럴싸한 산 입구나 한적한 시골 마을이 아니라 그냥 큰길에서 등산을 시작했다는 점에서는 예전에 성남 남동부의 불곡산을 올랐을 때와 비슷하다. 본인은 관악 역에서 내려서 등산을 시작했다.

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

등산로는 이렇게 흙길과 바위가 적절히 어우러져 있었다. 그리고 나무로 덮여서 하늘이 잘 안 보이는 곳과, 하늘이 뻥 뚫려 보이는 곳도 종종 교차되는 편이었다. 이 산에서 하늘이 중요한 이유는..

사용자 삽입 이미지

관악산 일대는 비행 항로이기 때문이다. 비행기들이 하늘 위로 정말 많이 지나갔다. 이것까지 이미 다 예측하고 비행기 사진을 찍을 준비를 하고 갔다.
비행기를 관찰하려면 엔진 소리가 나는 바로 그쪽을 봐서는 안 됨. 소리 근원지보다 소리의 진행 방향으로 한 발 더 나아간 쪽을 봐야 한다는 게 무척 신기했다. 그 이유는 두 말할 나위 없이 소리가 여기까지 전해지는 데 딜레이가 있으며, 그 동안에도 비행기는 앞으로 더 나아가기 때문이다. 굳이 비행기 자체가 초음속기가 아니더라도 말이다.

사용자 삽입 이미지

산을 어느 정도 오르자 드디어 탁 트인 landscape가 보이기 시작했다. 이거 보는 게 등산의 묘미다.
주변 경치가 전반적으로 이러했다. 여기저기 봉우리가 솟아 있고, 푸른 풀숲에 부분적으로 황금빛 단풍이 물든 게 색깔 배합이 내가 보기엔 경이로움이 느껴질 정도로, "정말 아름다웠다." 직접 봐야 알 수 있다.
게다가 이 날은 등산 가기도 아주 좋은 날씨였다. 직사광선 없이 흐리고 시원한 바람이 계속 불었다. 이런 날 등산 같은 활동을 안 하는 건 자연에 대한 예의가 아닐 것 같을 지경이었다.

아, 위의 사진의 중앙 우측에 있는 건물들은 안양 예술 공원이라는 유원지이다. 내가 나중에 저쪽으로 하산을 하게 됐다.

사용자 삽입 이미지

짠~ 이 사진은 호락호락 쉽게 찍은 사진이 아니다.
평평하지 않고 울퉁불퉁한 바위에다 카메라를 최대한 바른 구도로 놓은 뒤, 타이머 셔터를 눌러 놓고 허겁지겁 저 포즈를 취해서 혼자 찍은 것이기 때문이다. 저 땐 바람도 꽤 세게 불고 있었기 때문에 자칫 잘못하면 카메라가 균형을 잃고 바위 아래로 굴러떨어질 수도 있었다. 아무래도 삼각대가 필요한 듯.
그래서 그런지 내가 그렇게 밝은 표정으로 찍히지는 못했다. ^^

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

경인 교육 대학교가 내려다보였고, 저 멀리 KTX 광명 역도 보였다~! 등산 가서 고속철 철도역을 볼 줄이야.. 땡잡았다.
역 주위로도 온통 고층 아파트가 지어지는 중이다.

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

요것들은 국내 인터넷 지도로 정체를 확인할 수 없는 물건일 것이다. 저 거대한 둥근 원판은 군사 시설이기라도 한지 뭔지 잘 모르겠다.
그리고 서울 강남 서남부에 무슨 성곽이 있을 리는 만무한데 저 봉우리는 왜 철책이 둘러져서 반토막이 나 있는 걸까? 저기는 산의 과반이 예비군 훈련장 등 군사 시설로 싹 봉인돼 있는 박달산이지 싶다.

사용자 삽입 이미지

삼성산의 사실상의 정상이라 일컬어지는 국기봉에 잘 도달했다. 이름에 걸맞게 태극기가 펄럭이고 있었다.

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

국기봉 정상 근처에서는 삼막사라는 절이 내려다 보였으며, 여기에서 몇백 m 정도 떨어진 곳엔 삼성산의 실제 정상이 보였다. 실제 정상에는 건물과 철탑이 있으며, 아무래도 일반인에게 개방된 것 같지는 않았다.
저기가 국기봉보다 약간 더 높긴 하지만 그래도 몇 미터 차이에 불과하다.

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

정상에 도달한 뒤 내 의도는 북서쪽으로 진행해서 호암산 쪽으로 하산하는 것이었다. 안양 방면과 관악산 방면을 모두 등지고 하산하려 했으나.. 산에 실제로 있어 보면 방향 감각을 거의 유지할 수 없더라..;; 결국은 삼성산과 관악산 사이의 계곡으로 들어섰고 서울대 수목원과 안양 유원지(예술 공원)로 착지하게 됐다. 삼성산의 서울 방향에 무슨 천주교 묘지 공원도 있다고 들었으나 그런 건 전혀 구경 못 했다.

여기도 경치가 아주 아름다워서 온 보람은 있었다. 단지 하산 후에도 버스 정류장까지 엄청난 거리를 걸어야 했을 뿐.;;
흐음 어쩌다 보니 삼성산 사진이 예봉산 사진보다 훨씬 많아져 버렸다. 높이는 예봉산이 더 높은데 아무래도 삼성산이 특이사항이 더 많아서 말이다.

Posted by 사무엘

2016/11/24 08:38 2016/11/24 08:38
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1298

1.
잘 알다시피 C언어는 원래 '이식성 있는 어셈블리'를 표방할 정도로 고수준 언어의 탈을 쓴 뭐랄까.. 안에서 돌아가는 모든 내부 과정이 있는 그대로 투명하게 노출되고, 프로그램이 메모리 내부에서 다루는 모든 물건들은 비트와 바이트 단위로 접근 가능한 식으로.. 모든 것을 프로그래머 재량에 맡기는 가볍고 이상야릇한 언어라는 성격이 강했다.

그래서 static/global을 제외하면 변수값의 초기화도 몽땅 수동으로 해야 하고, 배열 첨자 체크가 없고 심지어 문자열 타입도 없고.. 뭐 그랬다.
그 대신 공용체와 비트필드 같은 변태스러운 물건은.. C 말고 도대체 다른 어떤 언어에서 찾을 수 있겠는가? 단적인 예로, 부동소수점을 부호, 지수, 가수부별로 쪼개서 내부 구조가 어떻게 돌아가는지 보여주는 프로그램을 C 말고 다른 언어로 만드는 건 직관적이지 못하고 꽤 귀찮은 일이 될 것이다.

내가 직접 코드를 작성하지 않았는데 C가 언어 차원에서 자동으로 해 주는 일이라고는 환경변수 세팅이라든가 main 함수에 전달되는 argument의 파싱 같은 정말 최소한의 초기화밖에 없다시피했다.

하지만 C++은 언어 차원에서 몰래 하는 일이 더 있다. 우리가 빌드하는 프로그램에 코드가 추가되기 때문에 그 존재감과 오버헤드에 대해서 최소한의 인지는 하고 있어야 하는 것들이 종종 있다.
생성자와 소멸자, 임시 R-value 오브젝트, 암시적인 형변환 같은 건 그야말로 기본 중의 기본이고.. 가상 함수가 호출되는 원리도 아주 흔한 예다. C로 표현하자면 pData->vptr->pfnFuncXXX(pData, ...) 과 같은 급의 다단계 포인터 참조 오버헤드가 발생한다. 이런 건 C++ 한다는 사람이 아무리 초짜라도 절대로 몰라서는 안 된다.

가상 상속 정도면 가상 함수보다는 훨씬 볼 일이 없는 물건이다. 컴파일 타임 때 미리 계산된 오프셋으로 기반 클래스를 참조하는 게 아니라 기반 클래스의 위치 자체를 포인터를 통해 런타임 때 얻어 온다고 생각하면 된다.

더 어려운 걸로 내려가자면 pointer-to-member가 구현된 원리가 있는데, 이것도 forward 선언된 클래스 + 다중 상속이라는 변수를 만나면 내부 구현이 더럽게 복잡해지며 컴파일러간의 바이너리 호환성도 깨진다. C++에서 한번 홍역을 치른 뒤에 다른 언어에서는 별로 도입할 생각을 안 하고 있다.

global scope에 속한 객체들이 생성자와 소멸자가 호출되는 타이밍, 순서와 원리도 알아두면 좋다. 이식성을 위해서는 global 객체를 만들지 말고, 번거롭지만 차라리 포인터만 만들어 놓고 new와 delete를 프로그램이 수동으로 하는 게 권장되고 있다.

Exception이라는 것도 아주 요상한 물건이고...
끝으로, 언어 차원에서 지원되기 시작한 RTTI(런타임 시점에서의 타입 정보 인식) 기능도 있다. 하지만 이건 제대로 쓰이지는 않는 것 같다. dynamic_cast, typeid 같은 연산자 말이다. 가상 함수가 존재하는 모든 클래스들에는 자동으로 언어 차원에서의 타입 식별 정보가 추가된다.

얘는 구현 오버헤드가 만만찮으며, 언어의 기능에 의존하지 않고 자체적으로 RTTI를 구현한 레거시 코드도 많기 때문에 결국 컴파일러 옵션이 지정되었을 때만 지원되는 기능이 되었다. Visual C++의 경우 /GR 옵션이다.
개발 역사가 오래 됐고 다중 플랫폼을 지원하는 어지간한 프로젝트들은 이 기능을 사용하지 않는다. 마치 문자열 클래스만큼이나 파편화와 중복 구현이 난립해 있다.
사실, RTTI가 제대로 지원되려면 가상 함수가 존재하는 모든 오브젝트들이 공통으로 상속하는 베이스 클래스라는 개념도 있어서 그 베이스 클래스에서 타입 식별과 관련된 멤버들을 제공해야 하지 않나 싶다.

C++은 언어 차원에서의 개입을 최소화한다는 철학을 가진 언어에서 출발했는데 점점 기능이 비대해지고 언어 차원에서의 개입이 늘고 있다.

2.
포인터는 CPU가 메모리 위치를 식별할 때 사용하는 숫자로, 일반적으로는 machine word와 다를 바 없는 아주 가볍고(= 함수 인자로 값을 그대로 넘겨줄 수 있는) 단순한 자료형이다.
여느 자료형의 포인터는 정수와 reinterpret_cast로 형변환이 가능하다. 함수의 포인터는 + - 산술 연산이 되지 않지만 그래도 역시 정수와 교환이 된다.

하지만 포인터가 machine word 하나와 딱 대응하지 않을 때도 있다.
과거 16비트 시절에는 64KB보다 더 큰 영역의 메모리에 접근하기 위해 세그먼트 번호를 추가로 묶은 far pointer라는 게 있었으며 far은 예약어였다. 뭐 그래 봤자 이 포인터는 32비트 long 정수 하나에 대응했으니, Windows 프로그래밍에서는 L이라는 접두어로 원거리 포인터를 표현했다. LPSTR, LPVOID, LPCWSTR 등.

32/64비트로 오면서 그런 구분이 없어졌기 때문에 접두어 L은 불필요한 잉여가 되었다. 본인 역시 PSTR, PVOID, PCWSTR이라고만 쓴다.
단, PVOID는 winnt.h에 typedef로 정의돼 있는데 const void *는 왜 PCVOID라고 정의돼 있지 않고 여전히 LPCVOID만 있는지는 본인이 알 길이 없다. 믿어지지 않으면 한번 검색해 보시기 바란다. 정말 없다.

그리고 다음으로 machine word 하나와 딱 대응하지 않는 대표적인 기괴한 포인터는 아까도 잠깐 언급됐던 C++의 멤버 포인터이다. 다중 상속은 포인터간의 형변환이 일어났을 때 단순 언어적인 semantic뿐만 아니라 주소값 자체가 바뀔 수도 있는 상황을 만들었으며, pointer-to-member는 이를 보정하는 정보를 담느라 크기가 언제나 machine word 하나에 딱 들어가는 게 보장되지 않게 만들었다.

그래서 멤버 포인터는 신기하게도 reinterpret_cast나 C-style 캐스트로도 결코 숫자로 형변환이 되지 않는다. 숫자 하나가 아니라 구조체 같은 완전 생뚱맞은 자료형으로 취급된다. 크기와 내부 구현이 어떻게 가변적으로 달라질지 모르기 때문에 이것만은 C의 철학과는 정반대로 내부 구현과 접근을 프로그래머로부터 싹 감추고 숨겨 버렸다. 이거 굉장한 이질감이 느껴지지 않으신가?

자주 발생하는 일은 아니지만 구조체에서 어떤 멤버가 구조체의 시작 지점으로부터 정확하게 몇 바이트째 오프셋에 있는지 알고 싶을 때가 있다. 당연한 말이지만 이건 컴파일 타임 때 값이 결정되는 상수이다.
이럴 때 흔히 사용하는 방법은 &((STRUCTURE *)0)->member이다. 이렇게 해도 동작은 잘 하지만 그래도 더 깔끔한 방법이 있었으면 좋겠다는 생각이 든다.

개인적으로는 &STRUCTURE::member가 제일 직관적이고 깔끔한 형태라고 생각한다. 이건 pointer-to-member에 대입 가능한 멤버 주소를 얻을 때 사용하는 문법이다.
member가 static 데이터 멤버라면 저 값은 그놈 자신의 주소가 될 것이고, non-static이라면 메모리 주소가 아니라 자신의 오프셋이 된다. 비록 pointer-to-member(데이터 멤버)가 단순 오프셋의 superset으로서 그 이상의 추상적인 자료형이긴 하지만, 결국은 내부적으로도 오프셋을 갖고 있는 꼴이기 때문에 int형으로 reinterpret_cast도 됐으면 하는 생각이 든다. &((STRUCTURE *)0)->member을 안 써도 되게 말이다.

요즘 C++이 캡처가 없는 람다에 한해서 람다를 함수 포인터로 캐스트하는 것도 지원하듯이, 저것도 같은 맥락에서 정수형과 호환됐으면 하는 아쉬움이 남는다.

Posted by 사무엘

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

아폴로 계획과 달 탐사 이야기

* 옛날 2012년에 썼던 글을 리메이크 한 것이다. 월면차와 도킹 관련 내용을 새로 추가했다.

1. 인간이 달에 가기까지

콩코드 여객기가 날아다니고 인간이 달에 갔다 오던 1970년대는 그야말로 항공 우주덕을 꿈꾸는 과학도가 많이도 생겼을 것 같은 시기이다. 이제 조금만 더 있으면 인간이 달뿐만이 아니라 화성도 정복하고 우주 식민지를 개척할 것 같은 희망에 부풀지 않았었을까 싶다. 비록 내가 태어나기도 전이지만 본인은 이 시절을 어느 정도 동경까지 하고 있다.

아시아 최초의 우주인인 일본의 모리 마모루 박사는 그 당시에 만화영화 아톰을 보면서 과학자의 길을 꿈꾸었으며, 세계적인 우주론 전문가로 손꼽히는 천문학자인 연세대 이 영욱 교수도 어렸을 때 비슷한 체험을 하고 아폴로 계획의 성과에 감화도 받으면서 이 분야의 진로를 선택했다.

이 교수는 “초등학교 2학년 때 아폴로 11호가 달에 착륙하는 것을 봤다. 그 뒤 천문과 우주에 빠져 매일 하늘을 바라보게 됐다”면서 “초등학교 5학년 때는 우주에서 쏟아지는 유성우(流星雨)를 본다고 3시간 동안 집 마당에 서있기도 했다. 마침 아폴로 달착륙 때 해설을 통해 ‘아폴로 박사’로 유명해진 고(故) 조경철 박사도 연세대 교수였다. 그렇게 연세대와 인연을 맺게 된 것 같다”고 말했다. (☞ 링크 클릭)

모리 박사는 13세이던 1961년 옛 소련의 유리 가가린이 인류 최초로 우주로 나가는 것을 보고 우주인이 되겠다는 꿈을 꿨다고 한다. 그래서 무엇보다 어린 시절의 꿈이 중요하다고 믿고 있다. (☞ 링크 클릭)


이제 막 통신 위성을 통한 TV 중계 기술이 개발되어 1964년의 도쿄 올림픽이 역사상 최초로 지구 반대편으로 생방송 중계된 올림픽으로 기록되던 시절이었는데, 그로부터 겨우 5년 남짓한 시간 만에 인류는 달 착륙 모습을 라이브로 중계하는 데 성공할 줄이야! 대단하지 않은가?

물론 성경은 바벨 탑(창 11:4)이라든가 루시퍼의 반역(사 14:13)에서 볼 수 있듯, 하늘로 자꾸 오르려는 인간의 욕망을 부정적으로 디스하는 경향이 있다. 하늘이 인간에게는 금단의 영역이라는 심상은, 그리스 신화의 이카루스 이야기에도 반영되어 있는 듯하다.

그러나 순수하게 미지의 영역을 개척하기 위해 과학 기술을 개발하는 것 자체는 딱히 선악 대립 구도가 없는 이념 중립적 영역이라 하겠다. 아폴로 8호 승무원은 달을 돌면서 오죽했으면 감격에 겨운 나머지 1968년 크리스마스 이브를 기념하여 창세기 1장을 낭독하기도 했다. 바로 이런 광경을 보면서!

사용자 삽입 이미지

참고로 아폴로 8호는 새턴 V 로켓으로 유인 우주 비행을 최초로 시도하는 것이었으며, 아예 지구 궤도를 벗어나서 달의 궤도까지 가는 것도 완전 최초였던 미션이었다. 달 착륙선만 빼고 각종 위험한 모험은 다 하고 왔다. 오히려 그 다음 9호는 달까지 가지는 않고 지구 궤도에 머물면서 달 착륙선과 우주복의 안정성을 시험했다.

구소련은 1950년대 말에 세계 최초로 인공위성을 쏴서(= 대륙간 탄도 미사일 발사 기술까지 인증) 스푸트니크 쇼크를 일으키며 미국을 도발했다. 하지만 미국이 작정하고 NASA를 만들고 쇼미더머니를 치면서 이 분야를 무섭게 추격하자 10여 년 만에 전세는 역전되었다.

소련은 달에 무인 탐사선을 보내서 달 뒷면의 모습을 사진으로 남겼고, 달 표면까지 내려가서 월석을 채취해 오는 것까지는 성공했다. 그러나 달 표면에 사람을 착륙시키는 것까지는 차마 달성을 못 했고 천조국 미국이 대신 해냈다.

한때는(1990년대 말과 2000년대 초?) 갑자기 ‘달 착륙 구라설 / 아폴로 계획 자작극 음모론’이 인터넷에 나돌았다. 무슨 사진 모양이 이상하고 그림자 모양이 이상하다는 둥. 그 당시 기술로 우주선이 밴 앨런 벨트를 살아서 통과하는 건 불가능하다는 둥. 그리고 그때 달에 착륙했다가 다시 출발은 어떻게 했겠냐는 둥.

그러나 이것은 우주 개발 역사와 달 탐사 우주선의 메커니즘 디테일도 제대로 모르는 비전문가의 무지의 소치이다. 아폴로 11호의 달 착륙은 갑자기 툭 튀어나온 게 아니라 점진적인 연습과 리허설을 거듭한 끝에 이뤄진 과업이다.

  • 아폴로 8호와 9호를 거쳐서 10호 때는 드디어 착륙선을 내려서 승무원이 달 표면 고도 10km대까지만 내려갔다가 도로 되돌아와서 사령선에 합류했다. 그 당시 착륙선은 기술적으로 달에 착륙까지는 가능했지만 거기서 재이륙을 아직 할 수 없었다고 한다. 그러니 최종 단계인 그것만 빼고 달에 갔다가 돌아오는 리허설을 다 수행했다. 10호 미션 도중엔 그 유명한 "이 똥이 누구 똥이냐" 해프닝이 벌어지기도 했다.;;;
  • 그 후 아폴로 11~17호 중 13호만 빼고 미국은 무려 여섯 차례나 인간을 달에 성공적으로 착륙시켰다가 귀환시켰다. 13호는 중간에 발생한 문제로 인해 착륙은 포기하고, 달 궤도를 멀찍이 삥 돌기만 한 후 지구로 귀환했다. 그래도 목숨 부지하고 돌아온 것만 해도 어디냐. 13호의 승무원은 인류 역사상 지구에서 제일 멀리까지 나갔다가 돌아온 사람이 되었다.
  • 사령선은 달의 궤도를 가까이서 빙빙 돌고 있고, 여기서 착륙선을 별도로 내려 보내서 착륙한다. 승무원 3명 중 1명은 모선인 사령선에 남아 있고, 2명만 달 표면을 밟게 된다. 사령관은 혼자 달을 빙빙 돌면서 고독스럽게 사령선을 지킨다. 어두컴컴한 달 뒷면을 도는 동안은 다른 승무원 내지 지구 기지와도 통신이 전면 두절된다.
  • 수 차례의 달 탐사가 진행되면서 인간이 달에다 남겨 놓고 온 흔적들도 많다. 가령, 착륙선의 발사대와 발사 흔적도 그렇고 아폴로 11호는 레이저 반사경을 달 표면에다 놔 두고 돌아왔으며, 이건 지금까지도 지구에서 달까지의 거리를 측정할 때 유용하게 쓰이고 있다.
  • 아폴로 11호 때는, 미션 완료 후 착륙선이 다시 발사되어 올라가면서 발생한 배기가스의 강한 후폭풍 때문에, 인근에 꽂아 놨던 성조기가 쓸려 날아갔다. 어이쿠.. 그래서 그 뒤의 아폴로 미션 때는 성조기는 착륙선보다 최소 30m 이상 충분히 멀리 떨어진 곳에다 꽂게 되었다. 달 표면은 생각보다 딱딱해서 깃발을 꽂기가 힘들었다고 함.

이런 디테일을 모두 제대로 알기나 하고서 음모론, 자작극을 주장하는 사람을 난 못 봤다.
내가 기독교 식으로 좀 강한 비유를 동원하자면, 인간이 달에 갔다 왔다는 건 예수님의 부활이 사실인 것만큼이나 확실한 사실이다. 마치 예수님의 부활을 부인하고 안 믿으려면 무수한 역사적 사실들을 부정해야 하듯, 달 착륙도 증거가 의혹보다 월등히 더 많다.

만약 NASA의 달 착륙이 진짜로 자작극이라면 미국의 모든 첩보 기관들은 그 진실을 알고 있는 전세계 수많은 대학과 연구소, 기업들을 입 막고 매수하는 일에 대부분의 예산과 정보력을 쏟아붓고 있을 것이다. 정말이다. 성경의 마 28:12-13이랑 완전 똑같은 상황인 것이다.

그러나 그와는 반대로, 요즘 NASA는 달 내부에서 아폴로 11호의 착륙 지점 같은 역사적으로 너무나 유서 깊은 장소를 있는 그대로 영구 보존하고, 훗날 이곳을 찾는 타국의 달 탐사선이 이를 훼손하지 못하게 하는 법적 장치를 마련하려 하는 중이다.
다음은 역대 아폴로 계획 착륙선들이 달 표면에 착륙한 지점을 한데 나타낸 것이다. 무슨 사격 훈련 후에 표적지에 찍힌 탄착군을 보는 것 같다.

사용자 삽입 이미지

2. 월면차

인간이 만들어 낸 전기차 중에 가장 독특한 임무를 수행한 물건은 월면차이지 싶다.
달은 공기가 없으니 기름으로 달리는 내연기관 차량을 운용할 수 없으며, 그렇다고 산소를 연료와 함께 섞어서 폭발 추진을 시키는 로켓을 만드는 것도 아니니까.

사용자 삽입 이미지

월면차는 아폴로 계획 11~17호 미션 중에서 15회 때부터 총 세 차례 투입되었다.
이게 없던 시절엔 기껏 쒜빠지게 고생해서 달에 갔는데.. 너무 힘들어서 승무원들이 좀 멀리까지 주변 지역 탐사를 하기가 어려웠다.
온갖 생존 장비들이 달린 우주복은 무게가 100수십 kg이 훌쩍 넘어갔기 때문이다. 그나마 중력이 1/6인 달이니까 부담이 군인의 '완전군장' 수준으로 줄어들었지, 지구였으면 자력으로 들고 일어서지도 못한다. 그 상태로 월석을 채취까지 하면 중량 부담이 얼마나 더 커졌을까?

월면차는 달에 간 우주비행사들의 기동성을 크게 올려 줬다. 같은 거리를 더 빠르게 가고도 산소 소모량은 1/3 수준으로 줄여 줬다! 달에 두 명이 내려갔으니 월면차 역시 두 명이 모두 같이 탈 수 있었다. 개인 월면차 두 대를 제각기 끌고 다닌 건 아님. 지구에서 테스트할 때보다 더 펄펄 날아다녔다는 것도 두 말하면 잔소리였다.

하지만 그렇다고 한없이 멀리 가지는 못했다. 혹시 월면차가 중간에 퍼지더라도 차를 버리고 착륙선이 있는 곳으로 걸어서 돌아올 수 있게, 착륙 지점으로부터 반경 6km 이내까지만 돌아다니게 FM에 명시를 했다고 한다. 달에는 보험사 긴급출동 같은 것도 있을 리 없으니까..!

월면차의 주행 장면은 달 착륙이 사실임을 매우 강력하게 입증하는 흥미롭고 감격스러운 영상이다. 저거 대수롭지 않아 보여도 지구에서 자연스럽게 만들 수 있는 영상이 아니다.
진공이니 (1) 바퀴가 튀긴 흙먼지조차도 연기를 형성하지 않고 마치 물보라처럼 착착 가라앉는다. (2) 차 속도 대비 흙먼지는 꽤 높고 큼직하게 생기며 지구보다 느린 속도로 가라앉는다. 그런데 사람의 동작은 슬로우 모션이 아님.

지구에서 CG 없이 1970년대의 아날로그 기술만으로 저런 걸 치밀하게 주작할 수 있었을까? 그럴 수 없다는 것이다.
차라리 아예 무중력이어서 사람이 둥둥 떠다니는 건 와이어 써서 어설프게나마 만들었겠지만, 흙먼지가 저렇게 천천히 떨어지는 걸 어떻게 구현하겠는가? 훨씬 더 어렵다.

그 월면차들은 지구로 귀환할 때 회수한 게 아니라 전부 달에 버려져 있다..;; (오오~) 아예 월면차에다가 카메라를 장착한 뒤, 인근의 착륙선이 도로 하늘로 올라가는 장면을 촬영하기도 했다. 이건 월면차의 투입과 동시에 시도했던 것이지만, 카메라를 지구에서 원격 조종해야 하니 꽤 어려운 작업이었다고 한다. 마지막 17호 때에야 간신히 성공했다. 아폴로 17호 때 촬영한 둥근 지구 사진(아프리카 대륙이 나온)만큼이나 아주 유명한 과업이다.

사용자 삽입 이미지

월면차를 두고 온 대신 아폴로 승무원들은 월석을 더 싣고 왔다. 월석은 지구의 사막이나 극지방에 있는 돌멩이는 물론이고 공기와의 마찰을 경험한 운석과도 성분이 다르고 유니크하다는 것이 알려져 있다.

3. 도킹과 재진입

달에 처음 갈 때는 어마어마한 지구 중력을 탈출하기 위해 인류가 발명한 가장 대형+고성능 로켓이 투입된다. 이름하여 새턴 V. 얘는 높이가 110미터, 연료 만재 중량이 3000톤에 달하며, 1단 엔진의 출력은 1억 6천만 마력이 넘는다!

지구의 중력뿐만이 아니라 공기의 저항까지 극복하면서 위로 올라가야 하고 하중은 기계선과 착륙선· 연료의 무게까지 전부 감안해야 하니 부담이 이만저만이 아니다. 이런 로켓 한번 쏘는 데는 가히 천문학적인 액수의 돈이 든다. 이걸로 달까지 가는데 3~4일 정도 걸린다.

하지만 달 착륙선이 지구로 귀환하기 위해 이륙할 때는 차 떼고 포 떼고 아주 작은 로켓이 발사된다. 일차적으로는 달이 대기가 없고 중력이 작은 덕분이며, 또한 얘는 달을 돌고 있는 사령선이 있는 고도에만 도달하면 되기 때문이다.

그런데 하늘로 오르기만 하면 장땡인 게 아니다. 달의 공중에서 착륙선과 사령선이 정확하게 한 지점에서 만나서 도킹 합체하는 게 얼마나 어려울지 상상이 가는가?
착륙선은 처음엔 수직 상승을 하다가 점점 수평으로 속도를 내야 하고, 그렇게 사령선과 상대 속도를 비슷하게 맞췄다가 착 합체를 해야 한다.

비행기로 치면 공중 급유, 혹은 지상으로 치면 말이나 오토바이를 탄 채로 옆에서 달리는 다른 자동차나 열차에 옮겨 타는 것보다 더 어려운 일이다. 그리고 그 과정에서 뭐 하나 삐끗 했다간 끝장이다. 그러니 아폴로 11호 이전 미션들이 달 궤도 진입 및 착륙선 분리와 합체를 차근차근 조심스레 리허설을 해야 했다.

달에서 도킹에 실패했다간 무슨 일이 벌어지는가 하면.. 달에 착륙했던 두 승무원은 달을 빠져나가는 데 실패하고 거기서 죽어 버리고, 사령선 선장만 혼자 돌아오는 참극이 벌어진다. 이건 어찌 보면 '깔끔하게 전원 사망'보다도 당사자에게 더 큰 트라우마를 안기지 않겠는가?

그것도 달 표면에 단번에 추락사 같은 부류라면 모르겠는데, 달 표면에 당장 생존은 한 채로 버려진다면 더 골치 아파진다. 그들은 굶어 죽거나, 아니 그 전에 산소가 먼저 고갈될 것이니 천천히 질식사한다. 만약의 사태를 대비해서 청산가리 독약이라도 미리 챙겨 가지 않았다면 말이다. 아니, 이 사람들은 독약은 몰라도 최소한 유서는 미리 써 놓고 달에 갔다 왔지 싶다.

지구에서 이들에게 뭔가 도와 줄 수 있는 건 이제 없다. 그냥 통신을 끊고 미국 대통령은 "평화를 갈망하며 미지의 세계를 찾아갔던 영웅은 이제 그곳에서 평화롭게 영면하는 운명을 맞이하게 됐습니다. 그러나 인류의 도전은 멈추지 않을 것입니다. 유족에게 심심한 위로를 전합니다. ㅠㅠ" 이런 담화문이나 발표하고 세계는 그냥 초상집 분위기가 됐을 것이다.
그리고 먼 미래에 남극에서 로버트 스콧의 시신, 에베레스트 산에서 조지 맬러리의 시신을 발견하듯이, 후속 발사된 발사된 유인 또는 무인 달 탐사선이 아폴로 우주선 승무원의 시신을 찾아낸 게 보도되거나 할 것이다.

뭐, 합류를 성공적으로 했다 하더라도, 그 다음으로 공기가 없던 곳에서 있는 곳으로 들어가는 재진입도 묘기가 따로 없다. 속도를 낮춰서 천천히 발사의 역순으로 90도 강하하는 게 가장 이상적이지만, 재돌입할 때는 우주선에 아무 연료도 남아 있지 않다. 즉, 동력이 없이 지구의 중력에 그대로 끌려 들어오면서, 컬럼비아 우주왕복선 꼴, 유성 불쏘시개 꼴도 나지 않아야 한다는 게 큰 딜레마이다. 그래서 재돌입이 어렵고 위험하다.

이런 걸 생각하면 인간이 우주로 나간다는 건 정말 유리몸을 가진 캐릭터를 조종하는 아케이드 퍼즐 게임과 같다는 생각이 든다. 뭐 하나 잘못되어서 경로를 이탈하거나 트랩을 툭 건드리면 즉사다. 칼날 위로 외줄타기를 하는 거나 다름없다. 게임 오버인데 현실은 게임이 아니다.

이 와중에 그 우주 개발 시대 동안 그래도 지구 바깥에서 사람이 사고로 죽어서 시신이 우주로 유실된 게 없다는 건 정말 다행스러운 일이 아닐 수 없다. 공중에서 사망 사고가 발생한 것도 다 지구에서 시신이 수습됐으니까.

아폴로 13호의 경우, 지구 중력은 완전히 벗어난 뒤에 달 착륙을 얼마 남기지 않았을 때 문제가 터진 게 정말 기적적인 천만다행이었다. 이미 사령선과 착륙선이 분리되어 달 착륙이 시작됐거나, 아예 지구 중력을 벗어나기도 전이거나, 지구 대기권 재진입 도중이거나.. 뭐 그랬으면 그 당시 귀환을 위해 동원되었던 테크닉의 대부분이 적용 불가능했을 것이고 승무원들이 살아서 돌아오지 못했을 것이기 때문이다. (하필 13공포증을 극복하긴커녕 오히려 더 증폭시킨 미션이 돼 버린 건 안타까운 일이다)

50년 전의 기계· 전자 기술로 달까지 사람을 보내고 오는 기술을 개발했던 미국, 그리고 그에 준하는 기술을 보유했던 구소련이 정말 대단하고 경이롭게 보인다. 이런 기술과 오늘날의 인터넷· 통신 기술이 세상에 공존하지 않는다는 게 뭔가 어색하게 느껴질 정도이다.

Posted by 사무엘

2016/11/19 08:30 2016/11/19 08:30
, , , , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1296

생물간에 이종교배를 하면 예전에 없던 새로운 종(종간잡종) 자체는 나올 수 있다. 동물의 경우 노새나 라이거가 대표적인 예이고 식물도 그런 예가 있을 것이다.

하지만 아무렇게나 교배했다고 원하는 형태의 잡종이 툭툭 튀어나오는 건 아니다. 가령, 감자와 토마토가 지상과 지하에서 동시에 열리는 포메이토 같은 건 SF 수준의 유전자 조작이 필요해 보이는데 만드는 게 이론적으로 가능한지, 그리고 감자와 토마토 정도야 그냥 따로 키우면 되지, 왜 그런 이상한 생물을 가성비 차원에서 굳이 만들 필요가 있는지 필요성 자체조차 난 잘 모르겠다. 이런 거라도 만드는 게 아니라면 말이다.

사용자 삽입 이미지
(돼지를 채찍질 하는 게 유전공학과 무슨 관계가 있는지는 모르겠다만..)

또한 잡종은 일반적으로 번식 가능하지 않다. 노새와 라이거는 유전자가 서로 맞지 않기 때문에 이대로 대를 잇는 자손을 남길 수는 없다. 유전과 관련하여 나름 금도의 벽이 있는 셈이다. 이 분야에 대해 비전공자로서 본인이 아는 건 이 정도까지가 전부이다.

그런데 동물을 성질을 죽이기 위해 화학적으로 거세시켰다는 얘기는 들었어도 식물에다 특수한 처리를 해서 씨 없는 포도나 씨 없는 수박을 만든 건 정말 대단해 보인다. 프로그래밍으로 치면 치밀한 API 훅킹이나 문서화되지 않은 꼼수 기능을 동원해 불법복제 크랙을 만들거나 일반적으로는 불가능해 보이는 일을 하는 프로그램을 만든 것과 비슷해 보인다.

씨 없는 수박의 경우 씨가 아예 안 만들어지는 건 아니며, 검고 딱딱한 진짜 씨가 생기기 전에 하얗고 물렁물렁한 초기 단계의 씨 흔적 정도는 남아 있다고 한다. 이건 '뼈 없는 닭갈비' 같은 급은 아닐 테니까. 그래도 그런 씨의 잔재는 수박을 먹는 데 불쾌함을 주지는 않는다고 한다.

동식물을 막론하고 그 자그맣고 아무것도 없어 보이는 씨에서 엄청난 동식물 성체가 자라난다는 건 손톱만 한 SD카드에 수 GB에 달하는 정보가 저장되는 것 이상으로 엄청난 자연 창조 섭리임이 틀림없다. 그런데 그 열매 안에 씨가 안 생기도록 유전적인 제어는 또 어떻게 하는지 이 역시 신기한 영역에 속한 일이다.

사용자 삽입 이미지

이번에도 이말년 본좌님의 압박..!! ㅋㅋㅋㅋㅋㅋ
단, 우 장춘 박사는 이미 일본인 학자에 의해 발명된 씨 없는 수박을 국내에 처음으로 들여와서 소개했을 뿐이지, 통념과는 달리 그걸 최초로 발명한 분은 아니다.

우 박사가 업적을 남긴 분야는 따로 있다. 배추와 양배추를 교배해서 얻은 잡종이... '유채'라는 이미 존재하는 다른 제3의 종과 유전자 차원에서 완전히 동일함을 입증했다. 라이거와는 달리 번식에도 아무 문제 없다. 그게 유채에서만 어떻게 가능한지는 잘 모르겠음. 어떻게 배추와 양배추를 교배했는데 배추와는 별 관계 없어 보이는 유채가 나오지?

유채는 공교롭게도 한국어와 영어에서 모두 이름과 관련된 우여곡절이 존재한다.
'유채'라는 단어는 한자어인데, 얘의 순우리말 이름은 웬 뜬금없는 '평지'이다. 물론 지금은 plain / flat land라는 한자어에게 소리를 완전히 빼앗겨서 유채를 저렇게 부르면 아무도 못 알아들을 듯하다.

영어로는 더 골때리게도 rape여서 흉악 범죄와 완전히 동음이의어이다! 욕설과 동음이의어인 ‘시발 자동차’가 차라리 덜 민망할 지경. 그래서 유채씨를 짜서 만든 식용유를 과거에는 rapeseed oil이라고 부르다가 지금은 ‘캐나다’라는 나라 이름을 일부 집어넣어서 ‘카놀라유’라는 새로운 마케팅 명칭이 통용된다.

우 박사는 이 유채를 연구해서 1930년대에 유전학적으로 '종의 합성'이라는 개념을 최초로 제시했다. 이 덕택에 종의 분화를 설명하는 다윈의 진화론이 일부 수정되고 보강됐다고 한다.
여느 외국인도 아니고 무려 한국인 과학자가 종과 종 사이의 변화를 실험으로 입증해서 U's triangle이라고 자기 이름을 학계에 남겼을 정도인데 이건 창조 진화 논쟁에서 꽤 중요한 사건이 아닌가? 특히 대진화를 믿지 않는 진영에서 인정할 건 인정하고 해명이 필요하리라 생각된다.

사용자 삽입 이미지

창조과학(?) 진영의 아젠다는 진화란 소진화와 대진화로 나뉘며, 종과 종이 바뀌는 대진화는 결코 일어나지 않는다는 것이다. 그 반면 안티들은 대진화도 얼마든지 관찰되고 실험으로 입증되었는데 창조좀비들이 스스로 귀를 막고 눈을 막아서 반박에 귀를 기울이지 않는다고 깐다.

창조 진영에서 말하는 "종과 종 사이의 변화는 관찰되지 않는다"라는 명제는 화학으로 치면 원소가 다른 원소와의 화학 반응을 통해서 다른 원소로 변하는 일은 없다는.. 그러니까 싼 물질에다 마술을 부려서 금을 짠~ 만들겠다는 연금술은 그저 떡밥일 뿐 그런 기술은 존재 불가능하다는 것과 비슷한 맥락의 주장으로 보인다.

오늘날이야 원자보다 더 작은 단위(원자핵, 전자 등등)의 관찰과 조작을 해서 동일 원소의 동위원소도 논하며, 무슨 방사능 가속 실험실에서 새로운 원소를 너끈히 만들어 내고 심지어 이런 원소가 존재한다면 이런 특성을 갖고 있을 거라고 예측까지 가능한 세상이 됐다. 그러니 원소야말로 절대불변의 물질의 본질을 나타내는 경계 단위라는 통념은 엄밀히 말해 진작부터 깨져 있다.

하지만 그렇다고 해서 그 기술 덕분에 원래의 목표이던 구리를 초원자 단위로 조작해서 금을 뚝딱 만드는 게 가능해지고 저렴하게 실용화됐나? 금값이 구리값과 대등하게 폭락하고 금융계에 일대격변이 일어났나? 그렇지는 않다는 거다. 극한의 환경에서 잠깐만 존재 가능하다가 0.1초 만에 원자핵이 붕괴해서 다른 원소로 변해 버리는 그런 불안정한 방사성 원소를 하나 만들어 낸 게 학술적인 의미 이상으로 우리의 일상생활을 당장 근본적으로 바꾸지는 않는다.
인조 다이아몬드는 있어도 인조 금 같은 건 없다는 얘기다. 또한 인조 다이아몬드조차도 퀄리티나 제조 원가가 다이아몬드의 가격을 흑연의 가격과 동등하게 낮출 정도의 물건은 결코 아니다.

그러니 생물 쪽으로 가서 종을 원소에다 비유해 보자. 유채건 뭐건 그런 종간변화가 관찰된 것 자체야 사실일 것이다. 하지만 이로 인해 '종의 기원' 진화 이론이 바뀌었다고 해서, 원숭이건 뭐건 미지의 공통 조상이 진화해서 지적 생명체인 인간이 되었다는 그 비현실적인 확률을 설명하는 데 그게 실질적인 기여를 한 건 여전히 거의 없다.
그러니 창조 진화 논쟁은 서로 주장하는 바가 다르고 서로 핀트가 어긋난 쪽만 공략하면서 소모전을 계속하고 있으며, 여전히 생명의 기원과 분화에 신의 창조가 들어가지 말라는 법은 없다는 게 본인의 생각이다.

물론 신의 개입이라는 건 과학으로 재연이나 설명 가능하지는 않다. 과학은 천체들이 뉴턴의 법칙대로 돈다는 것만 설명할 뿐, 처음에 누가 그 천체들을 만들어서 언제 그렇게 힘을 가해서 뺑뺑이 돌리기 시작했는지에 대해 답을 주지는 않으니까 말이다. 달은 그 외형이나 특징이 너무 특이해서 인위적인(?) 개입이 있었지 아무래도 우연히 저렇게 만들어진 것 같진 않다고 생각하는 것과 같은 격이다.

그리고 또 하나 생각할 것이 있다.
성경의 하나님은 생물, 생리, 천문 등 여러 분야에서 사람에게 이렇게 하고 저렇게 하지 말라는 법칙을 정해 놓았다. 하지만 인간은 그것들을 거스르고 금기의 벽을 깨고, 자신에게 당장 불편하다 싶은 건 안 불편하게 하는 기술을 그 좋은 머리로 꾸준히 개발해 왔다(전 7:29).

간단한 예부터 들자면.. '네 얼굴에 땀을 흘려야 빵을 먹으리니'(창 3:19)에 반대하여 땀 안 흘리고 편하게 일하려고 에어컨 같은 엄청난 냉방 기술을 개발했으며, '고통 중에 자식을 낳을 것이요'(창 3:16)를 무효화하려고 무통 분만 기술을 개발했다.
'땅을 일정 주기로 쉬게 하라'라는 명령을 어기려고 질소 합성법을 개발하여 식량 생산에 치트키를 입력해 넣었다.
인간은 땅과 첫째 하늘까지만 영역을 두고 사는 게 원칙이지만.. 알다시피 우주 개발도 진행해서 왕년에는 인간이 달에까지 갔다 왔다.

분야를 불문하고 이런 엄청난 일들을 벌여 온 인간인데 하물며 유전공학 쪽은 어련하겠는가?
성경의 하나님은 잡종· 이종교배를 통해 생명의 본디 프로토타입인 유전자가 교란되는 것을 명백히 싫어하시는 것으로 보인다. 레 19:19가 대표적인 예다.
그럼에도 불구하고 인간은 '노새'라는 가축이 가성비가 뛰어나고 좋으니 잡종을 만들며, 그 밖에 어느 동식물이든 필요하다면 유전자 조작도 얼마든지 일삼을 것이다.

자, 그런데.. 이런 일체의 시도 자체가 다 나쁘기만 할 것일까? 그걸로 인해 무슨 성경이나 하나님의 권위가 깎이기라도 하는 걸까?

하나님의 법칙을 자꾸 거슬러서 인간이 나중에 어떤 형태로든 보이지 않는 대가를 치르고 삽질하는 것이야 그건 그때 가서 생각할 문제이고 뭐 어쩔 수 없다. 하지만 이 더운 여름에 에어컨이 발명된 것 자체를 저주라고 생각하는 사람은 없을 것이다.
"우주 개발을 하느라 돈지랄 하는 걸로 다른 사회 복지에나 좀 투자할 것이지!" 뭐 정치적으로 이런 이견이 제기된다면야 그건 어쩔 수 없지만, 그래도 우주 개발 덕분에 월석의 특징이 밝혀지고 천왕성과 명왕성 사진이 공개된 것 자체를 싫어할 사람은 없을 것이다.

그러니 비록 그런 것들이 하나님의 법에 도전하는 영역일지언정 과학 기술 자체는 거대한 칼과 같아서 기본적으로 가치 중립적이다. 어떻게 활용하느냐에 따라 결과가 달라질 뿐이다. 크리스천이 전쟁 무기를 생산하는 회사에 다니는 걸 부끄러워할 필요는 없듯, 유전공학을 연구하는 과학자 내지 NASA에서 근무하는 항공 우주공학자가 되지 말라는 법은 전혀 없다.

기독교 변증법 중에서 좀 구차하다면 구차하지만, "인간이 지금까지 밝혀 낸 지식이 이것밖에 안 되는데 그 영역의 밖에 있는 신이 없다고 단정지을 수 있겠습니까" 그런 게 있다.
그런데 이런 논리는 대상을 외계인으로 바꿔도 동일하게 적용 가능하며, 난 둘 다 말이 된다고 본다. 몇백억 광년에 달하는 방대한 우주에 지적 생명체가 인간밖에 없다는 사실이 도저히 믿어지지 않으니 SETI 프로젝트도 하고 옛날에 외행성 탐사선에다가 외계인들 있으면 보라고 금속판도 집어넣는 쇼를 한 것이다.

물론 본인은 크리스천으로서 이 방대한 우주에 지적 생명체는 인간밖에 없다 해도 이상할 게 없다고 여긴다. 허나 그건 내 믿음일 뿐이니, 하나님을 믿는 믿음만큼이나 외계인을 찾는 그 심정은 동의하진 않더라도 동일하게 기회를 보장해 주고 존중해 줘야 한다고 본다. 그 시도 자체를 종교의 힘으로 봉쇄하고 강제로 찍어누르는 건 옛날 갈릴레오 재판 같은 병신짓을 재연하는 것일 테고.

말이 길어졌는데, 결론을 내리자면 이렇다.
다른 분야들도 그렇겠지만 과학과 종교 사이의 논쟁을 보면 양 진영들이 진실을 서로 다른 쪽에서 부분적으로만 갖고 있으며, 상대방을 향해서 뭔가 헛발질만 일삼는 게 눈에 많이 띈다. 원거리 공격이 제대로 먹히지 않고 말이 안 통하니, 서로 빡치고 감정만 상해서 결국은 인신공격을 일삼는 백병전으로 논쟁의 양상이 바뀐다.

본인은 창조과학(?) 쪽이 문자적인 6일 창조를 목숨 걸고 사수하는 것 하나는 긍정적으로 평가한다. 창 1~3이 허구 설화라고 매도하고 하루가 원어로는 어떻고 헛소리 하는 것보다야 훨씬 낫다. 허나 예전부터 내가 우려해 왔듯이 창조과학 진영도 다른 데서 쓸데없는 적을 만들고 삽질하는 게 너무 많아서 역효과가 크다. 과학과 성경 어느 하나도 확실하게 방어를 못 한 채 쓸데없이 저격당하고 털릴 구실을 많이 주고 있다.
자기들이 삽질해 놓고는 감당 못 하겠으면 딤전 6:20 "거짓으로 과학이라 불리는 것"이라는 실드 뒤에서 정신 승리하고 쏙 숨어 버리는 식이니 누가 인정해 주겠는가? 아무리 목적이 선하다고 해도 그럼 창조 과학조차도 "거짓으로 과학으로 불리는 것"일 가능성은 없을 줄 아는가??

내가 늘 하는 말이지만 지금 기독교회들은 진화론 걱정이나 하고 있을 때가 아니다. 노아의 홍수의 과학적 증거가 발견됐네 그딴 걸 한가하게 논할 때가 아니다. 과학에 앞서 자기들 본업인 성경 해석 노선부터가 진영별로 다 찢어지고 파편화돼 있다. 이게 해결되지 않는 한 창조과학회 식의 문제 접근 방식은 세속 과학계를 절대로 설득할 수 없고 논쟁을 이길 수 없다고 난 장담한다. 자기 코가 석 자라는 것부터 알고 정신 차려야 할 것이다.
대표적인 예가 성경과 과학 논쟁의 핵심에 있는 '간극'이고 말이다. 이전 세상의 멸망을 지질학· 천문학과 결부지어서 설명할 수도 있겠지만, 그 전에 성경 용어와 루시퍼의 타락 같은 자기네 교리 체계부터 정립하는 게 선행돼야 할 것이다.

제발 쓸데없는 논쟁 헛발질은 하지 말고... 상대방의 의견을 반대하더라도 그 의견이 정확하게 뭔지는 알고서 반대할 수 있으면 좋겠는데 창조 진화 논쟁은 여느 정치· 종교 분야 논쟁만큼이나 서로 덕 될 게 없어 보인다.
신자들은 인간이 저렇게 도발적인 시도를 하는 것 자체가 무슨 하나님이나 성경의 권위를 깎아내리는 거라는 속좁은 생각은 하지 말고, 오히려 걔네들 위에서 여유롭게 "그래 종과 종 경계도 얼마든지 그렇게 흔들릴 수 있지. 하지만 그래 봤자 부처님..은 아니고 하나님 손바닥 안일 뿐이야" 이렇게 상대하려면 과학 지식과 성경 지식이 모두 균형 있게 갖춰져 있어야 할 텐데.. 쉬운 일은 분명 아닐 것이다.

이상, 지난 여름에 수박 먹으면서 문득 들었던 잡생각을 글로 정리해 보았다.

* 여담 1: 우 장춘, 석 주명, 공 병우 박사

우 장춘 박사는 일본에서 고생 잔뜩 하고 자라면서도 공부 엄청 열심히 해서 과학자로서 성공했고, 또 해방 후에 우리나라에서도 일체의 물욕과 명예욕 없이 너무 우직하게 학자의 길, 농학자 외길만 고집한 존경스러운 분이다.
사적으로 쓰라고 준 돈도 몽땅 영농 선진화 연구를 위해 종자를 구입하는 데 쓰거나, 연구소에 물을 대기 위해 우물을 파는 작업을 발주하는 비용으로 써 버린 일화는 잘 알려져 있다. 그 와중에 그래도 자식 농사도 잘 지어서 딸은 미국에서 저명한 대학 교수가 돼 있다. (영문학자+수필가인 피 천득의 딸도 외국에서 대학 교수인데.. 그것도 부친 같은 문과가 아니라 물리학과로!)

나비 박사 석 주명은 6· 25 전쟁 때 표본 데이터도 날리고 서울에서 아군의 오인 사격으로 인해 참 원통하고 안타깝게 목숨을 잃었지만, 우 장춘은 생활권이 일본과 부산 사이여서 그런지 6· 25의 포화도 직접적으로 맞지 않고 잘 생존한 듯하다. 농작물뿐만 아니라 수목 쪽으로도(산림 녹화) 공헌한 숨은 과학자들이 여럿 있는데, 언젠가 이런 분들에 대해서도 다룰 일이 있으면 좋겠다.

한편, 공 병우 박사는 애초부터 한반도 북부의 실향민이기도 하고 6· 25 때 이북에 끌려가기까지 했다가 월남했다.

* 여담 2: 당신은 어느 레벨인가?

(1) 이 세상은 우연히 저절로 생긴 게 아니라 신에 의해 창조된 거다.
이 정도야 뭐 물증이 없더라도 심증상으로는 충분히 공감할 수 있고, 증명도 반증도 가능하지 않은 신념의 영역이니 누가 뭐라 할 사람 없다.

(2) 이 세상은 신에 의해 지금으로부터 6천여 년 전에 엿새 만에 창조되었다.
예나 지금이나 나의 입장은 “지금 현 세상이 그때 그렇게 창조된 거지 그게 우주 전체의 완전 첫 기원을 말하는 것은 아님”이다. 6일 창조만 이용해서 모든 기원을 갖다붙이고 노아의 홍수만으로 모든 지질 시대 격변을 설명하다 보면, 결국은 어거지가 등장하고 생물학뿐만 아니라 지질학 천문학까지 여러 분야와 적을 만들게 된다.
많고 많은 크리스천 과학자들이 이 모순을 해결하기 위해 결국 유신론적 진화론을 동원하거나 '하루'의 문자적 해석을 부정하게 된다. 성경의 용어 정의는 놔두고 관점을 바꿔서 "세상들"을 분리할 생각은 왜 안 하는 걸까? 성경을 바르게 나눌 줄 모르기 때문이다.

(3) 지구는 가만히 있고 태양 포함 다른 행성과 별들이 지구를 돈다. 일명 천동설.
성경에는 여호수아와 히스기야 시대에 그림자의 회전이 잠시 멈추었다는 기록이 있긴 한데, 내가 보기엔 그것도 차라리 지구의 자전을 중단시키는 게 태양의 공전(?)을 중단시키는 것보다는 구현하기 더 쉬울 거 같다. -_-;;

(4) 지구는 납작 평평하다.
설마 '땅의 원 위에 앉으신 이'(사 40:22) 내지 '땅의 네 모퉁이'(계 7:1) 같은 걸 flat earth의 근거로 갖다붙인 건 아니겠지.. 3~4 때문에 1이나 2(부분)까지 도매급으로 비웃음과 조롱 당할까 심히 두렵다.
1~4를 두고 생각나는 한자성어와 속담이 있다. ‘화사첨족’. 잘 그린다고 하니까 뱀 발까지 그린다.

Posted by 사무엘

2016/11/16 08:28 2016/11/16 08:28
, , , , , , , , ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1295

1.
우리나라의 자동차세는(영업용 말고 자가용) 차의 배기량에 비례하는데, 이것도 정비례하는 건 아니고 비례상수 자체가 배기량에 따라 3단계로 정비례해서 커진다. 예전에는 단계수가 더 많던 것이 근래에 그나마 더 간소화가 된 거라고 들었다.
그러니 자동차세는 배기량 n에 대해서 약하게나마 O(n^2)에 가까운 형태이다. 작은 차는 저렴한 세금으로 우대하고, 겨우 5인승 승용차 주제에 너무 돈지랄 대형차를 굴리면 세금도 더 많이 매기겠다는 취지이다.

2000cc 이상일 때부터가 최대 rate가 적용된다. 단, 통상적으로 2000cc급이라고 불리는 쏘나타, K5 같은 중형 승용차는 제원상의 실제 배기량이 1998cc 같은 식이기 때문에 최대 rate를 턱걸이로 피해 간다. =_= 영미권에서 10달러짜리 물건을 일부러 9.99$ 이런 식으로 선전하는 것과 동일한 꼼수를 동원해서 성능 대비 최대한 절세를 시행하고 있는 셈이다.

2.
2016년 여름. 전국에 폭염 주의보, 경보, 특보가 며칠째 내려질 정도로 살인적인 무더위가 기승을 부렸다. 한반도가 슬슬 아열대 기후로 진입하고 열대야가 이변이 아니라 한여름의 일상적인 모습이 될 거라니 상상만 해도 끔찍하다.
이 때문에 에어컨의 사용과 전력 소비량이 폭증했다. 그런데 가정용 전기 요금이 비현실적인 징벌적 누진제를 적용받고 있다고 말이 많다.

누진제 자체는 우리나라가 아직 못살고 석유 파동크리까지 터졌던 시절에 도입된 게 사실이다. 하지만 지금과 같은 6단계 누진제는 그때부터 있었던 게 아니다. 누진제에 대한 해석마저도 정치 성향별로 진영 논리로 갈라져서 "친기업 재벌 우대를 위한 음모" vs "북에다 몰래 전기 퍼 주기 위한 음모" 이러는 듯한데, 진실은 어느 한쪽에만 편중돼 있지는 않아 보인다. 다만, 가정용 전기 요금 체계가 지금과 같은 형태로 가장 마지막으로 업데이트된 때는 노 무현 정권 시절이긴 하다.

과거에 언론에서 '징벌적'이라는 단어가 등장했던 다른 문맥이 뭐냐 하면 '카이스트의 징벌적 등록금' 제도였다. 지난 학기 GPA가 B0 3.0에 미달되면 0.01당 6만원꼴로.. 그러니 GPA가 2.0이면 600만원을 내게 하는 것이었다.
뭐, 다시 찾아보니 엄밀히 말해 이건 '누진제'는 아니다. 개막장 GPA라고 해서 6만원이라는 '단가'가 더 올리가지는 않는다.

또한, 굳이 금전적인 불이익이 없더라도 원래부터 한 학기 GPA가 C0 2.0도 안 되면 학사경고이고, 전체 GPA가 그 따위면 애초에 졸업도 못 했다. 그러니 그에 근접하는 2.x대의 평점은 뭔가 페널티를 줄 법도 한 열악한 상황인 건 사실이나... 안 그래도 누군가는 반드시 중하위권을 차지할 수밖에 없는 '상대평가' 하에 전국에서 날고 기는 괴수들이 피튀기게 경쟁하고 있는데 단가 자체가 '징벌적으로' 지나치게 높긴 했다. 성적이 아닌 다른 특기로 입학한 비과학고 출신 친구들이 피해가 제일 컸다. 2011년에 학생 4명이 자살을 하는 참극이 벌어진 뒤에야 그 제도는 폐지던가 전면 완화던가 어쨌든 상황이 바뀌었다.

다시 현행 전기 요금 얘기로 돌아오면.. 얘는 6단계로 100KWh의 배수를 넘길 때마다 기본 요금과 임율이 거의 1.6배씩 증가한다. 이건 제곱도 아니고 아예 지수함수 수준으로 보인다. 바야흐로 O(2^n). 다만 1~2단계와 마지막 5~6단계 사이의 증가폭이 더 크다. 가정에서는 6단계인 500KWh 이상은 정말 절대로 쓰지 말라는 얘기다.

3.
누진제가 지수함수라면, '종량제'는 O(1)이던 것을 O(n)으로 변경하는 것에 해당한다. 건물별 쓰레기 수거 비용이 먼 옛날에는 그냥 건물의 면적에 비례하는 고정된 값이었지만, 1990년대 중반부터는 배출하는 쓰레기의 양에 정비례하는 O(n) 종량제로 바뀌었다.

이거 그 시절로서는 굉장히 파격적인 변화였다. 쓰레기는 반드시 유료로 구입한 종량제 전용 봉지에 넣은 것만 수거하는 관행이 첫 도입된 것이기 때문이다. 쓰레기 중에 재활용 가능한 건 재질을 최대한 분리해서 배출하고, 재활용 불가능한 건 저렇게 배출 방식을 바꿨다. 이런 과정을 통해 1인당 쓰레기 배출 1위였던 우리나라의 불명예스러운 위상도 차츰 개선됐다.

허나, 인터넷 통신비를 데이터 패킷/트래픽에 대한 종량제로 매겼다가는 아마 혼돈의 카오스가 펼쳐지지 싶다.
물론 자유를 악용하여 인터넷 트래픽을 쓸데없이 점유하는 소수의 악질적인 스패머와 악성 코드 유포자들이 끼치는 민폐에 대해서 모르는 바는 아니다. 한때 '다음'에서 뻘짓이라 욕 먹으면서까지 온라인 우표라는 걸 도입하려 했던 심정 자체는 이해한다.

하지만 그런 문제가 무식하게 돈으로 찍어누른다고 해서 해소가 되겠나..;;
극소액이라도 통신비가 데이터 패킷 단위로 유료화가 된다면 동영상 재생은 올스톱될 것이고 무엇보다 사람들이 돈 아까워서 각종 소프트웨어들의 업데이트도 받지 않을 것이기 때문에 네트워크 전체의 보안에도 악재가 될 것이다.
지금은 무선 와이파이 태더링 같은 데서나 패킷량 O(n) 요금을 볼 수 있으며, 이것도 데이터 무제한 요금제를 통해서 얼마든지 피해 갈 수 있다.

그런데 이런 인터넷 종량제조차도 과거의 PC통신 시절보다는 훨씬 나은 거라고 봐야 할 것이다. 1980년대 먼 옛날에는 일반 전화건 PC 통신이건 사용 시간에 관계없이 한 통화당 n원이던 꿈 같은 시절이 있었으나, 이내 '시간 비례' 종량제로 요금이 결국 바뀌었다. 업/다운로드 없이 가만히 있기만 해도 모뎀으로 전화가 연결돼 있는 한 요금이 계속 올라갔으니 이거 뭐..

스크롤의 압박이 있는 긴 텍스트는 일단 캡처만 해 놓은 뒤, 나중에 전화 끊고 PC 통신을 종료하고 나서 차근차근 읽어야 했다.
동영상 재생도 아니고 채팅을 몇 시간 하다가 다음 달에 전화비 n만원 폭탄을 맞았다(25년 전 물가 기준!). 그림 한 장 음악 한 곡 없이, 겨우 사람 손가락으로 생성하는 텍스트 나부랭이가 정보량이 얼마나 된다고..;;

지금으로서는 믿을 수 없는 과금 체계가 아닐 수 없었다. 한 가지 더.. 2010년대엔 무선 와이파이 인터넷으로도 100Mbps대의 속도가 나오고 유튜브로 고화질 동영상을 실시간으로 보는 시대가 열렸지만, 아날로그 전화선 기반인 모뎀은 1990년대 말, 겨우 56Kbps대의 속도가 기술적인 상한선이었고 이내 전용선으로 체제가 바뀌었다는 점도 생각할 사항이다. K와 M 사이에는 무려 1000배의 차이가 있다.;;

4.
지금까지 요금제에 대해 거론한 내용들을 한 줄로 요약하자면,
O(1) 복잡도의 요금제가 쓰이던 곳이 갑자기 O(n)으로 바뀌었을 때(종량제), 그리고 O(n)이 기대되는 곳에 갑자기 터무니없는 O(n^2), O(2^n)에 준하는 요금제가 시행되면(누진제) 사람들은 빡치게 마련이라는 것이다. 너무 평범한 결론이 도출된다.;;

단, 주차 요금이나 연체료· 과태료 중에서는 일정 시간이 경과하면 오히려 rate가 더 줄어들거나 완전히 0이 되는 것도 있다. 이미 매겨진 요금이 탕감· 면제되는 게 아니라, 증가하는 속도가 말이다.
주차장의 경우, 주차된 시간에 비례해서 요금이 몇백· 몇천원씩 쭈욱 올라가지만 하루에 최대 얼마는 초과하지 않는다.
인천 공항 장기 주차장은 하루에 최대 얼마인데, 주차된 지 며칠째부터는 그 최대 요금이 살짝 낮아지는 제도가 있었다. 외국에 장기 출장을 가서 꼬박꼬박 주차장 요금 셔틀 역할을 해 주는 고객에 대한 배려이며, 누진제의 반대 경우라 하겠다.

그런데 이것도 케바케이다. 서울 시내 한복판에 있는 공영 주차장이나 상가 주차장은 몇 시간 이상째부터는 아까의 자동차세처럼 rate가 더 올라가기도 한다. "여기 안 그래도 공간 비좁아 죽겠는데 볼일만 보고 빨리 나가라. 어지간하면 여기는 차 끌고 오지 마라"라는 무언의 경고 되겠다. 주차장의 회전률을 올리기 위한 조치이다.

공기 저항 같은 자연 현상뿐만 아니라 이 세상 제도에도 non-linear한 복잡도를 가진 것들이 있다. 눈덩이처럼 불어나는 복리 이자도 그 예일 것이다. 그런 걸 보면서 그런 제도가 어떤 배경에서 정립되었는지를 생각해 보면 재미있는 이치를 발견할 수 있을 것이다.

Posted by 사무엘

2016/11/14 08:33 2016/11/14 08:33
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1294

« Previous : 1 : ... 111 : 112 : 113 : 114 : 115 : 116 : 117 : 118 : 119 : ... 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:
4001626
Today:
1802
Yesterday:
6203