« Previous : 1 : ... 110 : 111 : 112 : 113 : 114 : 115 : 116 : 117 : 118 : ... 221 : Next »

이건 개인적으로 오래 전부터 알고 있었던 사소한 옛날 추억 아이템인데, 지금까지 한 번도 공개적으로 언급한 적이 없었던 관계로 털어놓고자 한다.

Windows에 메모장은 1.0 시절부터 있었던 터줏대감 기본 프로그램이다. 기본 윈도우 프레임 껍데기에다 운영체제의 내장 에디트 컨트롤 하나만 달랑 얹은 극도의 최소주의 형태이다. 세월이 흐르면서 워드패드와 그림판은 리본 UI가 탑재됐고 계산기도 아주 화려한 UI로 리모델링된 마당에, 메모장만은 외형이 거의 바뀐 게 없다.

Windows 프로그래밍 공부를 한 사람이라면 메모장 정도는 하루 정도만 투자하면 동일 프로그램을 직접 만들 수도 있을 것이다. 아니, 있는 그대로 복제품만 만드는 건 너무 시시하고, MDI 정도는 지원하게 확장해서 만들기도 한다. 지금도 있는가 모르겠는데 비주얼 C++의 MFC 예제에는 MultiPad라고 실제로 메모장의 MDI 버전도 소스 코드와 함께 제공된 바 있다.

그런데 Windows 95부터 ME까지 9x 계열의 메모장은 '도움말'이라는 메뉴 명칭의 뒷부분에 출처를 알 수 없는 공백이 하나 더 들어가 있었다. 아래 스크린샷을 참고할 것. 계산기의 '도움말'과는 달리, 메모장의 '도움말'은 파란색이 조금 더 긴 게 보일 것이다.

사용자 삽입 이미지

더욱 신기한 건, 98과 ME로 버전이 올라가도 상황이 바뀐 게 없었다는 점이다. 그것도 한글판과 영문판 공히.
메모장이 아무리 최소주의 기본 프로그램이었다고 해서 그 시절 동안 변화가 전혀 없었느냐 하면 그렇지는 않았다. 보다시피 아이콘 모양이 바뀌었으며 본문의 글꼴을 변경하는 기능이 98에서 추가되었다. 코드뿐만 아니라 리소스 쪽도 검수할 기회가 있었는데 저 문자열의 뒤의 공백은 여전히 제거되지 않은 채 남았다.

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

그 반면, Windows 2000의 메모장은 그렇지 않다.

사용자 삽입 이미지

ME는 2000보다 나중에 나왔음을 감안한다면, 같은 메모장도 NT 계열의 것과 9x 계열의 것은 코드와 리소스가 정말로 한데 공유된 구석이 없었다는 걸 알 수 있다. 같은 소스에서 조건부 컴파일을 한 것조차도 아닌 듯하다.

심지어는 도움말도 둘 다 완전히 다르게 따로 만들어졌다. Windows ME의 메모장 도움말은

Using Notepad to edit text files
You can use Notepad to create or edit text files that do not require formatting and are smaller than 64K (kilobytes).


이라고 사용자에게 당장 필요한 task 지향적인(use, using) 설명 위주인 반면.. Windows 2000의 메모장 도움말은

Notepad overview
Notepad is a basic text editor that you can use to create simple documents.


이라고 프로그램의 정체성에 대해서 더 사무적이고 격식을 차린 문체로 시작한다.

메모장은 아주 단순한 프로그램이지만 9x 계열의 것과 NT 계열의 것이 기능상의 차이도 꽤 크다. 후자는 (1) 유니코드를 지원하며 (2) 64KB 이상 크기의 파일도 열 수 있다. 다시 말해 전자는 "파일이 너무 큽니다. 워드패드에서 여시겠습니까?" 이런 로직이 존재하며, 지금으로서는 상상하기 어렵지만 UTF8 방식 텍스트를 읽고 쓰는 것조차도 지원하지 않았다.

물론 운영체제의 에디트 컨트롤이라는 건 리치 에디트와는 달리 아주 방대한 텍스트를 편집하는 데는 최적화되지 않았던지라 단일 버퍼 기반이라는 한계는 NT 계열도 그대로 갖고 있었다.

또한 NT 계열의 메모장은 BOM이 없는 유니코드 텍스트 파일에 대해서 IsTextUnicode라는 휴리스틱 API를 호출해서 텍스트 파일의 인코딩을 판단했었다. 그런데 그게 좀 버그가 있어서 정상적인 영어 단어로만 이뤄진 짤막한 파일을 UTF16 방식으로 저장된 중국어 한자로 오판하곤 했다. 0x41, 0x42.. 이런 묶음이 코드값상으로는 한중일 통합 한자 내지 확장 A이다 보니.. -_-;;
이 버그는 보안 쪽 문제는 아니지만 그래도 사람을 성가시게 하는 문제인 관계로, 2000이던가 XP 즈음에 패치가 나와서 고쳐졌다.

Windows 9x에는 IsTextUnicode라는 함수 자체가 존재하지 않으니 9x 계열의 메모장이야 저런 문제가 존재할 여지조차 전혀 없었다.
끝으로, 메모장은 아마 Windows XP에서 '상태 표시줄'을 표시하는 옵션이 추가된 게 현재까지 외형상의 마지막 변화 사항이지 싶다. '자동 줄바꿈'을 사용하지 않을 때에 한해서 줄/칸 위치를 표시하는 깨알같은 기능이 추가된 것이다.

이런 Windows와 메모장의 유구한 역사 속에서 도스용 Windows 3.x 내지 NT 3~4의 메모장에는 '불필요한 공백'이 존재했었나 모르겠다.

Posted by 사무엘

2016/04/18 08:33 2016/04/18 08:33
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1216

도스와 유닉스 명령창 공히 디렉터리를 이동할 때는 cd 내지 chdir이라는 명령을 사용한다. 단, 도스는 드라이브 이름을 A~Z 알파벳 한 글자로 표현한다는 게 마치 날개셋의 수식 변수만큼이나 특이하며, Windows는 이 관행을 그대로 물려받았다. 파일명에 대소문자를 구분해서 표현은 하지만 유닉스와는 달리 이를 서로 다른 것으로 취급하지는 않는다. 또한 디렉터리 구분자가 /가 아니라 \(역슬래시)라는 것도 유닉스 계열과 다르다.

그 뿐만이 아니다. 도스는 cd라고만 치면 현재 디렉터리를 표시만 해 주는 반면, 유닉스는 cd라고 치면 그냥 자신의 홈 디렉터리, Windows로 치면 "C:\Users\계정명" 정도로 이동해 버린다. 도스가 유닉스의 다른 개념들은 다 따 왔어도, 이건 다중 사용자라는 개념이 없던 물건이다 보니 홈 디렉터리 같은 건 도입하지 않기 때문이다. 유닉스에서 지금 디렉터리를 표시하는 명령은 잘 알다시피 pwd라고 따로 있다.

그렇게 도스와 유닉스 계열이 차이가 나는 와중에도 . 가 현재 디렉터리를 의미하고 ..는 부모 디렉터리를 의미한다는 건 둘이 동일하다. cd ..를 하면 부모 디렉터리로 갈 수 있다. 다만, 문법이 둘이 완전히 동일한 건 아닌지라.. 도스는 cd..라고 둘을 띄지 않아도 됐던 반면, 유닉스는 둘을 띄워야 한다는 깨알같은 차이점이 또 있다.

그런데 Windows 9x의 도스창에서는 숨겨진 기능이 더 있었다. cd 다음에 점을 세 개 이상 늘어놓음으로써 두 단계 이상의 조부모 디렉터리로 이동이 가능했다. cd...처럼. 그럼 저건 cd ..\.. 를 의미한다. 네 개 이상 숫자를 얼마든지 늘어놓아도 된다.
게다가 이건 파일 시스템 차원에서 공식적으로 인식하기라도 하는지, 굳이 cd에서만 쓸 수 있는 게 아니다. dir ... 이라고 하면 두 단계 상위 디렉터리를 조회할 수 있고, Windows의 파일 열기/저장 대화상자에서도 "..."이라고 치면 동일 기능이 동작했다.

Windows 9x는 C:\Windows 디렉터리를 가 보면 readme 등 몇몇 '읽어 보세요' 문서가 html이나 doc나 rtf가 아니라 txt 파일로 들어 있었는데, 그 중엔 tips.txt가 있다. 그 파일에 cd...에 관한 언급이 존재한다.

MS-DOS COMMAND PROMPT
=====================

Directory Shortcuts
-------------------
Related directories have the following shortcuts:

. = current directory
.. = parent directory
... = parent directory once removed
.... = parent directory twice removed

For example, if you are in the C:\Windows\System\Viewers
directory, and you enter cd... at the command prompt, the
directory changes to C:\Windows.


위는 영문판 Windows ME, 아래는 한글판 Windows 95의 tips.txt 내용 일부이다.

* 디렉토리 단축키
다음과 같은 디렉토리 관련 단축키를 사용할 수 있다.
. = 현재 디렉토리
.. = 상위 디렉토리
... = 하나의 디렉토리가 삭제된 상위 디렉토리(Windows 95에 새로 추가)
.... = 두 개의 디렉토리가 삭제된 상위 디렉토리(Windows 95에 새로 추가)
예를 들어, C:\Windows\System\Viewers 디렉토리에서 명령 프롬프트에 cd....를
입력하면 디렉토리는 C:\로 바뀐다.


이 기능은 이전의 도스 시절엔 존재한 적이 없었으며 Windows 95에서 처음으로 추가되었다는 것이 명시되어 있다. 또한 95의 문서에서는 ....로 디렉터리를 세 단계 건너뛰는 예를 제시하는 반면, 후대 98/ME의 문서는 ...로 두 단계만 건너뛰는 예를 제시한다. C:\로 바뀌는 건 cd\와 동일하기 때문에 예제를 바꾼 게 아닌가 싶다.
참고로 Windows의 한글판은 98부터 '디렉토리'라는 표기가 '디렉터리'로 바뀌고, 문서들의 문체가 반말에서 존댓말로 바뀌었다.

놀라운 사실은, 이 기능은 오늘날의 Windows NT 계열에서는 지원되거나 존재한 적이 전혀 없었고 오로지 95, 98, ME만의 관행이었다는 점이다.

사용자 삽입 이미지

The old new thing 블로그의 설명에 따르면 cd ...는 노벨 네트웨어(Novell NetWare)라는 네트워크 솔루션에서 제공하는 명령 문법과의 호환성 때문에 편의 차원에서 도입된 기능이라고 한다. 그땐 노벨 사의 IPX/SPX 프로토콜 기반으로 네트워크 구성요소들도 있었으니 수긍이 간다.

그리고 9x와 달리 NT에서 ...를 지원하지 않은 이유는, 윈NT가 사용하는 NTFS 파일 시스템에서는 '.'나 '..'와는 달리 '...'는 그 자체가 올바른 파일이나 디렉터리 이름이 될 수 있기 때문이다. 그렇기 때문에 NT 계열에서는 이런 기능을 앞으로 지원할 의향은 더욱 없다고 봐야 할 것이다. 그냥 cd..\..를 해야지, 약칭인 cd...는 IPX 프로토콜이 존재하던 Windows 9x 시절의 추억으로 old timer들에게 남을 것으로 보인다.

9x 시절에는 dir con\con이던가, '실행' 대화상자에서 con\con 이런 걸 치면 운영체제를 뻗게 하고 도스창을 강제 종료시키는 게 가능했다. 이건 꽤 유명한 버그였으며 ME에서야 보정을 통해 패치가 됐다. cd ...는 그것만큼이나 9x 시절에 파일 시스템과 관련해 흥미로운 고유 아이템 추억거리인 것 같다.

여담으로, 명령 프롬프트에서 공백은 여러 명령 인자 토큰들을 구분하는 역할을 한다. 그렇기 때문에 거기서 공백이 들어간 파일을 표시하기 위해서는 파일명 전체를 ""로 싸야 하며, 각종 프로그래밍 언어에는 따옴표 문맥을 인식하면서 공백 기준으로 명령 인자들을 파싱· 토큰화하는 라이브러리도 존재한다. 그러나 이 cd 명령만은 예외로 공백이 들어간 디렉터리도 CD Program Files 라고만 쳐도 인식되게 되어 있다. cd /?를 해 보면 이 사실을 확인할 수 있음.

그리고 cd에는 드라이브까지 같이 변경하는 명령이 한동안 존재하지 않았다. 도스 커맨드 셸의 대체제이던 4DOS 내지 NDOS에서는 자체적인 명령 확장을 통해서 그런 기능을 제공하곤 했는데, 오늘날 Windows에서는 /D 라는 별도의 옵션을 줘야만 드라이브도 변경 가능하다. 아마 드라이브를 변경하지 않는 게 보장된다는 무슨 호환성 때문에 옵션 형태로 기능을 추가한 것 같다. 참고로 /D는 9x의 도스창에는 존재하지 않으며, Windows NT 계열의 명령 프롬프트에만 있다. ...를 지원하지 않는 대신 /D가 있는 셈이다.

Posted by 사무엘

2016/04/16 08:30 2016/04/16 08:30
,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1215

C++ 클래스에서 타입이 char나 int 같은 정수형 스칼라(배열이 아닌)인 static const 멤버는 선언 후에 별도의 정의를 따로 안 해 줘도 된다. 선언과 동시에 값을 지정할 수 있다. 본인은 이에 대해서 3년 전에도 한번 글을 썼던 적이 있다.

class foo {
public:
    static const int bar = 500;
};

하지만 멤버가 char나 int 같은 간단한(primitive) 타입이 아니고 다른 구조체이거나, 혹은 간단한 타입이라도 배열이라면 얘기가 달라진다. 아까처럼 즉석 초기화를 할 수 없으며, 반드시 정의를 해 줘야 된다.

//헤더 파일
class foo {
public:
    static const POINT bar1;
    static const int bar2[];
};

//소스 파일
const foo::bar1 = { 1024, 768 }; // .x, .y
const foo::bar2[] = { 1, 2, 100 }; // [0], [1], [2]

자, 여기까지는 뭐 당연한 사실이다. 그런데 얼마 전엔 회사에서 이와 관련된 기괴한 일을 하나 겪어서 이곳에다 소개하고자 한다.
static const int 형태로 상수를 하나 추가해서 사용했는데 컴파일러가 이걸 도무지 인식을 못 하고 링크 에러를 내는 것이었다. global scope에 선언된 const 야 C++에서는 static이 디폴트이기 때문에 extern을 명시적으로 지정해야 한다지만, 멀쩡한 C++의 static const 멤버를 왜 인식을 못 하지?
게다가 더 이상한 건 Visual C++과 xcode는 다 문제 없는데 안드로이드의 빌드 환경인 gcc만 저런다는 것이었다.

멀쩡한 코드를 고치고 재빌드 하면서 잠시 헤매긴 했지만, 문제 자체는 구글링을 통해 원인을 찾아서 곧 해결할 수 있었다.
답부터 말하자면, 저 위의 bar는 선언과 초기값 지정이 되어 있음에도 불구하고 const int foo::bar1; 이라고 몸체도 소스 코드 어딘가에 정의해 줘야 했다. 단, 500이라고 초기값을 지정하는 건 선언부와 정의부 중 한 곳에다가만 하면 된다. 마치 함수의 디폴트 인자를 선언부와 정의부 중 한 곳에만 주면 되듯이.

소스 코드에서 어떤 숫자에다가 명칭을 부여하기 위해서는 enum이나 전처리기 #define을 사용할 수 있다. 이에 비해 const는 위의 두 방법과는 달리 명시적인 타입을 가지며, & 연산자를 이용해서 값의 주소도 얻을 수 있다는 차이가 있다.

static const 멤버를 R-value로만 쓰는 것은 그때 그때 그 숫자를 말 그대로 상수 형태로 집어넣는 것과 같다. 그러니 enum이나 #define과 별 차이가 없으며, 굳이 이 변수의 실체(= 주소)가 없어도 된다.
그러나 이 값을 그대로 파일에다 쓴다거나 할 때는 값이 담긴 메모리 주소를 줘야 한다. 그리고 C++의 템플릿 라이브러리 중에도 일단 value가 아니라 참조자가 전달되는 함수에다가 static const 멤버를 넘겨주면 그 멤버의 주소가 필요해진다.

그리고 그렇게 값이 아니라 주소가 필요한 경우가 있다면, gcc는 비록 선언부에서 값이 지정된 static const 멤버라 해도 별도의 몸체의 정의가 있어야만 링크를 제대로 수행해 줬다. 이니셜라이저가 있는 것도 아니고, 그냥 선언부에 있는 변수를 거의 그대로 다시 써 주는 잉여일 뿐인데도 그게 꼭 필요했다. 그 반면 Visual C++ 등 타 컴파일러는 몸체 정의가 있건 없건 결과는 동일하게 나왔다. 어째 이런 차이가 존재할 수 있는 걸까?

한편으로 gcc는, 주소만 요구하지 않는다면 구조체나 배열까지는 아니어도 float, double 같은 부동소수점 스칼라 상수를 몸체 정의 없이 static const로 선언하는 것도 허용해 줬다.

class foo {
public:
    static const double bar4 = 0.0025;
};

이거야말로 비표준이며 일단 Visual C++ 등 여타 컴파일러에서는 허용되지 않음에도 불구하고 gcc는 이를 지원한다. 혹시 나중에 표준으로 등재됐다면 댓글로 알려 주시기 바람. 요즘 C++은 하루가 멀다 하고 급변하고 있어서.. 과거 C++이 98과 03 버전을 거친 뒤 갑자기 1x대부터 확 바뀌기 시작했는데, 이는 마치 마소가 2000년대에 닷넷 때문에 C++ 지원을 등한시하다가 2010년대부터 트렌드가 바뀐 것과도 분위기가 일치하는 것 같다.

enum은 정수형 타입만 지원하기 때문에 실수 상수를 정의하는 건 #define 아니면 const밖에 선택의 여지가 없는데 gcc처럼 할 수 있다면 편리할 것 같다.
다만 &foo::bar4가 필요하다면 gcc라도 물론 const double foo::bar4; 라는 몸체 선언이 추가로 필요해진다.
아무튼, static const 멤버와 관련하여 gcc의 특이한 면모를 다시 생각할 수 있는 시간이었다.

Posted by 사무엘

2016/04/14 08:39 2016/04/14 08:39
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1214

2010년대가 벌써 중후반기로 들어섰다.
세상은 3, 40년 전의 SF물들이 전망했던 것처럼 인간이 무슨 달과 화성에 식민지를 개척하는 식으로 발전하지는 못했다. 초음속기와 우주 왕복선은 퇴역했고, 컴퓨터에서 싱글코어 무어의 법칙은 유효기간이 끝났다.
그러나 그런 게 아닌 다른 쪽으로는 과학 기술이 여전히 꾸준히 발달해 왔다. 제품의 외형은 크게 변화가 없을지 몰라도 그 내부는 이곳 저곳이 발전했다.

대외적으로는 1년 남짓 전부터는 기름값이 웬일로 다시 2000년대 초 수준으로 내렸고, 대학가에서 2000년대에 잠시 주춤했던 컴퓨터/전산학 지망자가 다시 늘고 있다. 컴퓨터 얘기를 좀 더 늘어놓자면 2000년대에 한창 닷넷에 밀려 C++이 죽었네 마네 하고 있었지만, 지금은 오히려 닷넷이 시들시들하고 C++ 언어가 하루가 다르게 변모하고 있다.

1999년, 2012년 등 각종 시한부 종말 예언은 예나 지금이나 전혀 적중하지 않고 불발탄으로 끝났다. 북한은 새끼 돼지 휘하에서 예나 지금이나 체제가 잘-_- 유지되고 있다. 중동에는 소말리아 해적밖에 없는 줄 알았는데 웬 이상한 또라이 이슬람 막장 국가가 태동하여 2차 세계 대전 이래로 국제 세계를 하나로 단결시키고 있다. 이 과학 기술 내지 국제 정세라는 건, 한국어의 종결어미와도 같아서 정말 그때가 돼 보지 않고서는 스토리를 정녕 알 수 없는가 보다.

컴퓨터 CPU의 집적도와 코어 수가 올라가고, 저장 매체의 용량이 급격하게 증가한 것만큼이나 이 시대는 디스플레이 내지 조명 장치가 눈부시게 발달한 것의 혜택을 크게 입고 있다. 아무리 기가 막힌 저전력 고성능 초소형 CPU가 발명됐어도, 전자식이 아니라 기계식인 하드디스크는 근본적으로 진동과 충격에 약하기 때문에 걸어 다니는 사람의 주머니 속에서 동작하기는 영 무리일 수밖에 없을 것이다.
또한 디스플레이 장비가 브라운관밖에 없거나, 액정이라고 해 봤자 계산기의 흑백 액정 같은 것밖에 없었어도 지금과 같은 스마트폰이 만들어질 수 없었을 것이다.

토머스 에디슨이 살아 생전에 발명을 그렇게도 많이 했다지만, 그의 대표적인 발명은 축음기와 백열등 전구라는 양대 산맥으로 요약된다 해도 과언이 아니다.
그 중 백열등은 가히 세상을 바꿔 놨다. 성경이 말하는 "빛과 소금" 중에서 '빛'에 해당하는 발명이다. 전등은 깜깜한 밤에 빛을 얻기 위해 굳이 연료를 태워서 불을 피울 필요를 없게 만들어 줬다.

그에 반해 등잔, 양초, 등유 램프 같은 건 연기가 남고 화재의 위험이 있으며, 결정적으로 빛이 그렇게 밝지도 않다. 어느 못사는 집에서 전기료가 밀려 단전되는 바람에, 촛불을 켜고 자다가 촛불이 넘어지고 집에 불이 나서 일가족이 죽었다는 뉴스.. 21세기에도 가끔은 흘러나온다.
이 얼마나 불편했는가? 그에 비해 전등의 빛은 그 당시로서는 얼마나 우아하게 보였을까? 오죽했으면 에디슨이 죽었을 때 미국 전역에서 1분간 전등을 소등했을 정도였다.

다만, 오늘날의 관점에서 백열등은 전기로 빛을 내는 가~~장 단순한 방법이지만, 한편으로 증기 기관차만큼이나 가장 무식하고 비효율적인 방법이기도 하다.
어느 분야이든 전기를 에너지를 가장 단순한 방식으로 끌어 쓰는 방법은 V=IR 법칙에 의거하여 물리적인 저항을 만드는 것이다. 졸졸 흐르는 강물 내부에다 물레방아라는 저항을 설치해서 동력을 얻듯이. 전동차는 저항 제어 방식이 가장 먼저 등장했으며, 백열등 역시 근본 원리는 가느다란 필라멘트를 저향열로 달궈서 빛이 덤으로 나게 하는 것이다.

연료와는 달리 대놓고 아주 태워 버리는 게 아니라는 점이 다를 뿐이다. 그리고 에디슨은 필라멘트로 쓰기에 가장 좋은 재료를 찾기 위해서 수백~수천 번의 실패를 거듭하면서 근성을 발휘했다는 일화가 전해져 온다. 가장 무식하고 비효율적인 방식의 전등조차도 그냥 쉽게 만들어진 건 아니라는 뜻이다. 그 시절엔 동그란 곡면인 전구 모양의 유리조차도 사람이 입으로 불어서 힘들게 만들어야 했다.

단순 저항으로 전기를 활용하는 모든 방식의 문제는 열이다. 전기 에너지 중 일부만이 빛이나 동력 같은 인간에게 유익한 형태로 쓰이고, 나머지는 열로 다 빠져나간다. 대놓고 전열기를 만드는 게 아니라면 저건 좀 개선돼야 할 점이 아닐 수 없다.
오래 켜 놓은 전구는 사람이 만지면 화상을 입을 정도로 뜨거워진다. 그리고 과거의 저항 제어 전동차 역시 회생 제동조차 없던 시절엔 열로 손실되는 에너지 때문에 객실 내부까지 찜통으로 변하고 비효율과 고충이 장난이 아니었다.

나중에 발명된 형광등은 내부적으로 형광 물질을 사용하고 내부 구조도 백열등보다 더 복잡하다. 필라멘트가 있긴 하지만 그거 자체가 시뻘겋게 달궈져서 빛을 내는 형태는 아니기 때문에 열이 덜 난다. 등의 모양이 왠지 백열등보다 더 길쭉하고, 같은 전기를 쓸 때 광량도 더 많고 수명도 더 길다. 쉽게 말해 더 효율적이고 모든 면에서 백열등보다 더 나았다.

그런데 과거의 형광등들은 잘 알다시피 점등 딜레이가 있었기 때문에 "형광등 같다" 그러면 머리의 반응이 좀 더딘 사람을 상대로 좀 부정적인 비유에 쓰이곤 했다. 정작 만화 같은 매체에서는 아주 비효율적인 백열 전구가 뿅 켜지는 것이 번뜩이는 아이디어가 떠오르는 걸 나타내는 긍정적인 심상이었는데 참 대조적이다.

오늘날은 이런 전구에까지 반도체를 동반한 LED 방식이 대세가 돼 있다. 전력 소모와 광량에 관한 한, 형광등보다도 더 성능이 좋은 끝판왕이라고 한다. 단점은 반도체의 특성상 초기 제조 비용이 비싸고 열에 약한 것 정도가 고작이다.
생긴 건 꼬마전구마냥 자그마한데(형광등은 이 정도로 작게는 못 만들지 아마?) 거기서 백열등 전구로는 상상할 수 없는 아주 희고 강렬한 빛이 뿜어져 나오며, 발열도 별로 없다. 이게 그냥 이뤄진 게 아니다. 스마트폰에 내장된 손전등 기능도 응당 LED 기반이며, 24시간 가동되는 길거리의 신호등들도 다 LED 방식으로 교체되고 있다. 설치만 하면 얼마 못 가 설치 비용을 회수하고 이득이 나기 때문이다.

반도체라고 하면 으레 컴퓨터를 떠올리기 쉬우나, 반도체가 꼭 그런 데에만 쓰이는 물건은 아니다. 시계가 기계식 태엽을 쓰다가 건전지를 집어넣는 쿼츠 방식으로 바뀐 것도 반도체 기술이 가미된 것이다. 전자식 시계는 가격과 성능, 정확도 등 모든 면에서 기계식 시계를 처참하게 관광 태웠다.

또한 전동차가 VVVF 제어 방식으로 바뀐 것도 반도체 기술 기반이다. 동력 성능, 유지보수 난이도 등 모든 것이 종전의 저항 및 쵸퍼 방식보다 우위이다. 초기에는 시끄러운(?) 가속 구동음만이 유일한 단점으로 제기되었지만 철덕에게는 그건 아름다운 음악-_- 소리이지 단점이 전혀 아닐 뿐더러, 요즘은 소음 문제마저도 다 개선됐다. (소음이 인간의 가청 주파수 대역 이외로 금방 넘어가거나..)

형광등이나 LED등이 백열등과는 너무 압도적인 성능 차이가 나기 때문에 나라에서는 아예 백열등을 퇴출까지 시키려 할 지경이 됐다. 마치 컴퓨터계에서 IE6이나 제로보드 4를 퇴출시키려 하는 것처럼 지금 이상의 생산이나 수입, 판매를 금지한다. 백열등은 딱히 유연휘발유나 프레온 가스처럼 그 자체가 위험하거나 환경 문제를 일으키지는 않지만, 에너지 소비량 대비 효율이 너무 안 좋기 때문이다.

참고로 현재 지구상에서 현역으로 가장 오래 뛰고 있는 백열등은 미국에 소재한 '센테니얼 전구'라고 한다. 무려 since 1901이고 한 세기가 넘게 켜져 있었다고 한다. 소등 시간은 몇십 년에 한 번 꼴로 몇 시간이 고작임. 세계 최고령 전구라고 재조명과 주목을 받기 시작한 건 1970년대부터였다.

허나, 지금으로부터 먼 미래에는 형광등조차도 LED보다 효율이 낮으며 수은이라는 위험물질 문제도 있는지라 퇴출 수순을 밟을 가능성이 있다. 그리고 이런 식으로 전기· 전자 공학 기술이 계속 발전하다 보면 기술 트렌드가 어찌 보면 복고풍을 탈지도 모른다. 한때는 실용성이 다른 기술에 밀려서 사장됐다가 나중에 그 한계가 극복되면서 다시 조명받는 것 말이다.

대표적인 예는 전기 자동차이다. 한때는 기름 자동차보다 가볍고 구조가 간단하고 성능도 좋다는 장점(시속 100km도 먼저 돌파) 때문에 널리 보급되었지만, 배터리 충전 시간과 항속거리에 치명적인 발목이 잡혀서 굳이 석유 회사의 로비가 없이도 슬금슬금 밀려 사라졌다.

하지만 지금은 기름값과 환경 문제 때문에 전기 철도뿐만 아니라 전기 자동차도 다시 주목을 받고 있다. 새로운 유전이 자꾸 발굴되고 채굴 기술도 눈부시게 향상되었다지만 석유가 지구에 무한히 존재하지는 않을 것이다. 게다가 석유는 단순히 태우는 연료뿐만 아니라 플리스틱 같은 다른 화합물을 만드는 데에도 쓰인다. 자동차의 동력원이 앞으로 어떻게 바뀔지 알 수 없는 노릇이다.

그 뿐만이 아니다. 교류 전기에 밀려 사라진 고전압 직류 송전도 그 당시에 문제되었던 한계(송전 손실, 변압)를 반도체 기술로 극복하고 다시 부각되고 있는 것 같다. 솔직히 교류는 전기 공학을 우리 같은 사람이 감당하기엔 너무 복잡하고 어렵게 만드는 주범이긴 한데..;; 단점만 없으면 직류 위주로 가는 게 더 간단하고 좋긴 할 것이다. 그리고 이 직류 송전 기술의 배후에도 반도체 기술이 있다.

그나저나 무선 송전 기술은 정말 실용화가 가능한지 모르겠다. 이게 제대로 된 물건이 나오면 전기 문명에도 일대 혁신이 일어날 것이다. 철도에는 전차선까지는 몰라도 팬터그래프가 필요 없어지고 전기 철도 시설의 근간이 송두리째 흔들릴 것이다.

끝으로, 전기 쪽 잡다한 자료들을 찾다가 본인은 흥미로운 동명이인 과학자 pair가 있다는 걸 발견했다. 이를 소개하며 글을 맺겠다.

  • 독일 브라운: 로켓(새턴 V), 전기공학(브라운관)
  • 영국 플레밍: 미생물학(스코틀랜드 출신, 페니실린), 전기공학(잉글랜드 출신, 양손 법칙)

듣자하니 그 당시에 무선 통신의 선구자이던 이탈리아의 굴리엘모 마르코니는 브라운· 플레밍과도 같이 만나서 연구를 했다고 한다. 어느 브라운과 어느 플레밍인지는 더 설명이 필요하지 않을 테고.

Posted by 사무엘

2016/04/11 19:36 2016/04/11 19:36
, , ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1213

운영체제가 기본 제공하는 프레임과 제목 표시줄이 있는 윈도우라면, 사용자가 그 제목 표시줄을 좌클릭+드래그 하여 창을 다른 곳으로 옮길 수 있다.
그런데, 그런 프레임이나 제목 표시줄이 없는 특수한 형태의 윈도우를 만들었다. (Custom 스킨이 씌워진 리모콘이나 TV 모양의 동영상 재생기 같은..) 사용자가 이 창의 아무 표면이나 특정 부위를 드래그 해서 창의 위치를 옮길 수 있게 하려면 어떻게 하면 좋을까?

(1) 가장 단순무식한 방법은 WM_LBUTTONDOWN, WM_MOUSEMOVE, WM_LBUTTONUP을 받아서 해당 기능을 직접 구현하는 것이다. 즉, LBUTTONDOWN 때 마우스를 캡처하고 마우스 포인터의 위치가 창의 화면 좌표에서 얼마나 떨어져 있는지를 파악한다. 그리고 캡처가 있는 상태에서 MOUSEMOVE가 오면 새 포인터의 위치에 상응하는 위치로 창의 위치를 옮긴다(SetWindowPos). 이 기능은 각각의 메시지 핸들러 함수에다 구현해도 되고, WM_LBUTTONDOWN 안에다가만 자체적인 message loop을 돌려서 구현해도 된다.

이건 드래그 앤 드롭 기능을 구현하는 절차와 비슷하다. 한 윈도우의 내부에서 그려지는 각종 그래픽 오브젝트에 대해서 드래그+이동을 구현하려면 저렇게 직접 코딩을 해 줘야 한다. 그러나 창 자체에 대해서 드래그+이동만을 구현하는 것은 사실 다음과 같이 더 간단한 방법도 있다. 이미 존재하는 기능을 운영체제에다가 요청만 한다는 것이 핵심 아이디어이다.

(2) 그 창에서 WM_NCHITTEST 메시지를 받아서 DefWindowProc의 리턴값이 HTCLIENT인 지점에 대해서도 HTCAPTION을 되돌린다.
그러면 운영체제는 이 창의 클라이언트 영역을 클릭+드래그 한 것도 제목 표시줄을 클릭+드래그 한 것과 동일한 것으로 간주한다. 그래서 드래그 시 창을 자동으로 이동시키게 된다.

이건 대부분의 경우에 굉장히 깔끔한 방법이긴 하지만, 창을 이동시키는 데 쓰이는(HTCAPTION으로 인식되는) 영역에 대해서 더 세부적인 제어를 하기가 어렵다는 게 흠이다. 즉, 거기를 우클릭 한다거나 더블클릭 한 것처럼, 이동과 관계 없는 다른 동작을 취한 것을 우리가 인식할 수 없다. 거기는 마우스 동작에 관한 한, 애초에 클라이언트 영역이 아닌 것으로 간주되어 버렸으니 말이다. 만약 그런 제어까지 해야 한다면 다음과 같은 또 다른 방법을 사용하면 된다.

(3) WM_LBUTTONDOWN이 왔을 때, 창을 이동시키는 기능에 해당하는 시스템 명령을 전달한다.
가장 간단하게 생각할 수 있는 방법은 PostMessage(m_hWnd, WM_SYSCOMMAND, SC_MOVE, 0); 이다. 이것은 Alt+Space를 눌러서 나오는 창의 시스템 메뉴에서 '이동'을 선택하는 것과 같은 효과를 낸다. 창에 제목 표시줄이나 시스템 메뉴가 없다고 해서 시스템 메뉴에 해당하는 기능 자체가 없어지지는 않기 때문이다.

단, 이것은 창을 끌어다 놓는 것과 정확하게 같은 기능은 아니다. 일단 마우스 포인터는 모양이 사방의 화살표 모양으로 바뀌고, 사용자의 key 입력을 기다리는 상태가 된다. 사용자가 ESC가 아닌 다른 key를 누르면 그때부터 마우스 이동으로 해당 창이 이동되는 모드가 된다. 심지어 좌클릭을 한 상태가 아니어도 된다.

SC_MOVE보다 더 직관적인 방법은.. 마소에서 정식으로 문서화하여 공개한 기능은 아니지만 사실상 공공연한 비밀이 돼 버린 기능을 사용하는 것이다. 좌클릭 메시지가 왔을 때 SC_MOVE (0xF010) 대신,
PostMessage(m_hWnd, WM_SYSCOMMAND, 0xF012, 0); 이라고 하면... 마우스를 누르고 있는 동안 창 이동이 아주 깔끔하게 구현된다. 직접 시도해 보시라. 이것이 SC_MOVE와 SC_MOVE+2의 차이이다.

시스템 명령 중에는 SC_MOVE나 SC_SIZE처럼 메뉴에 등재된 명령뿐만 아니라 해당 메뉴 명령을 누른 뒤에 부가적으로 실행되는 기능도 비공개 내부 ID가 부여돼 있다. 가령, SC_SIZE+1 (0xF001)부터 SC_SIZE+8 (0xF008)은 마우스 드래그로 창의 크기를 조절하는 명령을 바로 실행시킨다. 1부터 8까지 순서가 어떻게 되는가 하면 left, right, top, top-left, top-right, bottom, bottom-left, bottom-right이다. 해당 위치의 크기 조절 모서리와 대응한다는 뜻.
이거 배열 순서는 WM_NCHITTEST의 리턴값인 HTLEFT (10)와 HTBOTTOMRIGHT (17)와도 동일하다. 그러니 이해하는 데 어려움이 없을 것이다.

이 주제/테크닉과 관련하여 생각할 수 있는 다른 이야기들을 늘어놓자면 다음과 같다.

1. 추억.
과거에는 운영체제의 자체 기능을 사용해서 창의 위치를 옮기면, 창이 이동되는 동안에 창의 내용이 실시간으로 업데이트 되는 게 아니라 창의 경계 테두리만이 XOR 연산되어 그려졌다. 당연히 창을 일일이 다시 그리는 게 그 시절 옛날 컴퓨터로는 부담스러운 연산이었기 때문이다.
그러다가 1990년대 말, Windows 95를 넘어 98/2000으로 넘어갈 시기부터 창을 실시간으로 업데이트 하는 옵션이 추가되었고, 후대부터는 그게 당연한 관행이 됐다.

창의 테두리만 이동하고 있는 중에는 운영체제가 응용 프로그램으로 WM_MOVING (또는 WM_SIZING)이라는 메시지를 보냈는데, 이때 그냥 SetWindowPos로 창의 위치를 바꿔 버리면 운영체제의 옵션과 무관하게 '실시간 업데이트'를 시전할 수 있긴 했다.
하긴, 옛날에는 스크롤 막대조차도 스크롤 하는 동안 막대의 테두리만 이동하지 스크롤 대상 화면은 업데이트 되지 않는 경우가 있었다.

도스 시절도 마찬가지. 화면 전체의 업데이트가 키보드 연타 속도를 따라가지 못할 경우를 대비해서 일부 프로그램들은 화면을 표시하는 중에도 키보드 입력을 체크하곤 했다. 그래서 상하 화살표가 눌렸으면 화면을 다 업데이트 하지 않고 다시 스크롤을 했다. 그렇게 하지 않으면 나중에 키보드 버퍼가 꽉 차서 삑삑 소리가 났다.. ^^;;

2. Windows에는 이런 식으로 아기자기한 비공개 API가 더 있다.
캐럿의 깜빡임 주기를 나타내는 메시지 0x118는 흔히 WM_SYSTIMER이라고 표현하는 사람도 있는데, 어쨌든 유명한 유령 메시지이다. 이 메시지의 출현에 의존해서 동작하는 프로그램이 설마 있으려나 모르겠다.

또한,
::SendMessage( ::ImmGetDefaultIMEWnd(hWnd), WM_IME_CONTROL, 5, 0 );
이라고 하면 hWnd가 자신과 동일한 프로세스/스레드이든 불문하고 해당 창에 있는 Windows IME의 한영 상태를 얻어 올 수 있다고 한다. 리턴값이 1이면 한글, 그렇지 않으면 영문이다.
보통은 한영 상태를 얻으려면 해당 윈도우에 소속된 IME context 값을 ImmGetContext로 얻어 와야 하는데, 이거 내 기억이 맞다면 프로세스는 물론이고 스레드 경계도 넘지 못한다. 그런데 ImmGetContext나 ImmGetConversionStatus 호출 없이 저렇게 간단한 메시지로 한영 상태를 query할 수 있다니 신기한 노릇이 아닐 수 없다.

MSDN이고 Windows DDK고 어디든지 WM_IME_CONTROL을 찾아 보면, 거기에 문서화돼 있는 IMC_* 명칭들 중에 5라는 값을 가진 물건은 없다. 하지만 저 기능은 Windows 95 이래로 모든 운영체제에서 사용 가능하다. 게다가 5 대신 2를 주면 한영 상태를 바꿀 수도 있는 듯하다. (lParam에다가 새 값을 설정하고)
이런 것들은 마치 인터넷 지도에서 있는 그대로 표시되지 않고 숲으로 가려진 지대를 보는 듯한 느낌이다.

3.
창을 드래그 해서 옮기는 것이야 제목 표시줄을 단 1픽셀이라도 끌면 창이 바로 반응해서 움직인다.
하지만 일반적으로 텍스트나 아이콘을 '드래그 앤 드롭'을 해서 옮기는 건 그렇게 곧장 반응하지는 않게 돼 있다. 창의 위치만을 옮기는 것과는 달리, 일반적인 드래그 앤 드롭에는 파일을 복사하거나 옮기고 텍스트 문서의 내용을 변경하는 등 더 크리티컬한 결과를 초래하는 동작을 수반할 수도 있기 때문이다.

Windows에서 UI 가이드라인 상으로는, 마우스를 클릭해서 약 2픽셀이던가 그 이상 포인터가 가로 또는 세로로 실제로 움직였을 때.. 혹은 움직이지 않았더라도 클릭 후 1초 가까이 시간이 지났을 때에야 드래그가 시작되게 돼 있다. 드래그 인식을 위한 최소 한계치는 GetSystemMetrics(SM_CXDRAG) / SM_CYDRAG를 통해 얻을 수 있다.

허나, 이걸 일일이 코딩하는 건 드래그를 곧장 인식하는 것보다 굉장히 번거롭고 귀찮은 일이다. 그래서 Windows에는 아예 DragDetect라는 함수가 있다. WM_LBUTTONDOWN이 왔을 때 요 함수를 먼저 호출해서 OK가 오면 그때부터 드래그 모드로 진입하면 된다. DragDetect는 자체적으로 메시지 loop을 돌면서 마우스가 표준 규격 이상만치 움직였는지, 시간이 경과했는지, 사용자가 무슨 key를 눌렀는지 등을 총체적으로 판단해서 드래그 모드로 진입할지 여부를 알려 준다.
이런 함수도 있다는 걸 알면 GUI를 구현할 일이 있을 때 도움이 많이 될 것이다.

Posted by 사무엘

2016/04/09 08:28 2016/04/09 08:28
, ,
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1212

1. 영창 피아노 CF

"온 세상에 울리는 맑고 고운 소리~" (☞ 영창 피아노)
영창 피아노는 어째 군대의 징계 시설과 이름이 같은 바람에 이상한 개드립에 동원되기도 하는 브랜드이지만, 한 30년쯤 전부터 CM송 하나를 기막히게 만들어 퍼뜨린 덕분에 경쟁사인 삼익 피아노에는 없는 독자적인 인지도를 확보하고 있다.
1989~90년대 그 옛날에 소리와 영상으로 온몸으로 '자연의 소리' 컨셉을 CF에다 담으려고 참 애 많이 썼다.

사용자 삽입 이미지

영창 피아노는 한때는 무려 빈 소년 합창단을 초빙해서 CF를 찍기도 했다.
미국 NASA가 상업 우주 여행을 주선하지 않은 것만큼이나(러시아와는 달리. 하지만 앞으로는 NASA도 조만간 할 예정이라 함) 빈 소년 합창단도 원래는 상업 광고 따위에는 협조를 안 하는 고매한 단체이다. 하지만 그 당시 영창에서 피아노를 기증해 주기도 하고 어째 거래가 잘 성사되어서 자국도 아닌 동아시아 메이커 피아노의 CF에 출연하게 됐다.

원조 CF에서 피아노를 치는 소녀는 본인과 비슷한 또래의 '염 선희'라는 아이인데, 프로필과 스펙이 꽤 엄청난 사람이다. 저 나이 때 피아노 콩쿠르에서 입상해서 CF 모델로 뽑혔다. 그리고 아마 집도 꽤 잘사는 듯.
원래 음대에 가서 피아노까지 전공하고 싶었지만 손목 건강 문제 때문에 꿈을 접고, 미국으로 유학을 가서는.. 웬 뜬금없는 컴퓨터공학과를 선택했다.

하지만 대학에 입학하고 타지에서 부모 간섭에서 벗어난 지 몇 달이 채 되지 않아 스타크래프트에 파묻혀서 온게임넷 게임 자키를 하더니 숫제 한국으로 돌아와 여성 프로게이머로 활동했다. 한때는 같은 여자이고 특별히 미녀 게이머라고 이름을 날리던 서 지수와도 대결을 했을 정도였다.
재능도 재능이지만 처음엔 음대를 지망했다가 미국으로 대학 학부 유학(대학원 유학도 아니고)을 가고, 그 뒤에도 진로를 저렇게 뜬금없이 마구 바꾸는 건 집안이 경제적으로 받쳐 주지 않으면 가능하지 않았을 것이라 개인적으로 생각한다.

그런데 손목 부상 때문에 피아노를 접었으면서 왜 피아노 이상으로 손목을 혹사시키는 직업인 프로게어머를 선택했는지는 궁금한 점이다. 외국어도 영어 중국어 스페인어 다 구사하는 엄친딸이라는데 어문 쪽 진로를 선택해도 됐을걸.
그녀는 프로게이머를 오래 하지는 못하고 2년 남짓 있다가 2005년경에 역시 손목 건강 문제 때문에 은퇴했다. 그 뒤로 이 "영창 피아노 CF 출신의 프로게이머"는 온라인 상으로 근황이 전해지는 게 없다. 아무튼 특이한 인물이다.

사용자 삽입 이미지

다시 영창 CF 얘기로 돌아온다.
우리가 오해하지 말아야 할 것은, 저 CF에서 염 선희는 피아노를 치는 컨셉 연기만 했다는 점이다. 노래까지 저 애 목소리인 건 물론 아니며, 노래를 부르는 것처럼 보이는 장면은 립싱크라는 걸 화면을 조금만 보면 알 수 있다. 좀 앳된 느낌이 있지만 저 목소리는 진짜 아동이 아니라 성우나 전문 가수의 목소리이다.

영창 CF 노래를 부른 사람은 '신 해옥' 씨라고 수백, 수천 곡에 달하는 CM송과 만화 주제가를 부른 경력이 있는 '얼굴 없는’ 가수이다.
얼굴 없는 가수라 하니까 딱 그 직업을 배경으로 다루는 <미녀는 괴로워> 영화라든가 풀빵닷컴 박분자도 생각나네.
이분의 대표작으로 내 기억에 남아 있는 건 1990년대 MBC <그림 명작동화> (꿈길에 들었던 꿈길에 놀았던..)의 주제가이다. 영창 피아노 노래와는 달리 저건 꽤 가요풍으로 불렀다.

2. 사이버 가수

아담, 류시아, 사이다. 지금으로부터 무려 18~20년 가까이 전, 본인이 중딩~고딩이던 시절에 우리나라에서 만들었던 '사이버 아이돌' 가수 캐릭터이다. (☞ 링크 1, 링크 2)

사용자 삽입 이미지

일본에서 세계 최초의 사이버 가수라는 '다테 쿄코'를 데뷔시킨 것에 착안해서, 그리고 또 그 당시에 <툼 레이더> 게임과 함께 주인공 '라라 크로프트'가 전세계에서 초대박을 친 것에 영향을 받아서 국내에서도 사이버 캐릭터를 만들려는 시도가 있었다. 1990년대 후반엔 그게 트렌드였다.

<세상엔 없는 사람> 노래와 뮤직비디오를 내가 어째 이렇게 생생하게 기억하고 있나 옛날 기억을 더 추적해 보니..
아, 그 시절에 정품을 구입했던 거원 제트오디오 CD에 아담의 탄생, 주제곡 등 주요 뮤비 동영상 파일들이 들어있었다. 난 그걸 여러 번 감상했었다.

'아담'을 개발한 '아담소프트'는 3차원 CG 분야에서는 나름 잔뼈 굵고 기술 있는 IT기업이었다. 창업자가 카이스트 출신이었던가..?
당시에는 <마이크로소프트웨어>와 더불어 <프로그램세계>라는 프로그래밍 관련 잡지가 발간되고 있었는데, 본인은 거기서 아담소프트 소속의 엔지니어가 칼럼을 기고한 것을 본 적도 있다. 글쓴이의 이메일이 도메인이 adamsoft.com이었다.

아담 말고 여성인 류시아와 사이다는 제각기 다른 회사에서 개발한 모델이다. 류시아는 루시퍼+메시야의 합성어를 의도하기도 했다니 거 참..;;
왜 한 회사에서 여러 명을 만든 게 아니냐 하면, 일개 벤처/스타트업 기업으로서 모델 하나만 감당하기에도 자본과 기술이 벅찼기 때문이라고 생각하면 될 듯하다.

사이버 가수는 처음 등장했을 때는 워낙 신기하니까 언론으로부터 주목도 많이 받았다. 하지만 여러가지 이유로 인해 이게 오래 흥행하지는 못했다.
일단 CG 기술이 실사를 따라가기에 한계가 있었다. 그리고 캐릭터가 그렇게 충분히 잘생기거나 예쁘지 않았다.
이런 와중에 실존 인물이 아닌 가상 캐릭터가 무슨 영화나 게임 캐릭터처럼 액션도 없이 예능만으로 팬심을 사는 건 한계가 있었다.

오늘날까지 살아 있는 그나마 성공한 사이버 캐릭터인 라라 크로프트의 경우도, 말총머리 + 핫팬츠 + 쌍권총 같은 외형 특징을 본따서 홍보대사(?)를 모델 겸 체조 선수 출신의 실존 인물로 몇 기째 뽑아 왔을 정도이다. 영화도 당연히 안젤리나 졸리 같은 걸출한 실존 인물이 연기했고. (그나마도 리부트작이 나온 뒤부터는 기존 컨셉을 싹 갈아엎었다.) 어쨌든 오늘날까지도 어떤 형태로든 실존 인물이 없어서는 안 된다는 거다.

게다가, 1990년대 말 그 시절엔 CG를 만드는 것도 생각보다 굉장히 어려운 일었다고 한다. 시간과 비용이 억소리나게, 그냥 유명 실존 가수를 부르는 것 만만찮게 많이 들었다. 그냥 모션 캡처만 간단히 하면 장땡이 아니었던 듯하다.
어디 쇼 프로에 가상으로 출연시키려 해도 로봇 같은 엉성하고 경직된 모션을 보일 수는 없으니 1시간 분량의 동작과 입술 움직임을 아주 정교하게 만들어야 하는데 가히 억대의 돈이 깨졌다고 한다. 하지만 그 사이버 연예인이 음반 판매나 CF 촬영을 통해 그 이상으로 끊임없이 돈을 벌어 줄 능력이 있었느냐? 물론 그렇지 못했다.

아담소프트는 현란한 3D 그래픽 기술로 차라리 온라인 게임을 만드는 게 나았을지도 몰랐다. 리니지야말로 그 시절에 만들어진 게임인데 아직까지도 '린저씨'가 있을 정도이며, 개발사인 NC소프트 역시 건재하니까 말이다.

이 사이버 가수의 노래를 실제로 불러 주는 사람은.. 설마 보이스웨어-_-를 쓰는 건 아니고 역시나 얼굴 없는 가수를 고용한다. 사이버 가수의 신비주의를 책임지는 중요한 사람인 만큼 계약 기간 동안 자기 정체를 절~~~~~대로 대외적으로 까발려서는 안 된다고 단단히 약속을 한다.
하지만 사이버 가수의 개발사들이 이미 10몇 년 전에 망하고 다~ 지나간 일이 되니, 이제는 그 가수가 당당히 정체를 드러내는 지경까지 됐다. 다 지나고 보니 허무하기도 하다.

어디에서 유래되었는지 출처는 모르겠다만, "Video killed the radio star"라는 문구가 있다. 물론 자동차 운전사 같은 업종도 있으니 라디오가 싹 망하고 비디오에 몽땅 흡수되지는 않을 것이다. 그래도 어지간한 매체에서 비주얼을 이길 장사는 별로 없으며, 영화/드라마 배우와는 달리 성우나 연극 배우는 대우가 한 등급 낮은 게 현실이다. (재연 배우는 얼굴도 있고 엑스트라 단역도 아님에도 불구하고 처지가 좀 안습하다만..)

가수 업계에서는 CM 송, 만화 주제가 같은 걸 부르는 '얼굴 없는 가수'가 바로 그런 2류 등급에 속하는 것 같다. 그 사람들이 사회에 기여하는 바로 결코 작지 않지만 아무래도 대우가 인기 걸그룹에 비할 바는 못 된다.
그나저나 요즘은 걸그룹 트렌드에 밀려서 옛날과는 달리 여성 솔로조차도 찾기가 쉽지 않은 듯하다. 그 와중에 웬 트로트 <백세인생>(못 간다고 전해라...)의 갑작스러운 히트와 대박은 <참아 주세요>(뱀이다~ 개구리다~)에 이어 참 신선하고 이색적으로 느껴진다.;; 이런 식으로 중· 노년이 돼서야 인생에 리즈 시절이 뒤늦게 시작되는 사람도 있는 모양이다.

Posted by 사무엘

2016/04/06 08:33 2016/04/06 08:33
, , , , ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1211

1. 초음속 자동차

예전에 한번 하이브리드 교통수단에 대해 논하면서 초음속 자동차 얘기를 꺼낸 적이 있었다. 저 바닥도 이제 시속 1000km를 훌쩍 넘어 서양권의 상징인 시속 1000마일을 추구하는 경지에 가 있다. (☞ 전투기 엔진에 티타늄 바퀴.. 초음속車, 시속 1609km 돌파하라)

시속 200~400 정도까지를 내는 통상적인 스포츠카 슈퍼카도 아니고 초음속 자동차 정도까지 되면 실용적인 관점에서야 당연히 돈지랄의 극치일 뿐일 것이다.
세계에서 가장 큰 소수(프라임)를 발견한다거나 원주율을 몇백억 자리까지 더 구한다거나, 액체 질소까지 동원한 극한의 오버클럭질로 컴터 속도를 8GHz가 넘게 끌어올린다거나, 멀쩡한 코드를 마개조해서 난잡한 코드 경연대회(IOCCC) 출품 작품을 만드는 것처럼.. 그냥 그 분야의 지적 호기심과 기술의 극한을 추구하는 연구라는 것에 의의를 둬야 한다.

차는 적당하게 빠르게 달려서 맞바람을 맞으면 일반적으로는 아주 좋다.
사람만 시원한 게 아니라 엔진도 라디에이터를 통해 그렇게 바람을 쐬어 줘야만 냉각이 될 수 있다. 기본적으로는 냉각수를 사용하는 수랭식이지만, 그 냉각수를 식히는 데는 이런 공랭식 메커니즘이 기여하는 게 여전히 크기 때문이다.
아무리 추운 겨울이라 해도 자동차가 엔진 공회전을 너무 오래 하고 있으면 위험한 이유는.. 그런 맞바람에 의한 라디에이터 냉각 효과가 없는 상태에서 엔진이 계속 돌아가며 열을 받기 때문이다. 단순히 연료 절약이나 배기가스 환경 차원의 문제가 아닌 것이다.

그런데 땅에서 차량이 상상을 초월하게 얼마나 빠르게 움직여야 도대체 '공기와의 마찰열'을 걱정해야 할 지경이 되고, 심지어 타이어가 구름 마찰력조차 감당을 못 해서 타 버리는 처지가 되는지 나로서는 실감이 안 간다.
콩코드 정도로 날면 성층권에서도 공기와의 접촉 부분이 섭씨 몇백 도대로 올라간다고 그러고, 무슨 재돌입하는 우주왕복선쯤 되면 공기와의 마찰열이 심각한 수준이 된다고는 하는데, 어쨌든 어느 것이든 감이 안 잡히긴 마찬가지이다.

저런 초음속 차량은 엄청난 가감속 거리 때문에 자동차 회사 연구소 안의 도로에서도 테스트를 할 수 없으며, 미국이나 호주 같은 넓은 대륙 안에 있는 사막에서 최하 30km에 가까운 직선 코스를 만들어야 한다. 하긴, 소닉 붐 소음 문제도 있으니 비행기는 바다 위에서만 초음속 비행이 가능할 것이고 자동차의 초음속 주행 가능 장소는 먼 사막 아니면 답이 없겠다.
아니면 아예 지하로 내려가든가. 육상 교통수단이 일말의 실용성을 유지하면서 저렇게 초음속으로 달리려면 진공 튜브 속을 달리는 궤도 기반 대중 교통수단으로 가야 하지 싶다.

오로지 찰나의 순간이나마 최고 속도만을 최대화하기 위해 만들어진 초음속 자동차는 피스톤 회전 엔진이 아니라 제트/로켓 엔진 기반이며, 정지 상태에서 대략 55초 정도면 최고 시속 1609km에 도달한다고 한다. 같이 참고할 만한 비교 대상은 다음과 같다.

  • 나로 호는 발사 54초 만에 음속을 넘어섰다. 물론 얘는 수평 주행이 아니라 중력을 정면으로 거스른 수직 상승부터 시작한다는 게 감안할 점이다.
  • 한편, 프랑스의 슈퍼카 '부가티 베이론'은 1000마력짜리 엔진으로 정지 상태에서 최고 시속 400km까지 55초가 걸린다고 한다.

부가티 베이론은 시속 400이 55초니까 4로 나눠서 제로백은 13초냐 하면.. 그건 당연히 전혀 아니다.
얘는 제로백은 무슨 오토바이가 튀어나가듯이 단 2.9초 만에 달성된다. 200km/h가 7.3초, 300km/h가 16.7초여서 속도가 증가할수록 추가적인 가속은 기하급수적으로 느려지고 힘들어진다. 공기 저항과 엔진의 역학적 한계 때문에 경제 속도와는 갈수록 멀어지는 셈이다.

준중형급의 일반 양산형 승용차는 연비 따윈 안드로메다로 보내고 젖먹던 힘까지 다해서 액셀러레이터를 끝까지 밟아야 제로백이 10초대에 나올까 말까다. 그런데 작용/반작용 비행기 엔진도 아니고 피스톤 왕복 엔진만으로 그 커다란 차체가 3초 이내에 시속 100에 도달하는 건 가히 사기적인 성능이 아닐 수 없다. 아예 비행기 엔진을 표방하는 초음속 자동차라면 운전자는 처음엔 거의 누운 자세로 있어야 하며, 출발인지 발사인지 직후엔 무슨 전투기 급가동 때처럼 몇 G의 가속도에 피가 한쪽으로 쏠리는 걸 견디야 한다.

부가티 베이론의 경우, 시속 400km 상태로 30분을 달리면 믿거나 말거나 타이어가 홀랑 타 버린다고 한다. 고속 주행에 최적화돼서 비행기 랜딩기어급으로 무진장 비싼 전용 타이어를 써도 그런다. 하지만 시속 400km 상태로 15분을 달리면 연료가 먼저 바닥나 버리기 때문에 타이어가 타는 걸 실제로 볼 일은 없다고 한다.;;;

초음속 자동차야 고무 타이어로는 아예 택도 없고, 티타늄이라고 100% 금속 재질인 타이어를 쓴다고 한다.
시속 500~600km를 넘어서는 시점부터는 고무 타이어가 마찰열을 버티지를 못하는데, 사실은 쇠바퀴로 쇠 레일 위를 달리는 철도 차량도 비슷한 속도 영역에서 비슷한 원천적인 한계가 존재한다. 자동차와는 달리 마찰 때문에 바퀴가 타 버리는 걱정은 할 필요가 없지만, 그 반대가 문제다. 마찰이 너무 작은지라 바퀴가 레일 위를 미끄러지고 혼자 헛돌아 버리기 때문에, 더 가속을 할 수 없다.

그러니 궤도 교통수단이 그 이상 속도를 내는 건 아예 지상에서 살짝 뜨는 자기 부상 열차 쪽을 생각하게 된다. 하지만 그건 철저히 통제를 받으면서 지상에서 정~말 조금만 미묘하게 뜨는 걸 말한다.
도로를 달리는 초음속 자동차는 공기 저항을 최소화하는 한편으로, 고속 주행 중에 차체가 떠 버리지 않게 하는 게 매우 중요하다. 비행기처럼 아예 이륙을 해서는 안 된다는 뜻이다. 뜨면 조향이 안 되고 차를 통제할 수가 없어지기 때문이다.

끝으로, 초음속 자동차는 제동도 여느 자동차처럼 디스크/드럼 방식 브레이크로 하는 게 아니다. 초음속을 달성한 후엔 최대한 어서 감속하고 안전하게 정지해야만 테스트 도로에서 오버런으로 인한 대형 사고를 예방할 수 있다. 그래서 후방으로 낙하산까지 펴면서 별 짓을 다 해야 한다. 여러 모로 통상적인 자동차의 개발 방법론이 통하지 않으며, 공중에 뜨지만 않을 뿐 비행기나 다름없다는 걸 알 수 있다.

왕복 엔진에 고무 타이어를 쓰는 자동차가 그냥 몇백 m 깊이까지만 들어갔다가 나오는 일반적인 잠수함이라면, 초음속 자동차는 경제성을 희생하고라도 1만 미터 아래의 해구 밑바닥까지 내려갈 수 있게.. 작고 둥글고 단단하게 아주 극단적으로 특수하게 설계된 잠수정에 해당한다고 볼 수 있겠다.
그런 잠수정은 내려갈 때는 추를 달고 내려갔다가 뜰 때는 그걸 버리고 와야 한다. 그리고 너무 강한 압력을 버텨야 하는 관계로 유리창도 못 만든다. 초음속 자동차가 최고 속도를 찍었다가 금세 낙하산 펴고 허겁지겁 감속을 해야 하듯, 저것도 정말로 내려갔다가 허겁지겁 올라오는 것 자체에만 의미가 있다.

2. 비행기의 실속

그럼 다음으로는 진짜 비행기 얘기이다.
지난 2013년에는 아프가니스탄에서 공군 기지를 출발한 보잉 747 기반의 미국 화물기가 추락 사고가 난 적이 있었다.
비행기는 이륙하여 잘 상승하나 싶었는데 얼마 못 가 실속에 빠져 공중에 멍하니 있더니만 그대로 땅으로 곤두박질쳐 버렸다. 추락 지점엔 대폭발이 발생했고, 승무원 7인은 안타깝지만 전원 끔살을 면치 못했다. 이 추락 과정은 주변을 주행하던 자동차의 블랙박스에 고스란히 녹화되어 기록으로 남았다.

이 비행기에 도대체 무슨 문제가 발생할 것일까?
녹화 영상을 본 전문가들은 비행기가 아마 테러 공격을 의식해서(아프가니스탄임) 고각으로 무리하게 급상승을 시도한 것 같다고 분석했다. 이것 자체는 블랙박스 영상만 보고 판단 가능한 사항이다.

그런데 이 비행기에는 장갑차가 몇 대 적재돼 있었서 굉장히 무거운 상태이기도 했다고 한다.
인제 와서는 확인을 할 방법이 없고 동의하지 않는 사람도 있지만, 급상승 중에 장갑차를 고정하던 장치가 풀려서 화물들이 와르르 구르고 무게중심이 엉망이 된 게 아닐까 하는 추측도 있다. 이 정도로 비정상적인 상황이 아니고서야 비행기가 저렇게 어처구니없게 땅으로 떨어질 수는 없다는 것이다.

이거 무슨 세월호 침몰과 비슷한 과정인 것 같았다.
급상승은 배로 치면 급선회, 급변침이다. 세월호는 그걸 시도하다가 짐들이 와장창 굴러서 한데 쏠렸으며, 이 때문에 배 전체가 기울고 급기야 벌러덩 나자빠져 침몰해 버렸다.

저 화물기도 급상승으로 인해 화물 쏠림 → 기우뚱 → 실속 → 추락이라면 정말 세월호와 비슷한 방식으로 최후를 맞이한 것이다. 기계 자체의 결함이나 외부 피격이 아니라 스스로 잘못된 조작으로 인해 파멸을 맞이했다는 점에서는 말이다.

비행기와 배는 땅 위를 굴러가는 게 아니라 유체 위 또는 속을 주행하는 물건이니 무게 배분과 중심 잡기에 특별히 신경을 써야 한다는 걸 알 수 있었다. 특히 고정익 비행기는 한번 자세가 잘못돼서 양력을 잃었으면 무슨 자동차마냥 액셀을 밟아서 엔진 출력만 낸다고 해서 바로 다시 뜰 수 있는 게 아니다. 충분히 하강하면서 공기를 타고 속도를 얻어야 다시 뜰 수 있다. 그럴 만한 충분한 고도가 없으면 그냥 추락.;;
그러니 비행이 참 어려운 것 같다. 뭐, 헬리콥터는 고정익은 아니지만 고정익보다 더 불안하고 위험하면 위험했지 사정이 나은 건 절대 아닐 테고.

3. 우주로 가는 방법

물체를 단순히 양력을 이용해서 잠깐 공중에 띄우는 게 아니라, 아예 지구 대기권 밖의 우주로 보내려면 로켓 말고는 사실 답이 없다. 자동차와는 비교가 안 되는 엄청난 양의 연료를 싣고 그걸 순식간에 다 태워 버려야만 그런 힘이 나올 수 있다.
다만, 비행기 이전에 비행선이라는 게 있었듯이 옛날에는 로켓이 아닌 다른 방법으로 우주에 가는 것도 특히 쥘 베른의 SF 소설 같은 데서 종종 소개되곤 했다. 하긴 그때는 화성의 외계인이 지구로 쳐들어 온다는 <우주 전쟁>이라는 소설도 있었고, 금성 정도면 극지방에 충분히 사람이 건너가서 살 만하겠다고 상상하기도 했으니 말이다.

(1) 대포: 초고성능 초대형 대포를 쏴서 물체를 처음부터 지구 탈출 속도를 능가하는 가속도를 줘서 날려 보낸다. 이 대포야말로 둠 코믹에 나오는 BFG(X나게 큰 총포)여야 할 것이다. 제랄드 불 박사가 이 방식의 끝판왕인 space gun이라는 걸 발명해서 부분적으로 성공도 했다.

우주 대포는 복잡한 로켓 엔진이 필요하지 않으며 방대한 양의 연료 걱정을 할 필요가 없다는 게 큰 매력이다. 실제로 우주로 나가는 로켓들은 부피와 무게에서 십중팔구가 연료가 차지하고 있기 때문이다. 하지만 발사 직후에 안에 있는 모든 것을 짜부러뜨리는 살인적인 G는 뭐 어찌할 수가 없다. 그러니 인간 같은 생명체는 원천적으로 탑승 불가이며, 무생물이라 해도 실을 수 있는 물체의 크기와 무게는 어마어마한 제한을 받게 된다.

(2) 엘리베이터: 아예 저 높은 하늘 끝 우주까지 바벨 탑처럼 근성으로 우주 사다리 + 엘리베이터를 만들자는 발상이다. 하지만 잘 알다시피 그런 구조물을 만들기가 대단히 어려우며, 건설 중 또는 운용 중에 사고가 났을 때의 위험성이 너무 치명적이다. 아울러 저 위험성에 비해서는 작은 단점이겠지만, 우주로 나가는 속도가 너무 느리다는 것도 문제가 된다.

인간이 하늘을 날아서 우주로 나간다는 건 지금으로부터 150년쯤 전에는 여전히 실현 불가능한 꿈의 영역이라고 여겨졌다. 당대의 쟁쟁한 물리학자 석학이 "공기보다 밀도가 높은 기계 기반의 비행체란 존재 불가능하다"라고 대놓고 그랬을 정도이다.
그러니 어차피 불가능한 일인데 이와 관련해서 그 무슨 현실성 없고 황당한 상상인들 못 했겠는가?

그 시절에는 현실성으로 따지자면 로켓이나 우주 대포나 우주 엘리베이터나 다 그 나물에 그 밥으로, 동등한 SF의 영역에 있었다. 20세기 초까지만 해도, 오늘날 가히 우주 기술의 근간으로 정착한 액체 로켓 기술(by 로버트 고다드)마저도 진가를 인정받지 못하고 병맛 취급받았다는 걸 기억할 필요가 있다. 그만치 답이 없던 상황이었다.
하지만 기술이 발달하면서 최종 승자는 로켓으로 굳어졌다. 엘리베이터 같은 시설물이 없어도 되고 그것보다 상승 속도가 빠르고, 그렇다고 우주 대포만치 강한 G를 야기하지도 않으려면 결국 지속적으로 상승하는 힘을 발사체가 직접 갖추고 있어야 하기 때문이다.

Posted by 사무엘

2016/04/03 08:39 2016/04/03 08:39
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1210

육상 교통수단에는 도로나 철도 같은 길이 있다. 열차는 레일을 벗어나면 끝장이고, 자동차도 열차보다야 자유도가 높지만 평평한 길이 없는 곳은 못 다닌다.
그에 반해 비행기나 선박은 광활한 창공 아니면 바다 한가운데를 다니니, 딱히 길이라는 개념이 있는 것 같지는 않다. 하지만 꼭 그렇지는 않다. 얘들도 눈에 당장 보이지 않고 민간 지도에 표시돼 있지만 않을 뿐, 가상의 경로를 설정하고 항상 정해진 길만 다닌다.

배야 물 위만 다닐 수 있지만 비행기는 무엇이든 위로 타넘을 수 있기 때문에 이론적으로 움직임의 자유도가 가장 높다. 그러나 자동차만 해도 소유와 운전을 위해서 각종 등록에, 보험에 면허 등, 만약의 사태에 대비해 까다로운 규제와 제약들이 존재하듯.. 비행기도 마찬가지이다. 일정 중량 이상의 비행체가 일정 고도 이상을 비행하기 위해서는 미리 근처의 항공 관제 시설 내지 군부대에 비행 스케줄과 경로를 신고해서 허가를 받아야 한다. 그리고 허가받은 대로만 다녀야 한다. 이걸 어기면 생각보다 꽤 무거운 처벌을 받는다.

우리나라 영공에는 사전 신고만 하면 트래픽이 허용하는 한 그럭저럭 OK가 나오는 구역이 있고, 반대로 그렇지 않은 '비행 제한/금지 구역'도 있다. 금지 구역은 국방부 장관 차원에서의 아주 예외적인 승인이 나지 않는 한, 싸제 비행기가 절대로 얼씬거릴 수 없는 곳이다. 이거 뭐, 하늘 위도 사실 온통 민통선 지대나 마찬가지라고 생각하는 게 속 편하다.

물론 인간은 새가 아니며 자기 힘만으로 하늘을 나는 것 자체가 불가능하다 보니, 제약을 하든 말든 이쪽 업계의 사정은 공항이나 군 관계자가 아니면 민간인이 신경을 쓸 일 자체가 없었다. 그러나 요즘 들어서 이런 규정이 갑자기 부각되고 있는 이유는.. 일명 '드론'이라고 불리는 장난감 무인기를 취미로 날리는 사람들이 늘어났기 때문이다. '드론'이라고 하면 한때는 저그의 일꾼 말벌 유닛이 1순위로 쓰였지만 이제는 무인기라는 뜻으로 더 많이 쓰이는 듯.

옛날에는 하늘로 뭔가 장난감을 띄우고 싶은 사람은 연을 날렸다. 혹은 자기가 직접 하늘로 뜨고 싶으면 기구를 띄우거나 멀리 언덕으로 가서 글라이더 정도는 탔던 것 같다. 그 반면, 자체 동력을 갖춘 초소형 비행체를 띄우는 건 확실히 아무나 할 수 있는 일이 아닌 것 같다. 격추하기 어려울 정도로 작으면서 그래도 스스로 자세와 방향 조절이 가능할 정도로 동력도 갖추고 있기 때문에 불순한 용도로 얼마든지 활용이 가능하다. (도촬이나 폭탄 투하 같은..)

이런 특성을 이용해 요즘은 북한조차도 심심하면 무인기를 날려서 남조선을 정찰하는 게 심심찮게 보도된다. 옛날의 땅굴과 무장공비에 이어 트렌드가 바뀌었다. 그래서 무인기 비행은 결국 안보상의 이유로 인해, 무조건 전면 금지까지는 아니어도 규제· 제약이 크게 걸릴 수밖에 없는 행위가 됐다. 이런 점에서 볼 때 비행기 관련 취미는 무선 전파나 총기 관련 취미하고도 유사성이 있어 보인다(한쪽은 교통, 한쪽은 통신. 한편, 총기는.. 더 말이 필요하지 않고.).

국내의 비행 금지 구역들은 내부적으로 이름 내지 식별자가 부여되어 있다고 한다. 일단 휴전선 근처는 동· 서부를 막론하고 0순위로 비행 금지이며, 평지의 민통선보다도 영역이 더 넓다.
서울 강북에는 청와대로부터 반경 3.8km까지가 P-73A이라고 명명된 금지 구역이고, 거기에서 추가로 반경 4.6km까지가 P-73B라는 완충 지대이다. 여기는 드론은 물론이고 민항기조차도 못 다닌다. 전쟁이라도 나지 않는 한 하늘 위로 비행기가 다니는 걸 구경할 일은 없다는 뜻이다.

사용자 삽입 이미지

항덕이라면 친숙할 그림이 드디어 나왔다.
P-73을 벗어나서 강북에 노원· 중랑, 강남에 영등포· 강남· 서초구는 금지보다는 수위가 좀 덜한 R-75 '제한 구역'이다. 비행을 위해서는 하루 전에 신고해서 허가를 받아야 한다. 그리고 강동· 송파 정도의 외곽은 돼야 서울에서 그럭저럭 드론을 띄울 수 있다.
용산구는 강북이고 P-73B의 반경에 포함되는데도 저기만 예외적으로 금지가 아닌 제한 등급인 이유는.. 미군 기지인 관계로 국군의 통제를 덜 받기 때문이지 싶다.

지난 2013년엔 김포 공항을 출발한 한 헬리콥터가 안개 때문에 서울 강남 삼성동에서 아파트와 충돌하여 추락한 사고가 났었다. 이때 헬리콥터는 마치 한강 수상 택시처럼 한강 위로만 다니면서 서울을 횡단했다. 규정상 거기로만 다녀야 하기 때문이다. 그래도 김포 공항에서 잠실까지 서울 동서를 횡단하는 예상 소요 시간은 10분이 채 되지 않았다. 자동차밖에 안 타는 땅개의 입장에서는 가히 시공간 워프 수준이긴 했다. 그냥 지하철 두세 정거장 지나듯이 강서구에서 송파구로 슈욱~

청와대나 인구 밀집 지대 말고 드론을 띄울 수 없는 곳은 전국의 민간 및 군 공항의 반경 9.3km 이내이다. 기존 비행기들과 충돌할 위험이 있기 때문이다.
그에 반해 구로구· 금천구 같은 서울 남서쪽 외곽은 경부선 철도가 지나며 하늘로도 R-75에도 속하지 않는 관계로 김포와 인천 공항을 드나드는 민항기의 항로이다. 그렇기 때문에 열차뿐만 아니라 비행기가 수시로 드나드는 걸 볼 수 있다.
내 기억으로는 용인 고기리 유원지에서도 하늘에 비행기를 지나다녔으며, 관악산 중턱의 서울대 공대 인근에서도 비행기가 보였다. IT 기업들이 입주해 있는 판교 테크노 밸리에는 민항기는 없고 군 수송기가 수시로 날아다닌다.

고양시에 있는 한국 항공 대학교는 수도권이라는 위치는 괜찮지만 R-75를 포함한 온갖 제약들 때문에 정작 본캠에서는 비행 실습을 제대로 하기 어렵다. 조금만 삐끗하면 민항기 항로 침범에다 청와대 근처, 군부대 근처, 휴전선 근처 등의 태클이 걸리기 때문이다. 실수로 거기를 침범했다간 곧장 경고 방송에 갈굼과 욕이 쏟아진다. 그래서 비행 실습장은 멀긴 해도 공간 제약이 없는 지방으로(울진이라든가..) 옮겼다.

자, 항공과 직접적인 관계가 없으면서 국내에서 특별히 비행이 추가로 금지된 곳은.. 바로 원자력 관련 시설 주변이다. 전국의 원자력 발전소들 인근은 엄격한 비행 금지 구역이다.

사용자 삽입 이미지

수도권을 벗어나 전국 단위의 비행 금지 구역 지도를 보면 대전 일대가 수도권 이상으로 꽤 넓게 비행 금지 구역인 것을 알 수 있다. 그것도 중심지가 세종시도 아니고 정부 청사도 아니고 군 본부가 있는 계룡시도 아니고 대전 북부인데...
그 주인공은 바로 '한국 원자력 연구원'이다. 건물 한두 채가 아니라 대학 캠퍼스 급의 거대한 단지이며 고속도로 나들목과도 가까이 있음에도 불구하고, 민간 지도에는 전혀 표시되어 있지 않은 최고급 보안 시설이다. 똑같이 민간 지도에 안 나와 있지만 국방 과학 연구소, 국정원 등에 비해서도 굉장히 인지도가 없는 게 신기할 지경이다.

얘 때문에 대전에서는 하늘에 비행기를 볼 일이 없다고 해도 과언이 아니다. 승객의 입장에서도 서울에서 부산(혹은 그 반대)을 비행기로 가면 육로로 갈 때와는 달리 대전을 구경할 일이 없다. 참 신기하지 않은가? 사실, 서울에서 부산의 직선 경로 자체도 대전이 아니라 충북 중앙을 관통하는 과거의 영남대로가 더 지름길이기도 하고 말이다.

지방으로 나가서 이런 거 저런 거 다 제낀 명시적인 비행 허용 구간에서는 별다른 절차 없이 개인이 싸제 무인기를 띄울 수 있다. 단, 이것도 고도 150m 이내 한정이기 때문에 건물로 치면 4, 50층 정도 높이까지만 가능하다. 더 높이 띄우려면 여전히 허가를 받아야 함. 그리고 시간대 제약도 있는지라 해가 떨어진 뒤에는 비행을 할 수 없다. 아까도 말했지만 영락없이 민통선 출입 제약과 비슷하게 느껴진다.

비행체들은 땅으로 뭘 떨어뜨린다거나 인구 밀집 지역으로 추락하는 초대형 민폐를 끼치지 말아야 한다. 그리고 무인기의 경우, 원칙적으로는 원격 조종자가 자기가 조종하는 비행체를 눈으로 식별할 수 있는 거리까지만 비행체를 보낼 수 있다. 땅에 있는 사람들은 밤에 날아다니는 헬리콥터 같은 비행기를 향해 장난으로라도 레이저 포인터를 쏘지 말아야 하듯(조종사의 시력과 비행기의 안전을 크게 해치는 범죄임), 싸제 무인기를 띄우는 사람에게도 지켜야 할 것이 있는 법이다.

자동차야 반드시 등록시키고 번호판을 달게 해서 통제한다지만, 비행체들은 일일이 그렇게 할 수도 없으니 더 강력한 규제가 불가피한 것이다. 꼭 무인기까지는 아니더라도 어디 여행 갈 일이 있으면 여기는 비행기 항로 근처인지 아닌지를 본인은 더 눈여겨보게 될 것 같다.

* 비행 관련 여담:

1. 과거 항공의 선구자들은 참 엄청난 자유를 개척했겠다는 생각이 든다. 찰스 린드버그 같은 사람은 기술적으로는 참 미약하고 허접했겠지만, 그래도 지금 같은 대공 레이더, 비행 신고와 허가, 영공 통과료 같은 복잡한 물건이나 제도가 없던 시절에 자작 비행기로 대서양을 건너서 다른 나라로 가는 데 성공했으니 말이다. 겨우 KTX 비슷한 속도밖에 못 내는 프로펠러기로 30몇 시간을 잠을 안 자고 혼자 비행기를 조종했댄다. 그리고 파리에 도착해서 환영 인파들에게 최소한의 인사만 한 뒤 곧장 호텔로 돌아가서 잠부터 잠..;; 프랑스에서 미국으로 돌아올 때는 군함을 타고 왔다.

2. 영어로 fly는 '날다' 이상으로 날아서 '이동하다'의 뜻이 더 많이 담긴 단어 같다. 그래서 fly to New York 같은 말도 쓰이고 비행기 운항편을 일컬을 때도 저 단어 자체를 명사화해서 flight라고 부른다.
무하마드 알리의 명대사 "나비처럼 날아가서 벌처럼 쏜다"의 영어 동사는 fly가 아니라 의외로 float이다. 굳이 물에만 뜨는 게 아니라 공중에 붕 뜬다는 뜻.
본인은 개인적으로 저 문장을 FPS Quake의 매뉴얼에서 처음 봤다. Scrag라는 몬스터에 대해서 무하마드 알리의 말을 인용해서 설명해 놓았는데 저게 딱 정확한 묘사이다. 공중에 둥둥 떠 있기만 한 놈이므로.

Posted by 사무엘

2016/03/31 08:30 2016/03/31 08:30
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1209

성인들 중에는 아동용 위인전을 안 좋아하는 경우가 많다. 어렸을 때 위인전을 읽으면서 어떤 인물을 왕창 좋아하고 존경하게 됐는데, 나중엔 그 사람에 대해 감춰져 있던 흑역사도 알게 되고 위인전들이 그 인물의 긍정적인 면만 부각시키면서 미화와 왜곡을 일삼았다는 것을 알게 되면서, 환상이 깨지고 일종의 동심 파괴를 경험했기 때문이 아닐까 한다.

발명왕 에디슨의 경우 경쟁자인 테슬라와 얽힌 아주 지저분한 흑역사가 존재하며, 나폴레옹도 단순히 전쟁만 벌인 게 아니라 부하의 아내를 비열하게 빼앗은 것과 타 원주민 학살이라는 흑역사가 있다. 십일조 잘 바친 신앙인(?) 기업가로 칭송받는 록펠러는? 더 말할 필요도 없다. 일본의 생리학자 노구치 히데요는 자국의 지폐에 등재될 정도로 유명세를 탔지만 사실 업적으로나 인간성으로나 위인 레벨은 절대 아니라는 게 이미 다 까발려져 있다.

사실은 심지어 세종대왕, 이 순신 같은 (복음을 거부하는 핑계로 즐겨 언급되는) 언터쳐블급인 인물이라 해도 업적과는 별개로 다 부족한 죄인인 건 변함없으며, 까보면 다 흑역사가 나올 것이다. 성경의 하나님의 입장에서는 누가 죄인으로 판명되고 지옥에 가는 게 어떤 경우건 아무 이유 없이 어거지로 이뤄지는 일은 아닐 것이다.

그리고 성경은 어떤 인물을 다루면서 일방적인 미화나 왜곡을 하지 않고 인간적인 심정으로는 도저히 기록하고 싶지 않았을 것 같은 내용도 너무 적나라하게 써 놨다. 그래서 성경은 정황상 도저히 인간의 저작물일 수가 없다는 간접적인 증거가 이런 식으로 성립할 정도이다.

다윗의 흑역사, 모세의 흑역사.. 그리고 성경 중에서 가장 먼저 기록되었다는 욥기만 해도 그렇다. 흔한 동화라면 권선징악 구도를 설정한다 하더라도 나쁜 부자, 구두쇠 악당 부자, 나쁜 계모를 조지는 이야기가 주류일 텐데 이건.. 부자인데 아주 착한 부자이고 의인이 왜 아무 까닭 없이 고난을 받는가 하는 너무 초월적으로 심오한 이야기가 가득하다. 그렇다고 욥이 이 상황을 대처하는 방식이 무조건 모범적이고 바람직하기만 한 것도 아니었으며, 욥 역시 극한의 상황에서 너무 답답한 나머지 결국 성질 부리고 인간성의 한계를 보이기도 했다.

뭐.. 다시 본론으로 돌아오면,
사람을 모 종교의 성인처럼 너무 떠받들고 칭송하는 것도 잘못됐지만, 그렇다고 자기도 그 상황에서는 그 이상으로 뻘짓 했을 거면서 남을 탓하고 욕만 하는 것도 바른 자세가 아니다. 감히 예수님에 비할 수는 없겠지만 인간적인 수준에서는 아무리 까발려 봐도 정말 먼지가 거의 안 나올 것 같은 인물이 있으며, 예수님에 근접하는 삶을 살았던 극소수의 인물은 있다.

우리나라의 일제 강점기 때 주 기철 목사는 바로 그런 그룹에 속하는 인물 중 하나가 아닐까 싶다. 교회가 무너지고 교단이 무너지고 조선 기독교계가 황폐화되는 현실 속에서 신사 참배를 홀로 거부하다가 온갖 악랄한 고문을 당하고 형무소에서 순교한 분이다. 게다가 유 관순이나 윤 봉길, 조선어 학회 학자들과는 달리 법정에서 정식으로 재판을 받아서 형벌을 받은 것도 아니고, 걔네들 일제의 관점에서도 법적으로 아무 근거 없이 불법으로 구금· 협박· 폭행을 당한 것일 뿐이다.
작년 성탄절 때 웬일로 KBS1에서 다큐멘터리를 방영한 것을 감명깊게 잘 봤다.

일본은 단순히 조선에서 수탈만 저지른 게 아니라 조센징들의 문화와 언어, 관습을 없애고 그들을 무력을 동원하여 강제로 일본인으로 개조시키려는 시도를 했다. 영미귀축과 맞장을 뜨려면 자기 제국의 덩치를 부풀려야 했으며, 그래서 조센징들도 단순히 노예에 물자 셔틀에만 머물 게 아니라 그들 자신이 더 자발적이고 적극적으로 덴노 헤이카를 위한 총알받이가 되게 세뇌를 시켜야 했다.
쉽게 말해 SCV, 드론을 넘어서 마린이나 인페스티드 테란이 필요하다는 걸 느낀 거다. 정신 상태로 치면 질럿에다가도 비유가 가능하겠다. "My life for Tenno!" -_-

지금 생각하면 이건 정말 "무슨 마약 빨고 그런 생각을 했어요?" 급이었다. 뭐, 일본인으로 만들어 봤자 자국민과 동등한 레벨도 아니고 2류 3류 신민이었겠지만. 일본 자국민과 동급의 권리는 없고 의무만 있는 신노예를 만들려는 의도였으니 말이다.
또한 그렇다고 자국민도 편하게 지냈느냐 하면 그것도 아니었고 걔네들 역시 전쟁광 수뇌부 때문에 겁나게 고생하긴 했다.

일제 강점기 때 조선 신궁을 보니까 저 정도면 단순히 국기/국가에 대한 충성 맹세가 아니라 종교적인 게 맞긴 해 보였다.
일본에서는 패전 후에 덴노가 인간 선언을 하자 고작 그것만으로도 자신의 평생 신념이 하루아침에 무너진 것 때문에 멘붕해서 자살하는 사람이 나올 정도였다. "내가 신으로 떠받들던 존재가 사실은 나와 똑같이 먹고 자고 싸는 인간에 불과했다니!"

맥아더도 이런 일본의 문화와 일본인들 습성을 감안했기 때문에, 비록 히로히토 덴노가 악질 전범이긴 하지만 대놓고 그를 법정에 세워 처벌하거나 덴노 제도 자체를 없앨 생각을 하지는 않았다. 그랬다가는 일본에서 무슨 일이 벌어질지 몰라서 말이다.
이와 마찬가지 맥락이다. 북한 정권이 확 붕괴하고 김씨 부자가 자기와 똑같은 인간임이 폭로되고 나면 북한에서 제대로 세뇌돼 있던 핵심 계층 중에는 저렇게 멘붕하는 사람이 분명 나오지 싶다.

그 대신, 맥아더는 자신이 히로히토 옆에서 일부러 양아치 같은 거만한 포즈를 취하고 있는 사진을 언론을 통해 내보냈다. 그러자 이번엔 반대로 맥아더를 신으로 숭배하고 집에 신사까지 만들어 모시는 사람들이 나왔다고 한다. 거의 행 14:11-13와 다를 바 없는 상황이었다.

이래저래 일본은 전반적인 정신 문화가 성경의 기독교와는 완전 상극이라는 게 느껴졌다. 일제는 이런 정신 문화를 조선인들에게 강요했다. "누가 너희 하나님을 믿지 말라고 그러더냐? 니 예배도 할 거 다 하고, 여기서 잠깐 고개만 까딱하고 경의를 표해 주면 너도 살고 나도 가오가 살고 아무 탈 없을 텐데 왜 그렇게 뻣뻣하게 구냐? 이건 그냥 대일본제국 신민으로서 국가에 대한 충성 맹세이지 종교적인 게 아니래도 그러네?"

사용자 삽입 이미지
* "신사 참배와 동방요배는 대일본제국의 신민이 지켜야 할 신성한 제1의 임무이다. 일찍이 도요토미 히데요시, 도쿠가와 이에야스 같은 성주들께서도 서양 기독교를 신봉하는 자들을 모두 참(수)하고 유황불에 던져 넣었던 것을 기억하라. 저들의 유일신은 우리 천황과 태양신 아마테라스를 대적하는 것이다."

조선 땅에 있던 대다수의 종교 종파들은 집요한 협박과 회유, 특히 가족까지 동원한 악랄한 해코지를 이기지 못하고 굴복했다. 거기에 굴복했다고 해서 딱히 민폐가 가는 게 아니니 이건 애초에 예수님을 안 믿는 불신자의 입장에서는, 세상적이고 인간적인 관점에서는 비판할 거리가 전혀 아니다. 오히려 물리적인 민폐는 굴복 안 했을 때 더 끼쳤을 가능성이 높지..

그러나 일부 기독교회들은 그리하지 않았다. 주 기철 목사 같은 영성으로는 저런 일제의 꼬드김은 영적으로 볼 때 출애굽기에서 파라오가 모세에게 제안했던 교묘한 절충안과 별 다를 바 없는 것임이 빤히 보였다. 오늘날로 치면, 성경을 들먹이면서 일부 배도한 목사가 "하나님은 동성애자도 사랑하니까 동성애자들도 다 자기 스타일 대로 순수한 사랑을 하면 됩니다" 이러는 것과도 같다.

회유에 안 넘어가자 일제는 결국 "어쭈? 우리 덴노 헤이카가 더 강한지, 네놈들이 믿는 여호와 하나님이 더 강한지 두고 보자!"로 본색을 드러내기 시작했다. 주 목사는 여러 번 체포되었다가 풀려나기를 반복했고 지독한 고문을 당했다. 나중에는 목사직에서 해임되어 사택에서도 쫓겨났으며 교회가 폐쇄당했다.

주 기철 목사의 막내 아들 주 광조는 어린 시절, 그 와중에도 평소에는 평양 경찰서를 거의 자기 집처럼 드나들면서 형사들과 친하게 지냈다고 한다. 저기가 얼마나 무시무시한 곳인지도 모른 채. "광조 왔다~!!ㅋㅋㅋ" 그러면 형사들이 용의자 취조할 때 먹이는 코렁탕...은 아니고 주먹밥이라도 쥐어 주고 "요 귀요미 녀석 또 왔냐?" 그렇게 귀여워해 줬는데...;;

사용자 삽입 이미지

어느 날 갑자기 거기서 주 목사의 가족들을 다 불러 놓고 주 목사를 공개적으로 고문 시연을 했으니 얼마나 끔찍한 트라우마가 생겼겠는가?
주 광조는 정신적인 충격을 이기지 못하고 몇 년간 실어증을 앓았다고 한다.

저 때 TV에서 맛보기로만 묘사한 고문은 '비행기 태우기'이다. 그 당시에 일제가 행한 '흔한' 고문이다.
그나저나 주 목사 하면 못 위를 맨발로 걸었다는 ㅎㄷㄷ한 일화까지 전해지는데, 이건 언제 어느 형무소에서 있었던 일이고 누구의 증언을 통해서 전해지는지 정확한 출처를 지금까지 한 번도 들은 적이 없는 것 같다. 그게 궁금하다.

성경은 평소에는 그렇게도 친가정적인 교리를 표방하기 때문에, 근대 이래로 마 19:29, 막 10:30처럼 가족을 버리는 것까지 권장하는 정말 극단적인 상황은 대환란이 아니면 역사적으로 북한이나 일제 말기, 이슬람권 같은 곳밖에 없었다. 일본 경찰들은 나중에는 주 목사의 부인인 오 정모 사모도 두들겨 패면서 분풀이를 했다. "에라이, 남편을 죽으라고 부추기는 독한 년 같으니! (네놈들 때문에 우리까지도 실적 못 내서 상부로부터 잔뜩 갈굼 먹고 고달프단 말이다!)"

주 기철 목사뿐만 아니라 오 정모 사모도 신앙면에서는 정말 한 근성 한 분이었다. "따뜻한 숭늉을 한 사발 좀 마시고 싶소" 이런 유언을 남긴 남편 보고 "당신은 살아서 형무소를 못 나갑니다. 조선의 교회를 위해 꼭 승리하셔야 합니다" 이런 말을 격려(?)랍시고 이를 악물고 했을 정도이니 일본 경찰과 간수들이 경악할 법도 했을 것이다. "저 조센징이 믿는 신은 도대체 어떤 신인가? 우리 황국신민 중에 덴노를 위해 저렇게까지 충성을 바칠 사람은 과연 얼마나 될까?" 같은 생각을 한 번쯤은 하지 않았을까.

주 목사는 정식으로 사형을 당한 게 아니며, 비록 지독한 고문에 만신창이가 되긴 했지만 최후의 순간 자체가 "바보야, 그러게 좀 적당하게 두들겨 패고 강약 조절을 했어야지 아주 죽여 버리면 어떡해!" / "헉~ 죄..죄송합니다 ㅠㅠ"  같은 고문치사도 아니었다. 일제는 이런 면모에서는 오히려 아주 치밀하고 교묘했다. (유명한 고문치사 사건은 일제 강점기가 아니라 훗날 대한민국 시대에 몇 건 터졌었다.)

이거 뭐 아무리 고문을 해도 소용없고 주 목사만 회생 불가의 죽기 직전 상태가 되자, 일제는 그를 슬쩍 병보석으로 풀어 주려 했다. "이 사람은 어찌 됐건 우리가 죽인 건 아니야. 우리 손으로 위대한 순교자 따위 만들고 싶지는 않아~" 면피를 위해서였다.

이런 예가 의외로 여럿 있다. 3· 1 운동 당시에 수원의 유 관순이라고 기록을 통해 뒤늦게 알려진 이 선경, 일제 말기에 진실을 외치다 주 기철과 비슷한 시기에 순국한 소년 주 재년도.. 다 의외로 옥중에서 죽은 게 아니다. 풀려나긴 했지만 고문 후유증 때문에 몇 달 못 가 죽은 거다. 풀어 줘도 그건 사실상 석방이 아니었다.

이런 속셈마저 눈치 챈 오 사모는 남편에 대한 병보석 제안을 거부하였으며, 주 목사는 마지막 면회 후 감방 바닥에 누워 있던 중에 드디어 기력이 다하고 소천했다. 허나, 오 사모의 강직하고 대쪽같은 행적은 남편이 이렇게 순교한 뒤에도 계속되었다. 속된 말로 '시체 장사'를 하지 않았다.

"주 목사는 당연히 외쳐야 할 때 도저히 벙어리로 있을 수가 없어서, 무익한 종으로서 당연히 가야 할 길을 갔을 뿐입니다. 주 목사의 행적이 하나님의 영광을 가려서는 절대 안 됩니다"라고 못을 박았다! 남편 개인이 대외적으로 막 알려지고 떠받들어지는 것을 우상 숭배라고 최대한 경계하고 만류했다.
뭐, 주 목사를 거론할 자격도 없는 사람들이 개나 소나 "나도 저분 존경해요" 립서비스 차원에서 위선적으로 이러는 건 대단히 보기 좋지 않으며, 이런 짓은 심지어 본인에게조차도 적용되는 사항이 될 수도 있으니 특별히 조심해야겠다.

그 시절에 주 목사의 자녀들은 일제로부터 불령선인 취급을 받아 쫄쫄 굶고 학교도 제대로 못 다니고 너무 고생하면서 컸다. 너무 고지식한 아버지와 어머니를 도저히 이해할 수 없고 부모가 매정하고 야박하다고만 생각했다.
그러나 결과적으로는 의로 양육된 자녀들은 바르게 잘 컸다. 장남 주 영진은 6· 25 때 빨갱이들에게 순교하여 손 양원 목사 가문처럼 부자가 순교자의 반열에 올랐다. 4남인 주 광조가 제일 늦게까지 살아 있으면서 선친의 행적에 대해 증언하다가 지난 2011년에 세상을 떠났다.

주 목사는 일제의 통치에 정치적으로 반대하고 저항한 독립 운동가는 아니었다. 종교 영역의 침범이 아닌 창씨 개명 정도까지는 별 반발 없이 따르기도 했다. 신앙을 지키기 위해 순교의 길을 간 것일 뿐이지만, 그 행동이 결과적으로 나라 사랑에 항일 운동을 한 것과 다름없는 것이 됐고 일제로부터 그런 짓(?)을 한 반동분자로 취급을 받았다. 덕분에 그는 '건국훈장 독립장'이라는 꽤 높은 등급의 훈장이 추서되었으며(유 관순· 윤 동주와 같은 급) 서울 현충원에 가묘까지 만들어져 있다. 평양에서 유해를 찾아 와 이장할 수는 없었으니까.

그의 생애에 대해서는 특별히 만화로 각색된 것이 <만화로 보는 나의 아버지 순교자 주 기철 목사>(2007), <대동강의 순교자 주 기철>(1998, 두란노) 이렇게 두 종류가 있으므로 관심 있는 분은 참고하시기 바란다. 이 글에서 몇 컷 소개한 만화는 전자이다.
KBS 다큐멘터리는 일본의 신학계에서도 주 목사를 연구하는 사람들이 있는 것을 취재해 보인 것이 흥미로웠다. 하긴, 일본인들은 이 순신 장군에 대해서도 그렇게도 치밀하게 연구했다는데 그 국민성으로 주 기철 목사까지 연구하는 건 이상한 현상이 아닌 것 같다.

일제도, 북한 정권 같은 것도 없는 이 대한민국 땅에도 엄연히 신앙 생활에 고난과 시험은 있다. 내가 늘 말하지만, "너 이렇게 믿으면 죽는다" 대신에 "너 여기서 약~간만 타협하면 돈과 명예와 좋은 대외 평판을 무진장 얻을 텐데!"라고.. "눈 딱 감고 나에게 절만 하면 이 모든 걸 네게 주겠다"라는 마귀의 시험과 본질적으로 똑같은 시험이 존재한다.
그래서 신앙 생활은 교리 쪽이든, 행실 쪽이든 참 좁은 길이다. 예수님을 위해서 내가 더 낮아지고 바보 되는 것. 그걸 내 힘으로 하는 게 아니니까 견디고 할 말한 뿐이다.

그리고 지난 3월 17일엔 다큐멘터리에서 나왔던 배경과 출연진을 토대로 <일사각오>라는 영화도 나왔다. .

신사 참배 거부는 단순히 자기 종교 입장에서의 지조만을 고집한 게 아니라 사악한 일제의 군국주의 통치에 대해 거부의 뜻을 당당히 표현한 거라고 의미를 굉장히 많이 부여하고 있다. 그 당시 일제 당국조차 기독교는 자기네 식민 지배에서 굉장한 걸림돌이었다고 문서에다 기록했다고 영화는 소개하고 있다.

일제 강점기 당시에 조선 청년들을 군대에다 강제 징집하자는 발상은 1930년대에 이미 논의됐다고 한다. 그러나 실제 징병은 완전 말기인 1944년이 돼서야 시행됐는데, 여기엔 조선인들의 이런 저항이 기여한 게 클 가능성이 높다고 한다. 의식이 고분고분 일본인으로 개조되지 않은 사람에게 함부로 총을 쥐어 줄 수는 없는 노릇이니까.

Posted by 사무엘

2016/03/28 08:36 2016/03/28 08:36
, , , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1208

간단한 곡선의 방정식

* 꽤 오래 전인 블로그 개설 초창기에 썼던 글을 리메이크 한 것이다.

옛날에 컴퓨터 학원에서 GWBASIC을 중급이나 고급까지 공부해 본 분이라면, 마지막 단원인 그래픽을 공부하면서 이런 비슷한 그림을 하나 그려 본 추억 정도는 있을 것이다.
그리는 방법은 간단하다. 세로줄을 하나 그은 뒤, 그 선의 윗점은 아래로 n만치 낮추고 아랫점은 오른쪽으로 동일한 n만치 옮겨서 선을 긋기를 반복하면 된다. 세로줄이 완전히 가로줄로 바뀔 때까지.

사용자 삽입 이미지

그 단순함에 비해서 생긴 결과물은 꽤 '컴퓨터그래픽스럽고' 뭔가 멋지다는 느낌이 들지 않는지?

그런데 여기서 의문이 생긴다.
저런 식으로 선을 한없이 많이 그어 나갈 때, 가장자리에 형성되는 저 둥그런 곡선은 수학적으로 어떤 의미를 갖는 곡선으로 수렴하게 될까? (그림에서 붉은 곡선) 편의상 선을 (0,0)-(0,1)에서 (0,0)-(1,0)까지 긋는 상황을 가정한다면 어떤 곡선이 그려질까? 이거 굉장히 재미있는 문제이다.

x축 (a, 0)와 y축 (0, b)를 지나는 직선의 그래프는 y = -(b/a)*x + b 이며 이건 중학교 수준으로도 알 수 있는 사실이다.
이 그림에서는 0~1 사이의 a에 대해서 (a, 0)과 (0, 1-a) 사이를 지나는 직선이 만들어지므로 방정식은 y = -((1-a)/a)*x + (1-a)가 된다. 이 식을 [1]이라고 설정하자.

그러면 이 a 지점에서 그어진 직선은 우리가 구하고자 하는 미지의 곡선에서는 어느 지점과 만나게 될까? 이걸 생각하는 게 문제를 푸는 열쇠이다.
a 지점에서 그어진 직선이 곡선의 표면에 닿는 지점은 바로.. 그 직선의 바로 극소량 떨어진 옆에 있는 또 다른 직선과의 교점일 것이다. 극한이라는 개념이 필요해진다.

a 지점에서 x축과 y축이 b만치 극미량 전진하여 (a+b, 0)과 (0, 1-a-b)를 지나는 직선의 방정식은 y = -((1-a-b)/(a+b))*x + (1-a-b) 가 된다. 이 식을 [2]라고 한다.
두 직선 [1]과 [2]의 교점을 구하려면 두 식을 연립해서 x, y에 대해서 방정식을 풀면 된다.
그럼 x=a*(a+b), y=(a-1)*(a-1+b)가 나온다.

b가 0에 한없이 가까워져서 두 직선이 근접하게 되면 교점은 결국 (a^2, (a-1)^2)라고 a에 대한 매개변수식으로 귀착된다. 곡선의 궤적이 이렇게 다 구해진 것이다. 게다가 문제 접근 방식의 특성상, x=a^2인 지점에서 곡선의 기울기도 -((1-a)/a)라고 딱 구해졌다.
x의 매개변수식이 a^2이니 (a-1)^2에다가 루트만 씌우면 끝나고, 그리고 기울기의 부정적분을 구해서 f(0)일 때 1이 나오는 상수 C를 덧붙여 줘도 게임 끝이다.

곡선의 방정식은 x-2*sqrt(x)+1, 또는 y = (1 - sqrt(x))^2 이 된다. 오옷~~~ 비슷한 4사분원의 방정식과 비교했을 때 근호와 제곱의 위치만 싹 맞바뀐 형태라는 게 흥미롭다.
이 정도 문제는 난이도가 고등학교 교과 수준이거나 좀 아슬아슬하게 넘는 수준일 것 같다.
임의의 지점에서 기울기가 저렇게 결정되는 곡선을 구한다는 특성상, 제일 확실하게 푸는 방법은 미분 방정식을 동원하는 것이겠지만.. 그 정도면 확실하게 고등학교 수준은 아니다.

곡선의 식이 정확하게 나왔으니 곡선의 성질도 다 알 수 있다. 저 선들이 차지하는 면적은 1/6이 된다(0부터 1까지 식을 적분한 값). 곡선과 y = x와의 교점, 다시 말해 곡선의 기울기가 정확하게 -1이 되는 지점이며 곡선 내부에 존재할 수 있는 가장 큰 정사각형의 한 변 길이는 1/4임을 알 수 있다.

그리고 또 하나 짚고 넘어갈 점이 있다.
위의 그림에서 빨간 곡선은 내가 손으로 그었을 리는 없고.. 어떻게 그린 걸까?
(a^2, (a-1)^2)라는 궤적은 베지어 곡선의 한 형태이다. 근사가 아니라 2차 베지어 곡선과 수학적으로 완벽하게 일치한다.

시작점 P0, 제어점 P1, 끝점 P2로 이뤄진 2차 베지어 곡선의 식은 (1-t)^2*P0 + 2*t*(1-t)*P1 + t^2*P2 (0<=t<=1)이다.
참고로 임의의 n차 곡선의 식은 각 항의 계수가 1, 3, 3, 1 등 이항정리 계수의 형태로 변하면서 t의 거듭제곱은 증가하고, (1-t)의 거듭제곱은 감소하는 형태로 생성된다.
저 식을 점들의 좌표가 아니라 t에 대해서 풀면 (P0 - 2*P1 +P2)*t^2 + (2*P1 - 2*P0)*t + P0 이 남는다.

문제의 곡선의 매개변수 식을 보면 x축은 a^2로, 2차항 t^2의 계수만 1이고 나머지는 0이다[1, 0, 0]. 따라서 P0은 답정너 0이 되어야 함. 일차항도 P0이 0으로 소거되고 없으면서 전체 계수가 0이 돼야 하므로 P1 역시 0이 된다.
한편, 이차항은 P0과 P1이 모두 0인 상태에서 계수가 1이 돼야 하므로 혼자 남은 P2는 0이 된다. P0, P1, P2의 x축 좌표는 각각 (0, 0, 1)로 정해졌다.

y축으로 가 보면, (a-1)^2는 a^2 - 2*a + 1이므로 맞춰야 하는 계수는 [1, -2, 1]이 됐다. 이로써 상수항 P0은 1부터 시작한다. 그 다음으로 2*P1 - 2*P0이 -2가 되어야 하는데 P0이 이미 1이라면.. P1은 0이 돼야 0-2 = -2가 될 수 있다.
P0도 값이 자동으로 정해진다. P0 - 2*P1 + P2 = 1이어야 하고, P0이 1이므로 P1뿐만 아니라 P2도 0으로 결정된다. P0, P1, P2의 y축 좌표는 각각 (1, 0, 0)이 된다.

이게 무슨 뜻인가? (a^2, (a-1)^2) 매개변수 곡선은 시작점 (0, 1), 제어점 (0, 0), 끝점 (1,0)인 아주 기초적인 2차 베지어 곡선과 동일하다는 얘기이다. 아니 그러고 보니, 베지어 곡선을 수식이 아니라 직관적으로 그리는 방법 중에도 한 선분을 저 그림과 비슷한 방식으로 다른 선분으로 점진적으로 변화시켜서 그 궤적을 연결하는 게 있었다. 심오함이 끝이 없구나..!

보통 그래픽 프로그램에서는 제어점을 2개를 둬서 2차보다는 더 범용적인 3차 베지어 곡선을 지원하는데, 3차 베지어 곡선의 표현력은 당연히 2차 곡선의 그것의 상위 호환이다.
3차 베지어 곡선의 방정식을 역시나 t 변수에 대해서 나타낸 뒤 2차 베지어 전개식과 계수가 일치하도록 방정식을 풀어 보면.. 시작점 P0과 P2는 동일하고 중간점이 P1일 때,
C1 = (2*P1+P0)/3 , C2 = (2*P1+P2)/3
이라는 식이 나온다. 이렇게 두 중간점을 잡아 주면, 3차 베지어 곡선으로 2차 베지어 곡선을 정확하게 나타낼 수 있다.

베지어 곡선으로 수학적으로 100% 완벽하게 표현할 수 없는 유명 요소가 두 가지가 있는데.. 하나는 원/원호이고 다른 하나는 다른 베지어 곡선과 굵기만 다르면서 평행한 파생 곡선이다. 쉽게 말해서 철도 선로의 한 곡선 궤조에 대응하는 다른쪽 궤조 말이다.
그에 반해 저렇게 직선을 찍찍 그어서 자연스럽게 만들어진 곡선 궤적은 매개변수로 표현하나 일변수 형태로 표현하나 식이 딱 구해지고 초월함수 그딴 거도 안 나오고 부정적분도 구해지고.. 마음대로 요리가 되는 게 좋다.

사이클로이드(최단 강하 궤적)라든가 현수선 같은 곡선 문제도 수학 해석적 관점에서 아주 재미있는 주제인데 이것도 나중에 다룰 기회가 있으면 좋겠다.
이 글은 5년 전에 썼던 오리지널에 비해 베지어 곡선 얘기도 들어가고 그림도 GDI가 아닌 GDI+의 앤티앨리어싱이 들어간 것으로 바꾸는 등 내용의 품질을 대폭 향상시켰다. ^^

Posted by 사무엘

2016/03/25 08:27 2016/03/25 08:27
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1207

« Previous : 1 : ... 110 : 111 : 112 : 113 : 114 : 115 : 116 : 117 : 118 : ... 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:
3056943
Today:
1466
Yesterday:
1713