« Previous : 1 : ... 132 : 133 : 134 : 135 : 136 : 137 : 138 : 139 : 140 : ... 230 : Next »

본인이 인터넷에서 굉장히 고맙게, 유용하게 잘 열람하는 정보 중 하나는 지도이다.
참 대단하지 않은가? 항공 사진, 길거리 사진, 길 찾기, 실시간 대중교통 연계와 도로 상황 안내 등... 정말 혀를 내두르는 수준이다. 이젠 도대체 얼마나 더 똑똑해질 거리가 남아 있는 걸까?

아울러, 지도의 일종인 차량용 내비게이션 소프트웨어도 도대체 어떤 천재가 만들었나 싶은 생각이 든다. 도로 상황을 감안해서 길을 찾는 건 당연한 소리이고, 그걸로도 모자라서 길 가는 중에 실시간으로 “해당 경로에 사고가 발생했습니다. 우회 경로를 재탐색할까요?”까지도 튀어나온다.

2013년엔 구글 회장이 한번 방북을 하고 났더니 구글어스가 평양을 중심으로 북한의 세부 지리 정보(단순 항공 사진은 예전부터 제공했음)를 제공하기 시작했다. 얘를 시작으로 2014년 하반기부터는 국내 지도 사이트들도 북한 정보를 제공하기 시작했다.
고무적인 현상이다. 물론 구글어스도 그 자체는 처음부터 구글이 개발한 게 아니라 타 업체 솔루션을 인수한 것이긴 하지만 말이다.

본인이 예전에 인터넷 지도에 대해 썼던 글은 이 모든 기능이 별도의 응용 프로그램이 아니라 웹에서 웹 표준 기술만으로 바로 구현 가능해진 것이 신기하다는 요지였다.
이번에는 다른 분야에서 대단히 신기하게 느껴지는 것에 대해 이야기를 늘어놓아 보겠다. 바로 이미지 가공 기술이다.

지도 사이트들이 제공하는 평면 항공 사진은 (1) 넓디넓은 영역을 한결같이 위에서 아래를 내려다보는 단일 각도로 본 이미지이다. 그런데 이거 정말 가공을 많이 했겠다는 생각이 들지 않는가?
이미지에서 원근감이라는 걸 완전히 제거하고 건물들이 마치 스타크래프트 맵처럼 보이게 해야 한다. 중심에서 먼 곳의 건물일수록 모양이 왜곡되어 보이는 카메라 렌즈의 오차를 보정해야 한다.

물론 엄청 높은 곳에서 촬영을 하면 건물 자체의 높이로 인해 발생하는 원근감은 상당수 없어지지만 이번엔 반대로 고층 건물도 높이가 전혀 표현되지 않게 되며, 또 사진의 화질이나 해상도, 그리고 구름으로 인한 시야 가려짐 같은 기술적인 문제도 커진다. 게다가 지구 자체도 근본적으로 평면이 아니라 둥근 구이니, 이로 인한 평면의 왜곡은 카메라의 위치가 높아질수록 더욱 부각되어 보일 것이다.

이런 항공 사진은 전세계의 것을 동시에 촬영하기란 불가능할 테니 여러 사진, 혹은 연속적으로 촬영된 사진을 파노라마 사진 만들듯이 연결해야 할 것이고 이 사진들은 촬영 시간대도 최대한 일치해야 할 것이다(광량의 차이). 또한, 주행 중이어서 시시각각 위치가 변하는 자그마한 자동차나 열차의 모습은 어떻게 보정을 하면 좋을까?
이런 것들을 다 극복하고 전국· 전세계의 항공 사진을 최대한 일관성 있는 색조와 각도로 엮는 것은.. 그 어려움과 복잡함이 정말 말도 못 할 것 같다. 비행기에서 아래를 내려다보고 사진만 팡팡 찍는다고 해서 구현 가능한 게 아니다.

사용자 삽입 이미지
(사진으로 나타난 63 빌딩의 높이와, 그림자의 길이를 비교해 보자.;; 각도가 뭔가 자연스러운 것 같지는 않다. 보정을 한 게 아닐까..)

그 보정이 자동화가 가능한지 아니면 일일이 수작업으로 행해지는지가 궁금하다.
마치 요런 영화 촬영 기법을 떠올리게 한다. 피사체는 시간이 정지한 듯 꼼짝 않고 있는데 카메라가 뱅그르르~ 돌아가면서 다른 위치와 각도에서 피사체를 응시하며 촬영하는 것 말이다. 심지어 사람이 하늘에 붕 떠 있는 채로 그런 장면이 나오기도 하니 더욱 신기한 일이다.

그리고 다음으로 생각할 것은 로드뷰이다.
이것은 앞의 항공 평면 사진과는 반대로, (2) 단일 시점에서의 view를 모든 각도로 제공하는 것이다. 이것은 어쨌든 연속으로 촬영할 수는 없기 때문에 로드뷰의 시점은 수~십수 미터 간격으로 띄엄띄엄 제공된다.

사용자 삽입 이미지

이런 시점 view는 지금이야 지도 사이트에서 쉽게 열람할 수 있는 기능이 됐지만, 옛날에 2000년대 초엔 철도청 홈페이지에서 자바 애플릿 형태로 비슷한 기능을 제공한 게 있었다.
바로 새마을· 무궁화· 통일호 내지 전동차의 객실 내부를 저런 로드뷰처럼 상하좌우 둘러보는 기능이었다.

이 기능은 내부적으로 2차원 평면 형태의 파노라마 사진을 한 장 저장하고, 그 그림의 일부에다 원근법을 적용하여 변형한 것을 표시하는 형태로 구현되어 있다. 내가 아는 건 이게 전부이고 구체적으로 어떤 계산을 하는지, 그리고 이런 용도로 사용하는 사진은 어떤 형태이고 어떻게 촬영하는지에 대해서는 잘 모른다. 그야말로 상하좌우 시야각이 다 열려 있는 특수한 카메라를 써야 할 텐데..

내가 10여 년 전에 이미 3차원 그래픽 시연 프로그램이라는 것도 만들어 봤지만, 비트맵 이미지로부터 3차원 시야를 어떻게 구현하는지는 여전히 감이 안 온다.
2차원 이미지에서 원근감을 넣거나 없애고, 평면과 공간 사이를 오고 가게 하는 기술이 참 대단하게 느껴진다. 그 기술이 인터넷 지도, 더 나아가 증강현실 같은 것도 가능하게 한 셈이다.

Posted by 사무엘

2015/04/08 08:32 2015/04/08 08:32
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1081

Windows API 메모

1.
Windows API에서 DrawText는 gdi도 아니고 user 계층에 있는 고급 함수인 주제에 여러 줄(DT_SINGLELINE 플래그 없는 기본 모드)을 찍을 때에도 세로 정렬(DT_VCENTER, DT_BOTTOM)을 좀 지원해 주면 어디 덧나나 싶다. 오래 전부터 개인적으로 매우 대단히 아쉽다고 생각해 온 점이다.

얘는 gdi 계층에 있는 다른 글자 출력 함수들과는 달리, 글자수를 -1 (null-terminate string을 가정하고 알아서 길이를 계산하게)로 줄 수가 있으며, 긴 파일/디렉터리 이름의 중간을 생략하여 찍거나 액셀러레이터 &를 다음 글자의 밑줄로 바꿔 출력하는 기능, 심지어 밑줄만 출력하는 기능도 있다.
& 전처리의 경우, 하는 게 아니라 “끄는 게” 별도의 플래그로 주어져 있을 정도로 기본 기능이다.

그러니 이건 천상 운영체제 내부에서 자기네 GUI 출력용으로 쓰는 함수인데 제3자도 사용할 수 있게 공용 API로 열어 놨다는 뜻이다.
안 그래도 텍스트를 처음부터 끝까지 쭉 읽어 봐야만 할 수 있는 처리들이 즐비한데, 그에 비해 멀티라인 텍스트의 세로 정렬은 텍스트 전체에서 \n 개수를 세어서 줄 수만 파악하고 나면 아주 손쉽게 구현 가능한 처리이다.
그러니 왜 지원을 안 하는지가 몹시 의문이다.

공교롭게도 운영체제의 컨트롤들 중에 static text는 DrawText의 기능을 사용해서 그런지 multiline 상태에서 세로로 중앙이나 아래 정렬을 하는 옵션이 없다.
그러나 버튼(push, radio, check 모두)들은 그런 옵션이 있다.

2.
아마 이건 예전에 의견을 한번 피력한 적이 있는데 다시 적자면..
본인은 선에 안티앨리어싱을 해서 그리는 기능 정도는 그냥 Pen 관련 GDI 함수/구조체에다가도 스타일로 추가해서 지원을 좀 해 줬으면 하는 생각을 한다. PS_SMOOTH 정도로..;;
마치 Cleartype이 적용된 글자를 찍기 위해 생소한 API를 굳이 사용할 필요가 없는 것처럼 말이다. 그냥기존 LOGFONT 구조체의 lfQuality에 새로운 값이 추가되는 걸로 훌륭하게 잘 구현되지 않았던가.

21세기 초에 야심차게 도입됐던 GDI+는 하드웨어 가속 버프도 없이 거의 버림받은 신세가 됐고, Direct2D는 COM을 사용하는 등 API 패러다임이 너무 다르다.
하지만 GDI는 유구한 역사를 자랑하는 Windows의 창립 멤버 API이고 이제 와서 도저히 버릴 수가 없는 압도적인 짬밥을 보유하고 있으니.. 그냥 유지보수 차원에서만 지원되는 legacy가 돼 버렸고 GDI API에 근본적인 확장은 없을 것으로 생각된다.

3.
유니코드 UTF16 문자열과 여타 8바이트 기반 인코딩(UTF8 포함) 사이를 변환하는 API 함수는 잘 알다시피 WideCharToMultiByte와 MultiByteToWideChar이다.
얘는 Windows NT가 유니코드+2바이트 wide char 기반으로 통 크게 설계되었을 때부터 역사를 함께 해 왔다. 옛날에 Windows 3.x에다가 Win32s를 설치하면 단순히 32비트 커널+썽킹 코드뿐만 아니라 코드 페이지 변환 테이블도 잔뜩 설치되었다. 32비트 EXE/DLL은 리소스의 내부 포맷부터가 유니코드인 관계로, 이들을 당장 변환할 수 있어야 하기 때문이다.

유니코드에서 여타 인코딩으로 변환하는 것은 마치 double에서 short로의 형변환처럼 큰 집합에서 작은 집합으로 이동하는 변환이다. 그러니 인코딩에 존재하지 않는 문자는 ? 같은 default 문자로 치환된다.
그런데, 별도의 플래그가 없다면 WideChar... 함수는 약간의 '유도리'를 발휘하여 동작한다. 여러 유니코드 문자가 한 여타 인코딩으로 변환될 수 있다는 뜻이다.

예를 들어, 유니코드를 KS X 1001로 변환한다고 치면, 원래 거기에 있던 호환용 한글 자모 ㄱ(U+3131)만 0xA4, 0xA1로 바꾸는 게 아니라 표준 한글 자모 영역에 있는 U+1100(초성 ㄱ)과 U+11A8(종성 ㄱ)까지 다 호환용 한글 자모 ㄱ으로 바꾼다는 뜻이다. ?로 바꾸지 않는다.
이런 예가 호환용 한글 자모나 일부 유럽 문자에 대해서 더 존재한다. 유럽 문자라 함은, 대문자 버전이 존재하지 않을 경우 그냥 소문자 버전으로 바꾸는 식이다.

이런 동작을 원하지 않고 엄밀하게 변환을 하고 싶다면 WC_NO_BEST_FIT_CHARS라는 플래그를 반드시 줘야 한다. 얘는 변환된 타 인코딩을 유니코드로 역변환했을 때 원래의 유니코드로 정보가 유지되지 않는다면 무조건 ?로 바꾼다. 즉, U+11??대의 표준 한글 자모는 호환용 한글 자모로 바뀌지 않는다. 이 옵션은 Windows NT4에도 존재하지 않으며, 98/2000부터 새로 추가된 얼마 안 되는 기능이다.

어느 방식을 사용할지는 그야말로 상황에 따라 다르다. 문자열을 복사하는 함수만 해도 버퍼 크기가 초과되었을 때 그냥 뒷부분을 융통성 있게 잘라 버려도 괜찮은 경우가 있는가 하면, 반드시 정확도가 보장되어야 해서 차라리 예외가 발생해야 하는 경우도 있을 수 있으니 말이다.

한편, 여타 인코딩에서 유니코드로 바꾸는 경우는 작은 집합에서 큰 집합으로 가는 것이니 일단은 유니코드에 대응하지 못하는 문자 걱정은 없다.
하지만 아무래도 여러 바이트가 한 글자를 구성하다 보니 정규화가 잘못되어서 해당 인코딩에 해당하지 않고 유니코드로 변환 자체가 될 수 없는 바이트 나열이 들어있을 수 있다. 이 경우는 유니코드로 변환했다가 다시 그 인코딩으로 역변환을 했을 때 바이트 나열이 원래대로 돌아올 수가 없게 된다.

이런 일이 발생했는지를 엄격하게 체크하려면 Multi... 함수에다 MB_ERR_INVALID_CHARS 플래그를 주면 된다.
<날개셋> 편집기는 이 두 경우를 모두 체크하여 불러오기가 제대로 되지 않았을 때, 혹은 저장과 함께 정보가 소실될 우려가 있을 때 경고 메시지가 나온다.
저장이야 UTF8 내지 UTF16 같은 유니코드 계열 인코딩만 골라 주면 문제가 없지만, 불러오기 자체가 문제가 있었다면 그 어떤 인코딩을 쓰더라도 다시 저장하는 순간 정보 소실이 생기기 때문이다.

4.
다음으로, 우클릭 메뉴를 구현할 때 즐겨 쓰이는 TrackPopupMenu(Ex) 함수에 대해서도 좀 한 마디 하겠다.
사실 얘는 굳이 임의의 지점을 우클릭했을 때 외에도, 어떤 버튼을 눌렀을 때 메뉴가 튀어나오게 하는 용도로도 많이 쓰인다. 그래서 Ex 버전에서는, 메뉴가 상하좌우 좀 치우친 곳에서 튀어나와서 위치 보정이 필요하더라도, 그 버튼 영역은 메뉴에 의해 가려지지 않게 하는 유용한 옵션이 추가되었다.

윈도 Vista 이상에서부터는 버튼의 오른쪽 끝에 ▼라는 split 버튼을 넣는 옵션이 추가된 관계로, 팝업 메뉴는 이 UI와 연동되어 즐겨 사용된다. 본인이 개발하는 <날개셋> 한글 입력기의 제어판 UI에도 물론 적극 활용되었다.

그런데 그건 그렇고.. 본인이 이 함수에 대해서 좀 이해가 안 되는 면모는 크게 두 가지이다.
얘는 HWND를 하나 인자로 받는다. 사용자가 메뉴를 ESC로 취소하지 않고 뭔가 항목을 선택하면 그 명령 ID가 부모 윈도우에다가 WM_COMMAND의 형태로 전달된다. 이것은 일단은 팝업 메뉴 말고도 단축키 내지 프로그램 창에 기본으로 딸린 메뉴를 선택했을 때와 동작의 일관성을 맞추기 위한 조치이다.

그러나 그렇게 하지 말고 사용자가 선택한 명령 ID가 그냥 함수의 리턴값으로 바로 오게 할 수도 있다. DLL 같은 걸 만들기 때문에 응용 프로그램의 기본 메뉴 연계 따위를 생각 안 하는 환경에서는 이런 디자인이 훨씬 더 유용하다. 그래서 이때는 flag에다가 TPM_RETURNCMD를 주면 된다.

사소해 보이는 팝업 메뉴의 디자인도 이렇게 두 양상으로 나누어 생각할 수가 있는 것이다.
마우스의 드래그 드롭 동작을 각 WM_LBUTTONDOWN, WM_MOUSE, WM_LBUTTONUP 핸들러 함수에다 제각기 따로 처리할지, 아니면 WM_LBUTTONDOWN 안에다가 또 message loop을 만들어서 한 함수 안에다가 다 집어넣을지의 차이와 비슷한 맥락이다.

아무튼, 메뉴에서 TPM_RETURNCMD에 대해, MSDN에는 "determine the user selection without having to set up a parent window for the menu."라는 문장까지 버젓이 있는데..
그럼에도 불구하고 TPM_RETURNCMD가 있더라도 HWND hParent의 값은 어떤 경우에도 NULL이어서는 안 된다. 심지어 자신이 만들지 않은 다른 윈도우(데스크톱 전체 윈도우 같은)를 줘도 안 되고 동작이 실패한다.

WM_COMMAND를 안 받으면 이 윈도우는 정말 레알 천하에 필요하지 않은데도 말이다. 애초에 메뉴가 튀어나오는 좌표도 언제나 화면 좌표이지 부모 윈도우 같은 걸 받지도 않는다. 그래도 이 윈도우는 없으면 안 된다.
그래서 <날개셋> 한글 입력기는 부득이하게 화면에 표시도 안 되는 message-only 윈도우를 간단히 만들어서 이걸 셔틀로 삼아 메뉴를 띄운 뒤, 메뉴가 사라지자마자 그 윈도우를 메시지 펌핑 하나 안 하고 파괴해 버리는 꼼수를 불가피하게 쓴 부분도 있다. 순전히 삽질이다.

이게 한 가지이고, 다른 하나는.. TPM_NONOTIFY라는 플래그는 왜 있느냐는 것이다. TPM_RETURNCMD 플래그가 있으면 명령 ID는 리턴값으로 오고 WM_COMMAND가 가지 않아서 이미 no notify의 효과가 나는데 저 플래그가 또 하는 일이 무엇인지 MSDN만 봐서는, 또 내 직관과 경험만으로는 모르겠다. 알 수 없는 노릇이다.

5.
인터넷에서 갓 다운로드한 파일은 운영체제가 뭔가 좀 다르게 취급한다는 걸 컴퓨터(일단은 Windows 기준으로) 사용자라면 경험적으로 다들 아실 것이다.
Word나 Excel 같은 프로그램에서 문서를 열면 "이 문서는 인터넷에서 가져온 것이기 때문에 위험할 수 있다. 매크로를 기본적으로 꺼 놨다" 이런 꼬리표가 붙는다. msi나 exe는 잠재적인 범죄자로 취급되며, 특히 디지털 서명 같은 게 없으면 다루기가 정말 까다로워져 있다.

먼 옛날 2000년대 중반엔 Windows XP에 보안 업데이트가 행해져서 이렇게 '인터넷 다운로드'로 분류돼 있는 CHM(컴파일된 HTML)은 아예 화면에 표시가 되지 않게 됐다. 파일 속성을 들어가서 '차단 해제'를 해 줘야만 이들 파일도 일반 파일들과 동등하게 다룰 수 있게 된다.
(XP도 초창기엔 읽기 전용 매체인 CD도 아니고 USB 메모리가 autorun.inf 실행이 됐을 정도로 UI 차원에서의 보안이 굉장히 막장이긴 했다. 이것도 다 훗날 보안 업데이트를 통해 막혔음.)

그나저나 저런 '다운로드 파일' 보안 속성은 운영체제 내부에서는 어떻게 구현되어 있을까?
가장 간단하게 생각할 수 있는 방법은 도스 시설부터 존재했던 파일 속성이다. 일명 ARHS(기록, 읽기 전용, 숨김, 시스템)의 형태로 존재하던 것 말이다. 실제로 Windows에는 이것 말고도 압축/암호화 등 내부적으로 쓰이는 속성이 더 있다.

하지만 다운로드 속성은 그런 비트 형태의 속성으로 구현되어 있지는 않다.
바로 파일 시스템 차원에서 제공되는 대체 데이터 스트림이 해당 파일에 꼬리표처럼 붙는데 거기에 있는 zone identifier가 이 파일이 인터넷에서 왔음을 나타낸다.

대체 데이터 스트림은 당장 내 컴퓨터의 다운로드 디렉터리에서 DIR /r을 하면 정체를 확인할 수 있다. 내 기억이 맞다면 CreateFile 함수로 저 대체 스트림의 내용을 바로 확인할 수도 있으며, IZoneIdentifier 인터페이스 등을 얻어서 이것을 조작할 수도 있다. 물론 저 꼬리표를 제거하는 것도 포함해서 말이다. 자세한 방법 소개는 The Old New Thing 블로그 내용을 링크하는 것으로 대체하겠다.

이런 기능이 과거의 FAT 계열 파일 시스템에서 가능했을 것 같지는 않고.. 언제 도입되었는지는 잘 모르겠다. 최소한 Windows 9x 시절의 IE 6 미만에는 없었던 것 같다.

Posted by 사무엘

2015/04/05 08:35 2015/04/05 08:35
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1080

날개셋 한글 입력기 7.9 -- 下

(上에서 계속됨)
※ 중대한 버그 수정

기능 얘기는 상편에서 그럭저럭 다 했고, 이제는 안정성이나 문서 등 부수적인 변화 사항 얘기를 하겠다.
굳이 직전 버전인 7.7만 그랬던 건 아니지만, 알고 보니 단순한 오동작 수준이 아니라 프로그램이 뻑날 정도의 안정성 버그가 생각보다 여러 곳에 있었다.

  • 편집기에서 Alt+F1로 보조 입력 도구 대화상자를 꺼낸 뒤, '확인'이 아니라 '설정'을 누르고 취소를 눌렀을 때
  • 콤보 박스가 있는 문자표나 부수 한자 입력 같은 보조 입력 도구를 꺼내서 콤보 박스를 클릭한 뒤, 그 상태에서 리스트를 우클릭 했을 때
  • 제어판의 글쇠배열이나 한자 낱자 선택기처럼, 문자열이 아닌 문자 하나만 입력받지만 어쨌든 날개셋 에디트 컨텍스트를 사용하는 자체 컨트롤에서 특수글쇠를 사용했을 때

그리고 외부 모듈은 입력 항목 전환 수식의 값을 잘못 줬을 때 인덱스 오버플로우가 나서 역시 오동작과 crash가 발생할 수 있었다. 해당 문제를 해결했다.

※ 사소한 개선

버그이긴 하지만 프로그램의 안정성에 영향을 끼칠 정도는 아닌 것으로는,
(1) 글쇠배열 편집 윈도우에서 '두벌식 한글'을 입력받는 모드로 가는 단축키 F6이 실제로는 동작하지 않던 문제를 해결했다. 사용자의 제보로 문제를 발견했는데, 이런 것까지 어떻게 찾아 냈는지 신고해 주신 분이 정말 대단하고 고맙다.

(2) 글쇠 수식 편집 대화상자에서 상하 인접 글쇠 버튼을 통해 4단 숫자 자리로 갈 때, 정확하게 인접 글쇠로 가지 않던 문제를 해결했으며, 이 대화상자를 '확인'을 눌러서 종료하면 마지막으로 편집하던 글쇠 위치로 cursor도 자동으로 가 있게 동작을 고쳤다. 이렇게 하니까 역시 훨씬 더 낫다.

(3) 사용자에게 당장 심각하게 와 닿는 문제는 아니겠지만, DLL의 로딩 reference count가 꼬여서 DLL들이 FreeLibrary 때 바로 해제되는 게 아니라 해당 프로세스가 종료될 때에야 해제되던 문제를 해결했다. 직전 버전인 7.7을 포함하여 지금까지 역대 날개셋 프로그램들이 거의 다 갖고 있었던 문제이다.

※ 사소한 변경

(1) 현재 문자표(편집기에서 Ctrl+I)를 꺼내면 유니코드 문자에 대해 BMP 영역에 한해서 그 문자의 이름이 나옴과 동시에, KS X 1001로 변환 가능한 문자는 그 KS 코드 번호도 []로 둘러싸져서 같이 나온다. 그런데 변환 후에 다시 원래 문자로 역변환이 정확하게 되지 않는 문자는 * 로 추가로 표시가 되게 했다.
예를 들어 U+00A9 Copyright sign은 [A8CF]로 바뀌긴 하지만, 엄밀히 말하면 이것은 "동그라미+소문자 C"여서 모양만 비슷할 뿐 실제로 서로 다른 글자이다. 이런 것들이 [A8CF]* 로 표시된다.

(2) 이제 날개셋 설정의 내부에서 외부 파일을 참조하는 경우가 두 가지나 생겼는데(후보 데이터, 문자 집합 데이터), 설정을 저장하거나 불러오는 중에, 자기 자신이 들어가는 컨테이너 파일의 경로에 대한 정보를 감안할 수 있게 했다. 그래서 참조하는 외부 파일이 컨테이너 파일(ist, set, xml 따위)과 동일하거나 그 하부 디렉터리에 있다면, 절대 경로 대신 상대 경로로 저장된다. 그래서 ist/set 파일과 txt 데이터 파일을 같이 인터넷으로 배포한다거나 하는 작업이 원활히 처리 가능해졌다.

(3) Windows 8의 IME들은 [가], [A] 같은 한영 상태가 '검은 테두리'가 쳐진 흰 글자로 찍히는 것이 표준 디자인 가이드라인이다. 이와는 달리 내 프로그램은 잘 알다시피 지금까지 그냥 흰 글자만 찍히곤 했는데, 드디어 이제부터 글자 주위에 검은 테두리가 추가되었다. 직접 보면 차이를 느낄 수 있을 것이다.

※ 문서화

도움말에도 새로 추가된 기능 때문에 당연하게 내용이 추가된 것 외에도, 기존 내용도 10수 군데 이상이 바뀌었다.
아주 사소한 것부터 열거하자면, "답은 한글" 페이지에 재레드 다이아몬드 교수의 quote를 추가했다. 지금까지 당연히 수록돼 있을 거라고 생각했는데 그렇지 않은 걸 뒤늦게 알고는 경악했다.

"기본 자료구조"에서 "한글이 표현되는 방식"에 덧붙여 옛한글이 표현되는 방식을 별도의 지면을 할애하여 미리 설명했다. 한양 PUA는 다 걷어내기에는 이미 인프라가 굳어져 버렸다는 것, 그리고 유니코드 5.2가 가장 이상적이긴 하지만 아래아한글 2010 내지 Windows 8 이상에만 볼 수 있다는 것까지 언급했다.

이 외에도 인디자인 오동작에 대한 설명(명백히 인디자인 자체의 버그임), 단축글쇠 규칙과 관련된 여러 유의 사항들, 사용자로부터 지적된 오타 수정 등이 반영되었다.
다만, 문서 구조가 점점 "훈계 위에 훈계, 줄 위에 줄, 여기에 조금, 저기에 조금"(사 28:10)처럼 돼 가고 있다. 중구난방 산만하지고 있다는 뜻임. 언젠가 또 문서 내용을 싹 다 엎고 재정리를 해야 할 날이 올지도 모른다. =_=;;;

※ 영문 홈페이지

한편, 외국인들은 잘 알다시피 내 프로그램을 오로지 한글 로마자 입력 방식 때문에 사용한다. 도움말을 영작을 도저히 못 하고 있는 게 참 안타까운 현실이긴 한데..
지금까지 페이스북으로 자주 접수된 외국인의 피드백들은 크게 두 가지로, (1) "프로그램 UI가 언제부턴가 갑자기, 혹은 아예 처음부터 한국어로 튀어나온다. 영어로 바꾸는 법은?" (2) "잘 쓰고 있는데 프로그램 바이너리 파일이 삭제되고 제대로 동작을 안 한다."였다.

(1)에 대처하기 위해 영문 버전 홈페이지에 있는 서바이벌 가이드에다 언어를 변경하는 순서를 집어넣었다. (2)는 아마 안티바이러스 프로그램이 시스템을 감시하고 있다가 내 프로그램을 수상하다고 판단하고 무단으로 지워 버리기 때문인 거라고 설명을 넣었다. 내 프로그램은 msi, exe, dll 등등에 디지털 서명이 전혀 없기 때문이다.
아마 Windows 8부터는 다운로드 후에 탐색기에서 msi 파일의 속성을 꺼내서 Unsafe 마크를 수동으로 지워 준 뒤에야 설치가 가능했을 것이다.
쩝~ 서명도 받아야 할 텐데 이것도 한 최하 8.0 버전 이후대로 나중에 생각하기로 한다. 일단은 닥치고 프로그램 연구 개발만 해야 하기 때문에.

※ 다음 버전 계획

새 버전 자랑은 그럭저럭 다 늘어놓은 것 같고 지금부터는 후일담이다.
이번 7.9는 코딩 노예 계약서에 명시되어 있는 여러 아이템들을 이행하고 실현했지만, 그래도 미처 다 이루지 못하고 8.0으로 넘긴 아이템들 역시 많다. 입력 엔진 쪽은 제끼고, GUI 분야에서 작업이 확정되어 있는 것은 다음 두 가지 아이템이다.

(1) 수식에서 숫자는 무조건 한 형태로 획일화하는 게 아니라 10진수, 16진수, 상수 명칭이 적용된 놈 등 사용자가 입력한 원형을 보존하게 할 것이다.

(2) '보조 입력 도구'가 현재 한손 입력기, 화면 키보드, 부수 한자, 문자표 이렇게 4종류가 있다. 여기에 현재 사용자 변수(소문자)의 값과 지금 선택된 입력 항목의 번호를 원하는 형태로 보여주는 "사용자 편의형" 보조 입력 도구를 하나 추가할 것이다.

cursor 근처에 현재의 한영 상태를 표시하는 기능을 좀 추가해 달라는 기능 제안이 있었다. 물론 Windows 8 이상의 메트로 UI에는 이런 기능이 필요하고 날개셋 역시 그걸 지원한다. 하지만 데스크톱 UI에는 이미 멀쩡히 language bar가 운영체제 차원에서 제공되기 때문에 이것은 기능 중복인 관계로, 본인은 그런 제안을 일단 받아들이지 않았다.
굳이 그런 기능이 꼭 필요하다면 사용자가 그런 용도의 보조 입력 도구를 꺼냄으로써 그 기능을 사용 가능하게 할 것이다.

※ 다음 버전에서는 한글 정규화 방식이 변경될 예정

과거에 Windows Vista/7에서는 현대 한글이 자모 조합으로 풀어져서 표현된 것을 역시 한데 묶어서 출력해 주곤 했다. 가령, U+AC00뿐만 아니라 U+1100, U+1161도 똑같이 '가'로 찍어 줬다는 뜻이다. 이건 이전 버전인 XP까지는 없던 기능이었다.
그런데 지난 8부터는, 옛한글 쪽은 유니코드 5.2 자모가 추가되는 와중에 현대 한글을 모아서 출력해 주던 기능은 도로 없어졌다. 어찌 된 일일까?

답부터 말하자면 이것이 표준 규격을 더 준수하는 쪽으로 바뀐 것이기 때문이다.
유니코드 5.2와 함께 한글을 표현하는 규칙도 예전보다 더 엄격하게 바뀌었다. 현대 한글은 무조건 글자마디로, 옛한글이나 미완성 한글은 자모 조합인데 이것도 '초+중+(종)' 형태만 허용한다. 현대 한글을 자모 조합으로 표현하는 것은 이제 지원되지 않게 되었다.

<날개셋> 한글 입력기는 상징적인 의미를 감안하여 지금 7.9는 여전히 놔두고, 다음 버전인 8.0때부터 새로운 정규화 규칙을 적용할 것이다.
맥 OS는 계속해서 한글을 자모 조합으로 풀어서 표현하는데, 이것은 해당 소프트웨어의 잘못이다.

※ 갈수록 복잡해지는 프로그램

<날개셋> 한글 입력기의 전체 소스 코드는 7만 줄의 돌파를 앞두고 있고, 커널인 Ngs3.dll은 이제 15비트 단위를 넘어섰다(> 32768).
<날개셋> 편집기 같은 크기 고정 비트맵 글꼴 하나밖에 지원 안 하는 이 단순한 에디터도 사용자가 키를 하나 눌러서 cursor가 움직이고 A나 '가' 같은 글자가 하나 입력돼서 화면에 찍히기까지..
컴퓨터 내부에서 일어나는 변화와 실행되는 코드, 처리가 내가 보기에 너무 많은 것 같다.

동일한 일을 하더라도 지난 10여 년 동안 온갖 추상화 계층이 늘어나고 이것저것 체크할 게 늘어나다 보니 컴퓨터가 해야 하는 일은 더욱 많아진 것이다.
이 정도 규모의 프로그램이 벌써부터 이 지경이 됐는데 좀 더 최적화를 할 거리가 없는가 하는 자책감(?)이 들기도 하고, 한편으로는 서식이 존재하는 워드 프로세서는 얼마나 더 복잡할까 하는 생각이 든다.

단순 텍스트 에디터보다 복잡한 건 서식이 들어간 에디터이고, 그냥 화면용 서식을 처리하는 것보다 더욱 어렵고 복잡한 건 역시나 그 서식을 장치 독립적인 위지윅 형태로 레이아웃 가능한 워드 프로세서이다. 이미 아시는 분도 있겠지만 단적인 예로, 스프레드 시트인 엑셀은 서식은 지원하지만 위지윅을 지원하는 프로그램은 아니다!

※ 어떤 기능이 새로 추가되기까지의 과정

<날개셋> 한글 입력기에 새로운 기능은 대략 다음과 같은 사이클를 거쳐서 연구 개발되어 왔다. 참고 차원에서 소개한다.

  1. 수요 발생: "어.. 뭐가 불편하다, 이런 방식으로 입력이 가능했으면 좋겠다."
  2. 타당성 검증: "이게 있으면 타자를 더 편리하게 할 수 있거나 이론적으로 커버 가능한 한글 입력 동작의 영역을 더 확장할 수 있는 게 확실하다."
  3. 세부 작계 수립: 이론을 현재의 날개셋 소스에다가 접목한다. "이 기능은 입력 스키마에, 저 기능은 문자 생성기의 요 계층에 들어가면 되겠다. 요 가상 함수를 오버라이드 하면 된다. 이 때문에 부과되는 런타임 상의 메모리/성능 오버헤드는 이 정도이다."
  4. 구현: 기존 소스를 고쳐서 최소한의 기능만 동작하는 형태로 돌려 봄. 핵심 알고리즘을 실제로 구현함. 시제품을 하나 만든 것과 같음.
  5. storage: 이 새로운 기능으로 인해 새로 추가된 설정치 데이터가 있다면, 그걸 바이너리나 XML 형태로 저장되는 방식을 결정함
  6. GUI: 그 새로운 설정치들을 사용자가 고치는 대화상자 인터페이스들을 얹음
  7. 도움말: 새로운 개념, GUI들을 도움말에다 문서화함

5~7은 일종의 양산 단계와 같다. 4에 해당하는 코드가 전투 병력이라면 5~7은 보급 병력인 셈이다.

※ 맺는 말: 세벌식 진영의 파편화에 대한 생각

내 프로그램을 오래 사용하고 이곳 내 블로그에도 종종 들러 오신 분이라면 내 성향을 어렴풋이 알 것이다. (정치· 종교 성향 같은 거 말고=_=;; 한글 기계화 쪽 지론.)
난 골수 공 병우 세벌식주의자이고 세벌식을 그렇게도 깊이 연구했으며 한글 IME를 15년째 만들어 오고 있지만, 나만의 고유한 글쇠배열 하나 발표한 적이 없다.
글쇠배열 자체는 세벌식 최종을 예나 지금이나 별 불만 없이 잘 쓰고 있고, 단지 거기에다가 일부 특수글쇠만을 집어넣어서 "세벌식 무한낱자 수정"이라는 변종을 하나 만들었을 뿐이다. 영문 기호 같은 다른 '문자'를 집어넣은 게 아니다.

즉, 난 선박으로 치면 항해보다는 기관을 연구하는 사람이다. "Bksp를 눌렀을 때 무슨 단위로 지워지게 할 것인가"처럼 글쇠배열을 고치지 않고 그렇다고 NLP 기능도 동원하지 않고, 한글 입력기의 기계적인 메커니즘 자체를 더 정교하고 똑똑하게 만드는 것이 본인의 관심사이다. 문자 입력을 연구한다는 사람이 으레 관심을 갖기 쉽다고 여겨지는 저 두 분야는 정작 거의 다루지 않고 완전히 비껴 갔다는 점이 특징이다.

글쇠배열이야 어차피 이 장점을 살리면 저 단점이 있을 수밖에 없기 때문에, 초중종성이 모두 문맥 의존적이지 않은 독립된 자리에 배당돼 있고 "오른쪽에서 왼쪽 순이라는 큰 틀만 공 병우 스타일에 들면, 그 뒤부터는 뭐 어떻게 만들든지 도찐개찐"이라고 생각한다. 그리고 많은 사람들의 통념과는 달리, 본인은 4단 사용과 여러 겹받침 글쇠가 그렇게 큰 단점이라고 생각하지 않는다. 굳이 기계식 타자기와의 물리적인 호환성까지 고려하지 않더라도, 타자기와 컴퓨터가 사용자 경험이 근본적으로 완전히 다른 것도 아닌데.. 양손 균형과 리듬감을 위해서라도 그런 것들은 필요하다.

즉, 본인은 공 병우 세벌식 패러다임은 이미 타자기 시절 때 큰 그림이 그럭저럭 완성되었기 때문에 오늘날에도.. 무슨 스마트폰이나 아이패드로 논문을 쓰고 책을 저술하는 정도의 격변히 있지 않은 이상 기존 390과 최종의 사이를 절충하는 아주 사소한 변화 이상의 변화가 또 필요하다고 생각하지는 않는다. 모바일이나 터치 스크린을 배려해서 신세벌식 스타일로 중성과 종성을 문맥 의존적으로 중첩 배당하는 것은 불가피한 상황에서 optional한/부가적인 동작 방식으로 별도로 논의해야지, 그게 main이 돼서는 안 된다고 생각한다. 하긴, 최종이라는 명칭조차도 391이 더 정확하다는 말이 있는데.. 일단 7.9에서는 반영하지 않고 그냥 놔 뒀다.

요즘 민간에서는 이 둘의 통합을 목적으로 글쇠배열을 연구하고 날개셋 설정 파일을 배포하는 분이 계신다. 그런 걸 창의적으로 마음껏 연구하고 손쉽게 써 보라고 내 프로그램을 만든 것이니 이것은 일면 반가운 현상이다. 세벌식 자체가 듣보잡으로 걍 묻혀 가는 것보다 백 배 나은 모습이다. 컴퓨터의 속도가 아무리 빨라져도 거품 정렬이 퀵 정렬보다 더 빨라질 수는 없는 것처럼 양 손 열 손가락을 쓰는 환경에서 두벌식은 세벌식을 구조적으로 결코 따라잡을 수 없는 건 명백한 사실이다. 세벌식을 배제한다는 건 한글 입력의 진정한 활용 가능성을 반 이상 제 발로 포기하는 짓이다.

다만 세벌식 글쇠배열이 갈수록 파편화해 가는 것에 대해서는 본인 역시 본연의 임무인 프로그램의 연구 개발을 그럭저럭 마친 뒤엔 좀 더 적극적으로 의견을 내야 할 것 같다. 또한 공 병우 박사를 직접 뵌 적이 있는 후예 세대들과(390 위주), 그 후에 세벌식을 접한(최종 위주) 본인 같은 세대 사이에 좀 더 적극적인 의사소통과 의견 수렴이 필요할 것으로 보인다.

공 병우 박사는 저렴한 보급형 교육용 IBM PC 따위는 거들떠보지도 않고, 1980년대 초 그 옛날에 그 비싼 돈지랄이던 애플 매킨토시로 컴퓨터를 시작한 분이다. 80대 노인이 다 돼서는 그것도 21세기도 아닌 1980년대에 아들뻘인 5, 60대 중장년 후배들을 보고 "지금 시대가 무슨 시대인데 컴퓨터를 안 배우다니 무슨 추태냐! 아직도 펜으로 글을 쓰는 미개한 족속 같으니라고.. 서양에서는 초음속기와 우주선이 날아다니는 마당에 우리는 아직 소 끌고 달구지 끌고 다니는 거나 마찬가지다" 이렇게 갈궜던 넘사벽 얼리어답터임을 생각할 필요가 있다.

이거 뭐 우리 같은 사람은 사고방식이 뭔가 범접할 수 없는 분이다. 또한 본업인 안과학뿐만 아니라 공돌이 기질도 펄펄 넘쳐서 기계 발명도 엄청 많이 하셨던 분인데, 그런 분이 인터넷과 스마트폰을 접했으면 또 무슨 생각을 했을지(일단 스마트폰은 시간을 아껴 주는 좋은 물건이라고 기본적으로 +50점은 먹고 들어갈 듯).. 기계식 타자기와 직접적인 관계가 없으며 전통적인 두벌 세벌 논쟁과는 한 발짝 떨어져 있는 모바일 기기에서는 한글 입력에 대해 어떤 생각을 하셨을지 나로서는 100% 정확하게 시뮬레이션을 할 수 없다. 그래도 글쇠 수를 일부 줄일지언정 도깨비불 현상이 없는 한글 입력 방식은 반드시 필요하다고 주장하셨을지도 모르겠다.

사용자 삽입 이미지

* 지난 3월 6일, 한글 회관에서 열린 공 병우 정신 계승 강연회. 본인은 2005년의 10주기 때도 참석했고 20주기 때도 참석했다. 송 현 선생, 한 재준 교수, 안 대혁 박사가 각각 한글 글자판, 글꼴, 코드 분야에서 공 박사 정신이 끼친 영향력을 잘 강의해 주셨다. 내용도 쉬운 것부터 점차적으로 어려워졌다.

Posted by 사무엘

2015/04/02 08:31 2015/04/02 08:31
Response
No Trackback , 10 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1079

날개셋 한글 입력기 7.9 -- 上

바야흐로 2015년 봄에 <날개셋> 한글 입력기 7.9를 내놓게 된 것을 기쁘게 생각한다. 번호가 9로 끝나는데 날짜가 마침 서울 지하철 9호선 2차 구간 개통일과 일치하는 것은 그냥 우연...;;치고는 절묘하다. ^^

이번 7.9는 이 프로그램의 개발 역사상 "한글 입력 체계" 카테고리에만 아이템이 제일 많이 추가된 버전이다. 지난 1월 이후로 중간 개발 근황글이 없다시피했는데, 근황글을 쓰는 것조차 시간이 아까울 정도로 지금까지 너무 바쁘게 지냈기 때문이다. 코딩, 글쓰기, 학교 과제, 회사일, 교회 서적 번역..
그래도 8.0까지 가는데 더는 지체할 수가 없어서 이번 7.9에서 한번 쉬었다 가고자 한다.

※ 새로운 날개셋문자: '글쇠 누름' 타입

IME란 기본적으로 특정 키보드 입력을 가로채어 그 대신 운영체제가 제시하는 다른 규격대로 조합/완성 문자열을 생성하여 보내는 프로그램이다. 그런데 발상을 전환하여, A라는 키보드 입력을 가로채어 그 대신 B라는 다른 키보드 입력을 생성하는 기능이 날개셋문자의 타입 차원에서 추가됐다. 여기에는 단타뿐만 아니라 간단히 Ctrl/Shift 조합도 포함될 수 있다.

<날개셋> 한글 입력기는 IME일 뿐 키매크로나 키보드 드라이버 훅킹 같은 걸 '지향'하지는 않는다. 하지만 새로운 날개셋문자 타입을 이용하면 A를 눌렀는데 화살표 키가 눌린다거나, 다른 뭘 눌렀는데 Ctrl+A가 눌린다거나 하는 간단한 치환 효과를 낼 수 있다. 프로그램의 활용 가능성이 더욱 높아지리라 기대한다.

GetMessageExtraInfo 함수가 이런 용도로 쓰인다는 걸 알 수 있었다. 즉, 사용자가 진짜로 누른 키 입력 메시지와, 프로그램이 인위로 생성한 키 입력 메시지를 구분하기 위해서다. 내가 인위로 생성한 키 메시지는 또 가로채지 않아야 하니까. 이는 The old new thing 블로그에도 언급되어 있다. 그리고 <날개셋> 한글 입력기가 개발 15년 만에 이 캐잉여 함수를 사용하는 프로그램의 반열에 올랐다. 경to_the축!

날개셋문자의 종류가 3.0 시절에는 5종류밖에 없던 것(일반, 세벌, 두벌, 특수글쇠, 상태 전이)이 이제는 10종류로, 정확히 두 배로 늘었다(중종-초, 종-초중, 다중 문자, 종성 두벌, 글쇠 누름). 그래서 이 참에 날개셋문자를 생성하는 대화상자도 이렇게 바뀌었다. 라디오 박스 목록 대신, 날개셋문자 기능들이 어떻게 분류되는지를 나무 계층 구조를 통해 알 수 있게 했다.

사용자 삽입 이미지

※ 글쇠 인식 관련 마이너 기능

앞서 언급한 '글쇠 누름' 날개셋문자를 추가하기 위해, 편집기, 외부 모듈, 입력 패드라는 모든 구현체에서 글쇠 인식 부분을 상당수 손질을 해야 했다. 그리고 이걸 수행하는 과정에서 뜻밖의 작업이 덤으로 행해졌는데..
화면 키보드에, 글쇠를 클릭해서 문자를 입력하는 통상적인 기능뿐만 아니라 역으로 사용자가 누른 키보드 글쇠를 화면에다 표시해 주는 기능을 드디어 추가했다. 화면 키보드를 우클릭하면 이걸 켜는 옵션을 볼 수 있다.

그리고 '글쇠 누름' 날개셋문자를 생성하는 UI를 구현하려다 보면 결국은 "입력하고자 하는 글쇠를 직접 눌러서 선택"하는 UI가 필요해진다.
이걸 구현하는 김에, 예전 고급 입력 스키마의 '고급 글쇠 인식 옵션' 대화상자에다가도 [...]버튼을 추가하여 대상 글쇠를 콤보 상자에서만 고르는 게 아니라 직접 눌러서 고르는 UI를 같이 추가했다.

※ 입력 스키마와 글쇠배열

(1) 글쇠 수식의 R 변수에다가 임의의 32비트 크기의 난수를 되돌리게 하는 옵션을 '고급 스키마'에 추가했다. 입력 동작을 non-deterministic하게 만드는 기능인데 굳이 '기본 스키마'가 갖춰야 할 기능이라 생각되지는 않아서 고급에다가만 넣었다. 'A'+R%26 이렇게 수식을 넣어 주면 A부터 Z까지 아무 알파벳이 임의로 입력되게 된다.
R 변수는 실제로 사용할 때만 값이 정해진다. 사용하지도 않는데 매번 무조건 난수값이 계산되고 사이클이 변하는 것은 아니다.

(2) 필요하다면 글쇠배열 수식의 전후에, 모든 글쇠에 대해 공통으로 실행할 수식을 지정할 수 있게 했다. 소문자로 된 사용자 정의 변수를 공통으로 초기화한다거나(전처리), 그리고 날개셋문자를 되돌릴 때 사용하는 변수값과 최종적으로 변경되어야 하는 변수값이 다를 때(후처리) 이 기능을 사용하면 된다.
물론 이런 전처리/수처리 수식을 사용할 정도이면 글쇠 수식이 정말 상황 의존적이고 복잡한 상황일 것이다. 한글 입력 순서를 자동으로 계산하는 기능은 그런 보조 수식은 고려하지 않고 동작한다.
지금까지 글쇠배열과 관련된 속성 숫자를 지정하는 입력란이 있었지만 사용하지는 않고 있었는데, 이제부터는 그 숫자를 이런 옵션을 저장하는 용도로 사용할 것이다.

(3) 글쇠배열 수식의 T 변수에는 기본 입력기가 만들어 내는 한글 조합의 오토마타 상태만 들어있었다. 그러나 옵션을 준 경우 고급 입력기가 만들어 내는 사용자 정의 조합의 상태 번호도 여기에 들어가고, 그 대신 이 조합의 타입 값이 C라는 변수에 들어가게 했다. 한글이면 1, 사용자 정의 조합이면 2이다. 하지만 고급 입력기의 사용자 정의 조합은 개념상 오토마타와 낱자 결합을 통합한 로직을 자체적으로 갖고 있기 때문에 글쇠배열이 조합 상태에 따라 조건부로 동작해야 할 일은 그리 많지 않을 것이다.

(4) 또한 옵션을 준 경우, 굳이 '상태 전이' 날개셋문자를 사용하지 않고 글쇠배열 수식에서 T 값을 변경하면 그걸로도 상태 전이 효과가 나게 했다. 이게 언제 유용한지는 좀 더 생각해서 입력 예제를 만들어 봐야 할 것 같다.

※ 입력 기능 추가

다음으로 문자 생성기 계층으로 넘어가면,
(1) '낱자 재결합' 텍스트 필터의 기능을 일부 수행하는 특수글쇠가 추가됐다. 기[ㅇ](종성 조합 중)을 [깅]으로 바꾼다거나, 저렇게 앞으로 가는 게 아니라 뒤로 결합을 하는 특수글쇠도 있다. 물론 이것은 조합이 끝난 옆의 글자를 변형하는 기능이기 때문에 TSF A급 구현체에서만 제대로 동작한다.

(2) 비록 이번 7.9에서 온전히 구현되지는 않았지만 곧 지원될 세벌식 지능형 동시치기 기능을 염두에 두고 음수 오토마타 지시자가 두 개가 새로 추가되었다.
지금 입력된 글쇠뿐만 아니라 직전의 글쇠까지 동시에 다음 글자로 옮기는 것, 그리고 지금 입력된 글쇠와 예전에 입력된 글쇠의 입력 순서를 바꾸는 것인데, 이와 비슷한 기능을 하는 특수글쇠도 같이 추가되었다.
앞으로 입력 스키마 차원에서 새로운 기능이 추가되면, 세벌식 글자판에서도 글쇠 입력 타이밍에 따라 도깨비불 비슷한 게 일어나면서 글자 재배치가 일어나는 동작을 볼 수 있을 것이다. 문자 생성기의 기존 기능을 이런 식으로 활용하는 것이다.

(3) 낱자 결합 규칙은 잘 알다시피 A + B = C의 형태인데 여기서 A, B, C는 모두 0이 아니어야 한다. 단지, A~C를 0인 것처럼 보이게 하는 가상 낱자 규칙만을 추가로 지정할 수 있을 뿐이다.
그런데 이번 버전에서는 그 금기를 깨고, 65530이라는 끄트머리의 reserved 낱자와 결합을 시도하는 경우 지금 낱자가 무조건 0으로 바뀌게 하는 예외를 추가했다.

이런 기능이 왜 필요한 것일까? 성분과 성분을 왔다갔다 하는 굉장히 기발한 입력 방식이 존재하기 때문이다. 그 예 중 하나는 김 민겸 님께서 고안한 입력 방식이다.
이걸 보면 "ㄱ → 그 → ㅋ", "ㄱ → 기 → 끼"라는 규칙이 있다. 모음 ㅡ가 한 번 입력되어 버렸는데 그때 또 ㅡ가 입력되면 그 뒤엔 모음은 0으로 깨끗이 초기화되고 초성만 ㅋ으로 바뀌어야 한다.

단순히 표시만 0으로 되는 가상 낱자여서는 곤란하다. ㅋ이나 ㄲ이 만들어진 뒤에 또 후속 모음이 입력되는 경우를 논리적으로 감당할 수 없기 때문이다.
이때 ㅡ 자리에는, 현재 초성으로 ㄱ이 입력되어 있는지를 점검한 후, ㄱ이 있다면 ㄱ을 ㅋ으로 바꾸는 초성을 입력함과 동시에 중성 자리에는 65530을 주면 된다. 이때는 오토마타도 초+중 상태이던 것을 초성 상태로 되돌리게 해야 한다.

<날개셋> 한글 입력기는 이런 것도 이제 이론적으로 수용 가능하게 되었다. 단, 이렇게 여러 낱자가 한꺼번에 변하는 변칙적인 입력 방식은 입력 순서 찾기 같은 자동화 기능의 혜택을 받을 수는 없다. ^^

※ 고급 입력기에 기능 추가 (특히 초성 지향 도깨비불)

온갖 복잡한 기능과 옵션을 동원해서 한글 한 글자를 조합하는 기능은 '기본 입력기'에 다 들어있다. '고급 입력기'가 하는 일은 비한글 문자도 조합을 잡는 걸 가능하게 해서 한글 조합과 혼용하는 것이다. 그리고 한글을 여러 한글로 풀거나 비한글 문자가 섞인 형태로 표현하는 것도 그런 기능에 포함된다.

(1) "한글 출력 치환"에서 "글자 치환" 기능은 지금까지 그냥 이 한글을 저 한글로 치환한다는 식의 테이블 기반 치환만 지원했다. 그러나 수천~수만 자의 한글을 치환해야 하고 치환 규칙이 뭔가 수식으로 표현이 가능하다면, 무엇을 무엇으로 치환할지를 A,B,C에 대한 수식으로도 깔끔하게 표현 가능하게 했다.
유니코드 PUA 영역에다가 여러 글자들을 배당해 놓고 그 글자를 마치 한글 입력하듯이 입력하고 싶다면, 이 출력 치환 기능을 이용하면 된다.

(2) 그리고 "낱자 치환"에서 특별히 종성을 치환하는 기능은 지금까지 가상 낱자와 연계해서 ㄴ+ㅇ 같은 임시 상태를 표현하는 데 쓰이곤 했다. 이번 버전에서는 그걸 더 확장해서 "초성으로 먼저 나갔다가 다시 앞 글자 받침으로 들어가는" 도깨비불 현상을 구현하는 옵션을 추가했다. 다시 말해 "울 -> 우리"가 아니라, "하ㄴ -> 한ㄱ" 이런 식으로 입력이 진행된다는 뜻이다.

지금도 이미 모든 종성에 대해서 종성 A를 "빈 종성 + 초성 A"로 치환하는 종성 치환 규칙을 수동으로 집어넣으면 이런 동작을 구현할 수 있다. 하지만 이 기능은 지금 도깨비불 현상 예상 결과를 토대로 자동으로 구현해 주기 때문에 낱자 치환 기능의 옵션으로 들어간 것이다.

이렇게 종성까지도 초성을 먼저 추구하는 두벌식은, 초성조차 종성 형태로 먼저 입력되는 '종성 지향 두벌식'과는 성향에 관한 한 완전히 딴판이다. 그에 반해 수식을 이용해 초성에서는 초성, 종성에서는 종성 문맥으로 동작하는 일반적인 두벌식은 중도(?) 성향이고 말이다. <날개셋> 한글 입력기는 이런 두벌식의 세밀한 패러다임을 모두 잡아 냈다.

받침이 없는 글자가 받침이 있는 글자보다 더 많기 때문에 두벌식 자판의 도깨비불 현상은 "초성부터 먼저 표시했다가 다음에 종성으로 가는 형태가 원칙상 옳다"라고 주장하는 분이 계신다. 이런 방식은 도깨비불 현상 이질감이 약간 덜할지는 모르지만 조합 중인 한글의 글자 수가 잠시 둘로 늘어나며, 조합이 완성되었을 때의 글자 형태(한)와 조합 중일 때의 글자 형태가(하ㄴ) 달라지는 문제가 있다. 그러니 '선종성 후초성' 방식이 대세가 된 건 다 아무 이유 없이 그리 되지는 않은 듯하다. 이번 7.9 버전도 그 조합 중단 처리가 원활하지 못하기 때문에 이는 8.0에서 풀어야 할 숙제로 남기게 되었다.

※ 새로운 '허용 한글 범위' 기능

지금까지 '허용 한글 범위'로 선택할 수 있던 기능으로는 커널이 기본 제공하는 "KS X 1001 완성형 2350자"에 덧붙여 플러그 인이 제공하는 "한양 PUA 완성형 옛한글 5299자", 그리고 "한컴 2바이트 완조형 옛한글" 정도가 고작이었다. 2350자 테이블이야 날개셋 커널이 완성형 한글 글꼴을 지원하기 위해 어쩔 수 없이 갖추고 있는 것이고 그래서 허용 한글 범위 기능까지 완전 덤으로 제공하는 것이다. 나머지 legacy 기능들도 그냥 명분상으로 제공될 뿐이지 이 유니코드 5.2 천하통일 시대에 딱히 의미가 있다고 보기는 어렵다. '설정'을 눌러도 딱히 설정할 것 역시 없다.

그러나 7.9부터는 이 기능을 예전보다는 좀 더 창의적으로 활용할 수 있게 되었다.
(1) 고급 입력기와 연동하여 "글자 치환"이 존재하는 한글만 입력이 허용되게 하는 기능이 있었는데, 여기에 덧붙여 "낱자 치환"이 된 낱자의 다음 낱자부터는 입력되지 않게 하는 기능도 추가되었다.

좀 변칙적인 입력 방식 중에는 같은 글쇠를 눌렀는데 한글과 비한글 문자가 순환되는 형태인 것이 있다. 비한글도 내부적으로는 가상의 한글 낱자인데 단지 그걸 비한글 문자로 치환해서 출력하는 것일 뿐이다. 그래서, 정말로 한글 초성을 입력하고 있었다면 중성이나 종성으로 더 진행이 가능한 반면, 지금이 비한글 문자로 치환된 초성을 조합하는 상태라면 중성 같은 다음 성분이 현 글자에 붙지 않고 다음 글자로 떨어져 나가게 한다. 이런 기능이 '허용 한글 범위'와 연동이 가능하다는 것이다.

요컨대 한글과 비한글 문자를 섞어서 입력한다면 '낱자 치환'에다 제약을 걸면 되며, 한글을 그 자체로는 전혀 사용하지 않고 다른 문자를 입력하는 수단으로만 사용한다면 '글자 치환'에다 제약을 걸면 된다. 후자는 한글로 일본 문자를 입력하는 것이 대표적인 예인 것이다.

(2) 그리고 사용자가 지정한 UTF-16 방식의 텍스트 파일에 있는 한글만을 조합 허용하고 그렇지 않은 것은 불허하는 기능이 추가되었다. 이거 하나만 있으면 앞으로 '허용 한글 범위'에 데이터 기반의 새로운 기능이 더 추가될 여지 자체가 없을 것이다. 외장형 후보 변환 데이터와 더불어 <날개셋> 한글 입력기가 외부 데이터 파일을 참조하여 동작하는 경우가 하나 더 추가되었다.

예제로는 KS X 1001 2350자에다가 오늘날 완전히 공기 잉여화한 문자 집합인 KS X 1002 1930자를 합한 데이터를 제공하므로 이것을 불러다가 사용하면 된다. 여러 입력 항목들이 동일한 데이터 파일을 읽더라도 한 파일은 메모리가 한 번만 할당되는 정도의 처리는 다 돼 있다.
(下에서 계속됨)

Posted by 사무엘

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

퍼펙트란, 리듬 게임에서는 화살표 타이밍과 거의 동시에 정확하게 손발 동작을 잘 넣었을 때 받는 최상위 등급 판정이다.
FPS인 퀘이크 3 arena에서는 한 번도 죽지 않고 게임을 마쳤을 때 받는 상의 명칭이다.
뭔가 좋은 말이긴 한데, 정확하게 무엇이 좋거나 무엇을 성취했을 때 perfect가 되는지는 분야와 문맥에 따라 잘 분간할 필요가 있다.

perfect와 비슷한 좋은 형용사인 excellent를 생각해 보더라도,
이게 퀘이크 3 arena에서는 짧은 시간 동안 투 킬 이상을 달성했을 때 받는 판정인 반면,
버추어 파이터에서는 한 번도 맞지 않고 상대방을 이겼을 때 받는 판정이다.
모탈 컴뱃에서는 그게 또 이름이 달라서 flawless victory이다. 즉, 이런 용어들은 그야말로 정하기 나름인 것이다.

이런 맥락에서 볼 때, 성경이 말하는 perfect라는 것은..
굳이 인간이 도저히 도달할 수 없는 절대무오 넘사벽 언터쳐블, 신의 경지급의 완벽만을 의미하지는 않는 것 같다. 그런 뜻이라면 차라리 infallible이 더 적절하다.
또한 수학으로 비유하자면, 유리수는 제아무리 무한히 조밀하다고 해서 결코 실수만치 완비되어 있지는 못한 것과 비슷하다. 그런 게 사람과 하나님의 스케일의 차이인 건지도 모르겠다.

단지 어떤 주어진 환경, 문맥, scope에서 하나님이 제시한 목표나 기준을 오차 없이 달성해서 조건을 만족했다면 성경적으로 perfect가 된다.
특히 마음이 완전히 올바르다는 건 두 마음 딴생각 없이 순수한 것까지 포함한 개념일 것이다. 성경은 하나님은 회색분자를 굉장히 싫어하시니 말이다.
어떤 경우든, “내가 완전하니 너희도 완전하라”(마 5:48)라는 말씀이 무슨 “우리가 신들과 같이 되리라(창 3:5)” 같은 말을 하는 건 아닐 것이다.

그렇기 때문에 성경은 우리와 같은 죄인이던 노아나 욥도 perfect라고 평가한다. 그렇다고 해서 이 사람들이 무슨 천주교 성인 같은 급이라는 뜻이 아니다.
반대로 하나님이신 예수님조차 고난을 통해 완전하게 될 필요가 있었다고 성경은 히브리서에서 말한다.

아니 그럼, 인간이자 하나님이고 죄성 없이 처녀에게서 태어난 예수님이 그 전엔 품질 면에서 완전하지 못했고 무슨 결함이나 약점이 있기라도 했다는 뜻인가? 당연히 그런 뜻은 아니다.
성경의 하나님은 전지전능하긴 하지만 자신만의 이념과 성품, 질서가 있고 방향성이 있다. 그렇기 때문에 다른 건 마음대로 다 해도, 가령, 거짓말은 못 하신다고(딛 1:2) 돼 있다.

그렇게 부족할 것 없는 하나님께서 드디어 인간의 몸도 입어 보고 인간과 똑같은 관점에서 부족함, 연약함, 고난을 다 경험해 보고 십자가 퀘스트를 클리어 함으로써 그 방면에서 드디어 perfect 판정을 받았다는 게 성경의 판결이다.
이런 점에서 성경 자체만 해도... 그리스어/히브리어를 자국어로 번역한 성경이 완전할 수 있느냐 하는 질문에 대한 답은 최소한 두 관점에서 논의해야 할 것 같다.

KJV에 비해서는 예전의 제네바/비숍 등의 성경은 군더더기가 많고 번역의 질이 KJV만치 좋지는 못했을 것이다.
우리말 흠정역 성경만 해도 n-1판은 더 나중에 나온 n판에 비해서는 미묘한 오탈자나 실수가 더 많이 있었다.
심지어 KJV 자체도 비록 오늘날까지 내용의 변경은 없었을지언정, 1611년 초판은 인쇄공들의 실수로 인해 수십 군데의 typo들이 있었다.

그럼에도 불구하고 우리는 그런 옛날 성경들도 오늘날의 변개된 계보가 아닌 바른 계보에 속하는 좋은 성경이었으며,
그 당시에 권위를 부여하고 열심히 읽고 설교하고 가르치는 데 사용하기에 충분한 완전한 성경으로 사람과 하나님 모두에게서 역사적으로 인정받았다고 믿는다. 문맥을 분간을 잘 해야 된다.

그런 마이너한 옥의티는 그야말로 outlier일 뿐이지 본질적인 문제가 아니며, 현대에 벌어진 역본 변개 내지 성경 업데이트 드립과는 결코 같은 레벨이 아니기 때문이다.
대놓고 부패한 본문에서 번역된 개역성경에도 복음이 담겨 있고 이걸 읽고 구원받은 사람들로부터 한국 교회가 시작되었거늘, 하물며 바른 계보의 성경 번역본은 얼마나 더하겠느냐 말이다.

단지 성경 본문에 문제가 있으면 구원 이후 사람이 제대로 성장하기가 어렵고 개독안티들의 성경 공격에 대처하기가 더 어려워진다. 컴퓨터 소프트웨어로 치면 그럭저럭 돌아가고 결과물은 나오지만, 보안이 취약해서 악의적으로 조작된 데이터 파일에 자주 뻗는 정도의 문제가 생기는 꼴이다. 우리가 겨우 이런 약한 모습이나 보이려고 이 세상의 추세를 거스르고 또 거슬러서 예수쟁이가 된 건 아니지 않은가?

초대 교회 성도들이 예수님이 자기 세대에 다시 재림할 거라고 믿었고,
중세에 잉글랜드/스코틀랜드 사람들이 교황이야말로 그(the) 적그리스도라고 믿었던 것과 같은 맥락이다.
그 시절과 그 식견에 계시의 분량이 그게 전부였을 때는 저 스케일로 믿고 양심대로 행한 것이 최선이고 perfect한 신앙이었을 테니까.

이렇듯, 아무리 성경을 문자적으로 믿고 축자 영감설을 믿는다고 해도, 성경의 보존과 완전성에 대해서는 아주 최소한의 추상적인 공통 layer는 존재한다고 보는 게 바람직해 보인다.

시내/바티칸 사본이 제아무리 몇백 년을 짱박혔다고 해도 그런 것이 하나님께서 섭리로 보존해 주신 성경 말씀은 아니다. 유다복음 도마복음이라든가, 전량 회수해서 폐기 처분했대도 누군가가 꿍쳐서 살아남은 사악한 성경(not이 실수로 누락되는 바람에 너는 간음할지니라=_=)이 무슨 하나님 말씀 보존 약속의 결과물은 아닌 것이다.
오히려 개개의 수명은 수십 년 남짓밖에 못 되었더라도 잡초처럼 필사되고 놀라운 내용 일치를 보여 온 다수 공인 본문과, KJV에 이르는 거시적인 영어 성경 계보라는 집합에 하나님의 말씀 보존 약속이 깃들어 있다고 보는 게 타당하다는 뜻이다.

Posted by 사무엘

2015/03/27 19:27 2015/03/27 19:27
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1077

오늘은 1980년대 후반~1990년대 초반에 개발되었던 비트맵 그래픽 에디터인 Image72와 Splash!를 소개하겠다.
이들은 닥터할로(원래 이름은 드로잉 할로라고 하는..) 나 딜럭스 페인트 같은 프로그램에 비해 인지도가 이상할 정도로 듣보잡인 것 같다.
진작부터 추억을 회상하는 글을 올리고 싶었으나, 정보가 넘쳐나는 구글과 잡학 지식의 보고인 위키백과를 검색해 봐도 나오는 정보가 너무 없었다.

이름뿐만이 아니라 제작사까지 같이 넣어 줘야 그나마 외국 사이트 위주로 몇 개가 뜨는데, 그래도 자료가 드물다.
국내에서는 운영자가 뭘 하는 어떤 분인지는 모르겠지만 dreamphp라는 사이트에서 그야말로 엄청난 양의 국내외 고전 소프트웨어 소개와 스크린샷 리스트가 있고 거기에 Image72와 Splash!도 나란히 소개돼 있다. 가히 고전 소프웨어 박물관이라고 해도 될 듯. (단, 소개와 스크린샷만 있지 프로그램의 다운로드는 제공 안 함)

본인은 초· 중딩 시절엔 컴퓨터가 256컬러를 표현하는 것만으로도 희열을 느끼곤 했다.
게다가 그래픽 에디터는 여타 분야의 프로그램과는 뭔가 다른 독특한 UI와 포스가 존재해 왔으니 말이다.
그런 프로그램들을 어른이 된 뒤 다시 접하니 마치 이산가족을 상봉한 듯한 느낌이다.

1. Image72

사용자 삽입 이미지

20여 년 전, 본인이 집에서 486 컴퓨터를 처음으로 접했을 때 그때 컴에 기본으로 깔려 있던 프로그램 중 하나였다.
나중에 알고 보니 얘는 메뉴가 없이 그저 검정 배경에 단순한 UI를 제공한다는 점에서는 닥터할로를 닮았다. 그리기 기능은 Windows의 그림판 같은 그저 그런 수준.

표준(?) 버전은 640*480 16색 VGA에서 실행되었다. 단색 버전과 심지어 Image256이라는 256색 SVGA 버전도 있다고는 하지만 그건 난 실물을 못 봤다.
또한, A4tech라는 제작사에 대해서도 현재는 알려진 게 없다. 다른 제품을 더 만든 게 있는지, 혹시 이 프로그램은 DOS 말고 다른 플랫폼 포팅도 됐는지 같은 것들. 단, 검색을 해 보니 미국이 아닌 타이완 국적의 기업이며 저 링크된 회사와 정체성이 동일한 회사가 맞는 것으로 보인다.

인터넷에서 존재감이 완전히 묻혀져 가는 Image72에 대해서 더 많은 정보를 알고 계신 분의 제보를 기다린다.

2. Splash!

사용자 삽입 이미지

얘는 320*200 저해상도에서 256색을 지원한 프로그램이다. 게임 말고 이런 그래픽 모드를 사용하는 프로그램은 드물었다.
개발사는 Spinnaker software. 지금도 있는 회사이긴 하나, 그때로부터 워낙 긴 시간이 흘렀다 보니 Splash!의 개발사와 동일한 곳인지 정확히는 모르겠다. (맞는 것 같긴 하다만)

우리가 놀랄 만한 점은, 이 프로그램은 1988년 12월에 출시되었다는 점이다.
VGA 그래픽 카드가 출시된 게 1987년이다. 그 정도로 까마득한 옛날에 VGA의 256색을 모두 활용하는 거의 초창기 프로그램이었기 때문에 Splash!는 출시 당시엔 굉장한 화제를 모았다. 당대의 컴퓨터 잡지들도 앞다퉈 소개할 정도였다고 한다. 마치 19세기나 20세기 초반에 만들어진 소수의 컬러 사진을 보는 듯한 느낌이다.

다만, 화면 해상도는 그렇다 쳐도 편집할 수 있는 그림의 크기도 화면의 크기를 넘어갈 수 없었던 걸로 기억한다. 그건 좀 아쉬운 점이다.

Splash!를 보니 다음으로, 팔레트 관련 추억을 좀 늘어놓고 글을 맺도록 하겠다.
컴퓨터의 그래픽 모드에서 256색은 2색/16색 같은 저색상도 아니고 하이/트루 같은 고색상도 아닌 딱 중간을 차지하는 독특한 모드이다. 1픽셀의 정보량이 딱 1바이트여서 프로그래밍이 쉬운 한편으로, 팔레트의 중요성이 가장 커진다. 어떤 색들을 선별해서 256개에다가 배당하느냐에 따라 해당 그래픽의 분위기가 싹 달라지곤 했다. 특히 게임들 말이다.

VGA 그래픽 카드가 모드 13h에서 기본 제공하는 256색 팔레트는 다음과 같았다. 기존 16색 이후로는 흑백 32단계와 고채도 원색 그러데이션이 잠시 나온 뒤, 형광/파스텔톤의 색이 3단계 명암으로 나열된다. 저 색깔띠 자체는 예쁘지만, 배색이 게임 같은 그래픽을 표시하는 데는 그리 적절하지 않은 것 같다.

사용자 삽입 이미지

유명한 VGA 팔레트로는 1990년대를 풍미한 명작 그래픽 편집기인 딜럭스 페인트가 제공한 팔레트가 있다. 나름 미술 전문가가 설계했다고 전해지는데 이 정도는 돼야 좀 알록달록 다채로운 색상을 쓸 수 있는 것 같다. 이 팔레트는 그대로 각종 게임들에서 많이 쓰였다.

사용자 삽입 이미지

요즘이야 웹 표준이라고 하면 HTML5를 떠올리지만, 지금으로부터 20년 전쯤만 해도 웹 그래픽에도 256색 디스플레이를 배려하여 web-safe한 표준 색상 규정이 있었다는 걸 기억하시는가?
RGB 각 축당 6단계 명암을 줘서 총 6^3 = 216개 색상이 나오니 그걸 순서대로 배당하고, 나머지 40개 색깔은 호환용이나 흑백 등 다른 용도로 비워 두는 것이다. 공교롭게도 51*n(n은 0이상 5이하, 이상 6단계)을 해 주면 n이 최대값 5일 때 성분값이 딱 255 최대값이 된다.

색깔을 그런 식으로 배당하는 게, 마치 유니코드에서 나눗셈/나머지 연산만으로 한글 자모 정보를 추출하듯이 원하는 RGB대역의 색깔 인덱스를 계산만으로 얻는 데 유리할 것이다.
차라리 VGA의 기본 256색 팔레트도 그렇게 원시적인 방식으로 색을 배당할 법도 한데 나름 파스텔톤 색깔띠를 만든 게 누구 머리에서 나온 발상인지는 잘 모르겠다.
아무튼, 오늘날 그래픽과 디스플레이 기술이 불과 20여 년 전에 비해 얼마나 까마득하게 발전했는지를 실감한다.

Posted by 사무엘

2015/03/24 19:39 2015/03/24 19:39
, , , ,
Response
No Trackback , 8 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1076

정치관이나 종교관을 논하기에 앞서, 그보다 이념이나 '색깔'이 덜한 나의 인생 철학, 원칙 같은 걸 글로 한데 정리해 본 적이 지금까지 없었던 것 같다.
내가 지지하는 원칙들을 한데 모아 보니 다음과 같다.

  • 세상에 공짜란 없다.
  • 심은 대로 거둔다. 일하지 않았으면 먹지를 말라. (장애인, 노약자는 물론 예외)
  • 일부러 선택한 가난은 가난이 아니다. (가난한 집에서 태어나서 가난한 게 아니라, 일부러 취업을 포기하고 공부를 더 계속하느라 궁핍하게 지내는 것 따위)
  • 절이 싫으면 중이 떠나라
  • 남이 하는 꼬라지가 불만이면, 니가 나서서 한번 해 보든가. ("대안 없는 비판"을 싫어함)
  • 니 자식이 흉악범에게 살해당했을 때에도 사형 반대할 텐가?
  • 니 아들이 남자가 좋다고 데리고 오는 일이 생겨도 동성애 합법화 찬성할 텐가?
  • 니가 스스로 위대한 인물이 되기 위한 노력은 안 하면서 왜 맨날 인물이 없다는 탓만 하는가? (안 창호)
  • 국가(혹은 교회든 무슨 집단이든)가 너에게 무엇을 해 줄 수 있을지를 기대하지 말고 니가 국가를 위해 무엇을 할지를 먼저 생각하라. (케네디)
  • 말과 행동이 일치하기를 기대하지는 않는다. 그건 나도 때로는 못 지킬 수도 있고, 예수님조차도 바리새인들에 대해 그들이 말하는 것만 본받고 행동은 따라하지 말라고(마 23:3) 분리를 명하셨다. 저놈들을 빌미로 같이 깽판 쳐도 된다고 그러시지 않았다.
    하지만 말과 말조차 일치 안 하고 판단 잣대에 일관성이 없는 건 완전 싫다. (마 11:18-19)

나의 인생 알고리즘이 어떠한지가 좀 읽혀지는가?
이런 것들을 다 황금률 --니가 남들로부터 대접받고 싶은 것만치 너도 남에게 해 줘라(마 7:12)-- 의 일부라고 볼 수 있는지는 모르겠다.

아마 논리학이나 철학에서 저런 사고방식을 일컫는 용어 같은 게 따로 있지 싶은데..
어쨌든 난 저런 단순한 사고방식을 큰 틀에서는 일단 상당히 합리적이라고 생각하며 지지한다.
저런 사고방식에 나보다 동조하지 않는 사람이 있다는 것도 알지만.. 그 사람은 그 사람 사정이고 내 사고방식은 저렇다.

단, 성경적으로 보자면 황금률만으로는 하나님 앞에서 의로워질 수 없다. 아무리 나쁜놈이라도 제 자식 위할 줄은 알고(눅 11:13), 겨우 저 정도 합리적인 사고방식은 그 어떤 불신자라도 딱히 믿음을 행사할 일 없이 가질 수 있기 때문이다(마 5:46-47).
하나님 역시 인간을 오로지 '심은 대로 거둔다', '병 주고 약 준다' 식으로만 기계적으로 대하지는 않았다. 그렇게만 대했다면 인간이 지금까지 남아날 수가 없었을 것이다.

내가 지지하는 것을 얘기했으니, 다음으로 다른 많은 사람들이 지지하는 편이지만 나는 종교 방면에서 별로 좋아하지 않고 지지하지 않는 사고방식을 몇 가지 소개하도록 하겠다. 예전에 블로그에다 글을 올린 적이 있는데 다시 한데 정리했다.

첫째, “그리스도인이 되기 전에 인간이 되라, 상식이 통하는 사람이 돼라” 같은 요지의 책망이나 권면을 좋아하지 않는다. 무슨 의도로 하는 말인지 취지는 물론 이해한다. 눈에 보이지 않는 아이템들을 이해시키기 위해 당장 눈에 보이는 아이템에서부터 남에게 실족거리를 주지 않아야 한다는 가르침 자체는 100% 성경적이며 본인 역시 아멘이다. 허나, 나 같았으면 우선순위까지 거론하면서 표현을 그런 식으로는 안 하겠다.

나는 종교와 관련해서는 신자나 불신자의 말단의 행실 같은 건 거의 감안하지 않았다. 행실로 치자면 나부터도 완전 개판이다. 나는 크리스천부터 되고 나서야 구제불능이던 행실이 차츰차츰 바로잡히고 상식도 조금씩 입력되어 온 사람이다. 안 그래도 기독교는 선행, 행실이 아니라 믿음을 강조하는 종교인데.. 저건 당장 자기가 대하는 게 불편하고 기분 나쁘다고 행실로 남의 크리스천 지위를 자체를 판단한다는 느낌이 든다. '나쁜 크리스천'이 아니라 아예 크리스천도 아니라는 식으로.

“나는 하나님/예수는 믿지만(사랑하지만 좋아하지만 등등) 교회는 믿지(역시 비슷한) 않는다” 부류의 말도 동일한 맥락에서 싫어함. 그건 불신자 개독안티라면 모를까 최소한 신자라는 사람의 입에서 나올 말은 아니다. -_-;; 그런 판단은 마치 어느 목사가 강단에서 설교를 하는데 타 종교에도 좋은 가르침이 많다고 공자 왈 맹자 왈 석가모니 왈 인용을 자꾸 하는 것과 비슷한 맥락으로 내 심기를 불편하게 만든다.

인간적으로 도덕적으로 좋은 종교 가르침이야 심지어 철도교에도 많이 있다! 내가 겨우 그런 수준의 가르침을 원하고 있었다면 예수님을 믿는다거나 금쪽같은 일요일 시간을 희생하여 교회에서 예배를 드리지 않았을 것이다. 성경 자체만 가르쳐도 모자랄 금쪽같은 시간 동안 목사가 왜 하필 그렇게 핀트가 어긋난 짓을 하냐는 거다.

둘째, “나는 당신의 사상에 동의하지 않습니다. 하지만 당신이 그 사상 때문에 박해를 받는다면 나도 당신의 말할 자유를 위해 같이 싸우겠습니다” 같은 일면 멋있어 보이고 대인배스러워 보이는 사고방식을 난 지지하지 않는다.
동성애자, 종북 세력, 사형 폐지론자들을 내가 직접 물리적으로 괴롭히고 해코지 하지는 않는다. 그러나 그들이 남에 의해 박해받거나 법대로 처벌받고 있을 때 그들의 말할 자유를 위해서는 난 죽어도 절대로 같이 싸우지 않을 것이다.

<나치가 그들을 덮쳤을 때> 같은 시도 마찬가지이다. 다른 분야의 이념이라면 인간적으로 협업할 수 있을지 모르나, 내 종교관, '신앙'이 타겟이라면... 나치가 나를 덮쳤을 때 나의 구제를 위해서 굳이 공산주의자나 유대인 같은 다른 불신자 그룹들의 인맥 빽 변론 실드가 필요하지 않다.
(물론, 대적들로부터도 행실이 의롭다는 증언을 받으면 이는 매우 영광스러운 일이겠지만, 그걸 처음부터 기대하지 않는다는 뜻이다.)

그 대신, 그럴 때 “너희가 마땅히 할 말을 성령님께서 바로 그 시각에 너희에게 가르치시리라” (마 10:19, 눅 12:11-12)라는 성경 말씀이 100배 이상 더 먼저 떠올라야 한다. 이게 레알 예수쟁이의 본분이 아니겠는가!

끝으로, 털어서 먼지 안 나는 사람 없으니 서로 일체의 판단이나 정죄를 하지 말고 퉁치자는 식으로 성경 말씀을 이상하게 적용하는 양비론 사고방식도 굉장히 싫어한다. '원수를 사랑하라'가 개인이 아니라 무슨 집단, 국가 차원에서 제도적으로 시행해야 하는 교리인 것처럼 생각하는 사람들도 노답. 오늘날이 정교일치가 가능하지 않고 초대 교회 시절 잠깐 이후로 사유재산 공유가 가능하지 않은 것만큼이나, 그런 것도 세상 정부에서는 결코 가능하지 않다. (절대적인 타락과 부정부패, 부작용 없이 실현되기가 불가능하다는 뜻)

뭔가 판단을 하고 선악을 따지고 드는 걸, 어디서 성경 몇 자 본 건 있어 가지고 무슨 바리새인인 양 치부하는 사고방식도 완전 질색임. 그런 핑계를 대는 애들치고 바리새인만도 못한 인간들이 수두룩하다. 바리새인은 그래도 유일신 신앙을 갖고 있고 내세와 부활이라도 믿었던 종교 꼴통들이다.

마태복음 7장을 예로 들자면, “판단을 하지 말라”처럼 들리는 1~2절 이후로.. “거짓 대언자를 조심하라. 열매로 그들을 알리라” 같은 명령이 동일한 chapter에서 버젓이 등장한다. 이건 영락없이 뭔가 남을 '판단해야만' 이행할 수 있는 명령이 아니면 무엇인가. 성경이 한 입으로 두 말을 하는 모순된 책이 아닌 이상, 이것은 서로 다른 context를 말하는 것이니 바르게 나눠서 분간해야만 한다.

성경을 알면 “닭이 먼저냐 달걀이 먼저냐” 같은 의문에 해답을 알게 되는 건 물론이고 세상에 왜 이렇게 비합리적이고 불공평한 일이 많은지, 필요악이라는 게 왜 등장했는지, 그것이 꼭 나에게 나쁘고 해만을 끼치는 것인지 등에 대해서도 답이 구해진다. 그래서 굳이 구원이고 영생이고 하늘나라고 그런 것까지 안 가더라도 당장 사람의 정신 건강에 굉~장히 긍정적인 영향을 끼친다.

의로운 사람, 약한 사람이 나쁜 사람에게 억울하게 죽임을 당하는 장면을 생각해 보자. 성경에서는 아예 극초반에 등장하는 아벨의 죽음이 대표적인 예이다.
이에 대한 성경의 진술은 “그가 죽었으나 믿음으로 여전히 말하고 있느니라.” (히 11:4)이다. “내게는 사는 것이 그리스도시요 죽는 것이 이득이니라.” (빌 1:21)도 있다. 그야말로 인간의 세속적인 사고방식을 아득하게 초월한 안드로메다 급이다. 정신승리이긴 한데, 그 근거가 아Q처럼 자기 자신의 알량한 근자감이 아니라 예수님이라는 차이가 있을 뿐이다.

그 반면, 세상의 불신자 작가가 만든 드라마나 영화 같은 매체들은.. “신이 있다면 왜 자꾸 불공평한 일이 벌어지는 걸까? 그 신은 전지전능하지 못하거나, 공의롭지 못하거나 혹은 both일 것이다. ㅋㅋ” 요런 반골 기질 메시지를 집어넣어서 사람의 믿음을 무너뜨리고 멘탈의 평형 상태를 깨뜨리는 쪽으로 간다.

“피해자 유족이 용서 안 한 가해자를 어떻게 신이 용서해?”처럼 성경 교리를 배배 틀고 왜곡하는 쪽으로 끌고 가는 것도 개인적으로 굉장히 불편하며, 꼴도 보기 싫다. 더 말하면 입만 아프겠지만, 아 글쎄 성경은 명백히 세상 공권력의 사형 집행을 지지한다니까요? 사형 반대하는 다른 종교인들이 잘못하고 있는 거지. -_-;;

기독교적인 관점을 찾자면 정말 볼 영화가 없으니, 차라리 종교색 같은 건 싹 배제하고 원초적인 권선징악 해피엔딩 액션만 추구한 영화가 마음에 든다. 그래서 내가 테이큰을 좋아한다. 이상하게 신 같은 거 끌어들일 필요 없이, 인간 흉기 특수요원이 악당들의 본거지를 다 통쾌하게 때려부수고 딸을 구해 내는 게 좋다.
그런 건 육신적이기는 해도 최소한 반성경적이지는 않다. 흉악범들을 제대로 못 잡아내고 처벌도 솜방망이 급으로 내리는 이 사회에 대해 경종을 울리고 일종의 카타르시스도 주니 말이다.

확실히 난 종교 쪽에 관해서는 아무래도 21세기에 보기 드문 못말리는 꼴통이긴 하다. ㅎㅎ
하지만 나는 이렇게 생각하는 것이 건전하며 내 양심에 진정한 자유를 준다고 생각한다.

Posted by 사무엘

2015/03/21 19:20 2015/03/21 19:20
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1075

X선, 의학 관련 생각

본인은 사진, 촬영, 영상 관련 기술의 발달사에 대해 관심이 많다. 깊게 잘 알지는 못하고 그냥 관심뿐이지만, 그래도 흑백 사진이 컬러로 바뀌고 영사기가 발명되고, 따로 변사가 붙을 정도이던 무성 영화가 컬러+소리가 가미된 진짜 영화로 바뀌어 간 과정이 흥미진진하지 않은가? 그래서 예전에 사진술에 대해서 글을 올린 적이 있기도 하다.

옛날에 카메라가 처음 발명되었을 때는 알다시피 자기 생얼 사진이 찍히는 것만으로도 자기 혼이 빠져나간다고 생각하고 사람들이 질겁을 했다.
그런데 하물며...
아담 이래로 인류 역사상 최초로, 멀쩡히 살아 있는 사람의 뼈가 사진으로 찍혀 나온 걸 목격한 당사자는 얼마나 기절초풍했을까?

사용자 삽입 이미지

X선, 일명 뢴트겐선이라는 것을 발견한 사람은 잘 알다시피 독일의 물리학자 뢴트겐이다.
그리고 위의 사진은 1895년, 뢴트겐이 자기 아내의 손을 찍은 사진이다. 정말 아내의 손이 맞음을 확인하기 위해 반지까지 낀 채로 사진을 찍었다.
뢴트겐 당사자조차 최초의 방사선 촬영을 도저히 믿을 수 없어서 혹시 자기가 환각, 헛것을 본 건 아닌지 엄청 의심하면서 번뇌와 고민을 거듭했다고 한다.

그는 나중에 노벨 물리학상의 초대 수상자가 되었다(1901년).
이건 충분히 노벨 상 감인 업적이다. 해부를 하지 않고 신체의 내장과 뼈를 들여다보는 게 가능해졌으니 이는 의학계에 가히 혁신을 가져다 준 획기적인 발견이 아닐 수 없었다.

이것 덕분에 의학에 방사선과 내지 영상의학이라는 분야가 새로 생기게 됐다. 흉부 X선 촬영은 기초 건강 검진을 받을 때 아무 생각 없이 같이 받는 저렴한 검사 중 하나가 됐다. 놀라운 과학의 힘이다.
내과 치료 때는 아예 내시경을 집어넣어서 사진을 찍겠지만, 뼈가 부러졌는지 인대가 나갔는지 등을 판별하는 외과 치료 용도로는 X선이 가히 구세주가 아닌가 싶다.

그리고 이와 비슷한 맥락으로 짐을 일일이 열어 보지 않고도 내부를 들여다볼 수 있는 금속 탐지기 역시 세상의 보안과 인권을 크게 향상시켜 줬다.
단, 이게 20세기 초반부터 아주 일찍 상용화가 됐다면 일제 강점기 때 항일 독립운동가가 폭탄이나 총을 몰래 반입해서 의거를 일으키기도 훨씬 더 어려워졌지 싶다. X선 사진은커녕 생얼 사진조차 흔치 않은지라, 죽이고자 하는 일제 고위 관리의 얼굴도 알기 어려울 정도로 옛날이었으니 가능했던 일이다.

끝으로, 의학에 대한 원론적인 얘기를 하며 글을 맺겠다.
얼마 전엔 한의사에게도 X선 촬영을 허용하겠다는 말이 나와서 논란이 많았다.
현직 의료인들은 한의사 내지 한의학 쪽을 내가 막연히 생각하는 것보다 훨씬 더 싫어한다는 걸 알 수 있었다.

본인도 큰 줄기에서는 서양 의학을 지지한다. 어설픈 친환경 대체의학, 백신 음모론, 안전한 예방접종 그런 거 미는 진영을 별로 좋아하지 않는다. 그 사람들은 근대화 공업화 이전의 자연 환경과 위생 복지에 대해 너무 미화하고 지나치게 낙관하고 있다.

영아 사망률이 지금보다 넘사벽으로 높았고 어렸을 때 천연두 앓다가 목숨만 건진 곰보를 심심찮게 볼 수 있었으며, 죽은 형의 이름을 동생이 물려 쓰던 시절을 벌써 잊으셨는가? 그때로부터 시간이 뭐 얼마나 지났다고?
수돗물을 화학 약품으로 소독하고 너도 나도 백신을 맞은 덕분에 어렵게 퇴치한 전염병을 "이건 백신 없이도 어차피 자연스럽게 사라졌을 질병일 뿐이다" 이런 식으로 밀어붙이는 무식한 주장에는 할 말을 잃을 지경이다.

과학적 방법론으로 우주와 생명의 근원이 무엇인지, 사람이 죽으면 어디로 가는지 같은 걸 증명할 수는 없다. 그건 재연 가능하지 않으며 과학의 영역에 있지 않다.
그러나 지금 당장 살아 있는 사람을 대상으로 임상실험이 가능한 의학에 관한 한은, 투명하고 객관적인 과학적 방법론에 입각한 서양 의학이 지금까지 수많은 사람들의 생명을 구했으며, 온갖 사이비 돌팔이와 건강 관련 미신들로부터 사람들을 바르게 깨우쳐 줬다고 본인은 굳게 믿는다.

심지어 성경에도 이 주제와 관련된 진술이 있다.

  • 아사의 통치 제삼십구년에 그의 발에 병이 생겨 마침내 그의 병이 심히 중하게 되었으나 병이 있을 때에 그가 {주}께 구하지 아니하고 의사들에게 구하였더라. (대하 16:12. 의사를 찾은 걸 부정적으로 얘기함)
  • 더 이상 물만 마시지 말고 네 위장과 자주 있는 병을 위하여 포도즙을 조금 쓰라. (딤전 5:23. 인위적인 의학 처방을 긍정적으로 얘기함)

성경에 왜 이 두 구절이 동시에 존재하며 둘이 무슨 문맥에서 무엇을 말하는지를 바르게 분간할 줄 안다면, 질병 내지 치유와 관련된 온갖 교리적 오류에 빠질 일이 없을 것이다. 성경에서 그 많은 기적을 행한 엘리사도 나중에 병에 걸려 죽었다.

예수 믿는다고 해서 기도만 열심히 하면 공부 안 해도 학교 시험을 100점 맞을 수 있는 게 아니다. 병에 걸리기만 하면 다 마귀 탓이고 기도만 하면 다 낫는다는 식의 생각은 매우 잘못됐다.
위의 구절들도, 지금 병에 걸린 상황과 하나님에 대해서 어떤 생각을 했는지 자세와 믿음이 문제이지, 병원에 가느냐 안 가느냐가 본질적인 문제는 아닐 것이다.

Posted by 사무엘

2015/03/19 08:35 2015/03/19 08:35
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1074

지난 2월 설 연휴 기간에 본인은 가족 전체가 동남아로 가족 여행을 떠났다. 여행사를 통한 패키지 관광이다.
부모님이 퇴직하셨고 본인을 포함한 자녀들은 아직 미혼이니, 지금 같은 시기가 온 가족이 같이 여행을 떠나기에 적절하다고 여겨졌기 때문이다. 내가 마지막으로 외국 가는 비행기를 탄 지도 무려 6년이 돼 가고..
더 늦기 전에 여행기를 이제야 간단히 정리해서 올린다.

가족이 한꺼번에 움직인 덕분에, 지금까지 공항 철도나 리무진 버스로만 가던 인천 공항에 난생 처음으로 자가용을 끌고 가 봤다. 운전은 언제나 본인이 도맡아 했고. 시기가 시기이다 보니 공항의 장기 주차장엔 벌써부터 차들로 포화 직전이었는데, 가까스로 빈 자리를 하나 발견해서 차를 세웠다.

그렇게 기대를 품고 공항에 도착했으나, 베트남 항공 소속의 여객기가 정비 상태를 이유로 거의 10시간이 넘게 지연됐다. 관광 일정에 차질이 생기긴 했지만 어차피 이건 크리티컬한 업무를 목적으로 나가는 게 아니고 인천 공항은 안 그래도 내부 시설이 굉장히 좋은 공항이니, 출국 도장을 찍은 상태로 탑승동에서 이렇게 오래 지내고 있는 것도 나름 색다른 경험이었다.

항공사 측에서는 처음엔 기다리는 동안 밥이나 먹으라고 식권 정도를 내 줬으나, 지연이 길어지자 결국은 사람들을 버스에 태우고 도로 여객 터미널 입국장으로 보내서 출국 심사를 취소시키고 인근의 호텔에다 승객들을 보내 줬다. 저녁 식사까지 무료로 제공해 주고..;; 비행기 하나가 지연되는 바람에 승객들도 불편했지만 항공사 역시 손해를 굉장히 많이 봤지 싶다.

덕분에 현지 호텔을 구경하기 전에 운서동 공항 신도시 일대의 호텔부터 먼저 구경하게 됐다. 주변에 아파트 말고 전원 주택들은 전망이 참 좋아 보였다. 뭐, 본인이야 노트북 PC가 있으니 기다리는 동안 프로그램도 짜고 글도 쓰면서 시간을 허투루 보내지 않았다.

어쨌든, 이런 우여곡절 끝에 밤 비행기를 타고 먼저 베트남 북부의 하노이 공항에 도착했다. '하노이의 탑'의 원조 국가에 왔다니 감회가 새로웠다.
여기는 역사적으로 나름 프랑스를 이기고 미국까지 이긴 나라라고 자존심이 쩐다고 한다. 그리고 호치민을 정말 미치도록 숭상한다고.

베트남에서는 해안으로 건너가서 배를 타고 우리나라 제주도나 남해를 뺨치는 다도해와 동굴을 구경하고 맛있는 해물 요리를 먹었다.

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

사용자 삽입 이미지
베트남 시가지의 모습. 우리나라는 택시가 기본적으로 2000cc급 중형인 반면, 여기는 경차가 주류이다.
하긴, 우리나라도 2, 30년 전에는 1500cc급도 안 되는 소형차인 포니가 택시로 제일 많이 굴러다니곤 했다.
그리고 이보다도 베트남엔 오토바이가 훨씬 더 많이 굴러다닌다.

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

그리고 호치민 광장을 구경했다. 호치민 자체는 나름 인품을 갖춘 좋은 지도자였다고는 하지만, 그래도 여기는 어쩔 수 없는 사회/공산주의 국가이더라. 구소련이 망한 지가 언젠데 낫과 망치 깃발 실물을 볼 수가 있었다.

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

그 뒤 약 1시간 반 동안 1000km남짓을 비행하여 캄보디아의 씨엠 립 공항에 도착했다.
이 공항으로 말할 것 같으면 비행기에서 내린 뒤, 브리지나 셔틀버스가 없이 승객들이 활주로를 직접 걸어서 여객 터미널로 들어가야 하는 공항이다. 철도역으로 치면 선로를 그대로 횡단해야 하는 시골 간이역 정도?

날씨는 베트남보다 더욱 더워져서 견디기 힘들었다. "여기가 위도가 몇 도이고 자전축이 몇 도 기울어져 있지? 서울과 비교했을 때 햇볕을 받는 각도의 cos 값이 얼마나 차이가 나지?" 같은 별 잡생각이 다 들 지경이었다.
여기는 입국 관리 공무원에게 공식적인 비자 발급 비용 외에도 대놓고 1$씩 뇌물을 줘야만 심사대를 빠져나갈 수 있었다. =_=;;

날씨도 더운데 앙코르 와트는 정말 핵심만 초스피드로 보고 돌아왔다. 요게 제일 먼저 만들어진 사원이고, 그야말로 캄보디아의 국기에도 그려져 있을 정도로 상징적인 유적이다. 캄보디아를 먹여 살리는 제1순위 관광 자원인데.. 이것도 처음 발견되었을 때와는 달리 굉장히 많이 파괴된 거라고 하니 참 안습하다.
서양 사람들은 처음엔 이걸 미개한(?) 동남아시아 사람이 만들었을 거라고 믿지 않았을 정도였다고 한다. 하지만 그렇다고 로마인의 후손이 만들었다고 우기기엔 표현되어 있는 종교관이 전혀 서양스럽지가 않은걸? -_-

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

나무 뿌리와 뒤엉킨 이 유적지는 아까 것보다는 더 나중에 만들어졌다. 앙코르 제국도 여러 시즌이 있기 때문에..;;

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

앙코르 와트 유적지는 굉장히 넓기 때문에 중간 중간엔 툭툭이를 타고 이동했다.

사용자 삽입 이미지

이런 유적지들이 처음에 만들어졌을 때는 얼마나 더 화려하고 웅장했을까 하는 생각이 든다.

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

관광 도시인 씨엠 립은 6번 국도던가 외국인 관광객들이 주로 다니는 큰길만 벗어나면 곧장 그냥 황무지 깡촌이었다. 카누를 타고 돌아다니면서 서민들이 사는 수상 주택 단지를 구경하기도 했다. 이런 단지가 조성된 것에도 다 사연이 있다고 함.

물은 별로 깊지는 않지만 정말 처참하게 더럽기 때문에 저 물이 몸이나 옷에 묻는 일은 만들지 않는 게 좋다. 저런 데서 사람이 어떻게 1년 365일을 살 수 있나, 생계는 어떻게 꾸리며 위생 문제와 먹고 입는 문제는 어떻게 해결하는지 궁금했다.

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

그리고 캄보디아라 하면 잊을 수 없는 건 일명 '폴 포트'라는 미치광이가 벌였던 킬링필드 학살극이다. 희생자의 유골을 안치해 놓은 어느 납골당을 방문하고 거기 적혀 있는 옛날 사진과 안내문을 보기도 했다.

어떤 나라가 힘이 없어서 남의 나라의 식민지가 되고 나중에 독립조차도 자기 힘으로 스스로 쟁취한 게 아니라면, 결국은 한 외세가 물러난 뒤에도 다른 외세들의 이념 각축장이 되고 파란만장 기구한 역사가 이어지는 건 남의 일만이 아닌 것 같다. 특히나 그런 와중에 공산주의는 단순히 억압받고 착취당하는 농민· 노동자(?)뿐만이 아니라 먹물깨나 먹은 지식인도 잘 현혹시키는 것으로 보인다.

그런데 결국 실현 불가능한 사상을 강제로 실현하려다 보니 인민들을 온통 바보 노예로 만들어야 하고 딴 생각 잡 생각을 못 하게 극도의 폭력과 공포로 통치를 해야 하고 종교도 말살하고 서로 감시와 밀고를 하게 만들어야 한다.
지도자의 우상화와 절대독재는 기본 중의 기본이다. 김 일성이고 호치민이고간에 자기 우상화를 하지 말라고 유언을 했어도 유언이 당연한 듯이 씹히는 이유는.. 그렇게 우상화를 해야만 공산주의 체제가 돌아갈 수 있기 때문이다.

공산주의가 매우 악한 사상인 이유는 "능력껏 벌어서 필요한 만큼/혹은 1/n만치 분배한다"라는 성선설을 제시해 놓고는 정작 그걸 실현하고 운영하는 방법은 철저하게 성악설에 기반을 두기 때문이다. 정직하게 필요악이라고 선을 긋는 것도 아니고, 애초에 성선설 따위는 없다. 인간의 본성에 대해서 성경적으로 고찰을 한 사람이라면 반공주의자가 될 수밖에 없으며 반공 때문에 불가피하게 벌어졌던 필요악이나 부조리를 보는 눈이 한결 관대해진다.

이런 것들을 보고 느꼈다.
귀국하고 나니 공항의 주차난은 더욱 심해져서 이중주차에, 도로변 주차까지 상태가 말이 아니었다. 다른 가족들이 수하물을 찾는 동안 본인은 먼저 밖으로 나가서 차를 여객 터미널로 가져왔다. 여객 터미널에서 장기 주차장까지는 수백 m 이상 떨어져 있으니까. 차는 깜빡 잊고 블랙박스를 켜 놓은 채로 추위 속에서 닷새 가까이 방치됐지만, 다행히 시동이 잘 걸렸다.

동일한 고속도로 구간에서 불과 1주일쯤 전에 짙은 안개 때문에 106중 추돌 사고가 발생했었지만, 지금은 안개고 뭐고 없이 도로는 한산하기 그지없었다. 이렇게 여행을 잘 마치고 돌아왔다.

Posted by 사무엘

2015/03/13 08:30 2015/03/13 08:30
, , ,
Response
No Trackback , 6 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1072

우리나라의 기독교 역사에서 성경 번역만큼이나 중요한 부분을 차지하는 것은 찬송가의 번역과 편찬이다.
그리고 한국 교회에서 쓰였던 찬송가 중에 역사적으로 꽤 중요한 물건으로는 <신증 복음가>가 있다.

지금은 장로교가 세력이 크지만 한국 땅에 기독교가 처음 전래되었을 때는 감리교가 대세였다. 그리고 감리교에서 좀 더 심화와 로컬라이징(?)을 거친 교파가 바로 성결교인데..
<신증 복음가>는 성결교 선교사가 세운 "동방 선교회"라는 단체에서 출간하였다. 시기는 1919년 4월, 한반도에서 3·1 운동이 벌어지던 때와 아주 비슷하다.

이 신증 복음가에서 처음으로 소개되어서 지금까지 교회에서 불리고 있는 찬송가들이 적지 않다. 그리고 거기에는 인제 와서 뭔가 출처를 추적할 수가 없는 짬뽕(?) 번역도 꽤 있다. 이 글에서는 몇 가지 예를 들도록 하겠다.

1. 그 참혹한 십자가에 주 달려 흘린 피

난 지금까지 확 꽂혀서 좋아하게 된 찬송가들이 대부분 구원 카테고리 쪽에 있었다. Wonderful grace of Jesus, 그리고 And can it be that I should gain까지. 그 뒤 최근에 주목하고 있는 곡은 바로 저것이다.
올해는 삼일절이 일요일과 겹치는데, 이런 날엔 신증 복음가 출신 찬송가를 부르는 게 아주 어울린다고 생각되어 본인은 거의 한 달 쯤 전부터 이 날 준비 찬송으로는 이걸 넣으려고 벼르고 있었다.

앞부분 멜로디는 <찬양하라 내 영혼아>에서 "내 속에 있는 것들아"와 닮았다. 계속 듣고 있으면.. 정말 애절하고 화사하고 우리를 죄에서 구원하는 예수님의 피에 대한 한없는 신뢰와 감격이 솟아나는 것 같다. 그래서 후렴에서는 "나 믿노라..!"가 나온다.

사용자 삽입 이미지

그런데 이 곡은 작사· 작곡자가 미상이다. 1919년 당시의 가사는 지금 가사와는 차이가 많았다.
다만, 가사가 There is a fountain filled with blood(샘물과 같은 보혈은 임마누엘 피로다)에서 모티브를 약간 딴 거라는 말은 있다.
1절에 '샘물'이라는 단어가 있고(1919년 가사는 '임마누엘') 2절에 '십자가에서 구원받은 강도' 얘기가 있으며 3절에 '어린양'이 나오는 것이 이 가설을 뒷받침한다.

나중에 1930년대에 다른 찬송가가 출간되면서 가사가 좀 바뀌었는데,
그때의 가사도 지금과는 여전히 차이가 좀 있어서 '그 참혹한' 대신 '그 수욕된'(수치스럽고 욕된)이라고 적혔고, '나 믿노라' 대신 '나는 믿소'라고 적혀 있었다.

후렴 절정부에 나오는 Lord, I believe!를 생각해 보자. 한국어 가사에서는 음절수 제약 때문에 '주'가 빠졌지만 1919년 수록 당시부터 이 곡의 설정상 영어 제목은 "주여 내가 믿나이다"였다. 이 표현은 명백히 성경에 근거를 두고 있다.
"주여, 내가 믿나이다. (나의 불신을 도와 주소서)"(막 9:24)라는 아이 아버지의 절박한 절규가 오버랩되기도 하고, 한편으로 선천성 맹인이 시력을 받은 후 예수님을 믿는(요 9:38) 장면도 떠오른다. (막 9:24.. KJV 이외의 성경에서는 '주여'라는 단어가 빠졌다는 건 차치하고라도..;;)

이 찬송가 가사는 그 심상에다가 예수님 영접을 절묘하게 오버랩 시켰다.
죄의 사슬, 죄의 형벌로부터 해방된 것에 감격하면서 대한 독립 만세를 외치듯이 이 찬양을 예배당에서 목놓아 불러 보자.
깨알같은 바람이지만, 난 3절 가사대로 영원한 새 나라에 모여서 금거문고보다는.. Looking for you를 흥얼거리고 싶다. 하늘나라에는 철도도 있고 새마을호 열차도 당연히 있을 것이다.

본인은 평소에 유튜브에서 다음 찬양 동영상을 즐겨 듣는다.
2절과 그 이후로 갈수록 알토 한 분의 나지막한 목소리가 유난히도 부각되어 들린다. 투개월의 김 예림 목소리처럼 독특하다!

2. 마귀들과 싸울지라 죄악 벗은 형제여

우리에게 친숙한 요것도 신증 복음가에서 처음 소개된 찬송 중 하나이다.
한국어 가사를 보면 영락없이, 딱 전형적인 '영적 전투와 승리' 카테고리이다. 그러나 본고장인 미국에서는 이 곡이 하드코어 전천년주의 종말+재림 가사가 붙은 찬송인 걸 아시는 분 계신가?

영어 가사는 "내 눈이 주님의 재림의 영광을 보았노라"로 시작하며, 예수님이 수많은 성도들과 함께 지상 재림을 하는 모습을 묘사한다.

Mine eyes have seen the glory of the coming of the Lord;
He is trampling out the vintage where the grapes of wrath are stored;
He hath loosed the fateful lightning of His terrible swift sword:
His truth is marching on.

Glory, glory, hallelujah! Glory, glory, hallelujah!
Glory, glory, hallelujah! His truth is marching on.


"진노의 포도즙 틀을 밟는다. 입에서 날카로운 검이 나온다." 이런 표현은 평소에 요한계시록을 문자 그대로 읽으면서(특히 19장) 성경적 종말론을 공부한 적이 없는 사람이라면 생소할 것이다.

기독교 음악 중에서 특별히 찬양보다 영적 노래에 가까운 범주라면 가사에 응당 성경 말씀과 직설적인 성경 교리를 담고 있어야 한다. 오늘날의 CCM이 영적으로 다 나쁘지는 않겠지만 CCM이 옛날 클래식 찬송가에 비해서 영성이 부족한 면모 중 하나가 교리가 노골적으로 담겨 있지 않다는 것이다. 그냥 "당신은 사랑받기 위해 태어난 사람" 같은 듣기 좋은 내용만 있지 대놓고 예수님의 피, 죄와 심판, 지옥, 재림 같은 원색적인 얘기를 점점 안 하는 것이 비단 설교 스타일뿐만 아니라 기독교 음악의 트렌드에까지 반영되고 있기 때문이다.

그런데 사실은 198, 90년대 이후의 CCM까지 갈 것도 없이 한국 교회의 찬송가는 클래식들부터가 영어 가사에 비해서 전반적으로 '찐한' 교리 표현의 수위가 좀 약하다. 여기에 대해서는 앞으로 또 내 블로그에서 다룰 기회가 있으면 언급을 할 것이다. 이런 점에서 볼 때, <마귀들과 싸울지라>의 영어 원판 가사는 본인에게 무척 인상적으로 보였다.
한국어 가사는 일본인 목사가 쓴 다른 찬송시를 번역한 것이라고 한다. 우리말 가사와 영문 가사가 같이 일치하는 건 후렴의 "영광 영광 할렐루야"밖에 없는 셈이다.

이 노래의 곡에 대해서도 사연이 많다. 원래 이 멜로디는 19세기에 미국에서 소방대원의 행진곡으로 만들어졌다. 그런데 멜로디가 적당히 경쾌하고 듣기 좋다 보니 이 곡은 여러 종류의 가사가 붙어서 다른 행진곡이나 군가 등으로도 애창되었다. 그랬는데 "이거, 곡 멜로디는 좋은데 가사가 영 좋지 않다. 뭔가 좋은 찬송시를 붙여서 부를 수는 없을까?"라는 생각을 한 어느 크리스천 작사자가 있었고, 성경을 묵상하다가 예수님의 재림을 동경하는 가사가 붙어서 저런 곡이 만들어진 거라고 한다.

이렇듯, 성경의 각 책만큼이나 찬송가도 각 곡들이 작사· 작곡· 번역된 과정이 독특한 게 많다. 그런 것들을 알고 부르면 재미있다. 지금은 인터넷 검색만 하면 이런 정보들은 정말 금방 쉽게 얻을 수 있기도 하고 말이다.
이런 맥락에서, 작년 봄에 세월호 침몰이라는 국가적인 대참사가 벌어졌을 때는 It is well with my soul(내 평생에 가는 길 순탄하여 / 내 영혼 평안해)라는 찬송이 잠시 주목을 받기도 했다. 이거 작사자도 선박 사고로 처자식을 잃은 와중에 하늘로부터 오는 평안을 되찾고 가사를 썼기 때문이다.

* 그리고 몇 가지 별로 중요하지 않은 사실은..

  • 본인은 지금 다니는 교회에서 찬양 인도자이다. 비록 기악이든 성악이든 음악을 전공한 이력은 전혀 없지만 찬송은 그냥 의욕 있게 크고 기계적으로 정확하게만 부르면 장땡이니까..
  • 본인은 킹 제임스 진영에 들어가기 전에 고향에서는 성결교 출신이다.

Posted by 사무엘

2015/03/10 08:27 2015/03/10 08:27
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1071

« Previous : 1 : ... 132 : 133 : 134 : 135 : 136 : 137 : 138 : 139 : 140 : ... 230 : Next »

블로그 이미지

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

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2026/07   »
      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:
3942229
Today:
1212
Yesterday:
1685