« Previous : 1 : ... 133 : 134 : 135 : 136 : 137 : 138 : 139 : 140 : 141 : ... 221 : Next »

요즘 운영체제들에 GUI 셸이 없는 물건은 없고, GUI에는 그림보다도 먼저 문자를 찍는 기능이 반드시 필요하다. 옛날에는 그런 출력 기능이 겨우 비트맵 글꼴밖에 지원되지 않았지만, 오늘날은 트루타입(TTF)이라고 불리는 규격의 윤곽선 글꼴이 세계를 평정한 지 오래다(오픈타입은 TTF의 superset에 해당함). 심지어 재래식 비트맵 글꼴이 필요하다 해도 일단 TTF 방식으로 저장하고서 출력한다.

게임처럼 완전 독자적인 GUI 노선을 가는 프로그램이 아닌 이상, 거의 모든 응용 프로그램들은 운영체제가 제공하고 운영체제에 기본으로 설정되어 있는 글꼴만을 사용하여 글자를 출력한다. 새로운 글꼴을 받아서 설치하는 건 사용자의 몫이다. 그러나 가끔은 응용 프로그램이 직접 글꼴을 설치해서 써야 하는 경우도 있다.

워드 프로세서 같은 오피스 프로그램이라면 운영체제 전체에 새로운 글꼴을 번들로 제공할 수 있다. 이건 global한 글꼴 추가이다. 한편, 자기 프로그램 내부에서만 특수한 custom 글꼴을 추가해서 쓰는 건 local (private)한 글꼴 추가이다.

윤곽선 글꼴 출력 엔진은 힌팅과 캐싱 기능이 곁들여진 일종의 고성능 범용 단색 벡터 그래픽 엔진이다. 그렇기 때문에 다른 프로그램들에 노출되지 않는 local 글꼴도 용도가 매우 다양하다. 수식이나 악보에서 쓰이는 비문자 기호를 찍는 건 물론이고, ‘입꼴 워드’처럼 자기만 사용하는 특수한 문자를 찍을 때도 전용 글꼴을 활용하면 된다.

당장 운영체제 자신도 이걸 잘 활용하고 있다. 테마가 도입되기 전에 Windows 창에 달린 사각형 모양의 최소화(_)/최대화/닫기(X) 그림은 글꼴 출력이고, Visual Studio 같은 데서 창을 도킹시키는 주사기/핀 모양의 그림도 글꼴이다. 아마 본인이 옛날에 블로그 글에서 언급한 적이 있을 것이다.

Windows 8은 부팅 시나 작업 중일 때 다섯 개의 구슬이 동그란 궤도를 그리면서 슝슝 돌아가는 애니메이션이 출력되는데, 이것도 애니메이션 GIF나 플래시 같은 기술이 아니라 글꼴 출력이다~! 구슬이 싹 들어갔다가 나오기도 하는 게 은근히 복잡하며, 이 애니메이션은 무려 100수십 프레임에 달한다. 유니코드 PUA 영역에다 미리 계산된 각 프레임의 모양을 그려 넣은 뒤, 그 글자를 순서대로 찍은 것이다. 놀랍지 않은가?

보급이 아닌 싸제 글꼴의 등록 및 해제를 위해 Windows는 AddFontResource와 RemoveFontResource라는 간단한 함수를 제공한다. 인자로는 등록하거나 해제하고 싶은 글꼴 파일의 경로만 달랑 주면 된다. '일단은' 말이다. 그러다 나중에는--Windows 9x 라인 말고 2000에서부터-- 두 종류의 함수가 더 추가되었다.

첫째, 바로 저 두 함수의 이름 끝에다 Ex가 붙은 버전이다. Ex 버전은 인자를 두 개 더 받는데, 하나는 아직 reserved 상태니 별 의미가 없고, 다른 하나는 사소한 비트 플래그들이다. 등록하는 이 글꼴을 시스템 전체가 아니라 우리 프로세스 내부에서만 사용하게 하는 FR_PRIVATE 옵션, 그리고 글꼴의 접근 가능 여부를 떠나서 일단 이게 EnumFontFamilies(Ex)에서 집계가 되지 않게 하는 FR_NOT_ENUM 옵션이다. 즉, 이 글꼴의 독특한 이름을 아는 프로그램만 이 글꼴을 사용할 수 있게 되는 것이다.

그리고 둘째로, 글꼴을 파일 이름이 아니라 아예 메모리 상의 데이터로 받는 AddFontMemResourceEx도 추가되었다. 이 함수로 추가되는 글꼴은 파일로 실체가 존재하지도 않고 특정 프로세스의 주소 공간에 매여 있으므로 극도로 private하며, FR_PRIVATE|FR_NOT_ENUM 속성이 언제나 선택의 여지 없이 붙는다.

요컨대 글꼴을 좀 더 가볍게 private 형태로 추가하는 기능은 Windows 2000에 와서야 새로 도입된 셈이다. 여담이지만, 이것 말고도 Windows 2000은 9x/NT4 시절에 비해 프로그램의 국제화 수준이 크게 강화된 첫 버전인지라 다국어 IME와 complex script를 포함해 글꼴을 저수준에서 조작하는 API들도 크게 추가되었다.
트루타입 글꼴의 테이블 데이터를 있는 그대로 뽑아 내는 GetFontData라든가, 글꼴이 지원하는 문자 집합을 유니코드 번호로 얻어 오는 GetFontUnicodeRanges도 이때의 산물임.

뭐 그건 그렇고 다시 글꼴 등록 얘기로 돌아오자면..
local/private 말고 전통적인 global한 글꼴 추가도 여전히 필요한 절차이다.
그런데 문제는 이게 사실 함수 호출만 한다고 완전히 끝나는 게 아니라는 것이다. 절차가 생각보다 굉장히 지저분하며 문서화가 제대로 돼 있지 않다.

1. global 글꼴은 Windows\Fonts 디렉터리에 있어야 한다. 결국 파일을 복사해 넣어야 하는데, 이 디렉터리에 read가 아닌 write를 하려면 관리자 권한이 필요하다.

2. Fonts 디렉터리에 복사된 파일을 상대로 AddFontResource(Ex) 함수를 호출한다.

3. 이 글꼴이 다음 부팅 때에도 제대로 인식되게 하려면, 글꼴 리스트를 레지스트리에다가도 등록해 줘야 한다. 위치는 다음과 같다.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts
과거 9x 시절에는 Windows NT 대신 그냥 Windows이고. 저 레지스트리도 read가 아닌 write를 하려면 관리자 권한이 필요하다.


레지스트리에 등록하는 형식은 대충 보면 짐작할 수 있지만, 문제는 이 뻔한 패턴의 작업을 자동으로 대행해 주는 함수가 없다는 것이다. 등록하고자 하는 TTF 파일을 직접 파싱해서 name 테이블에 있는 이름을 얻어 와야 하나? ActiveX 컨트롤을 등록해 주는 regsvr32 유틸리티처럼 글꼴을 명령 프롬프트에서 바로 설치하거나 제거하는 유틸리티도 운영체제에 있어야 할 것 같다.

옛날에는 트루타입 글꼴을 설치하려면 CreateScalableFontResource 같은 이상한 함수도 호출해서 ttf에 대응하는 *.fot 파일이라는 걸 만들어야 했던 모양이다. 완전 불편하기 그지없는데 지금은 그럴 필요까지는 없는 듯. 20년 전 엄청 옛날의 Windows 3.1 시절에는 ttf/fot 파일 쌍이 필요했지만 95 이후로는 그런 건 없다.

반대로 이 글꼴을 제거하려면 먼저 RemoveFontResource(Ex)를 호출해 주고, 이게 성공하면 레지스트리 제거와 파일 제거를 수행하면 된다.
그런데 Windows는 파일 자체를 가상 메모리 주소 공간에다 직통으로 대응해서 쓰는(MMF) 걸 좋아하는 운영체제인지라, 시스템 공용 파일을 지우기가 더럽게 까다로운 운영체제다. 글꼴도 예외가 아니어서 파일 삭제는 access deny 에러가 뜨면서 잘 되지 않을 수도 있다. 이때는 MoveFileEx(file, NULL, MOVEFILE_DELAY_UNTIL_REBOOT)을 줘서 다음 재부팅 때라도 파일이 삭제되게 플래그를 주면 될 것이다.

local과는 달리 global 글꼴 등록과 삭제는 이렇게 번거로운데, 게다가 관리자 권한까지 필요하니 더욱 번거롭다.
관리자 권한은 한 프로세스가 필요한 때만 잠시 사용자의 동의 하에 취득했다가 반납하는 게 없다. 애초에 자기 프로그램을 더 높은 권한으로 재실행해야 한다.
잠시 다음 상황을 생각해 보자.

  •  어떤 일을 하는 동안에도 GUI는 매끄럽게 반응하고, 작업이 취소 가능하거나 진행 상황 같은 걸 별도로 표시해야 하는 경우: 작업 부분을 별도의 스레드로 떼어 내야 한다.
  • 다른 프로세스를 훅킹해서 정보를 얻어 오거나 실행을 조작해야 하는 경우: 훅 프로시저는 반드시 별도의 DLL로 만들어야 한다. DLL은 32비트와 64비트를 모두 신경 써서 만들어야 하니 더욱 번거롭다.

그리고,

  • 평소에는 일반 모드로 실행되지만, 잠시 관리자 권한을 얻어 와서 민감한 디렉터리나 레지스트리의 내용을 변경해야 하는 경우: 그 부분만 별도의 EXE(프로세스)로 만들어서 실행해야 한다. 물론 나 자신을 특수한 인자를 주고 재실행하는 것도 괜찮다.

참고로 권한이 낮은 프로그램은 권한이 높은 프로그램에다 메시지를 못 보낸다. 그러니 프로그램 간의 통신 메커니즘도 잘 생각해 봐야 한다. =_=;;

어지간하면 골치아플 일 없이 단일 모듈, 단일 스레드만으로 모든 일을 처리하고 싶은데 그럴 수가 없는 상황이 이렇게 요약되었다.
프로세스, 스레드, DLL이 시나리오별로 다 등장했다. 글꼴 설치는 '프로세스' 분리가 필요한 작업인 것이다.

Posted by 사무엘

2014/05/26 08:23 2014/05/26 08:23
, , ,
Response
No Trackback , 3 Comments
RSS :
http://moogi.new21.org/tc/rss/response/967

내 손글씨

내 손글씨는...

사용자 삽입 이미지

영문은 기본적으로 Times Roman을 표방하며 특히 숫자는 이를 더욱 엄격히 따른다. 소문자 a와 g도 언제나 Times 스타일의 정자체로 쓴다.
하지만 세부적인 획은 기분에 따라 Courier 또는 Century Gothic 스타일로 쓰기도 한다.

소문자 i, t, l 같은 글자를 보면 차이가 가장 크게 드러나는데..

  • Times 스타일은 세로획의 위쪽에 자그마한 / 모양의 삐침이 있고 글자가 대체로 홀쭉하다.
  • Courier 스타일은 세로획의 위쪽에 비교적 길게 - 모양의 삐침이 있고, 글자들의 폭이 대체로 균일하고 뚱뚱하다.
  • Century Gothic 스타일은 삐침이 전혀 없어서 t조차도 가로획과 세로획만 있다.

이 세 계열 중 어느 스타일을 따를지는 기분에 따라 달라지는 듯. 딱 하나로 떨어지지는 않는다.

한편, 한글은 바탕체를 표방하며 네모꼴 스타일과 샘물/세벌/빨랫줄 스타일 두 개가 존재한다.
내 손글씨를 정형화해서 디지털 서체로 만들고 싶은 소박한 바람이 있다.

한글은 라틴 알파벳보다 획이 (1) 더 많고 복잡하다. (따라서 한 글자를 표현하는 데 알파벳보다 일반적으로 더 많은 픽셀수가 필요하다.)
그리고 그렇게 복잡하긴 한데 (2) 개개의 획은 기하학적으로 더 단순하다. (로마자 같은 꼬부랑한 느낌이 별로 없다)

이런 이유로 인해, 글꼴에 라틴 같은 수준의 오동통한 개성이 들어갈 여지가 좀 덜하다.
한글 글꼴에 맞춰 만들어진 영문 글꼴은 순수 영문 글꼴보다 그런 기교가 neutralize된 경향이 있는 게 이 때문이 아닌가 싶다.

Posted by 사무엘

2014/05/23 08:27 2014/05/23 08:27
, ,
Response
No Trackback , a comment
RSS :
http://moogi.new21.org/tc/rss/response/966

MFC 프로그래밍 잡설

1. IE 웹브라우저 윈도우 삽입

내 프로그램에다가 로컬이든 웹이든 HTML 페이지 내용을 표시해야 할 일이 생겼다. 이 경우 가장 간단한 해결책은 Internet Explorer 웹브라우저 윈도우를 삽입하는 것이다.

그런데 얘는 ActiveX 컨트롤이다. 흔히 웹페이지 내부에 들어가는 각종 ActiveX 컨트롤들이 웹 표준을 위배하고 사용자 접근성을 저해한다는 식으로 말이 많지만, 사실은 Window의 웹브라우저 자체부터가 ActiveX 형태로 제공되는 컴포넌트인 것이다. 그리고 이미 다들 아시겠지만, 플래시도 기술적으로는 ActiveX이다. 단지 이건 너무 전세계적으로 널리 퍼진 관계로 반쯤 웹 표준인 것처럼 인정받고 있을 뿐이다. (뭐, 이것도 HTML5의 등장으로 인해 지위가 좀 위태로워지긴 했지만)

어쨌든 이런 구조적인 차이로 인해, 웹브라우저 윈도우는, 리치 에디트 같은 여느 custom control과는 달리 CreateWindowEx 함수에다가 클래스 이름만 달랑 넘겨 준다고 선뜻 만들 수 있는 물건이 아니다.
MFC에서 ActiveX 컨트롤을 생성하는 코드를 보면 CWnd::CreateControl로 내려가는데, 내부 메커니즘은 각종 COM API가 동원되며 미치도록 복잡하다. 사실, 난 MFC의 도움 없이 API만으로 ActiveX 컨트롤을 생성해 본 적이 없으며, 요즘 같은 세상에 굳이 그래야 할 필요도 없을 것이다.

예전에 비주얼 C++에는 Component Gallery라는 게 있어서 (1) 스플래시 윈도우나 '알고 계십니까' 팁 대화상자처럼 몇몇 자주 쓰이는 MFC 클래스를 프로젝트에다 자동으로 등록해 주는 템플릿, (2) 그리고 특정 ActiveX 컨트롤에 대한 wrapper 클래스를 자동 생성해 주는 기능이 있었다. 6.0의 이후 버전부터는 그런 걸 못 본 것 같다.
(1)은 그렇다 쳐도 (2)는 해당 ActiveX 컨트롤의 type library를 참고하여 이 컨트롤을 생성하는 함수, 그리고 걔가 원래 제공하는 속성과 메소드들을 그대로 C++ 클래스 형태로 옮겨 주는 기능이다. CWnd의 파생 클래스인 것은 두 말할 나위도 없고.

Component Gallery가 없으니 요즘 (2)를 수행하려면 좀 우회 경로를 가야 한다. 대화상자를 하나 만든 뒤 거기서 우클릭하여 원하는 ActiveX 컨트롤을 삽입하고, 그걸 또 우클릭하여 클래스를 추가하면 된다.

다른 것도 아니고 IE 웹브라우저 윈도우는 굉장히 유명한 ActiveX 컨트롤인 관계로, 사실은 MFC에도 이미 전용 클래스가 준비되어 있다. 바로 CHtmlView 되시겠다. 이름에서 알 수 있듯 얘는 CWnd가 아닌 CView로부터 상속을 받아서 MFC의 view-document 아키텍처에 최적화되어 있다.
즉, 대화상자의 여느 컨트롤들과는 달리 스택이 아닌 heap에 생성되고, PostNcDestroy 함수에 delete this가 구현되어 있다. 그래서 대화상자 같은 데에서 간단히 사용하기에는 어려움이 있다. (뭐, 불가능한 건 아니다. 대화상자 위에다 아예 CView를 만들지 말라는 법도 없으니)

한편, CHtmlEditCtrl이라는 클래스도 있다.
IE 윈도우는 단순히 HTML을 표시만 하는 게 아니라 위지윅 HTML 편집기 기능도 갖추고 있다. 얘는 IE 윈도우를 viewer가 아닌 editor 모드로 열어 준다.
IE가 여러 모로 리치 에디트 컨트롤과도 경쟁 구도가 된 듯하다. 물론 리치 에디트가 훨씬 더 빠르고 가볍지만, 텍스트에다 서식을 입히는 데 RTF보다야 HTML이 압도적으로 더 유명한 대세가 된 건 부인할 수 없다. 그래서 도움말조차 RTF 기반인 재래식 HLP는 진작에 밀려 사라지기도 했고 말이다.

이 CHtmlEditCtrl은 CView가 아닌 CWnd 기반이다. 그래서 CDialog 파생 클래스에다가 멤버로 선언하여 대화상자의 child control로도 비교적 쉽게 사용할 수 있다. view 버전은 CHtmlEditView와 CHtmlEditDoc이 따로 있는 듯.

하지만 에디트 기능이 없는 일반 IE 윈도우를 CWnd를 기반으로 간단히 스택에다가 생성하는 건 여전히 MFC의 기존 클래스로 가능하지 않은 것 같다. 그래서 본인은 그냥 ActiveX 컨트롤 type library로부터 CWnd 파생 클래스를 추출한 후 그걸 사용하는 재래식 방법을 동원했다.

2. MFC 액셀러레이터 버그(?)

Windows API에는 메뉴 단축키를 자동으로 처리해 주는 액셀러레이터라는 게 있다. MFC에서는 CFrameWnd::LoadFrame 함수에서 자기 프레임 윈도우 ID값에 해당하는 액셀러레이터를 불러들인다.

그런데 거기에 있는 단축키를 좀 수정하고, 메뉴에다 새로운 기능을 추가하여 단축키도 액셀러레이터 테이블에다가 배당했는데, 아무리 수정을 해 줘도 새로운 단축키가 동작하질 않고 단축키가 예전 방식으로만 동작한다.
혹시 액셀러레이터 리소스가 잘못 빌드됐나 싶어서 빌드된 EXE 파일의 내부 리소스를 살펴보기도 했지만 딱히 이상이 없다.

그렇다고 해서 해당 리소스를 아예 지워 버리면 모든 단축키가 먹통이 된다. 그러나 리소스가 있으면 단축키가 있는 그대로 인식되지 않는다. 어찌 된 영문일까?

이것은 비주얼 C++ 2008 이후부터 도입된 일명 feature pack의 추가 기능 때문에 벌어지는 현상으로, 엄밀히 말해 버그는 아니다.
알다시피 MFC feature pack에서는 CWinApp, CFrameWnd 같은 전통적인 클래스에 Ex가 붙었고, MS Office처럼 프로그램의 모든 기능의 단축키를 customize하는 기능이 추가되었다. 그래서 한번 프로그램을 사용하고 나면, 그 뒤엔 프로그램이 리소스에 있는 액셀러레이터 테이블을 참조하는 게 아니라 레지스트리에 저장된 단축키를 따라 동작하게 된다. CKeyboardManager라는 클래스를 보신 적이 있을 것이다.

그렇기 때문에 프로그램 개발 과정에서 새로운 메뉴 명령이나 단축키가 추가되어 이를 테스트하고 싶다면, 프로그램을 실행한 후에 Customize 대화상자를 꺼내서 단축키를 reset시키면 된다. 아니면 해당 레지스트리를 수동으로 날리거나 레지스트리를 날리는 코드를 추가해 주면 된다. 이에 대한 자세한 정보는 구글링하면 다 나온다.

단축키와 도구모음줄을 싹 다 customize하는 기능이 필요할 정도로 규모가 방대한 프로그램을 개발할 일은 사실 그리 많지 않다.
그러니 그냥 옛날처럼 feature pack 기능을 사용하지 않는 아주 간단한 프로그램만 만들고 싶은데 요즘 MFC 마법사는 그냥 선택의 여지가 없이 Ex 클래스만 사용하여 코드를 생성해 주는 듯하다.

요즘은 MFC DLL은 이제 ansi 버전은 기본 배포조차 안 해 준다고 하지?
그나저나 (1) DLL의 덩치가 커져도 너무 커진 것, 그리고 확장팩이 그나마 MS Office나 Visual Studio의 UI를 정확하게 고증하여 재연한 것도 아니고 (2) 동작 방식이나 글꼴, 색상이 들쭉날쭉 차이가 나면서 짝퉁 티가 팍팍 나는 것을 생각하면...
MFC의 변화 양상에 대해서 본인은 불만이 좀 있다. -_-;;

예전에도 말했지만, (1)은 걍 운영체제의 내장 mfc42.dll을 직통으로 사용하는 classic legacy 모드 같은 거 좀 넣어 주면 안 되나 싶고,
(2)는.. 운영체제의 보급 메뉴 말고 싸제 메뉴가 흔히 저지르는 실수 하나만 좀 지적하고 넘어가겠다. 업계 관계자가 내 글을 보게 될 가능성은 별로 없지만..;;

메뉴가 튀어나왔을 때는 프로그램이 자체적으로 IME를 꺼야 한다. 그래서 한글 모드일 때도 Alt를 누르지 않고 그냥 누르는 메뉴 항목에 대한 단축키(액셀러레이터 키)가 먹혀야 한다. 그 글쇠가 안 먹히고 화면 한 구석에 ㅇ, ㅂ 같은 조합 윈도우가 튀어나오는 건 프로그램의 버그이다.
이것도 MS 오피스의 싸제 메뉴는 처리를 한 반면에, 요즘 MFC가 라이선스한 싸제 메뉴는 그런 처리도 안 돼 있다. 보면 볼수록 품질이 실망스럽다. 아니, Visual Studio조차도 MS Office 라이브러리가 아니라 WPF 기반으로 새로 제작된 2010 이후의 IDE는 메뉴에 저 버그가 존재한다.

<날개셋> 한글 입력기야 MFC를 사용하지 않고, 그나마 타자연습은 나온 지 10년도 더 된 구닥다리 Visual C++ 2003을 아직도 사용하며 빌드되고 있다. MFC의 배포 방식과 덩치 때문에 업그레이드를 할 처지가 못 돼서 말이다. 아니면 차라리 WTL 같은 더 가벼운 프레임워크로 갈아타야 되나 싶다.
위의 두 아이템들은 내 개인 프로젝트가 아니라 회사 일을 하면서 발견하고 느낀 것들을 글로 옮긴 것이다. 이것 말고도 기억에 남는 게 좀 있는데.. 마저 나열하면서 글을 맺도록 하겠다.

3. ShowWindow(SW_HIDE) 하니까 창이 없어져 버렸던 것. 동일한 영역의 창에 IE ActiveX 컨트롤과 여타 윈도우를 상황에 따라 교대로 보이거나 숨기는 UI를 만들 일이 있었다. 그런데 프로그램이 자꾸 이상하게 동작하고 assertion failure가 나기에 디버깅을 해 봤더니, 이게 웬걸, IE 윈도우를 ShowWindow(SW_HIDE)를 해서 숨기는 순간 컨트롤 자체가 완전히 파괴되고 m_hWnd 값이 NULL이 되는 것이었다.

검색을 해 보니 이것은 아주 잘 알려진 문제. 처음에 Create로 생성을 할 때 WS_VISIBLE가 지정되지 않았던 IE 컨트롤은 나중에 또 ShowWindow를 통해 숨겨질 때 내부 로직에 의해 destroy되어 버리는 모양이었다.
이 문제를 피해 가려면 그 윈도우에 대해서 MFC의 CWnd::ShowWindow를 호출하지 말고 그냥 Windows API 함수를 쓰면 된다고 한다. 내부 사정은 알 수 없는 노릇. 스레드를 사용할 때 이래로 MFC 클래스 대신 Windows API의 사용이 강제되는 또 다른 상황을 만났다.

4. 내 프로그램에다 삽입시킨 IE 컨트롤로 각종 자바스크립트를 사용하는 웹페이지에 접속을 하다 보면.. 스크립트 오류가 난다. gmail만 해도 로그인을 하고 나면 동일 증상을 확인할 수 있음.
이것은 IE가 보안 때문에 취한 조치인 듯하다.
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION

요 key를 만들어서 그 밑에 이름은 "자기 프로그램.exe"이고 데이터는 10진수로 IE 버전 곱하기 1000 (=0이 3개 붙은)인 REG_DWORD를 집어넣어 주면 된다.

5. MFC 라이브러리와 표준 C++ 라이브러리를 같이 사용한 상태로 프로그램을 static link 형태로 빌드하고 나면..
operator new/delete가 중복 정의되었다고 링크 에러가 나는 경우가 있다. (DLL link는 상관 없음)
이 역시 구글링을 하면 정보가 곧바로 걸려 나올 정도로 잘 알려진 문제이다. 귀찮지만 라이브러리를 링크하는 순서를 좀 바꿔 주면 해결 가능하다. 구체적인 해결책은 지금 이 개인용 컴퓨터에 들어있지 않아서 설명을 생략하겠다. -_-

Posted by 사무엘

2014/05/20 08:18 2014/05/20 08:18
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/965

2014년 5월의 철도계 새소식

내 블로그에서 언급을 하지 않을 수 없는 중요한 사건이 있기에 잠시 지면을 할애하여 소개하겠다.

1. ITX 새마을 운행 개시

등굣길에 근처 철길에서 지금까지 못 보던 열차가 지나가는 걸 봤다.
이 빨간 열차는 바로.. 지금의 새마을호(전후동력과 기관차 견인형 모두)를 대체할 차세대 열차 ITX 새마을이다. 지난 5월 12일부터 상업 운전을 시작했다~!
새마을호 전후동력형 디젤 동차가 작년 초에 퇴역하고서 1년 4개월 만의 일이다.

사용자 삽입 이미지
'새마을'.. 1974년에 등장한 이래로 40년째 열차 이름으로서 명맥을 이어 가는구나!
10여 년 전, 정식 개통 전에 클로즈 베타테스트 중이던 지금의 떼제베 개량 KTX를 보는 듯한 느낌이다.
누리로, ITX 청춘 등, 2010년대부터는 여객열차들이 이렇게 하나 둘씩 전부 전동차 기반으로 바뀌고 있다.
그리고 열차 호칭에서 등급명-차량명을 병기하는 체계도 차츰 정착해 가고 있다. KTX 산천이 원조였고 말이다.

누리로의 명칭도 이런 체계에 편입되어야 하지 않나 싶은데, 어찌 되려나 모르겠다.
무궁화호라는 이름은 그냥 예전의 기관차 견인형 여객열차 내지 개량형 디젤 동차의 총칭으로 남을 듯. 그리고 배 이름 관행의 잔재이던 '-호' 접미사도 이제는 없어져 가는 추세다.

우리 학교는 앞에 철길이 있어서 매우 아주 굉장히 좋다.
가끔 디젤 기관차가 지나가는 소리를 멀리서라도 들으면 마음의 기쁨과 안정과 평안이 찾아온다.

2. 평화열차 DMZ train 운행 개시

'경의선' 하면 내력과 관련하여 철덕이 할 말이 참 많다.
서울 시내 구간이 일반열차들의 기지 회송 구간으로 쓰인다는 특성상 오랫동안 수도권 광역전철 버프를 못 받고 있다가 2009년에야 전철이 개통했다.
그 전, 2006년 가을에는 새마을호 전후동력형 디젤 동차의 1987년 초기 도입분이 퇴역하면서 일명 '임진강 라이너' 새마을호가 3년 남짓 운행되기도 했었다.

그러나 경의선 수도권 전철이 문산까지 뚫리면서 임진강 라이너는 자연스레 폐지되었으며, 통근열차가 다니는 단선 비전철 구간은 운천, 임진강, 도라산 같은 남북 철도 연결 버프를 받은 21세기 구간으로 확 줄어 버렸다. 운행 거리가 서울 지하철 2호선의 지선 수준이 된 것이다. 전국에서 CDC 기반의 통근열차(구 통일호)가 최후까지 다니던 구간은 이 경의· 경원선밖에 없었는데, 이 둘 사이에서도 경의선은 경원선과는 처지가 많이 달라졌다. 경원선은 동두천 이북으로도 거의 50분에 가깝게 달릴 비전철 구간이 여전히 있기 때문이다.

결국, 지난 4월을 끝으로 통근열차 명목의 경의선 여객 열차의 운행은 종지부를 찍게 되었다. 그럼 오리지널 CDC를 볼 수 있는 곳은 진짜로 경원선밖에 안 남는구나.
그 대신 등장한 것은 일명 DMZ-train이라고 불리는 '평화 생명 관광 열차'이다. 어차피 경의선에서 그 짤막한 CDC 구간의 수요는 안보 관광객밖에 없었으니 적절한 조치인 것 같다. 이 열차는 운임 체계상으로 KTX, 무궁화호 같은 일반열차가 아니라 O-train, V-train 같은 관광열차의 위상이 된 것이다.

운행 횟수는 하루 두 번이고 당연히 패키지 안보 관광과 연계해서 다닌다. 차량은 새로운 건 아니고 기존 CDC를 관광용으로 개조한 물건이라 함. 물론, 운임은 과거의 통근열차보다 훨씬 더 올라갔다는 걸 감안해야 한다.
민통선 구간에 있는 도라산까지 갔다 오려면 미리 허가를 받아야 하며 돌아오는 표도 반드시 같이 구입해야 한다.

모든 변화가 달갑지는 않을지도 모르지만(특히 관광열차 명목으로 비싸진 운임) 본인은 이게 철도 경영의 관점에서는 바람직한 변화인 것 같다.
또한 한 가지 좋아진 점은, 이 열차는 문산이 아니라 서울 역에서 도라산까지 환승 없이 직통으로 간다는 것이다. 서울과 문산 사이엔 능곡 한 곳에서만 추가 정차한다.

올여름에는 경원선에도 이런 컨셉을 반영하여, 청량리에서 백마고지까지 가는 경원선 버전의 DMZ train도 운행을 시작할 거라고 한다. 그래도 경원선에는 정규 여객 통근열차도 여전히 병행이 필요할 것이다.
개인적인 생각은 정선선, 그리고 교외선에도 안보 쪽은 아니어도 비슷한 컨셉의 관광열차가 좀 다녔으면 어떨까 싶다.

Posted by 사무엘

2014/05/17 08:26 2014/05/17 08:26
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/964

패키지 관광도 하고 식사도 한 뒤, 다음 남은 시간 동안은 철원 서북부의 민통선 이남 지대를 차를 몰고 다니면서 내 마음대로 답사했다.
우리가 전선 휴게소로 갈 때는 지방도 464호선의 동남쪽을 통해 민통선으로 들어갔다. 그러나 다음으로 답사하는 곳은 그 도로의 서쪽 구간에 있다. 그래서 민통선 밖으로 나갈 때 그쪽으로 바로 나가면 목적지에 훨씬 더 빨리 갈 수 있다.

그러나 현실에서는 그럴 수 없기 때문에 들어갔던 곳으로 다시 나가야 했으며, 철원 동북-서북 외곽을 횡단하기 위해 다시 남쪽의 고석정으로 되돌아갔다가 국도 87호선을 거쳐서 다시 지방도 464로 갈아타야 했다. (전선 휴게소는 동북 외곽에 있음) 동선이 대략 좋지 않았다.

사용자 삽입 이미지

잠시 쉬어 가는 코너다. '오덕'의 압박..;;
하긴 그래도 야동리보다는 낫다. 옛날에 사람 중에도 이 오덕이라는 분이 계시기도 했고.
차 안에서 밖을 촬영한 것이어서 화면이 좀 흐리다.

사용자 삽입 이미지
그리고.. 말로만 들었던 백골 부대 백골 구조물을.. 국도 43호선상에서 실제로 봤다..;; (저건 내가 직접 찍은 사진은 아님.)

자, 내가 동선의 삽질까지 감수하면서 찾아간 곳은 바로 이곳이었다.

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

국도 87과 지방도 464가 만나는 월하 삼거리에서 동쪽으로 얼마 안 가면 '한다리'라는 자동차 교량이 나오는데, 거기서 오른쪽(남쪽) 방면으로 한 200m쯤 떨어진 곳엔 옛날 금강산선 철도의 교량이 기둥만 남아 있다. 이걸 현장 답사했다.
그 옆을 보면 언덕이 두 동강 나기도 했을 정도로 옛날에 철길이 있었다는 걸 유추할 수 있다.

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

그리고 한다리로부터 3km 정도 동쪽으로 더 가면.. '대위교'라는 교량이 나오며, 역시 여기서도 오른쪽을 보면 한다리보다 더 온전한 형태의 금강산선 교량이 남아 있다! “금강산 가던 철길!”이라는 글자까지 있음을 주목하시라.
이걸 직접 발견했을 때 내가 얼마나 기뻤을지 여러분은 상상할 수 있으시겠는가? 자동차는 이런 걸 답사할 때 쓰라고 만들어진 물건인 것이다.

인터넷을 뒤져 보면 나보다 어린 친구가 차도 없이 철원까지 대중교통으로 찾아간 뒤, 민통선이 코앞인 여기까지는 근성으로 걸어서 답사한 경우도 있다. 그에 비하면 나는 얼마나 빠르고 편안하게 찾아갔는가? 완전 양반이다.
한다리, 대위교 근처에 있는 교량과, 전선 휴게소 근처에 있는 교량을 지도에서 찾아서 한 선분으로 이어 보면, 옛날에 금강산선의 선형이 대략 어떠했을지를 짐작할 수 있다.

참고로 대위교 인근에는 '철길가든'이라는 식당이 있고, 또 민통선 구역으로 들어가는 초소가 있다.

사용자 삽입 이미지

대위교까지 간 뒤 본인은 차를 돌려 서쪽 백마고지 역으로 향했다. 지도를 보면 국도 87호선이 90도 꺾이는 지점이 있는데, 사실 길이 그것밖에 없는 건 아니다. 다른 방향은 민통선 안으로 들어가는 길일 뿐. 그리고 바로 그 교차점에 그 이름도 유명한 노동당사가 있었다.

철원이 북한 치하에 있었을 때 그들이 후딱 지어 사용하던 일종의 관청 건물이다. 근대 문화유산 등록 문화재 제22호. 얼마나 튼튼하게 만들었으면, 6·25 때 주변의 다른 건물들은 폭격 때 다 폭삭 무너지고 부서졌지만 쟤만 그래도 뼈대는 저렇게 온전히 남았을 정도라고 한다.

우리는 조선 총독부 청사나 서대문 형무소를 기억하는 것만큼이나 이 건물을 똑똑히 기억해야 할 것이다. 여기는 북한 공산당이 양민을 수탈하고 애국 우파 인사들을 체포하고 고문하고 죽이던 악마의 소굴이었다. 공산주의는 실현 불가능한 사상이기 때문에 공산주의자들은 그걸 강제로 실현하기 위해, 사람들을 감시· 억압하고 거짓 선동하고 자유를 빼앗는 등 우리가 생각할 수 있는 가장 악랄하고 잔학한 만행을 저질러 왔다.

남산 안기부? 남영동 대공분실? 노동당사의 악랄함에 비하면 새 발의 피는 될까 싶다. 내 홈페이지를 방문하시는 분들은 절대악과 필요악을 분간 못 하는 오류를 절대로 저지르지 말아야 한다.

역사적으로 공산주의자를 상대로 빨갱이라는 극단적이고 경멸적인 호칭이 괜히 생긴 게 아니었음을 알아야 한다. 북한은 순수한 의미에서의 공산주의 국가는 아니겠지만, 공산주의를 실현하기 위해 공산주의자가 사용해 온 악한 방법론과 배경 사상은 오늘날까지 그대로 변함없이 유지하고 있는 사악한 반국가단체일 뿐이다. “우리나라에도 공산당도 허용돼야 진정한 민주주의..” 운운하는 건 정말 역사와 현실을 모르는 극도의 무개념· 무지의 소치이다..

오해가 없게 말씀드리자면, 나의 정치 성향은.. 악의 세력으로서 본질이 예나 지금이나 변함없는 북한 수뇌부와 잘 검증된 과거 역사 팩트에 굳건한 뿌리를 두고 있다.
그것보다 훨씬 덜 중요한 겨우 무슨 새누리당이니 민주당이니 일베 오유 같은 것에 뿌리가 있는 게 아니다.
달랑 진보냐 보수냐, 성장이냐 분배냐 그딴 것만을 논하는 거라면 정치색 같은 걸로 논쟁하고 싸울 필요도 없다.

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

이제 시각은 벌써 오후 5시가 넘어 있었다. 서쪽으로 수 km를 더 달려 도착한 우리의 마지막 목적지는 지난 2012년 말에 개통한 경원선의 북쪽 종점인 백마고지 역이었다. 근처에 백마고지 유적지가 있기도 하다.

원래 옛날에는 백마고지 역 일대도 민통선 지대였는데 나중에 해제되었다. 하지만 여기서 조금 더 가면 어차피 또 민통선을 만나게 된다. 역 주변엔 걸어서 가 볼 만한 건 없다시피하다니, 연계 교통수단이 필요하다.

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

경원선은 경의선과는 달리 남북 연결이 되지 않았기 때문에, 선로가 심지어 민통선 안 구간에도 못 들어가고 이렇게 딱 끊어져 있다. 경의선 도라산 역은 잉여롭긴 해도 출입국 사무소가 있고 승강장에서 북쪽으로 쭉 이어진 선로를 볼 수 있었던 반면, 이곳은 단촐하고 한산하기 그지없었다.

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

원래는 신탄리 역 이북에 철도 중단점이 있었는데 그걸 그대로 옮긴 건 아니고.. 철도 중단점을 새로 만들었다. 그래, 이걸 실물을 직접 보면서 카메라에 담고 싶었다. 승차권이나 입장권 없이도 승강장과 선로 끝에 슬쩍 들어가 볼 수 있었다.

이렇게 철원에서 철도 and/or 안보와 관련된 대부분의 명소들을 답사하면서 철덕력을 키웠다. 그리고 대한민국 땅에 주어진 자유의 소중함에 대해 생각하는 즐겁고 유익한 시간을 보냈다.
돌아올 때는 국도 3호선을 이용했다. 길이 상당 부분 경원선 철길과 겹치다 보니 돌아오면서도 철도역과 철길 구경을 덤으로 할 수 있었다. 도로 정체 때문에 돌아오는 길은 2시간이 좀 넘게 걸렸으며, 아침 7시 반으로부터 정확히 12시간 뒤인 저녁 7시 반에 서울에 무사히 귀환했다.

돌아오는 길엔 친구들은 너무 피곤해서 간식을 먹을 기력조차 없이 차에서 잠들어 있었다. 하지만 본인은 운전대를 잡고 있는 동안은 절대로 피곤을 느끼지 않았다. 단지 집에 도착한 뒤에 침대에 쓰러져서 시체 모드가 됐을 뿐.

철저한 준비 덕분에 길에서 전혀 헤매지 않았으며 시간도 적절히 분배하면서 짧은 시간 동안 많은 장소를 답사할 수 있었다. 인파가 바글바글 몰리는 데가 아니어서 분위기가 좋았으며, 완벽에 가깝게 좋던 날씨 역시 성공적인 여행을 더욱 빛나게 해 주었고 말이다.
다음날 교회에서는 같이 간 친구들의 부친께서 한 분씩 날 개인적으로 불러서 좋은 구경을 시켜 주느라 수고 많았다며 칭찬을 해 주셨다. ㅎㅎ

Posted by 사무엘

2014/05/14 08:24 2014/05/14 08:24
, , , , , , , , ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/963

전망대 주변은 경치가 몹시 아름다웠다.

사용자 삽입 이미지

넓은 철원 평야에서 논농사를 지으려면 물 공급이 원활해야 하는데, 북한에서는 철원을 빼앗긴 뒤 물귀신 심보로 철원으로 가는 무슨 강의 물줄기를 끊어 버렸다고 한다. 저수지는 그 난관을 극복하게 위해 만들어진 거라 함. 물론 여기는 낚시꾼 내지 철새 사진을 찍으려는 사진 작가들도 많이 찾아온다.

워낙 날씨가 맑고 미세먼지도 없어서 북한 땅까지 어렴풋이 보였다. 다만, 이 지역엔 개성 공단이나 기정동 마을 같은 명물이 없는 관계로, 파주의 도라 전망대만치 북한 쪽에 딱히 볼거리는 별로 없다. 그냥 천혜의 자연만을 감상해야 된다.

사용자 삽입 이미지

지금까지 인터넷 사진으로만 보며 그리워하던 월정리 역 복원 건물을 드디어 직접 보게 되었다. 오오!! ㅠ.ㅠ 감사와 찬양이 절로 흘러나왔다.
난 역 건물을 팔로 꼬옥 끌어안은 채 감격에 잠겼다.

사용자 삽입 이미지

역 구내의 선로에는 두 가지 중요 유물이 있는데, 하나는 코레일 4001호 디젤 기관차이고, 다른 하나는 6·25 전쟁 중에 우리 아군의 폭격을 받고 부서진 어느 증기 기관차이다.
4001호 디젤 기관차는 굉장히 옛날 차량이긴 하지만, 월정리 역과 무슨 관계가 있으며 왜 여기에 전시되었는지 나로서는 알 길이 없다. 거기 현장에서도 딱히 설명이 돼 있지 않다.

현재 임진각에 가 보면, 알다시피 경의선 장단 역에 있던 녹슨 증기 기관차가 녹을 최대한 벗겨 내는 가공을 거친 뒤 전시되어 있다. 그건 총격 때문에 표면이 벌집이 된 것만 빼면 형태가 비교적 온전한 편이며, 그때 그 기관차를 몰던 기관사가 누군지까지도 알려져 있다. 그 기관차는 '마터'라고 불리던 산악 화물용의 굉장한 대형 기관차였다.
그러나 월정리 역 인근에 있는 '경원선' 기관차는 총알이 아니라 포탄이라도 맞았는지 형체를 알아볼 수 없을 정도로 다 으스러져 있다. 이것도 마터 형 기관차인지는 역시 모르겠다.

예전에도 얘기를 한 적이 있나 모르겠는데, 이 세상에 존재하는 모든 증기 기관차는 원래 검정색이다. 붉게 녹이 슨 모습 아니면 옛날의 흑백 사진만 봐 왔기 때문에 상상하기가 쉽지 않을 뿐이다.
뉴욕에 있는 자유의 여신상이 지금은 온통 녹이 슬어서 퍼렇지만, 원래는 그거야말로 갈색이다. 평양에 있는 갈색의 김씨 부자 동상과 비슷한 색이라고 생각하면 이해하기 쉽다.

사용자 삽입 이미지

월정리 역의 바로 옆에는 철원 비무장지대에 서식하는 온갖 동물들을 박제해서 전시해 놓은 자그마한 박물관이 있어서 거기도 잠시 둘러봤다. 동물은 원래 화약 냄새를 잘 맡는 편이지만, 지뢰를 밟아서 다리를 잃은 동물도 있다고 한다.

이렇게 매우 유익한 구경을 한 뒤, 버스는 민통선 안에 있는 옛 철원 역 부지와 몇몇 옛 건물들 흔적을 지나갔다. 딱히 정차하지는 않고 가이드가 설명만 해 줬다. 일제 강점기 내지 북한 정권이 잠시 쓰던 건물 되시겠다.

그 뒤 버스는 처음에 입장할 때 거쳤던 민통선 초소와는 다른 초소에서 민통선 구역을 빠져나갔다. 관광버스가 아니고 민통선 패스를 갖고 있지도 않은 일반인이라면 이건 가능하지 않은 일일 것이다. 일반인이라면 들어갔던 초소에다 신분증을 맡기기 때문에, 반드시 들어갔던 곳으로 다시 나가야 한다. 이 점을 내가 오해한 관계로 추후의 여행 과정에서 약간 착오가 있었다.

전체 관광은 3시간이 약간 넘게 걸렸다. 우리 일행은 고석정 관광 사업소로 돌아왔다. 시각은 1시 40분쯤. 이제 점심을 먹으러 '전선 휴게소'로 떠났다.

사용자 삽입 이미지

전선 휴게소! 휴게소라고 간판은 걸려 있지만, 이곳은 잠깐 거쳐 가는 장소가 아니라 엄연한 목적지, 아니 종점 역할을 하는 식당이나 마찬가지다. 전국에서 유일하게 민통선 안에 있으면서 민통선 밖 민간인들을 상대로도 영업을 하는 식당이다. 식사 메뉴는 메기 민물 매운탕이 유일하며 다른 선택의 여지가 없다. 인근 군부대에서는 회식을 여기서 할지도 모르겠다.

파주 임진각 쪽에서는 민통선 안에 통일촌이라고 불리는 마을이 인근에 있는지라, 안보 관광 때 거기서 식사를 하는 스케줄도 있을 정도이다. 하지만 전선 휴게소는 그런 식으로 연계가 돼 있지는 않다. 위치도 좀 외딴 곳이며 수십· 수백 명의 관광객을 한 번에 상대할 정도까지의 규모도 안 되고 말이다.

왔던 길로 돌아가서 국도 43호선을 탄 뒤, 철원 동쪽에서 북쪽으로 올라가는 지방도 464호선을 갈아탔다. 그 길로 끝까지 가면 길이 더 없이 끊어진 것처럼 나오는 지점이 있는데, 거기가 바로 민통선 초소이다. 통과 허가를 받으려면 최소한 당일 아침에 식당에 전화해서 인원 수를 말하고 식사 주문을 한 뒤, 초소에서는 “전선 휴게소 방문”이라고 얘기해야 한다.

대표자의 이름· 연락처를 적고 신분증을 맡기고, 동승자들의 이름과 생일 정도를 적어서 제출하면 초소에서는 임시 출입증과 차량 식별용 깃발을 준다. 출입증은 운전석 앞유리에다 두고 깃발은 옆유리에다 끼워서 펄럭이게 해야 한다.
참고로 식당은 민통선 초소에서도 거의 3km가 넘게 떨어져 있다. 그리고 철원 북쪽 외곽에서 들판이 아니라 수풀이 우거진 곳이 있다 치면 십중팔구 거긴 지뢰밭이다..

사용자 삽입 이미지

여기서도 텅 빈 내비 화면으로 민통선 진입을 인증하련다. ㅎㅎ

사용자 삽입 이미지

내가 어지간해서는 개인 블로그에다 맛집 광고나 음식 인증샷 같은 건 좀체 안 올리는데.. 여기 민물 매운탕은 정말 별미였다. 한탄강에서 주인장이 직접 잡아서 요리한다는 생선은 살이 입 안에서 살살 녹았으며 곁들어진 수제비와 채소는 담백했다. 국물은 딱 적당히 구수하고 얼큰했으며 너무 맵거나 짜지 않았다.
먼 길을 힘들게 찾아간 보람이 있었다. 같이 간 일행들도 이를 인정하면서 대단히 만족스러워했다.

그리고 전선 휴게소 근처에는 진귀한 구경거리가 하나 있었으니, 그건 바로 금강산선 옛 교량이다.

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

사용자 삽입 이미지
주변 경치도 몸살 날 정도로 아름다웠다. 이런 곳에 인파가 북적거리지도 않고 우리밖에 없으니 분위기가 이보다 더 좋을 수 없었다.

사용자 삽입 이미지
(to be continued)

Posted by 사무엘

2014/05/11 19:34 2014/05/11 19:34
, , , , , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/961

지난 2013년 5월 4일, 어린이날을 앞두고 본인은 교회 지인 가족의 초청으로 파주 임진각 일대에 안보 관광을 갔다 왔다.
그 경험에 힘입어 그로부터 거의 정확히 1년이 지난 2014년 5월 3일엔, 본인은 교회 친구들을 데리고 철원에 안보 관광을 직접 갔다 왔다.

본인은 철덕의 성지순례 코스로서 철원을 오래 전부터 주목하고 있었다.
우리나라 군사분계선의 주변을 지도로 살펴보면, 판문점이 있는 서쪽이야 평지이지만 동쪽으로 갈수록 빽빽한 산악 지형이 이어진다. 그런데 수풀을 머리숱에다 비유했을 때 땜통 같은 지역이 강원도에 동서로 딱 두 군데 있는데, 하나는 '평야'가 있는 철원이고 다른 하나는 분지처럼 생긴 양구이다. 북한 역시 이 두 지역을 염두에 두고 과거에 남침 땅굴을 팠었다(철원 쪽으로 #2를, 양구 쪽으로 #4를).

철원은 예로부터 천혜의 자연이 살아 있는 곡창 지대요 한반도 중부 지방의 교통의 요지이기도 해서 전략적 가치가 높았다. 6·25 휴전 이후에 서울이 북한과 더욱 가까워진 건 좀 ㅎㄷㄷ한 일이지만, 그래도 치열한 전투 끝에 철원을 수복해 낸 것은 굉장한 쾌거였고 김 일성도 이를 애석해했을 정도라고 한다. 여긴 나름 38선 이북이기 때문에 분단 직후 6·25 전쟁 전까지는 북한에 속해 있었다.

교통의 요지라는 건 여기에 철도가 있기도 했다는 뜻이다. 경원선이 지났고 금강산 관광 철도도 있었다. 우와..!
그래서 본인은 철원에 있는 다른 자연 관광지나 유적지들은 제쳐 두고 오로지 안보 그리고 철도와 관련된 곳을 골라서 답사하려고 마음먹었다. 로드뷰, 항공 사진 등을 참고하면서 모든 스케줄을 짠 뒤, 드디어 답사를 떠났다.
동반자가 없으면 나 혼자라도 차 끌고 가려고 생각했으나, 다행히 교회 친구를 세 명이나 꾀어(?) 내는 데 성공했다. “저런 델 도대체 왜 가 ㄲㄲㄲ” 같은 놀림과 비아냥은 물론 있었지만.. 그래도 나름 자매까지 한 명 불러냈다! ㅋㅋ

사용자 삽입 이미지

아침 7시 반, 떠나는 날의 아침이 밝았다.
토요일 이른 아침엔 도로가 아주 한산하고 소통이 원활했다. 날씨도 아주 쾌청하고 좋았다.
동부 간선 도로를 탄 뒤 의정부에서부터 국도 43호선만 죽어라고 타고 올라가면서 드디어 철원에 도착했다. 북쪽으로 갈수록 군부대가 수시로 눈에 띄기 시작했다.
편도로 약 85km를 달렸다. 고속도로의 혜택을 받을 수 없는 곳이기 때문에 가는 데 2시간이 넘지 않을까 예상했지만, 그래도 1시간 반 만에 잘 갔다.

처음 간 곳은 고석정 관광 사업소였다.
고석정 계곡은 예정에는 없이 시간이 남아서 들른 것일 뿐이었는데.. 경치가 끝내주게 아름다웠다. 하루 종일 날씨도 굉장히 좋았고 말이다.

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

다음으로 예매를 해 둔 패키지 안보 관광을 떠났다.
평일에는 허가를 받은 뒤에 민통선 안으로 자가용을 몰고 들어갈 수도 있는 반면, 인파가 몰리는 주말에는 셔틀버스만 들어갈 수 있다고 한다.

우리가 탄 버스는 어린 학생들까지 포함해 44개 좌석이 꽉 찬 만석이었다. 하지만 작년에 파주· 임진각· 도라산 역 일대는 외국인들도 많고 민통선 내부까지 완전 바글바글했던 반면, 여기는 우리 관광객 말고는 주변에 사람이 거의 없으며 조용하고 한산한 편이었다. 그 이유로는 여기는 파주보다 서울에서 더 멀고 교통이 불편하며, 또 황금연휴여서 사람들이 다른 곳으로 놀러 갔기 때문이 아닌가 싶다.
임진각으로 가는 길은 경의선 철도뿐만 아니라 자동차 도로도 신호 대기가 없는 자유로가 시원스럽게 뚫려 있다. 그러나 철원은 그렇지 않으니까 말이다.

버스는 지방도 464호선의 모 구간에서 좌회전하여 민간 지도에 나와 있지 않은 민통선 안으로 들어갔다. 여기서부터는 초소를 지날 때마다 군인이 수시로 탑승하여 탑승 인원 숫자가 맞는지 검문을 했다. 그리고 버스는 토교 저수지보다도 더 북쪽으로 남방 한계선으로 추정되는 철조망을 따라 쭉 오르막을 오르기 시작했다.

사용자 삽입 이미지

드디어 제2 땅굴의 입구에 도착했다.
제1 땅굴이 발견된 지 반 년이 채 되기 전에, 거기서(연천) 그리 멀지 않은 곳에서 더 깊고 더 큼직한 땅굴이 발견되었으니 국가적으로 얼마나 충격이 컸을까?

제3 땅굴은 열차로 드나드는 진출입로가 뚫려 있으며 제4는 터널 안까지 열차로 다닐 수 있는 반면, 제2는 땅굴 출입과 관련된 그 어떤 동력 시설도 없다. 그리고 내부의 길이도 제3 땅굴보다 더 길다. 그러니 오갈 때 발품을 좀 팔아야 한다.
땅굴 내부는 사진 촬영이 법적으로 금지되어 있다.

땅굴이라는 건 땅 속에 뭔가 빈 공간이 있다는 걸 감지하는 것이 별개이며, 그걸 찾아서 저지하려고 실제로 파 내려가는 게 또 별개이다. 우리나라에서 뚫은 출입로 땅굴에 들어가면, 북쪽으로도 길이 있고 남쪽으로도 길이 있다. 북쪽은 북한이 파 내려온 from 방향이고, 남쪽은 걔네들이 의도한 목적지 to 방향이다. 이 땅굴의 경우, 남쪽은 더 진행할 수 없게 길이 막혀 있고, 북쪽으로 약 500m 정도, 남방 한계선에 2~300m 앞까지 접근한 곳까지가 관광객에게 개방되어 있다고 한다. 사실 그건 제3 땅굴도 마찬가지다.

이 땅굴의 시점은 도대체 북한 어디에 있는 걸까? 쟤네들은 지하에 무슨 짓을 해 놨는지가 몹시 궁금해진다.
한반도가 통일되어서 땅굴도 남쪽 종점과 북쪽 종점이 모두 한데 뚫린 채로 역사 교육 현장으로 개방되는 날이 오길 기대해 본다. 물론, 여기서 말하는 통일이란 연방제니 나발이니 하는 말장난이 아니라, 김씨 부자 동상을 무너뜨리고 주체사상을 완전히 지워 버리는 제대로 된 통일을 말한다.

사용자 삽입 이미지

제2 땅굴을 탐사하고 저지하는 과정에서 이런 희생자가 있었다. 저기 나오는 계급은 아마 최소한 2계급 특진은 받은 것일 테고, 실제로 작업을 한 사람들은 다 병사 신분이었을 것이다.

내 기억이 맞다면, 제1 땅굴은 발견 직후 지하에 있던 북한군 인부와의 총격전으로 인한 전사자가 있었고, 제2 땅굴 탐사 중에 발생한 전사자는 내부에 있던 지뢰를 밟고 산화했다.
이런 경험을 토대로 제3 땅굴을 탐사하던 때는 딱히 사상자가 나오지 않았으며, 제4 땅굴을 탐사할 때는 사람 대신 군견이 희생되었다. 땅굴이 발견되고 위험 요소가 완전히 제거되어 안보 관광지로 개방되는 것조차도 다 이런 누군가의 희생이 따른 덕분인 것이다.

사용자 삽입 이미지

어라? 제2 땅굴을 발견하는 데에도 귀순자의 힌트가 기여했었구나.
땅굴이 북한 소행이라는 증거들은 제3 땅굴 소개 자료에도 거의 똑같이 있었던 걸로 기억한다.
쉽게 말해 북한은 NATM 공법으로 굴을 팠고, 우리나라가 그 땅굴을 관통하기 위해 따로 굴을 판 건 실드 공법과 비슷하다는 얘기인지?

사용자 삽입 이미지

1968년이면 땅굴이 발견되기 한참 전이었고 서울 근처와 강원도 일대에 온통 무장공비들이 출몰하던 무시무시한 시절이다. 그런데 북한이 그때부터 벌써 땅굴을 팔 생각을 하고 그 땅굴의 남한 쪽 출구를 어디쯤에다 낼지를 생각했다니 이건 뭐 흠..?
그나저나 저 사살된 간첩의 임무가 그런 것이었다는 건 어떻게 알아냈는지가 궁금하다.

땅굴 구경을 마친 뒤, 남방 한계선과 DMZ가 코앞인 평화 전망대로 갔다. 동송 저수지 근처이니, 구글 지도에서 위치가 어디인지는 이제 알겠다. (그나저나 철원에는 다른 곳에 승리 전망대도 있다고 그런다.)

(to be continued)

Posted by 사무엘

2014/05/09 08:21 2014/05/09 08:21
, , , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/960

4. 내세

제아무리 불신자 무신론자라 해도 죽음을 두려워하지 않는 사람은 별로 없다. 하지만 죽음 이후의 세계는?
이건 마치 “목 잘린 직후의 느낌이 어떻냐”만큼이나.. 체험해 본 사람이 이 세상에 살아 있질 못하니 실험으로 입증할 수 없다. 당연히 과학적인 방법론이 접근할 수도 없으며, 사람들이 제각각 자기 종교관에 의지해서 신념을 가질 수밖에 없다. 윤회· 환생이든, 완전 소멸이든, 하늘과 지옥이든 그 무엇이든지 말이다.

이 분야는 불가지론의 영역이다 보니, 옳다 그르다 같은 감정 싸움은 딱히 없다. 뭐, 굳이 하나 지적하자면 “예수 안 믿으면 다 지옥 간다니 너네 종교는 참 편협하고 배타적이다” 정도의 딴지만 있을 뿐.
그러나 그건 협박이나 공갈이 아니다. 공의로운 하나님이 죄를 심판해서 죄인을 지옥에 보낸다는 거지, 그 말을 전하는 크리스천이 다른 사람을 제멋대로 해코지 차원에서 지옥에 보낸다는 말이 아니다. 그 교리가 안 믿어지면 그냥 개인적으로만 안 받아들이고 안 믿으면 된다.

그리고 기독교의 내세관은 그 배타적인 것 딱 하나만 받아들이고 넘기면, 나머지는 생각보다 굉장히 뒤끝 없고 깔끔하고 건전하다! 이건 내가 자신 있게 말할 수 있다. 귀신 없고 미신 없고, 산 자와 죽은 자 사이의 교류 없고, 죽은 사람 갖고 현질(=돈 내라)을 유도하는 지긋지긋한 종교 장난질이 없다! 그 대신 부활의 소망만이 있을 뿐이다.

이 점을 곰곰이 생각해 봐야 한다. 사람이 죽고 나서 혼이 소멸하고 모든 게 그대로 끝이라면... 내가 단언하는데 이 세상을 지금처럼 힘들게 살 필요라고는 눈꼽만큼도 조금도 없다~~!!! 자살이 전혀 죄가 될 필요가 없다. 누구라도 쉽게 내릴 수 있는 결론이다.

5. 보편적인 윤리

기독교가 가르치는 성경적 윤리관은 어지간한 세상 사람들이 ‘진보 트렌드’라고 생각하는 것들과는 완전 정반대인 수구꼴통(?) 성향이라고 생각하면 정확하다.
일단 필요악이라고 여겨지는 것에는 다 긍정적이다. 사형제, 체벌, 나라 지키는 군대, 공권력 같은 것. 절대적인 선악 기준이 없을 때는 마치 “닭이 먼저냐 계란이 먼저냐”처럼 흉악범의 인권이 더 중요한지 피해자 유족의 인권이 더 중요한지를 제대로 판단하기 어려울 때가 있다. 그러나 하나님의 입장은 단호하기 때문이다.

사형제가 있어서 범죄가 줄어들었느냐, 범죄자의 교화는 어떡하냐 그딴 건 하나님의 관심사가 아니다. 성경의 판결은 “흉계를 품고 사람을 고의로 죽게 한 사람은 이 땅에서 살 자격이 없다.” / “ ‘살인하지 말라’를 어기는 자는 반드시 죽일지니라”인 것이다. “너 고소”가 아니라 “너 죽어”다. 신구약을 막론하고 동일하다.
흉악범도 개인적으로야 예수 믿고 구원받을 수 있지만, 법적으로는 형벌에 의해 세상 하직해야 한다. 자기 목숨 바쳐서 피해자 유족들의 한을 풀고 자기 피로 땅을 깨끗하게 해 준 뒤, 빨랑 하늘나라 가야 된다.

그리고 성(sex) 관념도 진짜 깔끔하다. (1) 결혼한 (2) 남자사람과 (3) 여자사람이 하는 것 말고는.. (1)부터 (3)까지 한 단서라도 누락되거나 바뀐 것은 전부 음행, 죄악이고 그것도 굉장히 큰 죄이다.

이런 법칙들이 온갖 인간적인 부조리와 모순을 핑계로 문란해지고 무너졌다고 해서 인권이(특히 여성 인권) 실질적으로 향상되거나 하지 않는다. 그 대신 야금야금 “가정이 무너지고 사회가 무너지고” 헬게이트만이 열릴 뿐이다. 당장 당신의 부모님이 당신을 낳은 뒤 책임감 있게 가정을 꾸리지 않았다면 지금과 같이 성장한 당신이 있을 수 있었겠는가?

물론 이 사실을 인정하지 않는 사람들과는 늘 이상한 통계 자료나 주고받으면서 답 없는 쳇바퀴 같은 논쟁이 벌어지곤 한다.
이 윤리관의 경우, 다른 창조/진화나 성경 같은 이슈와는 달리, 굳이 크리스천이 아니어도 단순히 보수적인 성향 때문에 크리스천과 동일하게 생각하는 사람도 있을 수 있다. 그러나 요즘 같은 시대에 그런 경우는 매우 드물 것이다.

6. 예수님의 부활

위에서 소개된 여러 아이템들도 중요하지만, 뭐니뭐니해도 기독교와 비기독교를 가르는 가장 크리티컬한 변수는 바로 예수님의 부활에 대한 인식이다!

세속 백과사전이나 세계사 만화, 인명 사전, 위키백과 같은 데서 ‘예수’를 찾아 보시라. 제아무리 개독안티라 해도 예수라는 인물 자체가 허구라고는 안 그런다. 그건 역사적 증거가 너무 분명해서 누구라도 부인할 수 없는 사실이다.
그러나 열이면 열 다 십자가에 못 박혀 죽었다는 얘기로 끝난다. 아니면 부활까지도 소개는 하지만 “성경이라는 책에 따르면 그랬다고 한다, 기독경에 따르면 그랬다고 전해진다”라고 단서는 꼭 붙이고서, 우리는 저 진술에 책임 안 진다는 식으로 매우 조심스럽게 말한다. 내 말이 맞는지 틀린지 직접 확인해 보아라~!

“십자가에 못 박혀 죽고 묻혔다가 장사된 지 사흘 만에 부활했다”라고 쓰는 순간 그 책은 객관성을 잃고 특정 종교 집단의 교리를 대변하는 경전(?) 내지 간증집이 돼 버리기 때문이다. 부활이 역사적으로 진짜 사실인지 아닌지는 이 시점에서 관심사가 아니다.

정체불명의 위경이나 이상한 사료를 토대로 이 예수님의 부활 사건을 부정하려는 시도가 없지는 않았다. 예수는 사실 완전히 죽지 않고 기절해 있었으며, 나중에 제자들의 도움으로 무덤을 탈출한 뒤, 막달라 마리아와 결혼해서 후손을 남기고 죽었다는 얘기까지 지어낸 개독안티가 고대로부터 있었다. 고대의 철학자나 석학들도 현대의 지성인 무신론자보다 지성과 지능이 떨어지는 사람들이 결코 아니었다.

그러나 그런 얘기는 얼마 못 가 쏙 들어갔다. 지금도 예수 부활을 공격하는 얘기가 강경한 개독안티 커뮤니티 위주로 없지는 않으나, 그래도 성경 자체에 대한 공격 내지 창조/진화보다는 강도가 “훨씬” 덜하다. 이 주제는 너무 민감한 나머지 마치 ‘내세’만큼이나, “진실은 저 너머에” 수준으로 그냥 쉬쉬 하는 분위기다.

그야말로 오합지졸 겁쟁이었던 예수님 제자들이 불과 수십 일 만에 예수 전하느라 죽음도 두려워하지 않는 역전의 용사로 뒤바뀐 것, 고대로부터 수많은 신자들이 자기 목숨을 초개같이 버리면서 믿음을 지킨 것, 더 나아가 오늘날까지 기독교회가 수백, 수천 년을 찬양하고 경배하며 우려먹는 레퍼토리이자 복음의 핵심 근거가 바로 예수님의 부활이다. 새마을호 열차에서 Looking for you가 흘러나온 사건 따위하고는 비교가 안 된다.

그게 호락호락 정면으로 뒤집히고 반박당할 것 같은가? 아예 예수님을 비롯해 사도들의 존재를 송두리째 다 무시하고 부정하지 않는 이상, 부활만 쏙 부정하기란 대단히 어렵다. 예수님이 기절했다가 주변의 도움으로 무덤을 탈출해서 살아난 거라면 제자들이 그걸 모를 수가 절대 없었을 텐데, 겨우 그런 예수님을 보고는 역전의 용사로 바뀌고 예수님의 부활과 승천을 담대히 증언하다가 순교까지 했다고? 에라이..

모르긴 몰라도 아폴로 계획 달 탐사 자작극 음모론을 반박하는 것만큼이나 예수 기절설 같은 건 단박에 반박 가능할 것이다. 법학자로서 무신론· 회의론자이다가 예수님의 부활이 법적으로 너무 분명하고 확실한 사건이라는 걸 발견한 사이먼 그린리프 같은 사람은 과연 무엇을 알아낸 것인지가 궁금해진다. 그리고 이 예수라는 인물이 정말 부활했는지의 여부에 따라, 성경 전체의 실질적인 진위 여부와 여러분의 혼의 미래까지 180도 달라질 수 있다!

※ 결론

잠시 눈을 돌려 국가와 국가 사이의 분쟁을 좀 생각해 보자.
우리나라는 당장 북한과 휴전 상태이고 대립 상태이다. 물론 365일 24시간 내내 긴장만 하고 있으면 너무 피곤하고 피차 좋을 게 없으니, 가끔은 대화도 시도하고 화해 무드도 만들려 노력한다. 그러나 둘은 근본적으로 통치 체제와 지향하는 바가 180도 완전히 너무 다른 정치 집단이며 상대방을 적대적으로 보고 있다. 그러니 이 상태로는 둘은 도저히 절대로 하나가 될 수 없다. 하나가 다른 하나를 잡아먹지 않으면 안 된다.

그리고 우리나라는 일본하고도 미묘한 애증의 관계가 있다. 경제 쪽으로는 분명 협력과 공존 관계이며, 개인적으로야 한국인과 일본인이 좋은 관계를 유지하고 있는 경우가 매우 많을 것이다.
그러나 정치적으로 한국과 일본은 독도 때문에 여전히 대립하고 있고, 과거사 문제도 해결 기미가 안 보인다.

바로 이런 세상 국가들의 정치적 분쟁과 비슷한 맥락으로..
개인간의 영적 세계에는 예수님을 두고, 생명의 기원을 두고, 성경을 두고 다양한 분쟁 지대가 존재하고 있다. 이것도 일시적인 휴전 상태일 뿐, 완전한 종전이 아니다. 기회가 되면 이 불씨는 언제든지 대형 화재로 번질 수 있다. 크리스천은 불신자와는 얼마나 넘사벽급으로 다른 사고방식을 갖췄는지 자신의 영적 정체성을 잊지 말아야 한다.

물론 그렇다고 해서 이건 혈과 육의 싸움이 전혀 아니다. 그러니, 이런 걸로 신자와 불신자끼리 감정적으로나 물리적으로 싸운다거나, 한 신념을 남에게 폭력과 협박으로 강요한다거나, 그걸 인간의 존엄성과 관련된 차별의 근거로 활용한다거나 해서는 정말 절대로 안 된다. 크리스천은 다른 불신자와도 ‘가능한 한’ 화목하게 지내야 한다(롬 12:18).

그런데.. 종교 쪽 논쟁은 서로 싸워 봤자 별로 답도 안 나오고 서로 말도 안 통하고 감정만 나빠진다고 해서 아예 완전 입 다물고 말을 말고 “너는 네 식대로 믿어라. 나는 내 식대로 믿는다”고 선을 마냥 그을 수도 없는 노릇이다. 성경의 판결대로라면 이건 또 다른 극단이며 크리스천의 직무유기죄로 빠진다. 성경을 읽다 보면, 현실과 너무 동떨어진 진술로 인해 그럼 도대체 뭐 어쩌라는 건지 싶은 딜레마가 느껴질 때가 왕왕 있다.

이런 문제의식이라도 느낀 적이 있는 사람이라면 크리스천으로 최소한의 영적 생명력은 갖췄다고 하겠다.
그런데, 나라고 해서 뾰족한 수가 있는 게 아니고, 모든 분야에서 개독안티와의 어떤 논쟁도 다 이길 방대한 지식을 갖춘 것도 아니다. 그리고 비록 악의적인 의도는 아니었지만 왕년에 간증 잃을 병맛 같은 행실도 많이 남겼다. 게다가 나 또한 하나님의 모든 사고방식이 다 이해가 되는 것도 아니다.

그래도 성품을 다듬고 내 행실을 통해 예수 그리스도가 전해지도록, 오늘은 어제보다는 더 나은 모습을 보이도록 간구하고 노력을 할 뿐이다. 최소한 상대방이 복음이 무엇이고 기독교 교리가 무엇인지 알기는 제대로 알고서 거절하든가 반대하지, 삐쳐서 마음을 확 닫아 버리는 일은 없게 내 말에 너를 ‘위한다’는 진심을 담으려 노력한다.

사실, 불신자가 예수 믿기 위해서 지금 당장 안 믿어지는 창조론이라든가 하나님의 경륜을 납득해야 할 필요도 없고, 자기 힘으로 술· 담배를 끊어야 할 필요도 없고, 성경관· 윤리관 같은 사상을 인위로 개조해야 할 필요는 없다. 그런 노력이 구원의 조건이 아니다. 불신자의 입장에서 구원을 위해 당장 가장 중요한 건 4번과 6번일 것이다. 일단 예수님을 받아들이고 그분을 사랑하는 마음이 생기면 나머지 믿음은 추가로 공급된다.

그러니 길거리에서 복음 전하다가 불신자가 1~3, 5번 같은 걸 갖고 불필요하게 논쟁을 걸면서 시간을 끌면, 적당히 커트를 하는 기지도 발휘해야 한다. 그런 데에 끌려가면 힘만 빠지지 결론 절대 안 난다.

결국 미우나 고우나 이 모든 걸 할 수 있는 전능한 하나님께서 유한하고 부족하고 여건마저 제각각 불공평(?)하게 타고나는 사람에게서 원하시는 것은.. 다른 육신적인 스펙이 아니라 ‘믿음’으로 귀착된다. 인간에게 정말로 필요한 건 그래도 공평하게 해 놓으셨기 때문에 하나님이 공평한 거다.

기독교는 처음에 잘 이해가 안 되는 몇몇 전제조건 아이템만 믿음으로 받아들이고 나면 그 뒤에는 나름대로 상당히 건전한 원칙과 일관성과 체계가 잡혀 있다. 크리스천들은 그걸 세상에 전해야 한다. 그리고 안 믿는 건 개인 자유인데, 성경의 가르침이 아니고 기독교가 아닌 걸 남들이 기독교라고 부를 권리는 없다는 것도 분명히 전해야 한다. 이렇게 영적 전투를 치르는 것이 신자의 권리이자 의무일 것이다.

Posted by 사무엘

2014/05/06 08:28 2014/05/06 08:28
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/959

크리스천의 사고방식은 불신자의 사고방식과 무엇이 다르며, 우리는 이를 어떻게 대처해야 할까?

1. 신의 존재

사실, 신의 존재 여부 자체는 과학적 방법론으로 증명도 부정도 할 수 없으며, 그런 방식으로 논쟁을 하는 게 가능하지 않다. 그러니 이 분야는
“직접 관찰한 적이 없으니 신은 없다고? 그럼 너는 네 뇌를 직접 관찰한 적이 없으니 무뇌아냐?” 라든가
“현대 과학이 아직도 밝혀내지 못한 무수한 미지의 영역에 신이 전혀 없을 거라고 확신 가능하냐?” 같은
당장 틀린 말은 아니지만 추측+아전인수격의 유치한 논쟁에서 크게 더 나아가질 못한다. 이런 진흙탕 싸움에 이골이 난 사람은 보통 불가지론에 빠지게 된다.

창조과학 같은 데서는 우주와 지구와 자연의 정교함과 아름다움을 예로 들면서 그게 확률과 우연으로 절대로 될 수 없다는 직관을 많이 내세우는 편이다. 그건 성경적인 근거가 있으며(롬 1:19-20), 나 역시 직관과 양심에 근거하여 그 논조를 큰 틀에서 '지지'한다.

그러나 자연 계시는 과학적으로 온전하고 엄밀한 방법은 아니라는 것 역시 인정한다. 수학으로 비유하자면, 10의 무려 1500승까지 찾아 봤는데도 없었다고 해서 홀수 완전수가 아예 전혀 존재하지 않는 게 증명된 건 아니라고 하니까. 단지, 한 혼을 움직이고 예수님께 인도하기 위해서 굳이 과학적으로 온전하고 엄밀한 방법을 꼭 찾아야 할 필요는 없다는 걸 경험적으로 알 뿐이다.

또한, 같은 논리를 동원하자면, 자연에는 아름다운 것뿐만 아니라 틀어지고 망가지고 있는 것도 있고 처참한 살육과 약육강식도 있다. 온갖 나쁜 병균, 기생충도 있고 바이러스도 있다.
이 세상에는 전능하고 공의로운 신이 정말 존재하기는 한지 “불신자의 입장에서는”, 그리고 때로는 신자의 입장에서도 충분히 의구심이 들 정도로 끔찍하고 참혹한 일, 불의한 일, 억울한 일도 많이 벌어진다. 물론 그런 것을 성경적으로 설명하는 방법도 없는 건 아니나, 그걸로 영적 안목이 없는 불신자를 당장 충분히 설득 가능하지는 않다.

요컨대 신의 존재 자체에 대한 의문은 자주 불거져 나오긴 하지만 과학적 측면보다는 저런 명분론· 변증법(?)적인 측면에서 더 제기되는 편이다. 그리고 아무리 기독교회가 배도하고 타락하고 자유주의로 빠진다 해도 자기 존재 이유를 성립시키는 신 자체를 대놓고 부정할 정도로 막장으로 가지는 않을 것이다. 단지 껍데기만 유지한 채 변질만 되며, 하나님을 가르치긴 하나 그분의 성품을 완전히 왜곡해서 가르치게 될 뿐이다.

2. 창조-진화

여기는 과학이라는 미명 하에 진흙탕 싸움이 본격적으로 제일 치열하게 벌어지는 곳이다.
기원이라는 것도 어차피 실험으로 정확하게 재연 가능한 건 아니며, 단지 과학적 방법론을 동원해서 마치 범죄 수사처럼 과거엔 아마 이랬을 거라고 재구성과 추적만을 할 수 있을 뿐이다.

성경은 과학책이 아니며 학술논문 스타일로 쓰여진 책도 아니다. 그러나 건전한 신자라면, 성경에 양념으로 기록되어 있는 과학적 사실들은 모두 문자 그대로 참이라고 믿는다. 실제로 성경이 최소한 당대의 다른 문헌에 ‘비해서’야 과학적 통찰력이 아득히 앞서갔으며 성경 저자의 식견만으로는 도저히 기록할 수 없는 진술이 존재하는 건 사실이다. 그 성경이 너무나 평이하게 신의 존재만큼이나 당연한 듯이 창조를 말하고 있긴 하다.

그러나 그 성경을 읽고 믿는 신자들의 한계는 솔직히 인정하고 넘어가야 한다. 가령, 성경에 아무리 ‘땅의 원 위에 앉으신 분’(사 40:22), ‘땅을 허공에 매다시고’(욥 26:7), ‘낮과 밤이 동시에’ 같은 구절이 있었다고 해도, 그렇다고 해서 고대의 크리스천들이 성경만 읽고서 세속 과학자들보다 더 일찍부터 지구가 둥글다는 걸 선뜻 알아채지는 못했다. 또한 창세기 1장의 연대기 문제는 같은 믿는 신자들끼리도 진영간에 견해가 일치하지 않고 있다.

아 뭐 그렇다고 해서 창조를 믿는 성경 신자들이 너무 쫄거나 위축될 필요는 없다.
저쪽 사람들은 창조론자를 어떻게든 바보로 만들기 위해 약간 비논리적인 비약, 비과학적인 표현, 팩트 오류 같은 것만을 찾아내어 집요하게 공략한다. 그리고 자기에게 유리한 전제조건을 벗어나려 하지 않는다. “그럼 너의 천 대 만 대 조상은 확실하게 원숭이나 아메바냐?” 같은 원초적인 질문을 절대로 정면돌파하지 않는다는 뜻이다. 그러니 공정한 대결이랍시고 그 함정 설정에 필요 이상으로 말려 들어갈 필요 없다.

진화론자는 어차피 기원에 대해서 딱히 이렇다 할 시나리오를 갖추고 있는 게 아니다. 일단 원시 생명체가 있으면 거기서부터 진화가 가능하다는 얘기다. 그러나 실험실에서 아주 제한되고 미시적인 맥락에서 유기물이 합성됐거나 대진화가 관찰· 재연된 것은, 수많은 놀라운 지능을 선천적으로 갖고 있는 실제 자연의 생물들과는 여전히 엄청난 괴리감이 있다. 그리고 “인간이 원숭이로부터 진화했다”든, “인간과 원숭이가 공통 조상으로부터 진화했다”든 이거나 저거나 본질 개념상으로는 차이가 없는 진술일 뿐이다.

일상생활에서야 “A가 틀렸으니 B가 자동으로 맞다” 같은 논리 전개는 억지가 맞다. 그런데 기원은 솔직히 A, B 말고 다른 대안이 없는 거나 마찬가지잖아. 글쎄, 기어이 빠져나갈 구멍을 만들자면 만들 수는 있다. “신이 창조하긴 했을지 모르나 그게 꼭 너희들이 믿는 여호와 하나님이라는 보장은 없잖아” 같은 식으로 들이댈 수 있겠는데.. 그렇게까지 무슨 수를 써도 절대로 안 믿기로 작정한 사람까지 굳이 설득하려 애쓸 필요는 없을 것 같다. 서로 감정만 나빠진다.

3-1. 성경의 보존과 번역

창조-진화가 자연과학 쪽의 전쟁터라면, 여기는 언어학, 고고학 같은 인문계 영역의 전쟁터이다. 사실은 기독교의 근간을 구성하는 성경 자체에 대한 공격이야말로 제일 치열하고 집요하고 처절하다. 인류 역사상 성경만치 공격을 많이 받아 온 문헌이나 종교 경전은 존재하지 않는다.

일단 (1) 성경이 자필 원본 이래로 지금까지 온전하게 보존됐을 리가 없다고 공격하고, (2) 그 원문이 있다 해도 그 뜻을 우리가 제대로 알 수 없어서 완벽한 번역이 있을 수 없다고 공격한다. (1)은 원문 계층이고 (2)는 원어 계층 되겠다. 그리고 불행히도 이건 교회 댕기고 예수 믿는다는 사람들, 심지어 목사, 신학자라는 사람들까지 그 공격에 고스란히 넘어가서 불신자· 기독안티와 다를 바 없는 성경관을 갖고 있는 경우가 부지기수이니 이를 도대체 어쩌면 좋을까?

그런 허접한 텍스트를 근거로 어떻게 성경은 영감 받은 하나님의 온전한 말씀이라고 가르칠 수 있으며, 안 그래도 요즘 교회 이미지가 바닥을 치고 있는데 세상을 상대로 감히 복음 전하고 예수 믿으라고 전할 수가 있는가? 당신이 믿는 그 영감 받은 온전한 말씀은 도대체 무슨 성경이며 지금 우리 손에 있긴 한가? 문체 수준이 아니라 서로 번역과 내용이 제각각인 성경들 중에 무엇이 진짜 옳은 말씀이란 말인가?

킹 제임스 성경을 최종 권위로 믿는 진영은 이 문제에 관한 한은 확실한 정답을 가지고 있으며 비판에 대한 대안을 갖추고 있다. 오늘날의 학자들을 믿느니 차라리 400여 년 간의 선한 열매가 분명히 있는 옛 성경 역본을 믿는 것이다.

이 사람들은 자기 이익을 위해 기독교계에 다툼과 분열을 야기하는 고집쟁이 전투종족 집단이 절대로 아니다. 기독교를 믿을 거면 제대로 믿으려고 모 아니면 도 신앙 노선을 추구하며, 크리스천의 신앙을 최전방에서 방어하는 건전한 사람들이라고 봐야 한다. 복음을 전할 때는 예수 안 믿으면 다 지옥 간다고 완전 과격하고 배타적이고 편협하게 가르치면서, 성경이 특정 한 역본 말고 다른 내용은 다 잘못됐다는 지극히 당연한 팩트는 왜 그리도 받아들이기가 어려운가?

성경은 그저 내용 요점만 두리뭉실하게 적혀 있는 도덕 경전이라고 취급하기에는 너무 엄청나고 과격한 내용도 많이 들어있다. 정확도와 신뢰도가 보장되지 않는다면, 그 성경이라는 책이 말하는 내용들은 그저 판타지일 뿐 진지하게 믿을 가치가 없다!

3-2. 성경의 무오성과 해석

앞의 (1)과 (2)를 통과했다 하더라도 (3) 팩트와 해석 차원의 공격도 무진장 많다. 왜, (a) 성경에 오류와 모순이 잔뜩 있다는 태클들 말이다. 사복음서간에 뭐가 일치 안 하고 동일 사건에 대한 진술이 이랬다 저랬다 한다는 내부 모순이 있으며, 세속 역사 문헌 어디에도 요셉이나 모세나 출애굽 사건, 예루살렘 성전에 관한 기록은 존재하지 않아 고증이 안 맞다는 식의 외부 공격도 있다.
또 (b) “여자는 교회에서 잠잠하라”라든가 “가나안 민족들을 모조리 진멸하라”, “고환이 상한 자는 주께 나오지 못할지니라” 이런 것만 뚝뚝 떼어 와서 하나님이 인종 차별적이고 잔인하고 뭐 같다고 이상한 딴지 거는 얘기들도 한둘이 아니다.

어디 그 뿐이랴? 이제는 아예 (c) “성경 어디에도 예수 말고는 구원의 길이 없다거나, 예수가 자기 안 믿는 사람은 다 지옥 보내 버리겠다는 공갈을 한 적은 없다”고 교리를 제멋대로 정반대로 재해석하는 사람도 있다. 이런 난독증 수준의 억지에 비하면 “모세는 진짜 홍해를 횡단한 게 아니라 근처의 갈대밭을 건넌 거다”는 차라리 애교처럼 보인다.

이런 사람들의 얘기에만 끌려가다 보면.. 기독교와 바이블은 진작에 외면받고 사라지고 소멸했을 것 같은데 지금까지 존속해 있는 게 신기하게 느껴지고 내가 정말 어지간히 ‘쎈 걸’ 믿고 있는 게 아니라는 걸 느끼게 된다. 읽으라고 부탁하고 간청을 해도 안 읽을 재미없는 책을 옛날에 악의 무리들은 왜 그리도 없애려고 발광을 했으며, 그 책을 소지하거나 읽느라 순교까지 당한 바보들은 어떻게 존재할 수 있었던 걸까?

성경에는 왜 그렇게 적혀 있는지 정말로 알 수 없는 의문 구절도 일부 없지는 않다. 그러나 그것 말고 (a)에 속하는 상당수의 딴지들은 이미 반박과 해결책이 다 알려져 있으며, (b)도 교회와 이스라엘의 구분, 경륜 구분 같은 걸로 바르게 나누고 분간하면 성경에 왜 그런 무지막지한 말이나 모순점이 있으며 그것이 우리에게 직접적으로 적용되지 않더라도 최소한 어떤 의미를 갖는지를 오류 없이 거의 다 명확하게 알 수 있다.

(c)는...? 대꾸할 가치도 없을 것 같다. 입만 아프다. 믿어지지 않고 믿기 싫으면 전체를 거부하고 안 믿으면 된다. 단지 취사선택을 하지 말고, 비기독교적인 자기 신념을 기독교라고 우기지만 말았으면 좋겠다.

재미있는 떡밥을 하나 남기면서 이 주제를 마무리 짓도록 하겠다. 생명의 기원만큼이나 인간의 언어의 기원도 아무도 모른다는 점이다. 이건 화석이나 방사선 원소 연대 측정조차도 동원할 수 없는 물건이다 보니, 오늘날 언어학계에서는 언어의 기원은 그냥 불가지론으로 간주하고 함구하고 있다.

Posted by 사무엘

2014/05/03 08:25 2014/05/03 08:25
,
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/958

GetMessage는 Windows 프로그래밍에서 윈도우 message loop을 구현할 때 쓰이는 함수이다.
이 함수는 명목상 리턴값이 BOOL이며, 평소에는 nonzero를 되돌리다가 WM_QUIT가 접수되어서 응용 프로그램이 종료되어야 할 때 FALSE가 된다.

그러나 이 함수의 리턴값이 이것이 전부가 아니다.
정상적으로 한 메시지를 끄집어 왔을 때는 nonzero이긴 한데 양수이며, argument가 올바르지 않다거나 해서 함수의 실행 자체가 실패했을 때는 음수 -1을 되돌린다.

그렇기 때문에 메시지 loop을 while( GetMessage(&msg, NULL, 0, 0)) { }  이런 식으로 구현하면, 메시지를 아예 가져오질 못했는데도 loop의 조건이 만족되며 프로그램은 무한 루프에 빠진다.
!=0으로는 불충분하니, 반드시 while( GetMessage(&msg, NULL, 0, 0) >0)이라고... >0을 명시해야 한다.

(1) 이 함수 말고도 타입이 BOOL인데 사실은 TRUE/FALSE라는 순수한 흑백 논리값 말고 다른 의미 있는 값도 되돌리는 페이크 BOOL 함수가 또 있었던 것 같으나, 당장은 기억이 안 난다. 이런 지저분한 이슈도 있고, 또 Windows API의 기반 언어인 C가 어지간한 건 그냥 machine word 정수로 처리하는 관행이 있기도 하니(문자 상수의 크기도 char이 아닌 int!), 프로그래밍에서도 BOOL은 C++의 bool이 아니라 그냥 int에다 대응시켜 놓은 것 같다.

(2) COM에도 이와 비슷한 얘깃거리가 있다. HRESULT는 원래 0과 양수가 '성공'을 나타내고, 음수가 실패를 나타낸다. 하지만 현실에서는 대부분 그냥 hr==S_OK (0) 여부만으로 성공/실패 여부를 판단한다.
거의 모든 COM 인터페이스 함수들은 실행이 성공했을 때 어차피 S_OK라는 단일한 값만을 되돌리기 때문에 이것이 현실에서 당장 크게 문제가 되지는 않는다. 그러나 원칙적으로는 어지간해서는 hr==S_OK를 쓸 곳에 SUCCEEDED(hr)을 써야 한다. 이것은 hr>=0 여부를 체크하는 매크로이다. hr!=S_OK를 대신해서는 FAILED(hr)이 바람직하고 말이다.

음수도 아니고 0도 아닌 대표적인 리턴값은 S_FALSE이다. 이것은 해당 함수가 의미 있는 동작을 하지는 않았지만 어쨌든 오류가 발생했거나 실패한 상황도 아닐 때 돌아온다. 가령, 뭔가 객체를 enum하고 있는데, 포인터가 이미 끝에 도달해서 더 fetch할 게 하나도 없으면 보통 &ulFetched는 0이 돌아오고 함수 리턴값은 S_FALSE가 된다. 하나라도 fetch된 게 있으면 S_OK이고 말이다.
따라서 이 경우, loop의 종료 조건을 지정하려면 SUCCEEDED와 더불어 fetch된 개수도 체크해야 한다.

(3) 다시 GetMessage 얘기로 돌아온다.
얘는 메시지를 수집하는 윈도우, 그리고 필터링할 메시지의 최소값과 최대값을 인자로 받는다. 하지만 PeekMessage도 아니고 GetMessage에다가 뭔가 동작의 범위를 제한하는 유의미한 값을 지정하는 것은 사실상 거의 쓸데없는 짓이다. 언제나 NULL, 0, 0을 하는 게 맞다. (레이몬드 챈 선생도 인증한 사실임)

이 함수는 뭔가 메시지를 얻을 때까지 실행이 끝나지 않고 계속 기다린다. 어떤 GUI 프로그램이 실행되면 굳이 자신이 아니어도 그 스레드 소속으로 남이 생성한 각종 잡다한 윈도우가 붙는다. 이들 윈도우도 메시지 큐로부터 메시지를 받아야 하는데, GetMessage에다가 필터링을 걸면 해당 윈도우는 메시지를 받지 못하며 그 동안 우리 프로그램도 실행되지 못하게 된다. 쉽게 말해 deadlock에 빠진다.

따라서 아무 윈도우로 전달된 아무 메시지라도 일단은 받아서 윈도우 프로시저로 Dispatch를 시켜야 한다. 정 특정 메시지만 필터링을 하고 싶다면 아까도 말했듯이 PeekMessage를 쓰는 게 훨씬 더 안전하고 바람직하다. 얘는 그래도 한 번만 체크 후 실행이 곧장 끝나기라도 하니까 말이다.

Posted by 사무엘

2014/04/30 08:31 2014/04/30 08:31
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/957

« Previous : 1 : ... 133 : 134 : 135 : 136 : 137 : 138 : 139 : 140 : 141 : ... 221 : Next »

블로그 이미지

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

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2024/12   »
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:
3051137
Today:
2157
Yesterday:
2142