« Previous : 1 : ... 96 : 97 : 98 : 99 : 100 : 101 : 102 : 103 : 104 : ... 221 : Next »

다음 버전 개발 근황

날개셋 한글 입력기 8.9는 지난 8.8과는 달리 딱히 치명적인 버그가 발견된 게 없고 잘 만들어져 있다. 한편으로 다음 버전인 9.0은 현재 이렇게 순조롭게 개발되고 있다.

0. 한글 공식 명칭에서 <> 제거

이 시간부터 내 프로그램의 공식 명칭은 그냥 '날개셋 한글 입력기'임을 밝힌다. 날개셋이라는 단어를 감싸는 화살괄호(angle bracket)를 쓰지 않기로 했다. 프로그램의 모든 UI와 도움말, 각종 예제 파일, 홈페이지에서 이걸 이미 제거했다. 프로그램이 완성되는 날, 웹에다가도 업로드해서 반영만 하면 된다.

몇 년 전에 한번 얘기한 적이 있지 싶은데 검색하기가 귀찮다.
세벌식 최종은 타 한글 글쇠배열과는 달리 가운뎃점이 있으며, 화살괄호(컴퓨터에서는 그냥 부등호일 뿐이지만..)가 아랫글쇠(non-shift)에 있다. 하지만 날개셋 한글 입력기 1.0이 최초로 개발되던 시절에 여전히 많이 쓰이던 Windows 95는 비록 공식적으로 최종을 지원했음에도 불구하고 마소 직원의 무지(?)로 인해 기호의 배열에 틀린 게 굉장히 많았다. 그래서 화살괄호조차도 원래 의도했던 방식으로 입력할 수 없었다.

그래서 결국 허접하게나마 내가 입력기를 직접 만들고 나니 가운뎃점이고 참고표고 화살괄호고 다 제대로 입력이 가능했다. 그 당시엔 그것 하나만으로도 참 감격스러워서 뒷일을 별로 생각 안 하고 프로그램 브랜드명에다가도 화살괄호를 쌌다. 아래아한글이 고유명사에다가 옛한글을 쓴 것처럼 뭔가 튀어 보이는 효과는 덤이고 말이다. 그게 사건의 전말의 전부이다.

하지만 고유명사의 내부에 문장 부호가, 그것도 dash 정도의 작은 물건도 아니고 아예 여닫는 pair가 존재하는 놈이 끼어들어 있는게 그리 보기 좋지는 않다. 아래아한글도 옛한글을 표현할 수 없는 환경에서는 '한/글'이라는 대체 표기가 쓰이는데, slash는 그 자체가 디렉터리 같은 토큰 구분용으로 쓰이는 문자이기도 하니 이 역시 그리 보기 좋은 표기는 아니다.

또한 화살괄호는 컴퓨터 키보드로 칠 때는 의미가 완전히 다른 부등호가 돼 버리며, 명령 프롬프트에서는 도스와 유닉스를 막론하고 redirection 기호로 쓰여서 파일명에 들어갈 수 없고.. HTML 태그를 여닫는 기호이기도 해서 본문에 간단히 삽입할 수도 없다. 이 때문에 지금처럼 공식적으로 화살괄호를 제거하기로 결심하기 전부터도 내 프로그램의 명칭은 화살괄호가 빠진 형태로도 암묵적으로 많이 쓰이고 있었다. 이제 본인은 그렇게 간소화된 명칭만을 사용하기로 했다.

지난 7.0에서는 프로그램의 얼굴이라 할 수 있는 아이콘이 대거 바뀌어서 지금에 이르고 있는데, 그로부터 4년 뒤인 9.0에서는 프로그램의 이름 표기가 바뀌는 큰 변화를 겪게 되었다. 나름 의미 있는 변화이다.

1. 복합 낱자 입력 로직 생성기: 허용 한글 범위 제약 기능 + 오토마타 연동

복합 낱자 입력 로직 생성기는 날개셋 한글 입력기 8.x대 후반, 그리고 본인의 박사과정 연구 기간의 대미를 장식한 그야말로 엄청난 핵심 기능이다. 나로서는 정말 엄청난 시간과 노력을 들여서 구현해 냈고 논문도 썼다. 그래서 주요 기능들이 잘 완성됐으며 동작에 딱히 심각한 버그도 없긴 하지만, 이번 9.0에서는 '허용 한글 범위 제약' 기능과 연계하는 기능들이 또 추가되었다. 허용/금지 등 등급별로 분류된 글자들을 날개셋 한글 입력기의 오토마타와 연계하여 재미있는 오덕질을 하는 옵션인데, 다음과 같은 것이 있다.

(1) 먼저, 허용되는 글자 중에서 더 결합의 여지가 없는 단말(terminal) 글자에 도달한 경우 자동으로 조합을 종료하는 옵션이다.
예를 들어 '고'라는 글자는 ㅏ를 결합해서 '과'가 될 수 있고 종성과 결합해서 '곡', '공' 같은 글자가 될 수도 있다. '안'이라는 글자도 '앉'이나 '않' 같은 글자로 추가 결합이 가능하다. 그러나 '엌', '같' 같은 글자는 더 결합이 이뤄질 게 없다. '판'이라는 글자도 KS X 1001 하에서는 '안'과는 달리 겹받침이 붙을 수 있는 게 없다.

이런 글자를 terminal로 간주하며, 이게 만들어지는 순간 조합을 종료하는 것이 이 기능의 핵심이다. 조합을 미리 끊든 말든 사용자의 타자 행동이 달라지는 건 없지만, 이것이 지금 입력 체계 하에서 더 결합의 여지가 없는 단말 글자였다는 시각· 심리적인 피드백을 준다. 이런 것도 날개셋 한글 입력기로 구현 가능하다는 데모 차원에서 옵션을 구현했다.

'허용 한글 범위 제약' 기능을 사용하면 이 프로그램은 일단 입력 가능한 글자들을 받아서 입력을 위해 추가로 허용해야 하는 글자를 수집하고, 글자가 완성된 뒤에 연속 입력을 위해 다단계 분리 처리를 해야 하는 글자도 제3 그룹에다 수집해 준다. 이 글자들은 기존 허용 글자들의 밖에 존재하는 것들이다. (1은 무조건 허용되는 글자, 2는 무조건 실패하는 글자로 용도가 예약됨)

그런데 이 옵션을 사용하면, 기존 입력 가능 글자들 "중"에서 terminal에 속하는 글자들을 제4 그룹에다가 따로 모은다. 그래서 지금까지 오토마타에서 T==3에 대해 다단계 분리 -12를 적용하듯이 T==4에 대해서는 이미 있는 기능인 -3 (결합 후 조합 중단)만 지정하면 일이 깔끔하게 끝난다.

terminal 감지는 두벌식에서는 그렇게 의미 있는 기능이 아니다. 종성이 있는 글자는 그 종성의 일부나 전부가 다음 글자의 초성이 될 수도 있으니 도중에 조합을 끊어서는 절대로 안 된다. 하지만 종성이 없는 글자 중에서도 '긔, 꾜, 뀨, 눼, 댜, 듸, 쮸, 켸, 쿄' 등 terminal이 20여 자 있다. 이 글자들 이후에는 종성이 이어지는 게 전혀 없으니 두벌식에서도 조합을 바로 끊어 버려도 안전하다.

얘들은 '쌰, 쓔, 뢔, 쬬' 같은 고아 글자와는 성격이 정반대이다. 고아 글자들은 받침이 붙은 '썅, 쓩, 뢨, 쭁'은 KS X 1001에 있는데 받침이 빠진 형태가 빠진 경우이고, 모음 terminal 글자는 자신 이후로 아무 받침이 붙지 않는 경우이니 말이다. 어쨌든, 고아 글자를 찾는 기능이 있으니 terminal을 찾는 기능도 있어야 한다는 생각이 들어서 잠시 시간을 내어 이 기능을 구현하게 됐다.

세벌식으로는 terminal 감지 기능이 제 기능을 발휘할 수 있다. 그 극단적인 경우는 현대 한글 기준으로 모든 받침을 1타 만에 입력 가능한 최종(391) 글쇠배열이다. 받침을 찍는 순간 글자가 완성됨과 동시에 그냥 조합이 종료돼 버린다. 물론 이렇게 테이블을 참조할 필요조차 없는 일방적인 경우라면 아예 오토마타 수식을 고쳐 버려도 되지만 '안'일 때만 조합이 유지되고 '판'일 때는 조합이 끊어지게 하려면 이 기능을 사용하면 된다.

(2) 그 다음으로, 허용되지 않는 글자를 만드는 낱자는 다음 글자로 보내는 게 아니라 그냥 무시하는 옵션이 있다. '또+ㅁ'의 경우 ㅁ을 다음 글자로 보내는 게 아니라 그냥 무시한다는 뜻이다. 이 역시 두벌식에서는 종성에 대해서는 적용할 수 없고, 중성에 대해서만 적용 가능하다. T==2에 대해서 -1 (무시)을 되돌리게만 하면 간단히 구현 가능하다.

날개셋 한글 입력기의 완성도를 더욱 끌어올릴 아이디어가 하나 떠올라서 성공적으로 구현되니 좋다. 이제야 '복합 낱자 입력 로직 생성기는' 진짜로 더 만들 게 (현재로서는) 안 떠오르고 작업이 완전히 종결된 것 같다.
이 옵션이 추가됨으로써 '복합 낱자 입력 로직 생성기' 마법사의 2단계 대화상자는 너무 큼직하고 복잡해졌다. 사실, '허용 한글 범위 제약'은 통상적인 로직 생성 옵션과는 성격이 좀 다른 액세서리에 가깝다. 그렇기도 하니 이건 마법사의 별도의 단계로 분리해 버렸다.

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

복합 낱자 입력 로직 생성기가 쓰라는 의도로, "오토마타에 '0번 상태에서 모든 실패 상황을 처리"라는 옵션을 추가했다.
정상적인 한글 입력에 따른 상태 분기와는 달리, 실패 상황의 상태 분기 방식은 지금 오토마타 상태와 무관하게 언제나 동일한 경우가 많다. T가 3이면 -12, T가 4이면 -1 이렇게 T라든가 I~K의 값에 따라 달라질 뿐, 성공 상황처럼 매번 처리 방식이 들쭉날쭉해지는 건 매우 드물다.

이 점에서 착안하여, T==3 ? -12 : T==4 ? -1: 0 같은 수식은 초기 상태에서 A ? 1: B ? 2: C: 3 : (!!) 다음에 한 번만 추가하면 모든 오토마타 상태에서 동작하게 했다.

  • 8.8: 복합 낱자 입력 로직 생성기 첫 도입
  • 8.9: 그 기능에다 '한글 허용 범위 제약' 기능 연계 추가
  • 9.0: '한글 허용 범위 제약' 연계 기능에다가 '오토마타'와의 연계를 또 추가. 이제 진짜 끝?

2. 그 밖에 복합 낱자 입력 로직 생성기의 사소한 개선 사항

  • '낱자 최적화' 알고리즘이 좀 더 개선되어서 글쇠에 등장하지 않고 쓰이지 않는 낱자 결합 군더더기를 더 잘 걸러내게 했다.
  • 매우 드문 상황이겠지만, 로직 생성 작업이 아무 메시지 없이 깔끔하게 끝났다면 "작업을 완료했습니다"라는 말 한 마디라도 출력해서 사용자가 심리적으로 혼동하지 않게 했다. PC용 세벌식+현대 한글처럼 복잡한 처리가 필요하지 않은 설정에서는 드물게 이런 일이 있을 수 있다.
  • 초성 문맥이 전혀 존재하지 않는 종성 두벌식 날개셋문자를 사용하더라도 초성에 등장하는 것 자체는 가능하니 이를 감안하여 동작하게 했다. 물론 원래 소속이 종성이니 이 낱자들은 초성 '대결합'은 전혀 처리하지 못한다는 걸 사용자가 염두에 둬야 한다.

그리고, 입력 데이터를 검증할 때 현재는 대결합의 결과값이 소결합의 시작과 결과값에 또 등장하는 것을 금지시키고 에러로 처리하는데, 9.0은 여기에 덧붙여 대결합의 결과값이 자신이나 다른 대결합의 과정값에도 등장하지 못하게 조건을 강화했다. ㅂ+ㅅ → ㅄ이 있다고 해서 ㅄ+ㄷ → ㅵ를 줘서는 안 되고 반드시 매번 ㅂ+ㅅ+ㄷ → ㅵ로 해야 한다는 뜻이다. 그렇게 해야 대결합을 실제로 expand할 때 동일 input으로부터 a+b → x와 a+b → y가 동시에 등장하는 식의 논리 오류를 방지할 수 있다.

이런 제약을 가한 대신, ㅂ+ㅅ+ㄷ → ㅵ에서 ㅅ+ㄷ → ㅼ이라는 다른 대결합이 존재하고 ㅼ이 글쇠에 존재해서 한 타 만에 입력 가능한 경우, 이 프로그램이 ㅂ+ㅼ → ㅵ이라는 결합도 자동으로 찾아서 생성하게 했다.

3. 기본 글자판 설정에 두벌식 관련 고급 옵션 추가

날개셋 한글 입력기가 제공하는 빠른설정들 중에 '기본 글자판 설정'은 대중적이고 기본적인 입력 기능만 사용하는 분들이 가장 자주 사용할 만한 빠른설정이다. 처음으로 개발된 이래로 별다른 변화 없이 10년이 넘게 존속해 왔다.

본인은 다른 대화상자들이라면 몰라도 얘만은 프로그램 내부 구조 지향이 아니라 사용자 지향· 사용자 친화적으로 만들려 애썼다. 복잡한 각종 옵션들을 어지럽게 한 화면에 몽땅 노출하지 않고 새끈하게(?) 보이게 하려고 단계별 마법사 UI를 쓸까 생각도 했다. 대화상자를 보면 좀 마법사 UI처럼 생겼지 않는가?

그런데 실제로 개발을 해 보니 기본 글자판 설정이란 게 굳이 몇 단계짜리 마법사까지 동원할 정도로 구조가 복잡하지는 않아서 '다음' 단계 대신 그냥 '고급' 버튼만 넣는 걸로 퉁쳤다.
마법사 UI는 먼 훗날에 '복합 낱자 입력 로직 생성기' 빠른설정이 대신 찜했다. '기본 글자판 설정'보다 기능이 훨씬 더 많고 복잡하니 처음에 3단계 마법사로 시작했고 이번 9.0부터는 4단계로 더 늘었다.

이런 사정을 거쳐, 기본 글자판 설정엔 현재까지 '고급' 옵션이라는 게 세벌식 자판과 관련된 것 네 종류만 있었다. 그러나 이제는 표준 두벌식을 골랐을 때도 '고급' 옵션을 사용할 수 있으며, 여기에는 두벌식에만 적용되는 고유한 고급 옵션이 몇 가지 들어갔다.

사용자 삽입 이미지

먼저, '자음의 처리 방식'이다. '초성과 종성 따로'는 일반적인 동작 방식이고, '초성 지향'은 '날 - 나라' 대신 '나ㄹ - 날'이 되는 동작을 말한다. '종성 지향'은 초성도 일단 종성 문맥으로 입력되었다가 나중에 중성을 받았을 때에야 초성으로 바뀌는 동작이다.

기술적으로야 초성 지향은 '고급 입력기'의 옵션을 사용해서 동작하고 종성 지향은 '종성 두벌식'이라는 별도의 날개셋문자를 사용해서 동작한다. 구현 방식이 서로 완전히 다르지만 이 빠른설정에서는 한데 선택할 수 있다는 것에 의의가 있다.

그리고 표준 두벌식은 오로지 알파벳 26개 자리에만 한글 글쇠가 있고 숫자와 기호를 사용하지 않는다는 특성상, 숫자와 기호는 굳이 입력기가 가로채지 않고 응용 프로그램으로 보내도록 하는 옵션을 빠른설정에서 곧장 선택할 수 있게 했다.

이로써 두벌식과 세벌식 모두 빠른설정에서 오로지 자신만의 고유한 고급 옵션을 갖게 됐다. 단지 세벌식의 고급 옵션들은 3.x 완전 초창기 때부터 존재했지만, 두벌식의 고급 옵션들은 다 6~7.x에 가서야 도입됐고 빠른설정에 반영은 훨씬 늦었다는 것이 차이점이다.

4. 토씨 자동 교정

한글 입력과 직접적인 관계가 있지 않고 평생 다시 볼 일이 없을 거라고 생각했는데, 토씨 자동 교정 알고리즘을 우연한 계기로 재검토해서 정확도를 조금 올렸다.

토씨 자동 교정 기능은 동작이 은근히 복잡하다. 은/는, 을/를, 과/와 같은 거야 아주 쉬운 케이스이다. 그러나 (으)로는 유일하게 ㄹ 받침도 무받침과 동급으로 간주해야 한다는 예외가 있으며, '이'는 처리하기가 훨씬 더 어렵다. '이나마, 이랑, 이라'처럼 받침 유무에 따라 '이'를 넣거나 생략해야 하는 것들이 많기 때문이다. '이다'의 경우는 받침이 없더라도 반드시 생략할 필요는 없다.

이것들부터 먼저 검토한 뒤, 한글이 또 등장하지 않아서 명백하게 주/보격 조사인 '이'에 한해서 '이/가' 처리를 해야 한다. 하긴 중세 국어에서는 조사 '가'가 없었다고 하더라만..
'이'만 처리가 이렇게 복잡한 이유는 한국어의 매우 독특한 단어 '이다'의 정체성과 밀접한 관계가 있다.

한국어의 어절(띄어 쓰는 단위)에서 관형어나 부사· 감탄사, 기능어 등등 잡다한 거 빼고 내용어를 구성하는 것은
딱 (1) '체언+조사' 계열, 아니면 활용을 하는 (2) '용언+어미'라는 두 계열로 나뉜다.
그런데 '이다'라는 단어는 정말 요물이다. 얘는 문법적으로 무엇으로 분류해야 할지 쟁쟁한 국어학자 문법학자들 사이에서도 의견이 오랫동안 일치하지 않았다.

마치 영어에서 be 동사가 여느 다른 동사들과는 문법적으로 다르게 취급되는 동사이듯, 쟤도 평범한 용언은 아니다.
오늘날 표준 국어 대사전 + 학교 문법에서는 '이다'를 서술격조사로 본다. '이었다' 등 영락없이 용언처럼 생긴 물건이 조사라니.

그래서 '이니', '이고', '이면'처럼 '이다'의 활용형도 다 별개의 접속조사이고, 일단 사전에 일일이 단독으로 등재돼 있다.
이것도 많은 고민 끝에 내린 결론이겠지만 이게 합리적인 결정이라고 볼 수 있는지는 모르겠다.
하긴, '귀신이다', '불이야'처럼 체언에 잘도 척척 달라붙는 동사나 형용사가 다른 예가 없긴 하다. (공부하다 이런 건 논외. 그때의 '-하다'는 접사임.)

체언과 용언을 파동과 입자에다 비유하자면, '이다'는 진짜 빛처럼 두 성질을 모두 지닌 이상한 물건이다.
그리고 이 '-이' 때문에 '찾기/바꾸기'에서 한글 토씨 자동 교정 기능도 구현하기 꽤 복잡하고 어려워져 있다.

끝으로, '야'의 경우 호격조사 '아' 또는 보조사 '이야'가 모두 가능한데, 이것은 용례 domain이 겹치기 때문에 글자만 보고 구분하기가 불가능하다. 토씨 자동 교정 알고리즘의 구조적인 한계가 될 수밖에 없는 점이다.

5. 기타 사소한 것들

(1) 도움말 부록의 자음 참조표에서 ㅁㅂㅅ의 순서가 잘못 기재되었던 오타를 지적해 주신 분이 있어서 고쳤다. 78이 빠지고 79가 두 번 들어가 있었다. 이 오타는 굉장히 오랫동안 발견되지 않고 지금까지 잘도 숨어 있었다. 오죽했으면 5년 전, 2012년에 발행된 본인의 석사 학위논문의 부록에도 동일한 오타가 그대로 들어갔다!

(2) 편집기에는 프로그램의 중복 실행이 감지된 경우 인스턴스를 또 생성하지 않고 기존 인스턴스에다 새 문서창을 열게 하는 기능이 있다. 그런데 기존 인스턴스가 어떤 이유로 인해 응답이 없고 뻗은 상태라면 그 옵션이 지정되어 있더라도 예외로 그냥 새 인스턴스에서 실행되게 하여 동작에 융통성을 더했다.

(3) 날개셋 편집기를 비롯해 내 프로그램이 내부에서 자체적으로 사용하는 빨랫줄 모양 옛한글 비트맵 글꼴의 중성 자형을 일부 수정했다. 그래서 ㅣㅛ, ㅓㅛ, ㅕㅗ 등, ㅗ/ㅛ가 포함돼 있는 겹모음들이 위의 초성과 더 잘 포개져서 조화롭게 보이게 했다.

(4) 두벌식 옛한글의 Shift+H(ㅗ) 자리에 지금까지 ㅗㅜ가 배당돼 있던 것을 ㅗㅗ로 변경했다. 기왕 내 프로그램은 Shift 자리에는 다른 자모와 겹치지 않는 한 아랫자리에 있는 낱자의 double(쌍) 버전을 넣는 것으로 컨셉을 잡았으니 저렇게 하는 게 더 일관성이 있을 것 같다. 아래아한글의 영향을 받아서 내 프로그램도 까마득한 2.x 옛날 버전부터 ㅗㅜ이긴 했는데, 그냥 breaking change(하위 호환성이 깨지는 단절적인 변화)를 만들었다.
ㅜ와 ㅡ도 double 버전이 있긴 하지만 쟤들은 Shift 자리에 다른 글쇠가 정해져 있기 때문에 double 버전을 넣을 수 없다. 두벌식은 옛한글 배열이라 해도 숫자· 기호 자리를 침범하지 않는 게 일종의 불문율이긴 하다.

Posted by 사무엘

2017/05/16 08:31 2017/05/16 08:31
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1360

일본 생각

1. 첫인상

우리나라의 바다 건너 이웃에 있는 일본이라는 나라는 예로부터 가깝고도 먼 이웃이라고 불리고 있다. 무작정 좋아할 수도 미워할 수도 없고, 존재감을 무시할 수도 없는 그런 복잡한 나라이다. 정치적으로 하도 민감한 주제이다 보니 "일본은 없다" "일본은 있다" 이런 책이 나온 것도 벌써 20년 가까이 전의 일이다. 본인이 블로그에서 이 나라 자체에 대해서 심층 취재를 하는 건 이번이 처음인 것 같다.

그럼 비정치적인 얘기부터 가볍고 부담 없게 먼저 시작하겠다. 본인은 일본이라 하면 떠오르는 건 다음과 같은 것들이다. (무순)

  • 벚꽃이 만발한 오사카 성
  • 후지 산 아래로 달리는 신칸센
  • 지멘스 옥타브를 울리면서 달리는 게이큐 쾌특 전철
  • 앞발 들고 있는 복고양이
  • 게다짝, 기모노, 일본도, 정수리를 민 그 특이한 헤어스타일의 사무라이 (조선 선비들은 머리를 기르는 편이었는데 여기는 정반대)
  • 어두운 복장에 표창 던지는 닌자 (뭐, 후대에 만들어진 컨셉에 가까우며, 정작 옛날에 일본엔 저런 차림의 자객이 없었다고 하던데)
  • 스시, 일본 돈까스와 라멘, 심야식당
  • 학교 수영복 (저기에는 공립 학교에 수영장도 있으니)
  • 도라에몽, 슈퍼마리오, 짱구는 못 말려, 드래곤볼 캐릭터와 그와 비슷한 화풍의 일본 애니들
  • 개그만화 보기 좋은 날, 킬 빌, 자토이치 같은 평범하거나 병맛· 개그스러운 영상물. 토스트 소녀-_- 게임
  • 파이널 판타지 같은 너무 심오하고 도무지 배경이고 스토리고 설정을 이해할 수 없는 안드로메다 영상물
  • 감각의 제국, 쇼군의 사디즘 같은 개막장 영상물

사용자 삽입 이미지

사용자 삽입 이미지

참고로 난 일본에 한 번도 가 본 적 없고, 일본어는 열차 안내방송 외운 것밖에 모른다. 글자만이라도 작정하고 읽는 법을 틈틈이 외워 놓고 싶지만, 잘 안 된다.

하긴, 작년에 브라질 올림픽 폐막식 때 그 유명한 2020 도쿄 올림픽 홍보 영상이 상영되었는데 그거 정말 강렬했다. 반도에서 병맛스러운 김치 전사 내지 허접한 평창 동계 올림픽 홍보 영상이나 만들던 동안, 재패니메이션의 원조인 저 동네에서는 제한된 시간 동안 자기 나라의 발전된 면모를 저렇게 쭉 소개하면서 아베 총리까지 슈퍼마리오로 변장시켜서 찬조 출연시켰다니.. 쟤네들의 저력이 놀랍다는 생각이 들었다.

2. 교통

일본은 근대화 산업화가 아시아에서 가장 앞섰으며 경제, 산업, 과학· 기술, 예능 등 거의 모든 분야가 우리나라보다 훨씬 앞서 있고, 현대 사회의 각종 시행착오들도 먼저 겪은 선진국이다. 그 중 교통 분야만 살펴보더라도, 일본은 세계구급 자동차 제조사를 보유한 자동차 왕국인 동시에 신칸센 고속철까지 개발한 철도 왕국이다.

그런데 얘들은 자동차와 철도뿐만 아니라 '자전거 왕국'이기도 하다. 우리나라에서 이륜차는 보행자와 자동차 사이에 껴서 만년 콩나물 신세를 면치 못하는 중인 반면, 일본은 이륜차를 더 많이 볼 수 있으며 도로나 주차 시설이 자전거를 더욱 배려하는 형태로 갖춰져 있다.

이건 일면 수긍이 가는 얘기이다. 일본은 우리나라보다 훨씬 더 소득 높고 잘 사는 국력· 경제력에 '비해서' 서민이 자동차 굴리기는 훨씬 더 힘들게 돼 있다. 고배기량에 덩치 큰 차는 더욱 제약이 심하다. 우리나라는 법적으로 배려와 혜택을 받는 경차의 배기량이 1000cc 이하로 정해져 있지만 저기는 800도 아니고 겨우 660cc이다. 그것도 21세기에..;; 일본도 한국 만만찮게 산과 험지가 많은 동네인데 저건 세계 자동차들 평균 덩치를 생각해도 너무 가혹한 제약이 아닌가 싶다.

또한 저기는 불법주차 단속이 이곳 반도보다 넘사벽급으로 더 자비심이 없으며, 애초에 1960년대에 마이카 시대가 시작되던 시절부터 차고지 증명제가 딱 시행되어 잘 정착된 걸로 유명하다. 차고든 유료 공영 주차장이든 주차 공간이 법적으로 확보돼 있지 않으면 자가용 구입을 아예 못 한다.
마치 컴퓨터에서 하드웨어뿐만 아니라 소프트웨어도 돈 주고 사야 하며, 눈에 보이는 원자재뿐만 아니라 무형의 기술 지원과 서비스에도 비용을 지불해야 하듯.. 차를 샀으면 굴리는 것뿐만 아니라 세워 놓는 공간을 확보하는 것에도 주거비만큼이나 돈이 든다는 관념이 박힌 것이다.

우리나라야 지금처럼 건물과 주차장들이 완공돼 버린 와중에 차고지 증명제를 도입하기에는 대략 곤란한 지경이 됐다. 자동차의 판매 실적에 부정적인 영향을 주는 정책이니 자동차 회사 영업 사원들이 절대 가만히 있지 않을 것이다. 미국으로 치면 총기 규제 정책 vs 총기 제작사들의 로비와도 얼추 비슷한 구도처럼 됐다.
할 거면 1980년대에부터 했어야지. 옛날 석유 파동 때 외화 아끼려고 차량의 배기량과 엔진 기통수에다는 온갖 규제를 걸었으면서, 정작 차고지 확보 관련 규제는 시행을 왜 안 했나 모르겠다.

우리나라가 전기는 1970년대부터 승압을 잘 끝낸 반면에 자동차 쪽으로는 정치인들이 상대적으로 선견지명 안목이 없었던 셈이다. 반대로 일본은 철도 궤간과 전기 규격은 낭패 봤지만 자동차 주차 문화는 잘 정착시킨 경우에 속한다.

아무튼 일본은 경제력 대비 한국이나 미국보다 차 굴리기가 더 비싸고 빡센 나라이다.
그럼 자가용 말고 대중교통은? 대도시엔 물론 잘 구축돼 있고 속도 빠르고 정시성도 높다.

일본은 철도 왕국이라고 해서 우리나라처럼 지하철 역마다 온통 스크린도어들이 갖춰져 있지는 않다. 허나, 누군가가 선로에 투신 자살이라도 하면 고인이 불특정 다수에게 심한 민폐를 끼쳤다고 국가에서 유족에게 도리어 벌금을 매긴다. "자살을 하게 만든 사회 탓 국가 탓? 힐링힐링?" 그런 거 없다.
과거에 중국에서는 총살형을 집행하고 나서 총알값을 사형수 유족에게서 받아 챙기기까지 했는데, 마치 그와 비슷한 급으로 잔인하다면 잔인한 조치 같기도 하다.

허나 일본은 국민성이 민폐 끼치는 걸 극도로 싫어하는 성향이며, 거기는 철도 업계가 분초 단위로 열차 정시성에 목숨을 걸고 기관사까지 죽도록 갈구고 압박하는 곳이다. 평범한 전철도 몇 분 지연되면 역 직원들이 지연 증명서를 알아서 뿌리면서 승객들에게 너무 죄송하다고 굽신거린다. 그런 와중에 누가 자살해서 열차가 줄줄이 지연을 먹었다면 이거 얼마나 큰 민폐이고 피해인지 수긍할 수 있을 것이다.

지난 2005년 4월에 JR서일본 관할의 후쿠치야마 선에서 전철이 과속 탈선 사고가 나서 기관사 포함 107명이나 되는 사람이 죽었는데, JR서일본에서는 그로부터 무려 12년이 지난 오늘날까지도 홈페이지 첫 화면에 그 날 사고에 대한 사과문을 게재해 놓고 있다. 그걸 두고두고 곱씹으면서 다시는 그런 사고를 내지 않겠다고 다짐한다.
이런 게 정상적인 추모이고 이성적인 재발 방지 다짐이다. 그에 반해 우리나라의 세월호 노란 리본 타령은 가해자 당사자의 사죄도 아니고 시스템적인 안전 개선과도 상관 없이 그저 감성팔이 반정부 광기 폭동일 뿐이었다.

아무튼.. 이렇게 일본의 대중교통은 서비스 좋고 시간 관념도 투철하고 다 좋은데.. 비싸다.
우리나라 식 운임과 임률을 생각했다가는 놀라서 턱 빠질 거다. 정말 왕창 비싸며, 사철 간에 통합 환승 할인 같은 것도 없다. 하물며 장거리 간선인 신칸센 운임은 국내선 비행기보다도 더 비쌀 정도이다.

그러니 일본이 비록 중국이나 베트남 같은 나라는 아니겠지만 미국 같은 나라도 아니니, 가까운 거리는 그냥 걷거나 자전거 타는 문화가 형성될 수밖에 없다.
북한만 그런 줄 알았는데 일본도 자전거는 등록하고 번호를 받아야 될 정도라고 한다. 굉장히 뜻밖이다. 물론 북한처럼 주민들을 억압하고 통제하기 위해서가 아니라 적극적인 질서 유지가 필요할 정도로 자전거가 많이 돌아다니기 때문이다.

저기서는 학생들, 특히 여자애들도 등하교나 알바 하러 출퇴근 할 때 자전거 많이 타는 거 같다.
어쩐지 일본의 사건사고 같은 이야기들을 봐도 가해자나 피해자들이 그 당시나 직전에 자전거 탔다는 얘기가 많이 나온다. 극단적인 예로는 콘크리트 살인 사건(1989)에서도 그렇다.
또한 철권 시리즈에 나오는 '카자마 아스카'자전거 끌고 다니는 여고생 컨셉이다.
이제야 그 바닥 문화가 좀 이해가 되고 퍼즐 조각이 짜맞춰지는 것 같다.

사용자 삽입 이미지

3. 권위주의

그럼 이제 민감한 주제들에 대한 본인의 생각을 조금씩 논해 보겠다.
일본에는 덴노라는 국가 상징 겸 정치· 종교 복합체 중심 구심점이 있으며, 여기 한국보다 뭔가 전체주의스러운 분위기가 더 강하다. 일제의 패망 후에야 덴노가 인간 선언을 하고 젊은 세대들이 많이 자유분방 개인주의스러워졌지만, 과거에는 그렇지 않았다.

이런 영향 때문인지 일본의 다른 분야는 몰라도 정치계나 법조계는 오늘날까지도 우리나라보다 권위주의가 훨씬 더 심하고 경직돼 있다. 실수나 잘못· 착오가 생겨도, 누굴 억울하게 누명 씌워서 몇십 년 옥살이 시키고 나서도 그걸 시인해서 직접적인 표현으로 사죄 따위는 거의 안 하다시피한다. 잘못을 순순히 인정하면 자기 권위와 위신이 깎인다고 생각한다. '엔자이'(원죄) 사건이라고 검색해 보면 이런 예가 여럿 나온다.

사고방식이 원래부터 저렇고 '자국민'한테조차 저러는데, 하물며 쟤들이 자기보다 (엄밀히 말해) 국력이 딸리는 외국을 상대로 위안부 피해 문제 같은 거는 절대로 대놓고 사죄할 일은 없다고 봐야 한다. 오히려 지금까지 이만치 간접적으로나마 유감 표현했고 돈 이만치 줬고, 이 주제 얘기 더 안 꺼내기로 지도자들끼리 서로 퉁쳤으면 나름 "걔네 입장"에서는 많이 양보하고 챙겨 준 것에 가깝다. -_-;;

뭐, 일본이 저 따구로 나오는 건 이스라엘 앞에서 가히 '도게자' 급으로 굽신굽신 사죄하는 독일과는 참 비교되는 모습이며 본인이라고 해서 보기 좋을 리 없다. 그럼 쟤네들은 원래 저런 놈들인가 보다 하고 우리로서는 과학 기술과 경제와 힘으로 극일을 이루는 것밖에 현실적인 답이 없다. 그 신사적인 독일조차도 이스라엘 급의 국력과 국제 위상이 있는 나라 앞에서나 굽신굽신이지, 다른 듣보잡 소수 민족이 나치에게 피해를 입은 건 상대적으로 모르쇠인 걸로 비판받는 건 변함없다.

이런 넓은 맥락에서의 이해 없이 그저 소녀상에다 반일 반일거리고, 일본하고는 뭘 하고 오든지간에 무조건 굴욕 매국 협상이라고 헛소리 하는 애들.. 정말 지겹다. 백 날 그렇게 설쳐 봐라, 일본의 태도가 바뀌는 게 있겠나?
그리고 또 내가 늘 하는 말이지만 북괴와 중국한테 그만치 부당하게 당해 온 걸 반의 반만치라도 따지고서 일본에 집착하는 거라면 또 내가 말도 안 한다. 북괴 김 정은이 6· 25 전쟁이나 연평도 포격에 대해서 남조선을 향해 사죄를 할 것 같아 보이냐? 그와 똑같은 맥락이다.

4. 그나마 중국· 북한보다는 더 가까이해야 할 대상

동북아시아 한중일 CJK 국가들을 생각해 보면..
우리로서는 일본은 비교적 가까운 과거사의 앙금 트라우마 때문에, 중국은 지금 당장 국가 프레임과 이념 차이 때문에 현실에서는 서로 마냥 손잡고 친하게 뭉치기가 불가능에 가까운 게 사실이다.

북괴? 걔들은 국가 프레임· 이념 차이를 넘어서 그냥 묻지 마 남조선을 체제 전복+적화시키려고 눈에 시뻘겋게 불 켠 쌩 양아치에 광신도+노예 집단일 뿐이고. 통상적인 경제력 군사력으로는 그걸 이룰 수 없으니 역사왜곡, 간첩질, 사이버전 선동질 등 방법도 갈수록 교묘하고 추잡해지고 있다.

통일 후에도 김돼지 동상이랑 주체사상 같이 껴안고 살 게 아니라면, 화해네 경제 협력이네 하는 개수작에 절대 응하지 말고 그냥 왕따 고립만이 답이고 진리이다. 굳이 먼저 북폭 하고 쳐들어갈 필요도 없으니, 굶겨 죽이기만 하면 된다.
일부 미사일 발사체 기술이나 소프트웨어 기술이 우리보다 앞서 있을지는 모르겠지만, 그런 예외를 빼면 배울 것 선한 것이라곤 아무것도 없다.

이런 현실 속에서 동북아 이웃 나라들 중에 남조선이 제일 가깝고 친하게 지내야 하는 상대는.. 나도 인정하고 싶지 않지만 일본이다.
그리고 제일 본받고 배워야 할 상대를 꼽자면 그건 친하게 지낼 대상보다도 더욱 단호하게 일본이다.

물론 구 일본군의 흉악한 전쟁 범죄라든가 그 스타일의 병신 같은 조직 문화와 똥군기 따위를 본받자는 얘기는 아니다. 하지만 걔네들은 그런 지랄맞은 시스템 하에서도, 우리의 입장에서는 척결해야 할 소위 '일제 잔재'라는 것들의 본거지임에도 불구하고, 그리고 내 관심 분야도 보태자면 한자 같은 불편한 문자를 쓰고도 어쨌든 근대화를 이루고 과학 기술 강국 선진국이 됐다는 점이 중요하다. 우리가 그렇게도 컴플랙스를 갖고 있는 과학 분야 노벨 상도 도대체 몇 개를 탔냐 말이다.

일본이 겉으로는 화해 유감 사죄 운운하면서 한편으로는 윗선에서는 모르는 척 망언 씨부리고 독도는 일본땅이다 교육을 해?
괘씸하긴 하지만 그렇게까지 걱정은 안 해도 된다. 그래 봤자 군사적으로 같은 친미 동맹이고 동일한 자유 진영 이념 프레임을 공유하는 국가끼리 대놓고 군사 충돌이 일어날 확률은 중국· 북한보다야 훨씬 낮다.

저 정도 앙금과 마찰이 있으면 우리도 겉으로는 웃으면서 얻어낼 거 얻어내면서 한편으로는 "일부" 극렬 민간단체를 모르는 척 묵인하면서 소녀상 한두 개쯤 놓고 시위든 하면서 맞불 놓으면 된다.
딱 그 정도까지만. 그건 나도 전략상 인정한다. 뭐 아무 티 안 내고 묵묵히 실력만으로.. 현대차· 삼성 전자가 일본 기업들 쳐발랐던 것 같은 방식으로 일본 이기는 게 제일 좋고 이상적이겠지만, 그럴 수만은 없고 현실에서는 감정상의 카타르시스도 약간은 필요하지.

필요 이상으로 반일 반일 거리는 애들이 진짜로 애국심? 민족 정기? 그런 순진한 이유로 일본 비판하는 경우는 생각보다 매우 드물다. 오로지 자국 비하와 북괴의 범죄 물타기라는 매우 불순한 목적인 경우가 훨씬 더 많다. 이런 비굴한 사고방식으로 일제의 식민사관 내지 조센징 엽전 비하는 어째 비판하고, 무장 항일 독립투사는 어째 칭송할 수 있는지 내 판단력으로는 이해가 안 된다.

전국 방방곡곡에 무슨 몇백 개씩 소녀상 세우자고 유세를 떨거나, 특히 아직까지도 우리나라가 친일 청산을 못 했네 웃기는 소리 하는 애들은 우리나라에 발을 못 붙이게 해야 된다. 누구 때문에 왜 친일 부역자 군경을 활용해야 했는지만이라도 정확하게 가르치면 아무 문제될 거 없고 거짓을 팩트로 격퇴할 수 있다.

지금으로부터 15~20년 전부터 본인을 봐 온 분들은 잘 알 거다. 난 예나 지금이나 주된 연구 개발 분야가 한글 입력이고, 전통적으로 얼마나 열혈 반일 민족주의자였는지를 말이다.
그랬는데 내가 이렇게 돌아섰을 정도면, 저쪽에 있는 애들이 정말 일관성 없고 주적 구분을 못 하고 필요악과 절대악을 분간 못 하는 거다. 나이가 들수록 "어 저건 아닌데..;; 왜 중국 북한에다가는 단 한 마디도 말이 없지?" 하는 거부감이 들면서 갈라서게 됐다. 요즘 같은 시대에 누구든 일본에 대한 바른 인식이 필요해 보인다.

Posted by 사무엘

2017/05/13 08:34 2017/05/13 08:34
, , , , ,
Response
No Trackback , 7 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1359

* 3년 전에 썼던 글을 내용을 보충하여 리메이크 한 것이다.

Windows 운영체제에서 생성하는 윈도우들은 그 본질이 크게 overlapped, popup, 그리고 child 이렇게 셋으로 나뉜다. 이해를 돕기 위해 아래의 Windows 1.0 사진을 한번 살펴보도록 하자. 그때는 이 세 종류의 구분이 지금보다 훨씬 더 명확했기 때문이다.

사용자 삽입 이미지

1. overlapped

1985년에 발표된 Windows 1.0 첫 버전은 기술적인 한계 때문..은 아니고, 애플 사와의 이상한 특허 분쟁에 얽히는 바람에 응용 프로그램 창들이 서로 겹치지를 못하고 타일 형태의 배치만 가능한 정말 괴상한 형태로 개발되었던 걸로 유명하다.
그러다 Windows 2.0에서는 타일 제약 봉인이 풀렸기 때문에 이 윈도우들은 겹쳐지는 게 가능해졌으며 Z-order라는 개념도 생겼다. 그게 워낙 뜻깊은 일이었던지라 명칭에까지 OVERLAPPED가 붙은 것이다.

그리고 저렇게, 타일 형태의 배치가 가능한 응용 프로그램의 최상단 껍데기 윈도우가 바로 오늘날의 개념으로 치면 overlapped 윈도우이다. 캡션이라고 불리는 제목 표시줄이 달려 있고 크기가 언제든지 유동적으로 바뀔 수 있으며, CreateWindow(Ex) 함수에다 위치와 크기를 지정할 때 CW_USEDEFAULT(대충 적당히 알아서)를 줄 수 있는 유일한 타입의 윈도우이다.

사실, WS_OVERLAPPED의 값은 그냥 0이다. popup이나 child 같은 속성이 따로 지정되지 않은 윈도우는 기본적으로 overlapped 속성이 지정된다. 여기에다가 최소화/최대화(WS_M??MIZEBOX)/닫기(시스템 메뉴 WS_SYSMENU) 버튼, 크기 조절 가능한 굵은 껍데기(WS_THICKBORDER) 비트들이 합쳐진 것이 바로 WS_OVERLAPPEDWINDOW 스타일이다.

2. popup

그럼 popup은 무엇이냐 하면 저 위의 About 대화상자처럼, overlapped window의 위에 겹쳐져서 배치될 수 있는 윈도우이다.
그런데 당장 Windows 2.0부터 오버랩은 말 그대로 overlapped window에서도 다 가능해졌으니, 둘의 실질적인 차이가 없어졌다고 볼 수도 있다. 하지만 둘은 여전히 완전히 동일하지는 않다.

popup 윈도우는 기본적으로 캡션이 없는 형태이며, WS_CAPTION 같은 별도의 옵션을 줘야만 캡션이 달린다. 그러나 overlapped 윈도우는 옵션을 주지 않아도 캡션이 무조건 달려 나온다. Windows 2~3 시절까지만 해도 응용 프로그램에서 캡션이 없고 제목이 없는 대화상자는 지금보다 훨씬 더 흔하게 볼 수 있었다.

지금은 대화상자들도 다 캡션이 달려 있으며 일반적인 응용 프로그램처럼 아이콘에다 최소· 최대화 버튼과 두꺼운 프레임까지 별도로 스타일로 주고 나면.. popup 형태의 대화상자 프로그램과, overlapped 형태의 일반 프로그램 창과 외형상의 구분은 사실상 다 사라지는 건 사실이다.

그럼에도 불구하고 popup과 overlapped의 구분이 원래 저런 데서 시작되었다는 것을 알면 되겠다. 다른 창의 내부에 종속되지 않고 독자적으로 화면에 떠 있으면서 캡션 같은 외형이 없거나 취사선택 가능한 모든 custom 윈도우라면, 묻지도 따지지도 말고 그냥 WS_POPUP을 주면 된다.

대화상자 리소스 편집기에서도 이 대화상자의 초기 스타일을 지정해 줄 수 있다. 프로퍼티 페이지처럼 다른 대화상자의 내부에 들어가는 대화상자이면 WS_CHILD를 주면 되고, 나머지 경우에는 WS_OVERLAPPED는 신경 쓸 필요 없고 그냥 WS_POPUP을 지정하면 된다.
여담이지만, 인터넷을 하면서 수시로 튀어나오는 웹브라우저 팝업창은 명칭과는 달리 사실은 overlapped 윈도우라고 생각하면 된다. 팝업창에도 웹브라우저 창 고유의 캡션과 프레임은 그대로 남아 있기 때문에 overlapped 윈도우의 정의에 훨씬 더 부합하는 걸 알 수 있다.

3. child

끝으로, WS_CHILD는 동작 방식이 위의 둘과는 굉장히 다르니 이해하기 쉽다.
자기의 위상이 독자적이지 않고 외형상 부모 윈도우의 내부에 종속된 모든 윈도우들은 child 윈도우이다. 대화상자의 내부 컨트롤들이 대표적인 예임.

얘는 컨트롤 ID라는 정보도 갖는다. HWND는 운영체제가 창들을 식별하기 위해 부여하는 가변적인 번호인 반면, ID는 창을 생성하는(= 운영체제에다 생성을 요청하는) 주체 측에서 고정붙박이로 부여하는 번호라는 차이가 있다. GetDlgItem은 이름처럼 굳이 대화상자의 자식 컨트롤뿐만 아니라 부모-자식 관계를 갖는 아무 윈도우에서나 ID값으로부터 자식 창을 얻을 때 사용 가능하다.

popup이나 overlapped 윈도우에는 저런 ID라는 개념이 존재하지 않으며, 그 대신 메뉴를 표시하는 기능이 있다.
뭐, child 윈도우도 비록 메뉴는 태생적으로 없을지언정 마치 overlapped 윈도우처럼 캡션과 프레임, 그리고 시스템 메뉴를 갖는 건 불가능하지 않다. 그 대표적인 예는 MDI 프레임 윈도우이긴 한데.. 그래도 그걸 빼면 캡션과 프레임을 갖춘 child 윈도우는 매우 드물다. 캡션과 프레임 자체가 최상위 윈도우의 상징과도 같으니 말이다.

이렇게 보면 overlapped와 popup이 한 묶음이고, 성격이 다른 child가 혼자 좀 따로 노는 것처럼 보인다. 하지만 동일한 클래스의 윈도우가 상황에 따라서 popup과 child 속성을 취사선택해서 동작하는 경우도 의외로 있다. 콤보 박스에서 내부적으로 쓰이는 ComboLBox라는 리스트 박스가 대표적인 예이다.

콤보 박스의 타입이 Simple이어서(대표적인 예는 글꼴 선택 대화상자) 리스트가 언제나 표시되어 보일 때는 얘는 콤보 박스에 딸려 있는 child 윈도우이다.
그러나 콤보 박스를 클릭하거나 F4를 눌렀을 때만 리스트가 표시되는 drop list 상태일 때는 그 리스트는 대화상자의 위에 별도로 표시되는 popup 윈도우 형태로 생성된다. 이해가 되시겠는가?

차일드 윈도우의 표시 위치는 자기 부모 윈도우의 클라이언트 위치를 기준으로 상대적으로 산정된다. 그런데 자기가 현재 부모 윈도우의 클라이언트 위치 기준으로 어디에 있는지를 한 번에 얻는 게 은근히 힘들다. 대화상자 크기에 따라 차일드 컨트롤들을 적절하게 재배치하는 코드를 작성해 보았다면 이 말이 무슨 뜻인지 잘 알 것이다.

이 경우 GetWindowRect를 한 후에 부모 윈도우를 기준으로 ScreenToClient를 하여 화면 좌표를 한번 거쳐야 하거나, 아니면 번거로운 구조체 초기화를 해야 하는 GetWindowPlacement 함수를 호출해야 한다. 후자 함수의 경우, 최대화된 윈도우라도 원래 있던 위치와 크기까지.. 그 윈도우의 위치와 관련된 모든 정보를 되돌려 주기 때문에 유용하다. 응용 프로그램이 종료 후 나중에 재실행될 때 원래 위치를 100% 그대로 실행되기를 원할 때 이 구조체 값을 백업해 두면 된다.

4. 윈도우 간의 부모/자식 관계

child 윈도우야 그 정의상 태생적으로 부모 자식 관계가 명백하게 존재할 수밖에 없다. 하지만 popup 윈도우도 비록 child처럼 표시되는 위치와 영역이 부모 윈도우 내부로 한정되는 급까지는 아니더라도, 부모 자식 관계 비스무리한 개념이 물론 존재한다.

popup 윈도우는 Z-order상으로 자기 부모 윈도우를 가리고 언제나 더 앞에 출력되며, 부모 윈도우가 소멸될 때 자기도 같이 없어진다. 요렇게 child가 아닌 popup 윈도우의 부모 역할을 하는 윈도우를 개념상으로 owner 윈도우라고 따로 부르기도 한다.

그럼 popup 말고 overlapped 윈도우는? 지금까지 살펴보았듯이 쟤는 애초에 주 용도가 응용 프로그램의 최상단 프레임 껍데기이다. 그러니 태생적으로 부모 윈도우 같은 걸 지정하지 않고 생성되며 부모 자식 관계를 따지는 건 딱히 의미가 없다고 봐야 할 것이다.

그런데, 여기서 유의해야 할 점이 있다. EnumChildWindow나 GetWindow(GW_CHILD) 함수에서 찾아 주는 건 순수하게 child 윈도우들뿐이다. Spy++를 실행하면 계층 구조로 표시된 윈도우 트리를 볼 수 있는데, 이것도 child 윈도우들의 관계만 볼 수 있다.
쉽게 말해 어떤 대화상자 내부의 대화상자(프로퍼티 페이지)라든가 각종 컨트롤들은 계층 구조로 표시되지만, 대화상자에서 얘를 owner로 삼아서 또 다른 modal 대화상자를 꺼내 놓은것을 계층 구조로 보여주지는 않는다는 뜻이다.

자신을 부모(정확히는 owner)로 갖는 서열상 하위의 popup 윈도우들을 한번에 찾아 주는 API는 의외로 존재하지 않는다. 난 이게 당연히 있을 줄 알았는데 없는 걸 발견하고는 개인적으로 굉장히 놀랐다.
일단 top-level 윈도우들을 다 enumerate 한 뒤, 얘들의 owner가 일치하는 놈을 일일이 뒤져 봐야 한다. 그래서 Spy++가 표시해 준 윈도우 리스트가 생각보다 직관적이지 않고 top-level 윈도우가 많은 것이었구나.

이상이다. Windows 프로그래밍을 15년 가까이나 판 본인도 몇 년 전까지만 해도 child는 그렇다 치더라도 popup과 overlapped는 도대체 왜 존재하는 구분인지를 잘 몰랐다. 그리고 parent 윈도우와 owner 윈도우의 관계도 정확하게 모르고 있었고 owned 윈도우는 child 윈도우 조회하듯이 곧장 조회가 가능하지 않다는 것도 미처 생각을 못 하고 있었다. 그러다가 요 근래에야 어렴풋이 이해하게 된 것들을 이렇게 정리해 보았다.

Posted by 사무엘

2017/05/10 08:35 2017/05/10 08:35
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1358

1. 내로남불 이중잣대

내가 하면 로맨스, 남이 하면 불륜 이중잣대.
이래도 X랄, 저래도 지X. 어떻게 대답을 하든 꼬투리 잡아 불평불만 욕하기.
이건 성경에도 정확하게 묘사되어 있는 호모 사피엔스의 종특이다. 정말 무릎을 치지 않을 수 없다. 나 역시 이런 오류를 범하지 않도록 노력한다.

요한이 와서 먹지도 아니하고 마시지도 아니하매 그들이 말하기를, 그가 마귀 들렸다, 하더니
사람의 아들이 와서 먹고 마시매 그들이 말하기를, 보라, 음식을 탐하는 자요, 포도즙을 많이 마시는 자요, 세리들과 죄인들의 친구로다, 하는도다. ... (마 11:18,19; 눅 7:33,34)

이솝 우화에 아주 비슷한 예가 있다. 나귀를 끌고 가는 부자 이야기 말이다. 아버지와 아들 두 사람이 각각 나귀를 타거나 타지 않는 2*2 = 4가지 경우를 어떻게 조합하건 주변 사람들은 욕을 했다. 이건 뭐 답이 없다.

마녀사냥이 괜히 천하의 개쌍놈 짓이라고 지탄받는 게 아니다. 멀쩡한 여성을 물에 쳐박아 넣었는데 안 죽고 버티면 레알 마녀 괴물이니 화형에 처한다. 꼬르륵 익사해 버렸으면 사람이니 마녀 누명은 벗지만, 당사자는 이미 죽고 없다. 뭘 해도 걸린다. 뭐 이런 식의 논리이니까.. -_-;;
destructive testing을 무슨 양산형 제품 중 하나를 무작위로 추출해서 시행하는 게 아니라 사람한테 시행하는 거다.

“난 이 승만은 보도연맹 학살과 국민방위군 사건 때문에 극혐하지만, 마오 쩌둥은 아무래도 좋고 대약진운동이건 제사해 운동이건 상관 안해요.” 같은 부류도 넓은 의미에서는 이런 범주에 속한다.
김씨 부자는 말할 것도 없고 어지간한 흉악 범죄자, 음주운전 교통사고 가해자, 731 부대장,히틀러나 도조 히데키 같은 전쟁광 인간 쓰레기들 한테도 안 쓸 욕과 저주와 악담을.. 좀 희생과 부작용 감수하고라도 정말 수단과 방법을 가리지 않고 남조선이 적화되지 않게 막은 잘못밖에 없는 자국 초대 대통령에게 도대체 무슨 의도로 퍼붓는지 난 잘 모르겠다.

그 시절에 그 욕 안 쳐먹고 곧이곧대로 신사적으로만 일 추진했으면 그냥 대한민국 간판 내리고 김 일성에게 정권 갖다바치는 수밖에 없었을 것이다.
뭐, 자기도 김 일성 싫어는 한댄다. 그러나 눈빛만 보면 안다. 똑같이 싫어한대도 이 승만을 욕할 때와 같은 혼과 진심은 절대 담겨 있지 않다. 이건 정상적인 분별력과 판단력에서 나온 행동이 아니다. 남조선 일부 대통령의 독재랑 북괴의 독재가 아무 차이가 없다는 망발도 사상에 이상한 데에 지독하게 오염된 중증 정신병이다.

그러니 이 정도면.. 그냥 “난 논리고 팩트고 뭐고 아무 필요 없고 특정 정치인은 그냥 괜히 아무 이유 없이 싫어요”가 차라리 솔직하고 정직하고 양심적인 대답이다. 그건 최소한 거짓말은 아니거든. 그러면 나라도 “아~ 그러세요?” 하면서 그 사람 앞에서는 정치 얘기 더 안 꺼낸다. 취향이야 존중해 줘야지?

그렇게 개인적으로 생각하는 건 얼마든지 자유이고, 심지어 그 주장을 자기 개인 사이버 공간에다 올리는 것 역시 자유다. 단지 그 따위 논리 체계를 갖고서 남의 사이버 공간을 더럽히고 오지랖을 놓는다거나, 남에게 적극적으로 영향을 끼치려고 하지만 않으면 된다. 자기와 생각이 다른 사람을 공격하거나 설득하려고 하지만 않으면 된다. (그리고 더 나아가서는 다른 직업은 몰라도 정치인, 외교관, 법조인, 문과 계열 교사 같은 직업은 안 갖고 살면 된다 -_-;; )

애초에 저런 성향의 사람들은 미국 같은 인권과 민주주의(?)를 요구하면서 자기 나라를 욕하고 비관하지만, 정작 추종하고 모델로 삼고 친해지려는 나라는 북한이나 중국처럼 인권이나 민주 따윈 있지도 않은 나라들이다. 똑같이 외국이고 비슷한 잘못을 저질렀을 때에도 비판하는 잣대가 같지가 않다. 쟤들은 원래 저렇다. 그러니 종북 빨갱이라고 백 날 욕 먹어도 할 말 없다.

2. 악마의 편집, 기레기 기질

그때에 그 제자는 죽지 아니하리라는 이 말씀이 형제들 가운데 널리 퍼졌으나 예수님은 그에게, 그가 죽지 아니하리라, 하지 아니하시고 다만, 내가 올 때까지 그가 머물 것을 내가 원할지라도 그것이 너와 무슨 상관이 있느냐? 하셨더라. (요 21:23)

이것도 완전 대박이다.
본문이 무슨 말이냐 하면, 예수님은 “요한은 설령 순교하지 않는다고 해도 그게 너(베드로)랑은 무슨 상관이니? 오지랖 부리지 마라”라고만, 즉 “안알랴줌” 노코멘트라고 대답을 하셨다. 그런데 그게 곧장 “요한은 순교 안 하고 천수를 누릴 거래!”라는 루머로 변한 채로 커뮤니티에 쫙 퍼졌다.

이게 인간의 심성이다. 다른 예로, 구약의 십일조에 대해서 생각해 보자. 신약에서는 성경에 약속된 보상 자체가 영적인 것이지 물질적인 것이 아니다. 그렇기 때문에 십일조는 그 취지나 정신을 빼면 교리적으로 신약 교회와 무관하긴 한데, 그 얘기를 하면 "어 그럼 아예 헌금을 안 내도 되네, 내 물질 안 바쳐도 되네"처럼 원문이 의도하지 않은 내용까지 자기에게 유리한 쪽으로 슬그머니 넘겨짚는 사람이 꼭 있다.

성경 얘기 말고 더 선정적인 예로는, 15년도 더 전에 우리나라에서는 “결혼하고 나서도 너무 바빠서 자녀계획 같은 거 생각할 겨를이 없네요”라는 인터뷰가 어느 찌라시에서 “최 진실 임신 못 한다”라는 제목으로 한 줄 요약되기도 했다. ㅠㅠㅠㅠ 저건 거짓말은 안 한 건가..?? -_-

그러니 예수님이 다시 이 땅에 온대도 언론은 얼마든지 천하에 죽일놈 개쌍놈으로 조작할 수 있다. 전혀 이상한 일도, 놀랄 일도 아니다. 바라바를 풀어 주고 예수님을 처형하라고 날뛰던 백성들 하나도 욕할 자격 없음. 오늘날까지 괴벨스의 후예들이 워낙 많이 날뛰고 있으니 말이다. 여기에 앞에서 언급한 내로남불 이중잣대 테크닉이 합해지면 삼인성호 같은 건 일도 아니다.

성경을 보면 “카이사르에게 세금을 바치는 것은 옳습니까?”(마 22:17), “간음하다 붙잡힌 이 여인을 어떻게 하는 게 좋을까요?”(요 8:4-5)처럼 겉으로는 평범한 정치· 종교 질문 같지만 결국은 Yes/No 뭐라고 대답하든 앞뒤 문맥 짤라서 사람을 매장하려는 의도가 다분한 불순한 함정 질문도 있다.

그러니, 하물며 “성전 헐고 사흘 만에 재건” 운운은 기레기· 선동꾼들이 앞뒤 문맥 떼어내고 집어물기에 이보다 더 좋을 수 없는 선정적이고 자극적인 떡밥이었다.
원전은 요한복음(요 2:19)에 있는데 사람들이 나중에 써먹는 건 다른 책인 마태복음(마 26:61)에서 나온다는 게 흥미롭다.

3. 극단적인 것, 예외적인 것만 부각시켜서 큰 진실 왜곡

(1) 큰 그림: 남자는 여자보다 힘이 세다.
작은 그림: 그런데 장 미란은 어지간한 남자들보다 훨씬 더 힘이 세다.

(2) 큰 그림: 미국은 한국을 군사적으로 정~말 많이 도와줬고 물자 원조도 하고 고아들도 왕창 많이 받아줬다.
작은 그림: 근래에 주한미군에 그렇게 질 좋은 사람이 오질 않다 보니 윤 금이 살해 사건에, 이태원 살인 사건 같은 범죄가 가끔 발생했다. 장갑차 교통사고 때는 가해자가 실실 쪼개고 앉아 있었다.

(3) 큰 그림: 88 서울 올림픽을 우리 민족의 저력으로 아주 성공적으로 개최했다.
작은 그림: 그런데 개막식 때 성화 점화와 비둘기 날리기가 서로 아귀가 안 맞아서 "세계가 지켜보던" 중에 비둘기 몇 마리가 산 채로 통구이가 돼 버리긴 했다. 그리고 미관에 안 좋다고 동선상의 판잣집들이 강제로 철거당하고 개고기는 더욱 음지화하게 됐다.

(4) 큰 그림: 북괴는 끊임없이 남한에 무력 도발을 하고 테러 저지르고 간첩 보내고 땅굴도 팠다. 악랄함의 수위로 따지자면 일제를 능가한다.
작은 그림: 그렇게도 반공 강조하던 박 정희도 김 일성으로부터 선물 받은 적 있고, 그 딸은 한때 평양 가서 김 정일한테 공손히 인사도 하고 온 적 있다.

(5) 큰 그림: 일제는 조선 땅의 물자를 가혹히 수탈했으며, 말기로 갈수록 전쟁 준비와 민족 말살 정책으로 조선인들을 매우 괴롭혔다.
작은 그림: 그런데 조선 말기가 워낙 너무 막장이었기 때문에 일제는 본이 아니게 한반도에다 철도 도로 전기 등 각종 인프라를 설치하고 근대화(?)를 시켜 주기도 했다. 초기엔 일제 순사가 마을 집집마다 파리채를 나눠주기도 했을 정도였다.


이 모든 정황에도 불구하고 남자는 여전히 대체로 여자보다 힘이 더 세며,
미국은 한국의 매우 고마운 우방국이다. 다른 나라라면 몰라도 반도는 반미 할 자격 천하에 없는 나라다.
88 서울 올림픽은 전반적으로 매우 잘 치러서 한국의 리즈 시절 추억을 남겼고,
북괴는 오히려 그렇게 화해하는 척하면서도 호박씨 까면서 더욱 비열하게 도발을 했을 뿐이다.

일제 역시 조선을 조금 근대화시켜 준 건 돼지를 잡아먹기 직전까지 잘 먹이고 살찌우는 것과 같은 목적으로 한 것일 뿐이다. 쟤들이 말기엔 단군의 후손이라는 정체성을 아예 싹 없애려고 창씨개명, 한국어 사용 금지, 신사 참배와 궁성요배 강요 짓거리를 한 걸 생각해 보아라.
이건 사람을 대놓고 독가스실로 보낸 것만 아닐 뿐이지 몸이 아닌 정신에 대해서는 거의 나치 유대인 학살 급의 죄질이다. 이 엄청난 만행이 겨우 1920년대 리즈 시절에 알량한 인구 증가와 식량 생산 증가, 철도와 공장 건설 산업화 따위로 실드 쳐지겠는가?

작은 그림을 의도적으로 부정하고 은폐할 필요는 없다.
그러나 작은 그림에 "만" 꽂혀서 큰 그림을 부정하려 하는 외눈박이 이단들로부터는 반드시 도망쳐 나와라. 그런 애들은 순진하고 멍청하기보다는 사악하고 불순한 경우가 더 많더라.

기독교계에 이런 방식으로 넘어진 이단들은 일일이 열거하기도 어려울 정도로 수두룩하다.
진리의 성경 말씀을 올바로 나눠야 하지만(딤후 2:15), 한편으로 역사 팩트도 올바로 나눌 줄 알아야 한다. 여기서 divide란 분할, 구분, 분간..을 의미한다.

4. 결론

이것 말고 또 무슨 예가 더 있을까?
성경에는 마태복음의 끝부분처럼 로마 정부가 “예수 시체 도난”이라고 여론 조작과 매수를 시도하는 장면도 나오고,
또 고라 일당처럼 자기가 권력욕 대통령병에 걸려 있으면서 말은 “성직 계급 반대, 만민 제사장론” 드립을 치면서 모세를 상대로 반역을 부추기는 장면이 나온다. 사회· 공산주의가 주장하는 “능력껏 벌어서 필요한 만큼 쓰는 세상, 노동자가 주인 되는 세상” 이런 것도 다~ 저런 케케묵은 전략의 후신일 것이다.

아무리 과학기술이 발전해도 인간의 본성이 바뀌지는 않겠지만, 인간이 그래도 뇌가 있고 일말의 지능이 있다면 최소한 옛날 사람들이 겪었던 시행착오를 또 겪는 일은 없어야 할 것이다. 실수를 하더라도 주토피아 OST 가사처럼 새로운 실수를 계속 만들면서 발전이나 변화를 해야지 뻔히 실패가 검증된 길을 또 가서는 꿈도 희망도 없다.

내가 늘 말하듯이 성경은 신약 크리스천의 행실 차원에서는 정교 분리를 명시하며, 기본적으로 정치 중립적인 책이다. 예수님이 재림해서 지구를 직접 다스리기 전까지는 인간이 만드는 완벽한 세상 정부와 지상락원 유토피아 같은 건 있을 수 없다.
성경은 "위의 권위와 주인과 갑에게 순종하라" 같은 보수적인 이념 위주이지만, 누가복음이나 야고보서 같은 매우 좌파스러운 책도 있다. 결정적으로 예수님을 십자가에 매다는 데는 유대인, 로마인, 백성과 지도자와 외세가 공평하게 똑같이 기여했다.

이런 기본적인 균형이 잡혀 있음에도 불구하고 지금 우리나라 현실에서는 소위 좌와 우 중에서 누가 더 크게 잘못하고 있고 더 반역적이고, 더 반성경적인 방법론을 즐겨 사용하는지는 정말 답이 이미 나와 있는 문제인 것 같다. 모두가 공평하게 잘사는 세상 따위야 인간의 힘으로 결코 이룩할 수 없지만 북괴에 안 퍼 주는 세상 정도는 인간의 힘으로 이룩할 수 있으며, 반드시 이룩해야만 한다!

물론 사람이란 게 성장 배경과 관심분야가 제각각이고, 보고 듣고 정보를 입수하는 경로가 제한돼 있다 보니 삼라만상을 보는 관점이 편파적이 될 수는 있다.
누구는 일본이 더 싫지만 누구는 북한이 더 싫고.. 누구는 경제와 안보에 더 관심이 많지만 누구는 약자 인권과 복지에 더 관심이 많을 수는 있다. 혼자만 그렇게 생각하고 자기 일기장이나 SNS에다가만 끄적거리는 거면 그건 아무 문제될 게 없다.

그러나 감히 대통령을 물러나라고 요구할 정도의 강한 결론이 담긴 주장을 하거나, 남의 주장을 반박하고 남의 SNS에다가 오지랖을 부리거나 남을 설득해서 논쟁에서 이기고 내 편을 만들려면 논리가 편파적이어서는 결코 안 된다. 아예 법조인, 정치인, 또는 문과 계열의 교사· 교수처럼 나라의 미래를 좌지우지 하고 남에게 적극적으로 영향을 끼치는 처지의 사람이 사상 체계가 그따구여서는 절대 안 된다.

일관성이 없으려면 차라리 일관성 없게, 랜덤하게 일관성이 없어야(?) 그건 비교적 자연스러운 모습일 것이다. 정말로 그 사람이 생각이 짧거나 식견이 부족했거나, 하나만 알고 둘은 몰라서 편파적으로 생각한 것일 수 있다. 그건 개선의 여지가 있다.
그러나 인권을 얘기하고 나라의 비극과 흑역사를 얘기하면서 오로지 북괴에 대해서만 절~~~대 침묵하고, 꼭 그쪽으로만 "일관되게 일관성이 없는 것"은 우연일 수 없다. 일부러 작정하고 그러는 것이며 매우 불순하고 사악한 태도이다.

그래 가지고는 나 같은 사람은 절~대로 설득을 못 할 것이고 내가 쓰는 글의 논조를 바꿀 수 없을 것이다.
"얻다대고 비겁하게 팩트나 끄집어오다니? 인권 민주 복지 평화 통일 팔아서 거짓 날조와 선동으로 정정당당하게 승부하자!" 이러려는 것 같은데, 그런 속 뻔히 보이는 전술은 나한테는 절대로 안 통할 거다.

Posted by 사무엘

2017/05/07 08:32 2017/05/07 08:32
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1357

박 정희 대통령의 자녀들

1. 박 근혜(1952)

* 주의: 오늘은 시기가 시기이다 보니 오랜만에 정치 얘기 좀 꺼낼 것이고 글 중간에 필터링하지 않은 진지한 욕설도 늘어놓을 것이다. 독자들에게 미리 양해 구함.
나하고 정치 성향이 맞지 않고 북괴는 같은 '우리민족'이니 남조선의 존립에 전혀 위협이나 해가 되지 않는다고 태평스럽게 생각하는 분, 내 글을 팩트와 논리로 반박· 저격할 의향이 없는 분은 박 근혜 얘기는 그냥 건너뛰기 바란다. 난 분명히 미리 주의를 줬다.

서강대 전자공학과를 나온 나름 이공계 출신이고, 잘 알다시피 그냥 독신이다.
이 사람은 바로 얼마 전까지 제18대 대통령을 역임하여 우리나라 최초의 여성 대통령, 과반 당선 등의 기록을 달성했다. 그러나 헌법을 고치면서 18년씩이나 대통령을 한 부친과는 달리, 딸은 예정되었던 임기도 못 마치고 탄핵 인용 파면으로 대통령 생활을 마감했다. 하긴, 만기 퇴임을 못 한 건 부녀가 동일하네..;;

글쎄, 내 소신을 말하자면 본인은 박통이 재임했던 4년 동안 약간이나마 행복했다. 지금은 그 행복이 중대한 위협을 받게 되어 마음이 착잡할 따름이다.
박통을 개인적으로 좋아하거나 싫어한다는 의견에 대해서야 개인 자유이며 내가 더 시비를 걸 여지가 없다. 그러나 이 사람이 무능했다거나, 한 게 아무것도 없다는 주장에는 본인이 결코 동의할 수 없다. 한 게 없긴 왜 없냐? 두 눈 똑바로 뜨고 봐라.

  • 통합진보당 해산
  • 전교조 법외노조화
  • 한미 연합사 전시작전권 전환 무기연기, 전쟁 위협 시 선제 타격 가능
  • UN 북한 인권 결의안 채택
  • 개성공단 폐쇄 및 대북지원 (명목상) 0원

야당 후보가 죽었다 깨어도 절대로 안 하거나 못 할 일을 얼마나 많이 해냈냐? 박 근혜는 애초부터 DO보다 BE의 업적이 더 뛰어난 대통령이었다. 우리나라 적화통일을 한 4년쯤 늦춰서 최소한 시간은 벌어 줬다.

이 정도로 퍼 주고 시행착오를 겪었으면, 이제는 북괴에 대해서 "시키는 대로 할 테니 주민들 해치지 마라"가 아니라
네일건 쏘면서 "두 번 협상은 없어. 한 시간 내로 핵무기 포기해" 이래도 모자랄 판 아닌가?
전쟁? 얼어죽을 북폭 선제공격 같은 건 할 필요도 없다. 그냥 모든 돈줄을 차단하고 가만히 내버려두기만 해도 된다. 급한 건 북괴이지 우리가 아니다. 모든 정황이 우리에게 유리하다.

그런데도 아직까지 대화나 협력으로 북핵을 해결하자 나불대는 인간말종 개새끼들은 정말 대놓고 종북 개빨갱이들 아닌가? (너무 화가 치밀어서 욕설을 가리지도 않았다) 그야말로 Let's make North Korea great again이다.
꼭 저러는 놈들이 일제에게 비굴하게 평화를 구걸했던 구한말 매국노 친일파는 같은 입으로 어째 저렇게 욕을 해 대나 모르겠다.

다시 말하지만 박통 레카는 행적이 분명히 있다. 단지 종북좌빨들이 좋아하는 행적이 아니었을 뿐이다. 레카가 훌륭한 대통령이었던 이유는.. 적들의 평가가 말해 준다. 이 이상 더 말이 필요하지 않다.

사용자 삽입 이미지

로동신문 2016년 3월 16일자라고 함. 그로부터 딱 1년 뒤에 북괴의 "꿈은 이루어졌다."

바보 멍청이들이 꼭 "위수김동 장군님 만세"만 외쳐야 종북인 줄 알어.. 사탄 마귀가 빛의 천사로 나타나지 그럼 반공 포스터에 그려진 것처럼 뿔 달리고 꼬리 달린 흉측한 괴물로 나타날 줄 아냐?

박 근혜가 아들이 비리 저지른 전직 대통령, 부인이 뇌물 받은 전직 대통령 등 온갖 친인척 비리가 얽히고 설켜 있는 다른 사람들보다는 훨씬 더 청렴했다는 건 주지의 사실이다. 저런 거 다 지켜봐 온 사람으로서 지금의 뇌물 수사네 구속이네 하는 거.. 정말 정의를 위해서 하는 건 1도 아니라는 것쯤은 진영논리로 양심과 지능이 마비되지 않은 한 삼척동자라도 알지 싶다. 개돼지가 아니라 과거에 대한 기억이 시퍼렇게 살아있고 학습효과가 있는 사람을 속이고 선동할 순 없지!

레카가 탄핵돼야 하는 이유는 내가 보기에 거의 전부가 탄핵까지 당할 잘못도 아니고 그냥 지가 닭그네가 싫은 이유들(= 좀 심하게 말하면 적화통일에 걸림돌이 되니까) 그 이상도 그 이하도 아니더라.

  • "북괴한테 물어 보는 건 괜찮고 최 순실한테 물어 보는 것만 그렇게까지 죽을 죄냐?" (다른 비정치적인 주제도 아니고 인권 결의안 같은 아주 크리티컬한 것을)
  • "지금이 어느 시댄데 빨갱이 타령이냐고? 그럼 더 오래된 친일파· 위안부 타령은 뭐냐?"
  • "그 무개념녀는 그래도 허접하게나마 승마 단체전 메달이라도 땄지, 수많은 고시낭인 취준생들을 농락하고 아무 스펙 없이 특혜만으로 공기업 합격부터 한 뒤에, 대충 쓴 이력서 달랑 제출한 누구 아들은 그럼 뭐냐? 게다가 뭐 저런 놈이 서민 타령이냐?"

등, 저격할 아이템들은 한도 끝도 없다.

판결문 어딘가에 있던 문장인데.. 헌법 수호 의지가 없다고? 나 참 기도 안 차서.. 외국까지 나가서 북핵 열심히 옹호하고 실드 치던 모 대통령의 짓거리는 씨발 그럼 자국 헌법 수호 의지가 있는 행동이더냐? 사람들이 진짜 큰 위험한 죄가 뭔지 우선순위 분간을 못 한다.
자 그럼.. 흥분은 가라앉히고, 다음 얘기로..

2. 박 근령(1954)

이분은 박 근영, 박 서영을 거쳐서 지금의 이름으로 개명을 어찌 된 일인지 두 번이나 했다. 서울대 음대 나왔으며, 그 이름도 유명한 "새벽종이 울렸네 새 아침이 밝았네" '새마을 노래'의 실질적인 작곡자로 알려져 있다.

이 글을 쓰는 본인은 1980년대생으로 박통은커녕 전대갈 시절을 경험한 기억조차 없다. 서울 올림픽 이전 시기는 직접체험의 기억이 없는 선사시대의 영역이다. 민주화 운동 같은 것도 모름.
허나, 새마을 노래를 동요 테이프에서 들은 적이 있고 엄청 옛날 음악 교과서에서 악보를 보기도 했다.

새마을 노래는 가사 내용대로 "일하면서 싸우고 싸우면서 일하기 좋게", 노동요처럼 참 흥겨운 곡이라는 생각이 들었다. 물론 여기서 싸우는 건 같은 편끼리 치고 받고 싸우는 게 아니라 적군(=북괴)과 싸운다는 얘기다. 성경에서 느헤미야서에 완벽한 예시가 있다. (느 4:15-18)

이 새마을 노래는 공식적으로 박 정희 대통령의 작사 작곡으로 등재되어 있다.
일단 작사는 아랫사람을 시킨 뒤 대통령 이름만 올린 게 아니라 정말로 박통 당사자가 한 것으로 보인다. 저 사람은 젊은 시절부터 교사와 장교를 모두 역임했고 그림과 글씨, 음악 등 예체능에도 두루 조예가 깊은 똑똑한 사람이었다.

작곡에 대해서는 사실은 세월 간격을 두고 조금 상이한 증언이 존재한다. 2004년경 굿데이 인터뷰에서는 작곡을 딸이 다 했다고 나오지만 더 최근 인터뷰에서는 작곡까지 아버지가 했는데 딸은 그걸 악보로 받아 적고 편곡만 한 것으로 나온다(2008년 11월자 인터뷰, 그 뒤 2015년에도). 어떤 형태로든 그 당시 대통령의 영애가 개입을 했다.

박 근령은 훗날 1982년에 대기업 회장 가문 아들과 결혼했으나 6개월 만에 이혼하고 오랫동안 언니처럼 솔로로 지냈다. 그러다 그로부터 30년이 넘은 2007년에 50이 넘은 나이로 무려 13살 연하의 전문대 교수와 재혼했다. 자녀는 없음.

3. 박 지만(1958)

육사까지 나오긴 했지만 잘 알다시피 젊은 시절에 방황 많이 했고, 40대 중반 나이가 된 2004년에야 16살 연하의 변호사와 결혼했다. 그 이듬해에 득남했다가 2014년에 9살 터울의 둘째 아들을 얻었고, 그 다음 2015년에는 쌍둥이 아들을 얻어서 자식은 아들만 넷이다. 부인이 젊다지만, 그래도 58세의 나이에 얻은 아들이니 정말 엄청난 늦둥이이다. 박 정희가 1917년생인데 증손자도 아닌 막내 손자가 2015년생이라니...

박 지만이 학교에 들어가던 1970년대 초중반엔 이제 막 고등학교 평준화가 시행되었으며, 학교 배당에 컴퓨터 추첨이 동원되었다.
KIST가 정부로부터 이거 뺑뺑이를 의뢰받아서 실시했는데, "추첨을 살짝 조작해서 대통령의 아들인 박 지만 군을 그래도 명문 K고에다가 배정하라"라는 외압이 있었다고 한다.

그러나 그 당시 KIST 전산실 실장이던 성 기수 박사가 이에 소신껏 응하지 않고 아무 조작 없이 추첨을 돌려서 그는 J고에 진학하게 됐다... 고 성 박사의 회고록이 전해진다. K와 J가 어디인지는 알 만한 사람들은 다 알 것이다.

이렇듯, 이쪽 가문은 결혼 여부와 시기, 자녀 유무나 시기 같은 가정사가 다들 평범하지 않아 보인다.
사실은 박 정희는 어렸을 때 억지로 떠밀려서 결혼한 전 부인 김 호남에게서 얻은 딸도 하나 있다. 박 재옥(1937)이라고 박 근혜 전대통령의 입장에서는 15살이나 더 많은 이복 언니이다. 이분은 그나마 평범하게 산 듯하며, 친부에게서 그렇게 아주 버림받지는 않고 특혜도 종종 받으며 지냈다.

Posted by 사무엘

2017/05/04 08:30 2017/05/04 08:30
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1356

1. 외부 모듈 핵심부의 EXE 분리

오래 전부터 조금씩 풀었던 썰이긴 한데, 마침 최근에 회사에서 유사 개발 업무를 한 적도 있고 해서 다시 얘기를 꺼내 보겠다.
Windows는 타 OS들과는 달리 IME가 EXE가 아닌 DLL 형태이다. 한 프로세스의 주소 공간에 완전히 속해 있는 덕분에 성능이 좋다는 장점이 있겠지만, 한영 상태가 스레드들마다 제각각 따로 놀고 거기에다 memory-mapped 방식으로 로딩된다는 특성까지 겹쳐서 IME의 on-the-fly 업데이트가 몹시 난감하다.

EXE라면 업데이터 하나 띄워서 자신을 종료한 뒤 업데이트 된 놈으로 재시작만 하면 간단하게 끝났을 일인데 Windows용 IME는 업데이트 하려면 자신을 사용하는 프로그램들을 몽땅 종료해야 하고, 그게 여의치 않으면 그냥 운영체제를 재시작/로그오프 해야 한다. 거기에다 32/64비트까지 모두 신경 써야 한다.

그래서 <날개셋> 한글 입력기 외부 모듈도 인제 와서 처음부터 다시 만드는 건 무리이겠지만, 앞으로 덩치 큰 IME를 만들 일이 있으면 DLL은 거의 업데이트 할 일 없는 껍데기만 남겨 놓고 실질적인 문자 조합은 EXE 기반의 '서버'에 담당시키면 어떨까 생각을 해 왔다. 업데이트도 IME가 통신하는 EXE만 하고 말이다.

이렇게 하면 모든 IME들의 설정과 상태 동기화는 자동으로 이뤄진다. 서버와는 함수 호출이 아니라 메시지와 memory-mapped file 같은 간접적인 방법으로 통신을 하니 서버는 굳이 바이너리 구분을 할 필요 없다. 64비트 OS에서는 64비트 서버 하나만 띄워 놓으면 32비트와 64비트 IME가 모두 통신이 가능하니 더욱 좋다.

실제로 실험용 IME를 만들어 본 결과는 흥미로웠다. 서로 다른 프로세스끼리 메시지를 주고받을 때는 단일 스레드끼리 메시지를 주고받을 때에 비해 고려해야 할 점이 더 많았다. 받는 쪽에서 자체적으로 대화상자 같은 걸 출력하고 그 상태로도 자체 메시지를 처리하지 못하는 block 상태가 되지 않으려면 대화상자는 modal이 아니라 반드시 modeless 형태로 만들어야 했다.

SendMessage와 PostMessage를 조심해서 가려 써야 하며, 리턴값을 꼭 받기 위해 Send를 하면서도 신속한 반응성을 보장하기 위해서는 지금까지 머리로만 알고 있던 ReplyMessage 같은 함수를 난생 처음으로 써 보기도 했다. 특히 호스트가 클라이언트로부터 Send된 메시지를 받은 뒤에 대화상자 같은 modal UI를 띄운다면 말이다.

여기까지 생각을 하긴 했으나.. IPC 기법들은 근본적으로 IME들이 쓰라고 만들어진 메커니즘이 아니다 보니 한계도 많다.
가장 먼저 권한 문제가 걸리니, IME 서버는 번거롭게 관리자 권한으로 실행하거나 아니면 애초에 운영체제의 서비스 같은 급으로 만들어야 한다. 메트로와 데스크톱 앱 사이의 소통도 문제이고..
IME가 글쇠 입력을 받은 것을 서버로 요청을 보내는 건 그럭저럭 할 만하나, 반대로 서버가 IME로 문자 입력 요청을 하는 것은.. IME가 제각각 스레드 동기화 오브젝트나 윈도우를 만들어야 가능할 것이다.

서버는 자신과 접속하거나 종료하는 클라이언트들을 파악하고 있어야 하는데 자고로 프로세스라는 건 강제 내지 비정상 종료될 때도 있다. 그렇기 때문에 모든 프로그램들의 근황을 언제나 정확하게 파악하고 있는 것도 훅킹이라도 동원하지 않으면 의외로 쉽지 않더라.

이것저것 가성비를 생각해 보니 서로 장단점이 있고 근본적으로 한 방식이 다른 방식을 완전히 대체 가능해 보이지는 않았다. 안 그래도 날개셋의 경우 EXE 기반의 입력기 개발 실험은 입력 패드를 만들면서 이미 그럭저럭 하기도 했다. Windows에서 어떤 DLL이 타 프로세스에 합법적으로 침투할 수 있는 양대 통로는 미우나 고우나 훅킹 아니면 IME이다.

다만, 지금 MS 일본어 IME가 이미 그런 것처럼 제어판 대화상자만은 EXE로 분리하는 게 나은 점도 있다.
실행되는 응용 프로그램에 따라서는 공용 컨트롤.. 특히 6.0 이상에서만 지원되는 syslink나 split button, 에디트 컨트롤의 풍선 도움말(cue banner) 같은 게 초기화되지 않은 경우가 종종 있어서 내 날개셋 제어판도 그거 영향을 받아 제약을 받기도 하기 때문이다.

뭐 그건 그렇고..
기존 데스크톱 앱인 '제어판' 말고 메트로 앱인 '설정'에서 돌아가는 환경설정은 어떻게 만드는지 모르겠다. MS 한글 IME에는 그런 게 있던데..;;

2. 설치 시스템 개편

예전에도 여러 번 언급한 바와 같이, <날개셋> 한글 입력기는 Visual Studio가 기본 제공하는 Windows Installer 기반 msi 패키지 형태로 배포되고 있다. 이 솔루션은 MS 본가에서 만든 만큼, 프로그램을 설치하거나 제거하는 본연의 성능은 일정 수준 이상의 퀄리티가 보장된다. 프로그램 디렉터리 어딘가에 uninstall stub 프로그램 같은 게 덕지덕지 붙어 있을 필요도 없고 아주 seamless + 깔끔하다. 하지만 개발툴이 제공하는 GUI 템플릿은 customize가 매우 제한적이고 불만족스러운 점이 많기 때문에 다른 솔루션을 써 볼까 생각도 자주 해 왔다.

이상적인 설치/배포 솔루션은 다음과 같은 조건을 만족해야 한다. 다른 프로그램이라면 몰라도 <날개셋> 한글 입력기에 대해서는 내가 보다시피 욕심이 좀 많다.

  1. CPU 통합: 한 exe 파일 단독으로 32비트와 64비트 OS에서 잘 동작하고, 32비트에서는 당연히 64비트 바이너리를 설치하지 않아야 한다. EXE처럼 32/64비트 중 사용 가능한 상위 바이너리 하나만 설치하면 되는 파일은 선별이 옳게 돼야 한다. 필요한 디스크 공간 계산도 이 모든 변수를 감안해서 돼야 한다.
  2. 언어 통합: 한 exe 단독으로 운영체제의 기본 언어가 한국어이면 한국어, 그렇지 않으면 자동으로 영어로 설치 프로그램의 UI가 출력되어야 한다.
  3. 유니코드 통합: 평상시에 유니코드 API를 사용하는 건 너무 당연한 얘기이고, 그럼에도 불구하고 구닥다리 Windows 9x에서도 유니코드만 포기하고 기본적인 실행이 돼야 한다. 이것도 물론 단일 파일로 말이다. <날개셋> 한글 입력기 본제품이 Windows 95/NT4부터 꼬박꼬박 다 지원하는 프로그램이기 때문이다.
  4. known 폴더: 또한 아무 액세서리 없는 깡통 Windows 95 RTM에서 실행되더라도 IE 4~5 이상에서 첫 도입된 ProgramData (Application Data)같은 known 디렉터리를 인식해서 파일을 제 위치에 설치해야 한다.
  5. 원활한 제거: Windows용 IME는 그 특성상 on-the-fly로 업데이트나 제거가 꽤 난감한 물건인데, 당일 제거를 못 했으면 재부팅 요청 같은 후처리를 적절히 수행해야 한다.
  6. 그 밖에: 관리자 권한 드립 치는 UAC 화면은 setup을 실행하자마자 뜨는 게 아니라, 실제로 설치가 시작되어 관리자 권한이 정말로 필요해졌을 때 직전에 뜨는 게 바람직함.

진짜 유명한 세계구급 소프트웨어인 경우, 설치 프로그램이 언어를 선택받는 대화상자부터 띄우는 경우가 있다. 하지만 날개셋의 경우 그렇게 유명한 물건은 아니니 그냥 운영체제의 기본 GUI 언어가 한국어가 아닐 때에만 영어로 동작하는 걸로도 충분할 듯하다. 날개셋은 GetSystemDefaultLangID() 함수를 써서 판별하는데, 이게 GetUserDefaultLangID와 차이가 무엇이 있는지는 개인적으로 궁금하다.

msi는 (1)과 (2)는 전혀 만족하지 않는 것으로 보여서 문제다.
그러나 (3)과 (4)는 Windows installer runtime (non-Unicode 9x용 에디션)자체만 미리 설치하면 그럭저럭 어렵지 않게 충족된다. 2.0 런타임은 의외로 깡통 Windows 95에서도 깔끔하게 설치 가능하다. 이것 때문에 <날개셋> 한글 입력기가 MSI 외에 다른 배포 솔루션으로 갈아타기가 어렵다.

"HKCU 또는 HKLM"\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders라는 레지스트리를 참조하면 known 폴더 위치를 얻을 수 있다. MSI가 이런 것까지도 생성해 준다. 이렇게 레지스트리를 수동으로 뒤지는 방법은 오늘날에는 마소에서 권장하지 않는 방법이지만, The old new thing 블로그의 설명에 따르면 아직도 여기를 참조하는 고집쟁이 옛날 어플 때문에 어쩔 수 없이 호환성 차원에서 레지스트리를 계속 지원해 주는 거라고 한다. 사실, IE 4~5가 없고 SHGetSpecialFolderPath 함수가 존재하지 않는 골동품 Windows 95 환경에서는 여기를 뒤지는 것밖에 선택의 여지가 없기도 하다.

다음으로 (5)의 경우 msi는 딱 기본만 수행한다. "다음 프로그램들이 요 DLL을 사용하고 있습니다" 대화상자도 찍어 주고, 뭔가 못 건드린 파일이 있으면 "재부팅 하시겠습니까?"라는 여운을 남기기도 하는데, 가끔은 안 그럴 때도 있는 듯하다.

msi 말고 3rd party installer 중에서는 오픈소스이기도 한 NSIS가 세계적으로 제일 유명하다. WinAmp는 역사 속으로 사라졌고 개발사인 Nullsoft도 없어졌지만, 그래도 NSIS만은 유용성 덕분에 오픈소스 진영에서 살아남아 있다. Nullsoft의 개발자들이 왕년에 불멸의 작품 하나로 이름을 남겼다.

얘는 어떤가 하면..
(1)과 (2)는 기술적으로 일단 가능하다. msi보다 분명 우월한 점이다. 그러나 그냥 '가능하다'에서 끝일 뿐, 막~ 적극적으로 지원되고 깔끔하고 편한 형태로 가능하지는 않아 보인다.

단적인 예로, 생성되는 installer에 붙는 런타임 바이너리가 기본적으로 32비트 기반이다 보니, 거기 스크립트 언어에서 기본 제공하는 등록 명령만 이용해서는 64비트 DLL에 대해서 DllRegisterServer(시스템 등록) 호출을 할 수 없다. 뭐, 운영체제가 제공하는 regsvr32 /s를 이용하면 되긴 하지만, 사용자가 직접 저렇게 외부 유틸리티나 플러그 인을 끌어들일 필요 없이 NSIS가 내장 명령어 차원에서 저걸 지원하면 더 좋을 것이다.
홈그라운드 운영체제의 지원빨이 있는 msi에서는 반대로 DLL의 등록쯤은 전혀 걱정할 것 없는 사항이다. 64비트용 msi라면 64비트 DLL이건 32비트 DLL이건 불문하고 등록이 깔끔하게 잘 처리되기 때문이다.

(3)은 NSIS가 한동안 정식으로 지원하지 않아서 Unicode NSIS라는 별도의 프로젝트 브랜치가 나돌 정도이다가 비교적 최근에 NSIS가 3.x 버전에 진입하고 나서야 유니코드를 정식으로 수용하게 됐다.
그러나 NSIS는 기술 수준이 그냥 이미 있는 Windows API를 감싸는 정도를 벗어나지 않기 때문에 유니코드와 Windows 9x를 동시에 지원한다거나, 구버전 OS에서 신버전의 known 디렉터리를 만들어 주는 정도의 과잉 친절을 베풀지는 않는다.
(5)의 경우는 NSIS가 어디까지 자비롭게 대처하는지 아직 제대로 확인을 못 해 봤다.

요약하면, 완전한 스크립트 기반인 NSIS가 당장 자유도가 뛰어나 보이기는 하지만, 그래도 레거시 운영체제 지원이나 시스템 차원에서의 융통성은 그래도 msi가 나은 게 있어서 한 솔루션이 다른 솔루션을 완벽하게 대체하지는 못하는 실정이다.
NSIS의 스크립트는 무슨 파이썬이나 Lua 급으로 복잡한 연산식이나 복합 자료구조를 지원하는 본격적인 고급 언어가 아니다. 스크립트의 문법은 반쯤 어셈블리어에다가 C언어의 전처리기를 얹은 것 같은 구조이며 생각보다 제약이 많다.

어셈블리어 같은 문법인데 CPU 인스트럭션이 들어가는 게 아니라 Windows API의 함수와 각종 속성 명칭이나 상수들이 들어간다는 점만 다르다. if-then-else, switch 같은 조건 판단과 분기조차도 언어의 키워드가 아니라 그냥 분기문을 표현하는 매크로 형태로 구현되었을 정도이다.
그나저나, 파일 경로를 많이 다루고 역슬래시를 필연적으로 많이 쓴다는 특성상 \ 자체는 탈출문자로 쓰지 않고 $를 붙여서 $\n으로 개행문자를 표현하는 건 인상적이었다.

설치 스크립트도 당장 필요한 기능만 주먹구구식으로 구현하는 게 아니라 치밀하게 잘 만들려면 끝이 없겠다.

  • 한 스크립트로 몇몇 스위치만 달리하여 동일 제품의 여러 파생형이나 변형 에디션(가령, 셰어웨어 데모/정식 같은)을 조건부 컴파일로 간단히 감당 가능
  • 한 제품에서는 아까 말한 언어와 아키텍처를 단일 출력 바이너리만으로 모두 커버 가능
  • 모든 문자열 값들은 언어 중립적인 값과 언어 종속적인 값으로 나눠서 관리 가능하고, 제품 이름 같은 건 한 곳에서 값을 바꾸면 등장하는 모든 곳에서 값이 알아서 바뀌어야 함
  • 컴퓨터의 상태 파악을 알아서 해야 함. 처음 실행됐을 때 지금이 첫 실행인지, 동일 버전, 구 버전, 또는 동일 버전의 바리에이션이 이미 설치돼 있는지, 이전에 설치를 하다가 만 상태인지, 심지어 자신이 중복 실행됐는지 같은 걸 사용자가 수동으로 파일이나 레지스트리 삽질 안 해도 알아서 감지해야 함
  • 설치할 파일과 삭제할 파일을 NSIS는 수동으로 일일이 써야 하는 것 같던데, 마치 C++ 개체 선언하듯이(생성자, 소멸자) 설치하는 파일, 추가하는 레지스트리 같은 걸 한 곳에다만 명시하면 역순의 제거 작업 역시 자동으로 파악돼야 하며, 작업을 실제로 수행하기 전에 예상 디스크 공간 계산 같은 것도 알아서 돼야 함.
  • 서로 다른 소프트웨어 제품이 동일한 파일을 설치하고 사용하는 경우, 그런 공용 파일은 reference counting을 해서 그 제품들이 모두 제거되었을 때에만 최종적으로 삭제되게 해야 함.
  • 그리고 uninstall 시엔 사용자가 생성한 데이터처럼 이 프로그램이 초기에 설치하지 않은 파일이나 레지스트리도 필요하다면 싹 제거하는 메커니즘이 제공돼야 함. (조건 범위 지정)
  • 최종 생성된 msi 내지 exe 파일에 대한 디지털 서명 후처리도 언어 내지 툴 차원에서 명시해서 자동 처리하기.

오픈소스 프로젝트에 기여한 것도 없는 주제에 불평만 길게 늘어놓은 것 같다만.. 이게 NSIS를 좀 써 보고 개인적으로 느꼈던 아쉬운 점이다. 오죽했으면 반디소프트에서 개발하고 있는 유명 파일 압축 유틸리티인 반디집도 6.0부터는 NSIS 대신 자체 개발한 인스톨러로 갈아탔다. 다만, NSIS는 저 정도 꽤 적지 않은 기능을 제공하고도 exe에 붙는 자기 런타임 stub 크기가 겨우 몇만 바이트에 불과할 정도로 작은 건 굉장히 인상적이었다.

그냥 간단한 파일 몇 개만 복사하고 끝나는 게 아니라 컴퓨터를 좀 깊게 제어하는 설치/제거 패키지를 만든다면 이걸 만드는 툴도 GUI 위주의 가벼운 툴이 아니라 그냥 핵심 기능만 SDK 형태로 만들고, 자주 쓰는 프로그램 패턴은 Visual C++의 프로젝트 마법사 형태로 구축하는 것도 나쁘지 않을 것 같다. 배포 패키지 자체를 그냥 C/C++로 만들라고 말이다. 그러면서 파일 압축 풀어서 복사하거나 지우는 등의 정말 핵심적인 공통 기능만 라이브러리를 쓰라고..

근데 생각해 보니 애시당초 그러라고 만들어진 라이브러리가 Windows Installer이긴 하다. 쟤도 사실은 단순 GUI 껍데기가 아니라 라이브러리가 본질이니까. 하지만 저 라이브러리도 구조가 워낙 복잡하고 설치, 제거, 롤백이 어떻고 알아야 할 사전 배경지식이 많다 보니 그 저수준 함수를 직통으로 쓰면서 배포 패키지를 만들 일이라곤 없을 듯하다.

Posted by 사무엘

2017/05/01 08:30 2017/05/01 08:30
, ,
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1355

1. 레거시 부동소수점 MBF

컴퓨터에서 쓰이는 2진법 기반의 부동소수점이라는 개념이야 컴공· 전산에서 기본 중의 기본에 속하는 내용이며 본인 역시 이에 대해서 거의 7년 전에 글을 한번 쓴 적이 있다.
본인은 GWBASIC으로 프로그래밍에 처음 발을 내디딘 세대이다. 그런데 베이직이 PC와는 따로 노는 고유한 부동소수점 체계를 갖춘 언어였다는 사실을 30대 나이가 될 때까지 전혀 모르고 있었다.

쉽게 말해 같은 컴퓨터에서 실행한 다음 프로그램의 실행 결과가 GWBASIC과 QuickBasic이 서로 동일하지 않다는 것이다. 참고로 MKS$, MKI$는 해당 숫자들의 binary representation을 문자열 형태로 되돌리는 저수준 함수이다. C++라면 reinterpret_cast<char *>(&num) 한 방이면 끝났을 일이다.

10 INPUT A!
20 IF ABS(A!)<.01 THEN END
30 C$ = MKS$(A!)
40 FOR I = 1 TO 4: PRINT ASC(MID$(C$, I, 1)): NEXT
50 GOTO 10

사용자 삽입 이미지

하긴, 옛날에 베이직은 DEFINT A-Z 같은 걸 하지 않으면 변수의 기본 자료형이 정수가 아니라 실수였다. 언어를 설계할 때 성능보다 인간적인 면모를 더 추구해서 그렇다. (5/3을 구하면 매정하게 1이 아니라 알아서 1.6666..이 나오게..) 그러니 구조적으로 실수를 지원하는 건 필수였다.

때는 무려 1975년, 빌 게이츠가 폴 앨런과 함께 알테어 베이직을 개발하던 시절에 동료들과 함께 뚝딱 해서 2진법 기반의 부동소수점 표기 방식을 만든 게 Microsoft Binary Format, 일명 MBF라는 스펙이 됐다. 32비트와 64비트 두 형태로 말이다.
이 부동소수점은 알테어뿐만 아니라 BASICA, GWBASIC 등 온갖 플랫폼에서 돌아가는 베이직 인터프리터에 두루 쓰이기 시작했다. 지금도 인터넷에 굴러다니는 GWBASIC은 IEEE754가 아닌 MBF 고유 방식으로 부동소수점을 처리한다.

그랬는데 훗날 1984년경에 IEEE754라고 공신력이 더 높은 표준이 등장하면서 판도가 급격히 그쪽으로 기울었다. 게다가 PC에서는 인텔 80x87이라고 오늘날로 치면 하드웨어 가속에 해당하는 수치 연산 보조 프로세서(코프로세서)도 응당 IEEE754를 기반으로 만들어졌다.

마소는 일찍부터 자체적인 부동소수점 포맷을 먼저 제정해서 이를 퍼뜨려 왔지만 이런 시국에서는 자기도 대세를 거스를 수 없게 되었다. GWBASIC의 후신인 QuickBasic도 80년대 중반에 나왔던 1, 2까지는 MBF를 사용했지만 3.0부터는 IEEE 방식으로 갈아탔다. 그 대신 기존 MBF 방식은 별도의 옵션을 줬을 때에만 지원하게 동작이 바뀌었다. (/MBF) MBF 형태로 저장된 부동소수점을 읽어들이는 레거시 프로그램들과의 호환성도 중요하니까 말이다.

그럼 IEEE와 MBF는 어떤 차이가 있었는가? 몇 가지가 있다.
똑같은 32비트 또는 64비트 공간에다 지수와 유효숫자와 부호 비트를 어느 순서대로 어떻게 분배할지 문제는 한 마디로 그냥 정하기 나름이고 대동소이하다. 마치 철도 궤간을 정하는 문제와 비슷하다.

수 전체의 부호 1비트는 IEEE나 MBF든 공통일 수밖에 없고, 32비트의 경우는 지수 8비트, 유효숫자(mantissa) 23비트라는 비율 역시 동일했다. 다만,

(1) IEEE는 2의 보수 기반인 정수의 관행을 존중해서 부호 비트가 수 전체의 최상위 비트에 있는 반면, MBF는 지수와 유효숫자 사이에 존재했다. 다시 말해 mantissa의 최상위 비트에 있는 셈이다. 이렇게 배치를 함으로써 MBF는 IEEE와는 달리 지수와 유효숫자가 딱 8비트와 24비트로 byte padding이 맞춰지게 했다.

(2) 64비트 실수의 경우 이 비율도 달라진다. IEEE는 지수의 공간도 딱 3비트 더 늘어서 11비트이지만, MBF는 여전히 8비트이다. 그래서 32비트 single 실수를 쓰다가 64비트 double 실수를 쓰면 정밀도는 왕창 심지어 IEEE보다도 더 올라가지만 수의 표현 가능 자리수가 늘어나지는 않는다. 그 대신 바이트 경계는 여전히 1:7 비율로 지켜진다.

(3) 다음으로, MBF는 IEEE처럼 denormal number나 NaN, 무한대/무한소 같은 개념도 없다. denormal이야 숫자 표현과 관련된 내부 디테일이니 그렇다 치더라도 베이직 언어로 수학 함수를 사용하면서 NaN이나 무한대/무한소 같은 걸 접한 경험은 없다. 그런 숫자가 생성될 상황이라면 그냥 "Illegal function call" 에러가 나고 말지.
어쩐지 이런 것들은 본인이 훗날 C/C++로 갈아타면서 처음으로 접했다. 이게 엄밀히 말하면 언어 차이가 아니라 이런 부동소수점 표현 방식 때문에 생긴 차이점이다.

세계적으로 문자들은 언어와 문화권마다 제각각이지만 아라비아 숫자만은 세계 공통이다. 컴퓨터 세계도 사정이 얼추 비슷했는데 그나마 유니코드라는 규격 덕분에 동일한 문자는 세계 어디서나 동일한 방식으로 통용 가능해졌다. 그에 반해 숫자가 부동소수점 한정으로 표현 방식이 파편화돼 있었다는 건 개인적으로 무척 흥미롭게 와 닿는다.

C, 파스칼 같은 언어 이름은 함수 호출 규약 명칭에 등장하는데 베이직은 MBF라는 레거시를 보유하고 있구나. IEEE754의 등장 이전에는 MBF 말고 다른 부동소수점 표현 방식은 존재하지 않았나 하는 의문이 남으며, 파스칼에만 있던 6바이트 실수가 규격이 어떠했는지도 다시 보게 된다. 스펙을 검색해 보니 파스칼도 지수부는 8비트이고 나머지가 부호부(1비트)와 가수부(39비트)이다.

2. MOTOR의 정체는?

이 블로그에서 GWBASIC에 대한 추억들 중에서 지금까지 이걸 거론한 적은 없었던 것 같다.
GWBASIC의 대화식 환경에는 코딩 중에 자주 사용하는 키워드들을 곧바로 입력하는 일종의 키매크로가 있었다. F1부터 F10까지 기능키에 배당된 매크로는 LIST, RUN, LOAD...의 순으로 화면 밑줄에 표시되었으며 KEY라는 키워드(?)를 이용해 사용자가 재정의도 할 수 있었다. 후대의 QuickBasic 계열에서는 없어지기도 할 법도 한 키워드인데 KEY에 그 기능만 있는 건 아니기 때문에 없어지지 않고 남아 있긴 하다.

그리고 매크로가 거기에만 있는 게 아니라 Alt+알파벳에도 있었다. A부터 Z 중 J, Q, Y, Z를 제외한 나머지 22개 알파벳에는 AUTO, BSAVE, COLOR ... WIDTH, XOR까지.. 키워드가 즉시 입력되었다. 이 키워드들은 딱히 재정의 가능하지 않았다. RUN과 SCREEN은 Alt에도 있고 F 기능키에도 있었다. (후자는 엔터까지 자동으로 입력된다는 차이가 있음)

그런데 본인이 주목한 것은 M 자리에 배당되어 있던 MOTOR라는 단어였다. 이거 도대체 뭘까? 경험상 숫자 인자를 하나 받는 것 같던데 도대체 하는 일이 뭘까? 두툼한 GWBASIC 매뉴얼/키워드 레퍼런스를 뒤져봐도 의외로 딱히 제대로 설명돼 있지 않았다. 그러니 궁금증은 더욱 커질 수밖에 없었다.

이 역시 전세계에 존재하거나 존재했던 모든 것들에 대한 정보가 손끝 하나로 검색되는 세상이 온 뒤에야 그게 그런 용도였다는 것을 뒤늦게 알 수 있었다.
MOTOR는 카세트 테이프 장치의 헤더를 올리거나 내리는 명령문이었다. 0부터 255 사이의 숫자를 인자로 받긴 하는데 실질적인 의미는 그냥 zero냐 non-zero냐, 쉽게 말해 그냥 bool이었다. 카세트 테이프가 퇴출된 16비트 이상의 IBM-PC급용 베이직에서는 이 명령은 구현되지 않고 아무 동작도 안 하는 레거시 잉여가 되었다.

옛날에 카세트 테이프에다 소스 코드 저장을 SAVE"FILE" 한 뒤 '녹음' 버튼을 눌러서 쭈루룩 하고, 불러오려면 저장되었던 위치로 정확하게 되감기를 하고 LOAD"FILE"한 뒤, '재생' 버튼을 눌러서 했다던데.. MOTOR는 그런 호랑이 담배 피우던 시절에나 유의미한 기능을 했다는 뜻 되겠다.

그런데 왜 이런 잉여가 한때에는 그 시절에는 자주 쓰이기라도 했는지 Alt+M 매크로에 떡 등재돼 있었다. 현실에서는 모터 따위보다는 MOD 연산자 또는 부분문자열을 구하는 MID$ 함수가 훨씬 더 자주 쓰일 텐데 말이다. 그러고 보니 실제로 Alt+M에 MOTOR 대신 쿨하게 MID$가 배당돼 있던 GWBASIC 구현체가 있기도 했던 것 같다. 베이직은 바리에이션 구현체가 워낙 많으니.. 아니면 그건 그냥 내 기억력의 한계로 인한 착각이었는지는 모르겠다.

※ 기타

(1)
이 외에도 GWBASIC은 그러고 보니 소스 코드의 저장도 고유 방식으로 했고 심지어 후대의 QuickBasic에도 비슷한 관행이 있었다(디폴트 옵션). 베이직 언어들은 그 옛날에도 일종의 가상 기계나 독자적인 개발 환경까지 다 짬뽕으로 추구했던 것 같다.
비주얼 베이직의 중후반대(4정도?) 넘어가서 COM 기반의 BSTR 방식으로 갈아타기 전에는 베이직은 문자열도 자기만의 독자적인 이중 포인터 참조 방식으로 구현돼 있었다. 일단 null-terminate 방식이 아니기 때문에 C와는 다름. 이것도 아마 MBF만큼이나 역사가 왕창 오래 된 독자적인 관행이 아닐까 싶다. (문자열에 대해서도 옛날에 한번 글을 쓴 적이 있다.)

(2)
난 C/C++ 파스칼 같은 타 언어로는 도스에서 텍스트 모드에서 색깔을 바꾸고 표준 VGA 그래픽, 특히 mode 13h를 바꾸는 코드를 작성해 본 적이 없다. 베이직에서는 COLOR 내지 SCREEN으로 곧장 됐을 일이 타 언어에서는 표준 라이브러리에서 지원해 주지 않았기 때문이다.
GWBASIC에서 Q(uick)Basic 계열로 바뀌면서 정말 좋은 것 중 하나가 본격적인 VGA 그래픽이 지원된다는 것이었는데, 16진수를 10진수로 바꿔 버릴 생각을 어째 했나 모르겠다. 실제로는 0x13인데 그걸 그냥 13만 써도 되게..;; 그것까지 초보자를 배려한 것이었나 궁금해진다. 그 초보자가 숙련자로 등급이 바뀌는 순간부터 문화 충격을 경험할지도 모르는데..

(3)
베이직이라는 언어 자체는 다트머스 대학의 컴공 교수가 고안한 것이지만, 저런 구현체는 빌 게이츠 같은 괴짜가 아니면 생각해 낼 사람이 별로 없을 물건이다.마소에서는 처음에는 다양한 8/16비트 컴퓨터를 대상으로 베이직 인터프리터를 개발했지만, 사실 IBM PC용으로는 베이직 컴파일러도 DOS 1980년대부터 만들어 오고 있었다.
그래서 Quick이라는 브랜드를 붙여서 QuickBasic 1.0을 1985년에 내놓았다. 이때 퀵베이직은 지원하는 문법은 GWBASIC과 별 차이가 없지만 대화식 환경이 아닌 명령줄에서 컴파일 + EXE 생성만 가능한 베이직일 뿐이었다.

그러다가 1년 주기로 버전 2와 3을 내놓으면서 기존의 구닥다리 행번호 위주가 아닌 구조화 문법이 차근차근 도입되었다. 베이직이라는 언어가 이때(1980년대 중반) 1차로 마개조된 셈이다. 그리고 4.0에 와서야 비로소 함수의 재귀호출이 가능해지고, 즉석 문법 체크와 실행이 지원되는 IDE가 추가되었다. 사실, IDE 자체는 2에서부터 도입됐고 그때 이미 퀵라이브러리도 도입됐다고 하지만, 그때는 지금과 같은 IDE가 아니었다.

그 뒤 1988년 가을에 출시된 QB 4.5가 장수만세 안정판이 되었다. 퀵베이직은 1990년에 어쩐 일인지 버전 5와 6을 건너뛰고 QuickBasic Extended 내지 MS Basic PDS (전문 개발 시스템)이라는 이름으로 7과 7.1 버전까지 개발된 뒤, Visual이라는 브랜드로 바뀌었으며 이때부터 플랫폼도 Window로 바뀌었다. 5, 6을 건너뛴 이유는 퀵베보다 먼저 개발되어 온 그 전신 컴파일러의 버전 번호를 맞췄기 때문이다. (참고로 Visual C++도 IDE의 버전보다 컴파일러의 버전이 더 높음. 전신인 MS C 의 버전을 계승하기 때문이다.)

이 와중에 1991년에 출시된 MS-DOS 5.0에서는 QuickBasic에서 컴파일 기능을 떼어낸 QBasic이라는 물건을 만들고, 이 엔진으로 MS-DOS 4.0까지 내장하고 있던 GWBASIC과, EDLIN 텍스트 에디터를 동시에 대체했다. 무척 흥미로운 점이다. MS-DOS가 전체 화면 형태로 제공하던 유틸리티는 4.0에서 도입됐던 DOS Shell 이후로 이게 둘째가 아닌가 싶다.

Posted by 사무엘

2017/04/28 08:38 2017/04/28 08:38
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1354

1. 석유

휘발유(가솔린)와 디젤은 내연기관 기반 자동차의 양대 동력원이다. 양 엔진의 차이점이야 자동차에 대해 조금만 관심이 있다면 모르는 사람이 없을 기초 상식 축에 든다. 하지만 기계공학적으로 고찰했을 때 같은 2또는 4행정 엔진이면서 두 엔진이 본질적으로 왜 그런 차이가 발생하는지, 왜 양 엔진이 요구하는 연료에 차이가 있는지 같은 것까지 제대로 아는 사람은 해당 분야 전공자 공돌이가 아니면 흔치 않다. 물론 본인도 그만치 잘 안다는 뜻은 아니다.

휘발유, 등유, 경유 같은 연료는 석유를 분별 증류 기법으로 추출하어 얻어진다. 소를 한 마리 잡고 나면 앞다리 뒷다리 등심 안심 같은 다양한 부위별로 고기가 나오고 내장과 뼈도 나오듯, 석유도 그 자체는 다양한 탄화수소 화합물의 복잡한 혼합물이다. 그래서 끓는점이 겨우 몇십 도에서 대략 300도에 이르기까지 다양한 물질이 섞여있다. 밀도는 기름답게 물보다 약간(수~10% 남짓) 가벼운 정도.

원유는 보통 시커먼 색깔인 반면, 정제된 차량용 연료는 시커멓지 않고 오히려 투명에 가깝다는 게 인상적이다. 갓 캐낸 원유에서 자동차에 엔진에다 주입해도 탈이 안 날 정도의 깨끗한 연료를 추출하는 것은 바닷물· 강물로부터 식수를 얻는 것 이상의 첨단 기술이다. 그래서 산유국이라 해도 정제 기술이 마땅찮으면 외국에서 석유를 역수입해야 하며, 반대로 땅에서 석유가 안 나는 우리나라 같은 나라도 역설적으로 석유를 수출하기도 한다.

휘발유 엔진은 말 그대로 석유에서 가볍고 휘발성이 매우 높은 물질을 연료로 사용하며, 디젤 엔진은 휘발유보다는 밀도가 더 높고 불이 덜 잘 붙으며 끓는점도 더 높은 경유· 중유를 사용한다. 순수하게 제조 원가만 따진다면 둘은 가격 차이가 거의 없거나 굳이 따지자면 오히려 휘발유가 더 저렴해야 할 것이다. 그러나 세금 보정으로 인해, 주유소에서는 승용차 연료로만 쓰이는 휘발유가 범용성이 더 뛰어난 경유보다 더 비싸다.

요즘은 경유 가격이 휘발유 가격의 85% 정도로 책정돼 있다. 그러나 몇십 년 전에는 더 저렴해서 거의 6, 70%에 불과하기도 했다. 디젤도 승용차 연료로 많이 보급되었고, 또 환경 문제도 있고 해서 그나마 옛날에 비해 더 비싸진 것일 뿐이다. 그나저나 디젤 엔진이 왜 범용성이 더 뛰어난지에 대해서는 나중에 또 얘기하도록 하겠다.

2. 휘발유 엔진과 디젤 엔진의 차이

휘발유와 디젤(앞으로 '엔진'이라는 단어의 표기를 종종 생략할 것임)은 서로 다른 연료를 사용하며 연료를 연소하는 방식이 다르다. 전자는 점화 플러그를 사용하지만 후자는 압축 착화 방식을 사용한다. 휘발유 엔진은 시동을 최초로 걸 때뿐만 아니라 시동을 유지하는 데에도 전기 에너지의 도움을 소량이나마 지속적으로 받는 셈이다.

이런 이유로 인해 휘발유 차량은 점화 플러그도 차량의 성능에 큰 영향을 주는 부품이다. 얘는 폐차할 때까지 반영구적으로 사용 가능한 부품이 아니며 성능이 조금씩 열화되는 소모품이다. 그렇기 때문에 비록 엔진오일보다는 긴 주기이지만 그럭저럭 교체해 줘야 한다. 허나 이건 차덕 급이 아니면 인지하기 쉽지 않은 사실이다.

뭐, 디젤도 전기 '불꽃'을 사용하지 않는다는 뜻일 뿐, 시동 걸 때 전기로 스타터 모터를 돌리지 않는다는 얘기는 물론 아니다. 얘는 오히려 스파크보다도 더 힘든 메커니즘을 사용한다. 요즘 차량들은 기술의 발달로 인해 많이 나아졌다지만, 디젤은 저런 특성상 휘발유 차량보다는 시동이 잘 안 걸릴 확률이 더 높다. 특히 날씨가 추울 때 말이다. 어렸을 때 차에 시동이 잘 안 걸려서 운전자와 탑승자가 고생하던 모습은 아무래도 승용차보다는 트럭에서 훨씬 더 많이 구경했던 것 같다.

휘발유와 디젤 엔진이 성능이 서로 큰 차이가 난다는 건 주지의 사실이다.
같은 배기량일 때 디젤 엔진의 토크가 훨씬 더 강하며(1.x~2배 가까이) 더 저회전 상태에서도 그 최대 토크가 금세 발휘된다.
디젤은 안 그래도 더 에너지 밀도가 높은 연료를 사용하는 데다 열효율이 더 좋은 관계로, 힘만 좋은 게 아니라 연비도 더 좋다. 그런데 연료의 단가마저도 비록 정치적인 이유가 더 크긴 하지만 디젤이 더 싸다. 그러니 이런 경제성만 생각하면 세상의 모든 자동차가 디젤 엔진으로만 만들어져야만 할 것 같다.

하지만 디젤 역시 장점만 있는 건 아니다. 비록 공밀레 기술 개발로 인해 정말 많이 극복되었다고는 하지만, 휘발유에 비해 고질적인 단점으로는 소음과 진동, 그리고 공해(오염) 문제가 있다.
디젤 엔진은 동급 배기량의 휘발유 엔진보다 더 강한 힘을 내부적으로 견뎌야 한다는 특성상, 더 비싼 부품을 써서 더 크고 무겁고 튼튼하게 만들어야 하며, 엔진오일도 더 비싼 디젤용을 써야 한다. 초기의 차값부터 시작해 기름값 외의 유지비까지 전반적으로 좀 더 깨진다는 점을 감수해야 한다.

또한 성능면에서도, 디젤이 저속 토크가 강하다는 점은 명백한 사실이나 속도까지 곱해진 전반적인 출력은 정작 동 배기량의 휘발유 엔진보다 오랫동안 뒤쳐져 있었다. 회전수를 휘발유 엔진만치 높게 올리는 게 어려웠기 때문이다. 이런 한계는 터보차저(공기 과급기) 같은 다른 메커니즘의 도움을 받아서 극복되고 있으며 요즘은 디젤도 실린더의 스트로크를 낮춰서 과거의 디젤답지 않은 고rpm을 추구하는 게 추세이긴 하다.

디젤의 성능을 평가절하하는 또 다른 요인은 반응성이다. 디젤 엔진은 토크가 좋음에도 불구하고 그 성능과 별개로 반응성이 떨어지고 '둔하다'. 단순히 엔진이 좀 무거워서 둔한 차원이 아니다. 그래서 정작 제로백이 휘발유 차량보다 불리하다. 경주용 자동차나 스포츠카가 디젤로 만들어지지 않는 이유가 이 때문이다.

이것도 기술의 발달로 인해 예전에 비해서는 많이 극복되었겠지만, 디젤 엔진의 좋은 힘은 근본적으로 간지나는 스포츠카의 급발진보다는 트럭에다 짐 잔뜩 싣고 오르막 오르는 용도에 더 유리한 게 사실이다.
반응성 말고도 엔진 브레이크 효과 역시 토크가 상대적으로 약하고 상시 rpm이 높은 휘발유 엔진이 더 강하며, 하이브리드와의 접목도 덩치가 더 작고 연비도 더 낮은 휘발유가 더 유리하다. 겨울에 히터를 켰을 때 더 빨리 더운 바람이 나오는 쪽도 휘발유 엔진이다.

단, 터보차저와의 접목은 디젤이 약간 더 유리하다. 휘발유 승용차에서 터보는 아직까지 액세서리 고급 옵션에 가까운 반면, 요즘 디젤 차에서 터보는 성능 보완을 위한 사실상 필수품 취급을 받고 있다.

3. 환경 문제

오늘날 디젤 엔진이 극복해야 할 가장 큰 태클은 환경 문제라 해도 과언이 아닐 것이다. 디젤은 근본적으로 휘발유보다 더 '더티'한 연료를 사용하며 매연을 내뿜는다. 정지 상태에서 가속할 때, 다시 말해 저회전 상태에서 엔진이 부하가 많이 걸릴 때 뿌뿌뿡~ 매연이 특별히 더 심하다.
지금처럼 천연가스 버스가 도입되기 전, 옛날에 길거리의 시내버스들의 뒤쪽 엔진 부분을 보면 온통 시커맸다. 이게 평범한 흙먼지가 아니라 다 불완전 연소의 산물인 탄소 알갱이였다. -_-;; 트럭의 경우도 과적은 도로 파손이나 차량 안전뿐만 아니라 매연 발생의 관점에서도 매우 좋지 않다.

그에 반해, 휘발유는 저런 매연이 없으며 촉매 변환만 잘 돌려 주면 배기가스 문제는 거의 없다.
휘발유는 잘 알다시피 노킹 방지 첨가제에 들어간 납 성분이 문제 되었지만 이것도 무연 휘발유로 극복되었다. 그런데 경유는 어째 납 대신 유황 성분이 문제를 일으켰다. 황의 연소로 인해 이산화황(아황산가스)이라는 해로운 공해 물질을 배출되었기 때문이다. 화석 연료가 연소해서 사람 몸에 좋은 게 나오는 일은 없는 법이다.

그러니 오늘날까지도 디젤 차량은 세계 각국에서 굉장히 강한 환경 규제가 걸려 있으며 이는 선진국으로 갈수록 더욱 엄격하다. 선진국은 시민들이 눈이 높고 환경 생각할 만치 돈과 기술도 있으며, 수십 년 전에 이미 대규모 스모그나 공해병 같은 병크와 시행착오도 먼저 경험했으니 환경에 대한 경각심이 있다.

국내의 경우 디젤 차는 구입할 때부터 차값에 환경 개선 부담금이 포함되며, 정기적으로 무슨 검사를 받고 매연 저감 장치를 장착하고 어쩌구 절차를 거쳐야 한다. 디젤 엔진 자체를 매연이 안 나오게 만들 수는 없는지, 그 대신 후처리 보정 장치가 추가되어야 하고 이것은 엔진의 덩치와 차량의 단가를 올리는 요인이 되고 있다. 엔진룸의 부피가 승용차 급으로 비슷하다면 디젤 엔진은 공간 부족으로 인해 동급 덩치의 휘발유 엔진만치 큰 배기량이 들어가지는 못한다.

또한 시민의 안전을 위해 지하철역에 몽땅 스크린도어를 설치한 것처럼 디젤 기반인 수많은 시내버스들을 죄다 천연가스 기반으로 개조· 교체하는 게 세계적인 추세이다. 실제로 이것만으로도 공기 질을 이 정도나마 개선하는 데 매우 큰 도움이 되었다.
그와 반대로 선진국에서 다 쓰고 퇴역시킨 차량을 저가에 수입해서 굴리는 개발도상국의 도시들이 공기 사정이 열악하다. 당장 떠오르는 게, 시커먼 구닥다리 경유 버스와 2행정 오토바이들로 가득하던 베트남이구나.

4. 실린더 크기의 한계

오늘날 휘발유 엔진은 그냥 소형 발전기· 예초기· 동력톱이나 오토바이· 승용차 엔진으로 머무르고 있다. 그 반면, 디젤 엔진은 버스· 트럭, 철도 기관차· 선박 등 본격적으로 거대한 기계들을 돌리는 만능 엔진으로 등극해 있다.
왜 이런 특성과 차이가 존재하는 걸까? (한편으로 천연가스는 구조적으로 디젤보다는 휘발유 엔진과 더 비슷하지만 택시와 버스에 모두 쓰인다)

가장 근본적인 이유로는 휘발유 엔진이 대형화가 어렵기 때문이다. 한 실린더가 가질 수 있는 부피는 거의 500~600cc가 실용적인 가성비가 유지되는 한계라고 한다.
그러나 디젤 엔진은 그런 제약이 없어서 무슨 선박 엔진 같은 집채만 한 초거대 단일 실린더도 만들 수 있다. 단순히 연비나 토크가 좋아서가 아니라 이것 때문에 디젤 엔진이 선택의 여지 없이 쓰인다.

정말 그런가 확인해 보자. 대형 버스에 준하거나 그 이상의 고배기량인 엔진을 휘발유 기반으로 얹은 슈퍼카들을 보면..
6700cc 12기통 (롤스로이스 팬텀..;; )
8000cc 16기통 (부가티 베이론)
배기량을 기통수로 나누면 진짜로 500~600cc대를 벗어나지 않는다. 실린더 수가 무지막지하다.
그러나 디젤로 가면 현대 자동차 F 엔진은 3900cc 배기량이 4기통이요,
버스 엔진을 보면 6000cc부터 심지어 11리터급이 그냥 6기통만으로 커버된다. 이런 게 휘발유 엔진으로는 가능하지 않다는 뜻이다.

물론 내연기관은 흡입, 압축, 폭발, 배기 각 행정별로 발생하는 힘이 일정하지 않다. 그렇기 때문에 상태가 서로 제각기 다른 실린더들이 어느 정도는 여럿 있어야 엔진의 진동이 줄어들고 승차감이 좋아진다. '툭툭툭툭'거리는 엔진음이 '두두두두/들들들들'로 바뀐다.
하지만 무려 12기통, 16기통 이건.. 어쩔 수 없어서 저렇게 만든 것이지, 만들고 싶어서 저렇게 만든 건 아니리라 여겨진다. 승차감이 문제라면 휘발유보다 진동이 더 심한 디젤이 겨우 6기통인 건 어떻게 설명할 건가?

기통수가 너무 많아지면 휘발유 엔진도 어차피 디젤처럼 복잡하고 무거워지며, 제어하기 힘들어진다. 하지만 휘발유 엔진의 정숙성과 신속한 반응성을 살리기 위해 무리해서 트럭· 버스였으면 디젤을 쓸 것을 휘발유 엔진을 고집한 것이지 싶다. 물론 디젤에 비해 연비는 길바닥에다 그냥 동전을 뿌리는 수준으로 감수하고 말이다.

뭐, 오토바이 중에 배기량이 거의 1700~2000cc에 달하는 대형 모델 중에는 겨우 2기통 엔진인 것도 있다. 그건 자동차에는 적용하기 곤란한 방식으로 보어· 스트로크 비율을 보정해서 실린더당 800cc가 넘는 체적을 구현한 것이 아닌가 싶다. 최초의 내연기관 자동차로 손꼽히는 Benz Patent-Motorwagen 삼륜차도 원시적인 950cc짜리 휘발유 단기통이었으니 말이다. (물론, 성능은 1마력이 채 될까말까인 비효율의 극치 수준임. 자동차계의 에니악;;)
그리고 에쿠스/EQ900의 기함급인 VL500도 8기통이니 실린더가 휘발유 엔진치고는 약간 크다고 볼 수 있다.

이런 점을 감안하면, 비록 디젤이 소음· 진동과 공해 문제가 있고 더 무겁고 복잡하지만 그래도 엔진으로서의 기술 수준은 단순 휘발유 엔진보다 더 높으며 범용성도 더 뛰어나는 것을 알 수 있다. 그리고 이런 범용성 때문에 경유가 더 저렴하기까지 한 것이다.
휘발유 엔진은 딱히 고안자의 이름을 따서 '오토 엔진'이라고 불리지는 않는 편인데, 디젤만 고안자의 이름이 매번 언급되는 건 이 때문인지도 모르겠다. 심지어 경유· 중유까지 diesel fuel이라고 불리지 않는가.

사실 휘발유에다가도 압축 착화로 점화해서 디젤 엔진의 장점을 적용해서 연구가 있긴 하다. 일명 HCCI 또는 GDCI 엔진. 그러면 휘발유로도 디젤 엔진 같은 고연비의 달성이 가능해지며, 결정적으로 단일 엔진에서 휘발유와 경유를 모두 사용할 수 있게 된다고 한다. 하지만 점화 플러그 없는 휘발유 엔진은 아직까지는 어댑터 없는 노트북, 탄피 없는 총알, 혹은 돼지고기 육회만큼이나 쉽지 않은 영역인 것 같다.

지금 내가 모는 차뿐만 아니라 디젤 차, 후륜구동, 하이브리드, 전기차 등 다양한 차들을 몰면서 차이를 분석해 보고 싶다. 특히 전륜과 후륜의 차이라는 언더스티어/오버스티어의 차이가 무엇인지 궁금하다.
사실, 자동차 학원에서 운전 연습을 할 때 1종 보통의 특성상 디젤+후륜에다 수동 변속기이기까지 하여 승용차하고는 성격이 완전히 다른 1톤 트럭을 실컷 몰아 본 적이 있음에도 불구하고 그때의 경험은 기억에 거의 남아 있지 않다.
그리고 연료 분사와 흡기 메커니즘에 대해서 개인적으로 차근차근 더 공부해 보고 싶다. 아직은 공개적인 글을 쓸 수 있을 정도로 이론을 숙지하지 못한 상태이다.

글을 맺으면서 드는 생각인데, 자동차가 내연기관이 주류가 된 것처럼 총기도 일단은 탄피가 빠지는 화약 격발 방식이 주류가 돼 있다. 공기총은 자동차에다 비유하면 전기 자동차 정도 되는 것 같다.

Posted by 사무엘

2017/04/25 08:36 2017/04/25 08:36
, , , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1353

강화도 여행

지난 설날 때 본인은 가족과 함께 당일치기로 강화도로 여행을 다녀왔다.
강화도는 민족 영산(?)이라는 마니산이 있고, 고려 시대에 나라가 몽골의 침략을 받았을 때 임시 수도였으며 1876년 강화도 조약의 장소이기도 해서 고대부터 근현대에 이르기까지 역사적인 의미가 크다.

그러고 보니 팔만대장경도 지금이야 경남 합천군의 해인사에 있지만, 만들어진 곳은 강화도이다. 고려는 그야말로 "불심으로 대동단결"을 실천한 국가였음을 알 수 있다. 방대한 무게와 부피를 자랑하는 수많은 경전들을 그 시절의 교통 인프라 여건에서 섬-내륙으로 바다까지 건너면서 수송하는 것조차도 굉장히 큰일이었을 텐데 말이다.
과거에 신라에 유일하게 여왕이 있었고 여러 가문이 차례로 번갈아가며 왕위를 잇는 관행이 있었다면, 고려에는 저런 종교 배경의 특성상 말기에 신 돈 같은 비선실세(?) 승려도 존재할 수 있었다.

그에 반해 고려의 뒤를 이은 조선의 이념은 '숭유억불'이었다. 조선의 개국공신들이 보기엔 고려가 망한 것에는 타락하고 막장으로 치달은 정교일치 불교계의 책임이 커 보였던 것 같다.
뭐, 지금에 와서는 조선도 이미지가 바닥을 기며, 유교 역시 진작부터 꼰대(질)의 상징에  '유교탈레반', '공자가 죽어야 나라가 산다' 같은 말이 나돌 정도로 평가가 최악이다. 뭐든지 고인 물은 썩게 마련이고 역사는 되풀이된다는 걸 느낀다.

아무튼, 이런 점을 염두에 두고 차를 몰고 서쪽으로 향했다.
서울 근교에서 자연을 벗하며 놀 만한 곳으로는 동쪽으로 남한강이 있는 양평, 혹은 북한강이 있는 가평· 춘천 방면도 생각할 수 있을 텐데 거기보다 더 색다른 곳을 찾다 보니 강화도로 의견이 쉽게 한데 모였다.

강화도는 면적이 300㎢가 넘고 생각보다 크더라. 시내와 대부분의 볼거리는 북부에 있는 반면, 마니산만 혼자 최남단에 있는 듯했다. 북부에는 강화대교, 남부에는 초지대교가 있어서 육지와 통한다. 서울에서 강화도 남부를 가는 건 인천 공항 가는 것과 비슷한 거리이고, 북부는 그것보다 거리가 살짝 더 길어지는 듯하다.
강화도로 가는 길은 올림픽대로 + 국도 48호선(북부) 또는 지방도 356호선(남부) 끝이다. 아주 직관적이다.

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

강화산성. 강화도에 들어서자마자 가장 먼저 부담없이 볼 수 있는 유적이지 싶다. 안내문 표지판 말고 다른 시설은 없이 그냥 도심 속의 공원처럼 꾸며져 있었다. 주차 걱정 없는 시골이니 그냥 골목길 담벼락 아무데나 차 세우고 내려서 구경했다.
그러고 보니 고려 행궁도 지도상으로 근처에 있는데 거기에는 못 가 봤다.

사용자 삽입 이미지

제주도에 돌하르방이 있다면 강화도에는 고인돌이 있다. 그나마 돌하르방은 훗날 유명세를 타서 레플리카가 만들어진 게 훨씬 더 많은 반면, 여기에 있는 고인돌은 옛날에 만들어진 레알이다.
접근하기도 편하게 딱 국도변에 넓은 들판과 함께 강화도 전체에서 가장 고퀄이라 여겨지는 고인돌이 놓여 있었다. 영국의 스톤헨지 생각이 문득 들었다. 고인돌들은 딱히 식별 수단이 없으니 그냥 발견 순서대로 번호를 붙여서 부르는가 보다.

여기 주변에는 마침 강화 역사 박물관과 강화 자연사 박물관이라는 두 박물관도 있었다. 하지만 설 당일이 휴관이어서 들어가 보지는 못했다.
그나저나 '고인돌'은 안 그래도 영어로도 dolmen이라고 하는데 故人인지 '고이다+전성어미ㄴ'인지 어원이 무엇인지 알 길이 없다.

사용자 삽입 이미지

부근리에 있는 고인돌을 하나 더 답사했다. 처음에 봤던 것보다는 크기가 약간 더 작다.

사용자 삽입 이미지

강화도의 풍경은 사방이 온통 논밭 벌판이고, 그러면서 높이가 300m쯤 돼 보이는 낮은 산들이 종종 둘러져 있는.. 그런 형태였다. 산들은 정상에도 뭔가 정자나 군사 시설 같은 게 빠짐없이 세워져 있는 편이었고, 그게 지상에서도 보였다.

사용자 삽입 이미지

그 뒤 우리는 강화도의 최북단에 있는 평화 전망대로 갔다. 여기는 민통선 안이기 때문에 중간에 검문을 받고 출입증을 받아야 했다. 그래도 연고지나 지인 초청이 없어도 되며, 사전 방문 신청 같은 것도 필요하지 않다. 모든 차량 동승자가 아니라 그냥 대표자 한 명의 이름과 연락처, 차 번호만 적으면 됐다. 내 경험상 국내 민통선 안의 출입 정책은 각 지역과 관할 부대마다 케바케였다.

우리나라 군사분계선은 대부분 높은 산지이며, 선 주변에는 DMZ라고 불리는 완충 지대가 있다. 그러나 군사분계선의 서쪽 끝은 그 특성이 내륙· 동부와는 극과 극 수준으로 다르다. 여기는 육지가 아니라 물이 그대로 군사분계선이고 양측 강변이 남방과 북방한계선 역할을 하기 때문이다.

그러니 여기는 DMZ 같은 건 따로 존재하지 않으며, 그 대신 동부와는 달리 강안경계라는 게 있다. 한강이 서울 시내 구간만 해도 강폭이 1km 남짓한 지하철 한 정거장 거리에 육박하고 강북과 강남을 가르는데.. 강화도가 있는 한강 최하류로 가면 강폭은 2km에 달하며, 강남과 강북이 무려 남조선과 북조선을 가른다..! 군사분계선이 육지에서 강으로 바뀌는 경계를 보고 싶으면 강화도에 도달하기 전에 파주의 오두산 전망대에 가 보면 된다.

6· 25 때 우리나라가 지형상의 불리함으로 인해 서부는 오히려 있던 땅도 빼앗겨서 38선 이남, 한강 이남으로 후퇴하게 됐다. 이 때문에 서울이 북한과 더욱 가까워졌으며, 군사분계선이 저런 식으로 한강을 따라 형성되었다. 다대포 해수욕장까지 있는 낙동강 하구와는 달리, 한강 하구는 민간인이 접근 불가능한 영역으로 봉인되어 버렸다. 여기를 뱃길로 활용할 수 없기 때문에 우리나라에서는 아라뱃길이라는 경인 운하를 나중에 또 만들어야 하게 됐다.

황해에는 강과 바다에 형성된 군사분계선 근처에 섬이 여럿 있다. 게다가 연평도나 백령도 같은 섬은 위도가 상당히 높고 북한의 본토와 더 가까움에도 불구하고 남한 땅이다. 이건 북괴가 전쟁 당시에는 섬들을 점령할 해군력이 없었기 때문에 종전 후에도 남한 땅이 될 수 있었다. 휴전 직전엔 오히려 국군과 UN군이 북한 지역 위도의 다른 섬들까지도 몽땅 점령해 있었지만 휴전과 함께 철수했다.

이런 여러 이유로 인해 강화도를 포함한 그 일대의 섬들은 비록 다리가 놓였다 하더라도, 일반적인 육군 전방 부대가 아니라 상륙 작전을 염두에 둔 해병대가 주둔한다. 민통선 검문도 응당 얘네들 몫이다. 그리고 군용차도 일반적인 전차(탱크)보다는 수륙 양용 장갑차 같은 게 더 친숙하다.
아니, 우리나라 해병대 전체가 그냥 서부 전선의 전방 도서 지역을 지키라고 존재한다고 말해도 과언이 아니다. 해병대는 훈련소와 자대, 본부도 후방인 포항이 아니면 전방인 황해 이렇게 딱 두 지역에만 있다.

옛날에 태평양 전쟁 시절처럼 섬을 땅따먹기 하면서 물과 육지에서 모두 작전을 수행하는 게 쉬울 리 없으니 해병대는 일반 육군 보병보다 전투력이 더 뛰어난 정예 병력으로 간주된다. 100% 지원자만 그것도 경쟁을 뚫고 들어갈 정도이며, 훈련 때 목봉 체조 같은 것도 육군이나 해군이 아닌 해병대만 한다. 다만, 그게 전투력과는 별 관계 없는 지나친 이빨과 마초이즘 기수놀이, 똥군기로 변질된 건 문제이긴 하다.

해병대 아니랄까봐 "빨간 배경에 노란 글씨"로 민통선 내 행동 주의 사항이 적힌 안내판이 인상적이었다. 하지만 전망대 내부의 통제는 해병대의 이미지와는 달리 그리 빡세지 않았다.

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

이것이 바로 강 건너 펼쳐져 있는 북한 땅이다. 황해도 개풍군. 내륙처럼 남북의 DMZ 산림 없이 강 너머로 곧장 북한의 마을과 논밭, 건물, 심지어 사람까지 곧장 보이기 때문에 전국의 어느 전망대보다도 어떤 의미에서 북한을 가까이서 볼 수 있다. 그것도 위도상 최남단의 북한 땅을 말이다. 이게 강화도에 소재한 전망대에서 얻을 수 있는 소득이었다. 그런데 저기는 북한의 입장에서 민통선 내부이지 않을까?

철원의 평화 전망대나 고성의 통일 전망대는 사람이라고는 하나도 안 보였고, 파주의 도라 전망대에서도 기껏해야 군인 극소수만을 봤던 걸로 기억한다. 그러나 여기서는 당장 빨간 점퍼를 입은 사람, 자전거 타는 사람, 주택 담벼락을 서성거리는 두세 명의 사람 등 역대 전망대들 중 북한 민간인(군인이 아닌)을 제일 다양하게 볼 수 있었다. 그럼에도 불구하고 칼같이 "북한 방면 사진 촬영 금지" 이런 통제도 없었다.

아, 물론 사람까지 보는 건 육안으로는 불가능하고 유료 망원경을 동원해서 봐야 한다. 이런 곳에서는 500원 투자할 가치가 있다.
저 멀리 세로로 선전 구호가 쓰인 걸로 추정되는 기둥도 있었는데 글자가 무엇인지는 아쉽지만 망원경으로도 제대로 식별할 수 없었다.

사용자 삽입 이미지

이 봉우리의 이름이 제적봉이랜다. '적'의 한자가 enemy(敵)가 아니라 red(赤)이다. 즉, "공산당 빨갱이들을 제압하다"라는 뜻이다.
이름의 유래 설명에 따르면, '제적봉'이라는 이름은 박 정희 대통령의 개입으로 정해졌다고 한다. 예전에 이 승만 대통령은 호수의 이름을 반공 컨셉을 넣어서 '파로호'(오랑캐들을 격파하다)라고 지은 적이 있는데, 이것과 무척 비슷한 심상을 형성한다. 조선 시대 얘기지만 '척화비'도 동일한 맥락일 수 있겠다.

이렇게 평화 전망대를 구경한 후, 우리는 교동도를 찾아갔다. 민통선 검문소는 교동대교보다 한참 앞에 있었다. 전망대에 갈 때와 비슷하게 간단한 출입 신청서만 작성하면 출입 허가는 곧장 나오며, 한번 출입증을 받으면 내 기억으로 2~3일 정도 교동도에 자유롭게 출입이 가능하다. 여느 민통선 구역처럼 해가 떨어지기가 무섭게 통금이 걸리는 것도 아니고, 자정~새벽 4시 정도에만 출입을 자제하면 된다.

교동도는 2014년이 돼서야 다리가 놓였으며, 아무래도 주민 출입이 뜸하니 대교 주제에 도로폭은 겨우 2차선이었다(편도 1차선).
그리고 섬임에도 불구하고 그냥 농촌 마을일 뿐 어촌 분위기가 전혀 나지 않는 게 인상적이었다. 해수욕장? 횟집? 그런 거 없다. 그도 그럴 것이 보안 때문에 바다로 나갈 수가 없으니까. 괜히 민통선 마을이 아니다.

사용자 삽입 이미지

우리가 갔을 때는 교동도에 있는 커다란 '고구 저수지'가 온통 꽁꽁 얼어붙어 있었다. 하늘의 색과 바닥의 색이 거의 동일한 게 무슨 볼리비아의 우유니 사막을 보는 듯했다. 썰매를 타고 놀고 싶었다.

교동도를 한 바퀴 도니 날이 슬슬 어두워지고 있었다. 그래도 강화도까지 왔는데 해가 완전히 떨어지기 전에 마지막으로 마니산을 어귀는 보고 와야겠다는 생각에 남쪽으로 향했다.
정상의 참성단까지 가는 길은 서울 남산처럼 흙길 등산로와 계단 등산로가 모두 닦여 있는 듯했다. 등산은 차마 못 하고 돌아왔지만 여기도 마치 제주도 한라산이나 성산 일출봉을 보는 것 같았다.

사용자 삽입 이미지

"산악인은 무궁한 세계를 탐색한다. 산악인은 대자연에 동화되어야 한다. 자유· 평화· 사랑의 참 세계를 향한 행진이 있을 따름이다"
아이고 이거 무슨 예비 의료인이 히포크라테스 선서라도 하는 것 같다. 등산을 이렇게 거창하게 윤색해 놓은 시는 난생 처음 본다. =_=;;

나중에 강화도를 다시 찾아오는 건 결혼하고 애까지 동반한 뒤가 되지 않을까 싶다. 그래도 짧은 시간 동안 강화도에서 의미 있는 여행을 했고 즐거운 시간을 보냈다.

Posted by 사무엘

2017/04/22 08:33 2017/04/22 08:33
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1352

등산 답사기: 앵봉산· 봉산

서울 북서쪽의 은평구에는 동쪽으로는 북한산이 있고, 서쪽으로는 서울과 고양시의 경계 병풍 역할을 하는 길다란 언덕? 산?이 있다. 높이가 200여 m 남짓밖에 안 되니 등산이라고 하기는 좀 그렇고 그냥 공원· 산책로에 가깝다.
정상에 도달하는 게 아니라 그냥 대놓고 횡단· 종단에 의의를 둬야 한다. 또한 산기슭은 온통 건물들이 들어서 있으며 등산용품 매장이나 유원지 같은 걸 기대해서는 곤란하다.

저기는 전형적인 동네 뒷산일 뿐이지만 그래도 봉우리엔 북쪽에서부터 남쪽 순으로 앵봉산· 봉산· 수색산이라고 이름이 붙어 있다. 본인은 지난 한겨울에 저기를 다녀 왔다.
서울 시내 등산을 다니면서 본인은 한양도성, 북한산성 등 산과 관련된 여러 유물, 제도, 순환 관광 코스들에 대해 알게 됐다. 저기를 답사하면서 이번에는 '서울 둘레길'에 대해서 이제야 드디어 확실하게 감을 잡았다.

예전에 북한산이나 아차산을 오를 때도, 정상으로 오르는 등산로가 아니라 능선이나 중턱에 이상한 길이 나 있는 건 지도를 통해 알고 있었다. 그런데 이것들이 다 한데 이어져 있고 서울시에서 비교적 최근에 작정하고 일관된 시스템으로 '둘레길'이라는 걸 만들어서 운영하고 있다는 건 처음으로 알게 됐다. 공식 홈페이지도 있다.

사용자 삽입 이미지

이거 나름 지리 공부도 되고 나쁘지 않은 발상인 것 같다. 높은 산들은 그냥 중턱에만 길이 나 있고, 앵봉산· 봉산처럼 낮고 긴 산은 정상 능선이 경로이다.
서남부는 산이 없는 관계로 예외적으로 안양천을 따라 길이 나 있다. 그러니 옛날에는 산을 피하느라 경부선 철도도 영등포로 우회하는 형태로 놓인 것이지 싶다.

이런 의미를 두고 서울 지하철 3호선 구파발 역에서 내려서 먼저 앵봉산을 올랐다.

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

산책로와 정자, 체력 단련 시설이 나오다가..

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

갑자기 참호 같은 군사 시설도 등장했다.
안 그래도 답사 당시 날씨가 몹시 추웠는데 저 참호 안에 들어가서 한숨 자고 싶은 생각이 들었다. 저기 안은 왠지 따뜻할 것 같았다.
한겨울엔 땀이 안 나는 대신 콧물이 나더라.

사용자 삽입 이미지

갑자기 산의 건너편은 초록색 펜스로 가려졌다. 군사 시설 때문은 아니고, 건너편에 서오릉이 있어서 문화재 보호를 위해서이다. 이 점에서는 의릉 때문에 펜스가 쳐진 서울 천장산과 사정이 비슷하다.

사용자 삽입 이미지

그래도 딱 한 군데 전망대가 있기도 해서 풍경 사진을 남길 수도 있었다. 여기 말고 다른 곳은 온통 나무가 우거져서 산 아래의 모습을 제대로 볼 수 없었다.

사용자 삽입 이미지

산 정상에는 이렇게 텔레비전 송신탑도 있었다.

사용자 삽입 이미지

그 뒤로는 펜스의 색깔이 잠시 검정으로 바뀌기도 하다가 다시 초록으로 복귀하면서 내리막이 이어졌다.
나중엔 울타리와 산책로도 없어지고 흙길이 나오다가 서오릉로와 합류하는 걸로 앵봉산 구간이 끝났다. 여기까지 3km가 넘게 좀 걸은 것 같다.

사용자 삽입 이미지

차들이 다니는 서오릉로를 횡단하면 봉산 구간이 곧장 나온다.
이 공터가 굉장히 인상적이었다. 차를 세워 놓기에 안성맞춤인데 여기는 딱히 차 끌고 방문할 일이 별로 없다는 게 딜레마이다.
참고로, 답사 당시에 저기는 길이 온통 빙판으로 바뀌어 있었다.

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

봉산도 정상(?)이라고 불리는 곳에는 정말 금방 도달할 수 있다. 꽤 넓은 공터가 닦여 있으며, 전망대와 정자, 그리고 봉수대 모형이 있다.

사용자 삽입 이미지

서쪽 건너편에는 비슷한 높이의 언덕인 망월산이 있고, 망월산과 봉산 사이에 '고양 향동 공공주택 지구'라는 이름으로 한창 공사판이 벌어진 게 보였다. 몇 년 뒤면 저기도 온통 아파트들이 빽빽하게 들어서게 되겠다.

사용자 삽입 이미지

산의 높이가 대략 어떻고 산기슭이 어떤 분위기인지는 위의 사진 한 장으로 대략 설명이 되겠다.

사용자 삽입 이미지

정상을 지난 뒤에도 능선을 따라 남쪽으로 이런 식으로 길이 계속 이어졌다.
산이 자연스럽게 끝날 때까지 증산· 수색 방면으로 계속 가고 싶었지만, 시간과 보급의 한계로 인해 서울 시립 서북 병원쯤에서 하산을 결정했다. 내려가는 길이 온통 미끄러운 빙판이 돼 있어서 다니기가 몹시 힘들었다.

최종 하산 지점은 봉산을 정면으로 관통하여 서울과 고양시를 잇는 터널 근처였다. 이건 작년 여름 시점의 로드뷰를 봐도 아직 미개통 상태였을 정도로 정말 최근에 뚫린 터널인 것 같았다.
국도 1호선 증산로 방면으로 한참을 걸은 뒤, 최종적으로는 새절 역에서 지하철을 타고 귀가했다. 비록 산의 절대적인 높이는 낮은 편이지만 여느 산을 오를 때와 비슷한 시간 동안 총 7km가 넘게 걸은 것 같다.

산 너머로 그린벨트 마을 같은 게 있었으면 고양시 쪽으로 하산할 수도 있었을 텐데 저쪽은 공사판이고 볼 게 없어서 도로 서울 시내 방면으로 하산하게 됐다.
다음에 기회가 되면 본격적으로 '서울 둘레길'이라는 컨셉으로 북한산 쪽도 돌아다녀 보고 이곳의 완전 반대편인 동부의 일자산 쪽도 가고 싶다.

Posted by 사무엘

2017/04/19 08:34 2017/04/19 08:34
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1351

« Previous : 1 : ... 96 : 97 : 98 : 99 : 100 : 101 : 102 : 103 : 104 : ... 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:
3052316
Today:
623
Yesterday:
2713