« Previous : 1 : ... 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 : 59 : ... 221 : Next »

성경으로 성경 풀이하기

1. 사랑은 허다한 죄를 덮음

"무엇보다도 너희끼리 뜨거운 사랑을 품으라. 사랑은 허다한 죄를 덮으리라." (벧전 4:8)
라는 말씀과 관계가 있는 구절들은 내가 아는 한 다음과 같다.

(1) 사랑의 위력/효과에 대한 말씀의 원조는 잠언이다.
"미움은 다툼들을 일으키되 사랑은 모든 죄를 덮느니라." (잠 10:12)

(2) 저기서 말하는 사랑은 교회 지체간의 brotherly love이다. 이에 대해서는 바울 서신에서 언급돼 있다.
"형제의 사랑으로 서로 친절하게 애정을 가지고 서로 먼저 존중하며.." (롬 12:10)
"형제의 사랑을 지속하고" (히 13:1)

(3) 지체들간에 그렇게 사랑한다면, 특별히 누군가가 오류에 빠져 잘못 행동하는 것을 사랑으로 잘 권면하게 된다.
"형제들아, 너희 중에 어떤 사람이 진리를 떠나 잘못하는데 누가 그를 돌아서게 하면.. 그 죄인을 그의 길의 잘못에서 돌아서게 하는 자가 한 혼을 사망에서 구원하며 허다한 죄를 덮을 것임을 그가 알게 할지니라." (약 5:19-20)

이런 게 "성경을 성경으로 풀이하면서" 진리를 얻어 가는 과정이다~!
물론 머리로 이렇게 아는 것하고, 진짜로 성령의 열매로서 사심· 가식이나 조건 없이 사랑이 실천되어 나오는 것은 또 별개의 일인 것을 알 필요가 있다.

2. 야고보서와 로마서

성경에서 야고보서는 “믿음뿐만 아니라 행위로 의롭게 된다”를 가르치면서 언어 통사와 논리 구조상 로마서와 정면으로 모순되는 책이라고 여겨진다. 두 책의 텍스트를 입력시켜서 컴퓨터로 구문 분석을 했더니 통사론적으로 모순 판정이 나왔다는 카더라 통신이 전해지지만.. 누가 언제 어디서 어떤 방식으로 실험을 했는지, 믿을 만한 결과인지 출처가 불분명하다.

두 책은 똑같이 아브라함을 거론하고 똑같이 창 15:6까지 인용함에도 불구하고 결론은 정반대로 전개된다. 이걸 보면 굳이 기계가 아닌 사람이 보더라도 두 책이 정면으로 충돌하는 것처럼 보이긴 한다.

만일 아브라함이 행위로 의롭게 되었으면 그 일에 대하여 자랑할 것이 그에게 있으려니와 하나님 앞에서는 없느니라.
성경 기록이 무어라 말하느냐? 아브라함이 하나님을 믿으매 그것을 그에게 의로 여기셨느니라, 하느니라. (롬 4:2-3)

우리 조상 아브라함이 자기 아들 이삭을 제단 위에 드릴 때에 행위로 의롭게 되지 아니하였느냐? 네가 보거니와 믿음이 그의 행위와 함께 일하고 행위로 믿음이 완전하게 되지 아니하였느냐?
이에, 아브라함이 하나님을 믿으니 그것을 그에게 의로 인정하셨느니라, 하시는 성경 기록이 성취되었고 그는 하나님의 친구라 불렸느니라. 그런즉 너희가 보거니와 사람이 행위로 의롭게 되고 단지 믿음만으로 되지 아니하느니라. (약 2:21-24)


오죽했으면 믿음 덕후 종교 개혁자였던 마틴 루터는 야고보서가 성경 정경이 아닐 거라고 현실을 부정했으며, 차마 쓰레기라고는 말 못 하고 지푸라기 같은 책이라며 극딜을 가했다. 참고로 야고보서는 신약 성경 중에서는 시기적으로 제일 일찍 먼저 기록되었을 것이라고 여겨진다.

야고보서에서 말하는 행위의 필요성은 “보이지 않는 것을 믿는다는 증거는 보이는 형태로 드러난다. 이로써 그 믿음이라는 게 실체가 있다는 것이 인증된다” 차원에서 하는 말이다. 예전에도 비유를 들었듯이, 자동차가 시동이 걸렸으면 공회전만 하지 말고 변속기를 D로 넣고 앞으로 나아가야(행위의 열매) 존재의 의미가 있다.

N에서 공회전만 하면 그 자동차는 아무 쓸모가 없다.
다만, 그렇다고 해서 그 차의 존재(구원과 믿음)와 작동 자체가 거짓인 건 아니다. 그런 차원인 것이다.

히 5:9에 따르면, 예수님은 전지전능한 하나님의 아들이지만 직접 몸소 고난을 받고 섬김과 순종을 실천함으로써 완전하게 됐다고 한다. 이건 예수님이 성육신 이전에는 신으로서의 능력이나 레벨이 2% 정도 부족했다는 얘기가 아니다. 마치 노아(창 6:9)나 욥(욥 1:1)이 perfect였다고 해서 한 치의 죄가 없는 완전무결한 사람이라는 말은 아니듯이 예수님에 대한 made perfect도 그런 자질을 말하는 게 아니다.

그건 예수님이 행위를 통해서 뭔가 공개적으로 인증, 입증을 받았다는 뜻이다. 예수님조차 본을 보이셨는데 구원받은 성도들 역시 가식 위선적인 선행이 아니라 믿음의 선행을 실천해 보여야 그 믿음의 실체를 대외적으로 인증받고 남에게 영향력을 행세할 수 있다. 이것이 야고보서가 말하는 바이다.

이 외에도 야고보서에서 “욕심이 잉태하면 죄를 낳고 죄가 완료되면 사망”(약 1:15)은 “죄의 삯은 사망”(롬 6:23)과 대조된다. “믿음의 단련이 인내를 이룸”(약 1:3)은 “환난은 인내를, 인내는 체험을, 체험은 소망을”(롬 5:3-4)과도 대응하는 구석이 있다.

3. 노아의 날과 롯의 날

본인은 우주(지구 포함)와 생명의 기원에 관한 한 신의 창조를 믿으며, 연대기에 관해서는 오래된 우주와 젊은 인류를 지지한다고 이 블로그 글을 통해 몇 차례 밝힌 바 있다. 그리고 창세기 1장 1절과 2절 사이의 간극(gap)을 믿는다. 이것이 과학뿐만 아니라 성경적으로도 이치에 맞기 때문이다.

간극 지지자라면 벧후 3:6의 “물의 넘침으로 인한 멸망”이 노아의 홍수가 아닌 더 큰 우주적인 이전 세상의 심판과 멸망이라고 본다. 그러나 반대론자는 이것도 무조건 100% 노아의 홍수라고 여긴다. 도대체 어느 쪽의 말이 맞는 걸까?

본인은 예전에 여러 논리와 비유를 들면서 간극이 성경 교리 차원에서 가능하고 옳으며, 이게 지질학· 천문학 관찰과도 조화를 가장 잘 이룬다고 주장했다. 그런데 벧후 3:6이 노아의 홍수 얘기가 아닌 이유를 다음과 같이 설명한 적은 없었던 것 같다. 그래서 '성경을 성경으로 풀이하기' 컬렉션에다가 항목을 개설하여 이야기를 늘어놓도록 하겠다.

성경적으로 볼 때 노아의 홍수는 소돔· 고모라의 멸망과 호응하고 짝을 이룬다. 전자는 물바다, 후자는 불바다여서 그런 것 같다. 소돔과 고모라도 성경에서 노아의 홍수와 거의 대등한 급으로 굉장히 자주.. 악과 심판과 폐허의 상징으로 두고두고 언급된다. 즉, 인지도가 매우 높다.

그리고 노아의 홍수는 인간을 포함해 코로 호흡하는 육상 동물만 다 죽었지, 다른 어류· 식물· 곤충 따위는 굳이 방주에 타지 않아도 멸종하지 않았다.
소돔과 고모라는 뭐.. 그 지역에 있는 생명체들은 몰살을 면하기 어려웠겠지만, 면적이 노아의 홍수보다는 훨씬 좁았다. 두 심판은 강렬하긴 하지만 규모 면에서 전면적이지 않고 부분적(partial)이라는 공통점도 있다.

이 사실을 염두에 두고 성경 본문을 살펴보자.
베드로후서는 바로 앞 2장의 5~6절에서 하나님이 내리신 심판의 사례로 저 두 사건을 쌍으로 언급하고 있다.
더구나 예수님도 눅 17:26-30에서 노아의 날과 롯의 날을 같이 거론하면서 둘을 쌍으로 엮으셨다. 이 정도면 둘이 매우 비슷한 심상이라는 건 성경적으로 전혀 의심할 필요가 없을 것이다.

그 반면, 벧후 2의 바로 다음 3장은 어떤 문맥인가?
이 홍수와 나란히 대응하는 불 버전은 하늘과 땅을 통째로 불태워 없애 버리는 것이며(7절), 겨우 소돔과 고모라의 유황불 정도하고는 쨉이 안 된다. 계속해서 10~12절을 읽어 보면, 거의 원자력 핵융합/핵분열 급의 전우주적 물질 붕괴가 묘사되어 있다. 단순히 산소에 의한 연소가 아니다.

이런 묘사는 벧후 이외의 다른 책에서는 거의 찾을 수 없다.
저 불 심판이 소돔과 고모라와 차원이 다른 것과 동급으로, 과거의 물 심판 역시 노아의 홍수와 같은 차원이 아니라는 것이 본인의 논리이다. 2장 5절도 노아의 홍수이고 3장 6절도 노아의 홍수라고? 완전히 차원이 다른 문맥에서 또..??
아래의 비례식을 생각하면서 본문을 진지하게 다시 읽어 볼 것을 권하고 싶다.

노아의 홍수 : 소돔과 고모라 유황불 =
???? :
하늘과 땅이 몽땅 불로 멸망, 물질 붕괴

4. 수식 대상과 범위

위의 3번 아이템과 이어지는 내용인데..
성경에는 긴 문장에서 수식의 대상과 범위를 잘 분간하며 읽어야 하는 부분이 좀 있다.

(1) 그것으로 말미암아 그때 있던 세상은 물의 넘침으로 멸망하였으되 지금 있는 하늘들과 땅은 (중략) 심판과 멸망의 날에 불사르기 위해 예비해 두셨느니라. (벧후 3:6-7)

벧후 3장을 처음부터 쭉 읽어보면 종말과 재림을 믿지 않는 비웃는 자들이 나타날 거라는 예측이 나온다.
“그것으로 말미암아”와 연결되어 비웃는 자와 인과관계를 형성하는 다음 사건은 “현 세상은 불로써 멸망할 것”이다. 걔네들 때문에 이전 세상이 물로써 멸망한 게 아니다. 수식어와 피수식어의 거리 차이 때문에 저렇게 읽히기 쉬우니 주의해야 한다. 과거의 물 심판은 미래의 심판하고 그냥 대조 대구를 이루기 위해 언급되었을 뿐이다.

(2) 세상의 창건 이후로 죽임을 당한 [어린양]의 생명책에 이름이 기록되지 않은 자들이 그에게 경배하리라. (계 13:8)

‘세상의 창건 이후로’는 생명책의 이름 등재 시기를 수식한다. 어린양의 도살..;; 시점을 수식하는 게 아니다.
문장의 통사 구조는 중의성을 지니는데 니가 그걸 어떻게 아냐고? 뒤에 계 17:8에서 대놓고 “세상의 창건 이후로 이름이 생명책에 기록되지 않은 자”가 분명하게 다시 등장한다. 안심하시라.

어린양이야 지금으로부터 2000여 년 전에 딱 한 번 죽임을 당했다가 부활했다. 어린양의 도살 시점은 계 5:6에서 “전에 죽임을 당했었던” as it HAD BEEN slain이라고 대과거 완료 시제를 통해 표현돼 있다.
참고로 마 1:6에서 “우리야의 아내였던 여인”, 전처 ex-wife라는 개념도 that HAD BEEN the wife of Urias 과거 완료 시제로 표현됐다는 걸 생각하자. (지금은 우리야가 아닌 다윗의 아내이다 / 지금은 죽지 않았고 살아 있다~ 계 1:18)

5. 달란트 비유와 므나 비유

성경의 복음서에는 달란트 비유와 므나 비유가 있다. 전자는 예수님을 유대인의 왕 관점에서 묘사한 마태복음에 있고, 후자는 예수님을 온전한 인간 관점에서 묘사한 누가복음에 있다. 그렇기 때문에 누가복음은 마태복음에 비해 유대인 민족색이나 왕국복음 같은 얘기가 덜 나오며, 킹 제임스 성경은 비유에 등장하는 화폐 단위를 음역이 아니라 아예 영어 파운드로 로컬라이즈 번역해 버리기도 했다.

달란트 비유에서는 종 세 명이 각각 5, 2, 1달란트씩을 받는다. 그걸 밑천으로 각각 5와 2달란트.. 즉 정확하게 수익률 100%를 달성한 종은 칭찬을 받지만, 1달란트를 받은 종은 그걸로 아무것도 안 하고 돈을 묵힌 죄로 바깥 어둠 속으로 추방당한다. 이 장소는 성경적인 심상으로 볼 때 지옥으로 여겨진다. 즉, 게으르고 악한 종은 아예 구원받지 못하는 사람을 상징한다.

그러나 므나 비유에서는 종 10명이 각각 1므나를 “동일”하게 받는다. 그리고 1므나를 밑천으로 투자해서 10므나, 즉 수익률 1000%를 낸 사람도 있고 5므나(500%)를 번 사람도 있어서 수익률이 차이가 난다. 달란트와 달리 원금 별도는 아니고 원금 포함인 것 같긴 하다만.. (달란트는 5+5, 므나는 1-1+10)

여기서도 1므나로 아무것도 안 한 종은 주인에게서 꾸중을 듣는다. 하지만 받았던 원금을 빼앗기는 것으로 끝이고, 추방까지 당하지는 않는다. 심판이 집행되어 처형 당하는 대상은 따로 있다.
므나 비유는 아무리 봐도 구원을 잃지 않고 보상만을 잃는 구원받은 크리스천을 빗댄 얘기임을 알 수 있다. 다시 말해 저건 그리스도의 심판석 등급이다.

이 정도 차이는 세대적 진리 공부를 좀 한 사람이라면 누구나 분간할 것이다.
그런데 본인이 이 성경 본문에서 요즘 추가로 주목하고 있는 아이템은 바로.. 예수님의 칭찬도 두 비유에서 서로 미묘한 차이가 있다는 점이다.

마 25:21은 “네가 적은 것(few - many 少)에도 신실했다”라고 말한다. 하지만 눅 19:17은 “네가 아주 작은 것(very little - big 小)에도 신실했다”라고 말한다. 전자는 일의 양, 금전의 액수, 물건의 개수를 따지고, 후자는 일 또는 물건의 규모를 따진 것이라고 볼 수 있다.

뭐 언뜻 보기에는 구분 없이 섞어 써도 별 차이 없으며, 그게 그 말 같게도 들린다. 하지만 왕국 복음에서는 “적은 일에 신실함”이 나오고 은혜의 복음에는 “작은 것에 신실함”이 언급되는 것에도 뭔가 미묘한 영적 통찰이 담겨 있을 것 같다. 최소한 하늘의 왕국과 하나님의 왕국의 차이 같은 차이는 있지 않을까? 이 역시 성경을 성경으로 풀어서 답을 구할 수 있을 것이다.

Posted by 사무엘

2020/11/03 08:34 2020/11/03 08:34
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1815

항공 사건 사고와 관련하여 꼭 볼 만한 명작 영화로는
Flight 93 (2006), 그리고 Sully (2016)가 있다. 실제 사건으로나 영화의 작품성으로나 모두 탁월하다.

1.
전자는 2001년 9 11 테러 당시에 테러리스트에게 피랍된 유나이티드 항공 93편(미국 국내선, 보잉 757-222) 여객기 내부에서 벌어졌던 일을 다룬다. 9 11 테러 이전까지만 해도 미국의 항공 보안 규정은 지금보다 훨씬 더 널널했다.

사건은 빨간 머리띠를 두른 테러리스트들이 갑자기 승무원들을 제압하고 조종실로 난입하는 것으로 시작된다. 나중에는 승객들이 힘을 합쳐 기내식 카트로 박치기를 해서 조종실 문을 부수기는 하지만.. 이미 조종간을 잡고 있던 테러리스트가 이판사판 동귀어진 차원에서 비행기를 평지로 추락시켜 버렸다.
추락 충격이 얼마나 컸으면 영화에서 묘사되는 것처럼 커다란 버섯구름이 피어오르면서 기체는 형체도 없이 박살났다. 그리고 전원 사망..

사용자 삽입 이미지

하지만 승객들의 영웅적이고 숭고한 저항 덕분에 이 사건은 저 비행기만 혼자 추락하는 걸로 끝날 수 있었다. 테러리스트들을 그대로 놔 뒀으면 쟤는 워싱턴 DC에 있는 백악관이나 국회의사당에다 꼬라박았을 가능성이 매우 높았다. 그때 미처 무장을 못 하고 긴급 출격했던 미군 F-16 전투기 2기는 얘와 몸으로 충돌할 각오까지 했었다고 한다.
이 기체가 추락한 지점에는 현재 Tower of Voices라는 이름의 위령비가 세워져 있다.

사용자 삽입 이미지

2.
한편, 후자는 2009년 1월, 허드슨 강의 기적이라 불리는 US 에어웨이즈 1549편(미국 국내선, 에어버스 A320-214)의 불시착 사고를 다룬다. ‘설리’는 당시 여객기 기장의 이름이다.

사용자 삽입 이미지

이 기체는 이륙한 지 얼마 못 가 새떼들과 제대로 충돌한 덕분에 좌우 엔진이 몽땅 망가지고 시동이 꺼져 버렸다. 새가 기체와 단순히 부딪힌 정도를 넘어 엔진으로 빨려들어갔기 때문이다. 공기만 들어와야 하는 엔진 내부에 크고 무거운 생명체 이물질이 들어갔으니 뭐..
기체는 순식간에 글라이더로 전락하고 서서히 추락하기 시작했다.

이 상황에서 기장이 얼마나 적절한 상황 판단으로 강에 잘 불시작해서 승객들을 전원 구출했는지는.. 직접 보면 알 수 있다. 공포의 GPWS 경보음을 “웽웽~ pull up!” 단계까지 듣고도 멀쩡히 살아남은 여객기 기장은 세계적으로도 드물지 싶다.

영화에서는 NTSB 조사관들이 저런 영웅 기장을 과실 있는 가해자인 것처럼 막 의심하고, 그때 비행기를 꼭 이렇게 처박았어야 했냐는 식으로.. 검사가 피의자 심문하듯이 거칠게 몰아세우는 것으로 묘사된다. 하지만 실제 사고 조사 때는 그렇지 않았다. 도저히 불가피한 상황이었다는 것이 명백했기 때문에 딱히 빡세게 조사할 것도 없었다. 오히려 기장 당사자가 영화에서 상대측 조사관들이 너무 악의적으로 묘사됐다고 이의를 제기했을 정도였다.

3.
이런 식으로 우리나라도 1971년 1월, 대한항공 포커 27기 납북 미수 사건 정도면 충분히 영화로 만들 만한 스토리였다고 개인적으로 생각한다.
납북 미수라고는 하지만 이건 진짜 북괴 간첩은 아니고 그냥 중2병 또라이의 단독 범행이었다. (대공 용의점 없음) 그렇지만 피의자가 진짜 폭발물을 소지하고 있었고 여객기를 진짜로 이북으로 보낼 뻔했다.

사용자 삽입 이미지

그 와중에 승무원들은 매우 적절하게 잘 대처했다. 기내에 탑승 중이었던 보안관이 놀라운 실력으로 테러리스트를 사살했으며, 결정적으로 놈이 기폭시킨 폭탄은 전 명세 부기장이 자기 몸으로 덮어서 폭발을 상쇄했다. 그리고 그분은 순직.. 기체는 다행히 바닷가에 잘 불시착했다.

사용자 삽입 이미지

이건 강 재구 소령의 비행기 버전이나 마찬가지였다. 그 시절에 강 소령 전기 영화(1966)도 나오고, 공군의 활약을 다룬 빨간 마후라(1964)도 나왔는데.. 저 일화가 잊혀져 가고 있는 건 아쉬운 일이다.
또한, 보안관이야 1969년 말 YS-11기 납북 사건의 교훈 때문에 도입된 것이지만 그 당시에 소지품 보안 검색은 저런 사제 폭탄의 반입을 허용했을 정도로 여전히 허술했던가 보다.

Posted by 사무엘

2020/10/31 19:34 2020/10/31 19:34
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1814

철도 사진 분석 퀴즈 - 3

1.
요즘 유튜브에는 혼자 차박 캠핑을 즐기는 여행 유튜버들의 동영상이 유난히 많이 눈에 띈다. 특히 엄지, 밍동, 리랑 등 여자사람도 많다는 게 흥미로웠다. 그렇게 유튜브의 AI가 추천해 주는 동영상을 몇 편 봤는데.. 한번은 이 풍경이 내 눈에 들어왔다. (☞ 동영상 전체 보기)

사용자 삽입 이미지

여기서 문제: 저 캠핑 장소는 어디일까?

정답과 해설

2.
이번 아이템은 배경 설명이 없고 간단하다.

사용자 삽입 이미지

문제: 위의 사진은 어느 역의 내부 모습일까?

정답과 해설

3.
다음으로, 아래 화면은 올여름에 SBS에서 방영했던 드라마 <편의점 샛별이>에서.. 주인공의 패싸움 장면 전에 잠시 흘러나온 주변 배경 모습이다.

사용자 삽입 이미지
문제: 저기는 어딜까?

정답과 해설

Posted by 사무엘

2020/10/29 08:35 2020/10/29 08:35
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1813

인쇄 기능 -- 下

지난번 상편에서는 Windows에서 인쇄 기능을 코딩으로 구현하는 절차와 인쇄 관련 기본 개념과 동작들을 살펴보았다. 이번 하편에서는 상편에서 분량상 모두 다루지 못한 인쇄 관련 추가 정보들을 한데 늘어놓도록 하겠다.

1. 인쇄 관련 공용 대화상자들

우리가 Windows에서 가장 자주 접하는 공용 대화상자는 아마 파일 열기/저장 대화상자일 것이다. 이것 말고도 글꼴 선택 내지 색깔 선택 대화상자가 있으며, 인쇄 대화상자도 그 중 하나이다.

사용자 삽입 이미지

인쇄를 지원하는 대부분의 프로그램에서 Ctrl+P를 눌러서 쉽게 보는 인쇄 대화상자라는 건 위와 같이 생겼다. 기본적으로 ‘일반’이라는 탭 하나밖에 없지만, 추후 확장과 사용자의 customize 가능성을 염두에 두고 프로퍼티 시트 형태를 하고 있다. 20년 전, Windows 2000 시절부터 저런 형태가 도입되었다.

사용자 삽입 이미지

하지만 Windows 9x 내지 더 옛날 16비트 시절에는 인쇄 대화상자가 전통적으로 위와 같은 모양이었다. 외형상 가장 큰 차이는 프로퍼티 시트가 아닌 일반 대화상자 형태이고, 프린터 목록이 리스트 컨트롤이 아니라 콤보 상자라는 점이다. 지금도 좀 옛날 프로그램에서는 요런 모양의 대화상자를 여전히 볼 수 있다.

인쇄 대화상자로 할 수 있는 일은 크게 (1) 인쇄를 내릴 프린터를 선택하고, (2) 각 프린터별로 용지의 종류와 방향, 여러 부 인쇄 방식 등을 지정하고, (3) 인쇄할 페이지 영역을 지정하고, (4) 최종적으로 인쇄 명령을 내리는 것이다.
하는 일이 생각보다 많기 때문에 옛날에는 인쇄 대화상자를 약간 간소화시켜서 (2)만 지정할 수 있는 “프린터 설정” 대화상자라는 게 따로 있기도 했다. 아래처럼 말이다.

사용자 삽입 이미지

Windows 말고 아래아한글만 해도 먼 옛날 도스 시절에는 Alt+P는 인쇄 대화상자이지만 Ctrl+P는 프린터 설정이었다는 걸 생각해 보자.
하지만 Windows 2000 스타일의 최신 인쇄 대화상자에서는 인쇄와 프린터 설정이 한데 통합되었다. 어떻게..?? 기존의 '프린터 설정'은 자신의 상위 호환인(superset) 인쇄 대화상자를 '적용'만 누른 뒤 '취소'로 닫는 것으로 퉁친 것이다. 이 때문에 인쇄 대화상자는 딱히 modeless가 아닌 modal 형태--자신이 떠 있는 동안 부모 윈도우로 포커스를 옮길 수 없음--임에도 불구하고 '적용' 버튼이 따로 있는 것이다.

MFC에서는 기본 구현돼 있는 인쇄 기능만 사용하는 경우, 오늘날의 2019 최신 버전까지도 의외로 옛날 스타일의 인쇄 대화상자가 계속해서 나타난다. CPrintDialog는 PRINTDLG 구조체 기반이며, 최신 스타일 대화상자를 지원하려면 PRINTDLGEX 기반인 CPrintDialogEx를 사용해야 한다. 최신 스타일이 도입되면서 내부 동작이 많이 바뀌고 바이너리 호환성이 깨졌기 때문에 Ex 클래스는 오리지널 클래스의 파생형이 아니며, 서로 호환성이 없다.

MFC 없이 Windows API만 사용한다면 재래식 PRINTDLG 구조체만 사용하더라도 최신 스타일 대화상자가 나오게 하는 것 자체는 가능하다. 대화상자 템플릿을 customize하는 것 없이 기본 멤버만 사용한다면 말이다.

그러나 구형 구조체와 구형 API만 사용해서 나타난 최신 대화상자에는 ‘적용’ 버튼이 나오지 않는다. 구형 API에는 함수 리턴값 차원에서 그런 응답 자체가 존재하지 않았기 때문이다.
아울러, 인쇄할 영역을 단순히 x~y쪽이 아니라 x1~y1, x2~y2 이런 식으로 여러 개 지정하는 것도 구형 API로는 불가능하다. 해당 구조체 멤버가 존재하지 않기 때문이다. 이런 식의 제약이 있다.

다음은 관련 여담이다.

(1) PrintDlg 내지 PrintDlgEx의 실행이 성공하면 프린터 DC뿐만 아니라 DEVMODE 내지 DEVNAMES 구조체 내용을 담고 있는 global 동적 메모리 핸들도 돌아온다. 현재 선택된 프린터에 대해서 지정한 용지 등의 설정들이 여기에 저장되기 때문에 응용 프로그램이 이 핸들을 잘 관리하고 있어야 한다. 그래서 다음에 인쇄 기능을 호출할 때 요걸 넘겨줘야 기존 인쇄 설정이 보존된다.

(2) 인쇄 대화상자 말고 용지 설정 대화상자라는 것도 있지만 이건 잘 쓰이지 않는다. 용지 종류와 방향, 상하좌우 여백 정도는 공통이겠지만 그 뒤로 인쇄 내용을 배치하는 방식들은 응용 프로그램들마다 같은 구석이 별로 없기 때문이다. 당장 워드패드, 메모장, 그림판만 해도 용지 설정 대화상자의 모양은 전부 제각각이다.

(3) 운영체제에 설치된 글꼴들을 조회하는 것처럼, 현재 설치돼 있는 프린터들을 조회하는 API도 있다. 인쇄 대화상자를 꺼내지 않고 내 대화상자의 한구석에다가 프린터 목록 같은 걸 마련하고 싶다면 이런 API를 쓰면 된다. 하지만 현실에서 사용할 일은 거의 없을 것이다.

(4) “인쇄 중” 대화상자라든가 “인쇄 미리보기(화면 인쇄)” 같은 건 공용 대화상자 버전이 존재하지 않으며, MFC의 경우 자체 구현돼 있다. 오늘날은 인쇄 진행 상황 같은 건 위대하고 전능하신 task dialog로 너무나 깔끔하게 구현할 수 있을 것이다.
그리고 인쇄 미리보기는 여느 대화상자와 달리 꽤 큰 공간이 필요한 관계로, 전통적인 modal 대화상자보다는 프로그램 주 화면에다가 곧장 미리보기를 표시하는 식으로 디자인이 바뀌는 추세이다. 요즘 MS Office 프로그램들이 대표적인 예이다.

2. 플로터

먼 옛날 한 1980~90년대쯤에 컴퓨터 개론 교양 서적에서는 컴퓨터의 출력 장치로 모니터, 프린터와 더불어 플로터라는 물건도 소개되어 있었다. 플로터는 로봇 팔 같은 게 달려서 종이에다가 도면을 말 그대로 '그려 주는' 장치이다.
덕분에 얘는 직선이나 곡선 하나는 무한한 해상도로 원본 그대로 정확하게 그릴 수 있다. 잉크를 적절히 배합해서 컬러 표현도 가능하다.

하지만 장점은 그걸로 끝.. 인쇄 속도가 도트 프린터 이상으로 끔찍하게 느리며(비록 도트 프린터처럼 시끄럽지는 않지만), 속이 채워진 도형이나 비트맵 같은 그림을 표현할 수 없다.
실제로 플로터를 가리키는 DC에다가 GetDeviceCaps(hDC, RASTERCAPS)를 호출해 보면 RC_BITBLT가 가능하지 않다는 응답이 올 것이다. 비트맵 전송을 할 수 없고 천상 원과 직선과 곡선 그리기나 하라는 소리이다.

일반 가정집이나 사무실에서 A4 용지에다가 인쇄하는 거라면 그냥 닥치고 일반 프린터만 쓰면 된다. 하지만 플로터는 프린터가 범접할 수 없는 A1 같은 엄청나게 큰 종이에다가 도면을 그릴 수 있으며, 펜 대신 커터 같은 걸 꽂아서 선 궤적대로(가령 글자의 윤곽선) 종이를 오려낸다거나 하는 용도로도 활용 가능하다는 것에 존재 의의가 있다. 즉, 산업용으로 마르지 않는 수요가 있다.

하긴, Windows에도 트루타입도 비트맵도 아니고 Modern, Roman, Script처럼 내부가 채워지지 않은 선으로만 구성된 '벡터 폰트'가 있었다. 실용적인 쓸모가 전혀에 가깝게 없는 완전 잉여인지라, 요즘 어지간한 프로그램의 글꼴 목록에서는 조회조차 되지 않을 것이다. 이런 게 바로 플로터용 글꼴이다. 물론 프린터에서도 쓸 수 있지만..

사용자 삽입 이미지

옛날에 도스용 터보 C의 BGI에도 비트맵 말고 벡터 글꼴 컬렉션이 있었다. 큰 크기에서는 내부가 채워지지 않고 선만 그어졌으며.. 힌팅이 없어서 작은 크기에서는 영 보기 좋지 않았으니 반쪽짜리인 건 동일했다. 비트맵 같은 계단 현상만 없을 뿐 다른 방면으로 단점투성이였다.

사용자 삽입 이미지
OpenCV 같은 그래픽 라이브러리도 전문적인 폰트 엔진 없이 자체적으로 영문· 숫자를 뿌리는 기능은 제공되는 글꼴이 딱 저런 퀄리티이다.

3. 프린터 드라이버의 가상화

컴퓨터라는 기계는 개나 소나 다 “물리적으로는 없지만 그래도 일단 있다고 치자”라고 넘기는 가상화가 통용되는 동네이다. 메모리는 진작부터 가상화하고 지내고 컴퓨터 자체도 가상 머신, 그리고 iso 같은 광학 디스크는 뭐.. 이제 운영체제(드라이브 마운트)와 압축 유틸조차(생성) 정식으로 지원하는 세상이 됐다.

그러니 프린터도 당연히 가상화의 대상이다. 당장 내 자리에 프린터가 존재하지는 않지만 어떻게든 인쇄를 하는 방법은 크게 두 가지인데, 하나는 그냥 pdf나 xps 같은 파일로 인쇄하는 것이고 다른 하나는 원격 프린터에 네트워크로 연결해서 인쇄하는 것이다. 한때는 컴퓨터조차 한데 공유하는 자원이고 각 사용자는 단말기로 접속만 하던 시절이 있었지만 지금은 프린터 정도나 사무실 같은 데서 여러 컴퓨터들이 한데 공유한다는 점이 흥미롭다.

옛날에는 PC에 Windows 운영체제만 달랑 설치하고 나면 프린터가 잡힌 게 없었다. 프린터는 네트워크나 비디오/오디오 장치만치 필수는 아니니까..
기본 프린터가 없는 컴퓨터에서는 어지간한 프로그램에서 인쇄 미리보기 기능조차 동작하지 않았다. 프린터 공급 용지의 크기를 알 수 없기 때문이다. 하지만 Vista부터는 xps 문서 생성기라는 드라이버가 기본 연결되어 저런 광경을 볼 일은 없어졌다.

pdf/xps가 대중화되기 이전에도 "파일로 인쇄"라는 개념 자체는 마치 "램 드라이브"와 비슷한 위상으로 존재했으며, 지금도 인쇄 대화상자의 옵션으로 존재한다. 인쇄할 내용이 저장된 컴퓨터와 프린터가 연결된 컴퓨터가 서로 일치하지 않을 때 파일로 인쇄하는 기능이 꼭 필요하지 않겠는가?

하지만 지난번 글에서도 잠시 언급했듯이 이런 파일 인쇄 결과는 특정 프린터 기종에 종속적이기 때문에 범용성이 떨어진다. 본인도 저걸 활용한 적은 거의 없었던 것 같다. 그 대신 오늘날은 위지윅만 보장되고 물리적인 프린터의 구조와는 철저하게 독립적인 전자 문서 파일 포맷이 활발히 쓰이고 있다.

우리나라는 인터넷으로 은행 거래나 공문서 발급 같은 걸 받을 때 보안 ActiveX들을 잔뜩 설치해야 해서 원성이 자자하다. 그래서 이런 사이트 접속 전용으로 ActiveX 설치 총알받이 가상 머신을 만들려고 해도 안 되는 경우가 많다. 반드시 본머신(?)만 쓰라고 강요하면서 가상 머신에서는 설치되기를 거부하는 매우 악랄한 ActiveX도 있기 때문이다.

그것처럼.. 증명서 같은 것을 인쇄하는 전용 프로그램의 경우, 가상 프린터인 건 또 어떻게 감지하는지 pdf 같은 파일 생성은 거부하는 경우가 대부분이다.
가상 CD를 감지하는 프로그램은 못 봤는데 프린터와 PC는 어째 감지하는지? 신기한 노릇이다. 하드카피 종이 인쇄는 뭐 변조 못 할 줄 아나..;; 어차피 원본대조필 워터마크가 필요한 건 똑같을 텐데.

한편, 가상 프린터 드라이버라는 게 파일 아니면 네트워크만 있는 건 아니다. 예전에는 FinePrint라고 인쇄되는 데이터를 인위로 보정해서 1페이지에 여러 페이지 내용을 축소해서 인쇄한다거나, 잉크의 농도를 인위로 줄이는.. 뭐랄까 메타 프린터 드라이버 유틸이 있었다. 최종 목적지는 물리적인 프린터이지만 그 사이에 중재를 한다는 것이다.
하지만 요즘은 축소 인쇄라든가 잉크 절약 모드는 프린터 드라이버 차원에서 기본 제공되는 옵션이 돼서 그런 메타 드라이버의 필요성이 많이 줄어든 게 사실이다.

또한, 레이저 프린터는 기술 배경이 복사기와 비슷하다 보니, 같은 페이지를 여러 부 인쇄하는 것을 소프트웨어가 아니라 프린터에게 맡기는 게 매우 능률적이다.
양면 인쇄를 위해 페이지별 인쇄 순서를 교묘하게 바꾸는 것도 해당 워드 프로세서/전자출판 프로그램, 심지어 메타 드라이버가 담당할 법도 하지만.. 요즘은 프린터 드라이버 차원의 옵션으로 자체 제공하기도 한다. 물론 파일로 인쇄할 때는 이런 것들은 전혀 고려할 필요가 없을 것이다.

4. 창 내용을 인쇄(?)하는 API

끝으로, 이것만 마지막으로 언급하고 글을 맺도록 하겠다.
Windows에서 화면에 표시돼 보이는 각각의 창(윈도우!)들은 WM_PAINT라는 특수한 메시지가 왔을 때 invalid region과 BeginPaint - EndPaint 사이클에 맞춰 자기 내용을 그리는 일에 특화돼 있다. 이는 창 내용을 다시 그리라는 요청이 여러 번 반복해서 오더라도 그리는 건 한 번만 행해지고, 꼭 다시 그려야 하는 부분만 효율적으로 그리기 위한 조치이다.

그런데 가끔은 윈도우도 저런 사이클에 구애받지 않고, 특정 DC가 하나 주어졌을 때 묻지도 따지지도 말고 거기에다가 자기 모습 전체를 있는 그대로 싹 다시 그리게 하고 싶을 때가 있다.
이럴 때를 위해 운영체제는 WM_PRINT 및 WM_PRINTCLIENT라는 메시지를 정의하고 있다. 이건 어지간한 Windows 프로그래머라도 접하거나 구현해 본 적이 거의 없는  듣보잡일 것이다.

그런데 Windows XP에서는 저 메시지로도 모자라서 하는 일이 거의 차이가 없어 보이는 PrintWindow라는 함수까지 추가됐다. 이건 뭐 WM_GETTEXT와 GetWindowText의 관계와 비슷한 것일까?
MSDN을 찾아보면..

  • The PrintWindow function copies a visual window into the specified device context (DC), typically a printer DC.
  • The WM_PRINT message is sent to a window to request that it draw itself in the specified device context, most commonly in a printer device context.

이라고 이런 물건들이 주로 인쇄용으로 쓰일 거라고 대놓고 문서화돼 있다. 하지만 현실에서 창 스크린샷 한 장 달랑 프린트 할 일이 얼마나 될까? 실제로는 이것들 역시 화면 출력용으로 쓰인다.

가령, alt+tab을 눌렀을 때 나타나는 각 프로그램 창들의 썸네일 말이다. 물론 Vista 이후부터는 DWM이 창들 화면을 하드웨어빨로 몽땅 저장하는 세상이 되긴 했지만, 그런 것 없이 invalid region과 무관하게 자기 모습 캡처 화면을 떠야 할 때는 저런 함수/메시지가 필요하다.

그리고 메뉴나 콤보 상자 목록이 스르륵 미끄러지며 표시되는 것 말이다. 이런 걸 구현하기 위해서도 WM_PAINT와 별개 계통인 그리기 전담 메시지가 쓰인다.
스르륵 미끄러지는 걸 구현한답시고 매 프레임마다 WM_PAINT가 날아온다거나 하지는 않는다. WM_PRINTCLIENT를 날려서 전체 리스트 모양을 메모리 DC에다가 한번 그려 놓은 뒤, 그걸로 애니메이션은 운영체제가 알아서 구현해 준다.

이런 걸 생각하면 창 핸들과 DC 하나 던져주고 print를 요청하는 메시지와 함수가 왜 필요하고 어떨 때 쓰이는지 약간 수긍이 갈 것이다. 하지만 그게 왜 하필 print라는 단어가 붙었으며 함수 버전과 메시지 버전이 모두 필요한지는 나로서는 아직도 잘 모르겠다.

Posted by 사무엘

2020/10/26 08:37 2020/10/26 08:37
, , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1812

인쇄 기능 -- 上

1. 모니터와 프린터의 차이

소프트웨어를 개발하면서 프린터 인쇄 기능을 구현할 일은 그리 많지 않을 것이다. 넓게는 pdf를 생성하는 것까지 포함하더라도 말이다. 인쇄 기능이 존재하는 프로그램이라면 게임은 절대 아닐 것이고 아무래도 골수 업무 분야일 것이다.

뭐, Windows API의 경우, GDI API에서 사용되는 DC라는 게 처음부터 극도의 장치 독립과 추상화를 추구하면서 매우 범용적으로 설계되었다. 얼마나 추상적인가 하면, 아직 VGA도 없던 1980년대의 Windows 1.0부터 얘네들의 그래픽 API에는 색깔을 팔레트 인덱스 기반으로 선택하는 게 아예 없었으며 언제나 RGB 기반이었다.
그러니 글자와 그림을 찍는 기본적인 동작은 화면에다 그릴 때나 종이에다 그릴 때나 거의 같은 코드로 구현할 수 있다.

물론 두 장치는 성격이 근본적으로 완전히 다른 물건이다 보니, 코드가 100% 완전히 같을 수는 없다. 프린터는..

  • 3D 가속 렌더링이라든가 동영상 따위와는 전혀 접점이 없다.
  • 출력 속도가 화면보다 훨씬 더 느리다.
  • 색깔은 뭐.. 흑백 프린터도 여전히 현역인 것을 감안해야 한다.
  • 출력이 한없이 연속적인 게 아니며, 페이지의 구분이 존재한다.
  • 프린터가 꺼졌거나 아예 연결되지 않은 것, 용지가 없는 것, 종이가 걸린 것 등으로 인한 실패 확률이 높다.
  • 다만, 해상도는 프린터가 모니터를 아득히 초월할 정도로 높다. 오늘날 HDPI 화면의 해상도가 이제 30~40여 년 전 도트 프린터의 해상도(180dpi)를 따라잡은 것과 비슷한 수준이다.

화면용 3D/애니메이션 위주의 그래픽 API가 DirectX 기반으로 눈부시게 바뀐 동안, 프린터 쪽은 GDI+ 정도 말고는 수십 년 전이나 지금이나 별로 바뀐 게 없다. 글쎄, 인쇄 대화상자의 디자인이 살짝 바뀌었으며 Windows Vista/7 즈음에는 xps라고 pdf 같은 위지윅 전자 문서 생성 API도 추가되긴 했지만, 이게 통상적인 인쇄 절차를 대체할 만한 물건은 아닌 것 같다.

2. Windows에서 통상적인 인쇄 절차

정말 핵심 중의 핵심 기본은 다음과 같다.

  • 화면에다가 그릴 때는 GetDC, BeginPaint 따위로 DC를 얻었다. 하지만 인쇄용 DC를 얻을 때는 PrintDlg 함수의 실행 결과로 얻어진 DC를 쓰는 편이다. CreateDC 직통으로 DC를 생성하는 건, 특정 프린터만을 저격하는 아주 특수한 프로그램을 만드는 상황이 아닌 한 거의 없다.
  • 인쇄를 시작할 때는 저 DC에 대해서 특별히 StartDoc이라는 함수를 호출한다. 이렇게 프린터 DC에서만 사용 가능한 전용 함수들이 몇몇 좀 있다.
  • 그리고 매 페이지에다 인쇄할 때마다 시작과 끝을 StartPage와 EndPage로 해 준다. 인쇄하고자 하는 페이지 수만치 for문을 돌리면 된다. 그 동안 프린터 DC를 상대로 각종 GDI 함수를 호출해서 글자와 그림을 찍도록 한다.
  • 인쇄를 마치려면 EndDoc을 호출하고, 중간에 인쇄가 취소됐다면 AbortDoc을 호출한다. 이거 무슨 저그 스커지가 적기와 자폭하느냐, 아니면 피가 닳아서 죽느냐의 차이와 비슷하다.;;
  • 다 사용한 DC는 ReleaseDC가 아니라 DeleteDC로 해제한다. 화면 DC 말고 메모리 DC와 프린터 DC는 저 함수로 해제해야 한다.

아 참.. 똑같이 DC를 사용하더라도 화면에다 그릴 때와 프린터에다 그릴 때의 매우 큰 차이가 하나 있는데, 바로 좌표계이다.
화면에는 그냥 픽셀 단위를 가리키는 MM_TEXT가 간단하고 직관적이니 널리 쓰이지만 프린터에는 그런 게 없다. 프린터의 해상도와 무관한 밀리미터, 인치, 포인트 등의 실제 길이 단위 기반의 좌표계를 지정해 줘야 한다(SetMapMode 함수).

그리고 MM_TEXT를 제외한 나머지 추상 단위계들은 수학 좌표계처럼 y축의 값이 증가하는 방향이 위로 올라가는 방향이다. 이건 동일 코드로 화면 출력과 프린터 출력을 모두 구현하는 것을 어렵게 하는 주범이다. BMP 이미지가 화면 기준으로 파일이 상하가 뒤집힌 구조인 이유도 이런 좌표계를 염두에 두고 만들어졌기 때문이다.
인쇄 미리보기를 구현한다거나 더 나아가 편집 화면 차원에서 프린터 결과와 화면 결과가 동일한 위지윅 프로그램을 개발한다면, 어차피 화면에서도 저런 범용적인 좌표계를 사용해야 할 것이다.

3. 용지 정보 얻기 (크기와 방향)

그러고 보니 응용 프로그램이 인쇄를 하기 위해서는, 아니 그 전에 인쇄 분량 계산을 하기 위해서는 먼저 인쇄되는 종이의 크기를 알아야 한다. 이 정보는 인쇄를 하는 당사자인 프린터 드라이버가 갖고 있으며, 응용 프로그램은 운영체제 API인 GetDeviceCaps(hPrinterDC, HORZSIZE 또는 VERTSIZE)를 호출해서 얻을 수 있다.
이 함수의 리턴값은 언제나 밀리미터 단위이다. 그러므로 mm 계열이 아닌 좌표계를 사용하고 있다면 적절히 변환해서 글자를 찍으면 된다.

여기서 알 수 있듯, 인쇄 용지의 크기라는 것은 프로그램이 인쇄를 위해 프린터 DC를 생성하기 전까지는 알 수 없다. 하지만 MS Word나 아래아한글처럼 위지윅을 지원하는 워드 프로세서 부류의 프로그램은 자체적으로 가상의 용지를 설정하고 동작한다.
문서에 설정되어 있던 용지와 실제 인쇄 용지가 크기나 종횡비 같은 게 일치하지 않는다면.. 인쇄할 때 배율 같은 걸 적절히 보정해 줘야 가장자리 내용이 짤리지 않는다. 그건 해당 프로그램이 담당해야 하는 영역이다.

한편, 용지의 크기뿐만 아니라 인쇄 방향--세로 portrait 또는 가로 landscape--도 응용 프로그램의 페이지 옵션과 프린터 내부의 옵션이 서로 따로 노는 형태이다. 그럴 만도 한 게.. 기능이 매우 빈약한 메모장으로 인쇄를 하건, 아래아한글로 인쇄를 하건, 가로· 세로 인쇄는 응용 프로그램과 무관하게 언제나 가능한 게 정상이기 때문이다.

그렇기 때문에 인쇄 대화상자에서 각 설치된 프린터별 설정 대화상자를 또 연 뒤, 용지의 방향을 바꿔 줄 수 있다.
인쇄 방향이 프린터 차원에서 landscape(가로)로 설정되었다면 GetDeviceCaps(hPrinterDC, HORZSIZE)의 값이 VERTSIZE의 값보다 더 커진다.

그리고 PrintDlg 함수는 프린터 DC를 생성하면서 PRINTDLG 구조체에다가 DC뿐만 아니라 DEVMODE라는 구조체 내용을 담고 있는 메모리 핸들도 따로 되돌려 주는데, 여기에서 dmOrientation이라는 멤버를 참조하면 용지의 방향을 알 수 있다. (DMORIENT_PORTRAIT 또는 DMORIENT_LANDSCAPE)

물론, 프린터의 용지 방향이 세로이더라도 내 프로그램에서의 용지 방향 설정이 가로로 돼 있으면 이를 감지하여 내가 직접 그림을 90도로 눕히고 돌려서 그리면 된다. 그러면 어차피 가로 방향 인쇄와 동일한 효과를 낼 수 있다.
하지만 그 정도 수고는 워드 프로세서 급에서나 할 일이다. 일반적인 프로그램이라면 그냥 프린터 설정만 따라서 내용을 출력하면 된다.

이렇듯 가로 세로 방향 전환이라는 건 전통적으로 프린터에만 존재하는 개념으로 여겨졌으나, 요즘은 디스플레이 장비에서도 어렵지 않게 찾을 수 있다. 스마트폰은 말할 것도 없고(방향 전환), 모니터도 방향을 전환하는 피벗 기능이 있기 때문이다. 가로로 납작한 모드는 영화를 볼 때 유용할 것이며, 세로로 길쭉한 모드는 문서 편집 내지 코딩을 할 때 유용할 것이다.

4. 인쇄 전담 계층의 분리

요즘 프린터는 한 줄씩 데이터를 받는 족족 타자기처럼 출력물을 토해내는 게 아니라 복사기처럼 최소한 페이지 단위로 동작한다. 운영체제의 인쇄 관리자는 응용 프로그램이 StartDoc ~ EndDoc 사이에서 GDI 함수로 명령을 내린 것들을 마치 메타파일 생성하듯이 모았다가 프린터 드라이버로 보낸다. 그럼 프린터 드라이버는 그걸 프린터가 해석할 수 있는 인쇄 동작으로 바꿔서 기계에다 전송한다.

즉, 응용 프로그램의 입장에서는 인쇄할 데이터를 운영체제의 인쇄 관리자에다가 다 보내 놓기만 하면 명목상 인쇄를 다 마친 것이다. 그 뒤에 실제로 인쇄가 제대로 됐는지, 도중에 종이 부족 같은 문제가 발생하지는 않았는지를 프린터와 통신하며 챙기는 건 인쇄 관리자의 영역이다.
이 인쇄 관리자를 '프린터 스풀러'라고 부르는 편인데, SPOOL은 다른 단어들의 이니셜이다.

문서를 실제로 인쇄하는 것보다야 같은 소프트웨어인 스풀러에게 인쇄 데이터를 파일 형태로 생성하고 전달하는 게 훨씬 더 빨리 되며, 중간에 실패할 일도 거의 없다. 그러니 스풀러가 별도로 분리되어 있으면, 응용 프로그램의 입장에서는 인쇄를 굉장히 빨리 끝마치고 사용자가 프로그램을 사용할 수 있는 상태로 신속하게 복귀할 수 있다.

그 반면, 도스 시절에는 지금처럼 운영체제 차원에서 인쇄 관리자가 제공되는 게 없었다. 그래서 도스용 아래아한글 같은 프로그램은 스풀러 기능을 내부에서 직접 구현해야 했다.
그리고 스풀 옵션을 사용하지 않거나, MB급 단위인 스풀 데이터를 저장할 디스크 공간이 부족하거나, 아예 스풀 기능이 없던 아래아한글 1.x 시절에는...
수십 페이지의 인쇄 명령을 내려놓았다면 다 끝날 때까지 컴퓨터를 사용하지 못하고 기다려야 했다. 스풀러가 아니라 그 느린 프린터로 데이터를 전부 보내야 했기 때문이다. 지금으로서는 도저히 믿을 수 없는 삽질이다.

도스 시절에는 PC 통신 프로그램은 전화를 걸거나 업로드/다운로드를 하는 중에 멀티태스킹을 하는 게 핵심 기술이었다. 그것처럼 워드 프로세서는 인쇄 중의 멀티태스킹이 핵심 기술이었던 셈이다.
1994년에 출시되었던 도스용 아래아한글 2.5는 프린터에다가 인쇄 데이터를 전송하는 방식을 개선해서 인쇄 속도를 크게 향상시켰다고 광고했었는데.. 그 기술 디테일이 무엇이었는지는 개인적으로 지금도 알 길이 없다.

프린터 스풀링용 데이터는 파일의 형태로 인쇄를 한 것이니 '인쇄의 가상화' 결과물이라고 볼 수 있다.
하지만 아무래도 특정 프린터 하드웨어에 지극히 종속적인 형태일 것이므로 pdf나 xps 같은 장치 독립까지 만족하는 전자문서라고 볼 수는 없다.

글쎄, 도스 말고 Windows에서도 3.x + 옛날의 굉장한 구식 도트 프린터의 경우(KS 24핀 180dpi 이러던..-_-), 응용 프로그램에서 인쇄 명령을 내리면 요즘처럼 인쇄 관리자와 해당 프린터 드라이버의 자체 UI가 뜨는 게 아니라 직통으로 바로 인쇄가 시작되기도 했던 것 같다. 거의 30년 가까이 전의 추억이다.

5. 인쇄를 중간에 취소하기

제아무리 인쇄 과정이 가상화돼서 프린터가 아니라 인쇄 관리자에게만 인쇄 데이터를 넘겨주면 된다 하더라도.. 수십· 수백 페이지 분량의 문서를 인쇄하는 건 1초 안으로 호락호락 금방 끝나는 작업이 아니다.
더구나 속도와 별개로 사용자가 인쇄 작업을 중간에 취소할 수 있게도 해 줘야 한다. 현재 페이지만 인쇄하려 했는데 실수로 100페이지짜리 인쇄를 몽땅 시켜 버리는 건 흔히 저지르는 실수이다.

그렇다면 요즘이야 해결책이 아주 간단하다. "전체 x쪽 중 현재 y쪽 인쇄 중"이라는 진행률 게이지와 "취소" 버튼이 달린 대화상자를 modal로 표시한 뒤, 인쇄는 스레드로 진행하면 된다. 인쇄 스레드는 매 페이지의 인쇄가 끝났을 때마다 main UI로부터 취소 버튼의 클릭 여부를 검사하고, 만약 그게 눌렸다면 AbortDoc을 호출해서 인쇄를 취소하고 곧장 빠져나오면 된다.

그런데 문제는 멀티스레드라는 게 존재하지 않던 옛날 16비트 골동품 시절이다. 이때는 실시간 인쇄 상황 표시와 취소 처리를 어떻게 했을까?
그때는 main 스레드가 근성의 idle time processing만으로 UI와 인쇄를 같이 병행해야 했다. 그리고 이를 도와주는 취지의 API가 제공되었다. 그 정체는 SetAbortProc라는 함수이다.

인쇄를 시작하기 전에 프린터 DC에 대해 abort 콜백 함수를 지정해 주면.. 나중에 그 DC를 대상으로 각종 그리기· 조작 명령이 수행된 뒤에 운영체제가 그 콜백을 매번 호출해 준다. 마치 잠수하다가 수시로 수면 위로 잠깐씩 나와서 숨을 쉬는 것처럼 말이다.
이때 콜백 함수가 해야 할 일은 두 가지였다. (1) 큐에 쌓여 있는 메시지를 처리해서 프로그램의 GUI를 돌아가게 하기, 그리고 (2) 혹시 사용자가 인쇄 취소 명령을 내렸는지 검사해서 그 여부를 리턴값으로 되돌리기.

이를 위해서 콜백 함수에는 무려 message loop이 들어가 있어야 했다. 단, 종료 조건을 통상적인 GetMessage로 하지 말고 PeekMessage(... PM_REMOVE)로 지정해야 한다. 전자는 처리해야 할 메시지가 없으면 메시지가 또 생길 때까지 내부적으로 대기를 한다. 하지만 지금 이 콜백은 메시지 처리만 하고 나서 실행을 종료해야 하기 때문이다.

그리고 SetAbortProc을 호출 하기 전에 "인쇄 중..." 대화상자를 표시해 놔야 한다. 이 대화상자는 백그라운드 인쇄 기능과 연계해서 돌아가야 하는 관계로, 응용 프로그램의 자체 message loop을 타는 modeless 형태로 표시돼야 한다. DialogBox 말고 CreateWindow를 쓰라는 뜻이다.
그래도 이 대화상자의 용도는 명백하게 modal이니, 이게 표시된 동안은 parent 프레임 윈도우로 포커스가 옮겨질 수 없게 EnableWindow(hParent, FALSE) 처리도 사용자가 수동으로 해야 한다.

SetAbortProc 같은 메커니즘이 없었다면 인쇄 도중 UI 표시와 취소를 구현하기 위해서 우리가 수동으로 인쇄 루틴의 내부에다 PeekMessage 체크를 집어넣어야 했을 테니 인쇄용 코드와 인쇄 미리보기용 코드조차 동일하게 관리하기가 어렵고 프로그램이 많이 지저분해졌을 것이다. 하지만 abort 콜백 함수를 구현하는 건 과거의 클립보드 chain 관리만큼이나 여전히 몹시 삽질스럽고 번거로운 구석이 있었다.

사용자 삽입 이미지
(MFC 라이브러리가 자체 구현한 "인쇄 중" 대화상자)

옛날 프로그램으로 인쇄를 해 보면.. 잠깐 표시되는 '인쇄 중' 대화상자는 왠지 추레해 보이고 (1) 그 흔한 진행률 게이지 하나 없고, (2) 다른 대화상자들과 달리 중앙 정렬돼서 표시되지 않고(좌측 상단에 치우쳐서) [X] 버튼도 없으며, (3) 반응성이 안 좋아서 종종 응답이 멎기도 하던 이유들이 모두 설명된다.
(1)은 16비트 시절엔 진행률 게이지 공용 컨트롤이 없었기 때문이요, (2)는 modal이 아닌 modeless로 처리됐기 때문, (3)이야 뭐.. idle time processing으로 돌아가니 반응성이 좋지 않은 것이다.

이런 지저분함은 앞서 언급했듯이 멀티스레드가 등장한 뒤에야 과거 유물로 남게 되었다.
하지만 과거에 나왔던 Windows 프로그래밍 책들은 여전히 옛날 전통적인 방식으로 SetAbortProc 기반의 인쇄 절차를 소개하고 있으며, 16비트 시절부터 유구한 전통과 짬을 자랑하는 MFC도 그 구조를 고스란히 따르고 있다.
SetAbortProc가 함수 주소만 받고 함수에다 넘겨줄 데이터를 받지 않는 것도.. 데이터쯤은 그냥 전역변수로 넘겨주던 1980년대 C스러운 사고방식의 결과물이 아닐까 싶다.

참고로 MS Word의 경우, 신기하게도 스풀러에게 인쇄 데이터를 넘겨주는 작업조차도 철저하게 백그라운드로 수행된다. 즉, "인쇄 중" 대화상자 자체가 표시되지 않으며, "몇 페이지 인쇄 중"이라는 말은 아래의 상태 표시줄에 표시된다. 그 와중에도 문서 편집과 수정이 가능하고 프로그램을 온전하게 사용할 수 있다. 이런 프로그램도 얼마든지 만들 수 있다.;;

Posted by 사무엘

2020/10/23 08:35 2020/10/23 08:35
, , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1811

1. 할배에 대한 밴 플리트 장군의 인물평 / 증언

본인은 맹목적인 사대주의를 권장· 조장할 의도는 없다. 하지만 현실적으로 외국(특히 미국)에서 좋은 평판과 예우를 받는 사람이나 물건은 실제로도 매우 훌륭한 인물이거나 우수한 물건인 경우가 대부분이다.

미국의 정치인과 군인들이 더 깍듯이 받들어 모시던 백 선엽 장군이라든가.. 이 글에서 다룰 우리나라 초대 대통령, 건국 대통령 할배가 그 대표적인 예이다.

사용자 삽입 이미지

President Syngman Rhee is worth his weight in diamonds. That describes him in a nutshell. (리 승만 대통령은 한 마디로 요약하자면 자기 체중만 한 다이아몬드의 값어치가 나가는 인물이다.)

저 문구를 오래 전부터 어디선가 보긴 했었는데.. 출처를 찾아보니 바로 나온다. 주작이 아니었다~! ㅠㅠㅠㅠ

  • Christian gentleman
  • his whole life has been devoted to the liberation of his country
  • the true meaning of a long and selfless life devoted solely to the welfare of other people -- Korean people) 오로지 동족의 안녕을 위해, 조국의 독립을 위해 자기 인생을 통째로 바친 위인
  • great patriot 위대한 애국자
  • the immortal Messiah of Korea 한국의 구세주
  • 한국의 마하트마 간디
  • I deem it a very great honor to be called friend 내가 할배의 지인이라는 사실이 영광스럽다.
  • has so much wisdom ... it makes us feel like small boys around him. 워낙 노련 현명한 사람이어서 우리가 그냥 허접 쪼렙처럼 보일 정도이다.

그리고 그 유명한 '고문관'이라는 단어가 여기서 유래됐구나~!! ㅋㅋㅋ Komunkuan

"세계에선 극찬하는 대한민국 건국 대통령을
우리나라만 독재자라고 쌍욕한다.
더 심각한 건,
현재 존재하는 북한 김 정은에 대해선
평화적으로 함께 가야 한다고 말한다.
악마 김 정은보다 자국 건국 대통령을
죽일 듯 흥분하는 나라
는 우리나라가 유일무이하다.
참으로 통탄할 노릇이다..."


난 이런 착한 독재가 있다면 단임 직선제 그런 거 없어도 되니 독재 치하에 좀 있고 싶다. 북괴 같은 독재 말고.

할배 대통령에 대해서 꼬리처럼 따라다니는 매우 저열한 중상모략 누명 낙인을 둘 꼽자면 단연 (1) 친일파 청산(?) 문제와 (2) 6 25 개전 초기의 피난과 한강 다리 폭파 타이밍 문제이다.
이에 대해 본인은 (1) Windows 95가 램 4~8MB짜리 PC에서 도스 호환성까지 맞추면서 겨우 돌아가기 위해서 16비트 코드를 재등용했던 것하고 완전히 똑같은 현상이다. 조 병옥, 이 인 같은 애국지사도 괜히 반민특위를 해체시킨 게 아니다.

(2) 방송국의 피랍 등 여러 착오들이 겹쳐진 불운이었지만 악의적인 짓은 절대 아니었고 저 사람은 자기 고국을 절대로 버리지 않았다는 것 위주로 변명과 실드를 갖추고 있다. 특히 중공 입국을 고의로 막지 않아서 우한 폐렴 초기 방역을 완전히 망친 현 정부를 비판하지 않는 진영논리 정치병자라면 6 25 개전 초기의 실책도 비판할 자격이 없다.

이것들은 반일정신병과 합쳐져서 사람들 정신 건강을 심각하게 해치는 망상 정신병이며 망국병이다.
사람 뇌를 컴퓨터에다 비유하자면 저건 친중종북이라는 악성코드가 침투하는 주요 보안 취약 지점이다. 정말 수단과 방법을 가리지 않고 거짓을 반박해 주고 헛소리들을 잠재워야 한다.
좌좀좌빨의 잘못되고 왜곡된 역사관과 가치관의 거의 전부가 할배에 대한 증오심에서 시작된다고 봐도 과언이 아니다.

2. 금별과 똥별

사용자 삽입 이미지

아 물론 "정말로" 밑에 것들이 지휘 재량을 넘어서는 영역까지 극도로 잘못했거나 자질이 없었을 수도 있다.
군대에서 탈영이나 자살 사고 났다고 닥치고 다짜고짜 무조건 윗대가리 모가지만 쳐서 정말 유능하던 장교의 인생을 망쳐 놓는 것은 문제가 있는 조치이다.

하지만 당사자가 직접, 습관적으로 대놓고 변명이나 틱틱 하면서 아랫사람 탓 핑계 늘어놓는 것.. 짧은 시간 동안 그런 패턴이 계속 반복되는 건.. 우연이나 예외가 아니다. 옛날과 비교했을 때 명백하게 유의미한 변화이다. ---
"높으신 분들이 질이 점점 떨어지고 인성이 타락하고 있다는 것" 말이다.

북괴에서 사격 과녁에 얼굴이 그려지기까지 했던.. 참 군인 금별이 계시던 시절이 너무  그립다.
"니가 중대장이구나? / 고생 많다. 긴장하지 마. 내가 그리 겁나냐? / 적이 도발을 하면.. '쏠까요' 이렇게 묻지를 마. 일단 닥치고 그냥 쏴. 무자비하게 응징해서 도발할 엄두를 못 내게 하라고. 뒤에 책임은 내가 진다." (☞ 그 당시 동영상. 이를 두고 평소에 늘 실망만 하던 중대장이 바짝 쫄아서 긴장했다는 개드립이 나돌았다. ㄲㄲ)

사용자 삽입 이미지

3. K 방역? 과연?

(1) 1950년대 말, 독일에서 '탈리도마이드'라고 임신 여성의 입덧을 기가 막히게 가라앉혀 주는 약을 선보였다.
효과 탁월하고 독성 없고 동물 대상 실험에서 부작용이 전혀 없었기 때문에 그 당시엔 정말 기적의 발명품으로 여겨졌지만..
알고 보니 얘는 치명적인 부작용이 있었다. 산모는 괜찮은데 정작 배 속 태아가 약의 성분 때문에 사지의 혈관이 제대로 형성되지 않아 사지가 짤막 뭉툭 오그라든 기형아가 된 것이다!!

이 약 때문에 전세계에서 수천 명에 달하는 기형아가 태어나 버렸지만 그 시절 미국에서는 피해 사례가 거의 발생하지 않았다(전혀까지는 아니겠지만..). '프랜시스 켈시'라는 약학자 출신의 FDA(미 식품의약국) 관료가 인체 임상실험 근거 불충분을 이유로, 온갖 집요한 외압을 뿌리치고 이 약의 수입 판매를 끝까지 거부· 불허했기 때문이다.

이분의 소신 판단이 미국에서 기형아 대재앙을 예방했다는 것이 판명되면서 이분은 케네디 대통령으로부터 훈장까지 받게 됐다.

(2) 더 옛날 태평양 전쟁 당시에.. 미국의 해군 정보장교이던 에드윈 레이튼 소령은 일본군이 여러 정황상 진주만을 공습할 것이라고 수차례 보고하고 건의했으나, 상부로부터 의견이 묵살당했다. 결국 진주만은 예고대로 처절하게 털렸다.
물론 이건 전적으로 결정권자이던 상부의 책임이지, 레이튼 소령의 잘못은 아니다. 그래서 태평양 전선 사령관이던 허즈번드 킴멜이 책임을 지고 짤렸다.

그러나 레이튼 소령은 "그때 상부에 더 강하게 건의하고 설득했어야 했다. 나는 건국 이래 가장 처절한 정보전 패배에 책임을 져야 한다"라며 자신을 자책했고.. 더욱 분발하여 일본군의 암호를 해독하고 분석했다. 그래서 훗날 미드웨이 해전에서는 일본군이 언제쯤 어디로 쳐들어올지를 거의 점쟁이 수준으로 정확하게 알아 맞혀서 전세를 뒤집는 데 성공했다.

(3) 위의 두 사람은 미국의 사례이구나.
자, 그럼 다음으로 지금 우리나라의 질병본부장을 맡아 왔고 이젠 청장으로 승격도 된 그분은..
정치색이나 악의가 없다고 가정한다면 성실한 성격에 고생 많이 하고 있어 보이긴 한다. 세금 아까운 어지간한 먹튀 관료들보다야 나은 건지 모른다.

하지만 그건 대기업 인사고과로 치면 B 정도인 평타 월급값만 하고 있는 것이지,
무슨 특출난 선견지명, 희생, 헌신이라든가 천재, 기적 같은 단어로 수식해야 할 영웅 행적으로까지 보이지는 않는다. 특히 저 1, 2번의 인물이 막아낸 것과 이뤄낸 것을 같이 비교한다면 더욱 말이다. 심지어 '악의 평범성'의 범주에나 들지 않았으면 좋겠다고 우려하는 사람도 있는데, 관련 글을 소개하고자 한다. (☞ 정 은경과 아이히만)

4. 로스쿨 교수 출신의 점쟁이

사용자 삽입 이미지

어떤 중년 여인은 구치소에 갇혀서 아픈 몸을 이끌고 주 4회 꼬박꼬박 재판을 받았구만 저년은 무슨 엄살이냐?
그리고 성경 이후로 이 정도로 완벽한 교리적 적용과 문자적인 예언 성취는 처음 본다. 설마 저것도 영감 받아서 기록됐나...???

난 진짜 많이도 안 바라고..
저 악의 무리들이 딱 심은 대로만, 자기들이 남을 판단하고 남에게 행했던 대로만 정확하게 거뒀으면 좋겠다.

사용자 삽입 이미지

쟤가 무슨 군대를 불법으로 빠졌나, 로스쿨 의대 공기업 대기업 같은 본격 신분 상승 코스에 엄마 아빠 찬스 특혜로 들어갔나?
원래부터 등골 브레이커 종목이고 월급쟁이 서민들은 거들떠보지도 않는 듣보잡 승마 정도나 기업 협찬 받아서 했던 게 뭐가 그리 잘못인가?

기소조차 못 할 혐의를 가지고 온 국민이 애꿎은 유부녀를 마녀 사냥을 하고 해외 인터폴에 수배까지 하고 얼굴 다 까고 수갑까지 채워서 언론에 대서특필까지 하게 만든 새끼들이... 자기 비리에 대해서는..? 진짜 악마가 따로 없다.
내가 좌빨좌좀 대깨문 부류를 극도로 혐오하며, 죽여야 한다는 급의 극언까지 불사하는 이유는 다음과 같이 일목요연하게 정리된다.

  • 내로남불 위선이 때려죽이고 싶도록 싫어서(악한 것): 한 70%
    최숭실 vs 조둑 애미추, 북괴 중공 vs 일본 미국.. 잣대가 전혀 일관되지 않음
  • 사상이 옳지 않고 잘못됐으며, 거짓에 기반을 두고 있기 때문에(틀린 것): 약 25%
    우리나라 근현대사 왜곡, 반일 정신병, 동맹과 주적을 서로 뒤바꿔서 인식
  • 나와 생각이 다른 것 자체 때문에 싫은 것(다른 것): 5% 미만

반대편도 비리 저지르고 위선적이기는 마찬가지라고? 말 잘했다. 그러면 네놈들도 똑같이 대통령직 짤리고 교도소 가면 된다. 공평하게 동일한 취급 받으면 나도 이런 글 안 쓴다.
틀린 것만 있으면 나도 정중하게 반박만 하고 말지, 감정적인 반응까지 하지는 않는다.

저 철면피 인간 악마들이 자기들이 입으로 씨부렸던 것, 남에게 들이댔던 잣대를 이제 그대로 되돌려받게 해야 한다는 말(주장, 생각)은.. 악한 생각이 전혀 아니며 정치 편향적인 발언도 절대 아니다.
오히려 음주운전 교통사고 가해자에게 유족들이 엄벌을 탄원하는 것과 비슷한 거라고 봐야 한다!

미국에서 평소에 민간 화재 보험 안 들고 기고만장하다가 자기 집에 불 나니 보험 조합에서 불 안 꺼 주고,
"보험료 몇 배라도 줄 테니 제발 불 꺼 줘 plz" / "안 돼. 그런 요청을 들어 주면 평소에 아무도 보험을 안 들어 놓게 됨."
이렇게 대꾸하는 게 악하거나 비인도 가학적인 사고방식인가? 그게 전혀 아닌 것과 같은 이치이다.

이와 거의 똑같은 논리 내지 사고방식은 성경에도 있다. 잠언 1장 뒷부분 말이다. 하나님도 남을 조롱하고 비웃을 줄 아신다.
아니, "살아 있을 때 복음 안 받아들이면 죽어서 지옥"이라는 기독교의 그 시스템 자체도 철저하게 이런 사고방식을 바탕으로 깔고 있다.

5. 군함도의 낙서

사용자 삽입 이미지

일제의 군함도 강제 징용 조선인의 애절한 낙서라고 전해지는 이 그림 말이다.
실상은 이 승복의 "나는 공산당이 싫어요"라든가 성경의 요한의 콤마(요일 5:7), ‘없음’ 구절 따위가 아니라, 이런 문구야말로 진짜로 “후대”에 “추가”된 주작이다.

“이 낙서는 조선총련 산하 단체인 재일본조선문학예술가동맹이 한일수교에 대한 반대 운동의 일환으로 1965년에 제작한 영화 ‘을사년의 매국노’를 촬영하는 가운데 연출된 것이다.
이 영화에 강제연행의 흔적을 담기 위해 제작진 4명이 치쿠호 탄광촌에서 현장 촬영을 했다. 그때 폐허가 된 징용공 합숙소에서 제작진 가운데 녹음을 담당한 여성이 나무를 꺾어 벽에 문제의 낙서를 새긴 것이다.
위조 사실을 상세히 밝힌 西日本新聞의 취재에 대해, 영화 제작진 가운데 한 사람은 당시 폐허가 된 합숙소에서 촬영할 것이 없어서, 제작진이 모두 합의하여 낙서를 새기도록 했으며, 부드러운 필체로 하기 위해 여성에게 쓰도록 했다는 사실을 자백했다.”


쉽게 말해 저건 진실성 신뢰성이 로스웰 외계인 해부 필름의 그것과 동급이라는 뜻이다!!

  • 백범일지의 허위 주작 의심 기록,
  • 청산리 전투의 전과 주작 의심 사항
  • 유 관순 열사의 진짜 사인
  • 만주에서 심지어 일본군이 조선인을 빨갱이들로부터 보호해 줬던 사실

이런 것들도 알 만한 사람들한테는 조금씩 알려지고 있다. 만천하에 다 밝혀져야 한다.
지금은 무려 2020년이다. 아직까지도 거짓 주작까지 서슴지 않는 미개하고 저주받을 반일 정신병은 이 땅에서 제발 좀 근절되고 추방돼야 한다.

Posted by 사무엘

2020/10/20 08:34 2020/10/20 08:34
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1810

1. 100여 년 전, 찰스 린드버그의 대서양 무착륙 횡단

요즘 An-2니 세스나 172니 하는 경비행기들은 항속거리가 대체로 1000km대에 머물러 있다.
하지만 찰스 린드버그는 무려 1927년에 겨우 20대 중반의 나이로 직접 마개조한 붕붕이 경비행기를 조종해서 대서양을 무착륙 직통 횡단하는 데 성공했다. 참고로 뉴욕에서 파리까지는 직선 최단거리만으로도 무려 5800km를 넘는다!

사용자 삽입 이미지

그는 시속 300km 정도 될까..? 딱 KTX 열차의 주행 속도로 나아가는 비행기를 꼬박 33시간 동안 혼자서 한숨도 안 자고 조종했다. 한 순간도 조종간을 놓지 않고, 밥도 안 먹고 용변도 그냥 제자리에서 해결하면서 근성으로 날아갔다.. (☞ 관련 자료)

그는 1920년대 기술로 만들어진 가냘픈 경비행기로 초장거리 무착륙 비행을 하기 위해, 닥치고 기체의 무게를 줄이고 연료를 무조건 많이 꽉꽉 채워넣고, 기계 시스템을 최대한 '신뢰성' 있게 꾸미는 데 목숨을 걸었다.
그래서 일체의 편의장비를 제거했다. 엔진은 단발로 편성하고, 교대 운전도 포기하고 자기 혼자 타고, 고도계 속도계 오토파일럿, 무전기, 전등, 비상 탈출용 낙하산 전부 없앴다..;;; 그리고 자기 자신도 경마 기수 수준으로 살 빼고 체중을 줄였다.

아문센이 1910년대 기술로 남극점까지 갔다가 살아서 돌아오기 위해 체면 따위 마다하고 개썰매와 개고기까지 적극 활용했으며, 1940년대에 둘리틀 특공대가 항공모함에서 함재기가 아닌 뚱뚱한 육군 폭격기를 이륙시키기 위해 이것저것 다 떼어내고 눈물겨운 최적화를 한 것과 같은 급의 노력을 한 것이다.

그 결과 린드버그는 파리에 잘 도착했다. 환영 인파들에게 간단히 답례를 한 뒤, 그는 그대로 탈진했다. 다 때려치우고 곧장 근처 호텔에 가서 방 잡고 잠부터 잤다. 비행 시간만 33시간 반이고, 자기 자신은 거의 50시간이 넘게 잠을 안 잔 상태였기 때문이다..
(그리고 미국으로 귀환할 때는 비행기째로 미군 항공모함에다 싣고 그냥 배 타고 돌아왔다고 한다;;)

1920년대엔 한국인 중에도 안 창남, 신 용욱 등의 비행기 조종사가 최초로 등장하긴 했다. 하지만 동양에서 이제 막 파일럿이 배출될 정도이면 서양에서는 더 앞서가서 저런 엄청난 똘끼를 발산한 사람이 나온 셈이다.
무모하고 위험한 짓을 한 대신, 그는 지금 같은 복잡한 비행 계획 신고, 관제 교신에 착륙료, 영공 통과료 지불 따위 없이 아무도 없고 아무의 통제도 받지 않던 하늘을 최초로 날 수 있었다. 그야말로 무한한 자유를 경험했을 것이다.

그러고 보니 저 양반은 파리에 도착해서는 아래를 내려다보며 착륙 지점을 찾는 심정이 어땠을까? 아폴로 우주선이 처음 보는 달 표면 지형을 내려다보면서 착륙 지점을 찾는 것과 비슷했지 싶다~!

2. 20세기 전반과 후반의 비행기

2차 세계대전 당시에는 아직..

(1) 로켓 엔진이 없었고 미사일이라는 것도 없었다. 그래서..
태평양 전쟁에서 전함을 격침시키기 위해 가냘픈 함재기들이 폭탄을 싣고 직접 날아가서 급강하 폭격을 하거나.. 해수면 근처까지 하강해서 어뢰를 떨궈야 했다.
지금으로서는 정말 상상하기 힘든 원시적이고 위험천만한 기동이지만, 그 시절엔 통상적인 해전이 항공모함 함재기 교전으로 바뀐 것만 해도 공상과학 느낌이 들 정도로 첨단 기술이었을 것이다.

미사일이 없으니 1945년 히로시마와 나가사키의 원자 폭탄도 미군의 폭격기가 현장까지 친히 찾아가서 떨구고 갔다. 버튼 하나 누르면 자동으로 핵 미사일이 발사되는 것 따위는 그때 없었다.

그리고 지상이나 수면의 목표물이니까 위력이 강한 폭탄이지, 높이가 자신과 대등한 비행기끼리는 여전히 기총사격에 의존해야 했다. 그래도 옛날에는 이것만으로도 공중전을 벌여서 적기를 잡았다. 일본의 야마모토 이소로쿠 제독만 해도 항공 이동 중에 미군의 습격을 받았으며, 기관총에 벌집이 돼서 전사했다.

(2) 사실은 아직 제트 엔진도 없었다. 독일에서 말기에 간신히 개발에 성공해서 잠깐 투입했던 물건을 제외하면 이때 활약했던 모든 비행기들은 아직 피스톤 왕복 엔진 기반의 붕붕이였으며 프로펠러기였다.

그리고 초음속 비행이라는 것도 전무했다. 그런 것들은 다 종전 후에 등장하고 가능해졌다. 그로부터 몇 년 되지도 않아 6· 25 사변 때 곧바로 P-80 같은 미군 최초의 신형 고성능 제트 전투기가 나타났으니.. 그 시절 사람들이 ‘쌕쌕이’라고 부르며 신기해할 만도 했다.

비행기에서 제트 엔진의 등장은 열차가 증기 기관차에서 디젤이나 전기 기관차로 바뀐 것만큼이나 큰 혁신이었다. 등장 시기도 서로 완전히 같지는 않지만(열차가 좀 더 먼저) 20세기 중반 정도로 비슷한 편이다.

오늘날은 비행기고 배고 미사일이면 다 끝나는 것 같다. 그리고 전투기들이 너무 강해지는 바람에 오히려 2차 대전 시절 같은 툭탁툭탁 공중전이 벌어질 여지가 없어진 감이 있다.

3. 이스라엘의 일란 & 아사프 라몬 국제공항

바로 1년 반쯤 전, 2019년 1월에는 이스라엘의 남부에서 '일란 & 아사프 라몬 국제공항'이라는 커다란 공항이 개항했다. 넓은 땅을 찾다 보니 간척지나 인공섬이 아닌 더운 사막에 최첨단 기술을 동원하여 공항이 지어졌다.

이 공항은 명칭에 한 사람도 아니고 두 사람의 이름이 부여된 게 인상적이다. 저건 친형제나 부부의 이름이 아니라 부자(아버지 아들)의 이름이다.

사용자 삽입 이미지

일란 라몬은 전투기 조종사 출신으로 이스라엘이 배출한 최초의 우주비행사였으나.. 2003년, 컬럼비아 호 우주왕복선 공중분해 사고 때 순직했다. 이때는 이스라엘 전국민이 슬퍼하면서 추모하고 난리가 났다.
다음으로 아들인 아사프 라몬은 부친을 따라 공군 조종사의 길을 갔는데.. F-16 훈련 비행을 하던 중 추락 사고를 당해 2009년, 겨우 20대 초반의 나이에 순직했다.

부자가 나란히 나라를 대표해서 항공우주와 관련된 일을 하다가 순직했으니 이들의 이름은 공항의 이름으로 매우 적절하게 쓰였다고 볼 수 있다.

한편, '라몬(Ramon)'이라는 명칭은 비록 어원은 전혀 다르겠지만 필리핀의 옛 대통령도 떠오르게 한다. 라몬 막사이사이.
매우 공교롭게도 이 사람도 비행기 추락 사고로 순직했고, 공항 이름에 쓰여도 될 정도로 훌륭한 인물이었다는 공통점이 있다. (드골 국제공항, 케네디 국제공항..)

세상에 재임 중에 비행기 추락 사고로 죽은 국가 원수가 세계적으로 얼마나 되겠다 궁금했는데.. 찾아 보니 생각보다 많다. (☞ 링크) 위키백과가 별 걸 다 정리해 놨다.;;

4. 보잉 사

보잉 사는 초창기엔 지금 록히드 마틴이 그러는 것처럼 방산업체로서 군용기의 인지도가 더 높은 기업이었으며, 먼 옛날엔 심지어 선박도 만들었다.

그러다가 20세기 후반에 여객기 제조의 넘사벽 명가로 잘 자리잡은 데에는 경영자가 비행기 시장의 미래를 내다보면서 현명한 판단을 내린 게 크게 기여했다. IT 업체에다 비유하자면 처음엔 SI 외주 개발이나 정부 과제만으로 먹고 살다가.. 온라인 게임 하나 자체 개발해서 초대박을 터뜨린 것과 완전히 같지는 않지만 비슷한 격이다. 닥치고 비행기를 만들기만 한 게 다가 아니다.

군용기를 만들던 노하우를 살려서 명작 707로 숨통을 튼 뒤, 삼발기 시절에 727, 그리고 대형 점보 여객기가 각광받을 때 747, 적당히 작은 중거리용으로 737, 나중에 여객기의 트렌드가 2발기로 다운사이징 될 때 777로 시장을 적절히 잘 공략했다.

옛날에 초음속 여객기라는 도박이 시도되던 시절에는.. 같이 개발하던 747을 언제든지 화물기로 개조할 수 있게 대비를 잊지 않았다. 그러다가 주판알을 튕겨 보니 초음속기는 가성비가 너무 떨어지는 게 명백해지자, 개발을 깔끔하게 포기하고 손 뗐다.

콩코드를 굴리던 영국과 프랑스는 비록 체면과 명성은 얻었지만, 기체를 처음 예상한 것만치 다 생산하지도 못하고 적자 때문에 많이 고생해야 했다.
그 반면 아음속기 747은 1970년대에 여객과 화물에서 모두 흥행 대박을 냈다. 석유 파동 시국에 경제적인 아음속기가 옳은 선택이었음이 더 명백해졌다.

훗날 유럽의 에어버스는 보잉 747보다 더 큰 A380을 내놓으면서 크기면에서 747을 추월했다.
하지만 21세기는 초대형 여객기, 더 나아가 4발기의 시대 자체가 저물고 있었다. 결국 A380도 콩코드와는 다른 이유로 인해 처음 예상 분량만치 생산을 못 하고 단종되게 됐다.
보잉 사는 오랜 역사에 비해 이런 식으로 시대를 잘못 읽은 삽질이 별로 없이 경영을 잘 해 왔다.

Posted by 사무엘

2020/10/17 19:35 2020/10/17 19:35
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1809

한글을 입력할 때 ㄷ, ㅂ, ㅈ 같은 자음을 연타해서 각각 ㄸ, ㅃ, ㅉ을 만드는 건 명백하게 초성 문맥에서 행해지는 일이다. ㄸㅃㅉ은 종성에 쓰이지 않기 때문이다(현대 한글 기준). 그리고 ㄲ과 ㅆ은 비록 종성에서도 쓰이긴 하지만 얘도 가능한 한 초성 문맥에서 처리하는 게 동작의 일관성 차원에서 더 좋다.

이들과는 반대로 ㄱ+ㅅ으로 ㄳ, ㄹ+ㅁ으로 ㄻ 등을 입력하는 건 종성 문맥이다.
세벌식은 초성 글쇠와 종성 글쇠가 물리적으로 서로 다르기 때문에 초성의 결합이 가능한 상황과 종성의 결합이 가능한 상황이 아주 명확하게 구분된다. 하지만 두벌식은 어떻게 구현하느냐에 따라 초성과 종성을 뭉뚱그린 자음의 결합 가능 여부가 달라진다.

세벌식 구현하듯이 두벌식을 구현한 프로그램(아래아한글, macOS, 날개셋 기본 설정)이라면 초성 입력 문맥에서는 ㄸㅃㅉ의 결합만 가능하다. 그리고 두벌식 기반 옛한글 입력 환경이라면 역시 무조건 이런 식으로 동작하게 된다.

한편, 마소 한글 IME는 초성 쌍자음의 연타 결합을 지원하지 않고 ㄳㄶㄻ 같은 겹받침을 단독으로 입력할 수 있다. 초성까지도 언제나 종성 문맥에서만 동작하기 때문이다. 이 개념은 날개셋 한글 입력기도 오래 전 6.X 후반 버전에서 두벌식 종성이라는 개념으로 뒤늦게 수용한 바 있다.

그런데 문제는.. 초성의 결합과 종성의 결합을 모두 지원하는 프로그램도 있다는 것이다.
초성과 종성의 구분이 없는 두벌식에서 ㅂ+ㅂ는 ㅃ, ㅂ+ㅅ는 ㅄ가 되면서 그 상태로 ㅏ를 누르면 각각 ‘빠’와 ‘ㅂ사’(ㅄㅏ가 아님!)가 된다.
내가 아는 프로그램으로는 새나루, 그리고 먼 옛날(2003년..)에 남북 합작으로 개발됐던 Unicode CJK IME도 이 범주에 든다.

사용자 삽입 이미지

이 동작을 날개셋으로 구현하는 건 가능할까?
결론부터 말하자면 가능은 하다.
하지만 이건 날개셋 한글 입력기의 내부 구조라는 관점에서 보면 초성 문맥이 갑자기 종성으로 널뛰기 하듯이 바뀌는 굉장히 예외적이고 변칙적인 동작이다. 그래서 평소에 잘 쓰이지 않는 설정을 많이 바꿔 줘야 한다. 이 글에서는 날개셋에서 “ㅃ빠”와 “ㅄㅂ사”의 입력이 모두 가능한 두벌식 입력 설정을 만드는 걸 실습해 보겠다.

먼저, “기본 글자판 설정” 빠른설정을 이용해서 종성 지향이 아닌 일반적인 두벌식 입력 설정을 세팅한다. 자음 처리 방식을 “성분별로 따로”로 지정하고, 쌍자음의 연타 입력은 “모두 허용”을 지정하도록 한다.

그 다음으로 우리가 할 일은 (1) 초성 문맥에서 ㄴ 다음에 ㅈ, ㅂ 다음에 ㅅ 따위가 입력됐을 때 조합 중인 글자를 초성이 아닌 종성으로 한꺼번에 바꾸는 것이다. 이건 글쇠배열 수식이 담당해야 한다. ㅅ의 경우, 수식은..

T<=1 ? D==1 ? H2|_GS|0xFFFA : D==36 ? H2|_RS|0xFFFA : D==86 ? H2|_BS|0xFFFA : H2|S_ : H2|_S

으로 가장 복잡하다. 원래 ㅅ만 초성 또는 종성 형태로 곱게 입력하는 T<=1 ? H2|S_ : H2|_S 라는 수식에서 초성 문맥에 대해

T<=1 ? {블라블라블라 ? XXXXX :} H2|S_ : H2|_S

이라는 항이 길게 추가된 것이다. ㅅ을 입력하는 자리에서는 ㄳ, ㄽ, ㅄ을 담당해야 해서 수식이 가장 길다.
입력된 글쇠의 초중종성 값은 A~C에 들어있고 현재 조합 중인 글자의 초중종성 값은 D~F에 들어있다. D의 값 1은 ㄱ을 나타내고 36은 ㄹ, 86은 ㅂ을 의미한다.

그때의 리턴값은 H2|_GS|0xFFFA 이런 꼴인데.. H2는 이 글자가 다음에 중성이 이어졌을 때 도깨비불 현상을 일으키고 초성 문맥으로 넘어가는 두벌식 한글임을 뜻한다. 그리고 밑줄로 시작하는 GS, RS, BS 같은 명칭은 종성을 뜻한다.
0xFFFA는.. 해당 성분, 여기서는 초성을 무조건 0으로 바꿔서 없애는 특수 낱자이다. 그래서 초성 ㄱ 다음에 이런 부류의 수식이 입력되면 종성 ㄳ으로 바뀔 수 있다.

이런 식의 변형을 ㄱ(ㄺ), ㅎ(ㄶㅀ), ㅁ(ㄻ), ㅂ(ㄼ), ㅈ(ㄵ), ㅌㅍ(ㄾㄿ)에 모두 해 줘야 한다. 가령, ㅈ 자리는 다음과 같다.

T<=1 ? D==12 ? H2|_NJ|0xFFFA : H2|J_ : H2|_J

이렇게 해 주면 날개셋에서도 초성 ㄴ 다음에 ㅈ을 입력했을 때 글자가 갑자기 종성 ㄵ으로 바뀌는 걸 볼 수 있다.
하지만 이 상태로 중성을 입력해도 ‘ㄴ자’가 되지는 않으며 중성이 지금 조합 중인 글자에 접수된다.

이걸 보정하려면 먼저 (2) 오토마타를 수정해 줘야 한다.
초성을 없애는 0xFFFA도 오토마타의 관점에서는 nonzero, nontrivial인 초성이다. 그렇기 때문에 초성 첫 타가 입력된 뒤인 1번 상태의 수식 A ? 1 : B ? 2 : C ? 3 : 0을..
A&&A<=255 ? 1 : B ? 2 : C ? 3 : 0

정도로 수정해 줘야 한다. 그래야 초성 입력만으로 ㄳㄵㄻ 등이 입력됐을 때, 오토마타의 상태가 종성인 3번으로 바뀌며 다음 중성이 현재 글자가 아닌 다음 글자로 가게 된다.

그리고 마지막으로.. (3) 특수 도깨비불 규칙을 수정해야 한다. (제어판의 ‘낱자 처리’ 탭)
이렇게 초성에서 종성으로 인위적으로 강제로 바뀐 겹받침은 한글 입력기의 관점에서는 입력 과정에서의 개연성이 파악되어 있지 않다. 즉, ㄳ을 ㄱ+ㅅ으로 분할해야 한다는 것을 알지 못하기 때문에 도깨비불 현상이 발생하더라도 ㄳ을 통째로 뒷글자 초성으로 보내 버린다. 이는 올바른 결과가 아니다.

그렇기 때문에 현대 한글 겹받침에 대한 규칙이 등록되어 있어야 하는데.. 이건 내정값을 살펴보면 ‘현대 겹받침’이라고 ㄳ부터 ㅄ까지 11개가 이미 등록된 게 있다. 그걸 불러오면 된다. 겹받침을 원래대로 종성 문맥에서만 입력한다면 기재할 필요가 없는데 초성 문맥에서의 입력 때문에 필요해진 것일 뿐이다.

이런 작업을 해 주면 날개셋에서도 두벌식의 초기 상태에서 초성 ㄲ와 종성 ㄳ을 동시에 처리할 수 있다.
왠지 좀 비효율적이고 삽질스러워 보이지만.. 날개셋의 현 체계에서는 이보다 더 깔끔하게 동일 동작을 구현할 방법은 존재하지 않는다. 초성이 갑자기 그렇게 종성으로 널뛰기로 바뀌어야 할 논리적인 근거가 없기 때문이다.

한글 입력기 중에는 두벌식과 세벌식, 그리고 현대 한글과 옛한글의 입력 로직이 프로그램 코드 차원에서 완전히 분리되어 있는 편이다. 마소 IME는 그럴 거라고 추정되며, 오픈소스인 libhangul도 그러하다. 그래서 초성에서의 종성 겹받침 결합이 두벌식 현대 한글을 위한 별도의 로직으로 구현돼 있다.

하지만 날개셋의 경우 두벌식이건 세벌식이건 모두 범용적인 동일 로직으로 처리되고, 초중종 성분별로 낱자 결합 규칙이 존재할 뿐이다. 그렇기 때문에 초성을 종성으로 갑자기 바꾸는 건 선뜻 수용 가능한 동작이 아니다.
뭐, 굳이 넣자면 초성만을 위해 0xFFF? 같은 특수한 의미를 갖는 코드값을 추가할 수는 있다. 하지만 내 프로그램에 그런 걸 넣지는 않을 것이고 그냥 이렇게 우회해서 동일 동작을 구현 '가능'하다는 것만으로 놔둘 생각이다.

이런 두벌식에 비해 세벌식은 도깨비불 현상 없고 한글의 모아쓰기 구조와 직관적으로 대응하기 때문에 입력 방식으로서 처리하기가 얼마나 편한지를 알 수 있다.
물론 초성과 종성에 같은 자음을 사용한다는 점 때문에 두벌식 사고방식이 편한 것도 있다. 하지만 현실에서는 초중종성을 한데 모은다는 특성을 살리는 게 더 편리하다.

Posted by 사무엘

2020/10/15 08:36 2020/10/15 08:36
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1808

독일의 V1, V2 로켓

V1, V2..;;
안 철수가 지금으로부터 30년 가까이 전에 만들었던 안티바이러스 유틸 V3의 전신(백신 1, 백신 2)의 명칭이었고,
비행기 파일럿에게는 이륙 결심 속도, 이륙 안전 속도라고 더 익숙한 용어일 것이다.

그런데 이건 나치 독일이 2차 세계 대전 말, 패색이 짙어져 갈 때 영국을 한방 먹이기 위해 거의 발악을 하며 개발했던.. 초창기 순항/탄도 미사일의 상품명(?) 코드명이기도 했다. 거기서 V는 승리가 아니라 보복 무기(Vergeltungswaffe)라는 뜻의 단어의 이니셜이다.;;

V1은 구조적으로 볼 때 날개 달린 비행기이고 무인 비행 폭탄이었다. 길고 복잡한 전용 발사대에서 양력을 이용해서 이륙하는 방식으로 발사됐다. 비행 속도는 600~700km 정도밖에 안 됐기 때문에 당시의 유인 전투기로 접근해서 날개를 툭 건드리는 것만으로도 떨굴 수 있었다.

사용자 삽입 이미지

그러나 V2는 날개 없이 추력만으로 수직 발사되고, 마하 5에 달하는 속도로 우주까지 날아갈 수 있는 로켓이었다. 얘는 당시 연합군의 기술로도 요격할 방법이 없었다. 그러니 날아오면 그냥 맞아야 했다..;;

사용자 삽입 이미지

V1과 V2 모두 1944년부터 45년 초까지 몇천 발씩 발사됐다. 하지만 그 당시 기술로는 비행체를 목표물을 향해 정밀 정확하게 무인 조종하고 유도하는 기술이 심하게 메롱이었기 때문에 적에게(=연합군) 유의미한 타격은 별로 못 줬다고 여겨진다.

오죽했으면 그때는 정말 위험천만한 급강하 폭격기까지 있었다는 걸 생각해 보자. 귀한 조종사를 써서 적함을 향해 그렇게까지 무모하고 위험한 기동을 해야만 폭탄을 정확하게 명중시킬 수 있었기 때문이다.

그리고 아직 유인 초음속기 같은 게 없고 전투기조차 프로펠러 왕복 엔진이던 시절에, V1은 나름 초보적인 수준의 제트 엔진(펄스 제트)을 내장하고 있었다. 쌔애액~ 피융 하고 날아갔지, 붕붕붕 털털거리지는 않았다는 뜻이다.

나치 독일은 패망했지만, V1/V2의 연구 개발을 담당했던 폰 브라운은 미국으로 스카웃 돼 갔다. V2의 구조는 훗날 인류를 달로 보낸 새턴 V 로켓에까지 계승됐다. (이때 V는 그냥 5의 로마 숫자 표기.. 맥OS X처럼.)

전후인 1946년 10월 24일, 브라운 박사 연구팀은 미국에서 V2 로켓을 다시 생산 후, 폭탄이 아니라 카메라를 장착해서 쏴 올렸다.
로켓은 성층권과 중간권을 벗어난 열권이며, 여객기 순항 고도의 10배에 달하는 105km 부근까지 올라갔다. 그리고 이 로켓은 인류 역사상 최초로 우주에서 지구의 둥근 윤곽을 찍은 흑백 사진을 남겨 줬다.

사용자 삽입 이미지

로켓이야 연료가 고갈된 뒤엔 다시 땅으로 자유 낙하했기 때문에 기체고 카메라고 뭐고 다 박살 났다. 허나, 철제 케이스에 담긴 필름은 다행히 손상 없이 무사히 지상에서 회수되어서 현상됐다. 그 덕분에 사진이 찍힌 게 전해질 수 있었다~! 한 장만 찍은 것도 당연히 아니고, 수 초 간격으로 수십, 수백 장을 찍었다.

이렇게 부분적인 모습 말고, 동그란 지구 전체가 한 화면에 담긴 최초의 사진은.. 지구의 대기권뿐만 아니라 중력까지 벗어난 먼 우주로 나간 뒤에야 찍을 수 있었다. 1968년 12월 말, 아폴로 8호에서 찍은 게 최초이다.
이렇듯, 우주 발사체와 군사 무기 미사일은 정말 발효와 부패의 차이만큼이나 본질이 완전히 동일하고 종이 끗발 하나 차이에 지나지 않는다.

그리고 나치 독일은 2차 대전 당시에 미사일 비스무리한 거 만들었지, 잠수함 만들었지, 야전용으로 세계에서 가장 큰 탱크도 만들고 세계에서 가장 거대한 열차포도 만들었다.
독일의 과학 기술은 정말 대단하다. 단지, 그게 미국 같은 풍부한 자원과 체계적인 품질 관리 및 제품 양산 시스템으로 이어지지 못했을 뿐이다.

그 동안 일제는 해전용으로 세계에서 가장 큰 전함을 만들었다(야마토). 일제는 독일 같은 미사일까지는 미처 못 만들고, 소박하게 폭탄 풍선을 띄워서 미국 서부의 상공까지 날려 보내고 터뜨리려 한 적은 있다.;;;

그때 일본이 대형 전함과 항공모함, 함재기를 만든 것은 임팩트가 굉장히 크지만, 잠수함을 만들고 이걸로 미국 군함을 격침시키기도 했다는 것은 존재감이 상대적으로 작게 느껴진다. 같은 시기에 잠수함은 아무래도 일본이 아니라 독일의 유보트가 본좌였기 때문이기도 했을 것이다.

여담: 머피의 법칙

머피의 법칙이라고 "하필 내가 관람을 하는 경기는 꼭 지더라, 세차를 하고 나면 반드시 비가 오더라"처럼.. 세상 만사가 꼭 재수없는(?) 쪽으로만 골라서 일어난다는 징크스를 표현한 경험 법칙이 있다.
그런데 자기 이름을 따서 이 법칙을 최초로 제안한 미국의 에드워드 머피(1918-1990)라는 사람은 심리학자나 사회학자가 아니었다. 군 소속의 항공우주 공학자였다~!

그는 1949년, 비행기가 왕복 엔진에서 제트 엔진으로 넘어가던 그 시절에 최첨단 기술의 산물이던 초음속기를 연구 개발하는 팀에 소속돼 있었다. 레일 위에서 로켓 엔진이 달린 수레 열차를 굴리면서 인체가 강한 중력가속도를 얼마까지 견딜 수 있는지를 측정했는데, 결과값이 제대로 나오지 않았다.
그 원인을 조사해 보니.. 대수롭지 않게 여기고 별 통제 없이 넘겼던 조건들이 "그런데 그것이 실제로 일어났습니다" 수준으로 몽땅 다 엉망진창 상태이기 때문이었다.

그래서 머피의 법칙은 "항상 최악의 경우를 고려해야 한다, 방심하면 일이 꼬이고 사고가 반드시 난다" 6-sigma라든가 하인리히 1:29:300 법칙처럼 공동 작업을 하는 현장에서 품질 내지 산업 안전 쪽으로 적용 가능한 건전한(?) 법칙이다.
그저 자조적인 "재수 없는 놈은 뒤로 넘어져도 코가 깨지더라 / 우린 안 될 거야 아마" 같은 염세 허무주의 메시지를 의도한 게 아니다. 전해지는 말에 따르면 머피 아재는 자기 법칙이 자기가 전혀 의도하지 않은 의미로 주변에서 너무 오남용되는 걸 보고 안타까워했다고 한다.

본인은 DJ DOC 노래를 통해서 저런 법칙이란 게 있다는 걸 처음으로 접했다.;; ㅋㅋ

Posted by 사무엘

2020/10/13 08:35 2020/10/13 08:35
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1807

본인에게 30여 년 전의 어린 시절부터 친숙했던 비디오 게임 장르는 액션/아케이드 계열이다. 사람 주인공을 화살표 키로 움직이고, 장애물을 직접 뛰어넘고 적을 공격하는 형태 말이다.
그것 말고 다른 장르는 생소했다. 그나마 전략 시뮬은 듄, 워크래프트, 스타 때문에 알게 됐다. 그 전에 삼국지 같은 건 실시간이 아니라 턴 기반 전략 시뮬이었던가 보다.

롤플레잉은 내가 즐겨 하지는 않았지만 주변 친구 중에 좋아하는 사람이 워낙 많았기 때문에 알음알음 접했다. “RPG 쯔꾸르” 같은 툴로 자기가 직접 시나리오를 짜서 게임을 만드는 경우도 있었다. 그런 툴은 정교한 트리거 편집 기능을 갖춘 스타 캠페인 에디터보다도 customize의 자유도가 더 높고, 그렇다고 아예 코딩을 직접 해야 하는 게임 엔진 SDK보다는 폭이 좁은 수준인 것 같다.

그럼.. ‘어드벤처’라는 장르는? 잘 모르겠다. 남이 하는 것도 거의 못 봤다. 그 이름도 유명한 “인디아나 존스”, “원숭이 섬의 비밀”이 이 장르라고 하나.. 본인은 1990년대 컴퓨터 잡지를 통해 이름만 들어 봤지 해당 작품을 당대에 직접 구경해 보지 못했다.
다만, 본인의 기억에 남아 있는 건 1992년 말, 초딩 시절 모 컴퓨터 잡지에서 봤던 “어둠의 씨앗”(Dark Seed)라고 640*350 EGA에서 실행됐던 독특한 게임이다.

요런 게임은 주인공을 화살표 키를 누르는 게 아니라 마우스로 화면에 표시된 목적지를 찍어서 이동시킨다. 실시간 3D 그래픽이란 게 없던 관계로, 화면은 그냥 방 단위로 바뀌며, 모든 그래픽은 그냥 도트 스프라이트이다.
하지만 방 안에서 원근법이 구현돼 있기 때문에 카메라에서 멀어지면 주인공의 겉보기 크기도 작아진다. 게임이 실제로 돌아가는 모습은 먼 훗날 유튜브를 통해서나 구경할 수 있게 됐다.

사용자 삽입 이미지

그랬는데 그로부터 3년쯤 뒤인 1995년에는 ‘시에라 온라인’이라는 게임 개발사에서 Phantasmagoria(판타즈마고리아)라고.. 읽기도 힘들어 보이는 대작 어드벤처 게임을 내놓았다. 장르는 호러..;;

귀신 나오는 haunted house에 주인공이 들어가서 문제를 해결하는 것, 한 화면에서 주인공을 클릭 해서 이동시키는 것 등 전반적인 UI와 느낌은 어둠의 씨앗과 아주 비슷해 보였다.
하지만 얘는 온통 인게임 시네마틱으로 가득하며, 주인공 이동도 전~부 블루스크린 치고 영화 스튜디오에서 실사 촬영한 스프라이트로 구현했다..;; BGM 중에는 합창단 코러스도 있고.. 그야말로 반쯤 영화, 반쯤 게임을 표방한 듯하다.

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

지금이야 인게임 컷씬쯤은 몽땅 3D 엔진으로 처리했겠지만 저 때는 그게 가능하지 않았다. 그리고 비록 실사 추출 스프라이트라고는 하지만 겨우 256색 저해상도 비디오에서 많은 걸 바랄 수는 없다. 그저 그런 화질에다 배경과 스프라이트가 제대로 융합되지 못하고 붕 뜬다. ㅎㅎ

압축도 빡세게 하기 어려웠는지 저 게임은 7개 챕터(레벨)에 서너 시간 남짓한 플레이 분량임에도 불구하고 CD 7장..;; 분량이었다. 디스켓을 갈아 끼우듯이 CD를 갈아 끼워야 했다.
25년 전의 가정용 PC 환경이 그만치 열악했다. 그리고 실사 영상을 후처리해서 깔끔하게 256색용 스프라이트로 만드는 건 굉장히 노동집약적이며 쉬운 일이 절대 아니다.

기술 얘기가 좀 길어졌다만, 이 게임은 주인공이 나름 미녀이다(단, 유부녀). 나중에는 남편이 악마가 빙의하여 맛이 가 버리고, 주인공을 형틀에 묶어서 죽이려 한다. 우리의 주인공은 양손이 몽땅 결박당하기 전에 기지를 발휘해서 정당방위 차원에서 그 남편을 죽이고 초췌한 모습으로 집을 빠져나가게 된다. 이게 게임의 스토리이다.

사용자 삽입 이미지

얘는 기술적으로 꽤 근성어린 시도를 했지만, 스토리는 꽤 허접 빈약하고 남는 건 잔혹한 호러 컨텐츠밖에 없다면서 논란을 일으켰다. 똘끼어린 문제작 취급을 받긴 했어도 그래도 당시에는 유명세를 타서 물건이 많이 팔리기도 했다고 한다. 수지가 맞았으니 후속작까지 나올 수 있었다.

작중 주인공의 이름은 에이드리언(Adrienne)이다. 같은 발음이 스펠링을 저렇게 쓰면 여자 이름이 되고, Adrian이라고 쓰면 남자 이름이 되는 것 같다(에이드리언 카맥.. 남자). 실제 배우는 Victoria Morsell인데.. 그냥 무명 배우이고 현재까지 이쪽 일을 하지는 않는 것 같다.

Dark seed의 경우, Mike Dawson이라는 주인공 이름과 정체성을 개발자 자신에게서 그대로 따 온 반면, 저 작품은 그리하지 않았다.
Beyond: Two Souls (2013)이라는 게임에서는 유명 배우 엘렌 페이지의 얼굴을 차용한 주인공이 등장하지만, 3D 폴리곤 모델이지 옛날 같은 실사 스프라이트는 아니라는 차이가 있다.

이런 엄청난 게임을 기획한 사람은 시에라 온라인의 공동 창업자인 윌리엄스 ‘부부’ 중.. 남편 말고 부인인 Roberta Williams였다. 이 사람이 정말 여장부였던 것 같다. 평범한 주부이다가 갑자기 게임 기획 쪽으로 각성해서 90년대 어드벤처 장르의 여왕으로 등극했다.
판타즈마고리아 게임의 잔혹한 고어 묘사에 대해서도.. 우리 게임은 동시대의 Doom이나 Mortal Kombat 시리즈에 비해 그렇게 심할 것 없다면서 쿨한 반응을 보였다.

이들 부부는 결혼을 일찍 했고 소싯적에 게임 개발로 성공해서 돈도 많이 번 덕분에.. 2010년대에는 은퇴해서 여기 저기 크루즈 여행을 다니며 풍족한 노후를 보내고 있댄다. 누구처럼 아예 우주로 나간 정도까지는 아니지만, 어디 어설픈 사업이나 투자하다가 먹튀 하고 몰락하는 것보다는 나은 모습인 것 같다.

판타즈마고리아 이야기가 너무 길어졌구나.. 이걸 근성으로 플레이 하고 컷씬들의 대사와 스토리 진행을 리스닝만으로 친절하게 요약해 놓은 블로그 글이 있으니 관심 있는 분은 참고하시기 바란다. 저 게임 자체는 불친절하게도 자막이 나오는 게 없다.

마지막으로 하나 더 소개하고 싶은 게임은 왕년에 페르시아의 왕자로 스타 개발자에 등극했던 조던 메크너가 기획하여 1997년 초에 내놓은 또 다른 문제작 Last Express이다.

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

얘는 3인칭이 아니라 1인칭 구도이다. 물론 3D 엔진 기반인 건 아니지만 시점이 그렇다는 것이다.
그리고 배경은 1914년 7월, 1차 세계대전이 일어나기 직전의 파리-이스탄불 오리엔트 급행 열차이다. 메크너 아재가 그 시절의 열차 인테리어와 운행 시각표까지 찾아가며 고증을 꼼꼼히 신경 써서 만들었다고 한다.

그리고 더 중요한 특징으로, 얘는 페르시아의 왕자 시절부터 로토스코핑 덕후였던 제작자의 취향이 고스란히 반영되었다.
위에 보다시피 모든 그래픽이 만화영화풍의 그림인데.. 전부 실사 영상을 본따서 디자이너들이 별도의 그림을 그린 것이다. 이 때문에 실사 사진을 보정하는 것 이상으로 많은 시간과 제작비가 소모되었을 것이다. 얘는 CD 3장 분량이었다.

얘는 전무후무하게 참신한 실험 시도로 인해 작품성과 비평 쪽으로 수작.. 혹은 긍정적인 의미로의 문제작 칭호를 받았다. 팔리기도 10만 카피 정도 팔렸다. 하지만 이건 수 년 동안 너무 많이 소모되었던 제작비를 건지기에는 역부족이었기 때문에 상업적으로는 흥행에 실패했다. 다만, 이렇게 된 것에는 제작사가 상황이 안 좋아서 제품의 홍보와 마케팅을 제대로 못 한 잘못도 있었다고 한다.

이상이다.
요약하자면, (1) 3D 없이 재래식 기술만으로 (2) 통상적인 액션/아케이드/롤플레잉 장르가 아니면서 (3) 영화 같은 서사와 스토리텔링을 집어넣은 어드벤처 게임이라는 주제로 몇 가지 대작 작품을 살펴보게 됐다.

그러고 보니 옛날에는 소설인데 1부터 N까지 수십 개의 짤막한 섹션으로 구성되어 있고, 각 섹션의 끝에는 “이 사람의 제안에 어떻게 반응하시겠습니까? ‘예’는 x번으로 가시오. ‘아니요’는 n번으로 가시오” 분기로 가득한 멀티엔딩 형태의 책도 있었던 것 같다. 이건 반쯤 게임, 반쯤 소설인 건지?
작가가 이런 거 만드는 게 굉장히 복잡하고 어려웠을 텐데 나름 참신한 구성이었다.

Posted by 사무엘

2020/10/10 08:35 2020/10/10 08:35
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1806

« Previous : 1 : ... 51 : 52 : 53 : 54 : 55 : 56 : 57 : 58 : 59 : ... 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:
3046322
Today:
1542
Yesterday:
1972