과거 Windows 9x 시절에는 내부의 16비트 코드가 gdi/user 계층에서 사용하는 64KB짜리 구닥다리 힙으로 인해 일명 '리소스' 제약이란 게 있었다. 그래서 램이 수백, 수천 MB으로 아무리 많더라도, 프로그램을 많이 띄워서 UI와 관련된 오브젝트들을 이것저것 생성하다 보면 리소스가 바닥 나고 운영체제가 패닉에 빠지곤 했다.

지금으로서는 정말 말도 안 되는 황당한 제약이다. 9x에서는 메모장이 60KB를 조금만 넘는 파일도 열 수 없었던 것처럼 말이다. 숫자 세는 단위 자체가 16비트로 제한돼 있으니, 실제 메모리가 아무리 썩어 넘쳐도 셀 수 없는 영역은 몽땅 그림의 떡이었던 것이다.

사용자 삽입 이미지

꼴랑 64KB짜리 중에서 메모리가 몇만 바이트 남았다고 출력하는 건 좀 민망했는지, 남은 리소스의 양은 퍼센트 비율로 출력되었으며, Windows 기본 프로그램들의 About 대화상자에서 값을 간단히 확인할 수 있었다.
그런데 이 퍼센티지를 얻어 오는 API는 무엇일까? Windows 3.x에서 도입된 GetFreeSystemResources라는 함수가 그 주인공이었다. 얘는 0~2 사이의 정수 인자도 받아서 시스템 전체, GDI, user 종류도 얻을 수 있었다.

Windows 3.1 SDK에서 windows.h를 열어 보면 저 함수는 #if WINVER >= 0x030a 안에 고이 감싸진 채 선언되어 있었다. 즉, 초창기부터 처음부터 존재하지는 않았다는 뜻이다. Windows 1, 2 시절에는 샘플 프로그램들의 About 대화상자를 보면 그냥 남은 주메모리의 양(수백 KB)과 주 하드디스크의 남은 용량만 출력했지, 저런 비율을 따로 알려 주지는 않았었다. NT 계열이 아니라 도스 위에서 돌아가던 16비트 시절에도 말이다.

저 함수의 공식적인 수명은 Windows 3.x에서 그대로 끝났다. 32비트 Windows API에는 정식으로 이식되지 않았으며, 여전히 16비트 user.exe를 통해서만 제공되었다. 그렇기 때문에 32비트 프로그램이 시스템 정보 같은 기능을 구현할 일이 있어서 남은 리소스 퍼센티지를 얻으려면... 원래는... 마치 32/64비트 훅 DLL을 따로 만들듯이 16비트 DLL을 만들어서 그 DLL이 16비트 API를 호출하여 값을 얻고.. 32비트 프로그램은 그 DLL과 flat 썽킹을 해서 의사소통을 해야 했다. 썽킹에 대해서는 지난번에 한번 다룬 적이 있다.

이런 번거로운 일이 필요한 이유는 32비트 프로그램이 user.exe로 직통으로 API 호출을 할 수는 없기 때문이었다. 일단은 말이다.
옛날에 한컴사전이 노클릭 단어 인식 기능을 구현하기 위해 그래픽 API 훅킹을 했었는데, 훅킹용으로 32비트 DLL과 16비트 DLL이 모두 있었던 것이 기억에 남아 있다. 32비트 gdi32.dll뿐만 아니라 16비트 gdi.exe로 직통으로 들어가는 그래픽 API 호출까지 잡아 내서 거기 문자열을 얻기 위해서 만든 거지 싶다. 그러니 32비트 DLL엔 훅 프로시저가 들어있고 16비트 DLL엔 썽킹 루틴이 들어있었을 것이다.

그런데, 없는 길을 부분적으로나마 만들어 낸 용자가 그 시절에 이미 있었다.
Windows 9x의 kernel32.dll이 제공하는 비공개, 봉인, 문서화되지 않은 API를 이용해서 32비트 프로그램이 user.exe를 직통으로 호출해서 리소스를 얻어 온 것이다. Windows 95 Programming Secret의 저자인 Matt Pietrek가 그 용자이다.

마소 내부에서만 사용할 목적으로 만들어진 듯한 비공개 API 중에는 16비트 바이너리를 로딩할 수 있는 일명 LoadLibrary16 / GetProcAddress16 / FreeLibrary16 세트가 있다. 얘는 kernel32.dll의 export table에 이름이 노출돼 있지도 않아서 ordinal 번호로만 접근이 가능한데.. 이 번호를 근성의 리버스 엔지니어링으로 일단 알아 냈다. 참고로 얘들은 Generic 썽킹용으로 쓰이는 LoadLibraryEx32W처럼 뒤에 32W가 붙은 함수하고는 다른 물건이므로 혼동하지 말 것.

그런데 알아 냈다고 전부가 아니다. Windows 9x의 GetProcAddress에는 특별한 보정 코드가 들어 있어서 kernel32만은 예외적으로 ordinal을 이용한 함수 주소 요청을 고의로 막았다! 고로 이름이 없이 ordinal만 존재하고 운영체제 내부에서만 사용되는 비공개 API를 제3자 프로그램이 멋대로 사용하는 걸 자연스럽게 차단했다.

이런 조치를 취한 심정을 이해 못 하는 바는 아니다. 같은 함수라도 운영체제의 버전이 바뀜에 따라 ordinal이 수시로 바뀔 수 있으니 일반적인 함수라면 어차피 번호가 아닌 이름만으로 import하는 게 맞다.
또한 프로그램들이 비공개 API를 무단으로 사용하다가 Windows의 버전이 바뀌면 그 프로그램들이 호환성이 깨져서 동작하지 않게 되는데, 이 경우 사용자는 프로그램의 제작사가 아니라 마소를 비난하는 편이었다. 신제품을 팔아 먹으려고 일부러 프로그램의 동작을 막았네 뭐네 하는 음모론의 희생양이 되는 것이다. 마소에서도 이런 힐난에 이골이 났는지 더 방어적인 조치를 취하게 됐다.

그래도 이런 비공개 API들을 끝끝내 끄집어내서 사용하려면
(1) 로드 타임 차원: kernel32.dll의 비공개 API ordinal을 직결로 연결하는 import library를 직접 만들거나,
(2) 런 타임 차원: PE 파일 포맷을 분석해서 GetProcAddress 함수를 손으로 직접 구현하면 된다. 메모리에 로드된 kernel32.dll 내부의 export table을 수동으로 뒤지면 된다는 뜻이다.

L(로드), F(해제), G(함수 탐색) 함수의 ordinal은 1부터 시작하는 번호 기준으로 35~37이라고 한다. Windows 95부터 ME까지 변함이 없다. 어차피 더 바뀌어야 할 이유가 없는 번호이기도 하고.

이렇게 얻어 낸 HMODULE (WINAPI* pfnLoadLibrary16)(PCSTR)을 호출해서 "user.exe"를 로드한다.
그리고 GetProcAddress에다가 "GetFreeSystemResources"를 하면 드디어 우리가 원하는 함수 포인터를 얻을 수 있는데, 얘는 바로 호출 가능하지가 않다. kernel32에 존재하는 또 다른 비공개 API인 QT_Thunk를 거쳐서 함수를 호출해야 하는데, 이 함수는 또 기계어 차원에서 호출 방식이 반드시 일치해야 하기 때문에 대략 다음과 같은 인라인 어셈블리를 넣어야 한다.

_asm {
    push 0~2  ; 시스템, GDI, user. 얻고 싶은 리소스 타입
    mov edx, [pfnGetFreeSystemResources] ; 32비트 주소
    call QT_Thunk ; kernel32에 대해 "QT_Thunk"를 GetProcAddress 한 결과
    mov [ret_val], ax ; 함수의 실행 결과를 받을 16비트 WORD 변수
}

이렇게 하면 32비트 프로그램이 일단 16비트 API를 호출해서 리소스 값을 얻어 올 수 있다. (참고로 Windows NT 계열은 QT_Thunk 함수가 존재하지 않는다.)
그런데 내가 실험해 본 바로는.. 저거 사용하는 게 굉장히 까다롭다.
저 어셈블리 코드에 도달할 때까지 각종 DLL를 로드하고 여러 단계에 걸쳐서 여러 함수들의 포인터를 얻는 등 절차가 복잡한데, 클래스를 만들어서 중간 단계의 결과들을 저장해 놓거나 절차를 여러 단계의 함수로 분리하면.. asm 부분이 갑자기 동작하지 않게 된다.

비공개 API가 내부에서 썽킹을 수행하는 동안 프로그램의 스택이라든가 내부 상태를 이상하게 건드리는 것 같다. 컴파일러의 최적화 옵션의 영향을 받기도 하고.. 그렇지 않고서야 위의 저 간단한 어셈블리 코드가 딱히 뻑이 날 리가 없는데 말이다.

16비트 DLL을 따로 만들지 않고 편법을 동원해서 16비트 API를 호출하고 구체적으로는 리소스 퍼센티지를 얻는 방법을 알아 봤는데, 참 어렵긴 하다는 걸 느꼈다. 사실, 과거에 thunk 컴파일러가 하는 일 중 하나도 내부적으로 UT_Thunk를 호출하는 중간 계층 코드를 생성하는 것이었다. 더 들여다보니 말로만 듣던 ThunkConnect32 같은 함수도 쓰는 듯했다.

비공개라고 해서 무슨 ntdll 같은 하위 계층도 아니고 참 신기한 노릇이다. 어차피 Windows 9x는 kernel32가 최하위 계층이지 ntdll 같은 추가적인 하위 계층은 없으니 말이다.
Windows Programming Secret 책을 당시의 마소 Windows 95 팀의 엔지니어들이 직접 봤다면..
블리자드에서 스타크래프트를 직접 개발한 프로그래머들이 스탑 럴커처럼 자신조차 상상하지 못한 컨트롤과 테크닉을 구사하는 프로게이머를 보는 것과 비슷한 느낌을 받았지 싶다.

리소스를 되돌리는 함수 정도야 간단한 정수 하나만을 인자로 받고 역시 정수 하나를 되돌리는 아주 단순한 형태이다. 그러니 이런 테크닉을 구현하는 것에도 큰 무리가 없다. 구조체나 문자열의 포인터가 동원되기라도 했다면 메커니즘이 훨씬 더 복잡해지며, 그냥 정석적인 썽크 컴파일러를 쓰는 것밖에 답이 없지 싶다.
그러고 보니 문득 든 생각인데, 과거에 GWBASIC이 처음 구동되었을 때 Ok 프롬프트 앞에 "6만 몇천 바이트 남았습니다(6xxxx bytes free)"라고 메시지가 떴던 게 저런 리소스와 성격이 좀 비슷한 것 같이 느껴진다.

저런 식으로 프로그램이 시작된 직후, 혹은 프로그램의 도움말이나 About 대화상자 한 구석에다가 간단하게 남은 메모리/자원의 양을 표시하는 건 오랫동안 소프트웨어 업계에 남아 있던 관행이었다. 심지어 도스 시절부터 말이다.
그랬는데 요즘은 메모리가 너무 많아지고 숫자 단위가 커져서 그런지 Windows의 작업 관리자는 남은 메모리의 양을 KB 단위 대신 비율로 표시하기 시작했다. 옛날에는 64KB짜리 리소스는 스케일이 너무 작고 민망해서 퍼센트로 표시한 게 아닐까 의심될 지경이었는데 이제는 반대로 너무 커져서 세부적인 숫자가 무의미한 지경이 됐으니 다시 퍼센트로 복귀한 걸로 생각된다.

Posted by 사무엘

2016/03/06 08:35 2016/03/06 08:35
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1200

* 앞의 글에서 계속됨

1.
백장미단의 홍일점이던 소피 숄은 나치 반대 운동을 하다가 겨우 23세의 나이로 저렇게 세상을 떠났다. 그런데 독일엔 이와 완벽한 대조를 보이는 아가씨도 있었다.
이르마 그레제(1923-1945)는 생년과 몰년이 모두 소피 숄보다 딱 2년씩만 더 늦어서 23세에 죽은 것은 동일하다. 허나, 이 사람은 나치에 의해 사형 판결을 받은 게 아니라 반대로 전후에 나치 전범으로서 유죄 판결을 받고 교수형을 당했다.

사용자 삽입 이미지

죄목은 바로 나치 수용소의 간수로 근무하면서 수용자들을 끔찍하게 학대하며 그걸 새디스틱하게 즐겼다는 것이다. 심심하면 자기 멋대로 수용자들을 구둣발로 조인트 까고 굶기고 때리고 채찍질하고 옷 벗겨서 성고문을 일삼고.. 아니면 굶주린 군견을 풀어서 물어 죽이거나 가스실로 보냈다. 차고 있던 권총으로 즉결처분을 해 버리는 건 차라리 자비로운 조치다.

수용자 목숨을 정말 파리 목숨 정도로 치부했으며 그녀는 수용소의 모든 수감자들 사이에서 "나치의 악녀"라고 악명이 자자했다고 한다. 하는 짓은 현신한 악마 그 자체인데 얼굴은 참 예쁘장했다니 기가 막힌다.
나중에 그녀의 죄상이 밝혀지고 그녀의 나이와 외모까지 같이 밝혀지자 연합국 측은 이런 아가씨가 저런 짓을 버젓이 저질렀다니 놀라움을 금치 못했다.

그녀는 사형 집행 직전에 수줍은 듯 "빨리(집행해 주세)요~(Schnell..)"라고만 말했지만, 밧줄이 목에 잘못 걸렸는지 곧바로 목동맥이 부러지지는 않았다. 그래서 말 그대로 목이 졸리는 질식 과정을 거치면서 다소 길고 고통스럽게 죽었다고 한다. 고의는 아니었다고 하는데..

비슷한 시기를 살았고 비슷한 방식으로 죽기까지 한 같은 20대 여자라도 어떤 가치관을 갖고 사느냐에 따라서 인생이 저렇게까지 달라질 수 있나 하는 생각이 든다. 아마 북한 정권이 무너지면 거기 정치범 수용소에서도 이와 비슷한 죄목으로 죽거나 조리돌림 당할 악질 간수들이 많이 발견되지 싶다.

한편, 숄이 +1이고 이르마 그레제가 -1이라면, 그럭저럭 0 내지 -0.1에 해당하는 사람도 있다. 바로, 히틀러의 마지막 비서라고 알려진 여인인 '트라우들 융에'(1920-2002)인데..
전후에 길거리를 걷다가 소피 숄의 동상이 세워져 있는 걸 보고 그 유래를 궁금해하다가 큰 전율을 느끼고 데꿀멍 하고 말았다. "자기가 한창 히틀러 밑에서 목숨을 부지하고 있던 동안, 같은 여자이고 나이도 거의 동갑인 한 이 친구는 나치와 히틀러에게 저항하다가 저렇게 죽었구나..! ㅠㅠㅠㅠ 난 너무 어려서 히틀러가 어떤 사람인지 잘 몰랐다고 변명하는 것도 다 핑계일 뿐이구나"라고 영화 <몰락>에 직접 출연해서 증언을 했다.

그런데 세상은 어느 한쪽으로 치우치지 말고 중간으로 가는 게 제일 무난한 건지.. +1과 -1은 모두 진작에 사형 당한 반면, 정작 저 사람만이 독일이 통일되는 것까지 보고 천수를 누리다가 갔다는 점도 시사하는 바가 크다..;
이상. 부정적인 인물 소개는 이걸로 마치고, 다음부터는 긍정적인 인물 얘기를 하겠다.

2.
한편, 우리나라 일제 강점기의 소년 항일 열사로 뒤늦게 알려진 주 재년(1929-1944)에 대해서도 한번 짚고 넘어갔으면 싶다. 그는 1943년 어느 날, 팀을 짜거나 삐라를 만들어 뿌린 것도 아니고 마을 담장에다가 "일본과 조선은 서로 다른 나라다(내선일체 대동아 공영권 따윈 X까라). 일제는 반드시 패망한다. 조선 만세" 이런 글귀를 써서 일제의 속을 뒤집어 놓았다.

사용자 삽입 이미지

일제는 당연히 "이딴 낙서를 한 놈이 누구냐? 안 나오면 마을 전체가 작살날 줄 알아라"라고 사람들을 위협했고, 이에 주 군은 당당히 "이건 내 소행이니 다른 사람들을 해코지하지 마시오"라고 자백하고 잡혀 갔다.
그는 그때 겨우 10대 중반의 중학생 나이로, 유 관순보다도 어렸다. 일제 강점기 35년을 통틀어 아마 최연소 항일 인사였을 것이다.

일제는 "이 짓을 니 혼자 했을 리가 없다. 누구 지시를 받은 거야? 앙?" 하면서 애를 무자비하게 때리고 고문했다. 주 재년은 몇 달간 헌병대에서 고생하다가 집행유예를 받고 풀려나긴 했지만, 고문 후유증으로 이미 초죽음 상태였던 관계로 석방 후 한 달 남짓 만에 순국하고 말았다.

그냥 단두대에서 목을 뎅겅 쳐 버린 것하고, 대놓고 사형 선고를 내린 건 아니지만 고문 후유증으로 사람을 죽게 한 것. 각각이 다 나치스럽고 일제스러워 보인다. 전쟁에서 패색이 짙어지니까 "너희들은 전쟁에서 필패한다"라고 치부를 대놓고 찌르고 퍼뜨리는 사람이 더욱 미워 보일 수밖에 없었겠다. 사실 저런 소문은 병사들의 사기와 심리 차원에서 중요한 요소이기도 하니까. 그러나 닭의 목을 비틀어도 새벽이 오는 걸 막을 수는 없었다.

3.
일로나 토드(Ilona T?th, 1932-1957)는 헝가리 혁명 때 희생된 의대생이다. 정보의 바다 인터넷에서도 한국어로 된 자료는 거의 찾을 수 없는 인물이다. 네이버의 검색 결과와 구글의 검색 결과가 서로 달라도 너무 다르다. 일단 영문으로 된 관련글을 하나 링크로 소개한다.

사용자 삽입 이미지

일단 위의 글을 읽어 보면 그녀는 FM에 엄친딸 모범생 그 자체였다. 집이 가난했지만 늘 검소하고 얼굴에 웃음을 잃지 않았고, 공부와 운동에 모두 능통했고 기독교 신앙도 독실했댄다. 의대인지 간호대인지 어쨌든 의료 계열 학교에 무난히 진학했다.

그런데 1956년, 나라에서 공산당의 억압· 통치에 반발하여 소련을 몰아내려 한 민중 혁명이 일어났다. 그녀는 딱히 정치에 관심이 많은 타입은 아니었다. 그러나 그 혁명이 올바른 명분을 지니고 있다고 판단하여 시위 중 부상자를 치료하고 돌봐 줬다. 그냥 돌본 게 아니라 자기 몸을 사리지 않고 돌봐 줬다. 밤낮으로 환자들을 간호하고 인근 국가로 위험한 무단 월경까지 하면서 음식과 의약품을 구해 왔다고 한다.

하지만 혁명군은 소련군의 무자비한 유혈 대응에 패배했으며 거사는 실패로 끝났다. 혁명군의 간부들이 체포되면서 혁명군에 가담했던 일로나도 체포되었는데, 그녀는 아까 숄 남매나 주 재년 같은 적극적인 저항 활동에 대한 혐의가 붙은 건 아니었다. 그 대신 그녀는 다른 동지를 구하기 위해서 경찰을 살해했다는 누명을 혼자 뒤집어쓰다시피 했다고 한다. 치료를 가장한 독극물 주입으로. 그것 때문에 공산당 인민 재판에서 유죄 판결을 받고, 끝내는 20대의 나이로 교수형을 당했다.

그녀의 모친은 마지막 면회 때 멘붕하여 "이 와중에 도대체 신은 어디 있는 거냐!"라고 울부짖었다. 그러나 정작 당사자는 "여기 제 바로 옆에 계셔요"라고 너무나 차분한 자세로 대답했다. 그리고는 이렇게 말을 이었다고 전해진다.

"Don't cry mother, I will die as a brave Hungarian soldier. You know that the charge is false, and they just want to besmirch the holy revolution." (해석은 생략하겠다.)


우리나라에도 옛날에 <돈 크라이 마미>라는 좀 어설픈 범죄/복수극 영화가 만들어진 적이 있다. (복수극을 만들려면 최소한 테이큰의 반은 따라가는 퀄리티로 만들 것이지, 저건 죽도 밥도 아닌 퀄리티였다. 흥행 실패할 수밖에.)
하지만 일로나의 저 말이야말로 "돈 크라이 마미"의 모범 사례였다. 이 결론을 소개하고 싶어서 이 인물까지 같이 소개하게 됐다. 헝가리에는 당연히 이 사람의 동상도 있고 그녀를 길이길이 기리고 있다.

Posted by 사무엘

2016/03/03 19:32 2016/03/03 19:32
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1199

역사 인물이나 단체에 대해서 잘잘못과 선악 구도를 평가할 때 어지간해서는 병크라도 그런 짓을 저지를 수밖에 없었다는 정황이 감안되고 "그 상황에서는 너를 포함해 누구라도 그럴 수밖에 없었다 / 얘도 사실 알고 보면 착한 놈이다 / 시대적인 한계였다" 같은 실드가 작용한다. 하지만 정말 도저히 실드가 안 쳐지고 절대적인 악 그 자체라 해도 과언이 아닌 나쁜놈들도 드물게 있다.

과거 20세기 중반까지는 양대 추축국이던 일본 제국과 나치 독일, 그리고 현재는 북한 정권과 IS가 이 정도의 악명을 떨치고 있다. 공산주의가 들어섰다고 해서 다 북한처럼 된 건 아니었는데 왜 저 동네만 저렇게 최악에 최악의 막장으로 곪았을까? 김 일성은 처음에는 소련의 꼭둑각시로 시작했다가 어떤 정치 수완을 발휘하여 다른 정치 라이벌들을 몽땅 숙청하고 김씨 왕조를 이뤄 냈을까? 북한 정권의 수립 과정을 잘 숙지해야 종북 좌빨들이 벌이는 역사 왜곡 싸움에 제대로 대처할 수 있을 것 같다.

그리고 히틀러도 마찬가지다. 저 사람은 처음에는 총통 같은 절대권력에 이를 수 있는 처지가 절대로 아니었다. 그런데 어쩌다가 야당들을 야금야금 몰아내고, 천부적인 웅변술로 대중들을 현혹시키고, 특히 국회 의사당 방화 사건을 빌미로 대중 공포심을 조장하여... 누구의 진술에 따르면 그야말로 합법적인 방법의 약점만 최대한 요리조리 파헤쳐서 결과적으로 비합법적인 꼼수만으로 권력을 쟁취하는 데 성공했다고 그런다.
북한과 나치에 비해 IS나 일제는 생성 과정이 상대적으로 덜 궁금한 편이다. 이 글에서는 나치 얘기를 주로 늘어놓도록 하겠다.

힌덴부르크 대통령은 1차 세계 대전 때의 전쟁 영웅이었지만 결과적으로 히틀러를 키워 준 꼴이 되어 오늘날 독일 국민들로부터 좋은 평은 못 받는 지도자로 전락했다. 나치는 권력을 잡은 뒤 국민들의 사상과 표현의 자유를 야금야금 통제하고 학교와 유치원까지 작은 병영처럼 꾸며서 자라나는 애들을 히틀러의 홍위병 총알받이로 키웠다. 그리고 궁극적으로는 2차 세계 대전을 일으켜 남의 나라를 침략하고 유대인 학살에 장애인 말살 등 끔찍한 반인륜 범죄를 저질렀다.

이런 짓의 원흉인 히틀러가 열성적인 동물 보호론자였다는 것은 대단한 아이러니이다. 동물 학대를 처벌하는 이유가 뭐냐 하면 동물 학대는 인간의 보편적인 정서에 반하며, 그걸 저지르는 사람은 사람까지도 학대할 가능성이 높기 때문이다.
그런데 반대로 동물 보호론자와 인간 백정 성질을 모두 지닌 캐릭터는 저런 통념(?)으로는 존재 이유가 설명이 되지 않는다. 마치 음란물과 폭력적인 게임을 많이 접한 사람이 실제로 유사 범죄를 많이 저지르는지 상관 관계만큼이나 연구가 필요한 대목이라 여겨진다.

나치 당 + 히틀러의 재임 기간은 미국에서 프랭클린 루스벨트 대통령의 재임 기간과 거의 동일하다(1933-1945, 약 12년). 미국 대통령은 전쟁을 다 끝내 놓고 좋은 세상이 오기 직전에 히틀러보다 불과 몇 달 일찍 병사했다.
히틀러의 휘하에서 독일이 미쳐 가는 와중에, 나치의 지배를 받는 외국 국민들은 그렇다 치더라도 독일 자국민들은 그저 총칼 위협에 굴복하여 침묵만 했을까? 아니면 한 술 더 떠서 히틀러가 하는 광기 어린 인간 숙청과 정복 활동에 적극적으로 지지하고 동조만 했던 것일까?

물론 그렇지 않았다. 일부 저항하는 사람도 있었다. 그리고 그 중에는 '백장미단'(White Rose)이라고 청년이 주축이 된 소규모 비정치 비폭력 저항 단체가 있었다.
백장미단은 백색 테러 같은 것과는 전혀 관계 없고 정말로 "펜은 칼보다 강하다" 스타일로 움직였다. 주된 활동 방식은 공공장소에서 몰래 '삐라'를 살포하는 것이었다. 히틀러를 비판하고 나치의 비인간적 만행을 폭로하고 "우리나라는 연합국을 상대로 전쟁을 결코 이길 수 없다. 나치는 얼마 못 가 패망한다. 정부의 선전선동에 속지 말고 현실을 직시하라. 우리는 세계 인류 앞에, 역사 앞에서 죄인으로 기록되지 말자." 이런 메시지가 담긴 논리정연한 글을 배부했다.

이 단체의 핵심 인물은 겨우 20대 초중반 나이인 '한스 숄'과 '소피 숄'(1921-1943)이라는 이름의 남매였다. 독일어에서는 음절 초의 s는 z로 발음되기 때문에 여동생의 이름은 '조피'가 더 정확한 표기이지만, 국내에서는 영어 스타일의 '소피'라는 표기가 더 유명한 듯하다. 이들은 그 어려운 시절에 남매가 모두 뮌헨 대학교에 진학했을 정도로 똑똑했고, 한편으로는 집안도 남매의 대학 학비를 감당할 수 있을 정도로 잘 살았다.

사용자 삽입 이미지

그 시절에 대학생인 게 얼마나 큰 특권이냐 하면, 대학교 재학생은 국가적인 엘리트이기 때문에 군대 징집이 면제되었을 정도였다. 게다가 이건 일본도 마찬가지였다. 그 미친 군국주의 국가에서 그것도 전시에 얼마나 큰 혜택을 줬는지 상상이 되는가? 대학은 개나 소나 다 가는 필수가 됐고 군대 휴학이라는 게 자연스럽게 통용되는 지금의 우리나라와는 사정이 달라도 너무 다르다.

저 남매도 어린 시절엔 남들이 다 그러는 것처럼 히틀러 유겐트에 열심히 동참했으며, 히 총통에게 충성하는 것이 애국이라고 생각했다. 그러나 크면서 남과 다른 견해를 허용하지 않는 몰개성 세뇌 교육에 회의와 환멸을 느끼게 됐으며, 자기 나라 정부가 저지르고 있는 침략 전쟁과 장애인과 유대인 학살까지 접하면서 저항하는 쪽으로 성향이 완전히 바뀌었다. 1941년, 오빠가 먼저 백장미단 활동을 시작했고 그 뒤에 동생도 동참하고 일부 대학 교수 등 동지가 조금씩 더 붙었다.

글로써 싸운다는 건 같은 나라에서 수백 년 전에 있었던 마틴 루터를 보는 듯한 느낌이다. 루터의 종교 개혁도 인쇄술의 대중화로 인한 성경과 여타 책, 유인물의 대량 보급이 없이는 성공할 수 없었을 것이다. 1940년대는 아직 컴퓨터 시대는 아니었지만, 그때는 루터에게는 없었던 타자기와 등사기가 있는 덕분에 글로 싸우는 것이 좀 더 수월했다. 단, 전쟁 중이라 물자가 부족해서 종이가 지금만치 싸고 풍부하게 있지는 않았다는 점은 감안할 점이다.

하긴, 우리나라에서도 방 정환의 경우 3· 1 운동 때에 <독립 신문>이라는 반일 성향의 소식지를 몰래 인쇄해서 배부했는데, 이게 발각되어 집이 형사들에게 몽땅 포위당했다. 그는 인쇄된 신문과 등사기를 몽땅 우물 속에다 던져 버리고 시치미 뚝 뗀 덕분에, 1주간 구금을 당하긴 했지만 혐의를 겨우 피했다. 오염된 우물의 뒷수습은 어떻게 했는지 모르겠지만 그게 중요한 상황은 아니었겠지..;; 그에 비해 오늘날의 변기는 종이를 아주 잘게 쪼개서 버릴 수는 있지만 여전히 막히는 거 걱정을 해야 하며, 등사기까지 처리할 수는 없을 것이다.

그리고 방 정환의 경우 등사기만 갖고 있었지 타자기는 그 시절에 존재하지 않았다. 원고를 그냥 손으로 써야 했으니 얼마나 불편할까? 그러니 동양 한자 문화권의 선각자들은 서양 사람들의 획기적인 문자 기계를 보고 좌절했으며, 자국 문자도 타자기로 만들 수 있는 형태로 과감하게 개조해야겠다는 생각을 안 할 수가 없었으리라 여겨진다.

흠, 갑자기 주제를 벗어난 이야기가 좀 길어졌다만..
백장미단의 활동은 불행히도 오래 가지 못했다. 몇 차례 불온삐라가 발견되자 정부 역시 통제와 단속을 강화했다. 운명의 그 날, 그들은 낮에 과감하게 뮌헨 대학교 강의동에 들어가서 유인물을 몰래 뿌리고 오기로 했는데.. 한번 뿌리고 나왔다가, 아직 유인물이 더 남아 있는 걸 보고 또 건물로 들어갔다. 그런데 이 과정에서 수상한 행적이 나치 끄나풀이던 건물 경비에게 눈에 띄고.. 이들은 경찰에 체포되었다. 이때가 1943년 2월 18일이었다.

남매는 서로 격리된 채로 "넌 정체가 뭐냐? 이 유인물 어디서 났냐? 누가 작성했냐? 누가 이 일을 시켰냐? 배후에 또 누가 있냐? 뭐, 우리가 전쟁에서 진다고라? 등등등등~~" 게슈타포로부터 끝없는 심문을 받았으며 결국은 혐의가 인정되어 구속됐다. 그리고 단심으로 진행된 형식적인 인민 재판에서 무려 내란· 반역· 이적행위에서 유죄 판결을 받았고 전원 사형이 선고됐다.

이 재판은 북한의 인민 재판과 별 다를 바 없는 쇼에 지나지 않았다. 답은, 아니 판결은 이미 정해져 있으니 짜고 치는 고스톱이었다. 백장미단을 재판한 사람은 '롤란트 프라이슬러'라는 악질 판사였는데... "대학까지 간 애들은 국가에서 특별히 배려해서 군대에도 안 보내고 공부를 더 시켜 줬더니만 이노무 자슥들이 은혜를 모르고 이딴 짓거리나 해? 대가리에 똥만 가득한 새퀴들 같으니!" 식으로 판사가 검사보다도 더 피고를 더 몰아세우면서 고래고래 욕설까지 퍼부었다.

그는 사법 권한을 이용하여 흉악범이나 간첩뿐만 아니라 반나치 인사들도 대거 사형으로 숙청했기 때문에 엄연한 나치 전범이다. 전후에는 판사복이 아니라 죄수복을 입은 피고인으로 법정에 다시 섰어야 할 인물이다. 하지만 그는 나치가 패망하기 얼마 전, 길 잃은 포탄의 포격을 받고 죽어 버리는 바람에 험한 꼴을 용케 피해 갔다.

이런 과정을 거쳐 숄 남매와 유인물 가담자에게는 사형이 집행되었다. 체포에서 사형 집행까지 걸린 시간은 겨우 나흘(2월 22일!)에 불과했을 뿐만 아니라, 그 방식은 총살도, 교수형도 아니고 무려 단두대 참수였다. 자기 정책을 반대하는 유인물을 뿌렸다는 이유로 여자까지 낀 20대 대학생을 반역죄로 몰아 목을 베어서 죽인 것이다. 그것도 1940년대에, 피지배 식민지 주민도 아니고 자국민을 상대로..;; 나치가 얼마나 잔혹한 집단인지를 알 수 있다. 단두대는 프랑스 대혁명 때에만 쓰인 물건이 아니었던 것이다.

일행 중에서는 여자인 소피가 가장 먼저 집행되었다. 이거 집행 순서도 은근히 중요하다. 남이 죽는 걸 다 보고서야 제일 나중에 집행되는 게 사형수의 입장에서는 제일 무섭고 끔찍하니까. 사형과 정반대인 시상식에서도 1등상을 제일 나중에 주는 것처럼 말이다.
참고로 나치는 악질적인 죄인을 단두대로 처형할 때는 죄수를 엎드리게 한 게 아니라, 눕혀서 칼날이 떨어지는 걸 보게 하기도 했다. (그래 봤자 눈을 감으면 안 볼 수 있겠지..) 조선 시대에 정 약용의 형 정 약종도 천주교를 믿다 순교할 때, 하늘을 보면서 죽겠다고 하면서 비슷한 자세를 자처하며 참수를 당했다고 하지만 그것과는 분위기가 영 딴판이다.

숄 남매를 비롯해 백장미단은 꽃을 제대로 피우지 못하고 그렇게 형장의 이슬로 사라졌다. 그러나 그들의 의로운 행적은 잊혀지지 않았다. 나치가 패망한 뒤 그들은 독일 내부에서 추모와 존경의 대상이 되었다. 그들의 고향에는 동상이 세워졌으며, 각종 길거리의 명칭에 그들의 이름이 붙여졌다.
이들의 일대기는 책과 영화로도 응당 나왔다. 영화로는 <백장미>(1982)와 <소피 숄의 마지막 날들>(2006). 전자는 활동 중심이고 후자는 활동보다는 체포 후의 길고 지린 심문과 재판 과정을 더 중점적으로 다뤘다.

그 당시에 단두대를 가동한 사형 집행관들은 흔한 제복이나 작업복이 아니라, 무슨 마술사처럼 검은 연미복에 실크햇, 나비넥타이 정장 차림이었던 게 인상적이다. 나름 자신들의 직업 의식을 표현하고 사형수에 대한 최소한의 예의를 차리려는 의도였다고 한다. 영화에도 잘 묘사돼 있다.

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

다음은 나치 시절까지 단두대 처형(백장단 단원까지 포함해)을 전문으로 맡았던 실존 인물인 '요한 라이히하르트(1893-1972)'의 근무 복장이다. 영화가 정말로 사실 고증을 반영한 것임을 알 수 있다. 이 사람이야 그냥 위에서 시키는 대로 사형 집행을 한 죄밖에 없으니 딱히 전범으로 처벌받지는 않았으며, 오히려 연합국 측에 재고용되어서 사형 선고를 받은 다른 나치 전범들을 교수대에 매다는-_-;;; 일에도 동원되었다.

사용자 삽입 이미지

마치 실전 참전 용사들이 전쟁 영화를 싫어하듯, 사형 집행관들은 사람을 죽이는 게 직업이다 보니 그쪽 방면으로 극도의 트라우마와 거부 반응이 있다. 옛날에 성 바돌로매 대학살(1572) 때도 다른 시민들은 광기에 휩쓸려서 크리스천들을 마구 죽였지만, 이때 오히려 사형 집행관 망나니들은 그 일에 전혀 가담하지 않았다고 한다.

사형 집행 이야기는 됐고... 백장미단의 일대기를 다룬 책은 유족들에 의해 출간되었으며 국내에는 1978년에 <아무도 미워하지 않는 자의 죽음>이라는 제목으로 번역되어 나왔다. 이거 한때는 운동권에서의 필독서이기도 했다.

아시다시피 본인은 국내 정치에 한해서는 종북 좌경화 역사 날조라는 변수 때문에 소위 말하는 '보수 우파' 성향을 강하게 유지하고 있다. 그러나 그 변수만 없으면 난 얼마든지 성장과 분배, 진보와 보수의 장단점을 골고루 인정하고 중도를 갈 의향이 있다. 공권력에 저항하는 것 자체를 좌파 빨갱이 식으로 몰아갈 생각은 물론 전혀 없다. 북한에 대해서도 정치적으로 접근하는 관점과, 비정치 학술적으로 접근하는 관점 정도는 서로 구분할 줄 안다.

하지만 우리나라의 과거 군사 독재 정권이 무슨 북한 정권이나 나치와 똑같다는 식의 매도에도 전혀 공감하지 않는다. 그들은 정부 비판이나 북한 관련 병크만 빼면 나머지 국민의 자유는 별로 침해하지 않았기 때문이다. 남의 나라를 침략하거나 인종 학살을 저지른 건 더욱 아니고. 차라리 '진보 좌파'들이 반정부 투쟁을 안 벌이고 염전 노예라든가 형제 복지원처럼 그 당시 사회의 구석에서 벌어지는 비정치 분야의 인권 유린 같은 것만 폭로하고 비판했으면 그런 건 본인도 얼마든지 인정하고 공감했을 것이다.

글이 길어지니 백장미단 인물과 연관지어 생각해 볼 만한 인물들 열전은 다음 시간에 소개하도록 하겠다.

Posted by 사무엘

2016/03/01 08:35 2016/03/01 08:35
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1198

날개셋 한글 입력기 8.4

<날개셋> 한글 입력기 8.2가 나온 지 거의 4개월 만에 또 새 버전인 8.4가 나왔다.
이번 버전도 짬밥이 어디로 간 게 아니라 정말 많은 부분이 개선되고 중요한 기능들이 많이 추가되었으므로 많이 사용하시기 바란다.

API 구조의 변경으로 인해 타자연습도 3.45로 살짝 업데이트가 됐다.

1. 사용자 정의 후보 문자열에 @ 탈출문자 추가

지난 7.0 버전에서는 사용자 정의 후보 기능이 추가되었다. 덕분에 고급 입력기의 사용자 정의 조합이 아니라 일반적인 한글을 입력하고 있을 때도 한자 키를 눌렀을 때 나타나는 변환 문자들을 사용자가 임의로 정할 수 있게 되었으며, 원래 있던 한자 변환 기능과도 병용이 가능해졌다.

한자 후보에 대해서 한자의 훈과 음이 나오듯이 사용자 후보에 대해서도 사용자가 설명문을 기재할 수 있다. 그런데 어떤 문자에 대해서 들어갈 만한 설명 정보라는 게 뻔할 뻔 자인 경우가 많은 관계로, 이번 버전에서는 그 절차를 간편하게 해 주는 탈출문자를 추가했다. 후보 문자열이 딱 한 글자로만 구성되어 있다면 탈출문자를 사용할 수 있다. 기본 입력기의 사용자 정의 후보와 고급 입력기의 사용자 정의 후보에서 모두 동일하게 쓸 수 있다.

탈출문자는 @로 시작한다. @N은 이 문자의 유니코드 번호이다. 그리고 문자가 BMP 영역에 있는 경우, 문자의 유니코드 명칭을 나타내는 @C를 사용할 수 있다. 이건 내 프로그램이 아니라 운영체제로부터 얻어 오는 명칭이다.
다음으로 @H는 이 문자가 BMP 영역의 한자인 경우 훈과 음이다. @ 자체를 표현하려면 @@이라고 쓰면 된다.

사용자 정의 후보의 설명문과 관련하여 뭔가 2% 부족한 게 있다고 지금까지 생각해 왔는데 그걸 탈출문자를 통해서 해결하게 됐다.
그러면 이제 여러 후보들에 대해서 설명문을 획일적으로 [@N] @C/@H 이런 식으로 지정할 필요도 생기는데, 이것도 대화상자 UI 차원에서 가능해졌다. 후보 목록에서 1개 이상의 후보 문자열들을 선택한 후, 위의 ‘후보 문자열 입력란’은 비우고 설명문만 입력한 뒤 ‘추가’를 누르면 선택된 후보들의 설명문이 모두 동일하게 바뀐다.

2. Alt+=를 끄는 보정 기능 추가

지난 8.2에서는 시스템 계층에 ‘키보드 드라이버의 동작 보정’ 기능이 추가되어서 type 1 키보드에서도 오른쪽 Ctrl/Alt를 인식할 수 있으며 반대로 type 3에서도 Shift+Space와 한영을 구분해서 인식할 수 있게 되었다. 이번 버전에서는 그에 덧붙여 Alt+=도 전/반각이 아니라 있는 그대로 인식하는 기능이 추가되었다.

전통적으로 Windows의 한국어 키보드 드라이버는 Alt+=를 전/반각 전환 글쇠로 인식해 왔다. 하지만 오늘날은 이건 거의 안 쓰다시피 하는 잉여 기능이며, 오히려 자기도 모르는 사이에 저걸 누른 뒤에 알파벳과 숫자가 엉뚱하게 입력되어서 사용자를 놀라게 하는 경우가 많다.
이 보정 기능을 켜면 <날개셋> 외부 모듈에서 Alt+=가 눌려도 전/반각 전환을 하지 않게 만들 수 있으며, 편집기 같은 다른 구현체에서는 거기에다 아예 다른 기능을 배당할 수도 있게 된다.

단, 보정 기능은 언제나 택일 형태이기 때문에 이 기능을 기존 type 1/3 한영 관련 보정과 같이 사용할 수는 없다.

3. 다단계 입력 분리

두벌식 글자판에서 음절 경계에 도달했을 때 앞글자 종성과 뒷글자 초성을 구분하는 방법은 여러가지가 있다.
보통은 자음은 종성에 최대한 붙을 수 있는 데까지 결합시켰다가 안 되면 다음 글자로 넘어가고, 모음은 직전에 입력되었던 종성 한 타만 다음 글자의 초성으로 이동하는 '도깨비불 현상'을 일으킨다. 그것보다 더 세밀한 제어가 필요하다면 크게 다음과 같은 방법들을 사용하면 된다.

  • 특수 도깨비불(3.9에서): 중성이 입력되어 도깨비불 현상이 일어날 때, 종성 입력 순서와 무관하게 아무 종성과 초성으로 쪼개지게 한다. 한글 로마자 입력기에서 ch, l, x 같은 건 이걸로 구현하는 게 제일 무난하다.
  • 초· 종성 공유 낱자 결합(6.0에서): 종성을 2개의 초성을 합성하여 입력하는 구도로 만들어 준다. 낱자 결합 규칙을 훨씬 더 간단하게 만들어도 후속 처리를 프로그램이 알아서 해 주며, 도깨비불도 오른쪽 초성 덩어리 단위로 떼어서(치는 데 몇 타가 들었든) 해 주니 매우 편리하다. 휴대전화 입력 방식은 이걸로 구현하면 된다.
  • 조합 종료 타이머(6.0에서): 특정 오토마타 상태에서 일정 시간 이상 동안 타자를 안 하고 가만히 있으면 자동으로 조합이 끊긴다. 천지인 같은 입력 방식에서 '국가/구카' 구분을 위해 사용하면 된다.

그 뒤 이번 버전에서는 "다단계 입력 분리"라는 제4의 메커니즘이 추가되었다.
이것은 도깨비불과는 달리, 초중종 등 동일한 성분의 낱자가 계속 N-1단계까지 입력되었는데.. 제 N째 낱자가 기존 낱자와 결합이 불가능할 때, N만 다음 글자로 빼는 게 아니라 M<N을 만족하는 임의의 M~N단계의 낱자 결합을 몽땅 다음 글자로 옮기고 앞글자는 1~M-1단계까지만 남기는 역할을 한다.
쉽게 말해 ㄺ 다음에 ㅅ을 입력했는데 ㅩ으로 갈 수는 없을 때, ㄺ+ㅅ으로 있는 그대로 분리되는 게 아니라 느닷없이 ㄹ+ㄳ으로 가게도 해 준다.

도깨비불은 두벌식 종성이 입력된 상태에서 두벌식 "중성"이 입력되었고 이로써 오토마타가 0으로 바뀌었을 때 발생한다. 하지만 저건 초중종 같은 성분의 낱자가 입력됨으로써 낱자 결합이 65531이라는 낱자로 도달했을 때 발생한다. 조합 중인 낱자를 0으로 만드는 역할을 하는 65530에 이어 또 다른 특수 낱자가 추가된 것이다.

그런데 세벌식이나 '종성 두벌식'이 아니라 일반 두벌식 형태의 종성이 분리되었을 때는 다음 글자는 종성이 아니라 초성으로 바뀐다. 그렇기 때문에 다단계 입력 분리로 할 수 있는 일의 일부가 바로 도깨비불과 동일하지는 않지만 비슷한 형태의 '두벌식 음절 경계 구분'이 된 것이다. 개념적으로 종성과 다음 글자 초성을 동시에 결합시키는 날개셋문자와도 좀 비슷하나, 형태가 간편한 대신에 자유도가 그것만치 높지는 않다.

현대 한글에서 초성 ㅃㄸㅉ, 옛한글에도 정치음· 치두음 같은 건 초성에만 존재한다. 이걸 초성과 종성에 공통으로 존재하는 낱자의 결합으로 입력할 수 있는데 두벌식으로 종성을 결합하는 도중에 인위적인 음절 구분(조합 종료) 없이 자동으로 초성으로 넘어가는 형태로 입력하고 싶다면 딱 이 기능을 사용하면 된다.

예전 같았으면 '한글 출력 치환'을 이용해서, 여전히 조합이 끊어지지 않은 종성 상태이지만 겉보기로는 정치· 치두음 초성이라고 글자를 임시로 표시해야 했다. 그 뒤 모음이 입력됐을 때 특수 도깨비불 현상 같은 걸로 정치· 치두음 부분을 떼어냈겠지만 지금은 좀 더 직관적인 방법도 생겼다. 자세한 설명은 프로그램의 도움말에 나와 있다. 연속 입력 가능성 판별 기능도 다단계 입력 분리까지 감안해서 동작하도록 알고리즘이 수정되었다.

요건 원래 개발 계획에는 없던 아이디어였는데 꽤나 무겁고 중요한 기능이 되어 버렸다. 이런 기능이 지금까지 없었다. 예정에 없던 기능 때문에 한 달에 가까운 시간이 그냥 훅 가 버렸지만..ㅠㅠ 투자한 시간이 아깝지는 않다.

4. 허용 한글 범위 관련 처리

아무 한글이나 조합이 되지는 않게 하는 '허용 한글 제약'과 관련하여 여러 기능들이 추가· 강화됐다.
먼저, '다단계 입력 분리'가 이 기능과도 연계된다. 가령, '쌰'를 조합할 수 없는 'KS X 1001 완성형 제약'을 사용하고 있는데 ㅑ를 ㅏ+가획으로 입력해서 '쌰'를 만들려고 시도했다면.. '가획'만 넘어가는 게 아니라 "ㅏ+가획"이 한꺼번에 다음 글자로 넘어가게 할 수 있다. 이전까지는 그게 가능하지 않았기 때문에 이 상황에서 그냥 '싸'와 함께 조합이 중단돼 버리곤 했다.

65031 낱자 결합을 통해 일어나는 다단계 입력 분리와는 달리 저 분리는 별도의 옵션이 지정되어 있을 때만 수행된다. 그리고 앞의 분리는 A+B+C+D와 C+D가 모두 가능하다면 A부터 시작해서 최대한 많은 타수를 분리하는 반면, '허용 한글 제약' 관련 분리는 C+D처럼 최대한 적은 타수를 분리한다. 분리의 성격이 서로 다르기 때문이다.

단순히 낱자 결합 규칙이 더 존재하지 않아서 결합 불가일 때랑, 허용 한글 범위 제약에 걸려서 결합 불가일 때를 구분 인식이 가능해진 것은 예전 글에서 이미 언급했으므로 참고하시고..

끝으로, <날개셋> 한글 입력기가 제공하는 "문자열을 글자판 입력으로" 필터는 '허용 한글 범위 제약' 기능을 전혀 감안하지 않고 동작한다. 즉, '똠'이라는 문자를 조합할 수 없는 상태에서도 '똠'을 입력하는 순서를 구해 준다.
그 동작을 약간 변경하여, 이걸 부분적으로 감안하여 동작하게 로직을 바꿨다. 이제는 KS X 1001 제약이 적용된 상태에서는 '똠'은 입력할 수 없는 글자로 간주하여 입력 순서를 찾아 주지 않는다.

그러나 이 기능은 중간 과정에서 생성되는 모든 글자들을 일일이 체크하지는 않는다. 즉, '썅'은 중간의 '쌰'를 입력할 수 없음에도 불구하고 최종 결과물이 입력 가능하기 때문에 입력 순서를 찾아 준다.

5. Backspace 3과 4 지원

<날개셋> 한글 입력기는 한글 입력 과정에서 사용되는 Backspace와 후보(≒ 한자) 변환이라는 명령을 내부적으로 특수글쇠의 일종으로 취급한다. 그런데 그게 하나만 있는 게 아니라 각각 4종류씩 있다.

먼저 후보 변환의 경우, 지난 7.0 버전에서 4개의 용례가 완전히 정착했다. 1은 고정적으로 제공되는 한자 및 특수문자 변환이며 2와 3은 각각 입력기 계층에서 제공되는 내장 및 외장형 후보 변환이다. 4번은 편집기 계층에서 제공되는 공통 후보 변환이며 형태는 내장과 외장 어느 것이든 될 수 있다.
후보 변환 데이터의 성격에 따라(공통인가, 아니면 특정 입력 방식에 종속인가?) 원하는 변환 방식을 고를 수 있다. 그리고 어떤 단계에서 후보가 존재하지 않을 때 이전 단계로(1) 갈 것인지 다음 단계로(4) 갈 것인지 포워딩 방식도 지정할 수 있게 했다. 이런 식으로 후보 변환과 관련해서 생각할 수 있는 customization 방식을 모두 구현했다.

이번 버전에서는 후보 변환에 이어 Backspace에 대해서도 손을 봤다. 예전부터 Bksp 1은 통상적인 bksp 글쇠에 대응하고 Bksp 2는 Shift+bksp에 대응한다는 관행이 정착해 있었지만, 3과 4는 영역이 배당만 됐고 실제로 쓰이지 않았다.
이제는 Bksp 동작 방식에서 '자세히'를 누르면 1, 2뿐만 아니라 3, 4도 다 제각기 동작 옵션들을 지정할 수 있다. 그리고 아무 글쇠에나 Bksp 3/4를 뜻하는 C0|0x8A 또는 0x8B를 배당하면 그 옵션대로 Bksp가 동작한다.

원래 Backspace는 한글 입력기(IME 프로그램)와 응용 프로그램이 공용하는 글쇠이다. 한글을 조합하는 중일 때는 IME가 Bksp를 가로채지만, 조합 중이지 않고 앞 글자에 딱히 달라붙거나 할 필요도 없을 때에는 IME가 Bksp를 가로채지 않고 그냥 응용 프로그램으로 넘겨 준다. 그렇기 때문에 A나 1 같은 문자 글쇠에다가 Backspace 1 같은 걸 배당하면 평소에는 글자가 지워지는 게 아니라 A나 1이 입력되어 버린다. 앞 글자를 지우고 싶으면 이런 고수준의 Backspace n 특수글쇠를 배당하는 게 아니라, Backspace가 수행하는 저수준 동작인 '한 타 지우기, 마지막 단계의 낱자 전체 지우기, 입력 순서와 관계 없이 마지막 단계의 낱자 한 단계 지우기'를 배당하는 게 보통이다.

Backspace 3과 4는 저런 오동작이 없다. 언제나 글쇠를 가로채며, 구현체의 기술적인 한계로 인해 앞 글자를 건드릴 수 없을 때는 그냥 아무 동작 없이 가만히 있기만 한다. 입력기 차원에서 조합 바깥의 앞 글자를 직접 지울 수 없는 환경에서는 T ? C0|0x8A: KY|8 이렇게.. 한글을 조합하고 있을 때만 bksp 3, 아니면 수동으로 bksp 생성(응용 프로그램이 글자를 직접 지우게) 이렇게 bksp 기능을 혼용해도 된다. 이런 방식으로 bksp가 아닌 자리에 bksp의 기능을 독자적인 동작 옵션으로 온전히 이식이 가능하다.

6. 글쇠배열 편집 UI에 시각 피드백 추가

<날개셋> 한글 입력기는 잘 알다시피 기본 입력 스키마에 글쇠배열을 편집하는 기능이 있다. 그런데 상위 옵션의 영향으로 인해, 여기서 글쇠배열을 아무리 고쳐도 그게 실제 입력 때 반영되지 않는 경우가 있다.

  • 첫째, '빈 입력 스키마와 호환되게' 옵션이 켜져 있고 현재 편집기가 아닌 외부 모듈/입력 패드 구현체를 사용 중일 때. 이때는 해당 입력 항목은 의도적으로 모든 글쇠를 처리하지 않고 넘기는 '빈 입력 스키마'와 동일하게 동작하므로 자신의 모든 입력 설정들이 무효가 된다.
  • 글쇠 인식 옵션에서 기존 글쇠배열의 문자· 숫자· 기호 47개 자리의 일부를 지정하여 다른 용도로 사용하고 있을 때. 여기에는 가로채지 '않게' 하는 것도 포함된다.

이제는 이런 상황에 속하는 글쇠들은 회색으로 흐리게 표시되며, 전부 또는 일부 글쇠가 이런 이유 때문에 동작하지 않는다는 설명문까지 잠시 표시된다. 그러므로 글쇠배열을 고쳤는데도 그게 동작하지 않고 왜 그런지 사용자가 이유를 알지 못하는 상황을 예방할 수 있다.

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

'빈 입력 스키마와 호환되게'의 영향을 받는 구현체에서 해당 옵션을 켜면 추가 글쇠 인식 옵션이라든가, 고급 입력기의 고급 글쇠 인식 옵션도 다 흐리게 표시되어서 값 편집 불가 상태가 되게 했다. 어차피 이런 기능들이 동작하지 않는 상태가 되기 때문이다. 이번 버전에서는 이런 UI도 추가했다.

7. 그 밖에 사소한 개선과 버그 수정

(1) 편집기에는 한 글자만을 찾는데 찾는 조건을 수식을 이용해서 세밀하게 지정하는 '문자 영역 찾기'라는 기능이 있다.
거기에다가 앞글자 P와 뒷글자 N이라는 변수도 추가해서 사실상 최대 3글자까지 연달아 찾을 수 있게 했다. 마침표가 이어지지 않는 '다'를 찾는다거나, 한글 다음에 이어지는 한자를 찾는 식으로 활용이 가능하다. 문단의 앞에서는 P는 0, 문장의 끝에서는 N은 0이 된다.
또한 내정값으로도 한글 낱자 중에 유니코드 5.2 새 낱자만 찾는 수식도 추가했다.

(2) "한글 낱자 정규화" 텍스트 필터에 꽤 황당한 버그가 있는 것을 발견하여 고쳤다.
NFC 정규화를 시켜서 현대 한글이 옛한글처럼 자모 형태로 풀어져 있는 것을 바로잡고 나면, 그 뒤에 등장하는 옛한글들은 이상한 쓰레기 문자로 바뀌곤 했다.
한글의 정규화 방식이 바뀐 지난 8.0 버전에서부터 존재한 버그였다. 내가 스스로 찾아 낸 건 아니고 사용자의 제보를 통해 확인했다.

(3) <날개셋> 한글 입력기는 영문 UI에서 '한글'을 표기할 때 과거에는 Hangeul을 쓰다가 나중에 Hangul로 바꿨다. 당장 유니코드의 영역 이름에도 Hangul이 쓰이고 외국에서는 eu보다 u가 훨씬 더 널리 퍼져 있다고 판단되어서다.
그런데 프로그램 UI 중 특별히 콤보 박스 안의 항목이라든가, xml에 들어가는 내정값 같은 데에서 여전히 eu 표기가 남아 있는 것을 뒤늦게 자체적으로 확인하여 고쳤다.

(4) <날개셋> 제어판의 낱자 결합 탭에서 '낱자 결합 규칙'을 등록하는 UI에서..
'추가'를 그냥 클릭하면 지금까지 그런 것처럼 새 항목이 추가되고 입력 포커스는 A+B=C 중에 A의 위치로 간다.
하지만 Ctrl+클릭을 하면 A와 C의 값이 서로 뒤바뀌고 포커스는 A가 아닌 C에 가게(교환으로 인해 A의 값을 갖게 된) 했다.
그래서 A+B=C에 이어서 역으로 돌아오는 C+B=A라든가, C+B=D처럼 연타에 의한 후속 조합을 지금보다 더 수월하게 등록할 수 있게 했다.

(5) 끝으로 낱자 결합 규칙, 각종 사용자 정의 조합/후보 목록 등, <날개셋> 제어판에서 Windows 폰트가 아니라 자체 비트맵 글꼴로 출력되는 모든 UI들은..
뭔가 아이템을 추가/삭제하거나 순서를 조정하고 나면 지금까지는 스크롤 위치가 엉뚱하게 바뀌고 선택 막대도 화면 맨 아래에 어설프게 걸친 위치로 바뀌곤 했다. 이것 때문에 지금까지 무척 불편했는데 이걸 드디어 원천적으로 개선했다. 스크롤이 필요 없으면 스크롤이 발생하지 않으며, 선택 막대도 언제나 화면 안에 온전히 출력되게 했다.

Posted by 사무엘

2016/02/27 08:30 2016/02/27 08:30
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1197

기원에 대한 논의 외

* 예전에 이미 했던 말도 있겠지만 중요한 사항이니 다시 정리하겠다.

1. 언어의 기원

기원을 알기가 제일 난감한 분야이다. 화석이고 뭐고 물리적인 형태가 전혀 없기 때문이다. 문자 기록으로는 음운 계층에서의 통시적인 변화만을 추적할 수 있을 뿐, 그 문자의 저변이 되는 그 시절의 실제 음성 기록을 100% 정확하게 재현하는 건 불가능하다. 그 시절에 녹음기가 존재하지 않았으니 말이다.
하다못해 중세 국어에서 옛한글 자모의 음가조차도 여러 학자들의 추정만이 존재할 뿐 실제 발음이 딱 부러지게 어떠했는지는 알지 못한다.

음운뿐만이 아니라 형태· 어휘· 문법 쪽으로 간다 해도, 동물적인 꽥꽥 끼릭끼릭 의성 의태어로부터 추상적인 개념에다 복잡하고 재귀적인(안은 문장, 이어진 문장) 문법이 저절로 등장한다는 건 아무리 긴 시간이 흐른다 해도 실현 불가능이다. 그건 아메바로부터 원숭이를 거쳐서 사람이 저절로 만들어지는 것만큼이나 불가능이다.

고대까지는 몰라도 중세급의 과거 언어는 현대의 언어보다 더 음운이 다양하고 복잡하면 복잡했지, 오늘날보다 더 단순한 구조는 아니었다는 게 통론이다. 한국어만 해도 과거에는 '여덟'에서 ㅂ이 실제로 발음되었고 받침 ㅎ도 발음되었고 자음이 두 개, 세 개씩 있는 등 지금보다 스케일이 더 컸으리라 여겨지고 있다. 언어는 시간이 흐를수록 이것저것 탈락하고 생략되고 중화되고 제약이 생기는 쪽으로 변하는데 그럼 처음에 그 복잡한 시스템은 언제 어떻게 갖춰질 수 있었겠는가? 통상적인 진화론과는 정반대 경향이 아닐 수 없다.

언어야말로 걍 GG 치고 신수설을 주장한대도 증명도 반증도 할 수 없는 가장 난감한 분야이다. 그냥 신앙· 신념의 영역일 뿐이다. 언어에서 기원은 언어학계에서도 불가지론으로 간주되며 더 구체적인 논의 대상이 아니다. 과학적인 방법론을 동원해서 연구할 거리 자체가 없다.

2. 생명의 기원

생명은 무생물로부터 저절로 생겨나지 않으며, 스스로 유전자 차원에서 더 고등한 종으로 바뀌지도 않는다. 이건 일단 인정하고 들어가자.
유기물· 단백질처럼 생명을 담는 껍데기 그릇을 일부 겨우 합성하는 데 성공했다고 해서 거기에 생명이 생기는 것 역시 아니다. 다른 무생물 기계는 부품들의 상호 연결이 끊어지면 곧바로 작동이 멈춰 버리는 반면, 생명은 세포 단위로 쪼개도 각각의 단위들이 다 생명이 있어서 스스로 살려고 발버둥치고 노력한다는 매우 큰 차이가 있다.

생물과 무생물의 차이 중 이런 고증을 반영한 것이 스타크래프트에서 저그와 테란의 대미지 컨트롤 능력이 아닌가 한다. 저그는 건물과 유닛 공히 체력이 1만 남아도 아주 천천히라도 자동 회복되는 반면, 테란은 그런 게 없기 때문이다. 오히려 사람 서플라이가 없는 건물은 체력을 2/3 이상 잃은 뒤부터는 스스로 파괴돼 버리기까지 한다.

이걸 인간이 도대체 어떻게 만들어 내겠는가? 지구 안에서는 빛도 산소도 없고 도저히 생명체가 존재할 수 없다고 여겨지는 척박한 수천 m 아래 초고압 해저에도 심해어가 존재하지만, 반대로 지구 밖의 광활한 우주에는 생명이란 게 일단은 전혀 없다는 것 역시 진지하게 생각할 점이다. 이건 뭔가 인위적인 현상이라고 보는 게 자연스럽다.

다음으로 연대기 문제로 넘어가면, "지금" 지구상에 존재하는 인간을 포함한 모든 생명들은 할아버지에 할아버지를 거듭해서 거슬러 올라가면 6천여 년 전의 6일 창조에서 딱 끝난다고 일단 본인은 믿는다. 세속 역사에서도 인간의 문명이라는 건 천 자리 범위를 넘어서는 연도의 과거로는 절대로 가지 않는다.

단, 그 전의 엄청 옛날, 이전 세상에서도 생명체가 있긴 했다. 그러다 이전 세상이 멸망한 뒤 대부분의 품종은 원래 있던 종류대로 다시 창조되긴 했는데(after his kind), 다만 고래나 인간 같은 일부 종은 예전에 없었다가 6천 여 년 전에 새로 등장하기도 했다. 성경이 말하는 이전 세상의 멸망은 지질 시대에서 다루는 '대멸종'과 관계가 있을 거라는 생각이 든다.

3. 지구의 기원

방사성 원소· 탄소 원소 측정법 등 다양하게 교차 검증되는 방법을 통해 지구의 나이는 수십억 년 정도 되었다고 여겨지고 있다. 인간이 달에 실제로 간 적이 없다고 믿는 아폴로 계획 음모론자들은 달 착륙 미션이 오로지 아폴로 11호밖에 없었던 것처럼 생각하는 경향이 있는데, 이와 비슷한 맥락으로 젊은 지구 창조론자들은 지구의 나이를 측정하는 방법이 오로지 한두 가지 방법밖에 없는 것처럼 오해하는 경향이 있다.

하루는 우라늄 동위원소의 반감기를 이용해 지구의 나이를 측정하는데 이상하게 실험 진행이 잘 안 돼서 원인을 찾다 보니, 공기 중에 납의 농도가 비정상적으로 높다는 것을 알게 됐으며, 이게 자동차의 배기가스 때문이라는 것까지도 알아냈다. 이런 과정에서 20세기 후반에 무연휘발유가 발명될 수 있었다. 납은 인체에 몹시 해로운 중금속이기 때문이다. 연대 측정법이라는 게 저런 사소한 변인까지도 찾아낼 정도로 정밀하니, 창조 과학회의 주장만치 그렇게 호락호락 허술한 체계가 아니라는 뜻이다.

인류 이전에도 죽음 자체는 지구상에 존재했다. 이전 세상은 물의 넘침으로 멸망했지만, 그 시절의 흔적은 화석이나 지층에 남아 있다고 본인은 믿는다. 노아의 홍수보다 훨씬 더 거대한 스케일로 말이다.

4. 우주의 기원

흔히 생각하는 것과는 달리, 우주의 기원은 화석이나 지층 같은 '흔적'만으로 추론을 하는 게 아니다. 이 바닥은 수십억 년 전에 출발하여 수십억 광년 거리를 달려서 우리 눈에 도달하여 2차원 애니메이션을 만들어 내는 빛을 망원경으로 직접 관측하면서 현상을 해석한다! 방법론이 다른 기원과는 근본적으로 다르다. 그래서 "관측 가능한 우주"라는 개념이 있으며 대폭발설 내지 130억 년~200억 년 같은 계산이 나오는 것이다. (전산학에서 계산 가능한 문제, 과학에서 재연 가능한 현상, 철학에서 반증 가능한 명제처럼..)

이 연구 방법론이 근본적으로 부정되려면 (1) 예전에는 우주의 본질 자체가 지금과는 근본적으로 달라서 빛의 속도 자체가 지금과는 넘사벽급으로 달라질 수가 있어야 하거나, (2) 아니면 저 옛날 별빛의 모습이 실제 별빛이 아닌 페이크 가짜여야 한다. 허나 (1)은 과학적으로 가능성이 없으며, 과거라 해도 광속의 변화는 무시할 수 있는 아주 미미한 수준일 뿐이다.
그리고 (2)는 과연 하나님이 인간에게 자연 계시를 설마 그렇게까지 속임수를 동원해서 남기셨을까 하는 신학적인 문제를 일으킨다. 아무리 아담도 성년으로 창조됐고 닭과 달걀 중에 닭이 먼저라 해도, 저건 성년 창조설이라는 명목으로 실드 칠 수 있는 범위를 넘어선다고 여겨진다.

덧붙이는 말

0.
기원과 관련된 기독교계와 세속 과학계의 논쟁은 가장 먼저 잘 알다시피 "2. 생명의 기원"에서 시작되었다. 언어의 기원은 양쪽 모두 근거가 부족하다 보니 별로 이슈가 되지도 않는 것 같고(걍 서로 믿고 싶은 대로 믿고 말자), 생명에 비해서는 지구나 우주의 기원은 비록 서로 전혀 무관한 건 아니지만 일단 부가적인 문제이다.
각각의 기원에 대해 어떤 견해를 갖고 있건, 일단 언어, 생명, 지구, 우주의 기원은 문제를 보는 관점이 다르고 연구하는 방법론이 서로 완전히 다른 분야라는 것을 인지해야 할 듯하다.

창조 과학회는 진화론만 반박하다가 "젊은 우주"를 주장하면서 생명 영역뿐만 아니라 지구와 우주 영역에까지 주변에 온통 적을 만들었다. 자기 학설이 받아들여지지 않고 사이비 유사과학 취급을 받는 게 온통 진리를 일부러 거부하는 부패한 무신론자 학계의 음모 때문이라는데... 진실은? 과연 글쎄다.

이들은 6천 년 전 문자적인 24시간 6일을 사수한 것은 잘한 것이지만 성경과 과학에서 모두 하나만 알고 둘은 모르는 병크로 인해서 오류를 저지른 것도 적지 않다. 결국은 이전 세상과 현 세상을 구분하고 6천 년 전 문자적인 6일 창조도 인정하되, 창 1:1-2 사이에 간극을 설정하는 것이 성경 교리도 문자적으로 정확하게 사수하고(특히 물과 어둠, 사탄 마귀의 기원) 세속 과학의 관찰과도 조화를 이루는 가장 훌륭한 방법이다. "젊은 생물(현 세상의), 오래 된 지구"인 것이다. 내가 보기엔 그것 말고는 답이 없다.

1.
성인 형태로 어제 갓 창조된 따끈한(?) 아담을 생각해 보자. 그는 덩치와 지능, 떡대만이 30대 청년이지 피부 표면은 가히 갓난아기처럼 뽀송뽀송하고 노화의 징조는 통상적인 30대 성인 수준으로도 전혀 발견되지 않았을 것이다. 활성 산소나 각종 해로운 찌꺼기 같은 것도 전혀 없었을 것이고 심지어 응가를 해도 우리와 같은 끔찍한 악취 없이 태변과 비슷한 분비물이 나왔을 것이다. (동안· 꽃미남· 미소년 이런 것과는 별개의 얘기임!) 그러니 생물학적 나이라는 것도 무슨 관점에서의 나이인지를 다시 생각할 필요가 있다.

게다가 결정적으로, 그는 30대 성년의 형태로 갓 창조됐다고 해서 자신이 직접 겪지도 않은 유년기, 10· 20대에 대한 기억을 갖고 있지는 않을 것이다. 하나님께서 그런 것을 거짓으로 주입해 넣으셨을 이유가 없다. 왜냐하면 하나님의 주요 성품 중 하나는 결코 거짓말을 하지 않으시는 것이기 때문이다(딛 1:2).

비록 기술적으로야 가능은 하겠지만 하나님은 자신의 성품에 위배되는 일을 하지는 않으실 것이다. 그저 "오래 된 것처럼 보이게 창조를 하셨겠지"라고 기원에 대해 넘겨짚기 전에 이런 면모도 진지하게 생각할 필요가 있다. 공장에서 갓 생산된 따끈한 새 자동차에 적산거리계만 한 10만~20만 km로 조작해 놨다고 해서 그 차가 진짜 오래 된 차인 것처럼 보일까?

2.
만화영화 라이온 킹의 대사가 문득 떠오른다. 거기에 나름 우주를 논하는 대화가 있기 때문이다.
심바· 품바· 티몬 일행이 거하게 저녁 식사를 한 뒤 풀밭에 누워서 밤하늘을 보고 있는데, 품바가 티몬에게 "야, 넌 저 밤하늘에 빛나는 점(별)들이 정체가 뭔지 궁금하지 않냐?" 라고 묻는다.
티몬은 자기는 답을 확실하게 알고 있기 때문에 궁금하지 않다고 의기양양하면서, 저것들은 시꺼먼 표면에 달라붙은 반딧불이라고 얘기한다. 휴.. 시골에서 반딧불이를 직접 본 사람이라면 그렇게 생각할 수도 있겠다.

품바는 "아 그래? 난 저것들은 수십억 마일 이상 떨어진 곳에 있는 가스 불덩어리인줄 알았는데. (아니었구나)" 이렇게 얘기함.
품바의 말이 정답임에도 불구하고 티몬은 "ㄲㄲㄲ 넌 그냥 모든 게 가스인 것처럼 보이지?" 이렇게 면박을 준다. 이전의 하쿠나 마타타 씬을 보면 품바는 배 속에 가스가 가득찬 지독한 방귀쟁이여서 어린 시절부터 왕따를 당했다고 나오니까..;;

이 대화에서 심바는 어린 시절에 부친에게서 언뜻 들은 종교 주술적인 대답을 했는데(돌아가신 선왕들이 별이 돼서 우리를 지켜본다) 이건 완전히 가루가 되도록 폭풍처럼 까인다.
그런데 영화 전체를 보면, 티몬의 말은 실제로 맞아서 적중한 게 별로 없었다. 오버와 허세가 좀 쩌는 듯..

  • 처음에 사막 한복판에서 쓰러진 심바를 발견했을 때 "사자를 키우면 위험하니 얘를 데려가서는 안 된다" → 심바는 전혀 위험하지 않았으며 품바· 티몬 일행과 잘만 친한 사이가 됨
  • "저 별들은 반딧불이다" → 네버.
  • 극중에서 Can you feel the love tonight 노래가 끝나고 결말부. "심바와 날라가 서로 상봉했으니 우리 우정은 이제 끝장났다" 엉엉 ㅠㅠ → 그 뒤에도 전혀 끝장나지 않음.

콜?

Posted by 사무엘

2016/02/24 08:36 2016/02/24 08:36
, , , , , , , , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1196

흔히 한국어가 한편으로는 끔찍하고 한편으로는 구수한(?) 욕설이 유난히 발달해 있다고 하는데.. 사람 사는 곳은 동서고금 어디나 마찬가지이고 다른 문화권에서 폭언과 욕설이 없는 건 아니다. 다만, 한국어는 다양한 욕설 표현에 비해 '똥'이 단순 비하(똥컴, 똥차, 똥폰..) 이상으로 저주나 다른 욕설로는 거의 쓰이지 않는다는 게 이례적이다. (shit, 쿠소 등)

미국은 마초이즘에 입각한 군사물에서 욕설이 많다.
듀크 뉴켐 3D/포에버에서는 게임 중에 개마초 주인공의 궁시렁궁시렁 성인 욕설을 들을 수 있으며,
둠도 게임 자체는 스토리가 부실하지만 이를 배경으로 한 둠 코믹스는 매 장면들에 강렬한 욕설을 동반한 명대사들이 즐비하다.
포레스트 검프에서는 카우보이 모자를 쓴 훈련소 교관이 그냥 말 끝마다 '갓댐'인 거 다들 기억하실 것이다.

이거 끝판왕은 역시 월남전을 배경으로 하고 있는 스탠리 큐브릭 감독의 <풀 메탈 자켓>에 나오는 하트만 상사. 후대의 전쟁 영화에 등장하는 악질 교관의 표준 컨셉을 제시했다고 해도 과언이 아니다. "훈련소를 수료하고 나가는 날 네놈들은 일당백 인간 흉기 전사로 개조돼 있을 것이다. 그러나 그 전까지는 네놈들은 그냥 인간 이하의 구더기, 토사물만도 못한 개 쓰레기들이다! 알겠나~~!"

제3자가 들으면 그야말로 웃음이 나오기까지 할 정도의 찰진 욕설, 특히 부모 패륜 드립과 음담패설이 넘쳐난다. 흔히 군대에서 총(개인 화기)은 니 애인, 니 불알보다도 더 소중하게 간수하라고 그러는데, 실제로 그걸 빗댄 섹드립 군가를 부르는 것도 있다. 똑같이 내 총인데, 이건 전투용, 저건 유흥용이라고.. -_-;

듣기로는 시나리오 작가가 써 준 정식 대사 외에 배우의 즉흥 애드립으로 들어간 것도 많다고. 이런 욕도 어지간히 창의력이 뛰어난 언어의 마술사가 돼야 만들어 낼 수 있지 아무나는 못 한다. 근데.. 현장에서 그 욕설을 듣고 진짜로 웃어 버린 고문관은 저 교관한테 완전 찍혀서 군생활이 꼬인다.

스타 1에서 시즈 탱크를 지겹도록 클릭했을 때 나오는 대사 중 하나가 What is your major malfunction?인데.. 이것도 출처가 이 영화에서 하트만 상사의 대사이다. 사실은 "너 미쳤냐 쳐돌았냐? 도대체 어디 장애가 있냐? 대가리에 총 맞았냐?" 급의 꽤 강한 비하· 모욕 뉘앙스가 들어간 갈굼이다.

이건 반전 컨셉으로 군대의 비인간적인 면모를 비판하고 깔 목적으로 만들어진 영화임에도 불구하고, 오히려 저런 묘사가 마초스럽고 멋있다며 미군 관계자들이 좋아했을 정도였다고 한다.

왜, 국내에서도 10여 년 전에 MBC 제5공화국 드라마가 방영되니까 이 덕화 씨의 연기 덕분에 멋있다고 도리어 전 두환 팬클럽까지 생겼다지 않는가? 정치 견해 때문이 아니라 그냥 멋있다고. -_- "좋아, 아주 좋아"처럼 말이다..;; 원래는 그 드라마가 군사 정권을 얼마나 비판하고 까는 컨셉인데도 역효과가 난 것이다.

21세기 이후에 오늘날까지 전대갈, 전땅크 하면서 그에 대해서 조금이라도 멋있어하는 이미지는 거기서 유래되었다고 해도 과언이 아니지 싶다. 또한 이건 옛날에 얼짱 강도 현상수배 포스터가 나돌자 그 사람 팬카페가 생겼던 것과도 비슷한 이치이다. -_-;;
(얼짱 강도도 참 오랜만에 다시 회상하네. 그 예쁘장한 아가씨는 남자 친구 잘못 사귄 죄로 강도 공범 혐의로 어린 나이에 전과가 생겼을 뿐만 아니라, 얼굴이 대문짝만하게 알려져 버리기까지 해서 인생이 한동안 굉장히 꼬였지 싶다. 안됐다. 그 뒤로 개명에 성형이라도 하고서 새 삶을 잘 살고 있길..;;)

창작물이 아니라 실존 인물 중에서는 성깔 하나는 둘째 가라면 서러웠던 조지 패튼 장군이 있었다. "제군들은 이제 제대 후 고향에 가서 손주들에게 이렇게 당당하게 말할 수 있을 것이다. '이 할아버지는 2차 대전 때 후방에서 꿀이나 빨고 있지 않았다. 조지 패튼이라는 빌어먹을 개XX와(a son-of-a-goddamned-bitch named George Patton) 함께 최전방에서 용감하게 진군했다'라고 말이다!" 자기 자신에 대해서 아예 연설을 저렇게 했다.

정치· 군사· 안보 같은 심각한 주제 말고 다른 분야에서는 '욕쟁이 할머니'라는 컨셉· 기믹이 있다. 한국만의 고유한 문화인지는 모르겠다.
10여 년 전에 웹툰 츄리닝에서는 미국인 손님이 들어오자, 주인공인 욕쟁이 할머니 역시 영어를 직접 구사하진 못해도 비장한 표정과 함께 꼴뚜기질로 기선 제압을 했다는 병맛 만화가 올라오기도 했다.

사용자 삽입 이미지

1960년대 말이던가 박 정희 대통령이 전주에 시찰을 와서는 삼백집이라는 실존 콩나물국밥 식당을 이용했는데, 그 당시 거기도 주인장이 내공 백 단의 욕쟁이 할머니였댄다.
처음엔 수행원들이 미리 방문해서 배달 주문을 하려 했으나, 당연히 "이 썩을놈들이 얻다대고 배달 같은 소리나 씨부리고 쳐자빠졌네(혹은, X랄이야).. 직접 와서 쳐먹어!"라는 불호령과 함께 단칼에 문전박대를 당했다.

주인장은 직접 찾아온 박 대통령에게도 인정사정 없이 욕으로 상대했고.. 식사 중인 박통의 얼굴을 찬찬히 뜯어 보더니 반숙 계란 요리를 서비스로 가져와서는 "어라, 이눔 봐라? 네놈은 신문에서 보던 박 정희랑 어찌 그리 얼굴이 묘하게 닮았더냐? 그런 의미에서 옜다, 이거나 더 쳐먹어라." 그랬댄다.. =_=
박통은 껄껄 웃으면서 "내가 박 정희를 닮은 게 아니고 박 정희가 날 닮은 거요"라고 넘겼댄다. 주인장은 그건 "에라이 니미럴 염병하네"라고 응수했을 테고.

박통은 훈훈하게 밥을 잘 먹고 서울로 돌아갔다. 그 식당 주인장은 몇 년 후 노환으로 타계했지만, 전해지는 야사에 따르면 그때 그 놈팽이는 대통령을 아주 닮은 사람이었을 뿐이라며, 설마 진짜 박통이었을 거라고는 죽는 순간까지도 절대로 믿지 않았다고 한다.

군사 쪽이든 민간 쪽이든.. 욕도 아무 컨트롤 없이 무개념으로 싸지르면 정말로 교양 없고 무례한 양아치밖에 되지 않을 것이다. 욕을 해도 때와 장소와 대상을 가려 가면서 센스 있게, 창의적으로(?), 그리고 궁극적으로는 듣는이에 대한 애정을 담고 자기 본업의 장인 정신까지 포함해서 "츤데레"스럽게 구사해야 할 거다.
이런 가이드라인을 준수할 자신과 멘탈이 없다면, 차라리 언제나 정중하게 바른말 고운말 컨셉만 유지하는 게 자신의 대외 평판에 나을 것이다.

Posted by 사무엘

2016/02/21 08:29 2016/02/21 08:29
,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1195

1. 공산주의 유머

구소련의 사회/정치 관행을 풍자한 공산주의 유머 중에는 이런 게 있다.

(1)
소련의 한 작은 마을에 살던 이반이 시베리아 수용소에 끌려갔다가 그나마 살아서 돌아왔다. 마을 사람들은 한데 모여서 그에게 수용소 생활이 어땠는지 이야기해 달라고 부탁했다.
그는 거기 일상은 물자가 좀 열악하고 따분한 노동의 연속이긴 했지만 그래도 그럭저럭 지낼 만했다고 털어 놓았다. 이에 어떤 마을 사람이 이렇게 반문했다.

"놀랍군, 이반. 하지만 얼마 전에 시베리아에서 돌아왔다가 다시 끌려간 미하일의 말은 정반대였는데? 열악한 환경에서 끔찍한 인권 유린, 살인적인 중노동이 밤낮으로 이어졌다고 말야."

그러자 이반은 담배를 깊게 빨고는 한 마디 했다.
"아, 그 친구? 말을 그딴 식으로 했으니 당연히 또 끌려갈 수밖에 없지."

... 마을 사람들은 모두 찬물을 끼얹은 듯 숙연한 표정으로 고개를 끄덕거리며 흩어졌다.

(2)
러시아에 사는 한 유대인 부부가 이스라엘로 이주하려고 애썼는데, 행정상의 잘못으로 인해 서로 헤어지게 되었다. 남편인 아브라함을 제외한 그의 아내와 아이들만 소련을 떠나도 된다는 허락을 받은 것이었다.

가족이 찢어지게 되었고 당분간 서신 왕래만 가능할 텐데, 부부는 소련 당국의 검열을 피하기 위해 간단한 규칙을 정했다. 편지에서 남편이 검은색 잉크로 쓴 글자는 사실이므로 문자 그대로 이해하면 되고, 붉은색 잉크로 쓴 글자는 전부 거짓이니 반대로 이해하라는 것이었다.

아내와 아이들이 이스라엘에 도착한 지 일주일 후, 그녀는 남편으로부터 편지를 받았다. 편지는 검은색 글씨로 "여긴 모든 게 괜찮다. 여건이 더 좋아지고 있고 먹을 것도 풍부하고 사람들은 표현의 자유를 누리기 시작했다." 등 온통 긍정적이고 희망적인 내용이었는데...
편지는 끝까지 읽어 봐야 했다. 추신엔 이런 문장이 있었다.

"그런데 말이오, 한 가지 문제가 있소. 아무리 해도 붉은색 잉크를 도무지 구할 수 없구려."


이걸 보면 공산주의 국가에서는 왜 표현의 자유를 허용할 수 없는지, 남한과 북한끼리는 제대로 된 이산가족 상봉은커녕 서신 왕래와 전화 통화조차 왜 절대로 성사되지 못하는지 그 본질적인 이유를 알 수 있다. 조금이라도 정보 왕래의 통로가 뚫리면 사람들은 정말 상상을 초월하는 기상천외하고 교묘한 방법으로 의사소통을 하려 애쓰기 때문이다. 가령, 빽빽한 텍스트에서 세로드립은 고전적인 테크닉 중 하나일 뿐이다.

범죄자가 아닌 다수의 평범한 사람들 간의 의사소통은 북한의 체제 유지에 도움이 되지 않는다. 반대로 소수의 간첩· 불온세력간의 의사소통은 불행히도 남한의 안보를 저해하는 용도로 악용된다. 그러니 서로 왕래를 절대로 할 수 없게 막아 놓는다.

2. 일본의 재일 교포 북송 사업

저 공산주의 유머에서 1은 그렇다 치더라도 2의 경우 실제로 비슷한 사례가 가까운 곳에 있었다.
과거에 우리나라가 일제로부터 해방되고 나자, 일본은 그 뒤에도 한국으로 돌아가지 않고, 그렇다고 일본으로 정식 귀화하지도 않고서 자기네 나라에서 계속 정착해 있는 조선인 집단 때문에 골머리를 썩고 있었다. 이거 뭐 과거의 식민지 시절처럼 정부 차원에서 대놓고 차별하고 착취하거나 잡아 가둘 수도 없고..;; 그 당시 남한과 북한은 모두 공식적으로 일본과는 서로 생까는 미수교 상태였을 뿐만 아니라, 본토 사정도 워낙 가난하고 혼란스러웠으니 재일 교포들을 일일이 다 받아 주고 챙길 여유가 없었다.

그런데 6·25 전쟁을 한바탕 치른 뒤 1950년대 말엔 북한이 일본 내부의 조총련을 주축으로 하여 재일 한국인들을 대대적으로 북한으로 데려 오려는 공작을 벌였다. 북한은 노동 인력을 확보하고 자기 체제를 어필하고 싶었으며, 일본은 재일 교포들을 빨랑 워이~ 내보내고 싶었으니.. 이해관계가 서로 맞아서 거래가 성사되었다. 물론 일본이 대놓고 공산주의 국가와 손잡는 건 국제 정세상 보기가 안 좋기 때문에 적십자라는 민간 단체를 거쳐서 일을 진행했다.

북한 당국과 일본 적십자사는 우리로 치면 마치 월북 권유 불온삐라처럼, "북한은 공산권 국가로부터 원조를 직통으로 받으면서 한창 발전 중임. 아직도 전쟁 폐허에 거지들이 우글거리는 헬게이트 남조선과는 차원이 다름! 무상 의료 무상 복지! 지금 이 기회에 북한으로 가면 정착 지원이 얼마이고 혜택이 어쩌구" 하면서 온갖 감언이설로 재일 교포들을 현혹했다.

그리고 이 말을 믿고 실제로 북한으로 가는 사람들이 몇백 명 정도 생겼다. 교류가 완전히 끊어져 버린 남한/북한과는 달리, 북한/일본은 그 당시 아직 일말의 서신 교류는 가능했던 모양이다. '만경봉호'라고 불린 북송선을 먼저 타기로 한 어떤 교포는 후발대에게 편지로 연락을 주기로 약속했는데.. 여기서는 저 서양 유머 버전처럼 변별 요소가 잉크 색깔이 아니었다. CJK 문화권답게 "내가 편지를 세로쓰기로 보내면, 저 소문이 사실이란 뜻이오. 이북이 정말 살기 좋은 곳이니 너도 후속 북송선을 타고 빨랑 오시오. 하지만 가로로 써서 보내면 저거 다 거짓말이라는 뜻이니 오지 마시오."라고 규칙을 정했다.

결과가 어땠을까? 후발대에게 도착한 편지들은 검열을 의식하여 겉보기로 내용은 온통 지상락원 드립에 위대한 김 일성 장군님 칭송이었다. 그러나 텍스트가 배열된 형태는 한 치의 예외 없는 가로쓰기였다! 그래서 그 편지를 받은 사람들은 기겁을 하고 월북(?)을 포기했다는 일화가 전해진다. 영락없이 저 공산주의 유머의 실화 버전이지 않은가?
심지어 "여기는 일본의 ○○○만치 풍요로워요!"라는 문장도 있었는데, 북한 관리가 일본 문화를 몰라서 검열을 통과했을 뿐, ○○○는 실제로는 '달동네, 꽃동네' 급의 일본의 극빈민가 명칭이었다. 영락없는 반어법이 된 셈.

일본에서 재일들은 다소 차별 받으며 2등 인민 취급을 받아 왔다고 하지만, 북한에서의 실제 대접은 2등도 못 되는 삼류 이하 적대계층이었고 여건이 훨씬 더 나빴던 것이다. 차라리 일본에서 계속 지내는 게 나았다. 그들은 감언이설에 속은 것이었다.
아니, 상식적으로 생각을 해 보라. 2등 인민이라지만 일단 자유 진영 바깥 문물을 맛보다가 저 미끼에나 달랑 낚여서 들어온 사람들을 북한 당국이 호의적으로 대접해 줄 하등의 이유가 없지 않겠는가? 감시하고 착취하고 부려먹기나 하겠지.

3. 검열의 과거 실제 사례

하긴 옛날에 유럽에서는 1차 세계 대전 때 참호전이 워낙 참혹한 생지옥이다 보니, 병사들이 고향으로 편지를 보낼 때 현장 묘사를 대놓고 하지 말라고 불가피하게 검열을 했다. 전시에 이 정도로 표현의 자유를 좀 통제하는 건 심지어 미국도 괜히 반전 여론을 일으키지 않으려고 슬금슬금 한 적이 있다.

하지만 그 정도면 낫지, 나치 독일의 유대인 강제 수용소로 가 보자. 입구에는 보통 "ARBEIT MACHT FREI(노동이 그대를 자유케 한다)"라는 표어가 마치 군부대 입구의 표어처럼 만들어져 있는데, 어떤 수용소의 것은 ARBEIT의 B에서 윗부분의 D 모양이 아랫부분의 D보다 살짝 크게 글자 모양이 좀 왜곡돼 있었다. 보통은 둘 다 완전히 동일하거나, 아랫부분이 윗부분보다 더 크지 않던가.

사용자 삽입 이미지

전혀 자유롭지 않은 참혹한 수용소에서 수감자들이 저딴 표어까지 강제로 만들어야 하다 보니, 아~주 소극적이고 깨알같은 저항으로 역설을 표현한 것이었다. 삐딱한 B의 의미는 "자유 같은 소리 하고 쳐자빠졌네. 여러분 이거 다~ 거짓말인 거 아시죠?"였다.
노동 정신을 크게 왜곡한 저 역사적 사례로 인해, 말 자체는 별로 문제될 게 없던 저 표어는 오늘날 그쪽 바닥에서는 나치식 경례만큼이나 절대금기 표어가 되어 버렸다. 뭐, ARBEIT 자체는 알바/아르바이트 덕분에 한국어에서 가장 잘 알려진 독일어 단어가 돼 있긴 하다만..;;

한편, 우리나라에서도 손 기정 마라토너는 일장기와 관련하여 가슴아픈 사례가 과거에 있었다.
3등을 한 남 승룡 선수는 손 기정에 대해... 1등을 해서 금메달을 받고 히틀러와 악수까지 한 건 별로 안 부럽고, 진짜 부러운 이유는 따로 있었다고 회고했다. 그는 우승자인 덕분에 월계수 화분을 득템했으며, 그걸로 복부의 일장기를 그럭저럭 가릴 수 있었기 때문이다!

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

허나, 시상대의 측면에서 찍은 사진은 손 기정의 노력에도 불구하고 보다시피 일장기가 여전히 노출되는 형태로 찍혔으며, 일본의 언론은 이를 그대로 보도했다. 동아일보는 그 사진을 인용하면서 마치 인쇄 실수나 기술 한계인~~ 척 일장기 부분을 하얗게 덧칠하여 슬쩍 지우고 얼룩으로 가려서 사진을 내보냈으나, 포토샵이 없던 시절이어서 그런지 이건 조선 총독부 검열에서 고의적인 덧칠 삭제라는 게 탄로났다. 그래서 해당 신문사는 기자와 화가가 콩밥을 먹고 사장이 경질되었으며, 그걸로도 모자라서 신문 자체가 정간 처분까지 받는 보복을 당했다.

암울한 일제 강점기였으니까 저런 행동이 항일 독립 운동의 일환이라고 칭송받지, 순수하게 언론의 자세로만 따지자면 저런 식의 사진 변개는 아무리 일본이 원쑤라고 해도 바람직한 행동이 아니라고 개인적으로 생각한다. 절대로 져서는 안 되는 축구 한일전이라 해도, 한국 선수가 반칙을 한 건 한국인 심판이라도 지적할 수 있어야 하며, 언론은 현장에서 있었던 일은 일단은 있는 그대로 보도해야 하지 않는가? 책에서도 번역자는 번역만 해야지 제멋대로 원문을 해석하고 고쳐서는 안 되듯 말이다.

물론, 지금의 배부른 기준을 갖고 그 시절을 제멋대로 판단할 생각은 없다. 애초에 일제가 동아일보를 저 정도로 해코지한 이유도 "일장기라는 최고조넘에 대한 모독 때문"이지, 팩트를 있는 "그대로 보도하지 않고 사진을 왜곡했기 때문" 자체가 아니니까 말이다. 그건 그리 중요한 문제가 아니었다.

그리고 손 기정 본인도 동아일보 이상으로 표현의 자유 제약 때문에 괴로움을 당했다. 우승 소감 인터뷰를 녹음할 때 말이다. "저 언덕에서 일장기가 나를 반겨 주더군요. (...) 이 승리는 내 개인의 승리가 아니라 전 일본 국민의 승리입네다" 이런 영혼이 없는 말을 강제로 각본대로 읽어야 했기 때문이다. 이런 낯뜨거운 대목에서 손 기정의 말투가 오그라들자 옆에서 누군가가 '크게 말해!' 면박을 주는 장면까지 살짝 녹음되어 들어갔다. 그게 그 시절의 아픈 모습이었다.

4. 일본 적십자 센터 폭파 미수 사건

주변 잡설이 또 길어졌으니 다시 재일 교포 북송 얘기로 돌아오겠다.
이렇게 일본과 북한이 서로 짜고 재일 교포들을 북송하는 것에 대해, 남한을 접수하고 있던 이 승만 정권은 굉장한 불쾌함과 거부감을 표시했다. 비록 우리 남한도 너무 가난해서 이들을 다 포용하고 먹이고 재우고 일자리를 줄 처지는 못 되지만, 그래도 이들도 같은 동포인데 북한으로 그것도 거짓말로 꾀어서 보내는 건 절대 있을 수 없다는 입장이었다. 뭐, 남북 체제 경쟁에서 뒤쳐진다는 압박감도 덤으로 있었겠지만 말이다.

지금으로 치면 중국과 불거져 있는 탈북자 북송 문제와 비슷하다.
목숨 걸고 탈북을 시도한 사람들을 다시 생지옥으로 돌려보내는 건 인간적으로는 정말 잔인하고 극악무도한 짓이다. 하지만 중국의 입장에서 저 탈북자들은 자국 땅에 있어 봤자 좋을 게 하나도 없고, 또 북한과 맺은 약속도 있고 하니 저렇게 미지근하게 대응하는 것이다. 일본이 재일 한국인이라는 '난민'에 대해 갖고 있는 감정도 이와 같지는 않지만 비슷했다. 저놈들이 북한 가서 어찌 될지는 내 알 바 아니고, 일단은 골치 아픈 사람들이 우리 땅에서 나가 주니까 누이 좋고 매부 좋은 거다.

게다가 그 당시에 이 승만은 평화선을 선포해 놓고, 독도 일대에서 깝죽거리는 일본 어선을 해군까지 동원해서 무자비하게 쫓아내고 나포하고 있었다. 그걸로도 모자라서 쓰시마 섬까지 한국 땅이니 내놓으라고 으름장을 놓았다.
기가 찬 일본은, 한국으로부터 편지나 소포가 왔는데 우표가 울릉도· 독도가 그려진 것이면, 그 우표에서 독도 부분을 뜯어내고 물건은 그대로 반송을 해 버릴 정도였다...;; 그런 쪼잔한 저항이 통용될 정도로 한국과 일본은 안 그래도 미수교인 데다 앙숙이 돼 가고 있었다. 이런 일본이 재일 교포 북송 문제에 대해서 대한민국의 고집불통 대통령의 말을 들어야 할 하등의 이유가 있었겠는가? 도대체 무슨 이쁜 구석이 있다고?

이 승만은 어렸을 때 조선이 외교전에서 밀려서 미국으로부터 버림받고 서서히 일제에게 먹혀 망하는 걸 똑똑히 지켜본 대통령이었다. 그게 평생 남는 트라우마였다. 그래서 먼 훗날 대통령이 된 뒤엔, 비록 내치에서는 부하를 잘못 뽑고 병크도 많이 저질렀지만 외교는 정말 한 치의 양보가 없는 초강경 노선을 고집했다. 그는 그 시절 세계 각국의 정상들 중에 최강의 고학력자였으며, 이 바닥은 똘끼 충만한 고수 100단이 돼 있었다. 이 꼰대 영감쟁이가 뭔 똥고집을 부리다 무슨 사고를 칠지는 아무도 예상할 수 없었다.

대표적인 예로 그는 전쟁 중에 북한 송환을 원치 않던 거제도 반공 포로를 무단으로 석방해 버린 전력도 있다. "자유를 원하는 개인에게 자유를 선사해 주는 게, 그들을 인질로 잡고서 외교 거래를 하는 것보다 더 올바른 일이다. (그러니 이 자유를 지키는 전쟁을 무작정 정치 논리대로 어중간하게 휴전해 버려서도 안 된다!)"를 호소하기 위해서였다.
그와 같은 맥락으로, 재일 교포의 북송은 비록 남의 나라에서 일어나는 일이지만 눈 뜨고 지켜볼 수 없었다. 그래서..;; 이판사판인데 무슨 북파 공작원마냥 공작원을 "일본에다" 보내, 북송 주선 기관인 일본 적십자사 본사에다 테러를 가하려 했다.

실미도 북파 공작원만 있었던 게 아니다. 군사 정권이 아닌 이 승만 때 우리나라가 북한도 아닌 일본에다가 공작원을 보낸 적이 있었다는 사실을 아는 사람이 얼마나 될까? 무슨 항일 독립 운동가도 아니고! 이게 1959년의 일이다. 게다가 그 공작원 중에 김 구의 암살범인 안 두희까지 있었다는 건..;; 어지간한 소설과 영화를 능가하는 기막힌 노릇이 아닐 수 없다.
하지만 첫 시도가 그만 검문에 의해 발각되어 버렸으며, 추가적인 양성과 투입이 있기 전에 4·19로 인해 이 승만이 하야하면서 이 일은 없었던 것으로 묻히게 됐다.

곧이어 박 정희 군사 정권이 들어섰다. 이들은 쿠데타 이력를 무마하고 정통성을 확보하기 위해 반공 + 경제 개발을 적극 실천해야 했다. 그래서 1965년에는 그 당시에 매국질이라고, 일제 강점기 피해를 푼돈에 졸속으로 퉁쳤다는 욕을 잔뜩 쳐먹으면서 결국 일본과 재수교를 하게 된다. 경제 개발을 할 자금 밑천이 필요하기 때문이었다.

이 승만 시절에는 일본이 아직 전범 낙인이 단단히 찍혀 있던지라, 뼛속까지 반일 대통령이 비록 허세뿐이나마 일본을 상대로 갑질을 막 해댔다. 그러나 박통 때는 우리가 급전이 필요한 관계로 일본에게 상대적으로 저자세로 굽히고 들어가야 했다. 평화선도 이때 폐지되었다.

과거에 재일 교포 북송에 관여하던 조총련은 나중에 박통 때엔 육 영수 여사 피살 사건의 배후로 지목되면서 이미지를 더욱 나쁘게 구겼다. 이때는 책임 소재 규명에 미온적인 일본이 괘씸하다면서 박통의 입에서도 "(우리라고) 동경 폭격 못 할 줄 알아?"라고, 판문점 도끼 만행 사건 때에 버금가는 강한 말이 나왔다.
하긴, 일본은 역사적으로 핵폭탄뿐만 아니라 도쿄 소이탄 대공습의 끔찍한 트라우마가 있는 동네인데 저 소리 들으면 굉장히 발끈하긴 했겠다. 박통도 언제나 일본에 무조건 굽신굽신 하지는 않았다.

박 정희가 나라에 긍정적이든 부정적이든 끼친 영향이 워낙 너무 엄청나기 때문에, 이 승만 시절의 배고프던 남한은 남한의 역사인 것 같지가 않게 느껴질 정도이다. 그 정도로 이질감이 크다. 화폐 단위만 해도 1962년 이래로 현행 시스템이 유지되고 있으니 딱 박 정희 이전과 이후로 나뉘는 것이나 마찬가지이고, 이 승만은 '박 근혜' 같은 직계 후손도 없어서 더욱 단절감이 크다. 조선과 일제 강점기를 모두 경험하고서, 이 나라를 올바른 방향으로 세워만 놓고 건국 초기의 시행착오 병크로 인한 뭇매는 다 맞은 뒤 혜성처럼 사라져 버린 그리운 영웅이다. 기적을 통해 민족 해방을 경험하고, 나중에 타지에서 죽은 건 성경의 모세를 닮았다.

끝으로, 재일뿐만 아니라 먼 옛날에 쿠바에 이민 간 교민들도 남한과 북한 모두에게서 환영받지 못하고 사생아뻘 되는 지위로 전락해 있다고 들었다. 쿠바도 우리나라와는 아직까지 미수교 상태이다. 이 역시 슬픈 20세기 한반도 역사의 단면인 것 같다.

Posted by 사무엘

2016/02/18 08:30 2016/02/18 08:30
, , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1194

1. 사람이 죽었다

“왕을 해하려 하는 모든 자들은 그 청년과 같이 되기를 원하나이다.” (삼하 18:32)
성경에서 다윗은 아들 압살롬이 죽은 것을 부하의 이 말만으로 바로 알아채고 멘붕에 빠졌다.
사람의 생사를 확인하는 과정이 저렇게 은유적이고 드라마틱한 경우가 실제 역사나 창작물에서 종종 있었다.

1979년 10월 26일엔 잘 알다시피 박 정희 대통령이 암살당했다. 당시 대통령의 주치의였고 국군 수도 병원 서울 지구의 원장이던 김 병수 공군 준장은 엄중한 감시 하에서 얼굴도 모르는 어느 VIP 중상자의 의학적 사망을 인증했다. 허나, 복부를 보고서 이 사람이 다른 외국 귀빈이나 극비 첩보 요원이 아니라 대통령 각하임을 직감했다.

그 후 얼마 지나지 않아 국군 보안사로부터 전화가 왔다. 하지만 그는 청와대 경호원의 감시 때문에 이 사실을 마음대로 발설할 수 없는 처지였다. 이때 전화를 건 우 국일 준장이 거기 상황을 눈치 채고는, 대답을 예/아니요로 아주 간접적으로만 하면 되게 상황을 만들어 줬다.

작고했나? / 예
차 실장(차 지철)이냐? / 아니요
코드 원(각하)이냐?


이로써 군부는 대통령의 죽음을 확인하게 됐다. 무슨 통화를 했느냐는 경호원의 추궁에 김 병수 준장은 즉석에서 이렇게 둘러댔다고 한다.

거긴 아무 일 없냐? / 예
너 혹시 지금 신변의 위협을 받고 있냐? / 아니요
알았다. 여기도 잘 지키고 있으니 걱정 말고 있어라. / 예


2. 사람이 살았다

사망이 아니라 생존을 은유적이면서도 아주 짜릿하게 잘 표현한 경우는... 비록 실화가 아니라 영화 속 허구이긴 하지만 <에어 포스 원> 대사를 따를 게 없다. 이 영화는 딱 두 마디만 기억하면 된다. “내 비행기에서 내려! (Get off my plane)”와 바로 이것.

“자유 24호, 콜싸인을 변경합니다. 자유 24호가 이제 에어 포스 원입니다! (Liberty 24 is changing call signs. Liberty 24 is now Air Force One.”
“와아아~~~!!”


대통령이 죽거나 실종돼 버렸다면, 이 비행기는 대통령의 유가족만 탔기 때문에 콜싸인이 에어 포스 원이 아닌 다른 명칭이 됐을 것이기 때문이다.
<라이터를 켜라>도 "열차가 부산 역에 안전하게 멈춰 섰다. 다시 반복한다. 열차가 ..." 이런 방송과 함께 중앙 통제실이 환호 분위기로 바뀐다는 점에서는 <에어 포스 원>의 결말과 좀 비슷한 구석이 있다. 하지만 간지는 훨씬 덜하다.

정부에서 운용하는 물리적인 대통령 전용기가 있는 건 사실이다. 하지만 이와는 별개로, 현실에서는 그 특정 비행기가 아니라 대통령이 탑승한 비행기가 그냥 에어 포스 원이 된다. 물론 평소에는 대통령은 줄곧 그 전용기만 타겠지만 말이다. 이것은 오성장군 군대 계급인 원수랑, 국가 수장을 뜻하는 원수만큼이나 서로 혼동해서는 안 될 개념이라 여겨진다.

그리고 이것은 병역특례 티오하고도 비슷한 개념이다. 처음엔 병특 지정 회사들이 병무청으로부터 올해는 총 몇 명을 채용할 수 있다는 티오(인원 편성)를 받는다. 하지만 회사가 티오를 써서 일단 사람을 채용한 뒤에는, 그 티오는 회사가 아니라 복무자 자신의 소유가 된다.

어떤 회사가 2명 티오를 받아서 그만치 채용을 했다고 치자. 그런데 도중에 한 명이 전직· 만료하고 나간다 해도 그 회사는 다른 한 명을 병특으로 또 채용하지 못한다. 반대로 그 복무자는 병특 지정 업체이기만 하다면, 이미 티오를 다 쓰고 없거나 애초에 올해 티오를 한 명도 못 받은 회사로도 얼마든지 전직이 가능하다. 복무자 자신이 곧 추가적인 티오이기 때문이다.

즉, 회사 사정이 어떤지와 무관하게 업계 전체의 관점에서는 '병특 인원 보존의 법칙'이 성립한다. 그러니 이 제도는 상대적인 약자인 복무자에게 유리할 뿐만 아니라 병무청의 입장에서도 인원 관리하기가 수월해서 좋다. 복무자가 사고로 죽기라도 해야 그 티오가 그 사람이 당시 종사하던 회사로 돌아가지 싶다.
얘기가 어쩌다가 옆길로 한참 샜지...;; 아무튼 대통령이 탄 비행기가 곧 에어 포스 원인 것만큼이나, 병특은 복무자 자신이 곧 티오인 시스템이라는 얘기를 엮어서 하고 싶었다. -_-;; 본인이 산업 기능 요원 출신이기도 해서 말이다.

3. 넌 죽을 것이다

사람이 죽었거나 살았다는 통보에 이어 마지막으로 이번에는 죽을 거라는 경고 차례다. 이 분야는 간지 넘치는 대사가 픽션이 아닌 현실의 정치 분야에도 꽤 있다. 예전에 한 번씩 인용한 적이 있는 대사들이지만 다시 복습해 보고자 한다.

(1) “빈 라덴을 용서하는 건 신이 할 일이다. 그러나 빈 라덴과 신과의 만남을 주선하는 건 우리가 할 일이다.
너무 멋있지 않은가? 이것은 빈 라덴이 살아 있던 시절에 미군 해병대의 모토였다고 한다. 그런데 '빈 라덴'을 임의의 '테러리스트'라고 말만 바꿔서 러시아의 푸틴 대통령이 또 유사한 드립을 쳤다고 한다.

(2) “아이를 살려 보내면 너도 살고, 아이가 죽으면 너도 죽는다.”
예전에도 한번 언급한 바 있지만, 1980년 가을에 이 윤상 군 유괴 사건이 발생했을 때 전대갈 아저씨가 남긴 대통령 특별 담화이다. 나중에 가해자가 잡히고 아이가 죽은 채로 발견되자, 전대갈은 실제로 사법부에 압력을 넣어 강제로 사형을 때려서 가해자도 죽여 버렸다.
삼권분립의 관점에서는 좀 아슬아슬하게 월권을 한 것이진 하지만, 요즘처럼 강력 사건에 가해자 인권만 있고 피해자 인권이 처참하게 짓밟히고 있는 시기엔 저렇게 시원시원하던 옛날이 그리울 때도 왕왕 있다.

(3) “지금이라도 내 딸을 보내 주면 그걸로 일이 끝날 거다. 하지만 안 보내면 난 지구 끝까지라도 쫓아가 네놈을 기필코 찾아 내어 죽여 버릴 거다.”
테이큰, 브라이언의 전화 대사 의역. 더 이상의 자세한 설명은 생략한다.

난 복수극 영화 취향인가 보다. <테이큰>, <킬 빌>, <에어 포스 원>이 딱 내 스타일이다.
성령 충만으로 용서하는 게 가능한 맥락이 아니라면(개인이 아닌 공권력/국방 문제라든가..) 악당은 다 때려 부숴야 제맛 아니겠는가? 성령 충만은 악에게 굴복하는 나약함을 조장하는 게 결코 아니다.

사용자 삽입 이미지

괜히 쓸데없이 종교색 표방하면서 성경이나 교회 왜곡하는 것들은 극혐(<밀양> 같은 거). 세계관이 너무 비현실적이거나 뭔 어설픈 열린 결말 이런 것도 싫음.

Posted by 사무엘

2016/02/15 08:34 2016/02/15 08:34
, , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1193

* 이 글의 내용은 클립보드 API, const 이야기의 연장선상에 있다. 관심 있으신 분은 예전에 썼던 글을 먼저 읽어 보시기 바란다.

1.
Windows API에는 GetPriorityClipboardFormat라는 함수가 있다. 이것은 클립보드로부터 '붙여넣기'(paste) 기능이 있는 프로그램이 사용할 만한 함수이다. 이 함수가 지목하는 포맷에 해당하는 클립보드 내용을 붙여넣으면 되며, 사실은 그보다도 먼저 이 함수의 실행 결과에 따라 '붙여넣기' 메뉴를 enable/disable시킬지를 결정하면 된다.

내 프로그램이 지원하는 클립보드 포맷이 단 하나밖에 없다면 IsClipboardFormatAvailable을 쓰면 된다. 그렇지 않고 여러 종류의 포맷을 지원하는데, 현재 클립보드에 존재하는 포맷 중에 우선순위가 가장 높은 놈은 무엇인지 알고 싶다면 말 그대로 저 priority라는 단어가 들어간 함수를 써서 요청을 해야 한다. 이것은 마치 커널 오브젝트의 동기화에서 쓰이는 WaitForSingleObject와 WaitForMultipleObjects 함수쌍의 관계와 일면 비슷하다.

그런데 내가 궁금한 점은 이 함수의 첫째 인자가 const UINT *가 아니라 왜 그냥 UINT *냐는 것이다.
첫째 인자는 함수로 전달하는 복수 개의 클립보드 포맷 리스트의 포인터이며, 속성이 엄연히 out이 아닌 in이라고 명시되어 있다. 저 함수 역시 인자로 받은 리스트 내용을 참조만 할 것이니, 포인터가 read-only가 아니라 일반 read-write 형태여야 할 하등의 이유가 없다. WaitForMultipleObjects만 해도 HANDLE의 배열 포인터는 분명히 const HANDLE *로 잡혀 있지 않던가?

저게 const라면,

static const table[] = { CF_UNICODETEXT, CF_HDROP }; //사람이 텍스트로 입력한 파일명 & 탐색기에서 복사해 놓은 파일명을 모두 받아들임
int res = GetPriorityClipboardFormat(table, ARRAYSIZE(table));

이런 식으로 간편하게 static const 배열을 함수에다 넘겨 줄 수 있을 텐데, const가 아니기 때문에 일이 좀 귀찮아진다. table에 const 속성을 제거하든지, 아니면 함수에다 넘겨 줄 때 const_cast 연산자를 써 줘야 한다. 내 경험상, 강제로 const 포인터로 고친다고 해서 딱히 프로그램 동작에 문제가 생긴다거나 하는 건 아니더라.

하지만 내 프로그램 내부에서 값을 고칠 일이 절대로 없기 때문에 const로 엄연히 봉인해 버리고 싶은 테이블을 봉인하지 못한다니, 썩 보기 좋아 보이지 않는다. 또한 const_cast 같은 연산자가 늘어나는 건 내 소스 코드에서 무질서도가 쓸데없이 증가하는 듯한 느낌을 준다.

물론, 동일한 유형의 데이터에 대해서 클립보드 포맷을 복수 개 지원한다는 건 대개가 custom 포맷과 표준 포맷을 혼용하는 경우이다. 리스트의 모든 원소가 상수가 아니며, 우선적으로 선택되었으면 하는 앞부분은 어차피 RegisterClipboardFormat의 리턴값인 경우가 많다. 워드 프로세서라면 모든 정보가 보관되어 있는 고유 포맷일 것이고, 텍스트 에디터라면 칼럼 블록을 명시한 고유 포맷이다.

그러니 저 함수의 인자로 전달되는 배열 포인터는 애초부터 const가 아니라 일반 배열일 가능성이 더 높다. 메시지만 해도, 시스템 차원에서의 유일성을 보장받기 위해 RegisterWindowMessage로 특수하게 등록한 메시지는 WM_USER+x와는 달리 가변적인 값이다. 그렇기 때문에 윈도우 프로시저에서 switch/case를 이용해 걸러낼 수가 없으며 if문을 써서 비교해야 하지 않던가. (이 두 Register* 함수는 프로토타입이 UINT Foo(PCTSTR name)로 완전히 동일하며, 명칭을 hash하여 숫자로 바꿔 준다는 공통점이 있어서 더욱 동질감이 느껴진다)

그런데.. 그런 식으로 치자면 WaitForMultipleObjects가 받아들이는 HANDLE도 NULL이나 INVALID_HANDLE_VALUE 같은 오류 상황 말고는 고정불변 상수값이 존재할 여지가 전혀 없는 타입이다. 값의 가변/불변성과는 무관하게 해당 함수가 값들을 읽기만 한다면 함수 인자가 응당 const 포인터로 잡혀 있어야 할 텐데, 클립보드의 저 함수는 왜 저렇게 설계되었으며 디자인에 문제를 제기하는 사람이 왜 없는지 궁금하다.

2.
서식이 없고 칼럼 블록도 없는 일반 텍스트 에디터에서 붙이기를 구현한다면 굳이 custom 포맷을 등록할 필요는 없을 것이고 애초에 복수 개의 클립보드 포맷을 살펴볼 필요도 없을 것이다. 단, 여기에도 원래는 유니코드/ANSI와 관련된 미묘한 문제가 있다. wide 문자 기반인 CF_UNICODETEXT와, ansi 문자 기반인 CF_TEXT가 따로 존재하기 때문이다.

Windows NT는 이들 사이에서 '유도리'를 제공한다.
응용 프로그램이 유니코드 텍스트 형태(CF_UNICODETEXT)로 클립보드에다 텍스트를 복사해 놓은 뒤, 나중에 유니코드를 지원하지 않는 프로그램이 클립보드로부터 CF_TEXT 포맷을 요청하는 경우 운영체제는 CF_TEXT도 있다고 답변을 하며, CF_UNICODETEXT로부터 CF_TEXT 데이터도 자동으로 만들어 준다. 그 반대도 물론 해 준다. (복사는 CF_TEXT로, 붙여넣기는 CF_UNICODETEXT로)

마치 Get/SetWindowText, WM_GET/SETTEXT에서 운영체제가 A/W 문자열 보정을 하듯이, 클립보드에 대해서도 그런 보정을 해 준다. 재미있지 않은가? 그러니 오늘날의 Windows에서는 유니코드를 지원하는 프로그램은 어떤 경우든 CF_UNICODETEXT만 생각하고 요걸로만 읽고 쓰면 유니코드를 지원하지 않는 구시대 프로그램과도 의사소통에 아무 문제가 없다.

하지만 문제가 되는 건 내부적으로 유니코드를 사용하는 프로그램이 Windows 9x까지 고려해서 만들어질 때이다. 9x 계열에서는 CF_UNICODETEXT는 응용 프로그램이 굳이 요청해서 자기들끼리 쓰지 않는 한, 운영체제 차원에서 공식적으로는 '없는 포맷', 지원하지 않는 유령/공기 포맷이다. 고로 NT 계열과 같은 타입 자동 변환이 없다.

텍스트 에디터가 자기는 내부적으로 유니코드 기반이라고 해서 자신이 native로 사용하는 CF_UNICODETEXT 형태로만 데이터를 복사해 놓으면, 기존 메모장 같은 프로그램에서는 텍스트 붙이기를 할 수 없게 된다.
그렇기 때문에 9x 계열과 유니코드라는 두 토끼를 모두 잡으려면 응용 프로그램은 클립보드로부터 데이터를 읽을 때도 IsClipboardFormatAvailable가 아니라 저 GetPriorityClipboardFormat를 써서 CF_UNICODETEXT와 CF_TEXT를 모두 살펴봐야 한다. 물론 1순위는 유니코드로 하고 말이다.

그리고 빈 클립보드에다 텍스트를 복사해 넣을 때에도 CF_UNICODETEXT부터 먼저 집어넣은 뒤, CF_TEXT 타입도 자동으로 생겨 있는지를 IsClipboardFormatAvailable로 체크하고, 없으면 ansi 텍스트도 수동으로 넣어 줘야 한다. Windows NT에서는 유니코드 텍스트만 집어넣어도 CF_TEXT로 붙여넣는 게 저절로 가능하지만 9x에서는 그렇지 않기 때문이다.

참 얼마 만에 클립보드 얘기를 또 꺼내게 됐는지 모르겠다. 지금이야 먼 과거의 유물이 됐다만, Windows 9x 시절에는 텍스트 하나를 유니코드 형태로 주고받을 때는 이렇게 미묘하게 귀찮은 면모가 좀 있었다.

클립보드에다 데이터를 지정하는 SetClipboardData는 GMEM_MOVEABLE을 지정해서 GlobalAlloc으로 평범하게 할당한 메모리 핸들을 넘겨 주는 방식으로 사용하면 된다. 함수를 호출한 뒤부터는 그 메모리 핸들은 운영체제의 관할로 넘어가기 때문에 우리가 임의로 해제해서는 안 된다.
이것과 굉장히 비슷한 개념으로 운용되는 다른 함수는 SetWindowRgn인 것 같다. 평범한 HRGN을 넘겨 주지만 이제부터 이 region은 운영체제의 관할이 되기 때문이다. 우리가 더 건드려서는 안 된다.

3.
C/C++은 여느 언어와 마찬가지로 const라는 속성이 존재하는데, 이것은 (1) 완전히 붙박이 상수가 될 수 있으며, 아니면 (2) 런타임 때 가변적인 초기값이 붙는 것도 가능하지만, 한번 값이 정해진 뒤에는 불변이라는 의미도 될 수 있다.
이거 혼동하기 쉬운 개념이다. C/C++의 const는 (1)은 딱히 보장하지 않고 일단은 (2)만 보장한다.

const형 변수를 초기화하는 초기값으로는 반드시 case 레이블이나 static 배열의 크기처럼 컴파일 타임 때 값이 결정되는 상수만 와야 하는 게 아니다. 변수도 얼마든지 초기값으로 지정할 수 있으며, 이건 그냥 const뿐만 아니라 static const에 대해서도 마찬가지이다. 애초에 const는 타입에 제약이 없으니까. (1)을 정수 명칭에 한해서 보장해 주는 건 enum, 아니면 템플릿 인자이다.

그래서 C#은 이 두 개념을 const와 readonly로 확실하게 구분해 놓았는데, 이건 상당히 매력적인 조치라 여겨진다. 배열· 테이블도 const로 지정이 가능하니까 말이다. 또한 붙박이 불변 const는 스택에든 어디든지 여러 인스턴스가 중복해서 존재할 이유가 하등 없으니 static 속성도 자동으로 포함하는 걸로 간주된다.

한편, 포인터가 const라면(가령 p) p 자신의 값을 바꿀 수 없는지, 아니면 p가 가리키는 메모리의 값을 바꿀 수 없는지(*p 혹은 p->)가 문제가 된다. const TYPE *p라고 하면 *p가 잠기고, TYPE * const p라고 하면 p가 잠긴다. const TYPE * const p라고 하면 짐작하시겠지만 둘 다 잠긴다.
문법이 좀 복잡한데, const T와 T const는 의미상 동일하다. 그리고 포인터값 자체를 잠글 때는 * 뒤에다가 const를 추가로 붙인다고 생각하면 비교적 직관적으로 이해할 수 있다.

하지만 포인터라는 게 지니는 값은 NULL 같은 특수한 경우가 아니고서야 언제나 가변적인 메모리 주소이기 때문에.. 포인터에다 const는 p 자신이 아닌 *p를 잠그는 용도로 훨씬 더 많이 쓰인다. 클래스 멤버 함수에 붙는 const도 this 포인터에 대해서 *this를 읽기 전용으로 잠그는 역할을 한다. this는 예약어이다 보니 this의 주소값 자체를 변경하는 건 어떤 경우든 원래부터 가능하지 않으니 말이다.

그리고 *p가 잠긴 const 포인터에 대해서 그 잠김을 일시적으로 해제하는 형변환 연산자는 잘 알다시피 const_cast이다. 다만, const가 사라진 TYPE *라는 타입명을 그 뒤의 <> 안에다가 수동으로 일일이 써 줘야 한다. 이름은 const_cast이지만 얘는 '쓰기 금지'뿐만 아니라 언어 차원에서의 타입과 "무관하게" 변수 접근 방식과 관련하여 붙어 있는 추가적인 제약 속성을 제거할 때에도 쓰인다. volatile이 대표적인 예이고, 비주얼 C++의 경우 IA64 아키텍처 기준으로 __unaligned 속성도 이걸로 제거할 수 있다. (IA64는 기본적으로 machine word 단위로 align이 된 곳만 메모리 접근이 가능한지라..)

Windows API에는 포인터의 const-ness 구분 때문에 불편한 게 몇 군데 있다. 대표적인 건 CreateProcess 함수.
실행할 프로세스를 가리키는 명령줄은 PCTSTR이 아니라 PTSTR이다. 함수가 내부적으로 실행될 때는 파일명과 인자명을 구분하기 위해서 문자열의 중간에 \0을 삽입해서 토큰화를 하기 때문이다. 즉, strtok 함수가 동작하는 것처럼 토큰화를 하며 문자열을 변경한다.

이 함수는 실행 후에 문자열 내용을 다시 원래대로 되돌려 놓긴 하지만, 명령줄 문자열을 나타내는 메모리는 일단 read-only가 아니라 쓰기가 가능한 놈이어야 한다. *a+=0; 을 수행하려면 비록 *a의 값이 실제로 변경되지는 않지만 그래도 가리키는 메모리가 변경 가능해야 하는 것과 비슷한 이치이다.
Windows NT 계열에서 CreateProcessA 함수를 호출하면 얘는 어차피 문자열을 쓰기 가능한 문자열에다가 유니코드로 변환해서 내부적으로 W 함수가 사용된다. 그렇기 때문에 A함수에다가 (PSTR)"notepad.exe sample.txt" 이런 식으로 줘도 안전하긴 하다. 그러나 범용성을 고려하면 이는 그렇게 깔끔한 코드라고 보기 어렵다.

다음으로 DrawText도 기능을 제공하는 형태가 조금 지저분하다.
얘는 문자열을 받아들여서 출력하는데 폭이 부족할 경우 문자열을 있는 그대로 출력하는 게 아니라 "Abc..."라고 줄여서 출력하는 옵션이 있다. 그런데 사용자가 원한다면 자기가 받은 문자열 자체를 그렇게 출력되는 형태로 '수정해' 주는 옵션이 있다(DT_MODIFYSTRING). 이 옵션을 사용한다면 str은 PCTSTR이라는 프로토타입과는 달리 쓰기 가능한 포인터여야 한다.
또한 RECT *인자도 좀 아쉬운 구석이 있다. 일단은 in/out 겸용이어서 RECT *이지만, 이것도 out 없이 문자열을 찍을 영역만 지정하는 in 전용이 가능했으면 좋겠다.

끝으로, 리스트/트리 같은 공용 컨트롤에 데이터를 추가하는 LVITEM이 있다. 이들 구조체의 pszText는 PCTSTR이 아니라 PTSTR이다. 문자열을 얻어 올 때와 지정할 때 모두 동일한 구조체가 쓰이기 때문에 const 속성이 없는 것이다.
이 때문에 컨트롤에다 데이터를 처음 추가할 때 item.pszText=const_cast<PSTR>("Hello") 같은 연산이 부득이 쓰이기도 한다.

C++과는 달리 자바에는 클래스 멤버 함수라든가, call-by-reference로 전달되는 데이터에 대해서 const-ness를 보증하는 개념이 없다. 클래스에서 Get*으로 시작하는 메소드라고 해서 const를 따로 지정하지는 않으며, final 키워드는 함수의 오버라이드 불가, 값의 변경 불가 같은 '종결자' 용도로만 쓰인다. 과연 const가 없어도 괜찮은 걸까?

그런데 포인터의 단계가 복잡해지다 보면, const가 있어 봤자 가리키는 놈이 const인지, 나 자신이 const인지 일일이 따지고 추적해서 내부 상태의 불변성을 보장하겠다는 시도가 별 의미가 없어지긴 한다. 즉, this가 this와 *this까지 몽땅 봉인되어서 나 자신의 멤버 값은 변경할 수 없지만.. 내가 가리키는 메모리 영역의 값을 한 단계 거칠 수가 있으며 거기 값을 변경하는 게 가능하다면.. 궁극적으로 그 개체의 속성/상태는 바뀌었다고 볼 수 있기 때문이다.

어떤 코드를 실행해 보지 않고 메모리 접근이 안전한지 입증하는 정적 분석 기능이 만들기 까다로운 것도 본질적으로 이런 이유 때문이다. 컴파일러의 경고가 동작을 예측하고 비정상을 지적해 줄 수 있는 것도 간단한 지역변수 수준일 뿐이지, 몇 단계짜리 포인터에 구조체가 줄줄이 따라오면.. 답이 없다.

거기에다 클래스의 인터페이스 상으로는 Set*이 아니라 Get*처럼 "read-only"이고 값이 변하지 않는 기능만 사용한다고 하더라도, 클래스의 내부 상태는 얼마든지 바뀔 수가 있다. 한번 구해 놓은 계산값을 다음에는 빠르게 되돌리기 위해서 그 값 자체 내지 중간 상태를 캐싱하는 것처럼 말이다. 이런 경우가 워낙 많으니 C++에서는 나중엔 멤버의 const-ness에 예외를 허용하는 mutable 키워드도 도입하지 않을 수 없었다.

이건 마치 고유명사와 보통명사의 경계와도 비슷한 맥락의 문제인 것 같다. 로마자 알파벳이 한글과는 달리 대문자가 있고 고유명사는 첫 글자를 대문자로 적게 돼 있어서 일면 편리한 건 사실이다. 하지만 좀 깊게 생각을 해 보면, 새로운 명칭이 만들어졌을 때 그걸 고유명사로 볼지 기준이 생각만치 엄밀하지는 않은 경우가 많다. 기준이 생각만치 엄밀하지 않으며 그냥 자의적이다. 번역하지 않고 음역하는 놈은 죄다 고유명사인 걸까? 실체가 지구상에 오로지 하나밖에 없는 놈? 그렇다면 실물이 존재하지 않는 무형의 개념은? 그걸 정하는 기준은 무엇?

지금 우리가 보통명사로 별 생각 없이 쓰는 명칭들도 그 명칭이 처음 등장했던 시절엔 첫 글자를 대문자로 적는 유니크한 고유명사이기도 했다. const 개념 구분도, 대소문자 구분도 있건 없건 어느 하나가 다른 하나보다 절대적으로 우월하고 좋은 솔루션은 아니어 보인다는 생각이 든다.

에휴, 클립보드부터 시작해서 유니코드, const 등 별별 이야기가 다 이어져 나왔다. 이상~~ ^^

Posted by 사무엘

2016/02/12 08:36 2016/02/12 08:36
, , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1192

약 빨고 영상물 만드는 실력은 일본이 무척 탁월한 편이니 먼저 일본 얘기부터 좀 하겠다. 2000년대를 풍미했던 일본 환타 CF 시리즈가 떠오른다.
A반 가죽점퍼(록커) 선생부터 시작해서 아침 멜로 드라마 여선생까지 골고루 나오고, 별난 선생 때문에 학교 생활이 참 고달픈데 그래도 결론은 기승전..환타이다. 나중에 번외편으로 교장 선생편도 있었다.
DJ 선생은 학생에게 문제 풀이를 시킬 때도, 그리고 풀이의 정오 여부를 알려 주기 전에도, 심지어 교장 선생이 훈화를 하고 있는 동안에도 완전 음악에 심취해서 지내더라.

뭐, 그래 봤자 환타는 인공 색소와 설탕이 가득하고 마치 콜라만큼이나, 스팸 가공육만큼이나 몸에는 별로 좋을 게 없는 탄산음료일 뿐이겠지만, CF에서는 한자 선생이던가? '트로피칼 후르츠'를 강조하면서 열대 과일을 표방한다는 선전을 잔뜩 했다.

그리고 공익 광고 중에 이런 게 있었다.
학교에서 동물 그림을 그리는 시간에 어떤 애는 도대체 뭐가 씌였는지 흰 도화지 몇 장째를 온통 새까맣게 도배할 뿐이다. 장난 깽판을 친다고 보기에는 아이의 표정이 너무 진지하고 눈이 초롱초롱하니, 차마 대놓고 혼내지도 못하겠고.. 그래서 선생과 부모는 그 아이에 대해 정신 감정을 의뢰한다.
그런데, 각각의 종이들을 가로 x칸 세로 y칸으로 연결하니까 아이는 무진장 큰 시꺼먼 고래를 그리고 있었다는 게 밝혀진다.
...;; 아이의 잠재성과 창의성을 어른의 잣대로 단정짓지 말라는 뭔가 의미심장한 광고였다.

다음으로, 토요타보다는 아니고 '혼다'라는 일본 자동차 회사에서 2000년대에 창의성과 근성이 돋보이는 2분짜리 CF를 두 편 선보였다.
혼다 시빅(Civic)이라는 아반떼급 준중형차 CF는 무슨 합창단이 자동차의 엔진음과 주행음, 바깥 소음을 사람의 발성 기관만으로 흉내 내는 궁극의 비트박스를 시전했다. 컴퓨터에서 아주 정교하게 잘 만들어진 아스키 아트 텍스트 파일을 보는 듯한 느낌이다.
심지어 씨디를 집어넣어서 카오디오에서 음악이 나오는 것까지도 비트박스로 재현했다.

그리고 혼다 어코드(Accord)라는 쏘나타급 중형차 CF는.. 근성 도미노 스타일이다. 자동차 부품을 일렬로 쭈욱 늘어놓고 하나만 툭 건드려 주니까 나사가 돌아가고 나사 하나의 무게 차이 때문에, 기름 몇 방울의 무게 때문에 시소가 기울고 뭐가 툭 굴러 떨어지는 장치가 열몇 개씩 이어진다. CG가 아니라 진짜 다 실제로 세팅해서 촬영한 것이며, 세팅을 처음부터 전부 갖추는 데만 몇 시간이 걸렸을 정도의 극도의 근성의 산물이라고 한다.

옛날에 월트 디즈니 만화영화 <뮬란>에서 황제의 대사 중에는 "A single grain of rice can tip the scale. (쌀 한 톨의 무게 차이만로도 저울이 기울어질 수가 있는 법일세)"가 있었다. 영화에서 그 대사는 뮬란이 바로 전쟁이라는 저울의 승패를 가르는 그 쌀알이 될 거라는 복선이다만, 저 CF는 황제의 그 대사의 물리적인 실사판이나 다름없었다. ㄲㄲㄲ 다만, 타이어가 관성만으로 오르막을 저렇게 오른다거나 기름통이 너무 잘 굴러가는 건 현실성 개연성이 좀 떨어져 보여서 어색하다.

저것과 완전히 동일하지는 않지만 우리나라에도 옛날에 근성 도미노의 원조가 있었다. 바로 지금은 KCC로 바뀐 고려 화학의 '고려 페인트' CF다. 고려 페인트 광고는 지금도 기억하는 사람들이 많으며, 참신함과 기발함 덕분에 굉장한 호평을 받으며 회사 이미지의 제고에 도움이 됐다고 한다.

사용자 삽입 이미지

고려 페인트의 도미노 CF는 원조가 첫 등장한 게 1989년이고 2차가 1992년, 마지막 3차가 1996년으로, 총 세 종류의 버전이 있다. 저 엄청난 양의 도미노는 CG가 아니며 실물을 직접 만들어서 쓰러뜨리며 찍은 거라고 한다. 세팅 하느라 굉장히 고생 많았을 듯. 1992년 당시의 신문 기사를 보면, 2차분 CF의 경우 8만 개에 달하는 도미노 칩을 사용해서 제작되었다는 보도가 있다. 도미노는 개념상 카드섹션 매스게임의 무인 버전뻘 되지 않을까 싶다. =_=;;

사실, 1990년대 초는 미국 할리우드의 영화/애니메이션 업계에서조차 CG가 이제 막 슬금슬금 도입되던 과도기 단계였다. 가령, 월트 디즈니를 예로 들자면, 1989년에 나온 <인어 공주>가 CG가 전혀 없이 100% 셀 애니메이션만으로 만들어진 '마지막' 작품이고, 그 뒤 <미녀와 야수>, <알라딘>에서는 배경부터 시작해 CG가 조금씩 들어가기 시작했다.
그러니 우리나라는 그 시절의 CF는 아직 아날로그 기술만으로 실사 제작일 수밖에 없었다. 다만, 1990년대 중반으로 들어서면서 기술 격차는 갈수록 줄어들고, 우리나라 역시 기상천외한 CG 합성 CF들이 곧 등장했다. 당장 떠오르는 건 하이칼스(1993) Alias라는 워크스테이션급 CG가 온통 도배가 돼 있다.

비주얼 다음으로 청각적인 면을 살펴보자면, 고려 페인트의 1차 CF에서는 도미노가 쫙 넘어지는 동안의 BGM은 그냥 피아노 건반으로 음이 또르르르르르 올라가는 소리 위주이다. 마치 보글보글에서 잔기가 하나 늘었을 때 나는 소리(점수가 일정 숫자 돌파, 혹은 EXTEND 보너스)와 비슷하게 들린다.
2차에서는 '도도 도 솔파미레도'로 시작하는 C장조 전자음 BGM이 추가되어서 음향이 더 미려해졌으며,
3차에서는 도미노가 실사 사진으로 바뀌는 효과가 더 부각되고 BGM은 뭔가 코러스가 곁들어진 명랑한 외국 팝송으로 바뀌었다.

본인은 3차 CF에서 나오는 A플랫 장조의 짤막한 BGM을 무척 좋아했다. 저런 음악이 있었다는 것만 기억하고 이 역이 고려 페인트 CF의 일부인 줄은 모르고 있었는데 도미노 CF에 대해 검색하던 과정에서 지금까지 끊어져 있었던 연결 고리를 되찾았다.
고려 페인트 CF에는 클래식 음악이 쓰였고 출처가 뭐냐 하면 그리그의 <페르 귄트 모음곡 - 솔베이그의 노래>라고 각종 지식인, 개인 블로그, 음악 음원 사이트에 잔뜩 소개되었으며 심지어 1996년도의 신문 기사에도 올라 있다.

그런데... 저건 도대체 고려 페인트의 어느 CF에 들어간 음악이지?? 아시는 분?
내가 듣기에는 2차 버전, 3차 버전 그 어느 것도 여자 솔로인 "솔베이그의 노래"하고는 하나도 닮은 구석이 없는데?

딱 들어 봐도 CF에 들어간 음악은 명랑한 장조이지만 저 원조 클래식은 단조풍이다.
원곡을 리메이크 했다고도 볼 수 없고 그냥 완전히 다른 음악이다. 저 세 편의 고려 페인트 도미노 CF에는 클래식이 들어간 적이 없다. 3차 CF에 들어간 그 명랑한 BGM의 정확한 출처를 알고 싶다.

그리고 마지막으로...;;;
오래 전에 한번 다루기도 했지만 우리나라의 역대 공익 광고들을 또 짚고 넘어가도록 하겠다.
내가 인생에 대한 기억이 본격적으로 생겨서 선사시대에서 역사시대로 바뀐 게 1980년대 말~1990년대 초이다. 그래서 그 시기에 텔레비전 화면을 본 기억이 많이 남아 있다. 그 시절엔 환경 오염, 반공, 마약 등을 소재로 하는 공익 광고는 강한 훈계조에 섬뜩하고 무섭기로 악명 높았다.

시꺼먼 감방 같은 배경에서 "마약은 모든 것을 빼앗아 갑니다."가 흘러나온다든가(1989) 올가미가 휙휙 던져지기도 하고..(1991) 국민 소득 4천$, 소비 수준은 2만$. 풍선이 뻥 터지는 과소비 추방 광고(1989)까지. 어린애들은 트라우마가 생길 정도였다.

사용자 삽입 이미지

본인은 초딩 시절, "두껍아 두껍아..."로 시작하는 요 1990년작 CF를 직접 본 기억이 있다. 음산한 BGM과 함께 흰 바닥에서 시꺼먼 얼룩이 불어나는 게 공포 그 자체였다. 마약 광고보다도 더 무서웠다. ㅠ.ㅠ 하물며 저 얼룩이 블랙이 아니라 핏자국을 표방하는 레드였다면 아마 최악의 안구 테러가 됐을 것이다.

사실은 고려 페인트 이전에도 도미노를 소재로 한 광고가 있었다. 바로 도미노 블럭이 쓰러지는 걸 범죄자들이 소탕되는 것에다 비유한 1989년도 공익 광고이다. 본인은 이걸 직접 본 기억이 있다.
20년 남짓한 세월 동안에도 영상 문화의 흐름이라는 게 정말 확 달라졌다.

그 중에 지금까지도 많은 사람들의 기억에 남아 있는 고퀄의 공익 광고는 "필름 역주행"(1991, 1분)이다. 처참한 정면 충돌 교통사고가 난 동영상을 뒤로 돌려 보니 결국 발단은 질펀한 술자리. "필름은 되돌릴 수 있어도 생명은 되돌릴 수 없습니다."와 함께 영상이 끝난다. 이건 당시 무슨 국제 광고 공모전에서도 입상했다고 한다.
시대 정황상 역시 CG의 도움을 그다지 받지는 못했을 텐데 설마 자동차 두 대를 진짜로 충돌시켰을까? 어떻게 만들었까 싶은 생각도 든다. 8만 개짜리 도미노 블럭이야 그래도 생명의 위협이 없으니 근성으로 만들었다 치더라도. 아니면 충돌해서 운전자가 튕겨 나가는 부분만 실제 배우 대신 정교한 마네킹으로 대체했을 수도 있다.

그로부터 20여 년 뒤에 만들어진 음주운전 추방 광고는.. 아주 경쾌한 BGM과 함께 맥주잔이 출렁거리면서 도로를 질주하다가 교통사고가 나는 걸로 끝난다. 묘사가 훨씬 덜 간접적인 형태로 바뀌었으며, 앞부분만 봐서는 오히려 맥주 상업 광고인가 하는 착각이 들 정도이다. 그러나 결말부에는 역시 "즐거우셨습니까? 인생의 마지막 운전이 될 수도 있습니다"라는 경고문이 나온다.

이렇게 내 기억에 남는 CF들을 좀 늘어놓아 보았다.
작곡가, 기자, 작가(글/사진), 영화 감독처럼 뭔가 창의력으로 먹고 사는 사람들에게는 평생 한두 번 찾아올까 말까인 '명작운', '특종운'이라는 게 있는 것 같다.
난 영상이나 음악은 아니고 아시다시피 글과 코드를 주로 창조해 왔다. 하지만 음악 쪽도 언젠가 내가 만든 곡에 내가 꺼뻑 가는 작곡을 하는 순간이 왔으면 하는 소망이 있다.

프로그램 쪽이야 난 날개셋을 계속 만들지 않았으면 진작에 철도로 전공과 직업을 바꿨을 수도 있다. -_-;; 어쩌다가 약을 단단히 빨고서 이렇게 아무도 관심 안 갖는 분야의 엽기적인 프로그램의 창조자가 됐는지 모르겠다.
여러 분야의 글 중에서 기독교/성경 쪽만 예를 들자면, <음란한 성경은 가라>에 아마 평생의 명작운이 전부는 아니어도 대부분 투입되지 않았나 싶다. 그게 정말 독보적인 대박을 쳤으며 킹 제임스 옹호 진영과 반대 진영 모두에 내 이름을 알렸다.

페인트 광고에 근성 도미노가 나오고, 자동차 광고에 궁극의 부품 도미노와 합창단 비트박스가 나오는.. 그런 급의 명CF가 앞으로 또 국내외에서 얼마나 등장할지 지켜볼 일이다.
본인 역시, 30여 년 평생에 뭔가 똑같은 내용을 공부하고 암기해서 치는 시험에서 남보다 앞서고 뭔가 재미를 본 적은 거의 없었다. 그 대신 남 안 하는 짓, 창의적인 분야에서 뭔가를 기여하고 명성을 얻은 편이었다. 그런데 그게 꼭 부귀영화를 가져오는 분야는 아니어서 문제이긴 하다만=_=, 난 앞으로도 계속 그 방면을 파면서 살게 될 것 같다.

Posted by 사무엘

2016/02/09 08:35 2016/02/09 08:35
, , ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1191

« Previous : 1 : ... 121 : 122 : 123 : 124 : 125 : 126 : 127 : 128 : 129 : ... 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:
4001484
Today:
1660
Yesterday:
6203