다음 버전 개발 근황

오랜만에 또 <날개셋> 한글 입력기의 다음 버전 개발 근황을 올릴 때가 됐으니 관련 소식을 전하도록 하겠다.
이제 <날개셋> 한글 입력기는 7.x 후반이나 8.0에서 진짜로 고정판, 최종 완성판에 도달하는 걸 목표로 하고 있다. 고지가 얼마 안 남았다. 그 뒤로는 그냥 그때 그때 생각 난 기능이나 버그 수정 정도로만 유지 보수가 될 것이다. 그리고 신규 기능 개발보다는 이미 만들어 놓은 기능에 대한 홍보와 문서화, 포팅에 더 비중을 둘 것이다.

지난 7.4와 7.5는 한글 입력 엔진 쪽을 갈아엎느라 GUI 부분을 살펴볼 여유가 상대적으로 부족했다. 그래서 7.5를 공개하자마자 지체없이 다음과 같은 작업이 진행되었다.

1. 다국어 UI 지원 체계 개편

<날개셋> 한글 입력기가 허접하게나마 다국어 GUI를 지원한 건 2.32 버전부터였다. 그러나 영어 한 언어로 한정이었고 편집기 프로그램만 임시방편으로 지원하는 것이었다.
그러다가 2007년에 나온 4.55 버전부터 자체적인 다국어 UI 컬렉션 파일과 함께 임의의 언어를 지원하는 길이 열렸다. 물론 구조만 그렇게 만들어 놨지, 지금까지 실질적으로 제공된 외국어는 영어 하나뿐이긴 했지만 말이다.

하지만 그 구조는 완전하지 못했다. 고유 포맷을 사용하는 다국어 UI 컬렉션 파일은 자작한 툴을 이용해서 비교적 복잡한 과정을 거쳐야만 생성할 수 있어서 비효율적이었다. 그리고 그 파일에 모든 외국어 UI가 들어가는 건 아니었으며, 기존 Help, Dic 같은 데이터 디렉터리에 다국어 구분이 필요한 파일과 그렇지 않은 파일이 섞여 있었다.

프로그램 디렉터리 한 곳에다가 압축만 쭉 풀어 줌으로써 중국어나 일본어 같은 새로운 언어를 손쉽게 추가할 수 있게 하는 게 내 목표였는데.. 실질적으로는 그렇게 되지 못했다.
그래서 다 바꿨다.

일단 언어 식별을 kor, eng 같은 자체적인 명칭으로 하는 게 아니라, 1033 (영어 미국), 1042 (대한민국) 같은 운영체제가 사용하는 숫자를 그대로 따르도록 하고, 'lang/숫자' 아래에.. Help나 Dic 같은 디렉터리를 다시 둬서 언어 구분이 필요한 파일들이 들어가게 했다. 언어 구분을 파일 이름으로 하는 게 아니라 한 디렉터리 아래에서 한꺼번에 되게 한 것이다.

그리고 고유 포맷을 사용하는 파일을 버리고 각 모듈별로(ngs3, ngsedit 등) 역시나 전통적인 리소스 DLL을 사용하게 했다. 리소스 DLL은 비주얼 C++ 같은 툴에서나 손쉽게 고치고 생성할 수 있다.
이걸 뜯어고치는 과정에서 프로그램 내부의 여러 부분을 리팩터링하고 잠재적 버그들을 고쳤다. 특히 프로그램의 주 인스턴스 핸들과 리소스 DLL 핸들 사이의 구분이 더욱 엄밀하게 바뀌었다. 예전에는 별도의 파일을 썼으니 그 정도 구분이 필요하지 않았기 때문이다.

단적인 예로, 대화상자를 생성할 때 별 생각 없이 넘겨 주던 인스턴스 핸들은 리소스 DLL이 아니라 자기 프로그램의 인스턴스를 넘겨 줘야 한다. 안 그러면 자기 프로그램이 만든 내부 custom control (CS_GLOBALCLASS가 지정되지 않은 것)조차도 생성되지 않는 참사가 벌어진다.

언어 구분이 없는 리소스이기 때문에 FindResource만 쓰면 되는 부분과, FindResourceEx로 반드시 구분을 해야 하는 곳도 용례를 다시 살펴봤다. FindResource는 어찌 된 일인지 함수 인자가 모듈, 이름, 카테고리의 순인 반면, Ex 버전은 "모듈, 카테고리, 이름"으로 순서가 더 자연스럽게 바뀌기도 했다. LOAD_LIBRARY_AS_DATAFILE 옵션을 주고 불러온 DLL은 그저 훌륭한 데이터 셔틀일 뿐이긴 하다.

이걸 뜯어고치는 것은 결과적으로 <날개셋> 한글 입력기 소스를 더욱 질서정연하게 만든 나름 즐거운 작업이었다.
덤으로, 지금까지 제어판의 '외부 모듈 관리'에서 중국어 입력기들의 언어를 간체/번체를 구분 못 하던 버그도 잡았다. 3.0 이래로 sub-language가 지금까지 제대로 처리되고 있지 않은 듯했다. 한 작업 덕분에 여기저기서 관련 버그들이 일망타진된 것이다.

2. 작은 차이이지만..

날개셋문자를 입력받는 대화상자에서..
한글 자모를 구성하는 타입을 지정하면 아래의 그림과 같이 한글 자모를 입력받는 콤보 박스가 초중종 순으로 나란히 뜬다.

그런데, '한글 중종/초'나 '한글 종/초중' 타입을 지정했을 때는 그 콤보 박스도 초중종 순이 아니라 중종초나 종초중 순으로 뜨게 했다. 이들 날개셋문자는 세 성분을 그렇게 두 음절에 걸쳐서 문자 생성기로 전달하기 때문이다.
문득 생각이 떠올라서 구현해 봤는데 이렇게 하는 게 훨씬 더 직관적이고 좋다.

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

3. 단축글쇠 규칙

편집기 계층의 단축글쇠 규칙과, 기본 입력 스키마의 추가 글쇠 규칙 리스트에서..
아이템들을 선택한 후 드래그 드롭으로 순서를 조정할 수 있으며, 헤더를 클릭한 경우 정렬이 되게 했다.

리스트 컨트롤의 아이템들을 정렬하는 메시지는 LVM_SORTITEMS인데, 나중에 LVM_SORTITEMSEX도 추가되었다. 그 이유로는.. LVM_SORTITEMS는 정렬 비교용 콜백 함수에다가 LVITEM에 있던 lParam값만을 달랑 넘겨 줬기 때문이다.

그렇기 때문에 lParam만으로는 각 아이템이 원래 갖고 있던 문자열 같은 걸 참조할 수 없었으며, 이 때문에 lParam이 아니라 아예 아이템 인덱스 값을 넘겨주는 EX 버전이 윈도 98 즈음에 추가되었다. API 내력이 다소 안습하다.
단, qsort와는 달리 콜백 함수에 사용자가 지정한 user data도 같이 넘어오게 되어 있는 것은 바람직한 디자인이라 여겨진다. 이것은 EX뿐만 아니라 오리지널 버전도 처음부터 그랬다.

인덱스 번호를 받았다 하더라도 매번 2개의 LVITEM 구조체를 세팅하는 건 상당히 번거로우니, 정렬 비교를 위한 클래스를 따로 만들어서 LVITEM 구조체를 세팅해 놓고(mask, pszText, cchTextMax 따위), 비교 함수 호출 때는 인덱스 번호(iItem)만 세팅한 뒤에 곧바로 LVM_GETITEM를 호출하는 게 효율적일 것이다.

그리고, 트리 및 리스트 컨트롤에서 아이템의 드래그 드롭을 구현하는 것은 굉장히 노가다스러운 작업으로 Windows 프로그래밍 업계에서 악명이 높았다. 운영체제는 그저 아이템 드래그가 시작되었다는 이벤트만 날려 줄 뿐, 그 뒤부터 실질적인 드래그 드롭 처리는 전적으로 프로그래머가 알아서 해야 한다.

그 처리는 뭔가 패턴이 있는 것 같으면서도 상황별로 제각각 customize해야 하는 것도 미묘하게 있어서 더욱 까다로운데, 본인은 이미 드래그 드롭이 구현되어 있는(입력 항목의 이동 및 복사) '분야' 트리의 코드를 적극 재활용했다.

공통된 부분은 클래스로 만들고, 드래그 이미지를 생성하는 부분, 마우스 포인터로부터 hit test, 특정 아이템을 드래그 타겟으로 지정하는 부분처럼 customize가 필요한 부분만 가상 함수로 빼냈다. 그리고 트리 컨트롤의 HTREEITEM이든 리스트 컨트롤의 int 인덱스이든 구애받지 않는 추상적인 인덱스 자료구조를 설계했다.
드래그 함수는 드래그 중에 복사의 허용 여부 (0. 불능, 1. Ctrl 눌렀을 때 가능, 2. 읽기 전용 컨텐츠이기 때문에 무조건 복사)를 인자로 받아서 타겟 아이템과 복사 여부를 되돌린다.

이번 글은 기능 설명뿐만이 아니라 유난히 코딩 디테일 설명이 많은 듯한데, 아무튼 그런 과정을 거쳐 해당 기능이 깔끔하게 잘 구현됐다.

4. 입력 설정 테스트 대화상자

제어판의 시스템 메뉴에 딸려 있는 '입력 설정 테스트' 기능에다, 현재 사용 중인 입력 항목을 표시하고 굳이 단축글쇠 없이도 손쉽게 바꾸는 기능을 추가했다.
이 대화상자의 입력란은 <날개셋> 편집기 같은 다른 프로그램과는 별도의 컨텍스트에서 동작하기 때문에 내부적인 입력 상태를 알 방법이 없어서 불편했는데.. 이걸 추가해 주니 아주 편하다.

사용자 삽입 이미지

5. 수식 입력란에 풍선 도움말

그리고 이건 번개같이 아이디어가 떠올라서 집어넣었다. Bravo!
이 간단한 풍선 도움말을 왜 지금까지 넣을 생각을 안 했는지 모르겠다~!

암호 같은 각종 수식들에서 최소한 사용할 수 있는 변수들이 무엇이고 그게 의미하는 값이 뭔지는 간단히 바로 알 수 있게 했다.
그래도 연산자라든가 날개셋문자 notation (H3, C0, G_, BS 등등..)에 대해서는.. 지면이 부족해서 도저히 실을 수 없으니 추가적으로 도움말을 보고 공부를 해야겠지만..
이런 간단한 도움말이라도 있는 게, 없는 것보다는 백만 배 낫지 않으신지..?? ^^;;

풍선 도움말은 수식 입력란이 포커스를 받는 순간 나타나며, 한 세션당 총 3회만 나타난다. 매번 무조건 뜨는 것도 번거로울 수 있으니까.

사용자 삽입 이미지
6. 단축글쇠 규칙을 편집할 때의 날개셋문자-특수글쇠 목록

글쇠배열처럼 날개셋문자를 받는 수식 입력란에는 근처에 날개셋문자를 만드는 대화상자를 꺼내는 버튼이 따로 있다. 글쇠배열뿐만 아니라 편집기 계층의 단축글쇠 규칙에도 글자판(입력 항목) 전환뿐만 아니라 날개셋문자를 보내는 기능이 있기 때문에 날개셋문자 생성 대화상자를 여는 기능이 사용자 편의 차원에서 마련돼 있다.
그런데, 단축글쇠 규칙을 통해서 날개셋문자 대화상자를 열고 나면.. '특수글쇠(특수 코드)' 용도로 갔을 때 특수글쇠가 bksp나 후보 변환 같은 아주 기본적인 것 몇 개밖에 있지가 않다.

이것은 특수글쇠가 원래는 편집기 계층이 아니라 입력기 계층 아래에 있는 문자 생성기의 관할에 있기 때문이다.
글쇠배열이야 입력 스키마 계층이고 자신에게 연결된 문자 생성기를 바탕으로 지원되는 특수글쇠를 얻어 오면 되지만, 편집기 계층에서는 이 단축글쇠가 무슨 문자 생성기와 연결될지 알 수 없기 때문에 아무 문자 생성기에나 공통적으로 적용되는 것만 가져오게 했기 때문이다.

이것이 불편한 점으로 인식되어 다음 버전에서는 개선이 이뤄졌다.
단축글쇠 규칙을 통해 날개셋문자 대화상자를 연 경우, 현재 '활성화돼 있는' 입력 항목을 기준으로 그 문자 생성기가 지원하는 특수글쇠들을 모두 가져온다.
따라서 빈 입력기나 영문 쿼티/드보락 같은 걸 사용하다가 제어판을 열면 예전처럼 기본적인 것밖에 있지 않을 것이고, 한글 입력을 기준으로 제어판을 열면 <날개셋> 기본 입력기가 지원하는 특수글쇠들을 모두 보면서 고를 수 있게 된다.

편집기 계층에다가 단축글쇠로 날개셋문자를 강제 입력할 정도라면 일반적인 평범한 문자보다는 조합 강제 종료 같은 특수글쇠일 가능성이 높은데 이런 조치를 통해 프로그램을 사용하기기 더 편리해질 것이다.

7. 제어판 편집기 계층 탭의 GUI 일부 개선

이것도 사소하다면 사소한 것이지만..

사용자 삽입 이미지

<날개셋> 한글 입력기는 1.0 시절부터 한글 조합 중에 Del/화살표 키가 입력됐을 때 cursor 이동을 어디를 기준으로 할지를 지정하는 옵션이 존재했다.
1.0부터 지금까지 그 옵션은 체크 형태로 어설프게 존재하였으나.. 이번 버전에서는 드디어 이렇게 콤보 박스로 바뀌었다.
아무리 이분법적인 간단한 옵션이라고 해도.. 남자 여자 성별을 고르는 UI를 체크 박스로 처리할 수는 없는 노릇 아닌가.

Posted by 사무엘

2014/11/13 08:18 2014/11/13 08:18
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1028

마태복음 뒷부분을 읽으면서 먼 옛날, 예수님이 배반 당하고 악의 무리들에게 체포되고 '답정너' 어거지 재판을 받은 후 십자가에 달리시는 장면을 곰곰이 묵상해 보았다.

성경을 알면 알수록.. 이 십자가 사건은 도저히 일어날 수 없는 이상하고 기괴한 이벤트만 골라서 벌어진 끝에 가능했음을 알 수 있다.
비록 예수님이 가끔은 자신을 아버지 하나님과 동일시하는 발언 때문에 어그로를 끌긴 했지만, 일단은 기적 때문에 대중적으로 최소한의 인기와 지지를 확보하고 있었다. 백성들 눈치를 보는 '높으신 분'들은 예수님께 함부로 손을 댈 수가 없었다. 이런 이유로 인해 명절에는 체포와 처형을 더욱 피하려고 했는데.. 그런데 현실에서는 최악의 상황만 실제로 일어난 것이다.

가룟 유다를 보고는 예수님께서 “니가 이제 뭘 하려는지 난 뻔히 알고 있지만, 이건 짜고 치는 고스톱이니 니 할 일 하러 가라”와 다름없는 제스처를 취하면서 유다를 밖으로 보내 주셨다. 적들과 내통하러 나가는 건데도 어찌나 곱게 보내 줬으면, 그때 다른 제자들은 유다가 다른 돈이나 물건을 챙기는 심부름을 하러 나가는 줄 알았을 정도였다.
그 뒤, 군중이 붙어 있지 않은 한밤중에 예수님이 거의 “옜다, 나 잡아 가슈” 급으로 일부러 한적한 바깥에 나가서 낚여 줬다. 그 덕분에 체포가 가능했다.

제아무리 악의 무리라 해도 예수님이 선한 일을 한 것.. 즉, 병을 고치고 죽은 자를 살린 걸 트집잡을 수는 없는 노릇이었다. 다른 어설픈 거짓 증언들은 같은 상황에 대해서 자기들끼리도 진술이 일치하지 않아서 법적 효력이 발생하지 않았다.

그나마 트집 중의 하나가 뭐냐 하면 '성전 사흘 재건' 떡밥인데... 이건 처음 등장하는 곳이 원래는 요 2:19이지만 '카더라' 명목으로 마 26:61에서 먼저 미리 등장한다.
솔로몬이 기도를 한 내용이 있기도 하니 유대인들은 물리적인 성전 건물에 대한 애착이 굉장히 컸던가 보다. 그런데 그 엄청난 성전을 걸고 저런 충격적인 말을 예수님이 하셨으니 그게 예수님의 트레이드마크가 된 모양이다.

물론 앞뒤 문맥 행간 다 짤라먹고 사람을 사회적으로 매장하는 찌라시 기레기들의 수법은 지금이나 그 시절이나 다를 바 없었다. “예수, 성전 폭파 발언 충격 일파만파”처럼 말이다.

예수님은 다른 그 어떤 거짓 고소 개드립에도 대꾸할 가치를 느끼지 않아서 침묵으로 일관했지만, 자신의 정체성을 묻는 질문에는 즉각 대답하셨다. 대제사장 앞에서든(마 26:63-64), 빌라도 앞에서든(마 27:11) 말이다. 그것이 당장 자기 신변을 불리하게 만드는 답변이더라도 말이다.
예전부터도 예수님은 시종일관 사람들로 하여금 자기가 누구인지를 정확하게 알기를 원하셨다. “그러나 너희는 나를 누구라고 하느냐?” (마 16:15)

다른 사람들은 마태복음 22장에서 볼 수 있듯이 정치, 종교, 시사 등 온갖 주제로 예수님께 질문을 했지만 예수님은 그냥 즉문즉답이었다. 오히려 그런 것들은 별로 중요한 주제가 아니니 제끼고, 그분이 카운터어택으로 딱 하나 바리새인들에게 질문하셨던 것은 “그리스도는 다윗의 자손인데 왜 선조인 다윗이 자기 후손을 보고 주님이라고 불렀을까?” 정체성 질문 하나뿐이었는데.. 그것만으로도 그들은 떡실신했다.

그러니 이런 패턴을 아는 예수님의 적들이 트집을 잡은 방법은 역시나 100% 걸려들 수밖에 없는 종교라는 형이상학적인 영역을 악용하는 것이었다. 다니엘을 모함한 대신들이 다니엘을 행실로는 트집 잡을 수 없으니 기도라는 종교 관습으로 올가미에 넣었듯이 말이다. 다니엘도 그냥 그 30일 동안은 그냥 문 닫고 골방에서 몰래 기도할 수도 있었지만, 일면 고지식한 바보 같이 일부러 흉계에 걸려들었다.

이처럼 예수님도 자기 정체성만은 당당하게 드러내셨다. 대제사장은 드디어 명목상 신성모독이라는 중대한 껀수를 하나 잡았으니 이렇게 기쁠 데가. 하지만 겉으로는 옷을 찢고 오버하면서 “oh my god!! ㅠ.ㅠ 어머나 세상에 제 입으로 제 발로 하나님을 사칭하는 놈이 있다니 이런 참람할 데가! 이 이상 무슨 증거가 더 필요하단 말이냐? 이 새퀴는 뒈져야 마땅하다”라고 짜여진 각본대로 아주 생지X(비속어 죄송~~)을 해 댔다. 옛날에 악의 무리들이 나봇을 신성모독죄 누명을 씌워 인민재판을 벌이고 죽였을 때처럼 말이다.

이것은 정말 충격적인 사건이 아닐 수 없다. 온 우주 만물을 창조하고 인간을 창조한 그 창조주가 현신했는데 피조물들로부터 따귀를 맞고 침뱉음, 조롱, 학대를 당한 것이다. 왜? 무엇 때문에? 성경의 가르침에 따르면 그 피조물 인간의 죄를 사하기 위해서이다.

이런 예수님의 이해할 수 없는 행동 때문에 제자들은 실족하고 멘붕에 빠지고 도망쳤다. 5천 명의 군중을 먹이고, 물 위를 걷고, 중병을 고치고 마귀들을 내쫓고 죽은 사람까지 살렸던 자기 스승이 언제부턴가 고난, 죽음 얘기를 하면서 분위기에 찬물을 끼얹더니.. 왜 이렇게 너무 나약하게 험한 꼴을 당하는 걸까?

베드로는 의욕이 넘쳐서 처음엔 예수님의 적들을 향하여 용감하게 칼까지 휘두를 정도였지만.. 예수님이 자기 기대와는 너무 딴판으로 행동하자 제풀에 기가 죽었고.. 결국은 예수님의 예언대로 위급한 상황에서 그분을 세 번 부인하는 인생일대의 실수를 저지르고 말았다.

유대인 종교 지도자들은 예수님을 반역죄 신성모독죄로 몰아서 죽이고 싶었지만, 자기들도 로마 제국의 식민지인 판에 자체적으로 사형 집행을 할 수 없었다. 그래서 결국은 그분을 제거하기 위해 자신들의 정치적 원수인 외세까지 끌어들이는 비열한 짓도 서슴지 않았다. 나중에는 “우리에게는 카이사르 외에는 왕이 없나이다” 이러기까지 한다. 일제 강점기로 치면 조센징들이 “우리에게는 덴노 외에는 왕이 없나이다” 이런 짓을 한 거나 마찬가지이다! 이걸로도 모자라서 자기 무덤을 스스로 파 버린 확인사살 크리티컬은 “저 사람의 피가 우리와 우리 자손에게 돌아올지어다”이고 말이다.

하지만 빌라도도, 헤롯도 예수님을 찬찬히 살펴보니 저 사람은 딱히 사형을 당할 만한 중죄인이 절대 아니었다. 헤롯은 예수님을 그냥 해롭지 않은 미치광이 정도로 치부한 듯하나 빌라도는 예수님이 보통사람이 아니란 걸 직감했다. 목숨을 전혀 구걸하지 않고 태연한 그분의 포스에 자신이 오히려 압도당하고 초조해졌다. “다.. 당신은 왜 아무 말도 없느냐? 주변에서 온통 당신을 고소하는 말이 들리지 않느냐? 나에게는 너를 처벌하거나 풀어 줄 권한이 있는데 왜..? 으응..??” 같은 식.

빌라도는 예수님을 풀어 주고 싶었지만 이미 민심은 광기로 치닫고 있었다. 종교 지도자들로부터 선동을 당했는지, 아니면 무기력한 예수님의 모습에 실망했는지 백성들조차 폭도 바라바를 석방하라고 요구하고 예수님에 대해서는 그야말로 최악의 흉악범에게나 집행되는 십자가형을 요구했다. 그리고 빌라도는 자기 정치 생명 보존을 위해 이를 허락해 버렸다. 그것도 명절 기간에..;; 이때 같이 들러리로 끌려나와 갑자기 십자가형을 당한 죄수 두 명은 날벼락이 따로 없었을 것이다.

온갖 기적을 베풀며 당장이라도 자기 민족을 로마 제국으로부터 해방시킬 것 같던 슈퍼스타 예수가 하루아침에 너무도 무기력하고 나약하게 십자가형을 당하자.. 무지한 군중들은 그분에게 온갖 야유를 퍼부었다. '성전 사흘 재건' 떡밥도 다시 나온다. (마 27:40)
“성전을 헐고 사흘 만에 다시 짓겠다더니 당신 꼴 좋다~!”
“중이 제 머리는 못 깎는다더니 저 사람은 자기 자신은 못 구하네? ㅋㅋㅋㅋㅋ 당신이 정말 하나님의 아들 & 유대인의 왕이라면 한번 그 십자가에서 내려와 보시지? ㅋㅋㅋㅋ”

그러나 이때 예수님의 기도는 정말 비장하고 숙연하기 그지없었다! “아버지여, 저들을 용서하여 주옵소서. 저들은 자기들이 하는 일을 알지 못하나이다.” (눅 23:34)
십자가에 같이 매달린 두 강도들도 처음에는 같이 예수님을 조롱하고 욕했었다. 제 코가 석 자인 주제에.
그러나 누가복음의 진술에 따르면 둘 중 하나는 나중에 회개하고 예수님을 주님이라고 부르는.. 정말 드라마틱하고 놀라운 회심을 했다. (눅 23:42)

그 뒤의 결말은 여기서 굳이 길게 각색해서 쓸 필요가 없을 것이다.
예수님은 십자가형을 당한 여느 죄수들과는 달리 불과 몇 시간 만에 일찍 숨이 끊어졌다. 요한복음에 따르면 이것은 생물학적으로 불가피한 죽음을 맞이한 게 아니라 자기 스스로 생명을 내어놓은 거라고 한다. 십자가형은 참수나 화형과는 달리 죽을 때까지 죄수를 내버려 두는 형벌이기 때문에 역설적으로 저런 행적이 나올 수가 있다.

그러나 예수님은 장사되고 묻힌 지 사흘 만에 부활했으며, 이를 본 제자들은 그야말로 가슴이 터질 듯 기쁨으로 용기백배하여 담대한 복음 전도자로 바뀌었다. 그 어떤 난관이나 심지어 죽음과 순교도 이들의 증언을 꺾지는 못했다. 그래서 기독교가 태동할 수 있었다. 지구상에 존재하는 종교들 중 신이 인간을 먼저 사랑했고 인간을 위해 고난을 당하고 피흘려 죽었지만 부활까지 했다고 가르치는 유일한 종교이다!

국내에는 송 명희 시인이 예수님의 고난을 뭔가 인간적인 애틋한 심상으로 그리는 데 일가견이 있었다. <얼마나 아프실까>, <우리의 어두운 눈이 그를>, <누구 때문에> 같은 찬양 말이다. 물론 예수님의 고난과 죽으심은 단순히 국가를 위해 목숨을 바친 애국지사나 여느 순교자 같은 성격은 아니다. 또한 무슨 도살장에서 도축 당하는 짐승을 불쌍해하듯이 인간의 입장에서 무작정 동정할 만한 성격도 아니다. 하지만 하나님이 우리에게 베푸신 사랑은 뭐랄까 정말 엄청나고 대단한 일인 건 틀림없다.

예수님이 부활한 것으로도 모자라서 봉인까지 아무 문제 없이 뚫고 무덤을 탈출하자, 기존 악의 무리들은 보초병들을 매수하여 여론 조작을 시도했다. 보초병들이 조는 사이에 제자들이 무덤에 침입해서 예수 시체를 훔쳐 갔다는 거짓 소문을 퍼뜨리는 걸로 대응했다.
그 시절에 로마 군인이 근무 중에 졸다가 적발되었다? 이건 중대 군기 문란죄이며 당사자는 그야말로 끔살을 면치 못했다. 또한 죄수 같은 걸 놓쳤다면 지키던 간수가 자기 목숨을 대신하여 책임을 져야 했다. (행 12:19 베드로를 놓친 감옥 간수들의 최후. 행 16:27 감옥이 지진으로 파괴되자 간수는 곧장 자결하려 함)

아무리 유대교 종교인들이 돈을 많이 주고, 또 졸았던 것에 대해서 자신들이 적극 변호하고 실드를 쳐 주겠다고 약속은 했어도... 졸다가 예수 시체를 도둑맞았다는 소문을 로마 군인이 퍼뜨린다는 건 어지간해서는 자충수에 가까운 짓이었을 텐데 싶은 생각이 든다. 뭐, 고의성이 있든 없든 예수님 시신을 놓친 군인들은 어떤 경우든 신변이 좀 걱정되는 처지가 되었겠지만.

우리는 종교 지도자들의 앞뒤가 안 맞는 행적을 좀 더 살펴볼 수 있다.
자기가 내리는 결정에 대해서 절대적인 옳고 그름을 따지는 게 아니라, 백성들 눈치를 보고 그들의 예상 반응을 시뮬레이션하고, 서로 의논을 하면서 잔머리를 굴린다. “요한의 침례가 어디로부터 왔느냐?”에 대한 대답도.. 예 아니면 아니요라고 하면 될 것을 그들은 어떻게 대처했던가? (마 21:25-27)

또한 온갖 율법을 어기면서 예수님을 거짓 고소하고 추악한 짓은 다 했으면서... 가룟 유다로부터 반환받은 돈은 제 딴에 더러운 돈이라고 성전의 보고에다 안 넣고 율법 따지면서 종교적인 행세를 한다(마 27:6).

그들의 또 다른 위선적인 면모는 예수님께서 “화 있을진저”라고 그들을 맹렬하게 책망하시는 23장에 기록되어 있다. 마 23:29-33을 보면.. 한 마디로 이런 내용이다. “우리 선조들은 참 병신 같아서 하나님께서 보내신 참 대언자들을 핍박하고 죽였어요. 우리가 그 시대를 살았다면 안 그랬을 겁니다.”
허나, 이들이 얼마 안 있어 예수님을 제거하려는 음모를 꾸몄다는 걸 생각한다면 피식 웃음이 나오지 않는가?

물론, 우리라고 해서 예수님과 동시대를 살았다면 과연 예수님의 진면모를 영적으로 파악하고 그분의 길을 따랐을지.. 아니면 역시나 육신적인 선동에 혹해서 그분을 정죄하는 일에 동참했을지 알 수 없는 노릇이다.

성경은 인간이라면 바다가 갈라지고 홍해 중앙을 멀쩡히 건너는 넘사벽 기적 체험을 하고도 딱 사흘 뒤엔 목 말라 죽겠다고, 이딴 식으로 고생하면 뺑이 칠 거면 걍 이집트로 돌아가자고 하나님께 불평을 늘어놓을 수 있다고 말한다.
그리고 자기 영웅 예수님이 입성하는 걸 흥분해서 환영하던 인파들도 며칠 뒤에 태도가 180도 돌변하여 “폭도 바라바를 풀어 주고 예수라는 저 무능한 꼰대는 십자가에 못 박으시오!” 하는 것도 얼마든지 가능하다고.. 인간이 생각보다 굉장히 변덕이 심하고 간사하다고 말하는 책이다. 당신이라고 해서 안 그럴 것 같은가? “천만에”다.

바리새인들은 나름대로 바빌론 포로 귀환 이래로 이제 절대로 우상 숭배 안 하고 최소한 구약 성경 유일신만 믿기로 작정을 한 종교 꼴통들이다. 그리고 서기관들은 구약 성경을 필사하고 보존해 온 종교 전문직 종사자들이다.

이들이 비록 예수님 당대에 전반적으로 영적으로 좀 맛이 가 있긴 했어도 이들만이 마치 악의 축인 양 싸잡아 정죄하는 것은 성경 독자로서 옳지 못한 태도이다. 세상에는 바리새인만도 못한 인간들 역시 엄청 많다는 걸 알아야 하며, 특히 예수님을 죽인 민족이라고 크리스천이라는 사람이 유대인들을 핍박하고 반유대주의 풍조에 동조하는 건 절대로 성경적인 자세가 아님을 명심해야 한다.

결국 글이 굉장히 길어져 버렸는데.. 맺기 전에 하나만 더, 빌라도와 가룟 유다에 대해서 좀 생각을 해 보겠다.
먼저 빌라도. 그는 현장에서 저렇게 우유부단하고 고뇌하던 모습으로 인해, 그저 운 나쁘게 저 현장에 있었을 뿐이고 악의적이는 않았던 나약한 보신주의자라는 식으로 실드 치는 해석이 있다. 그러나 빌라도를 필요 이상으로 긍정적으로 볼 필요는 없을 것 같다. 어쨌거나 그는 이 사건을 계기로 헤롯하고도 다시 친해졌을 정도로(눅 23:12) 결국 예수님의 대적들 편에 확실하게 섰기 때문이다. “진리가 무엇이냐?”(요 18:38) 이건 진지한 구도적인 질문이 아니라, 대답을 기대하지 않고 그냥 한 마디 툭 던진 립서비스일 뿐이었다. “ㅉㅉ 이 상황에서 뭔 놈의 얼어죽을 진리 타령이냐?”에 가깝다.

원쑤지간이던 빌라도와 헤롯이 과연 무엇을 매개체로 화해했을지도 생각해 보면 뻔한 노릇이다. 까놓고 말해 술자리에서 술안주로 예수님을 같이 씹으면서 친해진 게 아니면 무엇이겠는가! “내가 보니 그 사람 완전 바보 싸이코더구만! ㅋㅋㅋ” “그러게? ㅋㅋㅋ 사실은 나도 똑같이 생각했지!” 그는 예수님을 대면하면서 양심이 좀 찔리던 기억은 이런 식으로 잊어버리고 훌훌 털어내 버렸다.

그리고 유다는 인간적으로는 예수님의 제자였다가 한 순간에 대실수를 저지르고 그걸 자살이라는 방법으로 수습하여 비참한 최후를 맞이한 사람 정도로 여겨진다. 하도 부정적으로만 평가되다 보니 마치 원 균을 재평가하듯이 유다도 최대한 개인 상황을 감안하여 긍정적으로 재평가하는 신학 해석도 있을 정도이다.

그러나 유다는 단순히 사람이 아니라 동정의 여지가 없이 성육신한 마귀라는 해석이 있다. “그 중의 하나는 마귀이니라” (요 6:70)가 비유가 아니라 평이한 사실 진술이라고 생각하는 것이다. 또한 행 1:25에서도 베드로가 유다는 단순히 죽은 게 아니라 자기 처소로 돌아갔다고 얘기하는 게 뭔가 저 사람 정체가 예사롭지 않다는 걸 암시한다.

그렇다면 예수님이 성육신하고 나서 얼마 있지 않아 마귀 역시 짝퉁 성육신해서 훗날 예수님의 제자로 위장해 들어갔다는 뜻이 되는데.. 사실이라면 많이 무섭다. 성경에는 유다 자체가 마귀라는 말뿐만 아니라 “유다에게 사탄이 들어갔다”(눅 22:3), “사탄이 유다에게 이상한 생각을 넣었다”(요 13:27) 같은 상이한 진술이 모두 들어있다.
이것은 마치 다윗의 잘못된 인구 조사의 배후에 무슨 일이 있는지에 대해서 성경이 상이하게 진술하는 것과 비슷한 맥락이다(삼하 24:1, 대상 21:1). 동일한 사건을 다른 각도에서 조명한 것으로 보인다.

유다는 예수님을 배반했다가 나중에 목을 매어 자살했는데, 이 사건은 마태복음에만 기록되어 있다. 사도행전의 증언을 보면 그는 내장이 튀어나오며 상당히 끔찍하게 죽은 것 같다. (행 1:18)
단, 사도행전 1장에서 언급되는 피 밭과, 마태복음 27장에서 언급되는 피 밭은 개념상 서로 다른 장소이다.
전자는 유다가 개인적으로 비축해 둔 돈으로 산 자기 땅이다. 그러나 후자는 따로 토기장이의 땅을 사서 조성한 공동묘지이기 때문이다.

Posted by 사무엘

2014/11/10 08:30 2014/11/10 08:30
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1027

1.
20세기 초· 중반이 배경으로 나오는 영화나 드라마를 찍는다면 그 당시 길거리를 달리던 옛날 자동차들도 재연되어야 한다. 이런 '올드카'들은 상업적인 임대 수요가 있으며, 이를 대여해 주는 업체도 응당 존재한다.
하지만 국내에서 원하는 올드카를 못 구하면, 외국으로 진작에 수출된 옛날 국산차를 다시 역수입해 와서 쓰기도 한다. 우리나라에서는 진작에 처분된 차들이 외국에서는 아직까지 현역으로 뛰고 있기도 하기 때문이다.

다만, 1990년대 이전의 옛날 자동차는 지금의 자동차하고는 당장 연료가 호환되지 않을 텐데 그런 건 어떻게 극복했나 모르겠다. 당장 휘발유만 해도 유연과 무연의 차이가 존재하며 경유 역시 유황 성분이 더 줄어들고 이것저것 변화가 있었기 때문이다.

최악의 경우는.. 어차피 화면에는 올드카의 외형만 비치면 되니까 엔진은 요즘 차량의 것으로 싹 갈아 버릴 수도 있다.
요즘 관광용으로 일부러 도입해서 굴리는 증기 기관차는 겉모양만 증기이지 석탄이 아닌 석유로 물을 끓인다거나, under the hood는 아예 내연 기관이 달린 디젤 기관차인 경우가 대부분이듯이 말이다.
하지만 자동차의 경우 엔진 교체는 쉽게 가능한 일이 아니며, 엔진이 다른 것으로 교체되어 버리면 엔진음은 옛날 차의 것이 그대로 재연되지 못할 것이다.

본인은 지난 올해 상반기 중에 서울 시내에서 포니 2를 한 대 구경한 적이 있다.
그렇게 한 차를 20년, 30년씩 굴린 차주들은 당연히.. 주변에서 “그랜저를 줄 테니, 그 포니를 내게 파시오.” 식으로 제안하면 절대로 응하지 않는다.
하다못해 머리카락이나 손톱을 엄청나게 길게 길러서 기네스북급의 기록을 갖고 있는 사람들만 해도 돈을 아무리 많이 준다 해도 그걸 안 자른다. 하물며 자기 인생을 함께한 올드카 애마를 돈 몇 푼에 처분하겠는가?

우리나라의 올드카 수집가로 유명한 사람은 이걸로 아예 직업을 삼은 금호 상사의 대표 백 중기 씨이다. 금호 렌터카와 혼동하지 말도록. 이미 1970년대부터 길거리에서 소리없이 사라져 가는 올드카에 대한 경각심을 느끼고 시발 자동차 택시, 기아 삼륜차, 이 승만· 박 정희 대통령의 관용차 등 까마득한 올드카들을 수집해 왔다고 한다.

단종되고 제조사로부터 A/S가 더 없고 부품을 정상적인 통로로 구할 수 없는 자동차는 소프트웨어로 치면 지원이 완전히 종료된 abandonware나 마찬가지이다. 저분은 수백여 대의 올드카를 보유하고 있다는데 단순 정태보존인지, 아니면 운전이 가능한 동태보존의 비율은 얼마나 되는지 모르겠다. 그리고 세금· 보험료 같은 굴레 없이 수집이 가능했는지도 궁금하다.
거기에다 평상시에 보존· 유지를 위해 물리적으로 깨지는 비용을 생각하면 올드카 임대를 통해 그렇게까지 많이 수지 맞는 장사를 해 온 건 아니라고 함. 아무튼 덕업일치에 좋은 일을 해 온 대단한 분이다.

2.
그리고 올드카 얘기 하나 더.
예전에 이 블로그에서 새한 자동차 시절의 구닥다리 8.5톤 덤프 트럭을 소개한 적이 있었다. 그런데 그것보다 더한 자동차계의 노인학대가 존재한다는 정보를 엔하위키를 통해 전격 입수했다.

사용자 삽입 이미지
바로 미국의 제너럴 모터스에서 생산한 바퀴 10개짜리 카고트럭.
무려 1940년대 중반에 생산된 군용차인데, 현역에서는 1970년대에 물러나고 민수용으로 풀린다.
그런데 그런 차가 충북 내지 강원도의 오지에서 적어도 2000년대 중후반까지 혹사당하고(?) 있다고 한다.

이 차의 애칭은 '제무시 트럭'이다. GMC를 일본식으로 읽으면 '지-에무-씨'가 되는데 그걸 줄여서 '제무시'라는 기괴한 명칭이 된 것.
군용차는 무겁고 완전 기름 먹는 하마 급의 연비를 자랑하지만, 그만큼 어마어마하게 튼튼하며 어지간한 트럭이 지나갈 엄두를 못 내는 험지나 오르막도 거뜬히 오른다.
시간이 정지한 듯한 이 트럭의 활약기를 살펴보시기 바란다.

3.
세워진 자동차에 주차료가 부과되는 것만큼이나 공항에 세워져 있는 비행기에는 시간에 비례하여 주기료가 부과된다. 이거 생각보다 꽤 비싸다. 인천 공항에 보잉 747 여객기를 세워 놓는 비용은 하루 기준으로 거의 100만원이 조금 넘는다. (지금은 더 올랐을지도 모름)

물론 보잉 747은 어마어마하게 공간을 많이 차지하는 거대한 물건이긴 하나, 어쨌든 금액의 스케일이 10분당 1천원 꼴로 주차료를 받는 서울 시내의 좀 비싼 유료 주차장의 임률도 아득히 초월하는 셈이다. 게다가 인천 공항 정도면 주기료가 합리적이지, 공항 이용 비용이 악랄하게 비싼 축에 드는 공항도 아니다.
비행기는 하늘을 날면서 승객과 화물을 나를 때는 돈을 벌어다 주지만, 그렇지 못할 때에는 돈 먹는 하마로 전락하고 만다는 걸 알 수 있다.

그런데 수 년 전엔 인천 공항의 주기장 한쪽 구석에는 태국, 이란 등 운영이 제대로 못 되고 있다가 사실상 망한 항공사의 여객기가 최대 4대 무단 방치된 적이 있었다. 2년 넘게 방치된 비행기는 당장 운용을 할 수 없을 뿐만 아니라 주기료도 수억원 대가 넘게 밀렸을 텐데... 2010년대 이후로는 뉴스 기사가 더 보도되지 않는 걸로 보아 지금쯤은 인천 공항 측에서 그런 흉물을 임의로 압류· 매각을 해서 처리하지 않았나 싶다.

우리나라도 남북 관계가 안 좋아져서 개성 공단이 가동이 몇 달 중단된 동안 기계들이 다 망가졌다고 공장주들이 울상이었다. 자동차만 해도 한 달 정도만 안 몰고 있으면 상태가 어찌 될지 알 수 없는데 기계라는 게 참 그런 특성을 가진 물건인 것 같다. 장기간 가동을 안 할 거면 연료를 빼내고 장기 보존 가능한 특수한 처리라도 해야 할 터.

4.
미국 캘리포니아 주의 모하비 사막에는 '모하비 공항'이라는 생소한 공항이 있다. 얘는 세관· 검역 시설을 갖춘 국제공항도 아니고 정기 운항 비행기도 없이 사막에 덩그러니 놓인 듣보잡 공항일 뿐인 것처럼 보이나, 다른 공항에는 없는 특별한 속성이 두 가지가 있다.

하나는 정식 타이틀이 단순 airport가 아니라 air and space port라는 것. 즉, 여기는 단순 항공기뿐만 아니라 민간 우주선(Spaceship One 같은)이 이착륙하기도 한다.
그리고 여기는 바로 민항기의 양로원 내지 무덤이다. 건조하고 땅값 저렴한 사막이다 보니 전세계에서 퇴역한 항공기, 혹은 망한 항공사로부터 매각된 항공기들이 여기에 수두룩하게 쌓인다. 아직 현역으로 구를 만해서 다른 항공사로 저렴한 중고로 팔려간다면 다행이지만, 상품성을 상실할 만큼 심하게 노후한 항공기는 여기서 폐기되어 부품이 뜯겨 나간다.

5.
그리고 캘리포니아 주 근처(근처..래 봤자 수백~천수백 km 떨어져 있지만)에 있는 아리조나 주의 데이비스 몽선(Davis-Monthan) 공군 기지 인근에는 '노후 전투기 보관소'가 있어서 수천 대에 달하는 퇴역 군용기들이 보존되어 있다. 미 해군, 공군, 해병대가 쓰다가 퇴역시킨 군용기들은 거의 다 여기에서 최후를 맞이하는 셈이다.

사용자 삽입 이미지
여기에 남아 있는 항공기들은 대략 70%가량은 약간의 수리를 거친 뒤 다시 비행이 가능한 정도라고 한다.
모하비 공항은 인근에 에드워즈 공군 기지가 있긴 하지만 공항 자체는 민간 공항이다. 하지만 여기는 주 보존 대상도 군용기들이고 엄연한 공군 시설 내부이다.

이 보관소의 항공 사진을 보노라면 “전투기는 많지만 조종사가 없습니다(부족합니다)!”라고 하는 영화 <인디펜던스 데이>의 대사가 고증에 굉장히 충실하게 만들어졌다는 걸 알 수 있다. 여러 조종사가 한 비행기를 굴리가면서 타는 게 일반적이지, 전투기가 조종사보다 더 많다니 이게 말이나 되는 소리인가? 과연 show me the money 국가인 미국이니까 가능한 스케일이다.

Posted by 사무엘

2014/11/07 08:27 2014/11/07 08:27
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1026

여러분은 다음과 같은 서로 완전히 다른 분야의 관행들에서 공통된 패턴이 존재한다고 생각하시는가? 만약 존재한다면 공통점이 무엇일까?

  • 컴퓨터에서 각종 계정의 암호를 설정하는데, 암호는 무조건 n글자 이상에 대소문자와 숫자 등이 반드시 골고루 섞여야 한다고 프로그램이 사용자에게 강요를 한다.
  • 출퇴근 시간엔 서울 지하철 사당 역은 2호선과 4호선 사이의 지름길 직통 환승 통로를 폐쇄하고 먼 우회 통로로만 환승이 가능하게 만든다. 또한 사람이 지나치게 많이 몰리는 행사가 열리면 가까운 지하철 역이 통째로 폐쇄되고 열차가 무정차 통과한다.
  • (종교 얘기. 비기독교인은 skip해도 좋음) 예루살렘에서 성령이 강림한 후 신약 기독교회가 갓 태동했다. 그러나 하나님은 역설적으로 그 기독교 성지에서 맹렬한 기독교 박해와 스데반의 순교를 허락하셔서 신자들을 뿔뿔이 흩어 버렸다.

내가 생각하는 이것들의 공통점은... 한데 몰려서는 안 되는 곳에 사람들이 지나치게 많이 몰릴 때 “그 몰리는 선택지 자체를 없애 버려서 분산을 강제로 유도”했다는 점이다. 그리고 이로써 집단 내부의 잠재적 부작용이나 병폐를 해결했다.

먼저 종교의 경우다. 먼저 믿고 구원받은 크리스천은 주님의 명령대로 세상 방방곡곡에 흩어져서 복음을 전해야 하는데 그게 말처럼 쉽지 않다. 어지간하면 그냥 신자들끼리만 기득권을 형성하고 교제라는 명목의 친목질만 하면서 고향에서 편하게 살고 싶다. 그러니 하나님이 저런 역경을 허락하신 것이다. 물리적으로만 보자면 그건 자기 신자를 줄이고 세력을 약화시키는 팀킬인데 기독교는 오히려 그런 역경을 통해서 역설적으로 잡초처럼 더 강해지고 널리 퍼져 온 것이다.
(단, 그렇다고 해서 기독교 박해 행위 자체를 정당화할 생각은 하지 마시길.)

교회사뿐만 아니라 바벨 탑 사건도 비슷한 맥락으로 사람들을 강제로 뿔뿔이 흩어 버린 경우에 속한다. 온 인류가 단일 민족 단일 언어이면 지금처럼 복음 전할 때에도 “아프리카 원주민이나 세종대왕, 이 순신 같은 사람도 다 예수 전해듣지도 못했는데 지옥 갔냐?” 이런 쓸데없는 질문을 받을 일이 없었을 텐데.. 하나님이 왜 그런 비효율적인 자충수를 일부러 두신 걸까?

두 말할 나위도 없이 인류가 단일 언어 단일 체계이면.. 다같이 하나님을 믿는 것보다 다같이 순식간이 부패하고 타락하고 썩어 버리는 게 훨씬 더 빨리 진행되기 때문이다. 다 합당한 이유가 있다.
그 대신, 교회가 태동하던 무렵에는 복음이 빨리 퍼져 나가라고 바벨 탑 사건 때와는 정반대로 언어 장벽을 잠시 극복해 주신 것이다. 그게 바로 '방언 은사'이라는 거다. 성경의 방언은 알아들을 수 있는 외국어이지, 울랄날따따따 잡소리가 절대 아니다.

자 그건 그렇고, 교통 얘기로 오면..
사람이 한 장소에 너무 몰리면 꼼짝달싹 못 하고 아무도 이동을 못 하게 될 뿐만 아니라 압사 사고 등 안전상의 위험도 매우 커진다. 제일 가까운 지하철역을 폐쇄하는 것은 사람들을 더 먼 곳까지 강제로 이동시킴으로써 밀집도를 낮추는 효과를 내며, 우회 환승 통로 역시 환승 승객을 수용할 공간을 확보하여 밀도를 낮춰 준다.

새해에 타종 행사를 하고 나면 종각/시청 일대의 지하철역이 폐쇄되고 불꽃 축제가 있을 때는 여의도 근처의 지하철역이 폐쇄되는 이유가 이로써 설명된다. 지난 여름에 교황이 왔을 때에도 광화문, 시청 근처의 지하철역은 당연히 폐쇄크리를 먹었다. 정말 상상을 초월하는 수의 인파가 몰렸기 때문이다.

서로 가깝고 같은 기간에 동일한 십자형으로 건설된 천호 역은 환승 거리가 짧은 반면, 군자 역은 거리가 일부러 꽤 길게 만들어져 있다. 7호선이 8호선보다 더 수요가 많고 혼잡하기 때문일 것이다.
그런데 천호도 마냥 짧기만 한 건 아니다. 천호에서 8호선을 타는 승객의 압도 다수가 잠실 역에서 내리는데, 환승 지점은 열차의 뒷부분이고 잠실에서 빨리 갈아타려면 암사 방면 열차의 맨 앞까지 이동을 해야 한다. 이것 때문에 사람들이 많이 걷는다. 지하철 8호선이 만들어질 때 이런 것까지 다 지능적으로 고려를 했는지는 모르겠다.

자, 그 다음으로 암호 얘기를 하겠다.
모든 사람들이 정말 정보 엔트로피가 높은 완전 무작위한 숫자· 문자를 암호로 사용한다면..
저런 제약은 오히려 암호 공격자에게 좋은 단서로 작용할 수 있다. 비록 암호 조합 문자열이라는 파이 전체에서 차지하는 비중은 여전히 미미하겠지만, 어쨌든 n글자 이하는 절대로 거들떠보지 않아도 되고, 한 종류의 문자만으로 이뤄진 문자열은 처음부터 탐색 대상에서 제끼면 되니까 말이다.

그런데도 굳이 저런 제약이 존재하는 건.. 불행히도 매우 많은 사람들이 저 작은 표본을 벗어나지 않는 범위에서 암호를 허술하게 만들고, 그게 공격자에게 왕왕 털리기 때문이다.
password, qwerty, q1w2e3, asdf, letmein, love 등...;;
그러니 차라리 그 표본을 명시하고서 사용자들로 하여금 강제로 배제하게 하는 게...
공격자에게 새 발의 피 정도의 단서를 던져주고서 전체 보안은 넘사벽급으로 훨씬 더 강화하는 효과를 낸다. 내 발뒤꿈치를 주고 상대방의 머리를 공격하는 전략 되겠다.

암호라는 건 마치 캡챠만큼이나 서로 모순되는 두 이념을 적당히 잘 충족해야 한다.
캡챠가 사람은 쉽게 알아보고 컴퓨터는 못 알아보는 그림이라면, 암호는 공격자--공격자의 주 도구인 컴퓨터도 포함--는 유추하기 무진장 어려우면서 당사자는 기억하기 쉬워야 한다.
주인이 기억하기 쉬우려면 결국 주인은 자기 개성을 표현하는 문자열을 떠올리게 되는데, 이렇게 되면 암호 공격은 거의 사회과학의 영역으로까지 확장되게 된다.

(더 극단적으로는, 기계적으로 완전 철통같은 암호라 해도 암호를 아는 사람을 돈이나 미인계로 매수한다든지, 혹은 아예 물리적으로 잡아 족침으로써 어이없게 뚫어 버리는 예도 있다.;; brute force 테크닉 그딴 것도 필요 없다. 성경에도 삼손의 지인들이 삼손의 수수께끼를 어떻게 풀었던가? 삿 14 참고)

일반적으로 컴퓨터 소프트웨어의 암호 입력란은 IME가 동작하지 않아서 영문· 숫자 이외의 문자를 입력할 수 없다. 이건 여러 모로 바람직한 조치라 여겨진다.
암호는 무슨 문자를 입력하느냐보다는 결국 무슨 keystroke를 입력했느냐가 더 중요하며, 지금 입력하는 글자가 일반적으로 화면에 보이지 않기 때문에 복잡하게 입력 모드 같은 걸 따질 처지가 못 된다.
또한 암호 입력란에서 IME 같은 별도의 소프트웨어 계층이 동작할 경우, 암호 문자열을 악성 프로그램이 가로채는 보안 문제가 커질 수도 있다.

하지만 이런 점에도 불구하고, 운영체제의 자체 GUI를 쓰지 않는 프로그램 중에는 IME가 동작하는 암호 입력란을 가진 경우도 있다. 굳이 한글로 입력을 안 하고 영문 자판에서 한글 입력을 하면.. 무질서도가 상당히 높은 알파벳 문자열이 생성되기 때문에 외국인 공격자가 알아내는 데는 애로사항이 꽃핀다. 이 사용자가 한국인이라는 단서가 없다면 말이다.
특히 세벌식은 사용자가 매우 적은 데다가 자체적으로 4단의 숫자· 기호까지 일부 활용하기 때문에 이런 보안 면에서 아주 좋다. Mac OS가 악성 코드가 별로 안 들끓는 이유도 딴 거 없고 사용자가 심히 적어서 해커들에게 별로 돈이 안 되기 때문이다. 간단하다.

아무도 모르고 내가 기억하기 쉬운 문자열이라는 특성상, 국가를 막론하고 욕설을 암호로 사용하는 사람도 있다. 뭐, 나쁠 것 전혀 없는 발상이긴 하지만 너무 대중적인(?) 욕설은 공격자들도 이미 다 파악하고 있으니 이 역시 조심해야 한다.

암호는 닥치고 20글자 이상으로 엄청 길면.. 무질서도가 기하급수적으로 치솟는다. 어지간히 단순무식한 형태의 암호라고 해도 엄청나게 긴 것에는 답이 없다. 글자수가 몇 자 늘어날 때마다 0.n초이던 예상 공격 시간이 그야말로 수천, 수만 년 이상으로 뻥튀기된다. 그러니 암호라는 건 pass-word가 아니라 최하 phrase나 sentence 정도의 규모로 만드는 게 좋다.

Microsoft Iphone 내지 언어학의 Colorless green ideas sleep furiously처럼 서로 개연성이 없는 생뚱맞은 단어들(저 문장 자체는 절대 쓰지 말 것! ㅋㅋ), 내가 좋아하는 무리수나 엄청 방대한 소수의 x~y째 자리수의 base64 인코딩 등을 섞으면 공격자가 뚫기 대단히 어려운 암호를 만들어 낼 수 있다. 그리고 까먹었더라도 그 암호를 생성하는 공식을 기억하고 있으니 나중에라도 컴퓨터를 돌려 언제든지 다시 만들 수 있다.

그리고 굳이 저런 식으로 머리를 안 굴리더라도, 본인 같은 사람은 직업 특성상 맨날 숫자와 특수문자와 알파벳이 뒤죽박죽 섞인 문자열을 취급하는 게 일이니... 저런 조건을 모두 만족하는 진짜 암호스러운(cryptic) 암호(password)를 의외로 금방 떠올릴 수 있었다.
요즘은 암호 관리자 전용 앱도 많이 나와 있는데, 이런 식으로 암호 생성기가 같이 연계되고 각 포털 사이트별로 암호 변경 주기를 관리도 해 주는 똑똑한 앱이 있으려나 궁금하다.

터치스크린 입력 방식이 시각 장애인에게 악재인 것만큼이나(점자!)..
PC와는 구조적으로 다른 스마트폰의 문자 입력 방식은 무질서도가 높은 암호를 입력하는 데 악재인 것 같다.
작은 화면에서 알파벳, 숫자, 특수문자를 섞어서 수월하게 입력하는 게 압도적으로 불편하고 까다롭기 때문이다.
물론 그 때문에 거기에는 패턴 제스처 같은 다른 암호 입력 방법도 등장했겠지만, 아무래도 문자 입력만치 보안이 강력하지는 못하다.

끝으로 글을 맺으며 든 생각이 있다.
우리말은 엄연히 다른 개념인 password와 encrypt/cryptic이라는 두 의미가 '암호(화)'에 모두 담겨 있다.
이건 어찌 보면 '다른'에 different와 another가 모두 포함돼 있고, 조사 '과/와'에 and뿐만 아니라 with가 섞여 있으며
단순히 시계의 표시 시각이 이르거나 늦은 것까지 다 '빠르다/느리다'로 표현하는 것만큼이나..
일면 좀 부정확하고 어정쩡하게 들린다.

하지만 한국어만 저렇게 한데 싸잡아 표현하는 건 아닌 듯하다.
또한 '암호'는 정보에 대한 접근 가능 여부 자체를 binary로 통제하는 것이고 '암호화'는 정보에 접근했더라도 해독을 못 하게 하는 것인데.
암호화를 해독하기 위한 암호가 있기도 하니, 목표면에서는 굳이 서로 떼어서 생각할 필요가 없는 비슷한 개념인지도 모르니까 말이다.

Posted by 사무엘

2014/11/04 08:37 2014/11/04 08:37
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1025

1. 일반적인 자동차

잘 알다시피 핸들 조작을 통해 앞바퀴의 진행 방향을 좌우로 꺾을 수 있다. 앞바퀴의 조향은 직관적이며 조향 중에 전방만 잘 응시하면 된다는 장점이 있다. 모퉁이에서 너무 서둘러 조향을 시작하는 바람에 회전 방향의 안쪽의 장애물과 차가 충돌하는 사고가 날 가능성을 줄인다는 뜻. 하지만 제일 전방에 있는 바퀴가 돌기 때문에 조향을 위한 회전 반경이 커진다는 단점도 있다.

방향이 꺾인 앞바퀴는 회전 중에 좌우의 바퀴가 서로 다른 속도로 돌게 된다. 회전반경 안쪽의 바퀴가 더 천천히 돌 수밖에 없으니 말이다. 그러니 전륜구동이라면 회전 중에 이런 것까지 감안해서 좌우의 바퀴에 엔진의 동력이 서로 다른 비율로 전달돼야 한다는 점을 혹시 생각해 보셨는지? 자동차 파워트레인의 차동기어가 하는 일이 이것이다.

2. 지게차

좁은 공장 안에서 작업하는 것까지 염두에 둔 이런 차량은 회전 반경을 최소화하기 위해 앞바퀴뿐만 아니라 뒷바퀴도 자유자재로 조향 가능하다. 평소에 도로를 직진으로 주행할 때도 조향은 뒷바퀴로 하는 편이라고 한다.

3. 탱크 같은 무한궤도 차량

얘는 모든 바퀴가 무한궤도에 일렬로 매여 있기 때문에 특정 바퀴만 방향을 틀 수가 없다. 그럼 조향을 어떻게 할까?
의외로 간단하다. 왼쪽 궤도와 오른쪽 궤도의 회전 속도만 인위적으로 다르게 하면 된다. 바퀴가 마치 지네처럼 앞, 중간, 뒤 등에 온통 달려 있기 때문에, 오히려 차량의 중앙을 축으로 삼고 제자리에서 차체를 빙글빙글 돌리는 것조차 가능할 정도이다. 즉, 탱크는 조향 능력에 관한 한은 지게차에 필적할 정도로 탁월하다. 전혀 걱정할 필요가 없다.

4. 철도 차량

깔끔하게 '노답'이다. 철도 차량은 운전대에 핸들에 대응하는 기기가 없으며, 오로지 전진 아니면 후진만 가능할 뿐 스스로 조향을 전혀 할 수 없는 유일한 교통수단이다. 선로 분기는 전적으로 외부에서 해 줘야 한다.

5. 비행기

비행기는 날고 있을 때는 날개의 배치를 바꿈으로써 공기의 흐름을 바꿔서 좌우 정도가 아니라 상하로도 기수의 진행 방향을 조정한다. 양력을 얻는 주날개뿐만 아니라 수직 꼬리날개의 역할이 매우 중요하다.
또한 비행기의 랜딩기어 바퀴는 자동차 바퀴처럼 조향이 가능하다. 옛날 비행기는 뒷바퀴를 조향하는 형태였지만 요즘 비행기는 자동차처럼 앞바퀴를 쓰는 게 추세라고 한다.

대형 여객기는 복잡한 여객 터미널에서 활주로로 이동할 때 견인차의 도움을 받기도 하기 때문에, 바퀴는 어떤 것이든 방향 전환이 가능하긴 해야 한다.
물론 헬리콥터는 수직 이착륙이 가능한 물건이니 지상에서의 조향은 전혀 필요나 의미가 없다.

6. 선박

선박의 추진력을 책임지는 선미 부분의 스크루를 보면, 뒤에 아무것도 없는 게 아니라 방향키라고 불리는 칸막이 같은 게 있다. 조타기를 돌리면 바로 그 칸막이의 각도가 바뀌며, 스크루의 회전에 의해 밀려난 물의 진행 방향이 바뀐다. 이로써 배의 진행 방향이 바뀐다.

사용자 삽입 이미지
따지고 보면 배도 개념적으로 뒷바퀴를 조향하는 셈이다. 오늘날의 어마어마하게 크고 무거운 배를 항구에다 사고 없이 제대로 정박시키는 것은 '도선사'라는 별도의 전문직을 필요로 할 정도로 대단히 까다롭고 어려운 일이다. 자동차로 치면 '발렛 파킹'이다.

한편, 옛날의 외륜선은 그럼 조향을 어떻게 했는지가 좀 궁금해진다. 걔네들도 바퀴 바로 뒤에 물의 진행 방향을 바꾸는 장치가 있었나? 아니면 외륜 자체를 조향하는 장치가 있었는지?

우리 주변에서 흔히 볼 수 있는 자동차는 일반적인 동그란 핸들이 달려 있다.
조향 장치가 없는 철도 차량은 가속과 감속을 시키는 레버가 운전의 상징이다.
(자동차만 핸들의 중심이 유난히 두터운 건.. 다들 에어백이 달려 있어서 그런 것이고)

사용자 삽입 이미지사용자 삽입 이미지
비행기는 3차원 공간을 떠 다니는 물건이다 보니 조이스틱 같은 조종간이 있다.
그리고 배는.. 물레방아처럼 생긴 동그란 고리인데 고리의 밖에도 일정 간격으로 손잡이가 달린 그 전형적인 조타기가 아무래도 상징인 듯하다.
사용자 삽입 이미지사용자 삽입 이미지

자동차는 소속 국가가 좌측/우측 중 어느 방향 통행을 표준으로 하고 있느냐에 따라서 운전대의 위치가 달라진다.
그러나 비행기는 승객은 진행 방향 기준 무조건 왼쪽으로 탑승하고, 화물은 오른쪽으로 탑승하게 되어 있다. 이것은 전세계 공통 관행이다. 그러니 여객기에 승객용 탑승교가 연결된 사진을 찾아 보면 10이면 10 모두 왼쪽에 붙어 있다.
철도는 애초에 조향이 존재하지 않기 때문에 운전대 방향이 아무 의미가 없을 것이고, 선박은 어떠한지 잘 모르겠다.

Posted by 사무엘

2014/10/29 08:31 2014/10/29 08:31
, , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1023

마피아 게임 외

1980년대에 구소련은 미국 포함 전세계에 퍼져 나간 명게임을 두 종류 발명해 냈다.
하나는 1984년, 알렉세이 파지노프라는 프로그래머가 개발한 테트리스라는 비디오 게임이고,
다른 하나는 1986년에 드미트리 다비도프라는 심리학자가 고안한 오프라인 소셜 게임인 마피아 게임이다. MT 같은 데서 많이 해 보셨을 그 게임 말이다.

테트리스에 대해 잠깐만 언급하고 넘어가자면, 과거 도스 시절에 아래아한글은 테트리스와 두 번 인연이 있었다. 1.51도 나오기 전, 1.2 시절에 잠깐 텍스트 모드에서 실행되던 테트리스를 액세서리로 제공한 적이 있었다가 나중에 2.5 내지 3.0에서 덧실행 기능이 추가되면서 테트리스가 덧실행 프로그램이라는 명목으로 재도입되었다.

테트리스는 게임 자체야 메카닉이 매우 간단하니, 그래픽· 비주얼은 걍 발로 만든 수준으로 넘긴다 해도 게임 진행만 되는 물건 형태로는 고딩/대딩 수준의 프로그래밍 실력으로 몇 시간만 코딩하면 뚝딱 만들 수 있다. 하지만 테트리스의 저작권을 보유한 회사가 지금도 시퍼렇게 살아 있으니, 이걸 상업용 소프트웨어에다 번들로 제공하거나 유료 게임 서비스를 하려면 꽤 막대한 양의 로얄티를 지불해야 한다.

잘 알다시피 테트리스는 엄청난 히트를 쳤다. 이것 때문에 학교와 직장 곳곳에서 지각과 태업이 속출하는 바람에, 이건 자본주의 진영을 몰락시키기 위해 소련이 몰래 개발해서 퍼뜨린 거라는 음모론이 나돌 정도였다. 그래도 테트리스 자체에는 딱히 이념적인 요소가 있지는 않다.
그에 반해 마피아 게임은 역시 소련스럽다는 생각이 든다. 스머프도 주인공과 설정에 공산주의 프로파간다가 듬뿍 담긴 만화영화라는 음모론이 있는데, 그것보다는 더 현실적이다.

마피아는.. 인간의 죄성을 교묘하게 잘 이용하는 심리· 정치 게임이다. 게임을 해 본, 특히 크리스천이라면 이 말에 절실히 공감할 것이다.
그리고 우리나라 건국 초기에 벌어졌던 좌우익 진영 대립과 광기어린 학살극은.. 더도 말고 덜도 말고 딱 마피아 게임의 현피 실사판이라고 생각하면 된다.

전국 곳곳에서 파업, 폭동, 반란이 벌어지고 유언비어 공산주의 선동질에 사회가 극도로 혼란스럽다. 이걸 가만히 놔 두면 나라는 완전히 끝장 나고 망한다. 그러니 쟤들을 색출해서 잡아 가두고 죽이긴 해야 하는데.. 악의 무리들이 대놓고 “내가 빨갱이요”라고 정체를 밝힐 리가 있나..;;

온갖 거짓말이 횡행하고 서로를 믿을 수가 없고, 자고 일어나면 누가 죽어 있을지 모른다. 위에서 까라니 까야 되고 실적을 만들어야 하는 아래 부하들 입장에서는.. 속된 말로 없는 빨갱이라도 만들어 내야 할 판이 된다. 이런 극심한 스트레스 속에서 반공 진영이건 용공 진영이건 맛이 안 가는 게 이상한 일이다.

마피아만 해도 내가 살아남기 위해서 거짓말을 해야 하고 대신 남을 마피아로 몰아서 죽이는 것 때문에 일명 '우정파괴 게임'으로 통한다. 하물며 그게 당장 내 목숨이 걸린 현실이라고 생각해 보시라.
게다가 마피아 게임은 이거 뭐 아무 단서가 없으니 동등한 조건에서는 마피아가 승률이 시민보다 더 높을 수밖에 없다(심지어 경찰과 의사가 있다고 해도). 그렇기 때문에 아무리 민주주의 인권 운운하는 국가라 한들, 이런 상황에서는 시민의 승률을 강제로 높이기 위해서 초법적인 비밀 첩보/수사 기관을 두는 것이다.

이런 상황 설명 없이, 남로당의 사악한 만행은 쏙 빼 놓고 서북 청년단만 무슨 악의 축인양 욕한다? 혹은 좌우익 둘 다 똑같이 잘못했다고 양비론으로 퉁쳐? 내 양심으로는 동의할 수 없다. 모르고 그런 주장을 한다면 바보인 것이고, 알고도 그런 거짓말을 일부러 퍼뜨리는 거라면 사악한 자이다. 이거 뭐 일본의 역사 왜곡을 욕하고 걱정할 처지가 아니다.

좌익의 요인 암살, 양민 학살, 대중 선동에 맞서서 '눈은 눈으로, 이는 이로' 정신으로 화답한 게 우익 측의 폭력이었다. 자기는 기독교 욕하면서 남은 성령 충만한 크리스천이길 바라는 것은 도둑놈 심보이지 않은가?

4·3 사건 같은 것도.. 진압 과정에서 대규모 양민 학살이 있었던 것은 분명 너무 과한 흑역사긴 하지만, 그건 분명 주모자가 우리나라 건국을 방해하려고 사전 준비되어 온 조직적인 폭동을 일으켜서 경찰서를 습격하고 경찰 가족이나 젖먹이까지 죽이면서 일으킨 반란이다.

흑역사는 흑역사로 뉘우치고, 정부 입장에서 사과하는 것은 해야 할 것이다. 그러나 그 흑역사로 말미암아, 국가 전복 반역 행위가 그저 '민주화 운동'으로 둔갑되어서는 안 될 것이다. 비유하자면 대한민국 정부는 미군에 의해 후세인이 축출된 이라크 정부, 조선로동당은 그 이름도 유명한 IS, 그리고 서북 청년단 같은 반공 단체는 IS의 착취와 악행에 완전히 학을 뗀 쿠르드 민병대 정도에 대응한다고 봐도 되겠다.

그러고 보니 제주도에는 4·3 사건 말고도.. 이 재수의 난 같은 사건도 있더군.. 이런 와중에 우리나라가 공산화되지 않고, 필리핀이나 중남미처럼 되지도 않고 이렇게 우뚝 선 건 정말 기적이고 고마운 일이 아닐 수 없다.

이상, 마피아 게임으로부터 든 일련의 생각들이었다. =_=;;
남로당에 대해 절대 침묵하면서 서북단 청년단만 때리는 이런 치우친 아저씨들 때문에.. 한글, 철도, 기독교, 컴터 얘기만 화기애애하게 이어졌을 내 블로그와 SNS도 심각한 글, 과격한 글이 올라올 수밖에 없는 것이다.

나는 누군가가 지금 대통령에 대해서, 일베에 대해서, 혹은 새누리당과 새민련에 대해서 정치적 견해가 다른 것은 얼마든지 용납한다. 그러나 필요악과 절대악의 관계에 대해서 이상하게 생각하는 건 좀 용납하기 힘들 것 같다. 앞으로 어지간해서는 '필요악'을 주제로 또 글 쓸 일이 없었으면 좋겠다.

Posted by 사무엘

2014/10/27 08:23 2014/10/27 08:23
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1022

예레미야서 분석

구약 성경에서 예레미야는 일명 '눈물의 선지자(대언자)'라고 불리는 하나님의 사람이었으며, 이사야서 다음에 나오는 예레미야서와 예레미야애가의 저자이다.

앞의 책인 이사야서에서도 앞부분에 잠깐 민족의 타락 얘기가 나오지만 분량이 그리 많지 않으며 얘는 외국 민족에 대한 예언이 더 많다.
그 반면, 예레미야서는 외국 민족에 대한 예언은 뒷부분에 잠깐 나오는 게 전부이고 주 내용은 민족의 타락에 대한 책망이다. 그리고 결정적으로 항복하고 바빌론으로 잡혀 가야 모두가 살 수 있다는 정치적인 얘기도 많다. 이 때문에 그는 당대의 동족들로부터 반역자라고 욕을 엄청 먹었으며 살해 위협을 받고 폭행, 투옥과 감금도 당했다.

예레미야라는 이름의 히브리 음차 알파벳 철자는 Jeremiah이지만, 그리스어가 기본인 신약 성경에 가면 Jeremias와 Jeremy도 나온다. 뭐, 신약이라고 해 봤자 실질적으로 나오는 책은 마태복음밖에 없지만. Jeremy는 오늘날에도 영미권에서 인명으로 등장하는 경우가 있다.

마태복음에서는 예레미야의 예언이 성취된 게 두 건 있다고 언급한다.
하나는 렘 31:15 “라마에서 애통하며 몹시 슬피 우는 소리가 들렸는데 ...”를 인용한 마 2:17-18인데,
정작 구약 본문을 보면.. “엥? 그게 그 얘기예요? 이 문맥이 헤롯 왕의 유아 학살과 도대체 무슨 관계가 있나요?” 싶은 생각도 든다.
마태복음의 저자가 그게 그 예언이라고 의미를 인위적으로 부여하지 않았으면 눈치를 채기가 어려웠을 것이다. 본문 자체가 과거, 교리적, 예언적으로 굉장히 중의적으로 기록되기라도 했는가 보다.

그리고 또 하나는 마 27:9인데.. 이건 좀 더 어려운 문제이다.
예레미야의 예언이 성취된 거라고 하나, 정작 예레미야서에는 예수님과 관련해서 은 30냥 인신매매 같은 걸 암시하는 구절이 존재하지 않는다. 토기장이? 예레미야서에는 18~19장 사이에서 토기장이가 빚는 토기 관련 퍼포먼스만이 있을 뿐이다.
오히려 예수님이 은 30냥에 팔리는 것을 암시하는 예언은 스가랴서에 있다. (슥 11:12-13)

그럼 이건 도대체 어찌 된 일일까?
더구나 KJV 유일주의를 믿는 사람들은 이것과 거의 같은 패턴의 오류를 지적하면서 KJV 이외의 다른 변개된 성경들이 잘못됐다고 까기도 했다.
바로 막 1:2-3 말이다. 거기에는 이사야서 인용도 있고 말라기서 인용도 있다. “이사야 + 말라기 = 대언자들(prophets)”이 돼야 맞는데, 변개된 성경에서는 말라기의 예언까지 싸잡아서 '대언자 이사야의 글'이라고 써 놨으니 이는 명백한 오류인 것이다.
애초에 이런 논리를 펴기까지 했으니 신구약간 예언 언급의 정확도에 대해서 KJV 빌리버는 민감하게 접근해야만 한다.

그러나 막 1:2와 마 27:9의 다른 점을 굳이 찾자면..
전자의 경우 명백하게 대언자들의 글이라고 written이라는 동사가 있는 반면, 마태복음의 예레미야 인용은 그냥 spoken이라는 것이다. 예레미야도 은 30냥 운운하는 예언을 하긴 했지만, 그건 구전으로만 전해졌을 뿐 예레미야서에 정식으로 기록되지는 않은 모양이다.
마치 예수님의 가르침 중 “주는 것이 받는 것보다 더 복되다”(행 20:35)와 비슷한 급의 예외로 받아들이면 될 것 같다. 저 말 역시 정작 사복음서에서는 어디에도 등장하지 않기 때문이다.

이사야서야 “처녀가 아들을 낳을 것이다”(7:14)를 비롯해 50장, 53장 등에서 예수님 예언이 잔뜩 들어있다. 하지만 예레미야서는 관심사가 온통 바빌론 포로일 뿐, 딱히 예수님 예언이 있는 것 같지는 않다. 그럼에도 불구하고 저런 예외적인 힌트를 통해 예레미야 역시 그 먼 옛날에 예수님에 대한 여러 암시와 힌트를 받긴 했다는 추측도 할 수 있다.

그럼, 다음으로 예레미야서 자체의 특징을 좀 살펴보도록 하자.

1. 성경의 다른 책들에 대한 오마주가 생각보다 많다. 간단한 예로,

  • 1인칭의 자조적인 기도(느헤미야)
  • 악인의 형통에 대한 회의와 의문: 시편 73편, 하박국 1장뿐만 아니라 예레미야서에도 12장에 이런 내용이 있다.
  • 자기가 태어난 날에 대한 저주(욥기): 특히 20장 끝부분은 이거 예레미야서가 아니라 욥기 3장을 읽고 있나 하는 생각이 들 정도의 노골적인 분위기이다.

그도 그럴 것이 예레미야서의 앞부분은 워낙 암울한 논조이기 때문에 저런 내용이 전부 등장한다고 해도 이상할 게 없다.

에스겔서 오마주라고까지 할 수 있는지는 모르겠지만, “아버지가 신 포도를 먹어서 아들까지 이가 시리다”라는 잘못된 조상 은덕/조상 탓 통념에 대한 반박이 렘 31:29와 겔 18:2에 같이 나온다.

또한 거짓 대언자와의 대결이 있다. 열왕기와 역대기에 '미가야 vs 시드기야'를 기억하시는지? 예레미야서에는 28장에서 하나냐와의 대결이 나온다.
거짓 대언자 시드기야는 참 대언자 미가야의 따귀를 때리면서 도발을 했는데, 거짓 대언자 하나냐는 예레미야가 퍼포먼스 차원에서 걸고 있던 나무 멍에를 뺏어서 부러뜨리면서 “여러분 이거(= 예레미야의 말) 다~~~ 거짓말인 거 아시죠? 하나님은 바빌론의 멍에를 '이렇게' 꺾어 버리실 겁니다!”라고 선동질을 제대로 했다.

이런 개막장 분위기에 예레미야는 기도 안 차서 그냥 자리를 떠 버렸고.. 하나냐는 그로부터 두 달 뒤에 하나님으로부터 천벌을 받아 급사했다고 성경에 나온다.

아울러, 예레미야서에는 사도행전을 오마주한 듯한 장면도 있다.
예레미야로부터 너무 과격하고 파격적인 메시지를 들은 뒤 사람들이 “이 자식 이거 어떡하면 좋을까? 예전에도 좀 똘끼 부리는 사람이 있긴 했는데 그때는 이렇게 됐었다” ... 처럼 '전례'를 따지고 드는 내용이 있다.
이건 베드로와 사도들의 설교를 듣고 유대인들 공회가 보인 반응과 매우 유사하다. 행 5:36-39와 렘 26:17 이후를 서로 비교해 보시라.

그 뿐만이 아니다. 성경에서 에티오피아 내시가 나오는 장면도 사도행전 8장과 더불어 예레미야 38장이며, 둘 다 긍정적으로 나온다. 전자에서는 내시가 예수 믿고 구원을 받고 침례를 받으며, 후자에서는 내시가 예레미야를 구출해 준다! 하나님 역시 그 내시에게 보상을 해 주셨다(렘 39:16-18).

2. 예레미야서에서 대표적으로 자주 등장하는 단어 내지 관용구로는

  • 칼, 기근, 역병 sword, famine, pestilence 3종 콤보 세트
  • 일찍 일어나 ...하기 rising up early and ...ing
  • backsliding(타락하는): 성경 전체를 통틀어 예레미야에서만 압도적으로 자주 쓰인다.
  • unpunished: “니가 아무 벌도 안 받고 그냥 넘어가지는 않을 것이다”라는 문맥에서 몇 번 나온다. 이 단어는 잠언과 예레미야서에서만 나온다.
  • horrible thing: “그 땅에서 놀랍고도 무서운 일이 이루어졌도다.” (렘 5:30) 요즘 식으로 치자면 충격과 공포 정도 되겠다.

이 정도가 있다.

3. 이 책에는 했던 말 반복 패턴이 심심찮게 등장한다.

예를 들어 예레미야서는 성경에서 주 우리의 의(The LORD our righteousness)라는 말이 나오는 유일한 책인데, 23:6과 33:16에 걸쳐 반복해서 등장한다.

상처를 조금만 고쳐 주고는 평안이 없는데 평안 드립을 치는 것: 6:14와 8:11에서 반복된다.
도벳에 있는 힌놈의 아들 골짜기는 앞으로 '살육 골짜기'라고 불릴 것이다: 7:32와 19:6에서 반복된다.
그 많은 기적이 행해졌던 이집트 탈출 사건보다도 바빌론 귀환 사건이 더 큰 기적이라고 알려질 것이다: 16:14-15와 23:7-8에서 반복된다.

여러 이방 민족들에게 심판을 선포하는 뒷부분에서도 49:18-20과 50:40,44-45처럼.. 뭔가 copy & paste 같은 느낌이 드는 표현이 심심찮게 발견되는데, 단어를 하나씩 일일이 대조해 보면 완전히 같지도 않고 약간은 차이가 발견된다. 10:12-16와 51:15-19도 헛된 우상들을 까는 문맥에서 동일한 메시지 copy paste이다.

그리고, 열왕기하의 끝부분은 예레미야서의 끝부분과 같다. (왕하 25:27-30; 렘 52:31-34)
한편 역대기하의 끝부분은 바로 다음 책인 에스라서의 첫부분과 같다. (대하 36:22-23; 스 1:1-2)
그러니 역사서인 열왕기와 역대기는 책 자체에는 저자에 대한 정보가 전혀 존재하지 않지만, 이 역시 각각 예레미야와 에스라가 기록한 게 아닌가 하는 추측이 다소 설득력을 얻는다.

4. 이 외에 예레미야서에서 인상적인 부분

  • '하늘의 여왕'이 언급돼 있으며(7:18, 44:17-18) 크리스마스 트리를 까는 듯한 대목(10:3-5)이 나오는 유일한 책
  • '마음이야말로 가장 사악하다'(17:19), '옛 길로 가라'(6:16) 같은 유명한 구절이 있음
  • 일명 하나님의 전화번호라고 불리는 렘 33:3이 예레미야서에 있음

성경의 여느 역사서와 선지서들이 그렇듯이 예레미야서 역시 이스라엘과 유다의 죄악에 대해서 혹독한 경고와 심판을 선포한다. 그러나 그렇게 멸망하고 끝인 게 아니라 이 하나님의 선민들은 나중에 반드시 회복되며, 이들을 징벌하는 도구로 쓰였던 민족들이야말로 하나님을 대적하고 교만하게 굴었다가 아예 씨도 안 남기고 처절하게 망한다는 것이 성경의 일관된 결론이다.

“쟤들? 어차피 자기네 신 제대로 안 믿어서 저 꼴 난 거잖아? 그러니 우리가 마음껏 막 대해도 되지”...를 성경은 절~대로 지지하지 않는다는 것이다.
이게 요즘 식으로 표현하면 “이스라엘 애들은 예수님을 십자가에 못 박아 죽인 민족이니 꼴 좋지”이다. 반유대주의는 그 어떤 경우에도 성경적인 생각이 아니다. 우리 말고도 이스라엘을 싫어하고 괴롭히고 그들을 심판하는 도구로 쓰이다가 덩달아 망할 악역들은 차고 넘치니 크리스천이 그런 데에 가담하지는 말아야 한다.

오죽했으면 네가 낮과 밤 천체 운동을 뒤집어엎을 수 있다면 이스라엘 회복 약속도 뒤엎어버릴 수 있을 거라고까지 성경은 말한다. (렘 31:35-37)
바빌론으로 70년간 포로로 끌려가더라도 “일단 항복만 하면 니 목숨은 내가 절대 보장한다. 무슨 여행, 요양이라도 다녀 오듯이 잘 갔다 오너라”이다.

사람 인생에서는 잠깐 갔다가 돌아올 거라고 생각했던 여행이 영원히 못 돌아오는 단절이 되어 버리는 경우가 많다. 1차 세계 대전, 6·25 전쟁 중의 1·4 후퇴, 그리고 이 승만 대통령의 하와이 요양 등..
그런데 바빌론 포로 귀환은 이런 추세를 정면으로 역행하는 사건이다. 이때는 이집트의 10재앙 같은 것도 없고, 모세 같은 넘사벽급의 걸출한 지도자가 없는데도! 그래서 이 사건이 모세의 기적을 능가하는 초자연적인 사건이라고 불리는 것이다.

예레미야서는 이렇게 생각할 거리가 많을 뿐만 아니라, 성경 말씀의 보존이라는 관점에서도 꽤 중요한 비중을 차지하는 책이다. 하나님의 말씀을 스스로 불과 쇠망치에다 비유하였으며(23:29), 말씀 변개(perverted the words of the living God)에 대한 언급(렘 23:36)이 있기 때문이다. 36장과 끝부분에서는 성경 자필 원본이 소실되는 장면도 있다.

Posted by 사무엘

2014/10/24 08:24 2014/10/24 08:24
, ,
Response
No Trackback , 3 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1021

지난 14년간 개발되어 온 <날개셋> 한글 입력기의 유구한 역사를 표 하나로 요약하면 다음과 같다. 문득 이런 표를 한번 만들어 보고 싶었다. ^^

버전 플랫폼/모듈 구조 편집기의 에디팅 엔진 입력 기능 기타
1 ('00) 편집기+라이브러리 2바이트 조합형 기반. 옛한글 지원 안 함
줄당 글자수 제한 있었음
16비트 입력 단위
글쇠배열만 차이가 나는 2개의 입력 항목
세벌식 모아치기, bksp 없이 낱자 수정, bksp 달라붙기+역도깨비 등의 세벌식 응용 기능 최초 제공
 
2 ('02) 초보적인 수준의 플러그 인과 TSF 모듈 한컴 2바이트 기반+완조형 옛한글
줄당 글자수 무제한+탭+자동 줄바꿈 최초 지원
32비트 입력 단위
최대 4개의 독립된 입력 항목
입력 설정치의 한계값이 더 커짐
가상 낱자, 최종 변환 규칙 도입
한글 입력 순서 재연 기능 최초 도입
편집기 프로그램은 이때 지금과 같은 골격을 거의 갖춤
3 ('04) 유니코드 API 기반
최초로 외부 모듈 도입
플러그 인 구조 확립
지금과 같은 파일 구조, 제어판 UI 확립
유니코드. 조합형 옛한글 표현 가능해짐
TSF+운영체제 IME를 통한 입력도 지원
불연속 다중 블록, drag & drop 최초 지원.
초보적인 수준의 undo 지원
64비트 입력 단위 확립
임의의 개수의 입력 항목과 전환 규칙 (단축글쇠)
한글 여러 성분을 한 글쇠에 한꺼번에 배당
입력 스키마+문자 생성기 계층 확립
글쇠와 오토마타는 수식 기반
임의의 문자 조작 프로토콜 뼈대 첫 도입
특수 도깨비불, 결합 축약 규칙, 사용자 정의 조합
지금과 같은 형태의 제어판 UI
도움말 전면개정
4 ('06) 64비트 바이너리 도입
지금과 같은 디렉터리 구조 확립
외부 모듈 안정화, Windows Vista 규격 지원 추가
undo 알고리즘이 훨씬 더 강력해짐
조합 상태를 표시하는 방법(cursor/밑줄 등)이 더 정교해짐
세로쓰기 지원
  다양한 외부 글쇠배열 파일 읽기 기능
XML parser, 상수 명칭 테이블 도입
외부 모듈에서 옛한글 입력 가능해짐
지금과 같은 형태의 다국어 UI 지원
5 ('08) 변환기, 입력 패드 도입
입력 설정 파일 포맷이 지금과 같은 형태로 완전히 정착함
시스템 DLL 의존 방식 변경
유니코드 5.2 옛한글 추가 지원
비정규화 문자열도 정상 처리하고 비표준 동작 없어짐
임의의 조합 테이블을 내장한 한글 글꼴 지원
문자 조작 프로토콜 1차 개정
보조 입력 도구 도입
다중 문자, 음절 구분 방식이 다른 다중 한글 자모 추가
예제 입력 도구 추가
6 ('11)   대용량 데이터를 처리하는 속도가 훨씬 더 빨라짐
텍스트 변경 후 화면을 갱신하는 알고리즘을 전면 개선함
초-종성 공유 낱자 결합 규칙, 두벌식 종성 전용 타입
자동 조합 종료 타이머
bksp 동작 방식 세분화
단어 단위 한자 변환
사용자 정의 글쇠 인식 기능
다양한 텍스트 필터 추가
도움말 전면개정
7 ('13) 외부 모듈에 Windows 8 지원 추가   내부 입력 로직 및 (한글 입력 순서 재연 기능) 전면 개편
문자 조작 프로토콜 2차 개정
후보 변환 기능 세분화(#1~#4)
글자판 전환 수식에 C, N 변수 추가
bksp 동작 연쇄 적용 옵션
고급 입력 스키마, 고급 입력기에 고급 치환 기능 추가
TSF A급 한정, 외부 모듈에서도 옛한글에 대한 고급 조작 가능해짐
프로그램 아이콘 전면개정

1.x부터 7.x까지 각 메이저 버전대에서 이뤄진 진짜 중요한 과업들을 정리하였다. 저 표에 아이템 한 줄을 적기 위해서 최하 수 주~한두 달 가까이 작업을 해야 한 것들이 즐비하다. 14년 짬밥이 어디 간 게 아니다.

역시 3.x대가 제일 파격적인 변화가 많았다. 그러나 그 변화가 사용자들에게 제대로 와 닿기 위해서는 4.x 이후에서 도입된 무수한 편의 기능들이 뒷받침돼야 했다.

각 시기별로 중점적으로 개발이 진행되었던 분야가 있다. 일종의 유행이랄까? 가령, 4.x때는 여러 분야에서 발전이 있었지만 한글 입력 본연의 역할과 관련된 기능이 추가된 건 거의 없었다.
그 반면, 5~6.x까지 거치면서 프로그램의 모듈 구조나 에디팅 엔진 등이 그럭저럭 완성된 뒤에는 지금까지 오로지 한글 입력 엔진 쪽에만 미친 듯이 작업이 진행되고 있다. 굵고 붉은 단어가 현재의 작업 내역이다.

7.x대에서 <날개셋> 한글 입력기의 완전체 진입이 이뤄지지 않으려나 희망을 걸어 본다.

Posted by 사무엘

2014/10/21 08:30 2014/10/21 08:30
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1020

흔히 컴퓨터라고 하면 미국에서 발명되었으며 그 때문에 각종 명령어와 메시지도 기본적으로 죄다 영어이고, 한국어· 한글과는 굉장히 어울리기 힘든 범접할 수 없는 기계라고 여겨져 왔다. 지금처럼 컴퓨터의 자원과 성능이 비약적으로 향상되고 국제화 기술이 발달하기 전에는 말이다.

그런데 컴퓨터와 더불어 현대 과학 기술의 양대 결정체라고 불리는 자동차도 사정은 비슷한 듯하다. 비록 자동차는 컴퓨터처럼 정보를 다루는 기계가 아니기 때문에 문자· 언어와 직접적으로 얽혀 있지는 않지만, 국산차라 해도 차의 내부와 외부에서 한국어· 한글을 찾아볼 수는 없었다.

물론 우리나라가 초기에는 외제차를 수입해서 조립 판매하는 수준이고 또 내수보다 수출에 목숨을 걸어야 하는 만큼, 차이름 역시 알파벳으로 적고 발음하기 쉽게 지어야 한 건 사실이다. 그래도 국산차에까지 한글 표기에 너무 인색했던 건 아쉬운 점이다. '시발' 자동차만 해도 당당히 앞에다가 ㅅㅣ-ㅂㅏㄹ이라고 풀어쓰기로 당당하게 이름을 적어 놓지 않았던가?

(여담. 풀어쓰기에다가 장음 부호 '-'까지 덧붙인 것은 아무래도 한글을 좀 일본어 카타카나 스타일로 표기한 게 아닌가 싶다. 오늘날에는 단어가 비속어 욕설과 비슷하게 들리게 되어 난감해진 건 차치하고라도, 장음 부호 때문에 '시발'이 아니라 언뜻 보기에 '사발'처럼 보이니 더욱 안습하긴 하다..)

아무튼, 본인은 언제부터 영어 알파벳을 읽고 쓸 줄 알게 됐는지 기억이 확실치 않다. 하지만 아마 컴퓨터를 접하기 전에 자동차의 뒤에 적혀 있는 EXCEL, PONY, PORTER 등의 이름들을 읽으면서 알파벳을 자연스럽게 습득했을 가능성이 높다. 즉, 알파벳을 뗀 뒤에 컴퓨터를 자연스럽게 시작한 것이다.

그럼 우리나라에 순우리말로 명명된 자동차가 전혀 없었는가 하면.. 그렇지는 않다. '시발'은 우리말이긴 하나 한자어이기 때문에 순우리말은 아니고.
대표적인 차는 바로 지금으로부터 거의 30년 전에 생산되었던 대우 자동차의 '맵시'이다.

사용자 삽입 이미지

'맵시'가 고유명사로 쓰인 예로는 아래아한글의 글자 꾸밈/배너 그리기 프로그램인 '글맵시'와 더불어 저 자동차를 떠올리면 된다. 본인은 아주 어렸을 때 실물을 본 기억이 있다.

'맵시'의 후속 모델은 '맵시-나'이다. 여기서 '나'는 다른 접사가 아니라 '가나다' 할 때의 '나'이다. 즉, 요즘 같았으면 '맵시 II(투)' 또는 '뉴 맵시'인 셈인데, 후속 모델을 뜻하는 단어까지 우리말로 붙인 것이다.

사소한 사항인지는 모르겠지만, 기껏해야 배기량 1500cc를 채 넘지 않는 소형차가 타이어의 휠너트가 5개인 것이 인상적이다. 현대 차의 경우 2000cc급부터 시작하는 그랜저조차도 초기 모델은 4개였기 때문이다. 그러다가 그랜저는 뉴 그랜저부터 5개로 올라갔고, 쏘나타는 EF까지 다 여전히 4개이다가 NF부터 5개로 올라갔다.

옛날에는 휠너트가 5개인 승용차를 보면 최하 중형 이상급의 고급차 외제차 같은 느낌이 들었다. 어린 나이에도 그런 걸 느꼈다.

자, 다음으로 기억에 남는 순우리말 자동차는 '누비라'인데, 맵시와 누비라 모두 대우 자동차의 작명이라는 것도 주목할 만하다. 특히 에스페로의 후속 차종인 '누비라'의 경우, 세계를 누비고 다니는 차가 되라는 의미로 김 우중 회장이 직접 지은 거라고 한다. 오늘날의 열차 이름인 '누리로'와 비교된다.

현대/대우/기아에서 내놓은 승용차 중에서는 이 정도가 전부인 듯하고, SUV중에는 쌍용 자동차의 '무쏘'가 바로 코뿔소를 뜻하는 '무소'를 변형한 명칭이다. 스포츠스러운 느낌을 그럭저럭 잘 표현했다.

그리고 '야무진'이라는 굉장히 기발한 이름의 1톤 트럭이 있었다. 삼성 자동차에서 아주 초창기이던 1998년에 내놓은 물건인데, 경영난 때문에 얼마 생산되지는 못해서 아쉬움이 남는다. 르노 자동차에 인수되기도 전의 일이다.

복고풍 유행을 타고 순우리말 이름을 가진 자동차가 또 등장할 날이 올지는 모르겠다.

다음으로 주제를 바꿔서 관련 잡설을 늘어놓도록 하겠다.

1.
그러고 보니, 영단어이긴 하지만 '맵시'만큼이나 '엑셀'도 자동차 이름 겸 컴퓨터 소프트웨어의 이름이다.
엑셀보다 로터스 1-2-3이 도스에서 훨씬 더 유명했던 옛날엔 엑셀이 자동차 이름으로 날리고 있었고, (1990년대 중반까지)

공교롭게도 자동차 엑셀이 사라진 뒤(1990년대 후반)부터는 스프레드 시트 엑셀이 Windows에서 세계를 평정했기 때문에 두 이름의 심상이 국내에서 딱히 크게 충돌하지는 않았던 거 같다.

2.
대우 그룹은 IMF 때 진작에 분해되어 버렸고 대우 자동차라는 정체성은 이제 버스에서나 볼 수 있으며, 김 우중 회장은 그저 몰락한 파렴치 경제사범 정도로나 치부되는 편이지만.. 이걸 마냥 비판만 하고 폄하만 할 일은 아닌 것 같다.

삼성의 이 건희 회장이 1993년에 독일 프랑크푸르트에서 휴대전화 불량품 화형식을 거행한 뒤 “처자식만 빼고 다 바꿔라” 신경영을 선포한 것처럼, 김 회장도 '탱크주의'를 내세우면서 품질 혁신을 외쳤고 특히 1993년엔 세계 경영이라는 캐치프레이즈를 선포했다.

이때 시장 개척을 매우 잘 해 놓은 덕분에, 동유럽권에서는 대우라는 기업에 대한 이미지가 지금까지도 매우 좋다고 한다. 독일에서 차 범근 축구 감독을 아직도 기억하듯이!
가령, 국내에서는 진작에 자취를 감춘 '씨에로' 같은 대우 차가 우즈베키스탄에서는 공장이 '우즈대우'라는 이름으로 국유화된 상태로 지금까지도 생산되고 있다고 한다.

김 회장이야 잘나가던 시절엔 <세계는 넓고 할 일은 많다>라는 야망 넘치는 저돌적인 자서전을 남긴 게 유명하다. 1989년이니 공 병우 박사의 자서전 <나는 내 식대로 살아 왔다>와도 출간 시기가 비슷하다.

또한 저 사람도 공 박사 같은 급의 덕후는 아니어도 워커홀릭 기질에다가 시간 최적화에 일가견이 있었다. 세계 방방곡곡을 돌아다녔지만 비행기는 언제나 밤 시간대만을 이용했다고 한다. 번거롭게 숙소 잡을 필요 없이 비행기 안에서 수면과 이동을 동시에 처리한 뒤, 곧바로 일하려고.

사업을 하고 거대한 기업을 이끌면서 수많은 종업원들을 먹여 살리려면 저런 머리와 근성 정도는 있어야겠구나 하는 생각이 들었다.
조금만 현대 자동차처럼 기술 개발에도 신경을 쓰지, 무리한 확장에만 치중하다가 대우 그룹이 망해서 사라진 것이 일면 아쉽게 느껴진다.

Posted by 사무엘

2014/10/18 08:23 2014/10/18 08:23
, ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1019

오늘은 오랜만에 옛날 GWBASIC 추억 얘기를 또 늘어놓아 보겠다. 예전에 했을 법도 해 보이는데 여러 키워드로 검색을 해 보니 안 한 것 같다. 베이직 얘기를 전문적으로 하는 건 한 2년 만의 일이다.

GWBASIC은 초딩이었던 본인을 프로그래밍의 세계로 이끈 추억의 장난감이다.
본인은 어릴 때부터 컴퓨터가 다른 전자 기기와는 뭔가 차원이 다른 대단한 물건이라는 걸 실감했다.
텔레비전은 오로지 일방적으로 전달만 하는 물건인 반면, 컴퓨터는 내가 직접 명령을 내려서 모니터에 찍히는 글자의 색깔을 바꿀 수 있고, 내가 원하는 화면을 구성할 수 있고, 그림도 그릴 수 있고 소리도 내고 파일로부터 정보를 읽고 쓰면서 뭔가 '나만의 능동적인 세계'를 표현할 수 있기 때문이다.

본인은 딱히 머리가 빨리빨리 잘 돌아간다거나 수학 덕후 최적화 덕후 기질이 있지는 않았다. 단지, 새로운 세계를 표현하는 것 자체에 집착했다. 그래서 정보 올림피아드도 경시에서는 영 재미를 못 보고 그 대신 공모 부문에서 다 입상했다.

GWBASIC은 결과를 즉시 확인할 수 있는 대화식 구조라는 게 굉장히 인상적이다. 행번호에 GOTO문 남발은 굉장히 기괴하고 거추장스러운 개념이긴 하지만, 행번호가 없는 명령은 곧장 실행되고, 행번호가 붙은 명령은 메모리에 등록되어서 나중에 행번호 순으로 한꺼번에 실행된다는 그런 발상은... 참 아무나 할 수 있는 게 아닌 듯하다. RUN, MERGE, DELETE, CHAIN처럼 기억된 프로그램 자체를 확장하거나 바꾸는 명령이 있다는 것도 기괴하고 말이다.

GWBASIC에는 프로그램을 불러오거나 저장하는 명령으로 LOAD, SAVE가 있다. 그런데 GWBASIC은 좀 특이한 게, 여느 프로그래밍 툴처럼 소스 코드를 plain text로 저장하는 게 아니라 내부 바이너리 바이트코드로 저장하는 게 기본 옵션이다. 바이트코드는 같은 소스를 저장했을 때 plain text보다 크기가 작고, 로딩/저장 속도도 더 빠르다는 이점이 있다.

세월이 워낙 많이 흘렀기 때문에 지금은 그 바이트코드의 포맷이 다 알려져서 인터넷에 굴러다닌다. 포맷이 정식으로 공개된 건지 아니면 해커들이 리버스 엔지니어링을 해서 알아낸 건지는 잘 모르겠다.
다른 프로그램에서도 소스 코드를 볼 수 있게 저장하려면 SAVE"파일이름", A라고 뒤에 A를 덧붙여야 한다.

그리고 한편으로 P라는 옵션이 있다. P 옵션은 A와는 반대로 소스 코드를 내부 바이너리 코드로 저장하되 그걸 XOR 기반의 간단한 암호화까지 해서 저장한다.
P 옵션으로 저장된 소스는 불러와서 실행은 가능하지만, LIST로 내용을 열람하거나 코드를 수정할 수 없다. 따라서 비록 GWBASIC에 소스 코드를 EXE로 컴파일하는 기능은 없지만, 다 만든 프로그램을 남에게 인계할 때는 P 옵션으로 저장된 프로그램 파일을 전해 주면 소스 코드 유출을 막을 수 있다. 이론적으로는 말이다.

그러나 그 시절의 GWBASIC에 무슨 전문적인 코드 암호화나 난독화 기능이 있었던 것도 아닌데, 겨우 그 정도의 허접한 보호 기능은 당연히 뚫리고도 남았다.
P 옵션의 암호화 방식도 다 알려져 있고, GWBASIC의 버그를 이용하여 보호 기능 자체를 뚫어 버리는 방법도 존재한다. 이것은 아주 오래 전부터 베이직 프로그래머들 사이에 나돌던 공공연한 비밀 테크닉이었다.

자, 0xFF 문자 2개로 구성된 2바이트짜리 파일(가칭 UN.BAS)을 만든다. 간단하지만 키보드로 바로 입력할 수 없는 문자이긴 한데.. 헥사 에디터를 쓰든지 아니면 GWBASIC 자체를 이용해서 이런 파일을 생성하는 프로그램을 짜서 돌려도 된다.

그 뒤, P 옵션이 붙은 임의의 소스를 LOAD한 뒤, 그 상태에서 UN.BAS를 뒤이어 LOAD하고 나면..
기존 소스의 프로텍션이 풀리고 LIST 열람이 가능해지는 걸 볼 수 있다. 마법과 같은 일이 벌어진다.

사용자 삽입 이미지

그 뿐만이 아니다.
NEW를 입력해서 기억되어 있던 소스를 다 지운 뒤에도 UN.BAS를 LOAD하면.. 방금 지워졌던 소스가 되살아난다.

사용자 삽입 이미지

이게 도대체 어째서 가능할까? (UN.BAS는 0xFF 0xFF일 뿐, 저 소스 코드 자체가 들어있는 거 절대 아님.. -_-)
사실, GWBASIC은 내부적으로 기억하고 있는 바이트코드를 디코딩해서 LIST로 출력하고 소스 코드를 고치는 것을 허용할지 여부를 간단한 boolean 변수 하나로만 판단하는 듯하다. 저장할 때 XOR 인코딩 여부 역시 그 변수로 판단하며, 불러올 때의 XOR 디코딩 여부는 파일 앞부분에 있는 헤더로 판단한다.
그러니, 그 메모리 주소의 값만 바꿔 버리면 프로텍션을 곧바로 풀 수 있다. GWBASIC의 보안 체계는 근본적으로 허술했던 것이다.

그리고 GWBASIC의 고유 파일 포맷에 따르면, 프로텍션이 걸리지 않은 파일은 0xFF로 시작하고, 걸린 파일은 0xFE로 시작한다.
그러므로 0xFF 0xFF 2바이트짜리 파일은 GWBASIC으로 하여금 프로텍션 플래그는 해제하지만 그 뒤에 거의 즉시 파일이 끝나 버리기 때문에 메모리 상의 다른 소스 코드는 건드리지 않는 역할을 하는 듯하다.

원래는 그렇게 파일이 갑작스럽게 끝났을 때의 처리를 GWBASIC이 깔끔하게 해야 하지만 그렇지 못하기 때문에 졸지에 프로텍션만 풀어 버리는 게 가능한 듯하다.
NEW를 한 것까지 어떻게 undo를 하는지까지는 잘 모르겠지만 말이다.

아무튼, 이런 게 오늘날의 소프트웨어 보안 용어로 치자면 일종의 버그이고 exploit이다.
만약 GWBASIC이 Windows, Office, Visual Studio처럼 오늘날까지 살아 있는 제품이고 GWBASIC이 세계 기업들의 돈줄을 좌지우지하는 솔루션이었다면 이건 뭐 당장 긴급 업데이트/패치감이 됐을 것이다. 회사의 자산인 소스 코드가 간단한 해킹으로 죄다 유출되게 생겼으니 말이다.

업데이트 명분으로 맨날 귀가 따갑도록 나오는 “악의적으로 조작된 파일을 열 경우 임의의 코드가 실행... 까지는 아니어도 뭐가 어찌될 수 있는 보안 취약점이 Microsoft 모 제품에서 발견되었습니다” 문구가 가리키는 게 바로 이런 거다.
자그맣게 조작된 파일이 GWBASIC의 저장 프로텍션을 풀어 버리니, 이 꼼수가 보안의 관점에서 오늘날 시사하는 바가 크다고 생각되어서 문득 글을 써 보았다.

옛날에, 286 XT/AT를 갖고 '교육용 컴퓨터' 이러던 시절에는 단색 그래픽 모드에서 동작하는 여러 '교육용 소프트웨어'들도 있었다. CAI라고 들어 보셨는가?
'약수와 배수', '컴퓨터 개론' 같은 타이틀이 있었는데, 개중에는 정말 놀랍게도 GWBASIC으로 개발된 것도 있었다.
물론 런타임인 GWBASIC.EXE와 소스 코드들은 다 파일 이름과 확장자를 교묘하게 바꿨고, 실행은 CAI.BAT라는 파일로 했다.

소스 코드를 열어 보니 당연히 프로텍션이 걸려 있었다. 그러나 본인은 저 테크닉을 이용하여 프로텍션을 풀고 코드를 열람해 보기도 했다. 분량이 상당히 방대했으며 지금 다시 봤으면 여러 재미있는 아이디어들을 발견했을 법도 해 보지만, 본인은 그 당시엔 프로그래밍 실력의 부족으로 인해 그다지 충분한 재미를 못 봤다.

그 느리고 허접한 GWBASIC으로 자체 한글 출력과 그것도 모자라서 입력까지 구현했는데 과연 어떻게 구현했을지가 궁금해지지 않는가?

GWBASIC의 후신인 QBasic이야 고릴라 내지 NIBBLES 같은 예제 게임 프로그램이 MS-DOS 5.0에 같이 곁들여 제공되기도 했다.
순수 GWBASIC으로 근성으로 만들어진 프로그램은? 먼 옛날에 무슨 허접한 자동차 경주 게임 같은 걸 본 게 마지막이다. 각 스테이지의 이름은 태양계의 행성 이름이었는데... 기억하는 분이 있으려나 모르겠다.

상용 제품인 QuickBasic도 GWBASIC의 전통을 이어받아 소스 코드를 자기 고유 포맷으로 저장하는 기능이 있었다. 물론 GWBASIC과 호환되는 포맷은 아니었다. 그리고 축소판인 QBasic은 그런 기능이 없다.
지금은 '큐베'라고 하면 음악 DAW 프로그램인 큐베이스(Cubase)가 먼저 떠오르는 세상이 됐으니 이것도 격세지감이다.

* 그리고 GWBASIC과 관련된 추가 여담.
IBM PC(=도스)용으로 이식된 GWBASIC이야 기본 프롬프트가 Ok이지만, 더 구닥다리 8비트 롬 베이직 같은 걸 보면 프롬프트가 READY인 경우가 있다. 빌 게이츠 아저씨가 GWBASIC을 최초로 만들 때 원래 의도했던 메시지는 ready였다고 한다.
그 사고방식은 오늘날 같은 Windows+GUI 시대에까지도 남아 있다. Excel이나 Visual Studio, 심지어 MFC 기본 어플이.. 내부적으로 더 처리할 메시지가 없이 사용자의 입력만 기다리는 idle 상태로 진입했을 때 아래의 상태 표시줄에 나타나는 메시지는 바로 Ready이며, 우리말로는 그냥 '준비'이다.

그랬는데 ready가 ok로 바뀐 이유는.. 메모리를 단 3 바이트라도 더 확보하기 위해서였다고 한다. 뿌우우... 묵념.

단, Ok도 다 대문자 OK도 아니고, 대문자 O에 소문자 k로 정해진 이유는 본인으로서는 지금도 알 길이 없다.

Posted by 사무엘

2014/10/15 08:23 2014/10/15 08:23
, ,
Response
No Trackback , 6 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1018

« Previous : 1 : ... 137 : 138 : 139 : 140 : 141 : 142 : 143 : 144 : 145 : ... 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:
4001121
Today:
1297
Yesterday:
6203