« Previous : 1 : ... 134 : 135 : 136 : 137 : 138 : 139 : 140 : 141 : 142 : ... 230 : Next »

뭐, 무식이 자랑이랄 수는 없겠지만,
본인은 전산학 내지 컴퓨터공학의 여러 분야들 중에서 문외한에 가깝게 제일 모르는 분야는 통신, 네트워크, 웹, 보안 쪽이다.
왜 제일 모르느냐 하면, 저건 컴퓨터 한 대만으로 독학이 가능하지 않고, 뭔가 '감'을 터득할 수 없는 분야이기 때문이다. 그래서 그런 걸 잘하는 사람들이 부럽다..

일례로 완전 최저수준 소켓 API와, 고수준 HTTP API 사이의 중간 과정에 대한 감이 전혀 없다. 후자도 분명 전자를 이용해서 구현됐을 텐데, 내부 구현이 어찌 돼 있는지 난 아는 게 없다.
그리고 네트워크 트래픽이 컴퓨터의 I/O 병목엔 어떤 영향을 끼치는지, 그 패킷이 어떻게 해서 한 운영체제 내부의 특정 응용 프로그램으로 잘 전달이 되는지, DDoS 공격이 서버 컴퓨터에 어떤 물리적인 영향을 끼쳐서 서버를 뻗게 할 수 있는지, (아님 단순히 프로세스/스레드의 무한 스폰으로 인해 소프트웨어적인 자원 고갈만으로 뻗는 건가?)

HTTP 프로토콜에서 파일 업로드는 어떤 절차를 거쳐서 되는지, 방화벽이라는 게 정확히 뭘 하는 물건인지,
왜 구닥다리 윈도 2000/XP sp0을 띄운 채로 랜선을 꽂으면 뭐가 뚫려서 어떻게 되는지..
요즘은 네트워크 패킷은 하부 계층에서 압축이나 암호화를 좀 하는 게 있는지 등등..

이런 것들은 난 하나도 모..른..다. 저런 거 하나도 몰라도 <날개셋> 한글 입력기 개발하는 덴 아무 지장이 없기 때문이다.
그렇다고 해서 내가 컴퓨터 명령어 체계나 운영체제/소프트웨어 자체의 내부 구조나 보안에 대해 전혀 모르느냐 하면 그것도 물론 아니니.. 지식의 분포가 좀 불균형하다면 불균형한 셈이다.

본인은 초딩 중고학년 때 개인용 PC, 중학교 때 모뎀과 PC 통신, 고등학교 때 인터넷과 이메일, 그리고 대학교 때 무선 인터넷과 휴대전화의 순으로 문명의 이기들을 접했다. 랜 선이라는 걸 태어나서 처음으로 구경한 게 고등학교 때부터인데, 그 기간 동안 언젠가 집도 인터넷 접속 방식이 전화 모뎀에서 전용선으로 바뀌었다. 그때가 한창 전국적으로 인터넷 전용선이 깔리던 시절이었으니까.

지금까지 통신 기술은 정말 눈부신 속도로 발전했다.
신문· 방송에서 기자의 이메일을 공개하는 게 대세가 된 게 1990년대 후반부터이다.
지금으로부터 10여 년 전엔 '블로그'라는 단어가 도전 골든벨의 마지막 문제의 답이었다는 게 믿어지시는가? (그것도 학생이 못 맞혔고 그 당시엔 내게도 생소했다)

옛날에는 인터넷 연결을 위해서도 PC 통신을 할 때처럼 먼저 전화를 걸어야 했다. 사용 시간 카운터가 올라가는 자그마한 인터넷 연결 창이 뜬 동안만 인터넷을 이용할 수 있었다.
또한, 모뎀과 마우스를 동시에 사용하려면 두 물건을 서로 COM 포트가 충돌하지 않게 배치를 해야 했다.
Windows 3.x에서는 운영체제 차원의 네트워크 지원이 전무하기 때문에 트럼펫 Winsock인지 뭔지 하는 걸 먼저 설치해야 했다.

이 모든 것들이 지금은 까마득한 옛날 이야기가 됐다.
지금은 뭔가 그렇게 상태를 확인하면서 인터넷을 해야 하는 상황은 스마트폰 태더링으로 무선 인터넷을 쓸 때 정도이고 이것도 제약, 압박감, 부담 같은 건 옛날과는 비교할 수 없이 작아졌다.
메인보드가 어떻게 공간 워프를 했는지, 요즘은 유선 랜과 무선 랜도 전부 내장되어 나온다. 따로 뭘 장착조차 할 필요 없이 바로 접속만 하면 된다.

오늘날 인터넷이라고 불리는 그 통신망은 OSI 레이어 계층 중 제3계층(네트워크 계층)을 차지하는 IP라는 프로토콜을 기반으로 동작한다. IPv4, IPv6 같은 주소 체계도 이 계층에서 규정하는 것이기 때문에 모든 인터넷 통신은 이 체계를 기반으로 구성되어 있다.

그리고 그 아래의 제4계층(전송 계층)에는 인터넷 프로토콜을 따르는 네트워크 패킷을 보내는 방식의 차이를 규정하는 프로토콜이 있는데, 크게 TCP와 UDP가 있다.
TCP는 보낸 패킷이 반드시 순서대로 도착한다는 것은 보장되지만, 보냈던 단위랄까 형태가 그대로 도착하지는 않는다.
aaa, bb, ccccc, ddd, e 이렇게 패킷을 보냈으면 받는 쪽은 aa, ab, bccc, cc, dd, d, e 뭐 이렇게 받을 수도 있고 다른 형태가 될 수도 있다. 조립은 받는 쪽에서 알아서 해야 한다.

UDP는 TCP와는 달리 보낸 패킷이 원래의 형태 그대로 간다는 보장은 되지만.. 일부 패킷이 전송 과정에서 누락될 수가 있다.
즉, 위의 경우 ddd가 누락돼서 aaa, bb, ccccc, e 이렇게 갈지도 모르지만.. 일단 간 놈은 원래 형태 그대로 간다. 패킷의 누락 여부 판단을 받는 쪽에서 알아서 해야 한다.
그래서 TCP는 일종의 스트림 지향적이며, UDP는 개개의 패킷이 모 아니면 도 형태로 가는 메시지 지향적이다.

형태도 보존되고 누락 현상도 없는 만능 프로토콜이 없는 이유야 뭐, 세상에 값도 싸고 성능도 좋은 물건은 존재하지 않기 때문인 것과 같은 맥락일 것이다.
그게 필요하면 UDP 같은 걸 기반으로 패킷 누락을 감지하고 재전송을 요청하는 로직을 응용 프로그램이 별도로 구현해 줘야 한다.

온라인 게임에서는 “기관총 난사 내지 캐릭터 이동 같은 것만 UDP이고 나머지는 다 TCP”라는 말 한 마디로 요약된다.
자주 발생하기 때문에 반응성이 중요하고 적당히 좀 씹혀도 상관 없는 것만 UDP이고.. 나머지 크리티컬한 것들은 다 TCP를 써야 한다는 뜻이다.
그러나 온라인 게임에서 발생하는 트래픽의 상당수, 대략 70% 가까이는 그래도 UDP 방식이라고 한다.

실시간으로 스트리밍되는 대용량 오디오/비디오 데이터도 자명한 이유로 인해 UDP 방식으로 전송된다.
이런 차이를 보면, TCP와 UDP의 관계는 사실상 무손실 압축과 손실 압축의 관계나 마찬가지인 것 같다.

TCP의 경우 응용 프로그램이 아니라 아래의 프로토콜 차원에서 패킷의 누락을 감지하여 누락이 있는 경우 재전송 요청을 한다.
그런데 모바일처럼 네트워크 환경이 원래 워낙 열악해서 패킷 손실이 굉장히 자주 발생하는 곳에서는
TCP 방식에서는 끝도 없이 재전송 요청을 하고 받은 데이터에 결함이 없는지 체크와 빠꾸만 반복하느라 응용 프로그램이 그 동안 멍하니 있어야만 하는 일이 발생한다고 한다.
즉, TCP가 구조적으로 오버헤드가 더 크니, 네트워크가 열악한 곳에서는 그런 동작을 감안해야 한다.

게임에서 그래픽 엔진, 물리 엔진, 동영상/캡처 엔진도 아니고 네트웍 엔진 미들웨어로 먹고 사는 분이 국내에 일단 한 분 계신다. 넷텐션의 대표이사인 배 현직 씨. 이 업계에서는 이미 유명인사이다.

난 네트워크 쪽 프로그래밍을 해 본 건 먼~ 옛날에 소켓 API 대충 뚝딱해서 오목을 만들고..
DirectPlay를 써서 스크래블 정도 보드 게임에다가 네트웍 플레이를 넣어 본 게 전부이다. 그래도 그것만으로도 굉장히 재미있는 경험이었다.
저수준에서 패킷 암호화, 각종 오류 처리 그런 건 모른다. DPlay는 나름 하드웨어 독립을 추구한 통신 API이긴 한데, 요즘은 모뎀이고 시리얼 케이블 그딴 건 다 없어졌으니 그런 추상화 계층이 필요가 없어지면서 자연스레 도태했다. 잘은 모르겠지만 제1계층(물리 계층)은 거의 획일화가 돼 버린 것 같다.

※ 여담. IPX는 어디로 갔는가?

스타크래프트에서 배틀넷 말고 그냥 LAN으로 친구들끼리 팀플을 할 때, 옛날에는 배틀넷 다음으로 위에서 둘째인 IPX를 으레 고르곤 했다. 그러나 어느 패치 때부터인가 맨 아래에 UDP가 추가되었으며 그걸 고르는 걸로 구조가 바뀌었다. IPX는 동작하지 않기 시작했다. 어찌 된 일일까?

IPX라는 프로토콜은 똑같이 이더넷 랜선으로 통신을 하지만, 오늘날의 인터넷과는 다른 방식으로 통신을 한다. 즉, IP와 대등한 제3계층에서 방식이 다른 프로토콜인 것이다. IPX는 옛날에 네트워크 솔루션으로 유명했던 노벨 사에서 개발했고 실제로 매우 널리 쓰이기도 했지만 오늘날은 IP에 밀려서 사라졌다.

Windows 95때까지만 해도 네트워크 구성요소들을 설치하고 나면 기본으로 깔리는 것은 IPX였다. TCP/IP 지원 기능은 운영체제 CD를 넣어서 별도로 설치해야 했다. 무슨 말이냐 하면, 오늘날 당연시되고 있는 이 컴퓨터의 IP 주소를 설정하는 기능이 Windows 95에는 기본으로 없었다는 뜻이다. (심지어 네트워크 기능이 설치된 컴에서도)

사용자 삽입 이미지

그 다음 1990년대 중후반, Windows 98부터는 인터넷의 중요성이 워낙 크게 부각되기 시작했으니 TCP/IP 지원도 같이 포함되었다.
여담이지만 Windows에서는 등록정보/속성을 나타내는 단축키가 R인 편인데, 95에서는 유독 저 대화상자에서만 R은 삭제이고, 등록정보는 P였다. 무척 불편했는데 이 역시 98부터는 다같이 R로 개선됐다.

하긴, 본인도 옛날부터.. Windows가 근거리 네트워크 차원에서 제공하는 컴퓨터 간의 폴더 공유 기능과, 웹브라우저로 띄우는 인터넷은 기술적으로 무슨 관계인가 궁금하긴 했다.
인터넷 열풍 앞에서 IPX는 점점 잉여로 전락했으며, Vista부터는 드디어 IPX 지원이 hlp 도움말만큼이나 짤렸다. 그래서 스타크래프트도 근거리 팀플에 인터넷 프로토콜을 사용하는 UDP 지원이 추가된 것이다.

Posted by 사무엘

2015/02/05 08:37 2015/02/05 08:37
, , , ,
Response
No Trackback , 10 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1058

1. 오픈소스

잘 알다시피 C/C++은 메모리 할당이나 문자열 등, 바이너리 차원에서 뭔가 언어나 구현체가 buliding block을 규정해 놓은 게 없다시피하며, 그나마 표준이 나온 것도 강력한 구속력을 갖고 있지는 못하다. 그러니 이 지저분함을 참다 못해서 COM 같은 바이너리 규격이 나오고 닷넷 같은 완전히 새로운 프레임워크도 나왔다.

아니면 일각에서는 소프트웨어 컴포넌트를 재배포할 때, 빌드된 라이브리러리를 주는 게 아니라 난독화 처리만 한 뒤 소스 코드를 통째로 넘겨주면서 빌드는 이 코드를 쓰는 쪽에서 자기 입맛대로 알아서 하라는 극단적인 조치를 취하기도 한다. 차라리 오픈소스 진영이 이런 점에서는 융통성이 더 있는 셈이다.
하지만 어지간한 컴덕력을 갖추지 못한 사람은.. 복잡한 빌드 시스템/configuration들을 이해할 수 없어서 소스 코드까지 통째로 줬는데도 줘도 못 먹는 촌극이 벌어진다.

이런 라이브러리 내지 유닛, 패키지는 기계어 코드로든 다른 바이트 코드로든 소스 코드가 바이너리 형태로 용이하게 재사용 가능한 형태로 가공되어 있는 파일이다.
그런데 실행문이 들어있는 소스 코드가 반드시 그대로 노출돼야만 하는 분야도 있다.

크게 두 갈래인데, 하나는 C++의 템플릿 라이브러리이고, 다른 하나는 웹 프로그래밍 언어 중에서도 전적으로 클라이언트 사이드에서 돌아가는 자바스크립트이다.
동작하는 환경 내지 타겟은 둘이 서로 완전히 극과 극으로 다르지만, 전자는 컴파일 때 최적화 스케일의 유연성 때문에, 그리고 후자는 선천적으로 기계 독립적이고 극도로 유연해야만 하는 웹의 특성상 오픈소스가 강제되어 있다.

자바스크립트는 비록 전통적인 기계어 EXE를 만드는 데 쓰이는 언어는 아니지만 그렇다고 해서 만만하게 볼 물건이 절대로 아니다. 람다, 클로저 등 어지간한 최신 프로그래밍 언어에 있는 기능은 다 있으며, 플래시에 하드웨어 가속 3D 그래픽까지 다 지원 가능한 경지에 도달한 지가 오래다.
또한 웹에서의 영향력이 워낙 막강하다 보니 전세계의 소프트웨어 업체들이 눈에 불을 켜고 실행 성능을 필사적으로 끌어올려 놓았다. 비록 컴파일을 통한 보안 유지는 안 되지만, 어느 수준 이상의 코드 난독화 기능도 당연히 있다.

뭐, C++ 표준 템플릿 라이브러리도 헤더 파일을 열어 보면, 남이 못 알아보게 하려고 코드를 일부러 저렇게 짰나 싶은 생각이 든다. 온갖 주석이 곁들여져서 알아보기 쉽게 널널하게 작성된 C 라이브러리의 소스들과는 형태가 달라도 너무 다르다..

C++ 템플릿에 대해서 한 마디 더 첨언하자면.. 제한적으로나마 함수나 몸체를 일일이 인클루드해서 노출하지 않아도 되는 방법이 있긴 하다.
몸체를 한 cpp(= 번역 단위)에다가만 구현해 놓은 뒤, 거기에다가 소스 코드 전체를 통틀어 그 템플릿이 인자가 주어져서 쓰이는 모든 형태를 명시만 해 주면 된다.

template Sometype<char>;
template Sometype<wchar_t>;

템플릿 함수에 대해서 template<> 이렇게 시작하는 특정 타입 전용 케이스를 만드는 것과 비슷해 보이는데..
위와 같은 식으로 써 주면, 해당 코드가 컴파일될 때 이 템플릿이 저런 인자로 실현되었을 때의 대응 코드가 모두 생성되고, 이게 다른 오브젝트 파일들이 링크될 때 같이 연결되게 된다. 이런 문법이 있다는 것을 15년 동안 C++ 프로그래밍을 하면서 처음 알았다.

물론 저것 말고 다른 임의의 새로운 타입으로 템플릿을 사용하고 싶다면 그렇게 템플릿을 사용하는 번역 단위에서 또 다시 템플릿의 선언부와 몸체를 싹 읽어들여서 분석을 해야 한다.
아마 과거의 export 키워드가.. 저런 템플릿 인자의 사용 형태를 자동으로 파악하는 걸 의도하지 않았나 싶은데 그래도 세상에 쉬운 일이란 없었던 듯하다.

2. 웹 프로그래밍의 성격

HTML, CSS, 자바스크립트 삼신기는 마치 웹 프로그래밍계에서의 삼권 분립이기라도 한 것 같다. 아무래도 당장 화면에 표시되는 핵심 컨텐츠가 HTML이니 요게 행정부에 대응하는 듯하며, HTML을 표시할 규격을 정하는 CSS는 사법부에 가깝다. 끝으로, 인터랙티브한 동작을 결정하는 자바스크립트는 입법부 정도?
물론 HTM 파일 하나에다가 스타일과 자바스크립트 코드를 다 우겨 넣었다면 그건 뭐 “짐이 곧 국가다, 법이다” 식으로 코드를 작성한 형태일 것이다.

예로부터 본인이 느끼기에 웹 프로그래밍은 뭔가 시대의 최첨단을 달리는 것 같고 간지와 뽀대가 나고 실행 결과가 사용자에게 가장 직접적으로 드러나 보이는 신기한 영역인 것 같았다. 하지만 (1) 코드와 데이터, 클라이언트와 서버, 코딩과 디자인의 역할 구분이 영 모호하며, 컴퓨터의 성능을 100% 뽑아내는 듯한 전문적이고 하드코어한 느낌이 안 들어서 마음에 안 들었다. 가령, 도대체 어디서는 java이고 어디서는 jsp이고 어디서는 js인지?

(2) 또한 이 바닥은 작성한 소스 코드가 제대로 보호되지 못한다. 서버 사이드에서만 돌아가는 PHP 같은 건 클라이언트에게는 노출이 안 되겠지만 그것도 서버 개발자들끼리는 결국 오픈소스 형태로 공유될 수밖에 없으니 말이다. 옛날에 제로보드의 소스가 그랬듯이.

끝으로, (3) 특정 CPU 아키텍처나 플랫폼에 구애되는 게 없다 보니 기반이 너무 붕 뜨는 느낌이고, 브라우저마다 기능이 제각각으로 달라지는 거 호환 맞추는 노가다가 필요한 것도 싫었다.
뭐, IE와 넷스케이프가 경쟁하고 IE6이 세계를 사실상 평정했던 먼 옛날에는 그랬고 지금은 이 문제는 많이 해소됐다. 바야흐로 2015년, HTML5 표준안까지 다 완성된 지경이니, 웹 프로그래밍도 이제 충분히 성숙했고 기반이 탄탄히 잡혔다. 격세지감이다. ActiveX도 점점 퇴출되는 중이다.

2004년에 IE6에 대한 대항마로 파이어폭스 0.8이 혜성처럼 등장했고, 2008년엔 구글 크롬이 속도 하나로 세계를 평정해서 IE의 독점 체계를 완전히 견제해 냈다. 지금은 크롬이 속도는 괜찮은 반면, 메모리 사용량이 너무할 정도로 많아서 파이어폭스가 다시 반사 이득을 보는 구도이다. 오페라는 Windows에서는 영 좀 마이너한 콩라인 브라우저가 아닌가 모르겠다.
그리고 무슨 브라우저든지 버전업 숫자 증가폭이 굉장히 커졌으며, 탭 브라우징에  메뉴와 제목 표시줄을 숨겨 놓는 인터페이스가 필수 유행이 돼 있다.

3. 보안 문제

세월이 흐르면서 웹 프로그래밍 환경이 좋아지고 있는 건 사실이지만, 보안 때문에 예전엔 바로 할 수 있었던 일을 지금은 못 하고 뭘 허가를 얻고 번거로운 절차를 거쳐야 하는 건 다소 불편한 점이다.
특히 내가 느끼는 게 뭐냐 하면, 한 HTML 파일에서 자신과 다른 도메인에 있는 CSS나 JS 같은 걸 덥석 인클루드 하는 걸 브라우저가 굉장히 싫어하게 됐다는 점이다. 이런 걸 이용한 보안 취약점 공격이 지금까지 많았는가 보다.

"이 사이트에는 안전한 컨텐츠와 위험한 컨텐츠가 같이 섞여 있습니다. 위험한 것도 모두 표시하시겠습니까?"라는 메시지가 바로 이런 상황에서 뜬다.
IE의 경우 예전에 잘 표시되던 사이트가 갑자기 표시되지 않을 때, 권한 취득을 위해 레지스트리에다 자기 프로그램 이름이나 사이트를 등록하는 등 조치를 취해야 했다.
구글 크롬은 발생 조건이 IE와 동일하지는 않지만, 자체 판단하기에 악성 코드의 실행을 유도하는 걸로 의심되는 지시문이 HTML 소스에 있는 경우, 화면 전체가 위험 경고 질문 화면으로 바뀐다.

최근에는 크롬과 IE에서는 멀쩡하게 보이는 웹 페이지가 파이어폭스에서만 제대로 표시되지 않는 문제가 있어서 회사 업무 차원에서 사이트 디버깅을 한 적이 있었다. 요즘 세상이 무슨 세상인데 웹 표준이나 렌더링 엔진의 버그 때문일 리는 없고, 파이어폭스가 자바스크립트 엔진으로 하여금 외부 도메인로부터 인클루드된 CSS 속성에 접근하는 걸 허용하지 않아서 발생한 문제였다.

4. 파일 관리가 되는 게시판

본인도 여느 프로그래머와 마찬가지로 다니는 회사에서 요즘 모바일에 웹까지 별별 걸 다 손대며 지냈다. 하긴, 공학 박사라 해도 취업 후에는 돈 되는 분야, 뜨는 분야를 따라 자기 주전공 연구 분야가 아닌 것도 손대 봐야 할 텐데 하물며 그보다 급이 낮은 단순 엔지니어들은 말이 필요하지 않을 것이다.

요즘은 게시판이나 블로그 엔진을 만들려면 단순무식한 텍스트 기본 폼이 아니라 위지윅 웹 에디터가 필수이다. ckeditor 컴포넌트에다가 이미지 업로드 기능을 연결해 넣을 일이 있었는데 이것도 여간 골치아픈 일이 아니라는 걸 작업을 하면 할수록 깨닫게 됐다.
손이 정말 많이 간다. 하지만 그걸 일일이 하지 않으면 이미지는 단순 외부 링크밖에 못 넣는 반쪽짜리가 된다.

이미지 파일이 하나 HTTP 규격대로 업로드되어 왔으면 서버 측에서는(PHP든 JSP든 무엇이든) 파일 크기가 적당한지(개별 파일 크기와 지금까지 업로드된 파일의 전체 크기 모두) 체크하여 적당하다면 이름을 중복 없는 랜덤 이름으로 바꿔서 서버에 저장한다. 이름에 한글이 들어간 파일이라고 업로드나 로딩이 제대로 안 되는 일이 없어야 하니까.

그 뒤에 그 그림을 불러올 수 있는 URL을 에디터 컴포넌트에다가 알려 준다. 이것도 간단하게 만들자면 그냥 서버의 특정 디렉터리를 그대로 노출하는 식으로 만들면 되겠지만 보안상 위험하니 가능한 한 제3의 장소에서 파일을 되돌리는 서버 프로그램 URL을 주는 게 안전하다.

위지윅 에디터에서는 임의의 개수의 파일이 업로드될 수 있기 때문에 글에 얽힌 첨부 파일들을 따로 디렉터리나 DB 형태로 관리해서 글이 삭제될 때 같이 지워지게 해야 한다.
사실, 이쪽으로 조금만 더 신경 쓰면 글별로 아예 첨부 파일 관리자라도 간단한 형태로 만들어야 하게 된다. 우와..;;

그리고 골때리는 건, 아직 작성 중이고 정식으로 등록하기 전의 임시 상태인 글에 첨부된 그림들을 처리하는 방식이다.
일단은 그림들이 임시 폴더에다가 올라가고 주소도 임시 폴더 기준이지만 글이 정식으로 등록됐다면 글 중에 삽입된 이미지들의 주소를 수동으로 바꿔야 하고 파일도 옮겨야 한다.
또한 그 상태로 글이 더 등록되지 않고 사용자가 back을 눌렀다면, 서버에 올라왔던 임시 파일들도 나중에 지워 줘야 한다. 이런 것까지 도대체 어떻게 다 구현하지?

이건 일게 위지윅 에디터 컴포넌트가 감당할 수 있는 수준이 아니기 때문에 그걸 블로그 엔진이나 게시판에다 붙여 쓰는 웹 프로그래머가 자기 서버의 사정에 맞게 세팅을 해야 한다.
겨우 이미지 업로드 기능 하나만 달랑 구현하는 테크닉을 소개한 블로그만으로는 정보가 너무 부족했다.
Windows에서 공용 컨트롤에다 드래그 드롭을 처음부터 직접 구현하는 것만큼이나 손이 많이 갔다. 나 같은 이 바닥 초짜로서는 그저 경악스러울 뿐.

프로그램의 완성도를 더 높이려면, 사용자가 곱게 이미지 파일만 올리는 게 아니라 php나 html 같은 보안상 위험한 파일을 올리는 건 아닌지 감시해야 한다. 첨부 파일 정도가 아니라 위지윅 웹 에디터 자체도 위험하다고 그런다. HTML이 근본적으로 문서와 코드가 뒤섞인 형태이다 보니 정말 매크로가 잔뜩 든 Office 문서처럼 취급되는가 보다.
아무튼, 나모 웹에디터와 제로보드가 뜨던 시절에 비해 요즘 웹은 너무 방대하고 복잡하다.

Posted by 사무엘

2015/02/02 08:39 2015/02/02 08:39
, , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1057

* 이 글과 함께 볼 만한 과거 관련글: 추락(으/사)로 유명해진 사람들

1.
2015년 1월 초엔 경기도 안성에서 엽기에 가까운 황당한 뉴스가 하나 전해졌다. 아파트 16층에 사는 어떤 70대 노파가, 밖에 일일이 나갔다 오는 게 귀찮다는 이유로 밤에 여러 차례 상습적으로.. 자기 집의 음식물 쓰레기를 베란다 밖으로 투척해 오다가 결국은 덜미가 잡혔다.

그 사람이 떨어뜨린 쓰레기 봉투는 음식물 쓰레기 수거함에 곱게 갔을 리가 없으니 지상에 주차돼 있던 차량들 위로 다 떨어졌다. 차들은 유리, 지붕, 엔진룸 등이 부서졌으며, 그냥 쓰레기도 아니고 썩은 물이 줄줄 흐르는 음식물 쓰레기가 묻는 바람에 청소까지 해야 하는 지경이 됐다.
피해 주민들이 민원을 넣고 CCTV를 설치하고 경찰에 신고까지 했지만, 깜깜한 밤에 갑자기 쓱 떨어지는 작은 물체를 포착하기는 쉽지 않았다. 급기야는 쓰레기 봉투 안에 들어 있던 마트 바코드를 조회해서 가해자를 잡아 냈다니 이번에도 우리나라 공권력 만세다.

저 할머니는.. 중증 치매나 정신병, 몽유병, 만취 상태 같은 경우가 아니라면, 지금까지 나이를 도대체 어디로 잡수셨는지 내 머리로는 이해할 수 없다. 자동차니까 망정이지 사람이 그 봉지에 맞았으면 어찌 하려 했는가?
형사상의 벌금은 법에 정해진 한도로만 떨어지지만, 민사상의 손해 배상금은 피해를 입한 만큼 내야 한다. 지금까지 1000만원이 넘는 물적 피해를 낸 저 가해자는 집안 재정이 좀 파탄 날 각오를 해야 할 듯이다. 과거엔 삼풍 백화점이나 세월호를 소유했던 기업도 이런 손해 배상금 명목으로 재산이 다 털렸었다.

2.
지하 주차장에 차를 세워 놓으면 최소한 저렇게 위에서 떨어지는 오물을 맞을 일은 없을 것이고, 더 나아가 뺑소니 차량이 긁고 튄다거나 지나가는 취객이 차를 망가뜨리는 일도 상당수 예방이 가능할 것이다. 거기는 24시간 내내 불이 켜져 있고 CCTV도 잘 갖춰져 있어서 치안이 좋다.

그러나 거기도 마냥 안심할 수만은 없다. 지하는 지상보다 근본적으로 화재에 취약하다는 약점이 있다. 지금으로부터 2년쯤 전엔 용인의 모 아파트 지하 주차장에서 어느 젊은 정신이상자가 불장난을 하다가 대형 화재를 내는 바람에 그 층에 있던 30여 대의 차량들을 깡그리 불태워 버린 적이 있다.
이 정도 피해 규모이면 정말 노예 제도라도 있지 않으면 한 집안을 다 거덜내서라도 피해 보상을 할 수 없을 것이다.

3.
아파트에서 누가 투신 자살을 한 것만으로도 충분히 안타깝고 불미스럽고 끔찍한 소식인데, 우리나라엔 2010년대에 투신 자살하는 사람에게 깔려서 깔린 사람과 자살자가 같이 죽은 일도 두 건이나 있었다. 이거 뭐, 아파트 주변에서는 앞만 보고 나갈 게 아니라 위로 하늘도 반드시 경계하고 주시해야 하는가 싶을 정도이다.

2012년 10월엔 경북 고령에서 한 중국 동포 30대 여성이 신변을 비관하여 14층에서 뛰어내렸는데.. 그 순간에 다른 남자가 "쓰레기를 버리러"(아까 1번 이야기와는 좋은 대조를..) 아파트 현관 밖으로 나가려 했고.. 결국 떨어진 사람을 맞았는지 부딪혔는지 깔렸는지.. 표현을 어떻게 하면 좋을지 모르겠지만 끔찍한 참변을 당했다. 정말 마른 하늘에 날벼락이 따로 없다.

이듬해 2013년 5월엔 우울증을 앓고 있던 30대 남성이 부산의 한 아파트 고층에서 뛰어내렸다. 그런데 마침 1층에서는 한 집에서 6살짜리 여자아이와 부모가 외출하러 나가던 중이었다.
아이는 신이 났는지 부모보다 먼저 밖으로 쪼르르 달려 나갔는데.. 저 자살자는 하필 그 타이밍 때 아이 위로 떨어져 버렸다.

자기 눈앞에서 눈 깜짝할 사이에 생판 모르는 사람이 투신 자살을 하고 자기 애가 그 사람 몸과 부딪혀서 치명상을 입고 죽었다니.. 부모가 얼마나 쇼크 받고 멘붕에 빠졌을지 차마 상상이 가능하겠는가? 쓰레기 봉투가 아니라 사람이 떨어졌고 그 가해자는 죽고 없으며 가해자의 유족은 최소한 가해자의 자살과는 관계가 없는 사람들이니, 이건 뭐 누구에게 책임을 물을 수도 없다. 그러니 답답할 뿐이다. 앞으로 이런 일이 다시는 없기를 바랄 뿐이다.

4.
끝으로.. 우리나라에서야 멀쩡한 엘리베이터를 놔 두고 음식물 쓰레기 봉투를 밖으로 떨어뜨린 노파의 파렴치· 몰상식한 행동이 지탄의 대상이지만, 북한에서는 이게 그저 웃거나 비아냥거릴 일이 절대로 아니다.
남조선에서 음식물 쓰레기를 몰래 투척한 노파의 소식을 들으니, 오래 전에 봤던 본 주 성하 기자의 증언도 덩달아 연관 검색 결과로 떠올랐다.

인평양의 고층 아파트에서 살 정도이면 그야말로 1% 안에 드는 최상류층일 텐데.. 그런 동네에서도 전력이 부족해서 엘리베이터는 그야말로 오전과 저녁 러시아워 때만 운영된다. 그렇기 때문에 고층에서 사는 몸이 불편한 노인들은 진짜 자기 집 밖으로 나오지를 못하고 사실상 높은 탑 안에 감금된다.

물도 당연히 특정 시간대에만 제한급수다. 더운물이 안 나오고 난방이 안 되는 건 차라리 양반이다. 추위 정도는 집안에 또 비닐하우스를 만들고 이불과 옷을 겹겹이 감싸면 극복 가능하며 실제로 평양 시민들은 그렇게 지낸다고 한다. 허나 밥 지을 물, 마실 물, 씻을 물, 심지어 변기 내릴 물이 제때에 충분히 안 나오니...;;

종이에 ‘변’을 받았다가 밤에 슬그머니 버리는 집들이 많았다. 몇십 층 높이에서 버리는 바람에 가로등도 없는 밤거리를 걸어가다 오물 벼락을 맞는 사람들도 있어 이런 경우 “번개 맞았다”고 했다. 밖에다 버리지 말라고 아무리 감시를 해도 칠흑 같은 어둠 속에선 소용없었다. (☞ 원문 링크)

탈북자 김철주(가명)씨는 평양에 살 때 아파트가 밀집한 광복거리를 지나다니기 꺼려했다. 이곳에선 무심코 지나가다 하늘에서 떨어지는 똥 벼락을 맞을 수 있다. 겉은 번드르르한 광복거리 아파트촌 여기저기 함부로 버려진 똥도 흔히 볼 수 있다. 아침마다 ‘도로보수대원’들이 욕을 퍼부으며 똥을 치우는 장면도 연출된다. 김씨는 “아파트에 물이 부족하다 보니 변기에 물이 많이 필요한 대변은 베란다에서 대충 처리하고 밖에 그냥 버리는 경우가 있다”고 했다. (☞ 원문 링크)


이건 음식물 쓰레기 투척하고는 차원이 다른 문제이지 않은가? =_=;;;
시가지에 인분이 굴러다니는 건 중세 유럽이나 구한말 조선 시대가 미개하다고 깔 때에나 등장하는 레퍼토리인데 저 동네는 시골 촌구석도 아니고 평양이 저 지경이고 이에 대한 탈북자들의 증언이 서로 일치하니 참 뭐라 할 말이 없다.
참 여러가지 일들을 생각할 수 있었다.

Posted by 사무엘

2015/01/30 08:28 2015/01/30 08:28
, , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1056

본인이 지금까지 게임 포함 고전 소프트웨어에 대해 글을 잔뜩 올린 것은 그래도 플랫폼은 PC 한정인 편이었다. 운영체제는 응당 16비트 도스/윈도이다.
하지만 그보다 더 옛날 8비트.. 아무래도 롬 베이직을 빼면 롬 카트리지를 꽂아서 게임밖에 할 게 없었던 더 옛날 컴퓨터에 대한 추억도 없는 건 아니다.

본인은 난생 처음 접한 개인용 컴퓨터가 286 AT인 관계로, 저 컴퓨터는 친구 집에서 어깨 너머로 구경만 했지 개인적으로 소장한 경험은 없었다.
그런 플랫폼용으로 프로그램 개발은 어떻게 했을까? 16비트도 모자라서 8비트이면 int도 char과 크기가 같을까? 몇만 바이트밖에 안 되는 허접한 메모리로 어떻게 저런 게임을 만들 수 있었을까? 1980년대 초니까 C 컴파일러조차도 없이 그냥 기계어/어셈블리 직통 코딩을 했을까?

그런 컴퓨터와 아예 8비트 아케이드 게임기와의 관계는 어떠했을까? 그리고 MSX인지 뭔지는 무슨 규격이지? 난 그런 건 전혀 모른다.
그러고 보니 일본이 유난히도 이런 플랫폼용 게임을 많이 만들었던 것 같다. 이 글에서 소개하는 5개의 게임도 다 일제이다.
하지만 본인은 정작 일본에서 동전 품절 현상을 일으킬 정도로 대성공을 거뒀다는 슈퍼마리오는 전혀 접한 적이 없었다. 그리고 황금도끼나 보글보글도 PC 도스용을 접했지 오락실용은 접한 적이 없다. 오락실용이 더 완성도가 높고 재미있는데도 말이다.

1. 남극 탐험

사용자 삽입 이미지

영어 원제는 Antarctic Adventure로, 1984년에 일본 코나미에서 MSX용으로 개발했다.
구멍과 바다표범을 요리조리 피하면서 펭귄을 잘 달리게 하는 게 목표이다. 구멍에 빠지거나 바다표범에 부딪히면.. 주인공인 펭귄이 죽거나 다치지는 않지만.. '지연'이 발생해서 제한 시간 안에 도착을 못 하고 미스가 난다.

BGM은 잘 알다시피 다른 음악이 아니라 스케이터 왈츠라는 고전 음악이다.
그리고 레벨을 클리어하면 가상 세계가 아니라 현실에서 남극 기지를 보유하고 있는 국가들의 국기가 뜨는데, 이는 이 게임이 완전한 허구의 게임성보다는 일종의 교육용으로 개발되었기 때문이다.
늘 드는 생각이지만, 주행 거리 단위는 km를 m로 거의 1/1000에 가깝게 너프시켜도 모자랄 판에 뻥튀기가 너무 심하다.

2. 캐슬 엑설런트

사용자 삽입 이미지

1985년에 일본 아스키 사에 MSX 및 여타 플랫폼용으로 개발한.. 일단은 아케이드 게임이지만 슈파플렉스처럼 퍼즐 요소가 굉장히 강하다. "도미솔미 파레솔~~ 도미솔미 파레도" 요런 BGM이 유명하다. 참고로 아스키는 MSX 규격을 제정하는 데 동참했던 그 회사이다.

얘가 게임 메카닉면에서 여타 게임들과 다른 점은.. 점프가 단순히 일시적인 추진력으로 공중에 떴다가 즉시 떨어지는 게 아니라... 일종의 제트팩을 몇 초간 동작시키는 것과 같다는 점이다. 그리고 다른 방으로 들어가면 각종 기물이나 적들의 위치가 원상복귀되어 버린다는 것도 비현실적이다. 단, 없애 버린 기물이나 적이 다시 생기지는 않는다.

이 게임은 레벨이라는 개념이 없으며, '캐슬'을 구성하는 가로 10*세로 10 총 100개의 방 전체가 거대한 단일 레벨이다. 그리고 지형과 기물, 각종 열쇠 조합을 이용한 굉장히 까다로운 퍼즐을 풀어야 공주가 있는 방까지 갈 수 있다. 주인공은 각종 움직이는 트랩이나 적에게 걸리면 HP 없이 바로 죽는다. 그리고 무기가 없어서 적은 움직이는 기물이나 트랩을 이용해서만 죽일 수 있다.
난 당연히 엔딩은 못 보고 포기했지만, 그래도 뭔가 중세풍의 성 안에서 각종 보석을 먹는 게 잠시나마 재미있긴 했다.

3. 덱스더(Thexder)

사용자 삽입 이미지
우리말로 표기와 영어 스펠링이 굉장히 헷갈려서 그 동안 검색을 하고 싶어도 못 하곤 했다. 원제품의 로고타입을 보면 T가 영락없이 C처럼 적혀 있기도 해서 더욱 혼란스러웠다. 게다가 Dexter라는 이름도 있다.
그런데 PC용에는 포팅을 한 기업인 '1987 시에라 온라인'이라는 문구가 뜬다는 걸 기억을 되살려서 역추적 후 검색에 성공했다.

친구 집에서 패미컴용을, 그리고 나중에 초딩 시절에 개인적으로 PC DOS용도 해 봤다. PC용은 극악의 종횡비를 자랑하는 CGA 640*200 16색 그래픽 모드에서 실행되었다. 물론 원작은 1985인가 86년에 Game Arts라는 일본 기업에서 개발되었으며, 그 당시 수십~수백만 카피가 팔렸을 정도로 굉장히 히트 치고 성공한 작품이라고 한다.

게임 주인공은 이족보행과 비행 기능을 모두 갖춘 로봇이다. 아케이드 게임으로서는 아주 드물게 각도를 목표물을 자동 조준하여 총을 쏘는 기능이 있다. (이것 말고 자동 조준을 하는 게임으로는 난 툼 레이더밖에 못 봤다~!)
비행 모드에서는 덩치가 좀 더 작아지고 낙하· 추락을 안 하게 되지만 자동 조준을 못 하며 중간에 정지를 할 수 없다는 제약이 생긴다.

이런 상태에서 던전 안의 수많은 장애물· 몬스터들을 죽이거나 피하면서 던전을 빠져나가는 게 게임의 목표다. 게임을 잘 못하면 적들이 너무 많이 나와서 걔네들에게 다구리 당하다가 게임오버 된다.
SF스러운 느낌이 나면서 한편으로는 단조 특유의 구슬픈 느낌이 나는 BGM도 인상적이다.

4. 마피 (Mappy)

사용자 삽입 이미지

1983년에 일본 남코에서 개발한 아케이드 게임으로, 동작 플랫폼이 위의 둘과는 좀 다르다. 위키백과에서도 MSX가 아니라 '아케이드'라고만 소개하고 있는데, 그래서 그런지 본인 역시 이건 동전을 넣어서 사용하는 동네 문방구의 오락기로만 구경해 봤다.
주인공은 쥐이고 적들은 고양이인데, 고양이를 피하면서 아이템들을 모두 모아야 한다.

고양이를 직접 공격해서 죽일 수는 없으며, 문을 적절한 타이밍에 열어서 기절시킬 수만 있다. 그리고 굉장히 특이한 규칙이 있는데, 봉봉 패드를 타고 점프 내지 낙하 중일 때, 다시 말해 발이 땅에 닿지 않은 상태일 때는 고양이와 닿아도 죽지 않는다. 요 타이밍을 잘 이용해야 한다.
그런데 안전하다고 해서 봉봉 패드만 계속 연달아 타고 있으면 안 된다. 그러면 패드가 나중에 끊어져서 화면 아래로 떨어지기 때문이다.

E단조의 BGM 멜로디도 20년 가까이 기억 속에 봉인되어 있었는데 본인은 아직까지 정확하게 기억하고 있다. 신기하다.
그리고 정식 오락실도 아니고 마치 뽑기 기계처럼 비치된 '동네 문방구의 오락기'라고 하니까 또 추억이 돋는다. 요즘은 그런 용도의 게임은 스마트폰 게임이 다 대체해 버렸으며, 3, 40대 아저씨들이나 옛날 추억을 살리려고 에뮬레이터와 롬 파일을 구해서 PC에서 게임을 즐기는 지경이 됐다.

일본에서는 패미컴(family), 퍼스컴(personal) 등.. 한국 같았으면 그냥 알파벳 이니셜을 그대로 썼을 텐데 영어 단어를 제멋대로 뚝뚝 잘라 내서 말은 참 잘 만든다는 생각이 들었다.

5. 요술나무 (Magical Tree)

남극탐험과 마찬가지로 코나미에서 1984년에 MSX용으로 개발한 작품이다. 제목을 까맣게 잊어버린 상태였는데 구글에서 MSX tree climbing game이라고만 쳤더니.. 이거 뭐 내가 원하는 답이 즉시 튀어나와서 기억을 복원할 수 있었다. 역시 무서운 구글.

사용자 삽입 이미지

이건 깃털 달린 모자를 쓴 귀여운 인디언 소년이 주인공으로 나오고, 나무를 수직으로 끝도 없이 타고 오르는 게 목표인 게임이다. 9개의 스테이지를 거치면서 설정상 총 2004m를 올라가야 한다. 한라산보다 약간 더 높구나.
게임 BGM을 말하자면, 평소에는 F장조 파~도 파~도 파라솔파도... 요렇게 시작하는 명랑한 멜로디 6마디가 무한 반복된다. 아, 한 스테이지에는 화면의 중앙에 나무 기둥이 있는 보통 모드가 있고, 중앙 대신 좌우 양 끝에 나무 기둥이 있는 특별 모드가 있다. 특별 모드에서는 반음 간격의 뚜두뚜두...만 반복되면서 뭔가 위기 상황인 듯한 분위기가 난다.

주인공을 방해하는 건 무슨 게처럼 수평 비행을 하는 부엉이, 번개를 떨어뜨리는 먹구름, 그리고 시도 때도 없이 튀어나오는 애벌레 등이다. 아이템으로 칼과 활이 있는데 이건 점수만을 줄 뿐 무기가 아니다. 이 게임엔 주인공에게 무기를 사용한 공격은 없으며 단지 사과를 떨어뜨리고 굴려서 적을 없애는 시스템만이 존재한다.

끝도 없이 높이 솟은 나무 위에 성이 있는 게 '재크와 콩나무' 동화 같은 느낌이 든다.

Posted by 사무엘

2015/01/27 08:26 2015/01/27 08:26
, , ,
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1055

테이큰 3, 국제시장

2015년 새해 연초에 본인은 이례적으로 영화를 세 개나 영화관에 가서 봤다. (이 글에서 크게 코멘트를 하지 않은 "님아 그 강을 건너지 마오"까지 포함해서)

1. 테이큰 3

악당이 아니라 니슨이 남에게 굿 럭을 날리는 장면 하나만으로도 잔뜩 기대를 하고 봤다. 예고편에서는 "우리는 FBI와 CIA를 총동원해서 당신을(니슨) 저지할 겁니다" 이런 말이 나오는 것 같던데 실제 영화에서는 놓쳤는지 못 들었다.

1편에서는 흑발 내지 갈색에 가깝게 염색을 하고 출연했던 킴은 원래의 머리 색깔인 금발로 바뀌었다. 1편에서는 끼만으로 먹고 살고 싶어하던 가수 지망생이었던 반면, 3편에서는 철이 들어서 공부를 했는지 심리학을 전공하는 대학생으로 신분이 바뀌었다.

하지만 대학교 학부생 주제에 벌써 혼전임신을 한 상태다..;; 1편의 '아만다'만치 심한 수준은 아니겠지만 킴도 좀 노는 타입인 듯. 임신 테스터는 영락없이 "킬빌"의 장면을 떠올리게 한다.
이런 상황에서 브라이언 정도의 딸바보라면 딸을 임신시킨 남친을 반쯤 죽여 놓고 머리에 샷건을 들이대면서 "내 딸하고 당장 결혼 안 하면 넌 뒈진다"라고 협박할 법도 한데 그 일에 대해서는 브라이언도 의외로 쿨하다.

이 3편에서는 무엇보다도 킴의 새아빠인 스튜어트가 배우 자체가 더 얍삽하고 사악하게 생긴 사람으로 바뀌고 완전히 악역으로 흑화했다. 1편에서 브라이언을 프랑스로 데려다 줬던 그 전세기가 3편에서는 새아빠가 의붓딸(자기 입장에서)을 납치하는 도구로 용도가 바뀌어 버린다. 이미 비행기가 뜨기 시작했는데, 자동차로 밑의 랜딩기어를 날려 버리는 것만으로 비행기를 저렇게 휘청거리게 만들고 떨어뜨리는 게 항공역학적으로 가능한지는 난 좀 회의적이다.

"다이하드" 어느 시리즈에서처럼 러시아 최종 보스를 해치우는 부분에서 이야기를 끝냈어도 될 텐데, 반전은 좀 억지로 집어넣은 느낌이 든다. 어설프게 "쏠트" 흉내를 낸 듯.
이에 맞서 브라이언은 원하는 정보를 얻기 위해 이번에도 남에게 형사를 사칭하고 악당을 고문한다. 새아빠가 얼굴에다 헝겊을 쓴 뒤 브라이언에게 꼴꼴꼴~ 물 고문을 당한다. =_=;;

수사반장인 흑인 도츨러는 처음에는 골칫거리인 브라이언을 직업상 체포하는 역할을 하지만 나중에는 결국 브라이언의 혐의가 풀리면서 서로 화해한다. "브라이언은 너희(부하들) 능력으로 잡은 게 아니라 잡혀 준 척 한 것일 뿐이다. 빨랑 차 세워라" 이런 말을 할 정도로 똑똑하다.

끝으로, 종교적인 부분. 테이큰 시리즈는 나 같은 신자가 보기에 교리적인 왜곡 같은 건 없어서 보기가 참 편했다. (괜히 이상한 코드 집어넣는 영화들은 천하에 꼴도 보기가 싫었다) 레노어의 장례식을 진행하는 목사가 영어로는, 내 기억이 맞다면 the word of God says... 라고 말하지만, 자막 번역은 그냥 "주님은 이렇게 말씀하십니다.." 라고 떴다.
성경 말씀 자체에 인격이 담겨 있다는 개념을 잘 이해하지 못한 불신자가 대충 의역을 해서 그런 것 같다. "성경은 말합니다"라고 직역을 못 하더라도 "성경에는 이런 말씀이 있습니다" 정도만 해도 충분했을 것이다.

이번 3편은 1편의 포스를 능가할 수준은 못 되지만 그래도 2편보다는 나은 것 같다. 그럭저럭 잘 봤다.
그러고 보니 나 완전 액션 영화 매니아인 것 같다. 인용하는 관련 영화들이 전부 그쪽.. ^^;;

2. 국제시장

"국제시장"은 정말 딱 "포레스트 검프"의 우리나라판 같다. 21세기를 사는 우리가 잊어서는 안 될 아래의 굵직한 사건들을 스크린에서 다뤄 줬다는 것만으로도 이 영화는 매우 건전하고 충분히 볼 가치가 있다.

(1) 6· 25 흥남 철수(1950. 12.): 1차 세계 대전 때 크리스마스 휴전이라는 이벤트가 있었다면, 6· 25 전쟁 때는 이런 기적 같은 사건이 있었다. 대한민국 정부가 잠깐이나마 평양까지 진출하고 북진 멸공 자유 통일이 눈앞에 있었는데.. 중공군 때문에 이 염원이 사실상 영원히 좌절돼 버렸다. 남쪽의 원산까지 이미 적군에게 점령당한 관계로 퇴로가 해로밖에 없었다. 그래서 배를 타야 했다.
참고로 월턴 워커 장군이 교통사고로 순직한 때가 1950년 12월 23일로, 흥남 철수와 타이밍이 거의 일치한다. 지금 서울에 '워커힐'이 바로 저 사람 이름을 따라 명명됐다.

(2) 파독 광부와 간호사(1964~1966): 한 10여 년 전부터 육사 교장의 편지라는 정체불명의 글이 나돌면서 어쨌든 많이 알려졌다. 일류대에 들어갈 정도로 머리 좋고 똑똑하면 뭘 하나, 나라가 가난하고 스스로 부를 창출할 기반이 없으니.. 억만 리 타지에서 학벌에 어울리지 않는 힘든 일 궂은 일을 하는 것인데도 목돈 모을려고 다들 못 나가서 난리였다.

(3) 월남전(1972~1974): 무슨 민간인 학살을 저질렀네(민간인 위장을 한 스파이 얘기는 절대 안 하고) 어쩌네 이상한 헛소리 음모론 대신, 이렇게 건전한 얘기를 풀어 주니 관람하는 기분이 좋았다.
물론, 실제로는 동일 인물이 공무원· 관리 명목이 아닌 인부· 일꾼 명목으로 서독과 베트남을 모두 경험한 경우는 매우 드물었다는 점은 감안할 필요가 있다. 그래도 창작물이라는 허구에서는 한 주인공이 온갖 역사 사건을 다 몰아서 경험하는 게 관행이긴 하다. <여명의 눈동자>나 영화 <진주만> 등의 주인공을 생각해 볼 것.

(4) KBS 이산가족 찾기(1983. 10.): 재연을 한 건지, 아니면 당대의 레알 기록 영상물에다가 주인공을 CG로 합성해 넣은 건지? 어쨌든 재연을 굉장히 잘했다. 난리통에 생이별한 아버지는 못 찾았지만, 여동생은 미국으로 입양돼 있었을 줄이야.
내가 "님아 그 강을..."을 보면서는 그렇게까지 큰 감흥이 없었지만, 이산가족 상봉 장면만은.. 정말 눈물 없이는 볼 수 없었다. "여기는 운동장 아니다." / "Am I really your sister?" ㅠ.ㅠ
미국으로 입양된 막순이 역을 맡은 배우.. 한국계 미국인 신인 같은데 정말 리얼하게 연기를 잘했다. 킬빌로 치면 뭔가 헬렌 김(암살자 카렌 김 역) 같은 위치일까?

부부싸움 하다가 어색하게 국기에 대한 경례를 하는 장면은 정말 다른 불순한 의도 없이 그 시절에 그랬다는 풍자가 들어간 개그이더구만.. 도대체 뭐가 이념이 들어간 건지 모르겠다.
게다가 뭐? "나이 많은 꼰대들한테서 지겹도록 들은 얘기를 굳이 또 영화로 봐야 할 필요 있나?" 이런 인간말종 수준의 개소리는 정말로 일고의 가치가 없다.

한 가지 아쉬운 점은, 이 영화는 6· 25 시절의 부산을 다루고 있으면서 정확하게 그 시간과 장소에 있었던 대역경인 "부산역전 대화재"는 건너뛰었다는 점이다. 부산으로 피난 가서 살던 덕수네 집안의 삶을 더욱 어렵게 만들었을 사건인데, 딱히 집어넣을 만한 공간이 없어서 안 넣은 것 같다.

Posted by 사무엘

2015/01/25 08:38 2015/01/25 08:38
, , ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1054

마지막 한 번의 여유

얼마 전, 본인은 회사에서 어도비 인디자인의 약간 구버전을 업무상 프로그램 구조 분석을 목적으로 설치한 적이 있었다.
본인은 프로그래머이지 디자이너가 아니며, 나의 컴퓨터 생업 밑천은 비주얼 C++이지 인디자인은 아니다. 이건 잠깐만 들여다보고 버릴 예정이므로 30일 트라이얼 버전만 잠깐 깔았다.
그리고 그걸로 소기의 목적을 달성한 뒤, 본인은 그걸 방치했는데..

나중에 내 한글 입력기가 인디자인에서 제대로 동작하지 않는 듯하다는 문의가 어디선가 들어왔다. 난 비록 30일 기간은 아득히 경과했겠지만 일단 내 회사 컴에 인디자인이 깔려 있다는 것을 기억하고 그걸 일단 실행해 봤다. 그랬더니..
프로그램은 "트라이얼 기간이 경과했으니 이제 마지막으로 한 번만 더 실행 기회를 준다"라는 메시지와 함께 일단 실행이 됐다.

어도비가 요즘 먹고 살기가 팍팍한지, 혹은 도를 넘는 불법복제에 이골이 났는지 소프트웨어 제품들에 인증을 강화하고 패키지 일회성 구매보다 사용권/사용 기간 구매 위주로 정책을 짜게 바꾸고 있다고 본인은 들었다. 하지만 30일이 경과하자마자 칼같이 실행을 거부하는 여느 데모나 셰어웨어와 달리, 트라이얼 버전에 대해서는 쟤들이 나름 자비심 있는 조치를 취한 것 같다. 단 한 번만 더 기회를 준 것이지만 사용자의 입장에서는 훨씬 더 좋은 인상을 받았다.

이와 유사한 다른 사례들을 주변에서 여럿 찾을 수 있다.
옛날에 '잔기'(목숨, 마릿수)가 존재하던 게임을 보면, 1이 마지막 잔기인 게임이 있는가 하면 0이 마지막인 게임도 있었다. 이 역시 1보다는 0이 더 관대해 보인다.

지하철의 경우, 운임이 중간에 오르더라도 예전 운임을 기준으로 이미 충전된 한 달치 정기권은 추가 정산 없이 그대로 사용할 수 있다.
지금은 없어진 지 10년이 넘었지만, 옛날엔 서울 지하철에 정액권이란 게 있었다. 구입가보다 더 많은 금액이 입력되어 있을 뿐만 아니라, 소진 직전 맨 마지막에는 금액이 100원이 남았든 50원이 남았든 무방하게 전철 최장거리 구간도 1회에 한해 더 이용할 수 있었다. 뭐, 지하철 회사의 입장에서는 이런 운임 누수 꼼수를 막으려면 정액권의 단가를 최대한 높게 잡아야 했겠지만 말이다.

이런 식의 아기자기한 '마지막 한 번의 여유'를 생각할 만한 일이 또 있었다.
한번은 교회 친구들을 집에 초대해서 놀다가 야식을 시켜 먹었다. 이럴 때는 집 냉장고나 문에 쳐박혀 있는 야식집 메뉴판을 꺼내서 그 내용대로 주문을 하는데, 그 메뉴판 가격을 그대로 접수받는 집이 내 경험상 생각보다 적다. 수 년이라는 시간이 흐르는 사이에 가격이 올랐다고 그런다. 그러나 이것도 그렇게 센스 있는 조치는 아니다.

자기 집의 옛날 메뉴판 찌라시를 제시하면 그걸 회수하고 새 찌라시로 교환하는 조건으로 1회에 한해, 메뉴에 적힌 대로 옛날 가격을 받게 하는 게 고객에게는 훨씬 더 좋은 서비스가 되지 않을까?
자기네 가게에서 옛날에 집집마다 돌며 뿌렸던 광고 찌라시를 버리지 않고 기억하고, 나중에 그걸로 주문을 한 것만으로도 업소에서 보상을 해 주는 게 마땅치 않은가 말이다.

또한 이것은 "찌라시에 대한 신뢰도를 올리고" 한번 주문을 했던 고객으로 하여금 자기 업소에 대한 충성도를 높이는 효과도 낸다는 게 내 생각이다. 할인 쿠폰이 뭐 따로 있는 게 아니다.
소프트웨어 UI 내지 고객을 접대하는 장사를 하는 업종에서는 이런 '마지막 기회'에 대한 아량이라는 덕목이 필요하겠다는 생각이 들었다.

Posted by 사무엘

2015/01/23 08:34 2015/01/23 08:34
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1053

누가복음 이야기

신약 성경의 사복음서 중에서 개성이 없는 책이 있겠느냐만, 그 중 누가복음은 사도행전과 직통 라인이라는 점, '데오빌로'라는 개인적인 수신자를 설정하고 있는 점부터가 심상찮으며 이것 말고도 자신만의 아주 독특한 면모를 여럿 지닌 책이다.

누가복음은 예수님에 대해서 온전한 인간적인 면모를 조명하였으며, 주체가 아닌 객체의 관점에서도 그분이 비단 유대인뿐만 아니라 온 인류의 보편적인 구원자라는 점을 내세웠다.
그러면서도 요한복음처럼 뭔가 형이상학적이고 철학적이고 심오한 분위기가 아니라 사람 냄새가 물씬 풍긴다. 정치 용어를 동원해서 비유하자면 '좌파'스럽다. 사복음서 중 민중, 인권, 여성 해방 같은 분위기가 압도적으로 가장 진하게 느껴진다.

그래서일까? 이 책엔 정치인 디스가 심심찮게 나온다. 단순히 헤롯이 침례인 요한을 잡아 가뒀다고만 말하지 않는다. 헤롯이 안 그래도 나쁜짓을 저질렀데 그것도 모자라서 이를 책망하는 요한을 잡아 가두기까지 했으니 추가로 까임권을 획득한 것이라고 코멘트를 한다. (눅 3:19-20) 이런 코멘트는 다른 복음서에는 존재하지 않는다.
나중에는 예수님도 그 헤롯을 보고 여우라고 살짝 디스를 하셨다(눅 13:32).

그리고 지금으로 치면 삼풍 백화점이나 세월호 같은 재난· 대형 사고 시국에 적용할 만한 구절도 누가복음 13장에 나온다. "너희도 회개하지 않으면 다 이처럼 멸망하리라."
이런 맥락에서, "세리들은 법에서 규정된 것 이상으로 세금을 부당 징수 착취하지 말라. 군인들은 권력을 남용하여 민폐 끼치지 말고 나라에서 주는 급여만으로 만족하라" 같은 사회 정의를 추구하는 침례인 요한의 권면도 누가복음에만 나오는 건 이상한 일이 아닐 것이다. (눅 3:12-14)

마태복음의 설교에서 언급되는 "영이 가난한 자, 의에 주리고 목마른 자"가 눅에서는 그냥 물리적으로 "배가 고픈 자"로 단순화되어 나오고,
동일한 사건도 마태복음이 scope가 대체로 "유대인 only"라면, 누가복음은 "모든 사람, 너희" 같은 global scope으로 바뀐다. 여러 모로 인간적이다. 그런데 정작 교회라는 단어 자체는 마태복음에만 직접적으로 나오니 이것도 상호 보완적인 집필 방식인 듯하다.

뭐 그렇다고 해서 성경 자체가 이념에 치우친 책이라는 말은 절대 아니니 오해하지 말아야겠다. 누가복음 역시 뭐 민중신학, 해방신학처럼 부자들 재산을 빼앗고 기득권층 뒤집어엎어서 정치적 해방을 이루자 그런 짓을 결코 조장하지 않는다. 누가복음이 궁극적으로 말하고자 하는 것은, 진정한 신본주의야말로 역설적으로 진정한 인본주의를 실현하는 첫걸음이라는 것이다.

누가복음에 있는 뭔가 인간적으로 훈훈한 이야기로는 선한 사마리아인 내지 돌아온 탕자가 있다. 이것들은 예수님이 비유로 말씀하시던 중에 나온 얘기이며, 실제 사건이나 실존 인물 얘기는 아니다.
그러나, 어떤 선행이나 종교적인 행위 없이 예수님만을 믿어서 죄사함/구원을 이루는 예로 누가복음에만 나오는 다음 두 에피소드들은 실화이다. (1) 십자가에서 구원받은 강도, 그리고 (2) 어느 죄인인 여인.

먼저 (1)의 경우를 생각해 보자. 예정에 없던 예수 십자가형 졸속 집행으로 인해, 주변의 어느 두 죄수도 완전 날벼락이 따로 없는 십자가형을 같이 당했다. 이들은 당연히 완전 멘붕에 빠졌으며, 십자가에 매달린 채 힘들어 죽을 것 같은 상황에서도 같이 예수님을 욕했다. 그러나 한 명은 몇 시간 동안 매달려 있던 과정에서 나중에 회개했다. (눅 23:39-43)

그는 살아 생전에 무슨 나쁜 짓을 해서 이런 비참한 최후를 맞이게 됐는지 모르겠다. 허나, 그는 막판에 회개하고 예수님을 주님으로 시인함으로써 로또 1등을 능가하는 인생역전을 성취했다. 저 사람이 무슨 평생 종교 행위를 했나, 고해성사를 했나, 도대체 무슨 예쁜 짓을 했단 말인가?

(2) 눅 7장에 나오는 무슨 죄인이라는 여인도 한 건 아무것도 없다. (무진장 음란 방탕하게 살기라도 했는지?) 이를 악물고 죄를 단호하게 끊겠다고 결심하지도 않았고 뭐 무슨 성사, 고행, 기도문 암송 그딴 거 없었다.
그저 예수님을 보고는 감화되어서 자신의 모습이 부끄러워 보이고, 그 애통한 마음을 어떻게 표현할까 고민하다가.. 그저 울면서 그분 발에 향유를 뿌리고 발에다 키스를 하고 자기 머리카락으로 그분 발을 닦았을 뿐이다.

그랬더니 이게 웬일, 예수님은 그 마음을 받으시고 그 여인의 죄가 용서됐다고 선언하셨다.

이런 일이 가능한 근본 이유는 예수님은 인간의 죄를 사할 권한이 있는 하나님이기 때문이다.
병 고치고 죽은 자를 살리는 것처럼 눈에 보이는 기적을 그분이 자꾸 행하신 이유는.. 바로 눈에 보이는 기적이 가능하듯이 동급의 NP-hard나 마찬가지인 죄사함, 즉 눈에 안 보이는 기적도 행할 수 있다는 걸 보이기 위해서였다. 이거도 내 추론이 아니라 성경에 나오는 말이다. (마 9:4-6, 막 2:5-10, 눅 5:20-24 계속 반복해서 강조하며 등장!)  둘이 서로 다항시간 환산이 가능한 문제이기라도 한 듯. ㅋㅋ

그런데 저 여인이나 강도가 예수님께 잘 보여서 그저 뽀록이 난 것에 불과하고 예수님은 무슨 기분파마냥 이랬다 저랬다 제멋대로 죄 사면권을 남발하는 분이었던 것일까? 그렇게 생각하는 크리스천은 없으리라 생각한다.
이 사고방식을 이해를 못 하면.. 당신은 "향유를 300 데나리온에 팔아서 가난한 사람 구제나 하지 이게 뭔 삽질이야?" 하고 분개했던 가룟 유다의 후예가 되는 거다. (요 12:3-5. 단, 이건 눅7과 동일 사건은 아님)

"평생 나쁘게 살다가 끝에 죽기 직전에 예수 믿기만 하면 끝이냐? ㅋㅋ" 이런 개독안티의 조롱은... 본질적으로 정확하게 맞는 말이다. 그게 기독교다. 단지 그런 말을 하는 당신이 언제 죽을지가 예측이 전혀 불가능하다는 게 문제일 뿐이다. 컴퓨터 프로그램의 정지 문제만큼이나. 구원은 오로지 예수님에게 있으며, what you do가 아니라 what you are에 달려 있다.

맨날 선행, 선행만 강조하는데 물질· 물리적인 선행에 앞서 그 동기와 이유가 무엇인가? 그 선행을 할 여건이나 환경조차 갖추지 못하고 있는 사람은 도대체 어떻게 되는 건가?
그러니 그런 상대적이고 불완전한 잣대가 아니라 예수님을 믿고 그분부터 사랑하는 것이 성경적으로 모든 지혜와 지식의 시작이고 진짜 선행의 시작인 것이다. 예수님께 허비하는 건 궁극적으로 허비가 아니고 낭비도 아니다. 성경은 이런 사실을 알려 주고 있는 것이다.

예수님을 만나서 펑펑 울고 온 눅 7장의 여인은 삶이 송두리째 바뀌어서 요한복음 4장에 나오는 여인처럼 되었을지는 모르겠다. 요한복음의 그 여인도 과거가 그리 깨끗하지 못했으니 말이다. 그래서 결혼식 주례 때 요 4:18과 요일 4:18을 절대로 뒤바꿔서 인용해서는 안 되게 됐다. =_=;; (이거 대표적인 기독교 개그인데.. 뭔 말인지 모르시는 분은 성경을 직접 찾아 보시길.)

요한복음과의 연계 하니까 생각나는데.. 누가복음의 전반적인 분위기와 논조로 보자면, 사실 간음하다 붙잡힌 여인 얘기도 요한복음보다는 누가복음에 더 어울리는 이야기인지도 모르겠다. 하지만 내가 하나님의 생각을 다 알 수는 없으니 감히 성경 변개를 주도하지는 않겠다.

자, 정치인 디스가 나왔고 제일 중요한 훈훈한 구원 이야기가 나왔고.. 끝으로, 침례인 요한 얘기 하나만 더 하겠다.
사복음서를 살펴보면 예수님의 탄생에 대해 언급한 책이 반(마, 눅)이고 그리하지 않은 책이 반(막, 요)이다. 그런데 누가복음은 예수님의 탄생뿐만이 아니라 유일하게 침례인 요한의 드라마틱한 탄생 과정도 상세하게 다루고 있다. 다른 책에서는 요한은 그저 성경 예언에 근거하여 곧바로 갑툭튀한 인물일 뿐이니 말이다.

예수님을 임신한 마리아가 방문하자 엘리사벳의 배에 있던 침례인 요한이 기뻐서 흥분했다니.. 이런 성경의 사고방식에서는 낙태 같은 건 정말 꿈에도 상상할 수 없다는 걸 알 수 있다.
일반적으로 '모태신앙'이라고 하면 그냥 충분히 어릴 때부터 교회 다니고 예수님을 믿어서 딱히 불신자의 사고방식으로 산 경험이 없는 사람을 일컫지, 그 애가 진짜 태어나기도 전부터 특례 구원이 아닌 진짜 자기 믿음으로 구원 받았다는 얘기는 아닐 것이다.
그러나 요한의 경우는 레알 모태신앙이었던 것 같다. 눅 1:15를 보시라. "... 심지어 자기 어머니 태에서부터 [성령님]으로 충만하여"

물론 그렇다고 해서 요한이 예수님처럼 죄성이 아예 없이 태어난 사람이라는 뜻은 아니겠지만(시 51:5), 성경은 요한이 여자에게서 태어난 자들 중에서 가장 큰(위대한) 사람이었다고 말한다. (마 11:11)
그런데 한편으로는 하늘의 왕국에서 가장 작은 자가 요한보다 더 크다고도 성경은 말한다. 이것은 요한이 예수님을 진짜로 보게 된 사람이라는 점에서 옛 사람들보다 매우 복을 받았지만, 한편으로 예수님의 부활과 승천 같은 영광은 못 보고 먼저 죽기 때문에 신약 크리스천만치 복이 있지는 못하다는 걸 의미한다.

단, 엘리야의 영을 받고 위대한 일을 한 요한도 나중에 투옥된 상태에서는 제자들을 보내서 그 예수님보고 "너 정말 메시야 맞니? 아니면 우리가 다른 사람을 계속 기다려야 할까?"라고 인증 질문을 하니, 이것은 성경을 처음 읽는 독자들을 의아하게 한다.
성경에서 복음서를 두 파트로 요약하면, 분량상 침례인 요한의 죽음과 곧이어 나오는 오병이어 기적이 딱 중앙에 자리잡게 된다.

이제 글을 슬슬 맺도록 하겠다.
누가복음은 '인간 예수'를 조명하다 보니, 예수님의 어린 시절에 대한 단서가 짤막하게나마 언급되어 있는 유일한 책이다. 어린 시절이라고 해서 예수님이 무슨 척 노리스-_-라도 됐던 것처럼 희한하게 묘사한 수많은 위경들이 아니라 이게 진짜 믿을 만한 책이다.
또한 불의한 재판관 비유를 통해 끊임없는 간구 근성을 호소하며, "예수님 당신을 낳은 태와 당신이 어릴적에 빨았던 엄마 젖가슴이 참 복이 있습니다!" 같은 시시콜콜한 군중 애드립 에피소드(눅 11:27)가 기록된 책, 불의한 청지기 비유 같은 독특한 메시지가 담겨 있는 책이 누가복음이다.

이런 이야기들이 적혀 있는 누가복음의 1:1-4 서문을 보시라. 여기에 기록된 모든 이야기들은 증인이 한두 명이 아닌 신뢰도 100%의 확실한 팩트라고 한다. 저자 역시 그 사건을 머리부터 발끝까지 싹 다 정확하게 이해한 상태에서, 내가 진심으로 친애하는 '데오빌로'라는 독자로 하여금 이 놀랍고 아름다운 이야기를 꼭 모두 숙지하기를 바라면서 진심을 담아 기록을 남겨 전한다고 적혀 있다.
비단 누가복음뿐만이 아니라 성경의 모든 말씀들이 그렇게 고귀하게 기록되고 전해져 왔다. 이 책에 기록된 말씀을 읽고 상고하는 오늘날의 '데오빌로'의 후예에게도 반드시 복이 있을 것이다.

Posted by 사무엘

2015/01/20 08:31 2015/01/20 08:31
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1052

본인은 이 블로그의 옛날 글들을 보면 알 수 있듯, 어린 시절의 추억이 담긴 옛날 고전 게임들을 회상하는 걸 매우 좋아한다.
본인이 어릴 때에 생각한 가장 typical한 게임은 사람 또는 최소한 두 팔 두 다리가 달린 캐릭터가 2차원 던전을 뛰어다니면서 적을 죽이는 액션/아케이트 장르였다. 그래서 주 관심사도 페르시아의 왕자나 황금도끼 같은 부류였는데..

하루는 오랜 기억 속에 봉인되어 있던 약간 색다른 게임이 되살아난 관계로 별도의 글을 좀 쓰게 되었다. 바로 슈파플렉스이다.

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

이 게임은 통상적인 액션/아케이드라고 보기에는 맵 구조가 단순하고 주인공의 묘사가 더 기하학적(?)이며 퍼즐의 비중이 매우 높다. 주인공이 대놓고 동그란 공 모양인 건 Bumpy's Arcade Fantasy 말고는 쟤 정도밖에 기억이 안 난다.

사용자 삽입 이미지
슈파플렉스는 간단한 규칙에 비해 게임성과 중독성이 대단히 뛰어나서 그야말로 시대를 초월한 명작이라 칭송을 받고 있으며, 외국에서는 오늘날까지도 수천 개의 custom level들이 나돌고 있다고 한다.

이 게임의 명목상 배경은 컴퓨터 내부=_=;;이다. 주인공은 저 붉은 공 모양의 입 큰 캐릭터이다. 주인공은 던전 안에서 좌우상하 마음대로 드나들 수 있기 때문에 던전의 전체 시점이 좌우전후인 것 같지만, 실제로는 그렇지 않다. 중력이 아래로 작용하고 있다. 그리고 일부 소수 레벨은 주인공에게도 중력이 걸리기 때문에 위로 한없이 자유롭게 올라갈 수가 없다.

게임의 기본적인 목표는 던전 안을 돌아다니면서 위험물에 걸려 죽지 않고, '인포트론'이라고 불리는 아이템을 모두 먹어서 모은 뒤 출구로 빠져나가는 것이다. 초록색 기판은 주인공만이 먹어서 없앨 수 있는 일종의 지형인데(적은 이걸 못 없앰), 이게 없어지면 그 위에 있던 돌덩어리와 인포트론은 아래로 떨어진다. 떨어지는 물체에 맞으면 주인공이건 적이건 다 죽는다.
(여담이지만, 주인공이 녹색 기판을 먹으며 이동 중일 때는 눈을 소복소복 밟는 듯한 찰진 소리가 들린다.)

슈파플렉스의 모티브는 팩맨과 분명 비슷한 점이 많다. 하지만 지형을 먹어 없애서 장애물을 아래로 떨어뜨릴 수 있는 것은.. 1983년에 개발된 완전 옛날 게임인 Digger와도 비슷한 것 같다.
혹시 Digger 아는 분 계시는지? 본인은 초딩 시절에 컴퓨터 학원에서 디스켓 넣어서 흑백 모니터 XT 컴퓨터로 저걸 돌려서 해 봤다. 얘는 주인공이 무슨 자동차처럼 생겼으며, 한 화면에서 보석을 다 먹기만 하면 자동으로 레벨이 끝난다.

사용자 삽입 이미지

물론 슈파플렉스는 Digger보다야 머리 써야 하는 복잡한 요소가 훨씬 더 많다.
돌과 인포트론이 막 복잡하게 섞여 있는 곳에서 뭘 까딱 잘못 건드리면 죽거나, 인포트론이 돌 사이에 파묻혀서 내가 먹을 수 없게 되는 게 많다. 마작으로 치면 무작정 짝이 맞다고 해서 아무렇게나 가까운 패를 없애다가 나중에 게임을 풀 수 없는 지경이 되는 것과 비슷하다.

이런 장르를 별로 안 좋아하는 사람이라면 게임 하다가 너무 골치 아파서 스트레스만 잔뜩 받을 법도 한데.. 덕후들은 오히려 이런 데에 완전 열광한다.
엔하위키 아니랄까봐 각 레벨과 게임 특성에 대해서 아주 자세히 설명돼 있다. 역시 거기 글 쓰는 사람들은 덕력이 장난이 아니다.

PC 통신 시절에 내가 알고 지내던 내 또래의 어느 컴덕/프로그래머는 슈파플렉스의 중독성을 극찬하던 매니아였으며, 도스용으로 슈파플렉스 레벨 에디터를 자작하기도 했다. =_=;;
하긴 별도의 복잡한 트리거나 이벤트가 별로 없이 정말 사각형 격자 데이터만으로 레벨이 만들어지니 데이터가 압축/암호화만 돼 있지 않다면 레벨 에디터를 만드는 건 어렵지 않았겠다.

이 게임의 백미는 돌더미들이 하나씩 순서대로 떨어지면서 좌우로 균형 있게 데굴데굴 굴러서 차곡차곡 쌓이는 모습이다. 이런 게임 메카닉은 어떤 알고리즘으로 구현되었을지가 프로그래머로서 무척 신기하게 느껴진다.

나와 비슷한 또래의 사람이라면 옛날 비디오 게임에 대한 추억을 하나 이상씩은 다 갖고 있는 모양이다. 그래서 웹툰 작가 가스파드는 작년 가을부터 <전자오락 수호대>라는 작품을 연재하기 시작했는데..
다들 알다시피 이건 뭐 예고편부터가 일개 웹툰 퀄리티가 아니었다. 도대체 무슨 약 빨고 이런 걸 창조해 냈는지? 천재라고밖에 생각할 수 없다.

그리고 여담이지만, 퍼즐보다는 더 현실성을 추구한 아케이드 게임에서도 아래로 떨어지는 중력을 왜곡하는 효과는 종종 등장한 경우가 있다.
페르시아의 왕자는 7단계 끝부분에서 초록색 물약을 먹어서 잠깐 낙하산 효과가 나며, 퀘이크 1의 비밀 레벨은 주인공을 포함한 모든 동체들이 중력이 1/n토막 나서 꽤 높은 점프가 가능하다.
물론 지구상에서 그걸 실제로 구현하는 건 제트팩 같은 것이라도 달지 않는 이상 불가능할 것이다. 아니면 달 같은 다른 작은 행성으로 가든가.

Posted by 사무엘

2015/01/17 08:25 2015/01/17 08:25
,
Response
No Trackback , 8 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1051

서울 서부에 있었던 옛 철도들

서울 중에서 1970년대 이후부터 육성되기 시작한 강남 일대는 바둑판 모양의 반듯한 도시 디자인에 도로 폭이 무진장 넓고 지하철 역시 엄청나게 많이 다닌다(2, 3, 7, 9, 분당, 신분당!). 하지만 일반열차가 다니는 철도는 완전히 불모지이다. 그나마 고속철 수서 역이 개통하고 나면 완전 동남쪽 끝자락 정도나 장거리 간선 철도의 혜택을 입을 것으로 보인다.

그 반면 강북, 특히 서부 지역은 구한말과 일제 강점기를 포함한 먼 옛날부터 계속 인서울이었다. 자동차 교통이 발달하기 전부터 형성된 도시이기 때문에 여기는 도로 폭이 강남만치 여유가 있지는 않으며, 꼬불꼬불한 선형에 오거리 같은 교차로도 있고 철도도 진작부터 이것저것 많이 건설되었다. 1899년에 경인선보다 몇 달 먼저 개통했던 노면 전차 말고도 이런 예가 몇 가지 더 있었다.

물론 그 철도들은 오늘날은 남아 있지 못하고 다 폐선되고 없어졌다. 주된 이유는 자동차 통행에 방해가 되기 때문이다.
서울 노면 전차는 1899년에 경인선보다도 몇 달 더 일찍 개통해서 구한말과 일제 강점기를 다 겪은 유서 깊은 궤도 교통수단이지만, 서울 지하철에게 자리를 내어 주고 폐선되었다. 그리고 21세기가 돼서야 제일 최근에 없어진 건 용산선 지상 구간이 되겠다. 뭐, 엄밀히는 없어진 건 아니고 그 선형 그대로 지하로 들어가서 경의선과 공항 철도의 복층 공용 구간이 된 것이지만.

그것 말고 서울에, 특히 마포 일대에 있었던 철도는 다음과 같다. (출처: 다음 철도 동호회)

사용자 삽입 이미지

1. 당인리선

그나마 이 바닥에서 제법 인지도가 있는 철도이다. 경의선의 지선인 용산선에서 또 분기하는 지선으로, 지금의 홍대입구 역 인근과 남쪽의 서울 화력 발전소(구 당인리 발전소)를 연결하였다. 발전소의 완공보다 살짝 이른 1929년에 개통하여 발전소가 사용하는 석탄 연료를 수송해 왔으며, 엄청난 옛날 리즈 시절에는 부분적으로 여객 수송도 했는가 보다. 그러니 '방송소앞' 같은 역까지 있었을 터. 발전소를 연결하는 철도라는 점에서는 오늘날 장항선의 지선인 서천화력선을 떠올리게 한다.

그러나 이 철도는 발전소가 석탄 연료를 사용하지 않게 되면서 존재의 의미가 없어졌으며, 가성비가 안 맞게 되자 1982년 6월 10일에 폐선됐다. 지금 '서울 마포구 어울마당로'가 옛 당인리선의 선형을 나타낸다. 홍대앞 걷고 싶은 거리, 예술의 거리 일대 말이다. 건물들이 어설프게 곡선 선형으로 좁게 다닥다닥 붙었고 길쭉한 주차 공간도 있는 거기 말이다.
'동'이 2차원 평면 공간을 나타낸다면 도로명 주소 체계에서 도로명은 1차원 선형을 한꺼번에 나타낼 수 있어서 좋다.

오늘날은 당인리선뿐만이 아니라 당인리 발전소 자체조차도 지하화하네 이전하네 하면서 존폐가 불투명해져 있는 듯하다.
허나 옛날엔 한강과 인접한 당산, 이촌 일대만 해도 오늘날로 치면 마곡, 세곡, 내곡에 준하는 완전 서울 외곽이었다. 조선 시대엔 근처에 아예 사형장이 있을 정도였는데(새남터, 절두산 순교 성지!) 하물며 비슷한 위치에 발전소가 있는 건 이상한 일이 아니었을 것이다.

본인은 '당인리선'이라는 단어를 영화 <튜브>에서 처음으로 접했다. 물론 고증과 개연성 따위는 완전히 안드로메다로 보낸 설정 속에서 등장한다는 걸 감안해야 한다. 당인리선은 그 당시로서도 무려 20년 가까이 전에 이미 폐선되고 없구만, 지하철이 그 선로를 타고 질주해서 발전소와 충돌하여 대형 참사를 낸다는 게 말이나 되는 소리인가.

2. 경성순환선

경성/경룡/외곽 등 다양한 명칭으로 불리는 이 노선은 철도 노선이라기보다는 열차 운행 계통의 이름이다. 당인리선과 비슷한 1929년에 개통하여 잘 영업하다가 1944년에 폐선되었는데, 폐선 이유는 수요 감소나 자동차 통행 같은 건 아니다. 연도를 보면 알 수 있듯, 전쟁 물자 공출로 인한 폐선이다.

이 열차는 경의선 서울, 신촌을 경유했다가 신촌-연희에서 경의선과 용산선을 연결하는 짤막한 신선 구간으로 들어간 뒤, 용산선 서강, 공덕리를 경유하여 용산으로 간다. 순환이라고는 하지만 용산에는 삼각선이 없는 관계로 서울로 고리를 완전히 완성하지는 못했다. 경성의 야마노테선 같은 상징성을 부여하기에는 노선 길이가 매우 심하게 아담하긴 하다. (서울-용산 9km 남짓.)

사용자 삽입 이미지

경성순환선의 신선이라 할 수 있는 경의선-용산선 연결 구간은 오늘날 서울 서대문구의 신촌로10길과 신촌로11길에 대응한다! 창서 초등학교 서쪽의 그 길 말이다. 물론 당인리선보다는 훨씬 더 일찌 폐역했기 때문에 흔적을 찾기가 힘들지만, 그래도 시가지가 대놓고 구부정하게 철길 부지를 따라 형성되었다는 티가 난다.

요약하자면 당인리선은 용산선의 남쪽으로 뻗고, 경성순환선의 연결선은 경의선 방면이니까 용산선의 북쪽으로 뻗는다.
용산선은 원래 경의선의 본선 구간이었는데 1920년대 초에 서울-신촌 신선이 생기면서 여기가 경의선 본선으로 바뀌고 용산선은 잉여로 전락했다. 그러니 이미 만들어 놓은 용산선을 활용하자는 차원에서 당인리선과 경성순환선이 생겼을 거라는 추측을 할 수 있다. 나중에는 경선순환선은 일제 말기에 진작에 없어졌고, 당인리선도 없어졌다 보니 용산선도 통째로 지하로 들어가 없어졌고 말이다.

재미있지 않으신지? 이런 게 바로 강남에서는 찾을 수 없는 서울 철도 발달사이다.
폐선 덕후라면 이런 용산선과 지선들뿐만 아니라 경의선 자체에 남아 있는 옛 서소문, 아현리 역의 흔적에도 집착할 것이다.
오늘날 남북이 통일되고 서울에서 중국· 러시아로 가는 철도의 필요성이 부각된다면.. 기존 경의선의 시내 구간을 2복선 이상으로 확장하는 건 진작에 물 건너 가 버렸으니.. 아예 서울을 우회하여 멀찌감치 외곽에서 경부선과 경의선을 연결하는 철도가 생겨야 하지 않나 싶다. 가령, 소사-원시선을 남북으로 길게 늘어뜨려서 말이다.

그리고 여담이지만 오래 된 도시는 도로의 폭이나 교차로 같은 것뿐만이 아니라 길거리 위로 전봇대와 전선이 치렁치렁 달려 있는지, 아니면 전부 지중화되어 있는지를 봐도 구도심인지 신도시인지를 어렴풋이 알 수 있다. 이것은 분당, 일산이 미관이 아주 깔끔해 보이는 이유 중 하나이기도 하다.

Posted by 사무엘

2015/01/14 08:30 2015/01/14 08:30
, , , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1050

프로그램 관련 올해 첫 소식

0. 예전에도 했던 넋두리 반복

<날개셋> 한글 입력기 7.7이 공개된 지 이제 40일 가까이 시간이 지났다.
지금까지의 버전업들이 다 그러했던 것처럼 7.7도 그야말로 머리부터 발끝까지 갖가지 분야에서 쇄신과 개선을 이뤘고 프로그램의 완성도를 잘 끌어올렸다.
도대체 언제까지 이렇게 코딩을 할 거리가 존재할지를 생각하면 좀 불안하기도 하다.
자연스럽게 이제 더 만들 게 없다 싶으면 프로그램의 개발은 저절로 중단되고 그냥 보안 패치나 하는 유지 보수 모드가 될 것이고 나는 다른 아이템을 찾아 나서면 될 것이다. 그런데 아직까지는 그렇지 않다.

<날개셋> 한글 입력기의 제어판은 컴퓨터에서 한글을 생성하는 것과 관련된 모든 기술과 아이디어들이 총집약해 있는 복잡한 기계 조종석과 같다.
<날개셋> 한글 입력기는 정말 똘끼 하나로 똘똘 뭉친 프로그램이며 그야말로 극한의 '자유'의 산물이다.
그 어떤 부귀영화나 안정된 고소득 직장 내지 신분, 지위도 <날개셋> 한글 입력기 개발과 어울리지 않거나 이 프로그램을 내 마음대로 자유롭게 개발할 여건을 빼앗는다면 나는 전혀 거들떠보지 않았다.

내가 스스로 선택한 외길이기 때문에 나는 남들보다 딱히 사회에 대한 불만 같은 건 없다. 그 대신, 이 자유를 위협하는 적들에 대해 나는 남들보다 더 민감하게 반응하며 이것이 나의 정치 성향에도 반영되어 있다는 것은 예전에도 한번 언급한 바 있다. 뭐, 나의 사상과 가치관은 그러하다.

나는 이렇게 내 길을 가면서 아주 만족하고 행복해하고 있지만.. 우리 부모님 세대는 그렇지 않았다.
원래 꿈은 이것이었고 저것이었는데.. 돈이 안 되기 때문에, 가족들 먹여 살려야 하기 때문에, 나보다 더 공부 잘하는 동생의 대학 학비를 마련해야 하기 때문에..
그걸 다 포기하고 그저 생업 전선으로 내몰리고, 억만 리 타지까지 가서 자기 학벌에 어울리지 않는 궂은 일 힘든 일을 해야 했다.

내가 그런 시절을 살아야 했다면 정말 못 살았을 것 같다.
그러니 그런 옛날과 비교하면 나는 정말 감사할 게 많으며, 사회 구조에 대해 불평 불만 따위를 할 자격이 없는 것이다.
그런데 언제까지나 이러고 있을 수도 없으니 늘 조급한 마음에 프로그램 개발을 계속하고 있다.

1. 사소한 버그 수정과 개선

지난 7.4 버전에서는 한자 변환을 할 때, 별도의 옵션이 지정되어 있을 때만 제1 한자 후보에서 BMP 영역의 모든 한자가 나타나고, 기본적으로는 4888자 상용 한자만 표시되게 프로그램의 동작이 바뀌었다.
그런데 '일', '반', '우' 등 몇몇 한글 독음을 한자로 바꿔 보면 맨 아래에 일부 호환용 한자 영역의 비상용 한자가 추가로 잘못 표시되던 버그가 있었다. readme에 정식으로 기록조차 되지 않을 정도로 사소한 사항이다만, 어쨌든 다음 버전에서는 수정될 예정이다..

편집기에는 아시다시피 콘솔 프로그램의 실행 결과(표준 출력) 내지 인터넷 URL 내용을 본문에 삽입하는 기능이 있다.
그 기능을 수행하는 중에 사용자가 ESC를 눌러 취소를 하면 작업이 송두리째 중단되고 아무 일도 일어나지 않는데, 이제는 지금까지 받은 텍스트라도 본문에 삽입할지를 사용자에게 묻게 했다.
이런 간단한 옵션을 왜 지금까지 생각을 못 하고 있었는지 모르겠다. 이 기능 자체는 무려 10년도 더 전 3.0부터 있었는데도 말이다.

그리고 타자연습에는 '짧은글 UI'로 방식으로 연습을 하는 문장 연습 방식에, 지금 문제를 건너뛰고 곧바로 다음 줄로 넘어가는 편의 기능이 추가될 예정이다. 즉, 낱말 연습, 짧은글 연습, 그리고 짧은글 스타일로 하는 긴글 연습 이 세 모드가 적용 대상이다. <날개셋> 타자연습을 꾸준히 잘 사용하고 계시는 어느 사용자의 여러 건의 사항 중 하나가 반영된 것이다.

파워업은 꼬마 윈도우나 글쇠배열 윈도우를 우클릭했을 때 나오는 메뉴에 투명도를 조절하는 명령을 추가했다.
이것들은 핵심 기능의 버그 수정 같은 긴급한 성격은 아니기 때문에 한글 입력기가 버전업될 때 같이 업데이트될 예정이다.

2. 초· 종 공유 낱자 결합 규칙의 연쇄 적용

7.7의 다음 버전은 올해 봄쯤에 나올 7.9로 계획하고 있으며, 계속해서 한글 입력 엔진의 기능을 확장해 나갈 것이다. 지금 당장 얘기를 할 수 없는 여러 기상천외한 기능들을 계획하고 있다. 궁극적인 목표는 세벌식 글자판에 최적화된 지능형 동시치기를 만들어 내는 것이지만, 그것과 직접적인 관련이 없는 개발 아이템도 있다.

2015년에 처음으로 한 과업은.. 사용자의 타이핑 경험과 직접적인 관계는 없지만, 뭔가 원론적인 차원에서 필요를 느껴서 진행한 것이다.
초· 종 공유 낱자 결합은 종성은 A+B=C 형태이고, 각 A와 B를 초성 낱자 결합 규칙대로 만들어 내는 걸 허용하는 변칙 기능이다. 그런데 이런 묶음도 A+B라는 두 묶음에 매인 게 아니라 필요하다면 A+B+C, A+B+C+D도 얼마든지 만들 수 있고, 그러면서도 도깨비불 현상은 언제나 맨 마지막에 입력된 묶음이 통째로 다음 글자로 넘어갈 수 있게 알고리즘을 확장 구현했다.

기능 자체는 구현하는 게 별로 어렵지 않다.
하지만, 이거 영향을 받는 건 제어판 UI에서 '실제로 입력 가능한 낱자'를 판별하여 색깔을 달리 표시하는 기능,
그리고 '타자 순서 및 연속 입력 가능 여부'를 판별하는 알고리즘이다.

안 그래도 작년 여름에 7.5 만들 때 머리가 터지도록 고생하면서 만들었고 앞으로 평생 고칠 일이 없기를 바라면서 봉인을 해 버린 코드인데 그걸 또 꺼내서 뜯어고치는 심정은 개인적으로 참담했다.
초성 기준으로 입력 순서를 찾는 것 자체가 재귀호출이고 그걸 사용자 스택으로 구현했는데,
그 묶음 자체도 이중이 아니라 임의의 깊이대로 재귀호출이 행해지는 형태로.. 이것도 사용자 스택으로 구현하자니 while/for문이 그야말로 눈이 돌아갈 정도로 깊어졌다. 이런 복잡한 코드를 묵묵히 수행하는 컴퓨터가 대단하다.

뭐, 결국은 해냈다.
깔끔하게 기능이 완성되긴 했지만, 정작 다 완성하고 나니 마음이 허무하고 "결국 이렇게 끝날 일을.. 이게 이렇게까지 힘들게 만들 정도로 가치 있는 기능이긴 했나? 다음엔 무슨 기능을 구현하지?" 싶은 생각이 들었다.;;

3. 인디자인 문제

최근에 Adobe InDesign을 사용하는 분에게서 버그 신고가 들어왔다. 사연이 좀 복잡했다.
인디자인이 최신 버전인 CC에서는 한글 입력이 제대로 안 된다고 한다. 더 구체적으로 말하면, 한글을 조합하는 중에 space를 누르면 "한글+공백"이 입력되는 게 아니라 뒤의 공백이 씹히고 한글 조합만 끝난다고 한다.

이게 원래는 MS 한글 IME를 사용할 때 나타나는 현상이어서 몹시 불편했는데, 내 프로그램의 구버전은 그런 문제가 없었다고 한다. 그런데.. 7.5인가 7.7부터는 내 프로그램까지 뒤의 공백이 씹히기 시작해서 그것이 불만이라는 것.

이것은 일차적으로는 인디자인이 고쳐져야 하는 문제이다. 내 프로그램은 한글 조합 중에 비한글 문자 글쇠가 입력됐을 때 이것을 IME가 가로채지 않고 응용 프로그램으로 넘겨 주도록, 좀 더 MS IME와 비슷하게 동작하게 7.x 중반 때 한번 잠수함 패치를 한 적이 있었다.
그런데 그것이 오히려 문제를 일으킨다면, 예전 버전처럼 조합 중일 때 비한글 문자 글쇠를 IME가 가로채게 동작을 바꾸면 된다. 그 방법은 다음과 같다.

  1. <날개셋> 제어판을 열고 "편집기 계층-단축글쇠"로 간다. 그리고 "추가"를 누른다.
  2. "가상 키코드"에서 0x20을 입력하거나 Space를 고른다. "직접 눌러보기"에서 눌러도 된다.
  3. "할당할 기능"의 "용도"는 "2 글쇠 전달"을 고르고, 계산식엔 0x20을 입력한다.
  4. "조합 중일 때만 동작" 옵션을 켠 뒤, 대화상자들을 "확인"을 눌러 종료한다.

이렇게 해 주면 해당 프로그램에서도 한글+공백을 씹히는 현상 없이 바로 입력할 수 있게 된다. 비슷한 문제를 경험 중인 분들은 참조하시기 바란다. 이 사항은 프로그램의 도움말에다가도 "알려진 문제"에다가 수록했다.

이상. 또 프로그램 개발과 관련한 좋은 소식이 있으면 소식을 업데이트 하도록 하겠다.

Posted by 사무엘

2015/01/11 08:42 2015/01/11 08:42
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1049

« Previous : 1 : ... 134 : 135 : 136 : 137 : 138 : 139 : 140 : 141 : 142 : ... 230 : Next »

블로그 이미지

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

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2026/07   »
      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:
3942132
Today:
1115
Yesterday:
1685