임시 파일 다루기

수 년 전에 회사에서 만들어 놨던 코드가 업무상 다시 필요해져서 새 컴퓨터에서 돌려 봤다. 빌드 과정에서는 별 문제가 없었고 실행도 잘 되는 듯했으나.. 데이터 내용을 파일로 잠시 직렬화 덤프한 뒤에 서버로 전송하는 부분이 동작하지 않고 있었다.
문제를 추적해 보니 개발 당시에는 전혀 볼 일이 없었던 엉뚱한 파일명이 내부에 생성된 것이 원인이었다.

그리고 최종적으로 밝혀진 근본 원인은 이러했다. tmpnam_s 함수가 Visual C++ 2015부터는 동작 방식이 싹 바뀌었기 때문이다.
원래 tmpnam은 \ 로 시작하는 파일명만 달랑 되돌렸다. 그러나 2015부터는 운영체제의 공인 임시 디렉터리까지 포함한 전체 경로를 되돌리게 됐다.
예전에는 tmpnam_s의 결과에다가 또 임시 파일 저장용 디렉터리를 붙이는 후처리를 해야 했으나 지금은 그럴 필요 없다. 문자열의 형태가 달라져 버렸으니 기존 코드는 당연히 오동작을 하게 된 것이다.

알고 보니 tmpnam은 Visual C++ 2015 문서의 breaking changes에도 응당 명시돼 있는 아이템이다. 난 보통은 이런 거 꼼꼼히 다 읽어보는 편인데 이 함수는 어쩌다 보니 놓쳤다.
breaking changes는 단순히 어떤 함수· 변수를 제거하거나 형태를 바꾸는 것들이 대부분이기 때문에 기존 코드에 대한 여파는 명백한 컴파일 경고· 에러나 링크 에러 형태로 드러나는 게 대부분이다. 하지만 외형의 변경 없이 내부 동작만 잠수함 패치되어서 동작이 달라지는 식의 변화는 드물다. 프로그램을 실제로 돌려 보기 전까지는 부작용을 알 수 없기 때문이다.

이 코드가 나중에 어디서 또 어떻게 쓰일지 알 수 없는 관계로, 결국은 tmpnam을 감싸는 함수를 만들어야 했다. 얘의 몸체는 #if _MSC_VER >= 1900 이냐 아니냐로 구분해서 어느 VC++에서나 동일한 결과가 나오게 조치를 취했다.
귀찮은 일을 겪긴 했지만 임시 파일이라는 건 십중팔구 전용 임시 디렉터리에다 잠시 만들었다가 지우는 게 바람직하다. 임시 파일과 임시 디렉터리는 마치 바늘과 실처럼, 정수 나눗셈에서 몫과 나머지만큼이나 서로 따라다니는 명칭인 셈이다. 그러니 VC++ 2015에서의 변화는 궁극적으로는 긍정적인 변화이다.

프로그램을 개발하다 보면 임시 파일을 만들어야 할 때가 있다. 하긴, 옛날에 컴퓨터에 메모리가 아주 부족하던 시절에는 페이지 스왑 파일도 임시 파일의 범주에 들었는데 이건 아무래도 응용 프로그램 개발자가 직접 건드리는 파일은 아니다. 디렉터리 이름으로 TEMP라는 명칭을 본인이 최초로 본 게 아래아한글 2.0의 임시 파일 디렉터리였다.
디렉터리 트리 구조, 글꼴 캐시 파일 같은 건 없어도 실행에 지장은 없지만 그래도 반영구적으로 보관하고 참조하라고 만들어진 임시 파일이라는 점에서 성격과 용도가 약간 다르다.

이 정도로 저수준 시스템스러운 것이 아니더라도 특정 API나 기능에 접근하기 위해서, 입력 데이터를 반드시 파일 형태로 줘야 할 때 임시 파일을 만들게 된다. <날개셋> 한글 입력기의 경우 내부적으로 <날개셋> 변환기를 잠시 호출해서 구버전 입력 설정 파일을 변환할 때, 키보드 드라이버 관련 레지스트리 값을 변경하기 위해 레지스트리 편집기를 호출할 때 이런 테크닉을 쓴다.

tmpnam 같은 C 표준 함수 말고 운영체제 API에도 임시 파일과 디렉터리 이름을 얻어 오는 함수가 존재한다.
먼저 디렉터리는... 무슨 C:\asfa\zfdaaf 이렇게 무슨 악성 코드마냥 임의로 생성해서 쓰는 건 아니고, '내 문서', 'Program Files'처럼 임시 파일들의 생성과 보관을 위한 known 위치가 각 사용자 계정별로 따로 있다. GetTempPath 함수를 호출하면 이 위치를 얻어 올 수 있다. 하긴, 사용자 계정이라는 개념이 없던 시절엔 위치가 무슨 시스템 디렉터리처럼 쿨하게 Windows\temp이긴 했었다.

임시 디렉터리는 모든 프로그램들이 한데 공유하는 일종의 공공장소이다. 그래서 임시 파일을 많이 생성하는 프로그램이라면 그 디렉터리 밑에다가 자기 회사나 제품명으로 디렉터리를 또 만들어서 거기에다 파일을 저장하기도 한다. 그 정도로 복잡한 일을 하는 프로그램이 얼마나 될지는 모르겠지만 말이다. 참고로 <날개셋> 한글 입력기는 일부 기능에서 끽해야 파일 하나만 달랑 만들었다가 곧장 지우며, 임시 파일의 생존 주기가 함수 하나의 실행 주기를 벗어나지 않는다.

그럼 디렉터리 다음으로 파일 이름을 구체적으로 어떻게 지을지가 문제로 남는다. 무작위하게 이름을 붙이되, 그게 이미 있는 파일과 겹치지 않는다는 게 보장되어야 한다. 굳이 다른 프로그램이 아니어도 나 자신도 여러 인스턴스 형태로 동시에 실행될 수 있기 때문이다.
그렇기 때문에 임시 파일의 이름은 "자기 고유 명칭 + 숫자"의 형태로 붙곤 한다. 그래서 이 이름의 파일이 이미 존재하면 중복이 없을 때까지 숫자를 1식 증가시켜서 다시 시도한다.

GetTempFileName 함수가 정확하게 이런 일을 한다. 본인은 이 함수의 존재를 알기 전에 저 알고리즘을 수동으로 구현해서 임시 파일 이름을 생성했는데, 나중에 전용 함수에 대해 알게 되자 적지 않게 놀랐다.
이 함수는 '자기 고유 명칭'에 해당하는 접두사를 딱 세 글자 길이까지 받는다. 그 뒤 번호를 인자로 받는데, 유니크한 임시 파일 이름을 생성하는 게 목적이라면 번호는 그냥 0으로 주면 된다. 그러면 생성된 번호를 리턴값으로 돌려주며, 그 이름의 텅 빈 0바이트 파일을 실제로 생성도 해서 '찜'해 준다. 파일 이름을 얻고 파일을 여는 그 짧은 순간에도 혹시나 다른 프로세스나 스레드가 이 이름을 새치기로 찜하지 못하게 하기 위해서이다. 철두철미한 놈..;;

혹시 한 프로그램이 생성해 놓은 임시 파일을 다른 프로그램이 참조해야 한다면 참조하는 프로그램에다가 저 무작위하게 생성된 번호만 전해 주면 된다. 그럼 거기서는 GetTempFileName에다 동일한 접두사와 동일한 디렉터리를 넘기되, 번호는 0이 아니라 외부로부터 받은 그 값을 주면 그 임시 파일의 전체 경로와 이름을 얻을 수 있다.

지금도 어느 컴퓨터에서든 Users\계정명\AppData\Local|Temp 디렉터리에 가 보면 수백· 수천 개의 정체를 알 수 없는 임시 파일들을 볼 수 있다. 특히 "3글자 + 4자리 16진수.tmp"인 파일들은 100% GetTempFileName 함수에 의해 작명된 파일이다. 심지어 Visual C++도 실행해서 프로젝트를 열어 놓은 중에는 edgXXXX.tmp라는 수십 MB에 달하는 임시 파일을 여기에다 만들어서 사용하더라. 저건 Edison Design Group의 이니셜이니 인텔리센스 컴파일러가 사용하는 듯. IDE를 종료하면 물론 지워지고 없어진다.

GetTempFileName는 임시 파일 이름을 생성하는 것과 이미 생성된 명칭을 얻는 것이 모두 가능하며 나름 편리하게 잘 만들어져 있긴 하다. 다만, 파일의 확장자 지정이 안 되고 언제나 tmp로 고정되는 건 약간 불편하다.
(1) 임시 파일을 이름을 무작위 생성해서 파일도 새로 생성하기 또는 (2) 이미 있는 파일을 이름부터 id로부터 얻어 와서 열기 이건 일종의 정형화된 패턴이 있어서 본인은 클래스를 만들어서 사용하고 있다.

이 클래스의 소멸자는 임시 파일을 삭제도 해 준다. 임시 파일의 처리가 별도의 스레드에서 행해진다면 클래스 개체를 스택이 아닌 heap에다 new로 선언해서 개체의 delete 처리를 스레드 함수에게 시키면 된다. 뭐, 별도의 프로세스라면 내가 delete를 해서는 안 될 것이고.
삭제를 제대로 안 해 주면 이것도 일종의 메모리 leak 같은 부작용을 야기할 것이다. 시간이 흐를수록 임시 파일 디렉터리는 수천 개의 쓰레기들이 쌓여서 난장판이 될 테니 말이다. 요즘이야 하드디스크가 용량이 워낙 방대하니 디스크 용량 고갈보다는 파일 관리 성능· 효율 저하 문제가 더 크게 와 닿을 것으로 보인다.

이상. 이렇듯, 디스크의 파일은 메모리와는 달리 기록 효과가 영구적이며, 모든 프로세스에서 32/64비트도 가리지 않고 동일하게 공유 가능하기 때문에 프로세스 간의 데이터 공유와 통신 수단으로도 쓰일 수 있다.
단, 프로세스 사이의 통신 수단으로는 WM_COPYDATA라는 아주 유용한 물건도 있다. 그렇기 때문에 두 프로그램이 모두 윈도우를 생성해 있고 그 창의 주소를 알고 있다면 굳이 임시 파일을 만들었다가 지울 필요 없이 메시지만 주고받아도 된다.

<날개셋> 편집기와 입력 패드는 자기 프로그램이 중복 실행되었을 때 자기가 받아서 갖고 있던 명령줄을 기존 인스턴스에다가 넘겨 주기만 하고 자신은 실행을 종료하는 기능이 있다. 파일을 여는 등의 작업 요청은 기존 인스턴스가 받아서 대신 수행하게 된다. 예전에는 커스텀 메시지 + 임시 파일을 이용해서 명령줄을 전달했으나, 근래에는 훨씬 더 간편한 WM_COPYDATA 기반으로 구현 형태를 변경했다. 왜 진작부터 이 메시지를 안 썼나 모르겠다.

단, 명령줄을 자신의 타 인스턴스로 전달할 때 주의해야 할 점이 있다. 사용자가 명령줄로 전달하는 건 대체로 파일과 경로이다. 이게 절대경로인 경우는 흔치 않으니, 나의 current directory도 같이 전해서 저 경로가 무엇에 대한 상대경로인지를 알 수 있게 해야 한다. 안 그러면 내 쪽에서는 찾을 수 있는 파일을 명령줄을 받는 기존 인스턴스에서는 못 찾게 될 수도 있다. current directory는 프로세스 단위로 고유하게 갖고 있는 상태 정보이다.

Posted by 사무엘

2017/03/30 08:39 2017/03/30 08:39
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1344

등산 답사기: 수락산

2016년은 내 평생 등산을 제일 많이 간 해였다. 서울 근교에 있는 20여 개의 산을 일일이 답사했다.
그 뒤 한동안 바빠서 등산을 못 하다가 모처럼 시간을 내어 수락산을 다시 도전했다. 이번엔 인서울인 수락산, 당고개 다음으로 장암 역(= 의정부)에서 올랐으며 예전과는 달리 물론 정상에 도달했다. 정상에 도달했을 뿐만 아니라 산 건너편으로 넘어가면서 몇 시간 동안이나마 좋은 추억을 만들고 왔다.

사용자 삽입 이미지

수락산은 국립공원이 아니니 북한산· 도봉산처럼 탐방 지원 센터나 각종 출입 금지 구역 같은 건 없다. 등산로도 더 다양하게 열려 있었다. 그래도 그린벨트 구역, 문화재 보호 구역 같은 건 있었다.
장암 쪽에서 접근하는 등산로에는 각종 산장 식당들을 외에도 '노강서원'과 석림사가 있었다. 석림사까지 지난 뒤부터는 흙길 등산로가 시작됐다.

사용자 삽입 이미지

내가 계곡 쪽 등산로만 골라서 올라서 그런 건지는 모르겠지만 수락산은 '물'이 아주 인상적이었다.
어지간한 산들은 계곡이 있어도 특히 한겨울엔 가뭄을 버티지 못하고 바짝 말라 있기 십상인데.. 수락산은 곳곳에서 물이 졸졸 흐르고 있었다.

이웃의 북한산에도 맑은 물이 흐르는 계곡이 있긴 하다. 하지만 거기는 다 자연 보호를 명목으로 출입이 금지돼 있으며 눈으로 구경만 가능하다.
서울 근교에서 수락산처럼 출입금지도 아니면서 이 정도로 고퀄 대규모의 계곡과 물웅덩이가 존재하는 산은 본인은 지금까지 보지 못했다.
난 물에 들어가서 노는 걸 아주 좋아한다. 추워서 두꺼운 외투를 입은 상태였지만 옷 벗고 물에 뛰어들고 싶은 충동이 느껴졌다.

사용자 삽입 이미지

이렇게 폭포 옆으로 나란히 등산로가 조성돼 있기도 했다. 시기가 시기이니 산은 온통 낙엽으로 뒤덮여 갈색으로 변했다.
여름과 가을의 초록색이 시각적으로 더 좋긴 하지만, 그래도 등산자의 입장에서는 덥지 않은 동계 산행이 다른 계절 산행보다 더 좋다.

사용자 삽입 이미지

한참을 올라서 한 봉우리의 능선에 진입하자 주변 전망도 얼추 보이기 시작했다. 수락산도 단순한 흙산이 아니며, 높은 부분은 화강암 봉우리로 이뤄져 있다.

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

하늘은 뿌옇고 흐렸다. 그래도 아래로는 도봉 차량 기지가 보이고, 저 멀리는 도봉산이 분명하게 보였다.
수락산은 가끔 굉장히 가파른 계단을 타고 바위를 오르는 곳이 있었지만, 도봉산이나 북한산만치 험하게 손으로 뭘 잡고 올라야 하는 건 없었다.
(아, 검색을 해 보니 수락산도 '기차 바위'인가 여기는 줄을 잡고 바위를 타야 하는 험한 구간이 있다고 한다. 단순히 내가 거치지 않았을 뿐임)

사용자 삽입 이미지

이제 정상 능선에 도달했으며, 거의 다 왔다. 정상은 불과 2~300m밖에 남지 않았다. 정상의 반대쪽으로 가면 일명 '기차 바위'에 도달하는데, 난 거기로는 가지 않았다.
고도가 더 올라가니 도봉산 역과 장암 역이 나란히 보이는 지경이 됐다.

사용자 삽입 이미지

지금까지 보지 못했던 수락산 정상이다. 오르는 데 역시 2시간 정도 걸렸다. 해발 637m라니 검단산이나 예봉산보다 약~간만 낮은 수준이다.
그런데 태극기가 펄럭이고 안내문이 쓰여 있는 저 바위 위로는 도대체 올라갈 수가 없었다.

사용자 삽입 이미지

이제 지체없이 하산을 시작했다.
남쪽으로 계속 진행했으면 인서울인 수락산 내지 당고개 역 방면으로 하산하거나, 또 방향을 꺾어서 불암산으로 산행을 계속할 수 있었다. 하지만 본인은 산을 횡단하는 게 목적이었기에 남양주 청학동 방면을 선택했다.
여기는 군데군데 눈이 덜 녹은 흔적이 있었다.

사용자 삽입 이미지

산장을 하나 지나자 '내원암'이라는 웬 절간 내지 암자가 나왔다.
수락산은 성곽이나 봉수대 같은 건 없지만 서원이나 절 같은 옛날 스타일 건물이 등산로 바로 옆에 종종 놓여 있었다.

사용자 삽입 이미지

웅덩이의 물이 참 탐스러웠다.
별도로 사진을 첨부하지는 않지만, 수락산은 약수터도 잘 돌아가고 있었다.
어지간한 산들은 약수터 자체가 거의 없거나, 있더라도 물이 고갈됐거나 더러워서 식음 불가 상태인 반면, 여기서는 마실 수 있는 물이 나오는 약수터가 몇 군데 있었다. 더워서 땀을 흘리는 상태는 아니지만 목이 좀 말랐는데 등산 당시 꽤 도움이 됐다.

사용자 삽입 이미지

요렇게 바위도 하나 타고.. 하지만 철봉과 발받침이 있으니 딱히 힘들거나 위험하지 않았다.
그 뒤 하산을 계속하니까 흙길이 점점 폭이 커지고 전깃줄과 전봇대가 보이고 건물들과 차량까지 보이면서 계곡과 등산로는 유원지로 분위기가 싹 바뀌었다.

사용자 삽입 이미지

바로 이렇게. 계곡을 반쯤은 운하처럼 바꿔 놓은 것 같다. 한여름 장마철에 가게들이 영업을 하고 피서객들로 북적이는 모습을 한번 보고 싶다.
다만, 그린벨트 구역에서는 건물을 무단 증축하는 건 물론이고 계곡 근처에다 함부로 정자 같은 걸 만들어 놓고 "우리 식당 이용할 사람들만 근처 물가에서 노셈" 이러는 것조차도 원래 다 불법이다. 사유지 드립을 치지만 걔네들도 이미 법을 어기고 있긴 마찬가지다. 피서철만 되면 이런 게 뉴스에 종종 보도되나, 생계형 잡범형 불법 행위라고 해서 단호하게 근절되지도 않고 있는 듯하다.

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

유원지를 빠져나오니 드디어 시내버스가 다니는 찻길이 나왔다. 그래도 길이 별로 크지 않고 여전히 오지 같은 느낌이 든다. 그리고 나는 이런 느낌이 좋다.
예전에 갔던 도봉산에서는 완전히 건너편으로 넘어갔으면 양주시 송추 유원지 근처에 도달했을 텐데, 거기서는 대중교통으로 서울로 돌아오는 게 애로사항이 꽃폈지 싶다.
하지만 여기는 다행히 당고개 역까지 가는 남양주 소속 시내버스가 다니기 때문에 별 어려움 없이 서울로 돌아올 수 있었다. 꼬불꼬불 비탈길(순화궁 고개?)을 타고 덕릉 예비군 훈련장을 지나는 게 인상적이었다.
공교롭게도 내가 등산을 마치고 나자 드디어 비가 부슬부슬 내리기 시작했다.

이렇게.. 서울 지하철 7호선 종점에서 내려서 등산을 시작해서는 4호선 종점으로 돌아왔다.
수락산에 대한 총평은.. 산 이름이 괜히 '수락산'(물이 떨어진다?)으로 붙은 게 아니구나 싶었다. 예전에 수락산을 올랐을 때는 이런 면모를 제대로 경험하지 못했다.
일찍 가서 자리만 맡아 놓으면 차를 생각보다 높은 고도까지 몰고 갈 수 있으며 주차도 별 문제 없어 보였다. 의정부 쪽이나 남양주 쪽 모두 말이다. 왔던 곳으로 되돌아온다면야 차를 가져가는 데 문제가 없지만 이번에는 편도 동선이었으니 부득이 차 없이 뚜벅이 산행을 했다. 나중에 여름에 피서를 위해 수락산에 다시 가 보고 싶다.

Posted by 사무엘

2017/03/27 08:36 2017/03/27 08:36
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1343

C 언어는 가히 프로그래밍 언어계의 라틴어라 해도 과언이 아닌 대중적인 언어가 돼 있다. 얘는 알골(Algol), 그 다음으로 B라는 언어의 뒤를 이어 단순하게 C라고 명명되었으며 1972년에 만들어졌다. 이걸 보면 컴퓨터계에서 3.0 버전이 흥행 대박 친다는 법칙은 언어 분야에서도 유효한 것 같다.

C 언어의 고안자는 '데니스 리치'이다. 이 사람은 지난 2011년 가을에 마침 스티브 잡스와 거의 1주일 간격으로 나란히 작고했다(잡스가 먼저). 그래서 컴퓨터쟁이들 사이에서는 둘 중 덜 유명한 사람이 사실은 컴퓨터계에 훨씬 더 큰 공헌을 했다는 요지의 글을 올리곤 했다.

C는 기본적으로 컴파일 형태로 빌드되는 언어이며, 1990년대를 전후해서 16비트 도스 시절엔 볼랜드라는 회사에서 개발한 터보 C 컴파일러가 아주 대중적으로 쓰였다.
그러나 터보 C보다 이전에 IBM PC용으로 최초로 등장한 C 컴파일러는 Lattice C라고 다른 회사 제품이었다. 1982년인가 그렇다. 이게 그 먼 옛날에 타 플랫폼용으로 개발된 프로그램들을 도스용으로 포팅하는 데 중요한 선구자적 역할을 했다. 얘가 당대의 다른 후속 경쟁사 컴파일러들에 비해 코드 생성 성능도 좋았다고 한다.

사실은 Microsoft C도 Lattice C를 기반으로 개발되었다. 그러다가 1985년에 개발된 MS C 3.0부터 마소가 완전히 독자적인 컴파일러 개발 라인을 구축했다고 영문 위키백과를 보면 나온다. 브라우저에다 비유하자면 IE의 소스에서 모자이크의 소스를 완전히 떼어낸 것과 비슷한 격이겠다.

Windows의 경우 1.0은 처음에 파스칼로 개발되었으며, 이거 영향으로 실행 바이너리들을 들여다보면 export 심벌들의 명칭은 대소문자 구분이 없고 문자열도 앞에 길이가 기록된 형태로 저장되었다고 한다. 대소문자 구분이 없는 건 확실하게 본 기억이 있는 반면, 후자는 잘 모르겠다.

물론 초창기에도 파스칼이 아닌 C언어 기반의 Windows SDK가 있긴 했다. Windows 1.0 SDK의 경우 바로 저 초창기의 MS C 3.0까지는 아니고 4.0과 연계해서 동작했던 걸로 기억한다. 운영체제(?)의 개발과 컴파일러의 개발이 나름 병행되었던 셈이다. 그래도 뭐, 파스칼의 흔적이 어떤 형태로든 과거에 존재했기 때문에 PASCAL이라는 calling convention 명칭도 오늘날까지 legacy로 버젓이 전해지는 아닌가 싶다.

그러다 Lattice C는 1980년대 후반에 개발사가 타사에 인수되었으며 물건 역시 MS, Borland 같은 후발주자 대기업(?) 제품에 밀려서 역사 속으로 사라졌다. C를 제외하면 볼랜드는 파스칼을 민 반면, 마소는 빌 게이츠의 입김과 추억이 담긴 Basic을 밀었다. 베이직이 Quick-을 거쳤다가 나중에 폼 디자인 기능이 탑재된 Visual Basic이 되었다면, C 계열은 Quick-을 거쳤다가 C++ 언어에 MFC까지 탑재하여 Visual C++이라는 공룡으로 거듭났다. 물론, 그래도 VC에 지금과 같은 IDE의 프로토타입이라도 갖춰진 물건은 또 한참 뒤인 4.0 (1995)부터이다.

도스 시절에는 Turbo/Borland라는 브랜드로 볼랜드 컴파일러가 심지어 마소의 컴파일러조차도 따돌리며 리즈 시절을 구가했다. 1990년대 중반이 되면서 32비트 도스라는 틈새시장을 겨냥해서 Watcom, DJGPP 같은 제품이 꼽사리로 꼈을 뿐이며, 정작 마소와 볼랜드는 32비트 도스 플랫폼 지원은 상대적으로 미흡했다.

허나, Windows 95/NT가 널리 퍼지면서 주력 C/C++ 컴파일러는 Visual C++로 판도가 급격히 기울었다. Lotus 1-2-3이 하루아침에 급격히 밀리고 Excel이 천하를 평정했으며, 넷스케이프가 90년대 말에 정말 급격히 몰락한 뒤 IE 세상이 된 것처럼 말이다. 컴파일러는 브라우저처럼 무슨 끼워팔기 독점 같은 게 있지도 않았는데 어쩌다 상황이 바뀌었는지 모르겠다. (옛날엔 플랫폼 SDK와 함께 제공되던 공짜 컴파일러는 상용 Visual C++와 동급의 고성능 컴파일러가 아니었음)

자, 그럼 다음으로 C에 이어 C++도 언어와 컴파일러 역사를 회고해 보겠다. C++은 1970년대 말에 C with Classes라는 가칭으로 개발되었다가 1983년에 지금의 이름으로 첫 발표되었다. C++의 고안자는 덴마크 사람이다. 그리고 초기의 몇 년 동안(1980년대 중반) C++은 인지도가 안습했던 관계로 독자적인 컴파일러가 존재하지 않았다.

오늘날 C++의 위상과 지위를 생각하면 저런 시절이 존재했다는 게 믿어지지 않는다만, 그때는 C++ 코드를 C 코드로 변환해 주는 Cfront라는 전처리기 형태로 C++의 구현체가 명맥을 이었다. 말은 전처리기라고 했지만 소스 코드를 완전히 분석하고 변환하는 것이기 때문에 기술 수준은 엄연히 전처리기를 넘어 컴파일러의 front end급은 된다.

그러다가 C++ 직통 컴파일러가 등장한 것은 1980년대 말~1990년대 초이다. 메이저한 개발사인 볼랜드와 마소에서 C++ 컴파일러를 내놓은 것은 역시나 빨라도 1990년과 그 이후부터이지만, 1980년대 말에.. 그래픽 카드로 치면 VGA의 등장과 비슷한 시기에 C++ 직통 컴파일러를 내놓은 제조사도 있었다.
IBM PC/도스용으로는 Zortech C++가 그런 선구자 축에 든다. 딱 우리나라가 올림픽 하던 시절과 얼추 비슷하게 첫 작품이 나왔다.

Zortech C++은 훗날 1993년경에 Symantec C++ 이라고 브랜드 이름이 바뀌어서 6~7.x 버전까지 개발되었다. 도스와 OS/2, Windows (16/32비트)를 모두 지원하는데 역시나 볼랜드, 마소, 왓컴 같은 다른 브랜드에 밀려서 인지도는 그리 높지 못했던 듯하다.
본인은 먼 옛날에 어둠의 경로를 통해서 이 컴파일러 자체는 접한 적이 있다. Hello, world!만 출력하는 프로그램을 빌드해 봤는데 exe의 크기가 꽤 작게 나왔던 걸로 기억한다.

그리고 Zortech / Symantec C++ 컴파일러의 개발자는 Walter Bright이라고.. 프로그래밍 언어 연구와 컴파일러 개발에만 뼈를 묻은 유명한 아저씨이다. 원래 전공은 전산· 컴공도 아닌 기계공학인데 프로그래머로 전업 후, 컴공에서 최고로 어려운 분야 축에 드는 컴파일러를 곧장 파기 시작했다는 게 대단하다.
이 사람이 D 언어의 고안자이기도 하다는 걸 본인은 최근에 알게 됐다. D에 대해서는 개발자 개인이 아니라 Digital Mars라는 개발사의 이름만 알고 있었기 때문이다.

C++ 컴파일러를 개발하는 현업에 수십 년 종사했으니 그는 C++의 언어 구조와 빌드 과정에 존재하는 구조적인 비효율과 단점에 대해서 누구보다도 잘 알고 있을 것이다. 그러니 자신의 경험과 노하우를 집약해서 네이티브 코드 컴파일 언어이면서 C/C++의 단점을 보완한 새로운 언어를 직접 만드는 지경에 이르렀다. 하지만 D의 지지자· 사용자들이 어떻게든 똘똘 뭉쳐서 언어의 인지도를 끌어올리는 데 목숨을 걸어도 시원찮을 판에, 런타임 라이브러리가 Phobos와 Tango로 분열되고 커뮤니티가 폭파되는 큰 악재를 겪기도 한 모양이다.

거기에다 C++ 자체도 2010년대부터는 부스터를 단 듯이 언어와 라이브러리가 모두 하루가 다르게 미친 듯이 발전하는 중이다. 이게 과연 내가 알던 그 C++가 맞나 싶은 생각이 들 지경이며, 오죽했으면 같은 C++로도 이런 새로운 패러다임을 잔뜩 도입해서 코딩을 하는 걸 Modern C++이라는 비공식 명칭으로 따로 일컬을 정도이다. 이대로 가면 인클루드의 단점을 개선하는 import/패키지 기능까지 가까운 미래에 C++에 도입될 추세다. 그러니 "호환용 레거시가 너무 지저분하다"처럼 태생적으로 어쩔 수 없는 것 빼고는 단점들이 의외로 많이 해소되었다.

그걸로도 모자라서 다른 대기업이나 오픈소스 진영에서도 Rust처럼 네이티브 기반이면서 독특한 패러다임을 담고 있는 언어를 내놓고 있으니 D 역시 자신만의 메리트와 경쟁력을 확보하기 위해서는 갈 길이 아직 먼 것 같다.
C에서 파생형 언어 명칭을 만든 게 C++, C#뿐만 아니라 D라니 참 재미있다. C++뿐만 아니라 C#도 고안자가 덴마크 사람이라니 저 나라도 의외로 전산 강국인 듯하다.

(여담이지만 Walter Bright 아저씨는 컴파일러 개발자 겸 PL 연구자로 이름을 날리기 전인 1970년대부터 이미 Empire이라는 턴 기반 전략 시뮬 게임을 만들기도 했다. 워낙 너무 옛날이니 오늘날과 같은 컴퓨터에서 컬러 그래픽이 나오는 형태의 게임은 아니었겠지만, 아주 어린 시절부터 정말 비범한 분이었다는 건 확실해 보인다. 게다가 저 작품은 전략 시뮬 장르에서 맵의 전체 시야를 노출해 주지 않는 fog of war라는 개념을 첫 도입한 선구자이기도 하다고 한다.)

Walter Bright 말고, 또 볼랜드나 마소 계열도 아니면서 C++ 골수 덕후인 컴파일러 제조사가 하나 더 있다. 바로 Comeau. C++98이던가 03 시절에 그 악명 높은 템플릿 export 키워드를 유일하게 손수 다 구현한 이력도 있는 대단한 용자이다. 얘들 역시 1989년 초에 곧장 C++ 컴파일러를 내놓았으며, 그때부터 도스와 OS/2 등 다양한 플랫폼을 지원했는데, 거기 내부엔 또 어떤 출신과 배경을 가진 컴파일러/PL 괴수가 기업을 이끌고 있나 궁금해진다.

Comeau 컴파일러는 오늘날은 프런트 엔드로는 Edison Design Group의 제품을 사용하여 동작한다. 그럼 저 업체와는 어떤 관계인지 궁금하다. 그리고 프런트가 그런 관계이면 쟤들은 최적화와 타겟 코드 생성 같은 백 엔드 쪽에 차별화 요소가 있어야 할 텐데.. 백 엔드로는 아예 CPU 제조사라는 결정적인 텃새가 있는 인텔 컴파일러도 강세 아니던가? 그런 제품과 경쟁이 되려나 모르겠다.

이상. 이 글은 볼랜드나 마소 같은 유명 대기업 계열이 아니고 그렇다고 gcc 같은 오픈소스 진영도 아니면서 C/C++ 컴파일러를 상업용으로 제일 먼저 PC에다 구현했던 선구자들이 누군지를 문득 생각하면서 끄적여 보았다.

Posted by 사무엘

2017/03/24 19:25 2017/03/24 19:25
, , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1342

* 과거 내지 현재의 컴퓨터와 관련하여 개인적으로 궁금한 것들 컬렉션이다.

1.
요즘 길거리나 건물 근처에서 쏘는 와이파이를 보면 처음에 접속하는 건 암호가 없는 public 형태이지만, 접속한 뒤에는 무슨 주소를 입력하더라도 로그인/요금 결제 페이지로만 포워딩되는 형태인 것들이 많다. 사실은 학교 와이파이도 보안 ActiveX 등등을 안 깔면 설치 요구 페이지로만 연결된다.

그런데 이 상태에서도 페이스북이나 유튜브에 접속하는 건 바로 되는 경우가 종종 있다. 얘들만 교신을 하는 방법이나 프로토콜이 달라서 그런지(https라든가.. 서버가 외국에 있어서?) 무슨 이유 때문인지는 모르겠다.

사실, 웹서버가 뭔데 내 컴퓨터의 운영체제와 브라우저라면 몰라도(http 헤더에 에이전트 정보가 들어가므로), 보안 솔루션의 설치 여부는 뭘 보고 판단하는지 모르겠다. 프록시인지 뭔지를 써서 warning.or.kr를 우회해서 각종 금지 사이트에 접속하는 것도 어떻게 하는지? 난 웹 쪽은 아는 게 거의 없음. 그 바닥은 너무 골치 아프다.

2.
디카나 폰을 PC에다 연결했을 때 보통은 여느 USB 메모리를 꽂은 것처럼 드라이브 문자가 하나 더 추가되고 해당 기기의 메모리 내부 파일 시스템에 접근이 가능해진다.
그런데 어떤 건 꽂으면 뭔가 파일 시스템이 생기기는 하는데 드라이브 문자가 추가되는 형태가 아니다. 여기는 탐색기로만 접근 가능하지, 어지간한 다른 프로그램에서 파일을 바로 열고 내용을 볼 수 없다. 하드디스크에 복사한 뒤에야 내용을 확인할 수 있다.

그러니 사용자의 입장에서는 불편한데, 오히려 더 나중에 등장한 디카나 폰이 PC와 연결됐을 때 더 이러는 경향이 있다.
이건 기술적으로 무슨 규격이나 프로토콜을 써서 동작하는 건지 모르겠다. 그리고 드라이브 문자가 추가되는 것보다 무슨 장점이 있어서 저렇게 동작하는지도 모르겠다. 혹시 보안?

3.
컴퓨터의 USB 포트에 어떤 기기를 연결하면 인식이 곧장 될 때가 있지만 "인식 실패" 에러가 뜨면서 잘 안 될 때도 있다. 폰이나 USB 메모리 부류 말고 외장 하드 같은 묵직한 물건은 전력이 부족해서 안 될 때도 있다. 이런 건 (1) 컴퓨터, (2) 케이블, (3) 해당 기기 중 어느 게 문제인 걸까..?
컴퓨터라는 건 절대적으로 확실하고 예측 가능한 결과만 나오는 물건일 텐데, USB 포트만은 뭔가 상황에 따라 복불복인 결과가 나오는 면모가 있다.

4.
이제 슬슬 레거시 얘기를 꺼내겠다.
요즘 아직도 빅 엔디언을 쓰는 컴퓨터가 현역으로 돌아가는 게 있는지(코볼 프로그램도 돌아가는 마당에 빅 엔디언이 하루아침에 전멸할 리는 없겠지만.. 엔드 유저가 실감 가능한 영역에 있는가?),
그리고 IA64 아이테니엄 컴퓨터가 아직 살아서 운용 중인 게 있는지 궁금하다.

1990년대 말과 2000년대 초에 인텔이 IA64, 그리고 펜티엄 4의 넷버스트 아키텍처 때문에. 그야말로 세기말과 새천년기에 컴퓨터계의 판도를 바꿀 정도로 큰 삽질을 하긴 했다. 물론 덕분에 경쟁사인 AMD는 큰 이득을 볼 수 있었다.
공교롭게도 이 시기가 무어의 법칙이 슬슬 약발이 다해 가는 시기이기도 했다. (싱글 코어 기반 클럭 속도 향상) 그러니 CPU 제조사의 입장에서는 미래를 내다보고 모험을 감수하고라도 판도를 근본적으로 바꾸는 큰 결정을 내려야 했을 것이다.

다음으로 엔디언 얘기를 하자면, 스마트폰용 최신 CPU는 아예 어느 엔디언으로도 네이티브 구동이 가능한 bi-endian 구조라고 하지만, 굳이 big 모드에서 실행될 일은 별로 없을 것 같다.
오늘날 빅 엔디언의 잔재는 예전에도 언급했듯이 트루타입 글꼴 파일, 그리고 네트워크 표준 스펙 정도에나 남아 있는 듯하다. 유니코드 텍스트도 UTF-16LE 아니면 차라리 UTF-8이지 UTF-16BE가 쓰일 일이 있나 싶다. 난 지금까지 한 번도 못 봤음.

5.
옛날 도스 시절에 상당수 프로그램들의 종료 단축키는 Alt+X였다. 아래아한글, 이야기, 그리고 Q-edit 계열이 이런 관행을 유지해 왔다.
지금 Windows에서는 Alt+F4가 단순히 대화상자 창을 닫는 ESC의 상위 호환이다. 대화상자만 닫는 게 아니라 응용 프로그램의 main window도 닫고 궁극적으로 시스템 종료까지도 가능하다. 하지만 도스 시절에 Alt+F4로 종료하는 프로그램은 본인은 정말로 MS DOS Shell밖에 못 봤다.

게임들은 대부분 ESC만 눌러도 원큐에 종료 가능했지만 페르시아의 왕자는 혼자 Ctrl+Q라는 독특한 단축글쇠로 종료했다(2편에서는 Alt+Q도 추가). 페르시아의 왕자 원판이 처음에 애플 기종용으로 개발되었고, 그쪽은 Cmd+Q가 종료이니 그거 영향을 받은 게 아닌가 싶다. 맥의 Cmd+Q는 창을 닫는 기능이 없이 그냥 원큐에 프로그램을 종료하는 용도로만 쓰인다. 그리고 내 기억이 맞다면 포토샵처럼 맥에서 이식된 프로그램은 Windows에서도 Ctrl+Q 종료 단축글쇠를 갖고 있었다.

그 외에 마소에서 만든 옛날 도스용 프로그램 중에는 웬 F3이 종료인 물건도 드물게 있었다. 주로 Windows 3.1 내지 9x 계열의 설치/setup 프로그램이 그랬던 것 같다. 이 관행은 오래 이어지지 못했다.

6.
옛날 자동차만큼이나 개인용 컴퓨터계에서도.. IBM 호환 PC라는 게 세상을 평정하기 전에 있었던 특히 1980년대의 8비트 구닥다리 컴퓨터들에 대해서 요즘 갑자기 좀 관심이 생겼다. 기계들 계보를 분류해 보고 싶다. 어떤 건 기계 자체의 명칭이지만 어떤 건 규격의 명칭이기도 하다. 이 당시 CPU의 제조사도 여럿 있었을 텐데.. 시간 나는 대로 인터넷 찾아 가며 차근차근 공부할 생각이다.

먼저 애플 II~III부터가 8비트였고 국산 컴퓨터로는 삼성 SPC-1000, 금성 패미콤이 있다. MSX는 특정 기종 이름이 아니라 규격명일 테고. Commodore 64에서 64는 메모리가 64KB라는 뜻이다 CPU는 64비트가 전혀 아니며 8비트임.
요런 컴퓨터들은 그냥 켜면 롬에 내장돼 있던 베이직 인터프리터가 떴고, 카트리지를 꽂으면 게임을 할 수 있었다. 테이프는 개인적으로 구경 못 해 봤다.

삼성의 경우 살인적인 공밀레에 공밀레를 거듭한 끝에 1983년 말에 최초의 국산 메모리 반도체인 64K D램을 개발하는 데 성공했다.
팀원: "저 다음 주에 결혼할 예정이어서 휴가 좀.." / 팀장: "야 왜 하필 이렇게 바쁜 와중에 결혼을 (쳐)하는 거야! 버럭"
거의 이런 분위기에서 개발한 것이었다. -_-;; 과장이나 주작이 아님. 저렇게 팀원을 실제로 갈궜던 당시 팀장이 신화창조던가 다큐에서 출연해서 증언을 했으며, 지금 생각하니 그 팀원에게 너무 미안하다고 회고했다.

더 부가가치가 높은 비메모리 반도체를 선점하지 못한 건 아쉬운 점이지만 일단은 그 열악한 환경에서 메모리 반도체 하나라도 저렇게 잡은 걸 다행으로 여겨야 할 듯하다. 그런데 삼성 전자에서 같은 1983년에 컴퓨터까지 만들었다는 게 대단하게 느껴진다. 그 옛날부터 이미 미래에 나라를 먹여 살릴 산업을 예견하고 리스크를 감수한 투자를 아낌없이 한 것이다.

나도 "IBM 호환 PC"에 속하는 컴퓨터를 접하기 전에 아주 잠깐 소위 8비트 컴퓨터라는 걸 집에서 접한 적이 있었다. 그건 정확하게 무슨 기종에 속한 물건이었을지 궁금하다.
프롬프트가 Ok 대신 READY라고 나오고, 입력한 문장에 문법 에러가 있으면 비프음과 함께 SYNTAX ERROR이라고 나왔는데.. 롬 베이직 인터프리터가 뜬 모습은 지금 생각해 보면 커모도어 64의 그것과 제일 비슷해 보인다. 하지만 실제로 그게 맞는지는 알 길이 없다.

사용자 삽입 이미지

넥슨 컴퓨터 박물관에서 이런 물건을 발견했다. 모니터는 내가 옛날에 집에서 써 봤던 그 기계와 정확하게 일치한다. 확실하다. 검은 테두리에다 오른쪽에 저렇게 작은 다이얼이 3개 있었고..  하긴, 옛날 아날로그 모니터들은 밝기 같은 걸 조절하는 게 저렇게 물리적인 다이얼 형태로 존재했었다. 검색을 해 보니 "금성 패미콤".. 아하, 메이커가 금성사였구나.

아무튼, 이런 원시적인 물건을 통해서 나는 프로그래밍이라는 행위의 짜릿함을 경험했고 무한한 신기함과 흥미를 느꼈다. 그래서 지금의 내가 있게 됐다. 어렸을 때 접한 컴퓨터가 처음부터 지금의 컴퓨터처럼 성능이 너무 좋고 시스템이 복잡하고 사용자가 개입할 여지가 없다시피한 형태였다면, 난 컴퓨터 말고 다른 진로를 갔을 가능성이 높다.

Posted by 사무엘

2017/03/22 08:34 2017/03/22 08:34
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1340

항공 사건 사고 열전

1. 대한 항공

수많은 자동차 교통사고 사례들을 보면 신호 위반, 졸음 운전, 2차 사고, 전방-측면 주시 태만 등등 여러 정황과 공통점들이 정리가 되듯, 비행기 사고들도 그런 특성이 파악된다. 시뮬레이터로 걍 맛보기로나마 조종도 살짝 해 보니까 디테일이 예전보다는 더 이해가 되는 것 같다.

대한 항공은 1990년대 말에는 보잉 747 대형 항공기를 1년에 한 대씩 3년 연속으로 깨먹는 사고를 낸 걸로 악명이 높았다. 20여 년 전 1997년에 괌에서 추락한 801편 사고가 대한 항공이 현재까지 마지막으로 낸 ‘여객기 초대형 사고’이며, 1999년 12월에 낸 화물기 8509편 사고가 현재까지 마지막으로 낸 사망자 발생 인명 사고이다.

그때는 대한 항공 저거 안 되겠다고 국제적으로도 보이콧 움직임이 벌어질 정도로 대한 항공은 큰 위기에 처했다. 하지만 그때 뼈를 깎는 쇄신을 한 덕분에 지금은 대한 항공은 매우 안전한 항공사로 거듭났다. 단지 땅콩 회항 같은 웃프고 병신 같은 해프닝만 있었을 뿐.

그 당시에 대한 항공에 대해서는 공군 출신 조종사들간의 고압적인 서열과 “까라면 까” 권위주의가 정당한 지적질과 정상적인 의사소통까지 방해해서 사고로 이어졌다는 지적이 있었다. 그래서 오죽했으면 조종 중에 공식적으로 한국어의 사용까지 금지시켰다. 기장은 부기장에게 반말, 부기장은 기장에게 높임말이라는 관습부터가 괜히 서열을 조장한다는 이유 때문이었다.
그렇게 해서 조종사들의 의식과 근무 분위기는 개선됐을지 모르지만, 경영진들의 의식은 개선되지 않았는지 완벽한 권위주의 병크인 다른 사건이 벌어졌다. 비록 이건 사람이 죽거나 다친 사고는 아니지만 세계적으로도 충분히 비웃음감이 됐다.

뭐 그건 그렇고.. 대한 항공은 더 옛날 1970년대 말부터 1980년대까지는 분단된 나라 사정과도 직접적인 관계가 있는 비극적인 사고에 연루되기도 했다. 잘 알다시피 당시 미수교 적성 국가인 소련으로부터 격추를 두 번이나 당했고, 북한 폭탄 테러의 희생양이 되기도 했다. 90년대의 747기 깨먹은 사고들이 한 그룹으로 묶이듯이 저 세 사고도 성격상 한 그룹으로 묶인다.

1978년 4월에 벌어진 902편 격추와 1983년 9월에 벌어진 007편 격추는 모두 일단은 (1) 우리 여객기가 항법사의 실수로 소련 영공에 잘못 들어갔고 (2) 소련 전투기의 “꼼짝 말고 손들어” 요구에 제대로 반응을 못 했기 때문에 벌어졌다. 지금은 개인용 자동차 내비에도 당연히 보급돼 있는 GPS가 그때는 국제선 민항기에도 없었다는 게 믿어지지 않는다. 조종실에는 조종사 2명에다가 항공 기관사, 그리고 항법사까지 다 따로 4명이나 타고 있었다.

소련의 전투기 조종사들도 살인마 싸이코패스는 아니니 “저건 그냥 민항기인데..?” 생각을 하긴 했다. 하지만 민항기처럼 위장하고 날아다니는 미국 정찰기도 있고, 마침 저 비행기는 명령에 불응하고 도주하려고 상승하는 기미도 보이고 하니 격추 명령이 떨어져서 공격을 하게 되었다.

902편의 경우, 다행히 직타를 맞지는 않았지만 스플래시 대미지 때문에 왼쪽 날개 부위 등에 비행 불가능한 손상을 입었다. 그래도 조종사가 혼신을 다해 조종한 덕분에 비행기는 북극권의 얼어붙은 호수 위에 비상 착륙하는 데 성공했다. 승객도 2명만 잃고 모두 생존했으며, 그 2명도 추락 충격이 아니라 미사일 파편 때문에 숨진 것이었다.

이 사고 이후 항법사는 사표를 내고 항공업계를 떠났다. 그 반면, 위기 상황에서 비상 착륙을 훌륭하게 성공시킨 조종사들은 지금으로 치면 2009년 허드슨 강의 기적(버드 스트라이크로 인한 US 에어웨이즈 1549편 불시착 사고)만큼이나 칭송 받고 국내외로 상을 받았다. 형식적인 징계만 잠깐 받았다가 금세 조종사로 복직했다. 사실, 소련부터가 저런 상황에서 저런 조종을 해낸 조종사는 평범한 민항기 조종사가 아니라 고도의 스파이 내지 공작원일 거라고 의심하여 고강도 조사를 했을 정도였다.

비교적 온전하게 남은 보잉 707 기체는 소련이 꿀꺽 했다. 기체를 다 뜯어서 분석하면서 자기네 기술 개발에 활용했다고 한다. 졸지에 경쟁 적성국인 미국의 항공기를 하나 얻은 건 옛날에 전투기 조종사 노 금석 씨가 귀순해서 우리가 뜻하지 않게 Mig-15를 득템한 것과 같은 급의 횡재였다.

그러나, 그로부터 5년 남짓 뒤에 벌어진 격추 때는 저런 기적이 없었다. 우리나라에서는 007이라고 하면 제임스 본드의 007 시리즈뿐만 아니라 비극적인 사고가 떠오르는 이유가 이것 때문이다.
격추로 인해 승객 246+승무원 23 총 269명의 인원이 전원 사망했기 때문에 이건 현재까지 대한민국 국적기의 사망자 수 1위의 사고이다. 게다가 바다 위에 떨어졌기 때문에 일부 유품을 제외하면 아무 잔해나 시신도 수습을 못 했다.

이때는 전국적으로 극심한 반소(그리고 반공도 더불어..) 감정이 벌어졌으며 미국 역시 소련을 ‘악의 제국’이라고 신랄하게 디스했다. 소련은 민항기인 줄 몰랐다고 잡아뗐지만 미국은 정치적 후폭풍을 감수하고 첩보 도청 기록까지 폭로하면서 소련의 거짓말을 버로우 태웠다. 이건 미국이 지금까지 소련을 도청해 왔다는 사실 자체를 터뜨리는 것이니 마피아 게임에서 경찰이 자기 정체를 드러내는 것만큼이나 큰 모험이었다.

그런 일이 있고 나서 4년쯤 뒤, 1987년 11월에는 대한 항공 858편이 인도양 상공에서 폭탄이 터지는 바람에 탑승자 전원 사망+실종이라는 끔찍한 참사를 당했다. 중동에서 고생하며 돈 벌다가 이제 좀 휴가차 고향으로 돌아가던 무고한 노동자들을 죽였으니 이건 일제 해방 후에 겨우 귀국하던 무고한 노동자들을 수장시킨 우키시마 호 폭침 사고와 같은 급의 죄질이다.

의외로 작은 폭탄으로 기체에다 자그마한 구멍만 내도 비행기 전체를 순식간에 작살내는 게 가능하다. 기체가 워낙 빠르게 움직이고 있기 때문에 바늘 구멍 하나만 생겨도 안팎의 압력차를 감당치 못해서 기체가 박살 나는 건 순식간이기 때문이다. 커다란 풍선이 펑 터지고 작은 구멍으로 댐 전체가 무너지고 컬럼비아 우주왕복선이 폭발한 것도 다 비슷한 원리이다.

우리나라는 북한 테러범의 비행기 하이잭을 몇 번 겪은 뒤부터는 조종실 보안은 미국 국내기보다도 철저해졌다. 또한 국제적으로 위탁 수하물 폭탄 테러가 없지 않았기 때문에 승객과 짐이 반드시 모두 일치할 때만 비행기가 뜨게 규정이 정착해 가고 있었다.
하지만 이런 와중에 또 위탁 수하물 폭탄 테러를 막지 못한 것은 참 애석한 일이었다.

뭐, 약간의 추적을 통해 범인을 금세 잡긴 했다. 북괴의 테러범 중 중년 남성은 신속하게 청산가리를 깨물어서 자살했지만 젊은 여성(김 현희)은 실패하고 체포되었고, 결국 전향해서 지금까지 살아 있게 됐다. 다만, 김 현희의 가족은 당사자의 자살 실패로 인해 징벌 숙청을 당했다는 것이 탈북자의 증언이다.

5공 시절 희대의 병맛 자작극인 수지 김 간첩 조작 사건과 시기적으로 비슷한 것으로 인해, 858 폭탄 테러마저도 북풍 자작극이라고 주장하는 사람도 있는 모양이다. 그 논리도 처음엔 “단순 항공 사고를 북한 소행으로 위장한다” 정도이던 것이 아예 “안기부가 일부러 비행기를 폭파시켰다”로 뻥의 규모가 커졌다. 무슨 “박 근혜가 잠수함을 보내서 세월호를 침몰시켰다”처럼 말이다.
하지만 이건 88 서울 올림픽 개최의 방해를 노리고 북한이 벌인 테러가 100% 맞으며 엄연한 팩트이다.

수백 명을 죽게 한 흉악 테러범을 국가에서 괜히 사면까지 해 준 게 아니다. 가해자 당사자를 증인 차원에서 시퍼렇게 살려 둠으로써 저런 쓸데없는 음모론을 버로우 태우려는 목적도 있다. (달에 갔다 온 아폴로 승무원들도 멀쩡히 살아 있어서 자작극설 음모론자들을 관광 보내곤 했다. / 반대로 케네디 대통령 암살 사건의 경우, 가해 용의자가 신속하게 살해당함은 물론이고 그 용의자를 죽인 사람까지 곧 죽어 버렸으니 온갖 음모론이..)

어디 그 뿐이랴? 오죽했으면 북한의 고위 관리마저 말실수로나마 테러를 시인하며 자폭했을 정도이니 빼도 박도 못 한다.
“우리는 KAL기 사건 이후로는 한 번도 테러 저지른 적 없어. 우리 공화국을 테러 지원국으로 낙인 찍는 건 억울하다구.” 그러니 KAL기 테러는 확실하게 자기 소행이라는 얘기잖아. ㅋㅋㅋㅋㅋ 마치 성경에서 요셉의 형들이 첩자로 몰리니까 묻지도 않은 가족 관계까지 술술 다 얘기하는 것과 비슷한 꼴이 됐다.

858편의 경우, 앞서 발생한 격추 사고와는 달리, 대한 항공에 지금과 같은 하늘색 신도색이 도입된 뒤에 벌어진 사고이기 때문에 시기적으로 좀 더 최근 사건이라는 느낌이 든다. 사실은 이웃 JAL의 도색을 베낀 스타일을 쓰다가 도색을 싹 교체한 것도 007편의 사고 이후에 분위기 쇄신을 위해 의도적으로 추진된 것이다.

조금 정치색 넣은 발언을 하자면, 민항기 오인 격추나 폭탄 테러를 미국이 저질렀으면 아마 우리나라 좌빨들은 두고두고 트집 잡으면서 시체팔이 하며 난리를 쳤을 것이다. 쟤들이 일본· 미국을 욕하는 것과 중국· 북한에 침묵하는 것은 절대로 동일한 판단 잣대가 아니라는 게 익히 알려진 사실이니까. 쟤네들의 말에도 일부 팩트가 있을 수는 있다. 그러나 외눈박이의 말이 문맥과 팩트의 전부인 줄로 아는 건 매우 잘못된 태도이다.

2. 그 밖에

(1) 지구 방방곡곡에 통신과 첩보용 인공위성들이 날아다니는 21세기라고 해서 인간이 지구 표면에서 일어나는 모든 사건들을 이 잡듯이 다 파악하고 있는 건 아니다. 오대양 망망대해 위에서 비행기가 갑자기 폭발하거나 추락하면 지금도 비행기가 시체고 잔해고 거의 발견을 못 하고 깔끔하게 증발하는 게 가능하다. 비교적 최근인 2014년에 발생한 말레이시아 항공 370편 실종 사고는 그런 극단적인 사례이다. 뭐, 그건 공중분해가 아니며 정황상 기체가 고스란히 추락해서 바다에 처박힌 게 확실해 보인다고 한다.

(2) 제트 여객기가 등장한 초창기에는 정비 불량 내지 심지어 설계 불량으로 인해 멀쩡히 비행하던 중에 비행기가 뒷문이 열리거나 심지어 공중분해 되는 끔찍한 사고가 있긴 했다. 중화 항공 611편 공중분해(2002)는 막 옛날도 아니다. 얘도 과거의 대한 항공 만만찮게 4년 주기로 대형 사고를 치곤 해서 위험한 항공사로 평이 안 좋은 편이었는데 다행히 요즘은 좀 조용하다.
엄청 높은 고도에서 사람이 내팽개쳐지면 아예 공중에서 기절하고 목숨을 잃기도 한다고 한다. 아니면 착수 충격으로 곧장 죽지, 끝까지 살아남았다가 바닷물에서 익사하는 경우는 잘 없다. 참고로 우주왕복선 챌린저 호 폭발 사고 때도 승무원들은 폭발 직후에는 살아 있다가 나중에 착수 충격으로 사망했다.

(3) 비행기는 예로부터 테러의 좋은 표적이 돼 왔기 때문에 9· 11까지 겪은 오늘날은 비행 중에 조종실은 같은 승무원들이 드나들 때 외에는 절대로 개방되지 않게 보안 규정이 강화되었다. 문 자체도 어지간한 총탄으로는 꿈쩍도 안 하도록 잠금 장치가 튼튼해졌다.
그런데.. 비록 극소수의 사례이긴 하지만 테러리스트가 아니라 반대로 조종사 쪽에서 '너 죽고 나 죽자' 심보로 거의 고의로 사고를 일으킨 경우도 있었다.

이집트 항공 990편 추락 사고(1999)는 비록 이집트에서는 자국민 감싸기 차원에서 실드를 치고 있는지 모르지만, 객관적인 정황상으로는 부기장의 고의 자살 추락이 매우 유력한 상황이며, 저먼윙스 9525편 추락 사고(2015)는 부기장이 기장을 화장실로 보낸 사이에 문을 걸어잠그고 모든 신호와 통신을 씹고 비행기를 추락시킨 기록이 다 남아 있다. 테러리스트를 절대 들어올 수 없게 만들어진 튼튼한 문이 이번엔 부기장의 행동을 저지시킬 여지를 차단한 것이다.
이런 일도 있고 하니 다른 교통수단은 몰라도 대형 여객기는 1인 승무가 정서상 더욱 어려울 것으로 예상된다.

(4) 옛날에는 페리나 관광 열차도 아니고 제트 여객기를 이용한 남극 관광이 있었구나..! 1979년 11월에는 에어 뉴질랜드 901편이 남극의 설산과 부딪치고 추락하는 바람에 탑승자 전원이 사망하는 사고가 났다. 한 지점을 기준으로 바뀐 비행 계획을 다른 지점에서 잘못 적용해서 엉뚱한 곳을 날았으며, 위 아래도 분간할 수 없을 정도로 심한 시야 화이트아웃 현상으로 인해, 조종사들이 바로 앞에 있는 산도 제대로 분간할 수 없을 지경이었다고 한다.

또한, 사고 지점이 워낙 오지· 험지이기 때문에 시신과 일부 잔해를 제외한 나머지 기체는 치울 엄두를 못 내고 지금까지 남극에 버려져 있다고 한다. 이 사고 이후로는 민항기를 이용한 남극 영공 비행은 국제적으로 전면 금지됐다.

(5) 일본에서는 큰 사고까지는 아니지만 아찔한 순간을 좀 겪은 적이 있었다.
2011년 9월 6일 밤 10시 50분경, 오키나와의 나하 공항을 출발해서 도쿄 국제공항으로 가던 전일본공수 140편 여객기(보잉 737)가 조종사의 부주의로 인해 약 10초간 roll 각도가 90도를 넘어 거의 130도까지 뒤집히는 배면비행을 했다. 이건 '전도'를 넘어 '전복'에 가까운 수준이니, 전투기가 아닌 여객기가 의도치 않게 배면비행을 한 거의 유일한 사례이다.

기장이 화장실에 갔다가 돌아왔는데 부기장이 조종실 문 개폐 스위치 대신 실수로 꼬리날개의 방향타 스위치를 잘못 누르는 바람에 비행기가 요동을 친 것이었다. 그 10초 동안 비행기는 양력을 크게 잃고 거의 1900m에 가까운 고도를 하강했지만, 잘못을 깨달은 조종사들이 급히 자세를 바로잡아서 상태를 원상 복귀시켰다. 어쨌든 목적지에 무사히 착륙하긴 했다. 이때는 비행기가 순항 중이고 대부분의 승객들이 밤에 창문 닫고 안전벨트 차림으로 자고 있었으며, 어차피 비행기가 자유 낙하에 가까운 추락 중이었기 때문에 대부분의 승객들은 배면비행 사실 자체를 인지하지 못했다고 한다.

아울러, 2001년 1월 31일에 발생한 일본 스루가만 상공 니어미스 사고는 JAL 소속 여객기 두 대(보잉 747 vs DC-10)가 관제 실수로 인해 동일 고도에서 마주쳐서 공중 충돌할 뻔한 사고로, 서류상으로는 준사고가 아닌 사고로 분류되어 있다. 정말 큰일날 뻔한 순간이었다.

Posted by 사무엘

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

1. 텔레비전 수상기

자동차, 컴퓨터, 전화기만큼이나 텔레비전이 기술적으로 무섭게 발전한 것도 보면 굉장히 경이롭다.

  • 디지털: 노이즈라는 게 없어졌다는 게 솔직히 아직도 잘 안 믿긴다. 옛날 아날로그 특유의 무신호 치지직 화면(white noise)도 없어지고 화면조정용 색깔막대 영상도 볼 일이 없어졌다. 같은 전파를 주고받는 방법을 도대체 어떻게 바꿔서 이런 게 실현된 걸까? 디지털에서는 오류가 너무 심해서 화면이 아예 안 나오면 안 나왔지, 치직거리면서 나오지는 않는다.
  • 고화질: 두 말하면 잔소리. 화질이 정말 엄청나게 좋아졌다. 단, 디지털과 고화질이 동치 개념은 아니기 때문에 과거엔 아날로그 기반으로 HD 규격이 나온 게 있기도 하다.
  • 왕창 크고 평평하고 납작한 수상기: 과거의 브라운관 TV로는 상상도 못 할 일이다. 브라운관은 화면 크기에 정비례해서 두께까지 왕창 두꺼워지기 때문에(공간 복잡도 O(n^3)!) 일정 수준 이상으로 대형화가 도저히 불가능했다. 그리고 어차피 영상 신호의 화질도 요즘 같은 대화면을 받쳐줄 만치 좋지 않았다.

TV를 흔히 '바보 상자'라고 부르는데.. 요즘 텔레비전은 차라리 패널(panel)에 가깝지 이제 상자 모양이 아니다. 옛날에(2006년) 한국 애니메이션 고등학교에서 텔레비전에 중독된 현대인을 풍자하는 black box라는 이름의 단편 애니메이션을 만들어서 오타와 애니메이션 페스티벌에서 입상한 바 있다. 텔레비전 안에 온갖 희한한 세계가 펼쳐져 있다. 허나, 요즘 텔레비전의 모양으로는 그런 소재를 설정할 수 없었을 것이다.

'바보 상자'라는 개념은 영어권에도 있어서 fool's tube라고 하는데.. 튜브 역시 브라운관의 잔재가 담긴 별명인 건 동일하다. 그래도 '유튜브'가 이 별명을 잘 활용해서 지어진 이름이다.

또한 요즘 텔레비전은 무슨 형광등 켜지듯이 켠 직후에 서서히 밝아지면서 화면이 나타나지 않는다. 그리고 밝기와 색감 등 잡다한 요소들을 조절하는 다이얼 같은 것도 다 사라졌으며, 정 조절이 필요하면 모니터 자체에 내장된 프로그램 UI를 통해서 소프트웨어적으로 조절한다. 그래서 모니터에 다이얼이 있는 게 아니라 그냥 상하좌우 화살표와 Enter, ESC에 해당하는 key가 있으며, 화살표 key가 트랙패드 같은 걸로 대체된 물건도 있다.

한때 TV는 평범한 월급쟁이 가정에서는 구경할 수 없는 고가 사치품이었기 때문에 사람들은 부잣집이나 공공장소에 옹기종기 모여서 TV를 시청해야 했다. 그리고 잠금 장치가 달린 TV 전용 케이스도 있을 정도였다.
지금이야 뭐 개인용 스마트폰으로 TV 방송을 시청하는 시대가 된 지 오래이다. 그러니 텔레비전 케이스도 '컴퓨터 책상'만큼이나 아련한 옛날 추억이 돼 간다. 하지만 지금 당연한 것이 생각보다 가까운 과거에는 당연한 것이 아니었다.

2. 대한뉴스

요 근래부터 옛날 대한뉴스 영상들이 유튜브에 올라오고 있어서 재미있게 본다. 경부 고속도로 개통이나 국민 교육 헌장 선포 같은 유명한 사건도 있지만 본인의 주 관심 분야는 철도 개통 쪽이다. 화면 중앙에 태극 마크 워터마크가 엷게 첨가됐지만 전반적인 화질은 괜찮다.

대한뉴스는 무려 1953년부터 1994년 말까지 국립 영화 제작소에서 만들었던 '나라 안팎 사정 기록 영상'이다. 만드는 곳의 특성상 뭔가 국방일보스럽고 정책 및 프로파간다 홍보(긍정적인 것만) 성격이 강하긴 하지만, 그래도 엄연히 잘 보존된 역사 기록이며 영상 실록 역할을 한다.
그 시절엔 이게 전국의 모든 극장에서 영화 상영 전에 의무적으로 흘러나왔다고 한다. 레퍼토리는 두 주 간격으로 교체되었다고. 국산 영화를 일정 비율 이상 강제로 상영해야 하는 스크린 쿼터라든가.. 과거에 음반에 의무적으로 건전가요를 한 곡 넣어야 했던 것과 비슷한 관행이다.

하지만 대한뉴스가 그저 정권의 나팔수 이상으로 오늘날 귀중한 영상 자료인 이유는 이것 말고 딱히 대안이 없는 시기도 있기 때문이다.
1950~60년대에도 텔레비전 방송 자체는 물론 있었다. 하지만 여러분 중에 박통 말고 이 승만 대통령이 텔레비전에 나온 걸 기억하거나 다른 매체를 통해 본 분 계시는가? 없을 거다. 그 시절에 방송되었다 하더라도 지금 기록이 남아 있지 않다.

그때는 TV를 갖고 있는 집이 극소수였다는 점을 차치하고라도, 시청자 말고 방송국의 입장에서도 물자 사정이 열악했기 때문에 영상 기록을 지금처럼 몽땅 저장(아카이빙)할 여건이 못 됐다. 하물며 그 당시 최첨단을 달리던 방송 장비나 저장 매체는 얼마나 비쌌겠는가? 게다가 외제 수입 일색이기까지 했지 않겠는가?

녹화라는 건 꼭 필요한 것만 아주 신중하게 골라서 해야 했으며, 또한 한 테이프를 계속해서 덮어써서 녹화하면서 우려먹어야 했다. 그러니 그 시절의 방송 기록은 남아 있지 않다. 그 시절의 영상 기록은 외국인 선교사나 종군기자의 촬영분이 아니라면 그냥 닥치고 국가가 알아서 고이 보관해 놓은 대한뉴스로 가야 한다. "새로운 특급열차는 우리 이 대통령 각하께서 무궁화호라고 명명해 주셨는데.."(1960년 2월) 이렇게 전해지는 보도 자료는 출처가 무슨 KBS 같은 전파 타는 뉴스 방송이 아니라 대한뉴스라는 영화라는 것이다. 하긴, 저 때는 아직 "KBS"라는 이름의 방송사조차 존재하지 않았었다.

대한뉴스를 아무 거나 골라서 틀어 보면 건전가요나 행진곡 풍의 촌티 풀풀 나는 BGM에, 감정이라고는 싹 빠진 국어책 읽기 같은 건조한 남자 목소리가 참 인상적이다.
그리고 단순히 정책 홍보가 아니라 뭔가 초등학생 선생님이 애들 가르치는 듯한 설명충 스타일이다. "그럼 태백선 열차를 타고 우리나라 최고의 시멘트 생산지인 어디어디로 가 보시겠습니다." 같은 식. 무지한 백성들을 선진조국 창조 건설의 역군으로 계몽하려는 의지가 느껴진다. =_=;;

정말 격세지감 그 자체이다만, 196, 70년대에 농촌 깡촌 오지에서 세상 돌아가는 사정을 알 길이 없는 사람들의 입장에서는 저런 거라도 필요했다. 옛날에는 깜깜한 방에서 무성 영화를 틀어 놓고 "우리나라 바깥에는 이런 곳도 있고 이런 일도 벌어지고 있답니다"라고 변사가 따로 설명해 주면 사람들이 입 헤 벌리고 구경했으며, 소파 방 정환은 영사기도 아니고 영사기 내지 프로젝터의 전신인 환등기만 갖고도 온갖 덕질을 했지 않던가. 게다가 국내에서 영화는 텔레비전보다 더 일찍부터 컬러로 바뀌기도 했다.

개나 소나 사진과 동영상을 찍어 올리고 그게 순식간에 인터넷 상으로 퍼져나가고 1인 방송 미디어까지 등장한 오늘날의 잣대로 그 시절을 그저 꼬질꼬질하다고 판단하는 건 적절하지 못하다. 당시의 최첨단을 달리던 영화· 방송의 분위기가 저렇게 꼬질꼬질할 정도였으면 오프라인 사회 분위기는 훨씬 더 권위주의적이고 보수적이었다고 봐야 한다. "옛날 어린이들은 호환 마마 전쟁.." 이거 기억 나시지 않는가?

허나, 집집마다 전화와 신문, 올컬러 TV가 싸게 보급되고 지식과 소식의 소통 속도가 빨라지면서 대한뉴스는 존재 의의와 가성비가 급격히 떨어졌다. TV 뉴스로 진작부터 접한 나라 안팎 소식을 한참 뒤에 극장에서 대한뉴스로 뒷북으로 접하는 지경이 됐다. 그러니 대한뉴스를 폐지하자는 여론이 진작부터 거론되었으며, 얘는 그래도 1994년 말까지 꿋꿋이 만들어지고 상영되다가 역사 속으로 사라졌다.
이건 어찌 보면 PC 통신이 인터넷에 밀려 사라진 것과 비슷한 양상이다. 시기를 따지자면 방위병이 폐지된 때와 동일하며, 수인선 협궤 철도가 없어지기 딱 1년 전의 일이다.

옛날에는 텔레비전은 방송 시간이 지금보다 훨씬 짧았다(24시간 방송이 시작된 것 자체가 21세기부터..). 그리고 기술과 자재의 부족으로 인해 생방송이 많았고, 영화는 후시녹음이 많았다. 아니면 똑같이 후시녹음을 하더라도 후시녹음을 한 어설픈 티가 요즘 영상물보다 훨씬 더 났다. 배경은 너무 조용하고 배우 목소리는 울리고 입 모양 씽크가 안 맞는 등.

철도 분야의 대한뉴스를 몇 편 보니, 열차 달리는 장면에 같이 삽입된 열차 소리는 십중팔구 화면 속의 그 열차가 실제로 달리는 소리가 아니다. 화면엔 디젤 기관차 내지 지하철 전동차가 달리는데 소리는 증기 기관차 달리는 '쉭 씩'인 식이다. 이런 것도 당연히 화면 따로 소리 따로인 후시녹음이다.
베테랑 기관사가 역을 저속으로 통과하면서 통표를 확 낚아채거나 거는 모습이 참 인상적이었다. 요즘은 볼 수 없는 장면이다.

그리고 끝으로.. 옛날에 영상물에다 자막은 어떻게 만들어 넣었을지가 궁금해진다. 텔레비전 화면에 넣는 방법과 영화 화면에 넣는 방법이 서로 달랐을 텐데.
옛날에는 그냥 닥치고 어설픈 흰색 손글씨밖에 없었다. 그러던 것이 시간이 흐르면서 서체는 활자로 바뀌고 흰 글씨 주변에 검은 테두리가 추가되었다.

요즘은 자막도 흰 별도의 배경에다가 검은 글씨 형태로 넣는 추세이다. 그래서 배경이 없이 고딕· 둥근고딕· 엑스포체 같은 옛날 서체로 자막이 들어간 영상을 딱 보면 1990년대 영상인 게 느껴진다. 아래의 자막들을 보시라.

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

Posted by 사무엘

2017/03/16 08:35 2017/03/16 08:35
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1338

여러가지 철도 동향

1. 수서 고속철

작년 말엔 잘 알다시피 서울의 동남부를 지나는 수서 발 수도권 고속철이 개통했다. 얘는 지금까지 개통해 온 호남, 전라, 공항선, 동해선, 경전선 KTX와는 달리 서울 구간에서 완전히 새로운 선로를 사용하며, 운영 회사도 코레일이 아닌 다른 기업이다. 결정적으로 차량 역시 KTX가 아닌 SRT라는 다른 이니셜을 쓴다. 지금까지 우리가 생각해 온 코레일 관할의 고속철도와는 조금 다른 고속철이 또 하나 생긴 셈이다.

서울 강남과 성남시 일대는 구한말 때부터 철도가 놓였던 서울 강북의 구시가지와는 달리 전통적으로 철도 불모지라고 여겨져 왔다. 하지만 여기도 드디어 장거리 간선 철도 시대가 열렸다는 것이 매우 고무적인 일이다.
열차는 수서부터 평택까지 40km가 넘는 구간을 온통 고가가 아닌 지하로 다니다가 지제 역 이남에서부터 기존 고속선과 합류하여 천안아산 방면으로 간다. 경부고속선은 천안 이북에서는 수도권 고속선과 갈라지고, 이남에서는 호남 고속선과 갈라지는 형태가 됐다.

수서 고속철은 기존 경부선을 전혀 경유하지 않는다. 얘 덕분에 경부선 금천구청 이북의 기존선에 여유가 좀 생겼으며, 호남· 전라· 장항선이 철수했던 서울 역은 KTX 개통 이후 거의 10여 년 만에 다시 경부 이외의 타 노선 열차들을 부분적으로 취급하게 될 거라고 한다.
수도권 고속철 선로는 고심도 급행 광역전철(일명 GTX)과도 공유 예정이라고 하지만 GTX는 아직까지 진척이 없다. 이매-판교 사이에, 그리고 구성 역 근처에 또 신설한다는 말이 있는 역은 GTX 역을 말한다.

뭐 그렇다고 해도 코레일과 SR (SRT 운영사)의 관계는 대한 항공과 진에어의 관계 비슷한 정도밖에 되지 않아 보인다. 대한 항공 vs 아시아나 같은 거창한 걸 생각해서는 곤란하다.
공항 철도는 명목상 다른 회사이긴 하지만 여전히 코레일과 더 가까이 있는 어정쩡한 관계인 걸로 안다.

2. 서울 메트로와 도철의 합병

고속철에는 경쟁사가 등장했지만, 서울 지하철은 경쟁 구도와는 정반대로 서울 메트로와 서울 도시철도 공사의 합병이 올 5월쯤에 결정되었다. 대통령 선거 다시 하는 시기와 비슷하게 됐구나. 이로써 1~8호선의 관할 기관이 하나로 합쳐지게 됐다. (9호선은 여전히 혼자 독고다이 체제)

하긴, 한 도시의 지하철 노선에 사기업도 아니고 동일 업종의 공기업이 둘씩이나 있는 건 좀 흔한 모습은 아니긴 했다. 회사가 완전히 하나가 돼 버리면 중복 투자가 줄어들고 경영 효율이 올라갈 것이다. 서울 말고 타 도시들은 '교통 공사'라는 이름으로 지하철 운영사와 시내버스 운영사까지 하나로 통합된 사례도 있으니 말이다. 다만, 운영사의 통합으로 인해 파업에 상대적으로 취약해지지는 않겠나 하는 약간의 우려도 있다.

공교롭게도 두 회사의 지리적인 통합 본진은 서메 쪽이 아닌 도철 쪽으로 결정됐는데, 이 역시 신의 한수가 가미된 통찰이다. 어차피 도철 본사의 근처에는 도철이 아닌 서메 소속의 '군자 차량기지'가 있기 때문이다. 서울의 외곽이 아닌 시내 중심부에 지하철 회사 본사가 있고 차량기지까지 있으니 최적의 입지 조건이 아닐 수 없다.

3. 부산-울산 광역전철 1차 구간(부전-일광)

파업 때문에 한 50일 정도 딜레이를 먹는 악재를 겪었지만, 그래도 2016년을 넘기지는 않고 간신히 개통했다. 부산의 북쪽 외곽인 기장군에 있는 일광 해수욕장을 전철 타고 찾아갈 수 있게 됐다.
4량 편성에 노선색은 군청색, 서울을 지나지 않는 광역전철이라는 점에서는 경강선과도 심상이 비슷해 보인다. 아니, '코레일 블루'라고 불리는 저 군청색은 전국 어디서든 코레일 관할의 광역전철을 나타내는 디폴트 대표색이 된 건지도 모른다.

서울-수도권 광역전철이 1974년 개통인데 다음으로 부산은 이거 뭐 40년을 훌쩍 넘겨서야 광역전철이 생기는구나. 그래도 지하철이나 광역전철 말고 경전철은 반대로 부산에서 국내 최초로 시작해서(4호선, 김해) 의정부와 용인, 대구 등을 거쳐 서울로 역수입되는 중이다.

4. 새마을호의 추억

과거에 비둘기호는 정선선에 최후의 열차가 다니다가 2000년 11월, 01년도 수능 바로 전날에 마지막 운행을 하고 퇴역했다.
객차형 통일호는 과거에 KTX의 개통과 함께 여러 노선에서 동시에 사라졌고(경춘선, 중앙선 등)..
동차형 통일호인 통근열차는 현재 전국에서 딱 한 군데 경원선에만 다니고 있다. 이것도 수 년 뒤에 수도권 전철 1호선이 연천까지 연장되면 사라질 것이다.

무궁화호야 제일 보편적이고 흔한 등급이며 ‘누리로’가 근본적으로 무궁화호를 대체하는 컨셉도 아니기 때문에 당분간 망할 일이 없다. 하지만 새마을호는 KTX 같은 상위 열차와 대체 전동차들의 등장으로 인해 지위가 굉장히 위태로워져 있다.
경부선 같은 주요 간선은 ITX-새마을로 완전히 대체됐으며, 재래식 새마을호는 객차형만 남아서 유일하게 장항선에서 명맥을 잇고 있기 때문이다. 거리가 적당히 길고 그나마 전철화가 안 된 덕분에 아직까지 살아 있는 거다.

한 계급의 열차가 최후까지 운행되던 곳이 정선선, 경원선, 장항선의 순으로 변화한다니 흥미롭다.

지난해 11월 말에는 이란에서 열차 충돌 사고가 발생했다. 45명 가까이 사망하고 100여 명이 넘는 사람들이 다쳤다.
이건 고장으로 멈춰 서 있는 열차를 후속열차가 발견을 못 하고 들이받은 전형적인 신호 시스템 미비 후진국형 철도 사고이다. 화재까지 발생했다.
그런데 객차를 보아하니 우리나라에서 내구연한 경과로 인해 퇴역하고 2014년에 저기로 수출된 새마을호 객차(아마도 동차형)랜다. 친근한 저 창문 모양만 딱 봐도.. OTL

사용자 삽입 이미지

그러나 하늘과 땅은 사라져도 새마을호 객실에서 울려퍼졌던 Looking for you의 기억은 없어지지 않을 것이다(shall not pass away).

5. 정태보존된 재래식 열차들

내가 철도 박물관을 마지막으로 찾아간 때가 2013년경이었는데 그때 이후로 철박에는 새로운 유물 차량이 더 추가되었는가 보다.
먼저, 지금의 경복호 이전에 대통령 전용 열차로 사용되었다고 하는 일명 ‘특별동차’이다. 경복호가 새마을호 DHC의 파생형이라면, 이 특별동차는 전신인 DEC의 파생형이다.

사용자 삽입 이미지

아예 이 승만 시절의 옛날 객차형 열차도 아니고 이런 동차형 열차도 있었다는 게 믿어지지 않는다.
1969년에 도입했다고 하니까 시기적으로는 DEC보다 훨씬 더 일찍 도입된 것이고 차라리 옛날 관광호와 비슷한 연배이다. 철박에서 이거 전시 기념 행사는 2015년 5월 4일에 치러졌다고 한다.

그리고 다음으로, 무궁화호 디젤 동차라고 불리는 NDC도 현업에서 완전히 은퇴한 뒤 2015년 저 비슷한 시기에 철도 박물관에 하나 들어갔다. 얘 역시 아주 희귀한 차종으로, 한때는 철도청장 내지 코레일 사장 전용 열차로 쓰이는 편성도 있었다고 한다.
DEC는 새마을호로 도입됐다가 무궁화호로 강등됐고, CDC는 통일호(통근열차)에서 보기 드물게 무궁화호로 승격된 반면, NDC는 도입부터 폐차 때까지 시종일관 무궁화호로만 쓰였다는 차이가 있다.

철도 박물관에 컨텐츠가 추가되었다니 기쁘다.
그나저나 새마을호 디젤 동차는 철박에 없고 웬 경부선 청도 역 한켠에 동력차와 객차가 하나 보존되어 있다. 거기가 철도가 강세인 동네이기도 하고.
그리고 중앙선 풍기 역에 901호 증기 기관차가 정태보존 중이다. 철박에 있는 기관차는 아마 파시 형이지 싶다. 이런 정보도 어디 한데 모아 놓고 공유할 필요가 있어 보인다.

6. 철도 차량 주행 시험장

자동차야 개발 과정에서 테스트를(특히 고속 주행) 위해 사용되는 주행 시험장 트랙이 있다. 현대 자동차의 경우 기본적으로 울산에 있고 화성시 남양 연구소에 더 큰 시험장을 보유하고 있어서 항공 사진으로도 확인 가능하다. 심지어 미국의 모하비 사막에도 국내의 시험장보다도 훨씬 더 거대한 시험장이 있다.
철도 차량은 새로 개통하는 노선에서 시운전을 하는 식으로 주행 시험을 치른다. 그러나 굳이 특정 철도 노선에 구애받지 않고 개발하는 차량 자체에 대한 주행 시험을 지속적으로 수행할 수 있는 선로가 필요한 것도 사실이다.

우리나라는 철도 차량을 위한 전용 시험선이 존재하지 않았다. 그래서 전라남도에 원래 화물 철도로 계획했던 대불선을 시험선으로 활용해 왔다. 믿기 어렵겠지만 신분당선 전동차도 개통 전에 여기서 테스트를 받았다. (당장 떠오르는 차량이 신분당선 전동차여서..) 화물 열차가 다니라고 전철화까지 한 철도인데 정작 화물 수송용으로는 안 쓰여서 잉여로 전락했지만, 그 대신 다행히 다른 용도를 찾은 셈이다.

그러나 여기는 처음부터 시험선으로 만들어진 선로가 아니다 보니 시설이 아무래도 미흡하고 고속 주행이 어려웠다. 결정적으로 선로가 순환선 형태도 아니기 때문에 양 말단에서는 방향을 전환해야 했고 몇 바퀴 뺑뺑이를 돌며 테스트를 할 수도 없었다.

이런 이유로 인해 2018년 개통을 목표로 여객 철도도, 화물 철도도 아닌 철도 차량 전용 시험선의 건설이 추진되고 있는데.. 위지가 어디냐 하면 오송 근처이다. 안 그래도 거기 근처에는 대전-천안 시험선이 건설되던 당시부터 쓰였던 레일 공장과 차량 기지도 있고, 경부선 기존선과 고속선, 충북선까지 다 근처에 있기 때문에 이들 내부를 선으로 연결하면 순환선을 만들기 아주 좋다.
국내의 고속선 선로 중에서 시험선 명목으로 제일 먼저 건설이 시작된 구간의 주변에, 아주 흥미로운 특수 목적 철도가 새로 만들어진다니 기대된다.

7. 안전벨트가 없는 교통수단

고속철 얘기부터 시작해서 박물관과 과거 추억의 열차 얘기까지 골고루 늘어놓게 됐다.
본인은 얼마 전엔 오랜만에 영화관에서 영화를 관람한 적이 있었다. 그런데 좌석에 앉고 나니 복부에 아무 압박이 없는 느낌이 굉장히 이상하고 어색했다.
얼마 못 가 좌석 주변을 손으로 더듬으며 안전벨트를 찾는 나 자신을 발견할 수 있었다. 이 정도 폭과 간격인 좌석은 고속버스나 비행기의 좌석과 굉장히 비슷하게 느껴져서 말이다.

난 택시를 타도 벨트부터 착용하는 드문 승객 중 하나다. 아니, 택시에서는 매우 높은 확률로 내가 스스로 운전할 때보다 더 아찔한 기동과 과격한 G를 경험하는 편이니, 방어 기질이 발휘되어 적극적으로 벨트를 하게 된다.
우리나라에 철도가 전국 방방곡곡에 깔려 있어서 평소에 열차를 많이 타고 다녔으면 나에게 이런 강박관념이 생길 일이 없었을 것이다. 철도는 안전벨트를 구비할 필요가 없을 정도로 부드럽게 가감속 하며 매우 안전하고 웰빙스러운 교통수단이다.

그런 의미에서 수서 고속철을 어서 타 보고 싶다. 율현 터널은 어떻게 생겨먹었는지 무척 궁금하다.
대학 시절에 신화 창조의 비밀 다큐에서 고속철 대전-천안 시험선 건설 에피소드를 본 게 엊그제 같은데 비슷한 길이의 고속선이 이제 고가로도 모자라서 올지하로 뚫렸다는 게 믿어지지 않는다.
수서 고속철 타고 부산 가서 부산-울산 광역전철을 시승하고 오면 즐거운 철도 답사가 되겠다. 둘은 비슷한 시기인 2016년 12월에 개통하기도 했으니 말이다.

평창 가는 철도도 가까운 미래에 완전 개통하겠지.. 이거 준비하느라 중앙선도 서울 수도권 구간은 3, 40여 년 전에 경부선이 한창 고속화하던 것처럼 이제야 선로를 개량하고 열차 주행 속도가 상승하고 있다.
그리고 여기뿐만 아니라 서쪽의 신안산선과 소시-원사선도 어서 개통해야 하지 않겠는가. 광주에 이어 시흥, 김포 같은 곳에도 어서 철도가 들어가야 한다.

이것들을 증언하는 철도께서 말씀하신다. “내가 반드시 속히 개통하리라.”

Posted by 사무엘

2017/03/13 08:35 2017/03/13 08:35
, , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1337

macOS 프로그래밍

1.
근래에는 회사 업무 때문에 드디어 맥OS에다가 xcode까지 좀 건드릴 일이 있었다. 작년에 애플에서는 자기네 PC용 운영체제의 공식 명칭을 macOS라고 붙이면서 mac이라는 단어를 다시 복귀시켰던데, 이건 잘한 조치라고 생각된다. mac을 빼고 OS X라고 하는 건 영 아니었다. 무슨 OS/2도 아니고. 물론 걔네들 입장에서는 iOS 같은 타 기기용 운영체제와 명칭 표기를 통일하느라 mac을 소문자 형태로 살린 것이었다.

맥OS에서 메뉴를 꺼내는 단축키는 웬 뜬금없는 Ctrl+F2이구나(Win은 F10 또는 Alt). 그리고 한 프로그램 안에서 문서 창을 전환하는 단축키는 Cmd+` 이다(Win은 Ctrl+Tab 또는 Ctrl+F6). 이런 왕초보 기초부터 다시 시작했다.

Visual Studio와 C++과는 너무 다른 프로그래밍 방법론이 여전히 적응이 안 됐지만.. 나름 맥OS에 대한 이해가 예전보다는 더 깊어질 수 있었다. NextStep에서 딴 NS... 이런 명칭은 게임브리오 소스에 있는 NI... (넷이멀전) 접두사와 비슷한 느낌이 들었다. N으로 시작하고, 지금은 대외적으로 쓰이지 않는 이름. 마치 MFC의 Afx처럼 말이다.

한번은 각종 설정들을 이것저것 건드린 뒤부터 멀쩡한 프로젝트에서 정체를 알 수 없는 링크 에러가 나서 한참 고생한 적이 있었다.
링크 에러라면 당연히 extern "C"처럼 함수 호출 규약이나 심벌 decoration 방식의 충돌이 1순위로 의심되겠지만, 알고 보니 프로젝트 파일 리스트와는 별개로 관리되는 빌드 대상 목록에서 몇몇 소스 파일이 실수로 누락되어 벌어진 일이었다. 둘이 동일한 개념이 아니었 것이다.

하긴 Visual Studio도 각각의 파일들에 대해서 속성을 줘서 exclude from build를 지정하는 게 있긴 했다. 그걸 몰라서 딴 데서 한참을 헤맸다.
IDE에서 각종 경고를 출력하는 인텔리센스와 문맥 감지 색깔 처리가 정상적으로 되고 있어서 이 파일이 애초에 컴파일이 되지 않고 있다는 건 상상을 못 했었다.

2.
맥OS는 자기네 그래픽 비주얼은 그렇게도 뛰어나면서 정작 그래픽 툴을 제공하는 건 왜 그리 인색한지 모르겠다. 맥OS에는 Windows의 '그림판'에 해당하는 기본 프로그램이 내가 알기로 여전히 없다.
개발툴 중에서도 Visual Studio는 간단한 아이콘이나 비트맵 정도 편집할 수 있는 그래픽 에디터를 내장하고 있는 반면, xcode는 그런 거 없고 viewer만 있다. 비트맵 그래픽 편집을 어떻게 해야 할지 모르겠다.

그리고 또 인상적인 점으로는 맥 진영은 Windows에서는 거의 듣보잡이나 마찬가지이던 tif/tiff를 좋아하는 듯하다. 화면 캡처 기본 앱이 그림 파일을 tif로 저장할 때부터 뭔가 심상찮았는데.. 타 xcode 프로젝트들을 보니까 비트맵/아이콘에 역시 tif가 들어가 있구나.

그런데 tif도 다 같은 tif가 아닌지, Windows에서 돌아가는 타 그래픽 에디터에서 저장한 tif는 맥에서 못 읽는 것 같다.

3.
명령 프롬프트로 가 보면, 공백이 포함돼 있는 파일명을 명령 프롬프트에서 표현할 때 Windows는 파일명을 따옴표로 싸서 공백을 표현하는 반면, 맥은 그렇지 않은 듯하다. 역슬래시+공백이라는 탈출문자 기법을 사용한다. 그러니 "a b"냐 a\ b냐의 차이가 발생한다. 디렉터리 구분자부터가 슬래시이니 역슬래시를 저렇게 C스럽게 탈출문자 용도로 활용한다는 게 아주 흥미롭다.

명령 프롬프트가 현재 가 있는 디렉터리(폴더)를 기준으로 탐색기 또는 그에 준하는 파일 관리 셸을 여는 것도 자주 행해지는 작업이다. 숨김 속성 때문에 셸을 통해 접근할 수 없거나 접근 방법이 까다로운 폴더를 다루고 싶을 때 말이다. Windows에서는 start .이던데 맥은 open .이다. 리눅스는 어찌 되려나 궁금하다.

4.
그리고... 결정적으로 맥용 IME 예제도 다뤄 봤다. 골치 아픈 DLL이 아니라 쿨하게 EXE 형태이고, regsvr32 따위 할 필요 없이 그냥 프로그램을 특정 디렉터리에다 얹어 놓기만 하면 바로 IME가 동작하는 게 참 깔끔해 보였다. 여기에다가 날개셋 엔진만 얹으면 내 프로그램이 맥용으로 나오는 것도 불가능하지는 않겠다는 생각이 들었다. 물론 글자만 달랑 찍히는 수준을 넘어서 완성도 있는 제품을 만드는 건 지금 시간과 내 실력만으로는 아직 어림도 없는 요원한 일이다.

오래 전부터 인지했던 것이긴 하지만, Windows와 맥은 문자 입력 시스템을 설계한 형태가 서로 크게 다르다.
Windows는 IME가 또 내부적으로 한영 상태를 갖고 있고 자기 상태를 아이콘을 통해 출력하는 형태이다. 즉, Windows 8식 용어로 표현하자면 brand icon과 state icon이 따로 있다.
그러나 맥은 그렇지 않고 한글 입력 상태가 영문 상태만큼이나.. Windows식으로 표현하자면 별도의 input locale이다. 일단 한글 IME 상태에서 한영 키로 한영 전환을 하는 게 아니라, 입력 로케일 전환인 Ctrl+Shift가 한영 전환인 셈이다. state icon이 없고 brand 자체가 state 역할을 한다.

그러나 <날개셋> 한글 입력기는 자기 brand 하에서 2개 이상 열몇 개까지 입력 항목을 추가할 수 있는 형태이다. 이것부터 맥OS에서는 어떻게 표현을 해야 할지 모르겠다. 맥에서 <날개셋> 한글 입력기는 편집기 계층은 제대로 구현하지 못하고 그냥 입력기 계층 하나 수준에 머물러야 할 수도 있다.

맥에서는 IME가 독립된 프로그램이고 시스템 전체에서 동일한 한영 상태가 유지된다는 것도 매우 흥미로운 점이다. Windows도 IME가 애초에 이런 형태였으면 지금처럼 32비트와 64비트가 공존까지 하는 시대에 IME를 개발하기가 훨씬 더 깔끔해지지 않았을까 싶은 생각이 든다.
언제든지 자기 자신을 죽이고 재시작만 하면 업데이트도 아주 간편하게 할 수 있다. Windows는 DLL에다 memory-mapped file크리까지 겹쳐서 프로그램 강제 종료나 재시작 같은 지저분한 짓 없이는 IME의 업데이트라든가 전체 상태 동기화가 몹시 어렵다.

다만, 그 구조의 특성상 IME를 디버깅 하는 도중에 잠시 딴 프로그램에서 타 IME를 구동해서 문자를 입력하기가 좀 난감한 점은 있다. IME는 그 특성상 타 입력기로 대체만 될 뿐 '스스로 종료'라는 개념이 없는 프로그램인데, Windows에서는 자기 DLL을 사용하는 프로그램이 하나만 존재하면 그것만 끝내면 디버깅도 원활하게 종료되는 반면, 맥에서는 그런 것도 없어서 그냥 IME 프로그램을 강제 종료해야 한다.

그리고 IME 프로그램은 내 자신이 실행하는 게 아니라 운영체제가 on-demand로 구동해 주는 형태이다. 그러니 개발툴이 처음부터 IME를 디버깅 할 수 있는 게 아니라 이미 구동돼 있는 IME 프로세스에다 디버거가 붙는(attach) 식으로 디버깅을 해야 한다.
이렇게 붙으면 NSLog를 찍는 게 xcode의 output 창에 나타나질 않는 문제가 있더라. 그 이유는 모르겠다. 운영체제의 문자 입력 프로그램이라는 건 어떤 형태로 만들더라도 디버깅이 어려운 구석이 있는 듯하다. 동력분산식과 동력집중식만큼이나 서로 일장일단이 있는 셈이다.

5.
코딩을 하면 할수록 Objective C의 고유 문법과 일명 NSFramework 라이브러리는 독립된 언어라기보다는..
Windows로 치면 COM처럼, 그냥 API/라이브러리의 컴포넌트화, 그리고 운영체제-내 프로그램 간의 통신을 위한 바이너리 수준의 프로토콜에 가까운 물건이라는 생각이 든다.

쉽게 말해 NSObject는 IUnknown에, YES/NO는 S_OK, S_FALSE에, @문자열은 BSTR, SysAlloc/FreeString 등에, xib/nib는 리소스 겸 type library에 대응하는 식이다. 뭐 가상 머신이 따로 돌아가는 급은 아니지만 그래도 가벼운 garbage collector도 있다.

물론 기능 호출 방식은 서로 큰 차이가 있다. COM은 함수 포인터 기반인 C++과 더 비슷하지만 옵씨는 진짜 SendMessage 같은 방식이다.
그러니, NSObject에 뭐가 이렇게 오버라이드 가능한 메소드들이 많이 정의돼 있는지, 리스트를 보고 깜짝 놀라곤 했다. v-table 기반의 가상함수라면 상상도 못 할 일이다. MFC도 v-table 크기 부담 없이 운영체제 메시지 처리를 C++로 하기 위해 message map이라는 별도의 메커니즘을 도입한 것이다.

옵씨라고 해서 말 그대로 C만 쓸 수 있는 건 아니며 C++ 코드도 작성 가능하다. 그러니 [ ] 어쩌구로 시작하는 그쪽 ‘오브젝트’와 해당 문법은 운영체제로부터 호출을 받는 것에 대처할 일이 있을 때만 사용하게 되더라.
아무튼 지구를 떠나서 달이나 화성에서 사는 건 어렵고, Windows 홈그라운드를 떠나 타 OS에서 사는 건 여전히 몹시 어렵다!

Posted by 사무엘

2017/03/11 08:31 2017/03/11 08:31
,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1336

* 2014년에 썼던 글을 리메이크 한 것이다.

1. legal mind에 대해

정치라는 게 흔히 입법, 사법, 행정이라는 세 분야로 나뉜다고 그런다.
입법, 즉 앞으로 시행될 법(미래)을 만드는 건 국회의원들이 한다. 이들이 모이는 국회의사당은 우리나라의 경우 여의도에 있다.
다음으로 이미 있는 법을 이미 벌어진 사건에다 해석하고 적용· 집행하는 건 사법부에서 담당한다(과거). 대법원· 검찰청은 우리나라의 경우 서울 강남에 있다.

끝으로, 행정부는 법을 어기지 않는 한도 내에서 다른 모든 새로운 일을 벌리고 각종 권한을 행사하며 나라를 다스린다. (현재) 행정부의 수장이 바로 대통령이며, 우리나라 대통령의 관저인 청와대는 경복궁 근처 산기슭에 있다. 다른 기관과는 달리 민간인 지도에 표시되어 있지 않다.

“짐이 곧 법이니라” 같은 사고방식을 탈피하여, 한 사람이나 조직에게 삼권을 모두 부여하지 않고 각각 자기가 맡은 축의 일만 담당하게 하는 것은 뭔가 보통일이 아니라는 생각이 든다. 참고로 성경은 아무래도 왕국이 주제인 책이긴 하지만, 삼권이라는 개념 자체도 분명히 언급을 하고 있다.

{주}께서는 우리의 심판자시요(사법부), {주}께서는 우리에게 법을 주시는 이시요(입법부), {주}께서는 우리의 왕(행정부)이시니 그분께서 우리를 구원하시리로다. (사 33:22)

본인은 법 같은 것과는 전혀 어울리지 않으며 애초에 공무원· 관료 적성도 아니다. 하지만 나 같은 문외한이 생각해 봐도 법조· 법무 쪽으로 종사하는 사람들은 왕창 똑똑하긴 해야 할 것 같다. 국회의원이나 대통령은 선거로 선출되지만 법조인은 머리 피터지게 공부해서 시험을 통과해야 될 수 있다. 그에 반해 과거지향이다 보니, 무슨 경영 수완이나 리더십 같은 게 필요하지는 않아 보인다. (개업한 변호사야 자영업자이니 논외로 하지만, 월급 받는 변호사 내지 판사· 검사 기준으로..)

이들은 문학· 어학을 전공하는 사람은 아니지만 누구보다도 많은 분량의 글을 읽고 써야 하며, 무슨 미적분 문제를 풀거나 수학 공식·알고리즘과 씨름하지는 않지만, 어지간한 수리과학 이상으로 논리· 법칙을 따지고 지능 싸움을 해야 하는 것 같다.
온갖 복잡한 개념과 제도들을 계층별로 구분해야 하고 일상생활에서 있을 수 있는 가능성을 꼼꼼히 따져야 하기 때문이다. 회사 내규나 보험 약관 같은 걸 처음 만드는 건 어찌 보면 프로그래밍과 굉장히 비슷한 절차일 수도 있겠다는 생각이 든다. 괜히 문과 분야의 최고 전문직이라 불리는 게 아니다.

물론 법은 적용 대상이 기계가 아니라 사람이다 보니, 만들거나 적용하는 데 시간/공간 복잡도나 재귀호출 같은 개념이 쓰이지는 않을 것이다. 프로그래밍 언어로 치자면 절차형 언어는 아니고 선언형 언어에 속할 것이다.
그러나.. 주어진 상황에서 “일어날 수 있는 모든 가능성”을 논리적으로 감안하고 따져야 한다는 점에서는 프로그램을 작성하는 것과 굉장히 비슷하다!

보안 결함이 없고 패닉 상태로 뻗지 않는 프로그램을 만들려면 결국 수많은 상황에 대한 if문과 예외 처리들이 덕지덕지 추가된다.
법도 모호성이 없어야 하며, 엄밀하고 탄탄해야 한다. 이런 상황에서는 이렇게, 저런 상황에서는 저렇게 등등.. 일반인이라면 상상도 못 할 정도로 기상천외한 상황에서도 모든 사람을 만족시켜 줄 정책을 제시할 수 있어야 한다.

보험 약관 하나만 해도 얼마나 복잡하나..? 그래서 약관을 따로 간단히 요약해 놓은 팜플렛이 있을 정도이지만.. 한편으로는 그 머리 터질 것 같은 약관을 “만든” 사람도 있다. 그런 숨은 똘똘이들이 결국은 세상을 움직이는 셈이다.

국어학자 언어학자는 이미 있는 맞춤법 표준어만 달달 외우는 문법 나치 같은 사람이 아니라, 언어들에 보편적으로 발견되는 원리를 알고 그런 문법 체계 자체를 새로 만들거나 비판할 수 있는 사람이다. 전산학자는 단순히 이미 있는 특정 프로그래밍 언어나 API, 라이브러리만 달달 외우고 다룰 줄 아는 사람이 아니라.. 역시나 컴퓨터의 근본 구조와 이론을 알고 언어나 프레임워크를 새로 설계할 줄 아는 사람이다.

그런 것처럼 법조인 내지 법학자는 이미 있는 법 규범만 달달 외우고 있는 사람이 아니라 법을 만드는 사람들의 심정을 알고 '법리'를 총체적으로 꿰뚫고 있는 사람이다. 마치 컴터 코딩쟁이들이 2진법 사고방식에 익숙하듯이, 법리를 염두에 둔 직업병 마인드를 영어로 legal mind라고 한다.

사과가 나무에서 툭 떨어졌는데 뉴턴은 중력의 법칙을 발견한 반면, 어느 뼛속까지 골수 민법학자는.. "아, 부동산이 동산으로 바뀌었구나"를 떠올렸댄다.
성경에서 자연인(natural man)이라고 하면 아직 거듭나지 못하고 죄성을 지닌 평범한 아담의 후손을 일컫겠지만, 법률에서 자연인이란 그냥 법인의 반의어일 뿐이다.
혹은, "김 재규의 죄는 내란목적 살인죄인가 아니면 그냥 자연인 박정희를 살해한 살인죄인가" 이럴 때에나 '자연인'이라는 말을 쓴다. 이런 예들은 단순히 염소(동물? 원소?)나 정의(definition? justice?) 같은 개그 소재보다 더 고차원적인 개념이다.

법학도 제대로 공부하면 재미있는 게 많긴 해 보이나.. 난 그거보다는 날개셋 한글 입력기 코딩이 더 재미있다..;;
내가 애초에 텔레비전보다 컴퓨터를 더 좋아했던 것도 컴퓨터는 TV와는 달리 화면에다 내가 원하는 대로 글자와 그림을 찍을 수 있기 때문이고 모든 정보를 아날로그가 아니라 정확하게 딱 떨어지는 디지털 형태로 다룰 수 있기 때문이었다.

2. 법리· 법 감정의 문화별 차이

우리나라는 형사 소송에서 피의자와 피해자가 합의를 하는 관행이 있다. (공식적인 제도는 아니고) 흉악범죄 내지 음주운전 교통사고로 한 가정의 평화를 완전히 박살낸 피의자가 초범이고 진심으로 뉘우치고(?) 있고, 무엇보다 피해자와 원만히 합의를 했다는 이유로 인해 기껏 구속시켰다가도 집행유예 같은 말도 안 되는 솜방망이 처벌을 받곤 한다.

이건 진짜로 피해자가 대인배여서 가해자를 용서했을 리는... 없고.;; 합의 거부하고 쟤들한테 기껏 콩밥 1년 몇 달 먹여 봤자 죽은 사람이 살아나는 것도 아니니, 합의금 단돈 몇천만 원이라도 확실하게 떡고물로 챙기는 게 낫다고 변호사가 종용을 해서 합의하는 것이다.
우리나라가 헬조선 딱지를 떼려면 뭐 빈부격차 양극화, 대기업 갑질 이런 것뿐만 아니라 저런 사법 정의부터 좀 되살아나야 하리라 여겨진다. 이건 유전무죄 무전유죄 때문에 벌어지는 일도 아니지 않은가?.

게다가 영미권 법조계의 생각은 우리와는 사뭇 다르다. 거기서는 저런 짓을 가해자가 피해자를 불의하게 매수하려는 짓으로 간주하여 엄격하게 금지하고 있다. 어설픈 합의를 시도한 게 걸렸다간 괘씸죄가 추가되어 형량이 더 늘어난다. 그 대신 피의자와 "검사"가 합의를 하는 '사법거래'(plea bargaining)라는 게 있을 뿐이다.

또한 영미권은 정당방위의 범위가 한국보다 더 넓다. 밤에 정체불명의 도둑이 밤에 자기 집 담장을 넘어오고 있고 당장 나가라는 집 주인의 경고까지 무시한다? 그러면 집 주인은 그 사람을 엽총으로 사살해도 100% 무죄다. 성경의 출 22:2에 근접해 있다. 반대로 우리나라는 그건 정말 답답할 정도로 보수적이고 제한적으로 적용한다.

이런 관념이 하도 무뎌져 있다 보니 우리나라에서는 몇 년 전엔 집이 아니라 강 건너서 아예 북한으로 잠입을 시도하는 사람을.. 민간인도, 경찰도 아닌 군인이 소총으로 쏴 죽였는데도 그 군인이 잘못했네 과잉대응이네 하는 한심한 논의가 오갈 정도였다.
누구든지 수하에 불응하면 이등병 초병이 육군 참모총장이라도 체포할 수 있거늘 저건 군인이 지극히 정당한 임무를 잘 수행한 것이지 않은가?

이런 간단한 예만 봐도 알 수 있듯.. 인간은 컴퓨터 같은 튜링 기계가 아니며, 법 감정 내지 법리라는 건 수학 공식처럼 절대적인 게 아니다.
이런 이유로 인해 변호사 면허는 국가와 문화권간에 서로 호환되지 않는다. 한국 의사 면허가 있다고 해서 미국에서 곧장 개원하거나 페닥 취업을 할 수 있지 않은 것과 같은 이치. 미국에 가면 의대 졸업장 하나만 인정되며, 나머지 면허 취득은 처음부터 다시 시작해야 한다.

이미 알 만한 사람들은 다 아는 사실이겠지만, 공식적으로 '국제 변호사'라는 직업은 없다.
변호사가 간판이나 명함 같은 데에 자기 대외 타이틀로 저런 명칭을 쓰는 건 불법이며 처벌 대상이기까지 하다. 의뢰인에게 심각한 혼동과 오해의 여지를 주기 때문이다.
단지, 외국 변호사 면허만 갖고 있어서 자국에서 소송대리권은 없는 '외국법 자문사'가 있거나, 아니면 한국 변호사 면허와 미국 같은 외국 변호사 면허를 동시에 소지한 괴수 변호사만이 소수 존재할 뿐이다.

근데 난 개인적으로 영미권의 법리가 '기독교적 세계관'에 더 부합하고 더 합리적인 것 같다. 뭐, 시대 배경상 당연한 귀결인 건가?

Posted by 사무엘

2017/03/08 19:36 2017/03/08 19:36
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1335

출교/출학 (징계제적)

* 이 글은 예전에 컨닝에 대해 썼던 글과도 좀 비슷한 부분이 있다.

출교 내지 출학.
종교계에서의 파문, 공직에서의 파면(민중은 개돼지 그 아저씨가 당한..), 회사에서 징계 해고, 형법에서의 사형 선고, 스포츠 업계에서 영구제명과 비슷한 급이다. 학교에서 학생에게 내리는 가장 강한 징계이다.

대학교 기준으로 (1) 단순히 재학생 신분 박탈 + 고졸로 강등 수준을 넘어서 (2) 그 학생이 우리 학교를 다녀서 학점을 쌓았다는 기록 자체가 완전히 말소된다.
어디 그 뿐이랴? 학적이 사라지는 대신, 블랙리스트에 등재된다. 이 때문에 이 학교로는 하다못해 (3) 수능 다시 쳐서 깡통 상태 신입생 재입학조차도 영원히 할 수 없게 된다.

단순히 성적이 안 좋거나 등록금을 제때 못 내는 정도로는 이런 강한 징계를 받을 일은 절대 없으며, 우리나라 정서로는 심지어 리포트 표절이나 평범한 시험 컨닝 같은 부정행위로도 저 정도까지는 안 간다.
그걸 넘어서 학교 행정 시스템을 농락하고 교권에 정면도전해서 사회에서까지 전과자가 될 정도의 왕창 큰 사고를 쳐야 된다. 예를 들어 캠퍼스 방화라든가 학점에 불만을 품고 집단으로 교수 감금· 폭행이라든가, 교내 전산망 해킹으로 학적 데이터 조작이라든가.. -_-;;

2005~06년이던가 고려대에서는 교수· 교직원을 감금까지 하면서 시위를 벌인 극렬 운동권 애 몇 명이 고대 설립 이래 ‘최초’로 출교 처분을 받았다. 저기 주동자는 ‘고대 해적녀’로 악명을 떨친 그 여자애다. 해군이 해적이라니 무슨 강 의석의 여자 버전인가(군대 비하 발언)..?
아무튼 본인이 태어나서 출교라는 단어를 이때 처음으로 들었다. 하지만 그 출교 조치는 수 년 뒤 소송을 거쳐서 취소됐다고 한다.

그 뒤 그 이름도 악명 높은 고려대 의대 성추행 사건이 벌어졌으며, 여기 가해자들은 네티즌들의 열렬한 성원에 힘입어 제2타로 출교 처분을 받았다. 고려대는 이런 불상사까지 겪은 뒤로 마치 사형 제도 폐지하듯이 출교라는 제도 자체를 폐지했다. 출교는 당하는 학생뿐만 아니라 내리는 학교 입장에서도 대외 이미지에 안 좋고 굉장히 부담스러운 처분이니까. 문제 학생을 내쫓을 거면 곱게 짜르기만 하지 미래의 재입학까지 원천봉쇄하는 초강수는 앞으로 두지 않기로 한 듯하다.

자, 다음으로 출교 3타는 잘 알다시피 연세대 로스쿨 캐비닛이 차지했다. 교수 연구실에 침입해서 시험 문제를 지속적으로 유출하다 적발된 건 평범한 죄질이 아니니까. 출교뿐만 아니라 업무방해죄로 집행유예 실형이 선고됐으며, 비록 명문화된 건 아니지만 법조계에는 영원히 발을 들일 수 없는 블랙리스트 인물이 됐다.

사실, 출학은 자기 학교에 재입학하는 것만을 금할 뿐이지 "닌 평생 고졸로 살아라" 내지 (4) 동일 업계/전공 전체에 입문 불가까지 명시하지는 않는다. 그렇게까지 학생의 인생에 태클을 거는 건 교육적이지도 않을 뿐더러 애초에 일개 대학의 권한을 벗어나는 조치이다. 프랑스인가 독일인가 거기는 대학에서 졸업 시험에 수차례 낙방한 학생은 전국의 모든 대학교에서 그 전공/과를 평생 영원히 선택할 수 없어지긴 한다. 하지만 그건 국가에서 정한 규정에 따라 능력이 부족한 인원을 커트하는 것일 뿐, 징계는 아니다.

그러니 고려대 의대 성추행 사건 가해자 중 한 명은 고대에서 짤린 뒤에 성균관대 의대에 멀쩡히 재입학했다고 한다. 나쁜 짓 저질러도 그래도 공부 잘하는 탁월한 머리는 어디 안 가는 듯..;; 쟤들에 비해 캐비닛은 쟤들보다도 뒤끝이 제일 센 징계를 받았다고 볼 수 있다.

그리고 제일 최근에는 잘 알다시피 모친 빽만 믿고 자기 실력 대비 기본적인 출석과 학업이 심히 불량했던 어느 이화여대 승마 선수가 출교 4타의 주인공이 됐다.
스포츠 쪽 진로를 가는 애들이 연습과 대회 참가 때문에 학업에 소홀한 건 어제오늘 일이 아니다. 또한 말을 굴리려면 유지비가 정말 장난 아니게 깨지기 때문에 승마 + 특별전형은 반쯤 부자들 기여입학이나 다름없는 것도 사실이다. 하지만 이 애 집안은 도가 너무 지나쳤다. 애엄마가 교수의 교권까지도 좌지우지하면서 갑질을 해 댔으니..

이 사건은 오죽했으면 정치 후폭풍으로 이어졌다. 애는 이화여대에서 즉시 출교됐으며(미래에 재입학도 불가), 총장 등 학교의 높으신 분들이 “우린 쟤 특혜 줘서 뽑은 적 없음” 이러면서 발뺌할 지경이 됐다. 그리고 대학교 만만찮게 불성실하게 다닌 고등학교까지도 졸업 무효가 돼서 최종 학력이 졸지에 중졸로 굴러떨어졌다. 수능 부정행위 무효, 대졸 무효, 학사장교 무효의 순으로 인생이 쫘르륵 운지한 어떤 사람처럼 말이다. 저 상태로 승마는 계속할 수 있으려나?

출교 정도면 전국에서 10수~몇십 년에 한 번 나올까말까 하고 아니, 사실상 사문이나 다름없어야 할 극약 중의 극약 처분이다. 그런데 출교 처분이 21세기 이래로 생각보다 자주 등장해 왔다. 그것도 상당한 명문대에서 사유도 의외로 굉장히 다양하다. 이념· 정치 쪽은 차치하고라도 사회 정의를 실현해야 할 예비 법조인이 부정행위를 밥 먹듯이 저질렀고, 사람 몸 들여다보면서 의술을 펼쳐야 할 예비 의사가 여학생을 성추행했으니.. 출교 당해도 싼 가관이긴 하다. -_-;;

아, 그러고 보니 로스쿨 재학생 내지 사법연수원 입소생 중에서도 성범죄 저질러서 실형 받고 다니던 데서 짤린 사건이 뉴스에 보도되기도 했었다. 그리고 고려대에서는 해적녀 이후에도 “오늘 나는 대학을 그만둔다, 아니 거부한다” 이런 대자보를 붙이고 학교를 때려친 학생이 나오기도 했다. 그 애도 여자다. 지금은 어디서 뭘 하고 있으려나 궁금해진다. 고려대에 리버럴한 유명인사들이 좀 있었군.

저렇게 학교를 뛰쳐나와서 생업전선이나 마이 웨이를 가는 게 아니라 나름 가방끈을 늘리는 게 목적인 학생이라면 학생의 본분과 관련된 윤리는 엄격하게 적용돼야 할 것이다. 미국 같은 데서는 단순 부정행위만으로도 걸리면 해당 학기 전과목 F는 제일 자비롭고 관대한 처분이요, 총장과 면담에 정학이나 퇴학 등.. 빨간줄만 안 그이지 학생 및 연구자로서의 인생은 작살이 난다고 한다. 뭐, 이런 시스템이 갖춰져 있으니 선진국이라는 생각도 든다.

똑같이 남의 돈을 쓰윽 했어도 건물 청소부가 저지른 것과 은행원이 저지른 것은 비록 액수가 동일하다 할지라도 죄질이 동일하게 취급될 수가 없을 것이다. 이와 같은 맥락에서 전시에 군법은 일반 형법보다 처벌이 더 엄할 것이며, 학문을 배우는 학생에게 더 크게 요구되는 윤리도 존재하는 셈이다. 나이가 어리고 경제 능력이 아직 없거나 부족하다고 해서 그저 다 봐 주고 실드만 치는 게 아닌 법이다.

Posted by 사무엘

2017/03/06 19:38 2017/03/06 19:38
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1334


블로그 이미지

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

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2017/03   »
      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:
2663268
Today:
443
Yesterday:
1553