« Previous : 1 : ... 42 : 43 : 44 : 45 : 46 : 47 : 48 : 49 : 50 : ... 215 : Next »

서대문 자연사 박물관

본인은 지금까지 개인적으로 서울· 수도권에 있는 각종 역사 박물관(서울시, 대한민국, 한양도성..), 박 정희 대통령 기념관, 철도 박물관, 수도 박물관 등을 가 봤지만, 이들과 성격이 사뭇 다른 이색적인 박물관은 비교적 최근에야 가 보게 됐다. 바로 서대문 자연사 박물관이다.

수 년 전에 학교 뒷산인 ‘안산’(무악산) 등산을 하면서 이정표를 통해 이런 게 있다는 걸 우연히 접했었다.
서울에 있는 25개의 구 중에서 서대문구는 강서구와 더불어 구청이 지하철역 연계가 제일 안 되는 외진 곳에 있다. (‘서’짜가 붙은 구만 왜 이러는지 원.. ㄲㄲㄲ) 그리고 그 서대문 구청과 그리 멀리 떨어지지 않은 곳에 자연사 박물관이 있다.

얘는 ‘서대문’이라는 명칭에서 유추할 수 있듯, 국립이 아니라 시립이다. 이런 주제의 박물관은 국내에 매우 드물다.
본인은 중고딩 시절 이후로 수십 년 동안 맥이 완전히 끊어졌던 지구과학 시간, 그리고 1995~96년 사이에 매우 재미있게 봤던 “생명 영원한 신비” 다큐의 추억을 떠올리면서 즐거운 시간을 보냈다. 작년 말, 중공 폐렴이 3차 대유행을 일으키기 직전에 각종 공공장소들이 잠시 숨통을 트고 제한적이나마 개관을 했던 시절의 일이다.

사용자 삽입 이미지

들어가 보니 공룡만 있는 게 아니더라. 더 흥미로웠다.
박물관은 3층에서 우주와 지구의 역사를 다루고, 2층에서 생물의 역사, 1층에서 자연과 환경을 다루는 구조이다. 1층에는 카페, 도서관, 독서실도 덤으로 갖추고 있었다.
이 블로그에서는 박물관의 모든 전시물을 일일이 소개하는 게 아니라, 본인이 인상 깊게 봤고 코멘트 할 만한 아이템만 선별적으로 다룰 것이다.

사용자 삽입 이미지

이것들 말고도 큐리오시티(화성), 매리너 10호(금성과 수성), 마젤란(금성), 국제 우주 정거장(지구..;;), 아폴로 11호 LM(달~!)도 이런 식으로 소개돼 있어서 흥미로웠다.

전쟁은 스타크래프트가 아니고, 우주 여행도 스타크래프트 레이쓰나 배틀크루저처럼 할 수 있는 게 아니다. 혼자서 비행선과 비행기와 로켓 역할을 다 하는 비행체 같은 건 존재하지 않는다.
현실의 우주선들은 전혀 항공역학적이지 않은 모양으로 생겼다는 것이 핵심이라 하겠다.

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

우주의 기원에 대해서 현재 정설로 통용되고 있는 대폭발설과 우주 배경 복사가 그림과 동영상으로 소개되어 있었다.
무슨 원동력으로 끊임없이 팽창하는지는 모르겠지만.. 우주가 계속해서 팽창하고 있어야만 사방의 무수히 많은 별들로부터 날아오는 빛 중에 지구에 절대 도달하지 못하는 빛의 구분이 생기고, 덩달아 지구에 낮과 밤 구분도 실제로 존재 가능해진다.

본인은 우주의 나이 138억 년, 지구의 나이 45억 년이 크게 잘못됐다고 생각하지는 않는다. 다만, 현 세상 인류의 연대기는 아담 이래로 6천여 년이라고 생각하고, 이전 세상과 현 세상의 간극을 믿는다.
그리고 대폭발설은 동의하지만, 폭발의 결과로 지구 같은 정교한 행성과 생명체가 아무 지적 설계 없이 우연히 만들어졌다고는 물론 믿지 않는다.

사용자 삽입 이미지

태양계의 행성이 소개돼 있다. 외행성 중에 천왕성과 해왕성이야 보이저 2호 이래로 업데이트의 여지가 없지만, 명왕성은.. 아직도 상상도가 뭐냐? 뉴 호라이즌스가 명왕성을 다녀간 지가 벌써 5년 전 일인데.. 업데이트가 너무 안 된 게 아쉽다.

사용자 삽입 이미지

단층, 절리, 부정합 같은 단어는 기억에 남아 있지만 '습곡'은 정말 몇십 년 만에 다시 듣는다.
그러고 보니 옛날에 지층 그림을 보면서 샌드위치 생각이 유난히 많이 났었다. ^^

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

광물들이 참 예쁘다. 중학교 때 이런 거 실물이라도 볼 기회가 좀 있었으면 돌 이름들 암기하는 재미가 더 났을 텐데 말이다.
성경에 나오는 벽옥이니 자수정이니 하는 보석 이름들도 직접 보면 이해에 훨씬 더 도움이 될 것이다.

사용자 삽입 이미지

스타크래프트 미네랄은 자수정에서 모티브를 딴 것이 분명하다.

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

화성암, 변성암, 퇴적암 삼총사이다.
퇴적암 지층은 요즘 셰일 가스라는 명목으로 석유의 산지로 재조명 받고 있다.

사용자 삽입 이미지

이제 생물편이다. 트리케라톱스의 거대한 머리뼈가 먼저 날 반겨 주었다.
이 공룡은 Kung Fury 영화 덕분에 내게도 친숙했다. 거기서는 트리케라톱스가 아니라 트리케(세)라캅스가 나오니까~~ ㅋㅋㅋ
트리케라톱스는 초식 공룡 중에 제일 험악하고 호전적으로 생긴 놈으로, 영락없이 코뿔소의 공룡 버전이라 하겠다. 아 뭐, 뿔 자체가 콧등에 달린 건 아니지만...

사용자 삽입 이미지

아 그러고 보니 삼엽충과 암모나이트가 은근히 구분이 되지 않았었다.
대멸종이 공룡을 멸종시킨 중생대 말기의 그 멸종 말고도, 선캄브리아기인가 고생대 말인가 그때도 한번 있었다.

사용자 삽입 이미지

이건 “생명 영원한 신비” 화면을 거의 그대로 재구성한 것 같다. 아노말로카리스를 실물 그림으로 구경하게 되다니~!
“생명 영원한 신비”는 生命이라는 한자가 꽝~ 박히는 오프닝 CG가 참 인상적이었다. 일본에서 만들었으니 한자가 나오지, 미국· 유럽 제작이라면 저런 화면이 나오지 않았을 것이다.

그리고 오프닝 주제곡좀 개량해서 찬송가 가사 같은 거 붙일 수 없을까 하는 생각을 개인적으로 오래 전부터 해 왔다. “어찌하여야”--후렴에 “하나님께 영광”이 반복해서 나오고 박 종호 같은 성악가가 부르면 딱이겠다 싶은 그 곡.. Andrae Crouch의 My Tribute--와 비슷한 느낌이 들지 않는가? 표절이란 게 아니라 분위기/풍이 비슷하다고 말이다. 두 곡을 모두 아는 분이라면 한번 생각해 보시라.

사용자 삽입 이미지

스테고사우루스는 덩치가 산만 하고 등에 저런 조각들이 많이 달려 있는 한편으로 머리는 엄청나게 작다.;;
여기서 별도로 소개하지는 않지만, 두개골이 아주 두껍고 단단해서 박치기를 즐기는 공룡도 있으며, 이족 보행을 하는 공룡도 있다.
티라노사우루스는 앞발이 너무 작아 보이는데 실생활에서 무슨 쓸모가 있었나 모르겠다.

사용자 삽입 이미지

관점이 창조이건 진화이건 무관하게, 공룡이라는 동물이 과거에 존재했다는 것 자체는 팩트이다.
신이 옛날에 공룡을 잔뜩 만들어서 인간의 역사 기간보다 훨씬 더 오랫동안 굴리고 화석으로도 남겨 놓으신 이유는.. 아무리 생각해도 어린애들 동심을 자극하기 위해서임이 틀림없다. 꼬마들 중에 공룡 안 좋아하는 애를 내가 지금까지 별로 못 봤다. 나부터도 초딩 시절에 공룡에 환장했던 시절이 있었다. -_-;;

밤 하늘에 겨우 1픽셀짜리 도트 하나 차지하라고 지구보다 훨씬 더 큰 수소 핵융합 가스 덩어리를 셀 수 없이 많이, 그것도 엄청난 옛날부터 까마득히 먼 거리에 배치해 놓지도 않았는가? 하나님의 스케일이라면 공룡도 그런 목적을 위해 이런 식으로 창조하는 게 얼마든지 가능하다. 못 할 이유가 없다.

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

성경의 진술에 따르면, 고래는 이전 세상에서 존재하지 않았고 현 세상에서 새로 창조된 놈이다(창 1:21). 즉, 이전 세상에서도 있었다가 현 세상에서 다시 창조된 실러캔스하고는 다르다는 것이다.
그래서 그런지 고래 중에서 대왕고래(흰긴수염)는 지질 시대 전체를 통틀어서 지구상에서 가장 거대한 동물이면서 어류가 아닌 포유류이다. 또한 고래는 지능이 매우 높고 종 차원에서 사람과도 이례적으로 친숙한 등의 독특한 특성을 지니고 있다.

이런 고래도 진화 계보가 있다는 것은 다른 여느 동물의 내력과 달리 내게는 더 큰 의미를 지닌다. 고생대· 중생대 같은 까마득히 먼 옛날이 아니라 비교적 가까운 신생대가 성경의 진술과 충돌할 여지가 더 많다.

사용자 삽입 이미지

고래 다음으로 인간도 말이다. 이건 아무래도 신의 인간 창조를 믿는 사람과 그렇지 않은 사람의 입장 차이가 가장 클 수밖에 없는 분야이다.
내 견해는.. 그냥 똑 같은 사람이 아니라면 이전 세상에 살았던 인간 비스무리한.. 그러나 현행 인간과 유전적으로도, 영적으로도 아무 관계 없는(특히 구원 계획) 휴머노이드 생물이다.

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

  • "하나님께서 이르시되, 물들은 생명이 있어 움직이는 창조물과 땅 위 하늘의 열린 궁창에서 나는 날짐승을 풍성히 내라, 하시고.." (창 1:20)
  • "하나님께서 이르시되, 땅은 살아 있는 창조물을 그것의 종류대로 내되 가축과 기는 것과 땅의 짐승을 그것의 종류대로 내라, 하시니 그대로 되니라." (창 1:24)

그래서 common designer이냐, common ancestor이냐의 논쟁은 오늘도 끝이 나지 않는다..;;
사실, 생명이 무에서 저절로 생기는 것하고, 생물이 계속해서 분화하고 종이 바뀌는 것은 서로 별개로 살펴봐야 하는 문제이다. 그리고 생명이 탄생한 것하고 그 전에 지구가 이렇게 절묘한 환경을 갖춘 살아 있는 행성으로 짠 만들어진 것도 역시 별개로 살펴봐야 하는 문제이다.
박물관 소개는 이 정도로 하고자 한다. 자연에는 신비로운 것이 정말 많다는 생각이 들었다.

Posted by 사무엘

2021/01/15 08:35 2021/01/15 08:35
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1843

* 예전에 이미 언급했던 아이템들도 좀 있지만 도로 철도 항공 몽땅 한데 통틀어서 나열해 보면 다음과 같다.

1. 단선 터널

육상 교통수단에서 단선이란 건 선로를 따라 매우 정교한 신호와 통제가 가능한 철도에서나 가능한 일로 여겨진다. 그리고 요즘은 철도도 교통량이 아주 적은 곳이 아니라면 최소한 복선으로 만드는 게 기본이다. 철도가 넘사벽의 접근성을 자랑하는 자동차와 경쟁해서 이기려면 자동차로 도저히 불가능한 고속 대량 수송에 올인해야 하는데, 그건 단선과는 전혀 어울리지 않는 구도이기 때문이다.

하지만 과거에는 상황이 달랐다. 자동차가 지금보다 훨씬 적었고, 도로를 닦는 기술과 자본도 부족하다 보니 도로에 지금 같은 엄격한 상· 하행 구분이나 차량과 보행자의 구분 자체가 별로 돼 있지 않았다. 일제 시대만 해도 경성 시내 도로에 깔끔하게 중앙선과 차선이 그어져 있고 신호등이 설치된 것을 내가 본 기억이 없다. 노면전차 때문에 공중에 전차선들만 어지럽게 늘어서 있었을 뿐..

그래서 지금으로서는 정말 믿기 어렵지만, 자동차 도로 터널이 겨우 1차로로 만들어진 게 있다. 짤막한 굴다리 수준이 아니라 나름 600m가 넘는 길이이며, 일방통행도 아니고 상· 하행 공용인 게 말이다.
2020년 현재 국내에는 딱 두 곳이 있는데, 하나는 여수의 '마래 터널'(현재는 정확히는 마래 제2 터널로 개칭)이고, 다른 하나는 울릉도의 '통구미 터널'이다.

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

이 터널의 입구는 교차로나 횡단보도 따위가 없어서 그냥 직진만 하면 됨에도 불구하고 신호등이 있다. 한쪽에 차량이 진입했으면 맞은편에서는 차량의 진입을 막아야 한다.
자동차 도로가 이렇게 되는 건 보통은 왕복 2차로 도로에서 차로 하나가 사고나 공사 때문에 막혔을 때일 것이다. 이때는 현장의 인부가 일정 주기로 상행과 하행의 통행을 허용하면서 교통을 정리하는 편이다.

그런데 터널이 통째로 1차로인 건.. 무려 1920년대의 여건 하에서 산의 암반을 힘겹게 뚫어서 차로 하나만 개통시킨 것만으로도 감지덕지 해야 했기 때문이다.
마래 터널은 단면이 철도 터널처럼 생겼으며 마침 전라선 구선로(여수 엑스포에 맞춘 복선전철화 이전)도 근처를 지난다. 그러니 마래 터널이 전라선 철도의 진짜 오리지널 구간이 아니었나 하는 의문도 든다만.. 그렇지는 않은 것 같다.

자동차용 터널 중에 이런 비좁은 물건이 있는 게 흥미롭지 않은가..?
참, 여담이지만 인터넷으로 찾아 본 바에 따르면, 울릉도는 모든 도로가 시멘트로만 포장돼 있고 아스팔트 포장은 없다고 한다. 도로가 처음으로 포장되던 시절에 아스팔트 포장을 위한 중장비를 거기까지 동원하는 건 여러 모로 어려웠기 때문이다.

2. 2차로 고속도로

우리나라에서 고속도로라는 건 통행료를 내야 이용 가능한 대신, 평면교차가 없고 보행자도 없고 길이 가장 곧고 상태가 좋아서 차가 가장 빠르게 달릴 수 있는 최고급 도로이다.

요즘은 지방에 국도도 중앙분리대를 갖추고 고속도로 못지않은 고속 주행이 가능한 고퀄이 적지 않다. 하지만 그것들도 시내로 들어가면 다시 신호를 받기 시작하며 지속적으로 빠르게 달릴 수 없다.
그리고 상하 구배나 커브가 레알 고속도로보다는 아무래도 더 급격하다. 운동 에너지라는 게 속도의 '제곱'에 비례하는 만큼, 시속 80 기준 설계와 100/110 기준 설계의 차이는 생각보다 크다.

그런데 이렇게 도로의 끝판왕이라고 불리는 고속도로가 겨우 왕복 2차로라면..?? 그 도로는 제대로 추월을 할 수 없으며 사실상 고속도로라고 부를 수 없을 것이다.
하지만 우리나라엔 역사적으로 왕복 2차로의 열악한 반쪽짜리 고속도로가 존재했으며 비단 우리나라만 그런 것도 아니었다.

  • 영동 고속도로의 강원도 구간은 20세기까지 아예 국도/고속도로 공용을 표방하는 막장 2차로 산길 형태였다. 그러다가 2001년이 돼서야 지금과 같은 깔끔한 새 길이 완공됐다.
  • 우리나라 최후의 왕복 2차로 고속도로는 잘 알다시피 88 올림픽 고속도로였다. 하지만 2015년에 전구간이 4차로인 대구광주 고속도로로 리모델링 됐다.
  • 중앙 고속도로는 나름 장거리 횡축 간선인 주제에 2차로 형태로 건설되고 있다가 뒤늦게 4차로로 다시 만들어졌다.

그래서 2020년 현재, 우리나라는 수십 km 이상 간선 고속도로 중에 2차로짜리는 완전히 전멸했다. 그나마 남아 있는 건 제2경인 고속도로에서 인천대교로 이어지는 학익-옥련 사이의 아주 짤막한 구간, 그리고 151번 고속도로의 말단인 동서천 IC-동서천 JC 구간이다. 간선이 아니라 고속도로 연결선에 가까운 자동차 전용 도로일 뿐인데.. 법적인 이점을 얻기 위해서 명목상 고속도로라고 등재해 놓은 듯하다.

어떤 도로가 고속도로라면 한국 도로 공사 관할이겠지만, 그렇지 않으면 해당 지자체의 관할이 된다. (경부 고속도로 vs 양재IC 이북의 경부 간선 도로의 차이처럼..)
그리고 고속도로의 주변 부지는 다른 도로의 주변에 비해 개발 제약이 더 심하기 때문에 지금 미리 고속도로라고 찜해 놓는 게 나중에 이 도로를 확장하는 데 더 유리하게 된다.

3. 철도

(1) 신호(재래식 통표 폐색): 정선선의 끄트머리인 정선-아우라지가 최후의 보루이다. 정선선은 20여 년 전에 비둘기호의 최후의 보루였는데 이제는 통표 폐색 방식을 마지막까지 간수하고 있나 보다.
여기 말고 전라선 모 구간에서 2000년대까지 아직 통표가 쓰이는 곳이 있었다고 하지만.. 복선 전철화가 모두 완료되면서 옛날 이야기가 됐다. 호남선은 주요역 위주로 호남고속선이 새로 깔렸지만 전라선은 본선 자체가 준고속선으로 개량됐다는 차이가 있다.

(2) 오르막 급경사(인클라인/스위치백): 영동선 통리-심포리 구간이 전국 유일의 스위치백 구간으로 잘 알려져 있었으나, 이미 2012년에 루프식 터널(솔안 터널)로 바뀌면서 역사 속으로 사라졌다. 전국에 루프식 터널은 내가 알기로 중앙선에 두 곳(치악), 함백선, 그리고 저기 저렇게 총 네 곳 있다.

(3) 기관차 방향 전환: 증기 기관차 시절의 엄청 옛날 이야기이다만, 그때는 서울에서 출발한 열차들이 대전에서의 정차 시간이 꽤 긴 편이었다. 호남선이 서울 방면과 곧장 연결돼 있지 않았기 때문에 호남선과 전라선 열차는 대전에서 기관차를 열차의 뒤쪽으로 바꿔 달아야 했다. 그리고 경부선 열차라 해도 어차피 150km 정도 달린 뒤에는 물 보급이라든가 기관차 상태 관리 때문에 10분이고 20분이고 쉬어 줘야 했다.
대전 역이 우동(가락국수)으로 유명해진 이유가 이 때문인 것은 이미 다들 아실 것이다. 호남선에서 서울 방면으로 곧장 진입 가능해진 것은 1978년에 호남선 북쪽 구간이 복선화된 뒤부터이다.

(4) 나무 침목, 자갈밭과 레일 이음매: 우리가 철도 선로에 대해서 흔히 생각하는 이 모습조차도 이제 역사 속으로 사라지고 갈수록 보기 힘들어지고 있다. 요즘은 그냥 다 하얀 시멘트인지 콘크리트인지 노반이 침목과 자갈 역할을 다 하고 있다. 교량이고 평지고 터널을 가리지 않고 말이다.
도로는 시멘트 포장과 아스팔트 포장이 장단점이 있어서 현재까지 모두 쓰이고 있지만, 철도는 뭔가 획일화가 되고 있는 모양이다.

4. 비행기

(1) 엔진 수: 기술의 발전 덕분에 요즘 여객기는 어지간해서는 쌍발 엔진만으로 다 커버되는 단계에 이르렀다. 3발기는 이미 수십 년 전부터 보기 힘든 퇴물이 됐으며, 4발기도 2010년대부터 대형 비행기(A380, 747..)들이 몰락하면서 갈수록 보기 힘들어질 전망이다.

(2) 앵커리지 중간 기착: 과거에는 비행기의 항속거리가 지금만치 길지 못했기 때문에 한국에서 미국까지(서부· 동부 불문) 직통으로 갈 수 없었다. 이 때문에 미국 본토까지 미묘하게 덜 간 알래스카 앵커리지가 중간 기착 허브로 굉장히 각광을 받았다. 과거의 한국 철도에다 비유하자면 저기가 마치 대전 역의 비행기 버전 같은 지위에 오르기라도 한 것 같은데..
한국-미국 직통 비행이 가능한 보잉 747-400이 1990년대에 등장하면서 앵커리지의 명성은 퇴색하기 시작했다.

(3) 항로 안내: 지금이야 GPS라는 게 자동차와 개인 스마트폰에도 다 들어있어서 지도와 현재 위치 표시 서비스(내비게이션)가 너무나 자연스럽게 제공되고 있지만.. 과거에는 그렇지 않았다.
여객기에 기장· 부기장에다가 항공기관사와 항법사까지 조종실에 탑승했다는 게 믿어지지 않는다. (훗날 항법사가 항공기관사에 흡수되고, 더 나중엔 후자까지 없어짐) 게다가 항로 측정에 착오가 생겨서 적성 국가 영공에 잘못 들어갔다가 여객기가 격추 당한다니... 이것도 지금이야 소설 같은 일이지만 1980년대에는 "그런데 그것이 실제로 일어났습니다"였다.

Posted by 사무엘

2021/01/12 19:35 2021/01/12 19:35
, , , , , , ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1842

러일 전쟁

밀덕 역덕에게 2차 세계 대전(태평양 전선 또는 서부 전선, 독소 전쟁 따위)은 아주 친숙할 것이고 한국 한정으로 6· 25도 친숙할 것이다. 그에 비해 러일 전쟁은 인지도가 상대적으로 낮다.

하지만 일본이 1905년에 한반도에 경부선 철도를 완공하고, 을사조약까지 체결해서 조선을 완전히 병탄하던 당시에... 대외적으로는 무슨 짓을 하고 있었고 내부의 사정이 어땠을까? 이를 알아보는 것도 매우 흥미롭다. 이때의 일본은 훗날 1940년대의 일본과는 여러 모로 다른 분위기였기 때문이다.

(1) “203고지” 같은 그 시절 영화를 보니, 러일 전쟁 당시에는 일본군이 군복이 검정이었다. 완전 생소하게 느껴지며 적응이 안 된다. 우리에게 익숙한 일제 시대 황록색 군복은 공교롭게도 딱 1910년대 초반부터 도입됐다.
뭐, 19세기 말에는 심지어 대한제국군의 군복조차도 검정이었으니 그 당시에 블랙이 세계적인 유행이었나 보다. 이때가 총기의 발달로 인해, 군대에서 때깔 고운 예복과 위장 친화적인 전투복의 구분이 이제 막 생기기 시작했기 때문이다.

사용자 삽입 이미지

(2) 개전을 앞두고 일본군에서는 보급로 개척과 동계 전투력 테스트 명목으로 한 육군 중대를 동원해 장거리 산악 행군을 시도한 적이 있었는데.. 산중턱에서 전례가 없던 기록적인 혹한과 눈보라를 만나 완전히 길을 잃고 조난을 당해 버렸다. 이 때문에 210여 명의 병력이 거의 다 얼어 죽고 겨우 11명만 생환하는 참극이 벌어졌다. 전시도 아닌데 병력을 이렇게 많이 잃다니.. 이 사고는 1902년 ‘핫코다 산 참사’라고 불린다.

러일 전쟁은 명목상 일본의 승전으로 기록됐지만 속내는 잘 알다시피.. 마침 러시아도 상황이 안 좋고 일본도 전쟁을 더 끌었다가는 쫄딱 망하기 직전이었는데, 여러 뽀록이 잘 터지고 주변 국가들이 중재도 해 준 덕분에 간신히 '피로스의 승리'를 거둔 것에 더 가까웠다. 이 때문에 일본은 전쟁 피해 배상금도 못 받았다.

러일 전쟁에서 빠질 수 없는 일본군 지휘관으로는 해군의 도고 헤이하치로 제독과 더불어 육군의 노기 마레스케 장군이 있다. 이 사람은 10여 년 전 청일 전쟁에서는 대승을 거뒀지만, 그 다음으로 맞붙은 러시아는 중국과는 급이 다른 상대였다.

사용자 삽입 이미지
(인상 좋은 동네 할아버지처럼 생겼다..;; 조선의 고종 황제도 그렇고, 20세기 초엔 장군이나 군주 같은 높으신 분이 훈장이 주렁주렁 달린 저런 스타일의 제복을 입는 게 유행이었나 보다.)

러시아의 함대가 대양을 횡단하여 도착하기 전에 뤼순 고지를 점령하려고 대규모 육군 병력을 “반자이 어택” 시켰으나.. 이전 같은 무식한 전술이 여기서는 전혀 통하지 않았다.
조선 동학 농민군만 일본군의 기관총에 갈려나간 줄 알았는데, 일본군도 러시아의 맥심 기관총에 엄청나게 갈려나갔다. 1차 대전 서부 전선에서 유럽 병사들이 기관총 참호를 뚫지 못해 갈려나갔던 일이 이때도 비슷하게 미리 벌어진 것이다.

저것들이 다 전술 교리가 신무기의 발달을 따라가지 못해서 생긴 일이다. 이제 막 발명되었던 탄피와 후장식 총기만으로도 혁명 그 자체였고 전쟁의 양상이 획기적으로 바뀌었는데, 하물며 기관총은.. 오늘날로 치면 핵무기와도 비슷한 압도적인 포스를 자랑했다. 기관총이 그 시절에 괜히 세상의 모든 전쟁을 종결시킬 최종 병기라고 불렸던 게 아니다.

아무튼, 이 때문에 전사자 유가족들이 단체로 노기 장군에게 쌍욕 편지를 보냈으며, 집 앞에 모여서 돌 던지고 “내 아들 살려내라, 이 살인자야!”라고 항의 시위를 할 정도였다. 이런 반발과 저항도 일본이 아직 태평양 전쟁 같은 막장 시절보다야 훨씬 민주적인 분위기이니까 가능했을 것이다.

그리고 노기 장군 또한 인품이 아주 고매하고 훌륭한 사람이었다. 그는 유가족들에게 손이 발이 되도록 빌면서 사죄하고 부상병들을 일일이 문병했다. 부상자의 치료와 재활을 위해 사재 기부도 많이 했다. 결정적으로는.. 자기도 친아들 두 명을 이 전쟁에서 잃었다!
그는 그러고도 죄책감을 견디다 못해 할복 자살을 하려 했다. 그러나 그를 매우 신임하고 아끼던 메이지 천황이 명령을 내려 할복을 금지했다.

일본은 내부적으로 이런 삽질과 큰 희생을 치른 뒤에야 어쨌든 러시아를 상대로 전쟁에서 이기긴 했다. 일본은 이 결과만으로도 세계를 놀라게 하고 선진국 열강 인증을 받기에 충분했다. 이로 인해 조선은 러시아와 일제 중 어디 식민지가 되느냐의 답이 한쪽으로 확 기울게 됐다. 그리고 노기 장군은 실책은 가려지고 최종적인 공이 부각되면서 전쟁 영웅으로 등극했다.

지금으로서는 믿어지지 않지만, 이때까지만 해도 조선에는 세상 정세를 잘 몰라서 같은 아시아 국가인 일본을 응원(!)하는 사람도 있었다. 이미 조선인지 대한제국인지 하는 나라는 일본과 맺은 각종 불평등 조약으로 인해, 하나 둘 빗장 풀리고 해체되고 망하고 있었는데도 말이다.

그리고 일본군 역시 이때는 서양 스타일을 표방한답시고 포로 학대나 민간인 약탈을 금지하며 일말의 신사적인 면모를 보이고 있었다. 아직은 타락하기 전이었으니 낭만도 좀 있던 시절이었다.
그러니 20세기 초에 세계 여론은 일본에게 아주 호의적이었다. 조선을 식민지화하는 것에 이의를 제기하는 나라 따윈 거의 없었다. 훗날 미국에서 “관동 대지진 때문에 어려움에 빠진 일본을 도와줍시다” 성금 모금까지 한 것도 이런 맥락에서였다.

끝으로, 러일 전쟁 때 명암을 남겼던 노기 마레스케 장군은 1912년에 메이지 천황이 사망하자 뒤따라 자결했다..;; 자결하지 말라고 자기를 말리던 상관이 죽고 없어지자 곧바로 상관의 뒤를 따른 것이다. 이것도 참..
이 정도로 솔선수범하고 책임을 졌다면, 노기 장군에게 러일 전쟁 초기의 판단 미스와 패전에 대한 개인적인 비판을 더 늘어놓기 어려울 것으로 보인다.;;

Posted by 사무엘

2021/01/10 08:36 2021/01/10 08:36
, , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1841

메모리 leak 사냥 후기

본인은 얼마 전엔 생계를 위해 덩치 좀 있고 스레드도 여럿 사용하는 C++ 프로젝트에서 골치 아픈 메모리 leak 버그만 잡으면서 꼬박 두 주를 보낸 적이 있었다.
요즘 세상에 raw 포인터를 직접 다루면서 동적 메모리를 몽땅 수동으로 직접 관리해야 한다니, C/C++은 자동차 운전으로 치면 수동 변속기와 잘 대응하는 언어 같다.

의외로... Visual C++이 2012 무렵부터 제공하기 시작한 정적 분석 도구는 memory leak을 잡아 주지는 않았다. 제일 최신인 2019 버전도 마찬가지이다.
얘가 잡아 주는 건 잠재적으로 NULL 포인터나 초기화되지 않은 변수값을 사용할 수 있는 것, 무한 루프에 빠질 수 있는 것 따위이다. 개중에는 너무 자질구레하거나 심지어 false alarm으로 여겨지는 것도 있다. 하지만..

char *p;
p = new char[256];
p = (char *)malloc(100);
p = NULL;
*p = 32;

이렇게 코드를 짜면 지적해 주는 건 맨 아래에 대놓고 NULL 포인터를 역참조해서 대입하는 부분뿐이다.
앞에서 new와 malloc 메모리 블록이 줄줄 새는 것은 의외로 out of 안중이더라. 개인적으로 놀랐다.

리눅스 진영에는 Valgrind라는 툴이 있긴 한데, 얘도 프로그램을 직접 실행해 주는 동적 분석이지 정적은 아니다.
다른 상업용 3rd party 정적 분석 툴 중에는 메모리 leak도 잡아내는 물건이 있을지 모른다. 하지만 그런 것 없이 Visual C++ 순정만 쓴다면 메모리 leak 디버깅은 전통적인 인간의 동적 분석에 의존해야 할 듯했다. 그래서 고고씽..

처음에는 무식하게 여기저기 들쑤시면서 삽질하면서 시간을 많이 보냈지만, 나중엔 차츰 요령이 생겼다.
먼저, 안정성이 검증돼 있는 맨 아랫단의 각종 오픈소스 라이브러리들을 의심하고 무식하게 들쑤실 필요는 없다. 물론 겉으로 드러난 결과는 거기서 할당한 메모리들이 줄줄 새는 것이다. 하지만 근본 원인은 거기보다 더 위에 있다.

그렇다고 맨 위의 애플리케이션이 오브젝트 해제를 안 했다거나 한 것도 아니었다. 그 정도로 초보적인 실수였다면 금세 감지되고 잡혔을 것이다. 더구나 App들은 아랫단과 달리 C++을 기반으로 스마트 포인터 같은 것도 그럭저럭 활용해서 작성되어 있었다. 그러니 거기도 딱히 문제는 없었다.

대부분의 문제는 오픈소스를 우리 쪽에서 살짝 수정한 부분, 오픈소스로부터 호출되는 우리 쪽 콜백 함수, 그리고 우리가 작성한 중간 계층의 공유 라이브러리에서 발견되었다.
이 코드를 처음으로 작성한 전임자가 누구인지는 모르겠지만.. C++ 코딩을 너무 Java 코딩하는 기분으로 했다는 생각이 강하게 들었다.

std::string s = _strdup("ABCD");

이런 식으로만 해 놓고 그냥 넘어간다거나.. (저기요, R-value는 어떡하고..??)
함수 뒷부분에서 나름 메모리를 해제한답시고 p = NULL을 쓴 것을 보니.. 전임자는 정말 Java의 정신으로 충만했다는 게 느껴졌다. (p는 물론 스마트가 아닌 일반 포인터)

메모리 leak 디버깅을 위해 C 컴파일러들은 디버깅용 메모리 관리 함수들을 제공하며, 다른 라이브러리들은 보통 자신들이 사용하는 메모리 할당 함수를 자신만의 명칭으로 바꿔서 쓴다. 그 명칭만으로 자신의 메모리 사용 내역을 추적할 수 있게 하기 위해서이다. (매크로 치환 및 해당 함수의 구현 부분 수정)

Visual C++ 기준으로, 프로그램이 처음 실행됐을 때 _CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF )를 호출하고 나면, 종료 시에 아직 해제되지 않은 heap 메모리들 목록이 쭈욱 나열된다. 메모리 할당 번호와 할당 크기, 그리고 메모리의 첫 부분 내용도 일부 같이 덤프된다.

여기서 ‘할당 번호’라는 걸 주목하시길..
만약 프로그램을 여러 번 실행하고 종료하더라도 (1) 메모리 할당 번호가 동일한 leak을 일관되게 재연 가능하다면, 그건 운이 아주 좋은 상황이다.
_CrtSetBreakAlloc을 호출해서 나중에 그 번호에 해당하는 메모리 할당 요청이 왔을 때 프로그램 실행을 중단시키면 되기 때문이다. 그러면 게임 끝이다.

하지만 복잡한 멀티스레드 프로그램에서 이렇게 매번 동일한 번호로 발생하는 착한 leak은 그리 많지 않다. 이것만으로 이 메모리의 출처를 추적하고 문제를 해결하는 건 아직 모래사장에서 바늘 찾는 짓이나 마찬가지이다. 단서가 좀 더 필요하다.

그래서 메모리를 할당할 때 이 요청은 (2) 소스 코드의 어느 지점에서 한 것이라는 정보를 같이 주게 한다.
어떻게? Visual C++ 기준 _***_dbg라는 함수를 만들어서 뒤에 소스 코드와 줄 번호 인자를 따로 받게 한다. ***에는 malloc뿐만 아니라 변종인 realloc과 calloc, 내부적으로 이런 함수를 호출하는 strdup 같은 함수도 모두 포함된다. 심지어 C++용으로는 operator new 함수도 말이다.

C의 __FILE__과 __LINE__은 그야말로 디버깅용으로 만들어진 가변 매크로 상수인 셈이다. 이렇게 말이다.

#ifdef _DEBUG
#define malloc(n)   _malloc_dbg(n, __FILE__, __LINE__)

#define new    __debug_new
#define __debug_new   new(__FILE__, __LINE__)
void *operator new(size_t n, const char *src, int lin);
void *operator new[](size_t n, const char *src, int lin);
#endif

new operator가 오버로딩 되는 건 placement new를 구현할 때와 디버깅용 메모리 할당을 할 때 정도인 것 같다.
이렇게 메모리 할당 방식을 바꿔 주면.. 나중에 leak report가 뜰 때 그 메모리 블록에 대해서 할당되었던 지점이 같이 뜬다. 무슨무슨 c/cpp의 몇째 줄이라고..

물론 그 함수가 호출된 배경을 알 수 없으니 저것도 불완전하게 느껴질 수 있다. 또한 이미 자체적으로 malloc을 다른 명칭으로 감싸고 있는 코드에 대해서는 이런 매크로 치환이 곧장 통하지 않는다는 한계도 있다.

그래도 그 정보마저 없던 것보다는 상황이 월등히 더 나아진다.
참고로, 프로그램이 실행 중일 때에도 동적 할당된 임의의 메모리에 대해서 _CrtIsMemoryBlock을 호출하면 이 메모리의 할당 번호와 출처 정보를 얻을 수 있다. 이를 토대로 leak은 얘보다 전인지 후인지, 언제 할당되었는지를 유추 가능하다(할당 번호의 대소 비교).

이것만으로도 아직 막막할 때 본인이 사용한 최후의 방법은 (3) _CrtSetAllocHook을 사용해서 메모리 할당이 발생할 때마다 콜백 함수가 호출되게 하는 것이었다.
내가 작성하지도 않은 방대한 코드에서 malloc/calloc을 전부 내 함수로 치환하는 것은 위험 부담이 매우 큰데.. 그럴 필요 없이 Visual C++ CRT의 malloc이 디버깅을 위해 사용자의 콜백 함수를 직접 호출해 준다니 고마운 일이 아닐 수 없다.

이를 위해서는 한 프로세스 내의 모든 static library 및 DLL 모듈들이 동일한 Visual C++ CRT 라이브러리를 DLL로 링크하게만 맞춰 놓으면 된다. 어느 것 하나라도 CRT의 static 링크가 있으면 일이 많이 골치 아파진다. DLL로 해야 모든 모듈들이 사용하는 메모리가 한 CRT에서 통합적으로 관리된다.

콜백 함수는 메모리 할당 번호뿐만 아니라 할당 크기, 그리고 이 메모리를 요청한 스레드가 어느 것인지도 확인 가능하다.
개인적으로는 leak 중에서 크고(수백~수천 바이트 이상) 유니크한 바이트 수를 동일하게 요청하는 것을 콜백 함수를 통해서 잡아내고, 이걸 토대로 다른 leak들도 잡아냈다.
겨우 4바이트, 8바이트 같은 너무 평범하고(?) 자주 호출되는 할당 요청은 leak만 추려내기가 곤란할 것이다.

이 콜백 함수에서 또 메모리를 동적 할당하지는 않도록 주의해야 한다. 그러면 콜백 함수에서 호출된 메모리 할당 함수가 또 콜백을 호출하고.. stack overflow 에러가 발생할 수 있다.
로그를 찍기 위해 흔히 사용하는 sprintf 부류의 함수조차도 내부적으로 메모리를 동적 할당한다.

이 문제를 회피하기 위해 우리 콜백 함수 내부에서 중복 호출 방지 guard를 둘 수도 있지만.. 간단하게 C 라이브러리 대신 Windows API가 제공하는 wsprintfA/W 함수를 사용하는 것도 괜찮은 방법이다. Windows API 중에는 C 라이브러리를 사용할 수 없는 환경에서도 C 라이브러리의 기능을 일부 사용하라면서 저런 부류의 함수를 제공하는 경우가 있다.

이상이다.
memory leak은 여느 메모리나 스레드 버그처럼 프로그램을 당장 뻗게 만들지는 않는다.
오히려 메모리 관리를 잘못해서 원래는 dangling pointer가 됐어야 할 포인터로도 메모리 접근을 가능하게 만들어 주기도 한다(해제되지 않았기 때문에).

하지만 leak은 결국 컴퓨터의 메모리 자원을 소진시키고, 한 프로그램이 반영구적으로 동일한 상태를 유지하면서 돌아가지 못하게 하는 심각한 문제이다. 더 넓게 보자면 굳이 heap 메모리 말고도, 각종 커널 핸들이나 GDI 객체처럼 나중에 반드시 닫아 줘야 하는 일체의 리소스들도 제때 해제해 주지 않을 경우 leak이 발생할 수 있는 물건들이다. 상업용 툴은 이런 것들까지 다 모니터링을 해 주지 싶다.

이 주제 관련 다른 여담들을 좀 늘어놓으며 글을 맺고자 한다.

(1) leak은 새어나가는 그 메모리의 할당이 벌어지는 상황을 추적하는 게 핵심이다. 그런데 새고 있는지의 여부는 한참 뒤에 프로그램이 종료될 때에나 알 수 있다는 것이 큰 모순이며, 관련 디버깅을 어렵게 하는 요인이다.
또한 시작과 끝이 있는 게 아니라 언제나 돌아가는 서버/서비스 같은 프로그램도 있다. 이런 건 leak을 어떻게 찾아내야 좋을까? 그렇게 오랫동안 상시 가동되는 프로그램이야말로 memory leak이 절대로 없어야 하는데, 역설적이게도 그런 유형의 프로그램이 leak을 잡기가 더욱 어렵다. 뭔가 새로운 방법론을 찾아서 적용해야 한다.

(2) 컴퓨터에서 메모리 영역이란 건 용도에 따라 코드와 데이터로 나뉘는데, 코드를 저장하는 메모리가 새는 일은.. 무슨 가상 머신 급의 고도의 시스템 소프트웨어를 개발하는 게 아닌 이상 없을 것이다.
다만, 데이터도 다 같은 데이터는 아니어서 진짜로 쌩 문자열 같은 POD인지, 아니면 내부에 포인터가 들어있는 실행 객체의 인스턴스인지에 따라 체감 난이도가 달라진다. 후자는 그 자체가 코드는 아니지만 코드에 준한다는 느낌이 든다.

(3) a( b(), c() ) 이런 구문의 실행을 디버거로 추적한다면, step into는 b()의 내부부터 먼저 들어간다. step over는 이들을 통째로 다 실행하고 다음 줄로 넘어간다.
그 둘의 중간으로.. b()와 c()처럼 인자 준비 과정에서 발생하는 함수 호출은 몽땅 생략하고 a()로만 step into 하는 명령도 좀 있으면 좋겠다.
특히 smart pointer는 함수로 넘겨줄 때마다 trivial한 생성자나 연산자 오버로딩 함수로 먼저 진입하는 것이 굉장히 번거롭다. 이런 것을 생략할 수 있으면 디버깅 능률과 생산성이 더 올라갈 수 있을 것이다.

Posted by 사무엘

2021/01/07 08:35 2021/01/07 08:35
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1840

Windows에는 운영체제가 응용 프로그램으로 보내 주는 각종 통지 메시지, 또는 응용 프로그램으로 하여금 보내기로 정한 기본(시스템) 메시지들이 0부터 WM_USER 미만까지의 범위에 들어있다. 그런데 시스템 메시지 영역은 유니코드 BMP만큼이나 이제 빈 공간이 거의 없고 다 고갈됐을 것 같은데..
2048도 아니고 겨우 1024는 처음에 공간을 너무 좁게 잡은 것 같다. 앞으로 새로운 메시지가 추가 가능할지 궁금하다.

  • 그리고 요즘 어지간한 사용자들이 프로그램을 이것저것 띄워 놓고 나면 사용자 등록 메시지는 공간이 얼마나 사용되며 여유가 얼마나 남아 있을까?
  • 스레드를 생성하면 TLS 슬롯이 얼마나 사용되며 이 역시 여유 공간은 얼마나 될까?
  • Custom 클립보드 포맷을 등록하는 공간 역시 보통 얼마나 쓰이는 편일까?
  • 20년 전이나 지금이나 빌드되는 프로그램의 기본 스택 크기는 1MB인 걸까? 부족하지는 않은가?

이런 게 궁금해지곤 한다. Windows의 개발사인 마소에서는 이런 usage 데이터를 더욱 궁금해하고 수집하고 싶어할 것이다.
그리고 Windows가 16비트에서 32비트로 넘어가면서.. 특히 3.x에서 95로 넘어가면서 메시지 체계가 바뀐 게 좀 있다.

(1) EM_SETSEL (에디트), LB_ADDSTRING (리스트박스) 같은 기성 컨트롤을 조작하는 메시지들이 그때는 WM_USER 이후의 사용자 영역에 있었지만, 32비트 시절부터는 WM_USER 이내의 시스템 메시지 영역으로 이동했다.

이런 건 굳이 바꿀 필요가 없어 보이는데 왜 헷갈리게 단절적인 변화를 만든 걸까? 게다가 앞서 언급한 바와 같이 WM_USER 이내의 영역 자체도 그리 넉넉한 편이 아닌데 말이다.
이런 메시지들은 비트수(16/32/64..;; ) 내지 사용하는 문자열(2바이트 단위 유니코드 / 1바이트 ANSI) 형태가 다른 프로그램끼리 주고 받더라도 언제나 제대로 맞게 전달된다는 것을 운영체제 차원에서 보장하기 위해서이다.

즉, 문자열 포인터 같은 게 lParam 값으로 같이 전달됐다면 포인터가 가리키는 메모리의 값에 대한 복사와 보정까지 운영체제가 알아서 처리해 준다는 것이다. WM_SETTEXT처럼 말이다.
이들과 달리, 기성 컨트롤 말고 후대에 새로 추가된 공용 컨트롤들은 통신 메시지들이 WM_USER 이후에 있으며, 운영체제 차원에서의 메모리 보정 지원이 없다.

공용 컨트롤은 처음부터 Windows 95 내지 NT 3.5x라는 32비트 환경에서 개발됐기 때문에 16비트 호환성을 고려할 필요가 없다.
그리고 메시지들이 LV_ITEM, TV_ITEM 같은 복잡한 구조체와 비트 플래그를 주고받는 형태로 구현돼 있다. 그러니 한 프로세스가 다른 프로세스의 공용 컨트롤 내용을 들여다보거나 메시지를 보내서 조작하기란 매우 난감할 것이다.

그나마 과거의 Windows 9x는 프로세스 간 공유 메모리(memory-mapped file)의 주소가 모든 프로세스에서 동일하기라도 했지만, 현재의 NT 계열에서는 그런 보장마저 없다. system hook을 설치해서 공용 컨트롤을 그 프로세스의 문맥에서 조작하는 코드를 집어넣어야 할 듯하다.

(2) 기성 컨트롤의 글자색과 배경색을 변경하는 용도로 WM_CTLCOLOR 계열 메시지가 쓰이는데.. 얘는 16비트 시절에 그랬다. 32비트부터는 WM_CTLCOLORBTN, DLG, EDIT, STATIC 등으로 메시지의 형태가 세분화됐다. 왜 그리 됐을까?

메시지와 함께 전달되던 값이 HDC와 창 핸들(HWND), 그리고 창의 종류 정보 셋이었다. 16비트 시절에는 32비트짜리 lParam에 창 핸들과 종류 정보가 각각 16비트씩 합쳐져서 들어있었는데.. 32비트에 와서는 창 핸들만으로 32비트를 차지하기 때문에 기존 방식대로 메시지를 전달할 수가 없어졌던 것이다. 그래서 창의 종류 정보는 메시지 자체에 담겨 있도록 불가피하게 메시징 방식이 변경됐다.

다만, Windows 9x는 16비트 프로그램과의 호환을 위해 창 핸들의 값이 여전히 16비트 범위 내에서만 할당되었기 때문에 옛날 방식대로 메시징을 해도 “이론적으로는” 상위 word의 값이 짤려서 문제될 게 없다.
그리고 MFC는 32비트 이후에도 메시지 핸들러 함수가 16비트 시절과 동일하게 CWnd::OnCtlColor에서 처리하게 돼 있다. 즉, 하위 호환성이 유지된다. MFC의 소스를 보면 WM_CTLCOLOR???? 메시지들을 모두 CWnd::OnNTCtlColor라는 내부 함수에다 한데 모은 뒤, 특수 처리를 해서 OnCtlColor로 재전달을 하게 돼 있다.

(3) 세월이 흘러서 컴퓨터 환경이 바뀌고 Windows의 버전이 올라가면 새 메시지만 추가되는 게 아니라.. 기존 메시지가 용도나 존재감을 잃고 잉여로 전락하는 경우도 있다.
WM_QUERYDRAGICON은 최소화된 창이 아이콘 모양으로 떠 있던 Windows 3.x의 GUI 엔진의 잔재이다. 요즘으로 치면 리스트뷰 컨트롤에서의 큰 아이콘 모드와 비스무리한 동작인데.. 95/NT4부터는 저 메시지가 전혀 쓰이지 않는다.

WM_COMPACTING이라고 현재 시스템에 메모리가 부족한 상황임을 알리는 메시지도 있다. 이 메시지는 정확하게 메모리의 양이 부족해졌거나, 가상 메모리 스왑 파일 thrashing 시간이 너무 길어졌을 때 발생하는 것도 아니다.

16비트 시절에는 가상 메모리라는 게 없었기 때문에, 메모리의 단편화(leak이 아니라 fragmentation) 정도를 모니터링 하고 연속된 빈 메모리 공간을 많이 확보해 두는 걸 운영체제가 알아서 해야 했다. 응용 프로그램은 당장 사용하지 않는 메모리는 이동과 재배치가 가능하게 해 줘야 했는데.. 이렇게 메모리 재배치에 걸리는 시간이 일정 수준 이상 너무 길어진다 싶으면 이 메시지가 날아갔다. 32비트부터는 당연히 존재감이 전혀 없어졌다.

그리고.. 256색 팔레트 관련 메시지들도 21세기쯤부터는 완전히 퇴출 상태이다. Windows XP 무렵부터는 이제 안전 모드에서도 그래픽이 하이컬러 이상이지, 구닥다리 16색/256색 따위는 완전히 퇴출됐기 때문이다.

요즘 컴퓨터 기기에서 뭔가 자원이 부족하다는 메시지는 배터리 부족 정도밖에 없지 싶다.
WM_USER 이내에 시스템 메시지를 추가할 공간이 도저히 남아 있지 않다면, 이제 쓰이지 않게 된 구닥다리 메시지의 값을 재활용해야 하지 않을까?

Posted by 사무엘

2021/01/05 08:33 2021/01/05 08:33
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1839

최초의 운전자들

1. 최초의 여성 운전자

조선에서 갑오개혁이 일어나기도 한참 전이던 1886년, 독일의 공돌이 발명가 칼 벤츠는 인류 최초로 상용화된 내연기관 자동차를 개발해서 세상에 내놓았다. 증기 기관차만치 거대하지 않고, 그렇다고 말이 끌지도 않는 아주 기괴한 디자인의 수레?를 선보인 것이다.

'벤츠 페이턴트 모터바겐'이라는 이름의 삼륜차는 954cc짜리 단기통 휘발유 엔진으로 최대 출력은 겨우 0.75(초기형)내지 2마력(후기형??), 변속기는 2단에 최대 속도 16km/h 남짓밖에 안 됐다.

20여 년 뒤에 조선 땅에 들어온 순종 어차도 거의 5000cc급 배기량으로 최대 출력은 3~40마력대밖에 안 됐던 걸로 기억한다. 요즘 승용차가 저런 배기량이면 마력수 뒤에 0이 하나 더 붙을 텐데..;;
그리고 요즘 954cc면 그냥 경차 배기량이고, 그걸로도 70마력 정도는 나올 것이다. 이게 바로 100년이라는 세월이 만들어 낸 기술력의 차이이다.

그 시절의 자동차 발명가들은 기술적인 난관뿐만 아니라 교통사고의 증가로 인한 규제, 기존 마차 업자들과의 마찰, 사람들의 회의적인 반응 등 넘어야 할 산이 많았다.
그런데 그때 칼 벤츠에게 가장 큰 도움을 준 조력자는 그의 아내인 '베르타 벤츠'였다.

약혼 시절부터 결혼 자금까지 동원해서 남친의 창업 자금을 대 주고, 결혼해서 애도 다섯이나 낳아서 키우고..
남편의 발명을 격려하기 위해 1888년 8월 5일엔.. 애들 둘만 태우고 남편 몰래, 성인 남자 없이 혼자 직접 '모터바겐'을 몰고 약 106km 떨어진 친정집까지 다녀오는 근성의 대장정을 감행했다! 이 기괴한 자동차만 있으면 나 같은 아녀자도 간편하게 장거리 이동을 할 수 있음을 입증하기 위해서.

사용자 삽입 이미지

중간에 차가 퍼지면 "어머 오또케 오또케.. ㅠㅠㅠ" 퍼질러앉은 게 아니라, 직접 뚜껑 열어서 차를 수리하고 땜질하고.. 연료가 떨어지면 주변 약국에서 휘발유인지 벤젠인지를 사 와서 해결했다. 덕분에 이분은 세계 최초의 여성 운전사.. 그리고 그 약국은 세계 최초의 자동차 주유소라는 영광스러운 칭호를 획득했다.

베르타는 남편에게 "자기야, 나 자기 차 혼자 몰고 친정집에 잘 갔어!"라고 전보를 보냈고, 사흘 뒤에 자가운전으로 귀환도 무사히 했다.
칼은 너무 감격해서 일기에 "She drove more than a car, she drove an industry" 라고 썼다고 한다.
거의 "One small step for man, one giant leap for mankind" 같은 대사가 아닐 수 없다.

그 뒤로 벤츠는 성능이 더욱 개량된 자동차를 개발하고 갖가지 특허를 따면서 승승장구 했다. 세상을 바꿔 놓은 자동차 산업의 태동기를 주도했던 여걸의 이야기가 어찌나 멋있게 들리는지!
그나저나 요즘 벤츠 승용차에 4MATIC은 승용차 주제에 찦차처럼 사륜구동도 된다는 뜻이었군. 처음 알게 됐다.;;

  • 차량 제작사에서는 진작에 이 일화를 짤막한 광고 영화 두 편으로 각색한 바 있다. The First DriverThe Journey That Changed Everything을 참고하자. 그 당시 상황에 대한 실감나는 현장감을 경험할 수 있다.
  • 메르데세스-벤츠에서 '메르데세스'도 여자 이름에서 유래됐다. 다만 이 여인은 차량의 개발에 직접적으로 영감을 주거나 기여한 인물이 아니다. 자세한 것은 타 사이트의 글을 참고하라.
  • 벤츠는 저런 훌륭한 부인의 내조를 받으면서 자동차를 개발했지만, 그로부터 10~15년쯤 뒤에 미국의 라이트 형제는 "비행기와 부인을 둘 다 신경 쓸 시간은 없다"...;;는 지론과 함께 평생 독신으로 살며 비행기를 발명했다. 단지, 교사이던 여동생의 내조를 받긴 했다. 공돌이들의 인생은 그냥 케바케인 것 같다.
  • 독일에는 어째 유명한 약국이 몇 군데 있다. 세계 최초의 주유소 역할을 한 약국뿐만 아니라, '티거 전차'에서 모티브를 딴 '호랑이 약국'을 운영했던 독일군 탱크 운전수 오토 카리우스도 있기 때문이다. ㅎㅎ (전후에 약사가 됨)

벤츠가 최초로 만들었던 페이턴트 모터바겐 원품이야 지금은 전해지지 않는다. 하지만 기계의 설계도가 고스란히 남아 있기 때문에 원품과 100% 동일한 레플리카, 그것도 시동 걸리고 주행 가능한 레플리카가 여러 대 만들어져 있으며, 그게 굴러가는 유튜브 동영상도 있다. 이런 팔팔한 레플리카가 있는 게 후세들에겐 차라리 더 나을 것이다.
하나님의 말씀도 마찬가지이다. 자필 원본 따위야 진작에 다 소멸되고 없지만, 원본과 동등한 권위를 갖고 지금도 동일하게 살아 역사하는 필사본과 번역본이 고스란히 보존되어서 전해지고 있다. 다 낡아빠진 죽은 골동품의 형태가 아니다.

2. 최초의 한국인 폭주족

한국인 중에 자동차 과속 폭주족의 원조는 바로 초대 대통령인 이 승만 할배다. 오토바이 말고 사륜 자동차 말이다. 다음 글을 보자.

"... 84세의 프란체스카 여사는 낙엽 뒹구는 이화장 뜨락에서 10월 8일의 ‘결혼 50주년’을 앞두고 대통령과의 카라이프를 회고한다." (☞ 링크)

그이는 난폭에다 지독한 과속운전을 했죠. 그러나 나를 보고는 ‘당신은 실키 드라이버야’라고 칭찬을 했어요.
독립운동을 하느라 밤낮없이 넓은 미국 땅을 돌아다닐 때였어요. 그이는 여기 저기 약속 스케줄을 소화하느라 운전대만 잡았다 하면 과속에다 난폭 드라이버로 돌변했어요. 시속 140km 이상은 예사였지요.

“제발, 오 제발... (please)”
“여보, 뒤를 보지 말아요. 나를 믿으시오.”

이때 순간적이지만 ‘이분과는 헤어져야겠다’라고 생각했어요. 차를 탈 때마다 간이 콩알만 해지니 살 수가 있어야죠.


참고로 프란체스카는 할배 이전의 독일인 남편도 '카레이서'였다. (헬무트 뵈룅.. 이혼)

경찰은 연설을 마치고 나오는 우남은 쳐다보지도 않고 나를 향해 말했어요.
“기동경찰 20년에 내가 따라잡지 못한 최초의 교통법규 위반자는 당신 남편이오. 일찍 천당 안 가려거든 부인이 조심시키시오.”


인터넷에 굴러다니는 이 일화의 출처는 월간 자동차생활 1984년 10월호이다.
자동차생활은 바로 전인 1984년 9월에 창간됐다! 창간되자마자 거의 곧장 할배의 폭주족 일화를 소개했다는 게 매우 흥미롭다.
표지를 보면 "특별 취재 -- 대통령의 첫 번째 운전사는 나, 프란체스카였다"라는 제목의 기사가 실제로 올라 있다.

사용자 삽입 이미지

저 시절 미국의 자동차들은 성능과 제원이 어느 정도였을까?
미국 GM에서 1936년에 제작했던 수동 변속기의 원리 고퀄 강의 동영상을 보면.. 서민용 승용차에 변속기는 꼴랑 3단까지 있고, 속도계 눈금은 시속 100마일, 160km/h까지 적혀 있었다. (9분 18초 지점)

진정한 선각자는 1800년대 말에 이미 민주주의를 생각하고 감옥에서 영한사전을 만들고 독립정신 책을 썼다. 그리고 1930년대 자동차로도 시속 140~160을 밟았다. 그러면서도 교통사고는 당연히 전혀 내지 않았다.

할배 대통령을 존경하는 후예라면 무슨 나라를 세우거나 구하는 일은 못 하더라도.. 할배가 남겨 준 자유를 누리면서 훨씬 더 성능 좋은 자동차와 훨씬 더 잘 닦인 고속도로에서 못해도 시속 200은 밟아 줘야 하지 않겠는가?

3. 최초의 경부 고속도로 폭주족

세월이 흘러 대한민국도 산업화 근대화의 길을 갔으며, 원조가카의 영도력 하에 경부 고속도로라는 게 개통했다. 이 도로에서 악셀을 사정없이 밟은 최초의 폭주족은 바로.. 20세기 중반을 풍미한 톱스타 배우인 신 성일 씨였다. 이 사람도 한 스피드 했었다.
그는 겨우 34세의 나이로 얼마나 성공해서 억만장자가 됐는지.. 1960년대 말에 이미 집값보다 더 비싸던 빨간 외제차 포드 머스탱(무스탕)을 자가용으로 뽑았다.

그 옛날에 남한에서 8기통에 7300cc가 넘는 배기량의 차량이라니.. 그 시절에 새나라 내지 도요타 코로나 같은 일반적인(?) 승용차가 20~30만 원대였고 이것만으로도 서민들이 범접할 수 없는 사치품이었는데, 신 성일의 애마의 가격은 그런 차량의 2~30배에 달하는 무려 640만원이었다고 한다. 지금으로 치면 람보르기니 포르셰를 넘어 롤스로이스니 부가티 급이나 마찬가지이다.

사용자 삽입 이미지

경부 고속도로가 전구간 개통됐던 1970년 7월 7일에 원조가카 일행은 부산에서 서울로 고속도로를 타고 올라왔다.
그런데 신 성일은 그 날 반대로 서울에서 부산까지 고속도로를 시속 200으로 밟으면서 딱 중간 지점인 영동-추풍령 일대에서 대통령 일행을 쌩~~~~~ 하고 지나쳐 가 버렸다.

다시 말하지만 지금으로부터 50년 전 1970년에 한국 땅에서 말이다. 대통령의 스케줄과 동선을 알기도 쉽지 않던 시절에 시간 계산을 꽤 절묘하게 해서 일부러 대통령 일행을 마주보며 초고속으로 쓱 스쳐 지나가는 똘끼를 부린 것이다. (☞ 관련 기사)
버스나 트럭이 아니라 웬 외제 승용차가 고속도로 개통 당일에 대통령이 보는 앞에서 이 따위로 과속 폭주를 하다니.. 원조가카는 눈이 휘둥그래져서 "뭐야 저건..? 저 차 운전자를 잡아 왓!" 호통을 쳤다.

그렇잖아도 무려 1970년에 대한민국 땅에서 저런 짓을 할 수 있는 갑부는 극소수에 불과했다. 차량 번호를 몰라도 대략의 차종과 색깔만으로도 곧장 추적해 낼 수 있었다.
운전자가 배우 신 성일 씨라는 얘기를 듣자, 원조가카는 고개를 저으며 "젊은 친구가 ㅉㅉㅉ.. 오래 살고 싶으면 운전 좀 살살 하라고 그래" 하면서 넘겼다고 한다.

자기 말고는 자동차가 없다시피하고 과속 단속 카메라 따위도 하나도 없었을 그 긴 도로를 혼자 200을 밟으며 달렸다니.. 정말 부럽지 않은가? 1970년이면 안 그래도 콩코드 초음속기에 아폴로 우주선이니 하던 시절이었는데..
나도 야밤이나 새벽에 그렇게 풀 악셀 밟으면서 고속도로를 질주하고 싶다. 과속과 과식은 매우 훌륭한 스트레스 해소 수단이기 때문이다.

단, 얼마 못 가 석유 파동이 벌어지자 국가에서는 고배기량 차량을 사치품으로 간주하여 온갖 방법으로 규제했으며, 극도의 기름 절약과 내핍을 강조했다. 꼴랑 2000cc 배기량을 6기통으로 구현하기도 하던 시절에 장관들의 관용차를 4기통 엔진 차량으로 제약했을 정도이니 말 다 했다.
그때는 신 성일 씨도 어쩔 수 없이 머스탱을 처분하고 자가용을 작은 국산차로 바꿔야 했다고 한다.

Posted by 사무엘

2021/01/02 08:36 2021/01/02 08:36
, , , , , , , ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1838

피보나치 수열의 일반항 구하기

피보나치 수열이란 첫 두 항 F(1)와 F(2)의 값이 1이고, 그 다음부터는 n>=3인 자연수에 대해 F(n) = F(n-1)+F(n-2)이라고 재귀적으로 정의되는 수열이다.
1, 1, 2, 3, 5, 8, 13, 21, 34 …와 같은 순으로 숫자가 나열되며, 수가 커질수록 인접한 두 항의 비율은 황금비 (1+sqrt(5))/2로 수렴한다. 즉, 얘는 1 2 4 8 같은 등비수열과 동일한 형태는 아니지만, 수가 증가하는 정도가 등비수열과 동급이다.

그런데 다른 F 값에 의존하지 않고 F(n)의 값을 곧바로 구할 수는 없을까? 다시 말해 F(n)의 일반항을 구할 수는 없을까?

결론부터 말하자면.. 구할 수 있을 뿐만 아니라 더 나아가 0이 아닌 아무 a,b,c와 초기값 F(1), F(2)에 대해서 a*F(n+2) + b*F(n+1) + c*F(n) = 0꼴의 점화식 자체의 일반항을 구하는 것도 가능하다.
저런 점화식의 일반항은 X^n ± Y^n 의 형태로 귀착된다(X, Y는 임의의 상수). 피보나치 수열은 저기서 a=1이고 b=c=-1, F(1)=F(2)=1인 경우일 뿐이다.

이 점화식을 푸는 것의 핵심은 점화식을 동일하게 유지하면서 기존 a, b, c 계수를 각각 1, -(p+q), p*q라는 형태로 바꾸는 것이다. a는 a, b, c를 똑같이 a로 나눠 주면 1로 바꿀 수 있고, b와 c는 합이 -b이고 곱이 c인 p, q라는 또 다른 숫자쌍을 구해서 바꾸면 된다. 이런 식으로 일반성을 유지하면서 계수의 형태를 치환하는 건 3차나 4차 같은 대수방정식을 풀 때도 볼 수 있는 테크닉이다.

계수의 형태를 저렇게 바꿈으로써 우리는 동일한 점화식을 F(n+2) - p*F(n+1) = q*( F(n+1) - p*F(n) )이라고.. 우리가 처리하기 더 유리한 단순한 형태로 변형할 수 있다. 어떤 점에서 더 유리한지는 곧 알게 될 것이다.
p와 q 둘 중 하나가 0이면 F(n)은 그냥 평범한 등비수열이 되겠지만, 단서가 더 추가됨으로써 변형이 가해진 좀 더 복잡한 수열을 만들 수 있다.

가령, F(1)=F(2)=1이면서 p=2, q=-1이면 이 수열은 1 1 3 5 11 21 43 ... 즉, 앞의 수의 2배에다가 1을 더하거나 뺀 형태가 되며,
p=3, q=-2이면 1 1 7 13 55 133 463 1261 ... 앞의 수의 3배에다가 각각 4, -8, 16, -32를 더한.. 기묘한 수열이 만들어진다.

이런 유형의 수열을 저 점화식으로 표현할 수 있다는 것이다. 그리고 피보나치 수열은 p+q=1, pq=-1인 경우이다.
(그러고 보니 다른 수학 교재에서는 이때 p, q 대신 알파와 베타를 쓰는 편이더라만.. 그건 그냥 기분과 취향 문제이니 이 글에서는 계속해서 p, q를 쓰도록 하겠다.)

F(n+2) - p*F(n+1) = q*( F(n+1) - p*F(n) ) 이라는 식을 잘 살펴보면.. 그 정의상 초기항인 F(2) - p*F(1)에다가 q를 곱해 주는 것만으로 F의 등급을 쭉쭉 올릴 수 있다. 무슨 얘기냐 하면, n>=1에 대해서 F(n+2) - p*F(n+1) = q^n * (F(2) - p*F(1))이라는 것이다. 이런 놀라운 특성 때문에 점화식을 이런 형태로 바꾼 것이다.

저렇게 하면 식의 우변이 p, q, F(1), F(2)라는 상수 형태로 완전히 바뀐다. 아, 우변이 F(n)에 대한 의존도만 없어졌지 n에 대한 지수함수이기 때문에 완전한 상수는 아니다. 완전한 상수라면 이 형태만으로 문제가 다 풀렸을 것이다.
이 상태에서 식을 더 단순화시키기 위해서 우리가 활용하는 특성은 바로.. p, q의 값이 서로 뒤바뀌어도 생성되는 순열 결과는 달라지지 않는다는 것이다.

애초에 덧셈과 곱셈은 교환 법칙이 성립하는 연산이다. 그러니 p, q의 등장 순서를 뒤바꿔도 합 -b와 곱 c는 바뀌지 않을 것이다. 위의 점화식을 F(n+2) - q*F(n+1) = p*( F(n+1) - q*F(n) ) 이라고 바꿔 줘도 달라지는 것은 전혀 없다.

기하학적으로 생각하자면 저건 쌍곡선(곱이 같음 = 반비례)과 직선(합이 같음 = 정비례)의 교점을 구하는 것과 같다. 그 직선이 쌍곡선의 점근선 중 하나와 수직-평행 관계가 아닌 한, 교점은 “둘” 존재하게 될 것이다.

대수적으로 생각한다면야 저건 평범한 이차방정식을 푸는 것과 같다. -(p+q)와 p*q는 이차방정식 (x-p)(x-q)와 정확하게 대응한다. (x-p)(x-q)를 하든 (x-q)(x-p)를 하든 식이 달라지는 것은 없다. 너무 당연한 얘기이다.

F(n+2) - p*F(n+1) = q^n *( F(2) - p*F(1) )
F(n+2) - q*F(n+1) = p^n *( F(2) - q*F(1) )

그래서 위의 등식에서 아래의 등식을 그대로 빼 버리면.. F(n-2)가 없어지고 등식 전체에서 F(n+1) 하나만 남게 된다.
F(n+1)의 앞에 붙은 q-p라는 계수로 양변을 나누고, n을 n-1로 치환하면 일반항 유도가 완료된다. 대략

F(n) = ( (q*F(1) - F(2))*p^(n-1) - (p*F(1) - F(2))*q^(n-1) ) / (q-p)

라는 비교적 깔끔한 식이 나온다. 이 정도는 심하게 복잡하지는 않으니 이미지 대신 그냥 문자 형태로 때웠다. ㄲㄲ
양변을 덧셈이 아니라 뺄셈을 했기 때문에 F(1)과 F(2)의 부호가 반대로 바뀌었다.

피보나치 수열의 일반항은 저기에서 F(1)=F(2)=1, 그리고 p와 q에다가는 x^2 - x - 1 = 0의 근인 (1+sqrt(5))/2와 (1-sqrt(5))/2를 각각 대입하기만 하면 구할 수 있다.
번거로운 계산이 많긴 하지만 F(n) = (p^n - q^n)/(p-q)의 형태가 된다. 형태가 꽤 복잡해 보이는데, 그래도 n에다가 자연수를 대입해 보면 근호(루트)는 거짓말처럼 없어져서 최종 결과값이 자연수로만 딱딱 떨어진다.
분자의 거듭제곱은 그렇다 쳐도 분모는 p-q는 sqrt(5)로 깔끔하게 나오기 때문에 표기가 그리 복잡하지 않다.

이상이다. 글을 쭉 쓰면서 본인도 이 분야에 대한 공부를 확실하게 다시 할 수 있었다.
메이플이나 매스매티카 같은 수학 패키지에는 점화식을 푸는 명령이 물론 존재한다.
F(x+2) - (p+q)*F(x+1) + p*q*F(x) = 0의 일반항은 단순무식 F(x+2) + b*F(x+1) + c*F(x) = 0 보다 훨씬 더 간단하게 나오는 걸 알 수 있다. 후자는 내부적으로 sqrt(b^2-4*c) 같은 근의 공식이 잔뜩 섞여서 매우 복잡하다.

그리고 끝으로 생각할 점은..
피보나치 수열 정도는 이전 항의 이전 항.. 즉 2단계까지 역참조하는 점화식인데, 그 단계가 3단계 정도로만 올라가도 식의 복잡도는 상상 이상으로 치솟을 거라는 점이다. 특성 방정식은 2차가 아니라 3차가 될 것이고, 변수들을 연립해 주는 식도 2차가 아닌 3차가 될 것이고.. 실용적인 방법으로 일반항을 구하는 게 도저히 가능하지 않겠다.

Posted by 사무엘

2020/12/30 19:33 2020/12/30 19:33
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1837

세상에는 비행기 수준은 아니지만 지면이나 수면을 약간 떠서 다니는 교통수단이 있다.

1. 지면에서는 자기 부상 열차가 대표적인 예이다. 얘는 분명 육상의 궤도 교통수단이고 차량을 열차라고 부르기는 하지만, 우리가 흔히 생각하는 철도의 범주에 드는 물건이 아니다. 당장 차량의 밑에 바퀴가 달려 있지 않다~!

사용자 삽입 이미지

얘는 전자기력의 힘으로 아주 미세하게나마(수 cm 남짓) 위로 떠서 달리니 구름 마찰력 따위의 적용을 받지 않으며, 조용하고 진동 없고 주행 속도도 더 끌어올릴 수 있다. 198, 90년대의 공상 과학 매체에서 진작부터 미래의 교통수단이라고 주목 받아 왔다.

하지만 기존 철도와 전혀 호환되지 않는 새로운 선로, 그것도 첨단 기술의 집약체여서 건설비도 엄청 많이 깨지는 시설을 수백 km씩 새로 건설하는 것은 쉽지 않은 일이다. 이 때문에 2020년 현재까지도 자기 부상 열차는 장거리 고속 간선이 아니라 단거리 중저속 도시철도 경전철 수준에서 머물고 있다.
국내의 경우 대전 엑스포 공원과 인천 공항의 자기 부상 열차가 대표적인 예이다. 중국에는 상하이 시내와 푸동 국제 공항을 잇는 공항 철도가 어째 자기 부상 고속철 형태이다.

다음으로 일본의 츄오 신칸센이 2020년 현재 세계 최초의 유일한 장거리 간선 + 초전도 기반의 자기 부상 열차를 표방하며 건설 중이다. 시속 200km짜리 고속철에 이어 시속 600짜리 자기 부상까지 세계 최초 타이틀을 거머쥐는 것은 놀라운 일이겠지만, 요즘 세계의 경제 시국을 감안하면 저건 경제 대국 일본의 입장에서도 꽤 버거운 과업인 것 같다..

사용자 삽입 이미지

자기 부상 열차의 동력원은 linear motor라고 부르는 선형 전동기이다. 하지만 얘 자체는 부상식이 아닌 철차륜 접지식 철도에도 적용 가능하다. 용인 경전철이 ‘선형 전동기’라는 말을 국내에 거의 처음으로 선보인 사례이다.

요즘 자동차가 휘발유에서 전기 같은 대체 에너지로 조금씩 바뀌고 있다면, 철도는 전철은 진작부터 따 놓은 당상이니, 다음으로 기존 열차의 틀을 깨고 공기 저항이나 구름 마찰력을 차원이 다른 방법으로 극복해서 초고속을 실현하는 쪽으로 바뀌고 있는 것 같다.
철도가 아음속기의 속도를 따라잡을 때쯤이면 비행기는 초음속기가 다시 실용화되지 않을지?

2. 다음으로 수면에서는.. 위그선과 수중익선, 공기부양정(호버크래프트)이 있다.

(1) 먼저 위그선은 생긴 것부터가 날개가 달린 게 경비행기 내지 헬리콥터.. 어쨌든 비행기를 짬뽕한 것처럼 생겼으며, 수면 위를 수~수십 m 정도 뜰 수 있다. 덕분에 속도도 시속 수백 km에 달하고 매우 빠르다. 배멀미가 없는 것은 덤.. 그 대신 얘는 평범한 배를 운전하는 감과 노하우만으로는 제대로 조종할 수 없다.

사용자 삽입 이미지

그럼 좀 더 발전시켜서 아예 비행정이나 수상기를 만들면 되지 이런 어중간한 물건은 왜 만들까? 위그선은 비행기와의 차이가 무엇일까?
위그선은 아무래도 완전한 비행기보다는 연비가 훨씬 더 좋으며, 조종 난이도도 비행기만치 높지는 않다. 그러면서 비행기의 장점을 바다 위에서 저렴하게 얻을 수 있다. 참고로 위그선은 초저공 비행 중에 날개가 공기를 아래로 누르면서 발생하는 '지면 효과'로부터 생성된 양력을 활용해서 뜬다.

다만, 위그선은 굉장히 빠르게 날아가는 도중에 아래의 파도에 부딪히지 않게 조심해야 한다. 양력 비행이란 건 어떤 형태로든 밀도가 낮은 공기 중에서 빠르게 움직이는 것에 특화돼 있기 때문에 공기보다 훨씬 무거운 물이 기체에 부딪혀서 좋을 건 하나도 없다. 금세 자세가 흐트러지고 속력을 잃고 양력도 잃고.. 상상할 수 있는 모든 나쁜 상황이 발생한다.

위그선은 선박의 경제성과 비행기의 속도를 적당히 절충한 교통수단으로서 나쁘지 않지만.. 전문적인 선박이나 비행기의 틈새를 뚫고 독자적인 시장을 확보할 만치 획기적으로 뛰어난 물건은 아니어서 그냥 마이너한 특수 목적 교통수단의 영역에 머물고 있다. 이걸 타고 굳이 태평양이나 대서양을 건널 필요는 없으니까.. 단지 포항이나 울진에서 울릉도 정도를 갈 때, 인천이나 안산에서 백령도 연평도 정도를 빨리 가고 싶을 때 비싼 헬기를 띄우느니 이런 물건이 가성비가 좋을 것 같다는 생각이 든다.

위그선은 비행기와 선박 사이의 정체성이 무척 모호한 물건인데, 둘 중 하나만 고르라면 물론 선박이다. 법적으로 수면 위에서 고도 150m 이하로만 떠 다니는 것들은 다 선박이고 그 이상부터가 비행기라고 한다. 비행기가 이륙을 성공한 것으로 간주되는 최소 높이가 35피트(약 10.7m), 국내에서 사전 신고 없이 경량 드론을 띄울 수 있는 최대 고도가 150m이다가 최근에 최대 300m로 완화됐다는 점을 생각해 보자. (기체 반경 600m 이내에 있는 가장 높은 건물의 옥상 높이에서 추가적으로 이 높이까지)

(2) 다음으로 수중익선은 선체 아래에 U자 모양의 둥그런 '날개'가 달렸다. 주행을 시작하면 이게 물 속에서 양력을 받아서 선체를 위로 수 m 남짓 띄운다. 양력을 공기 중에서 얻는 게 아님을 유의할 것. 날개(수중익) 부위는 여전히 물에 잠겨 있는다.

사용자 삽입 이미지

세상에 이런 배도 있는 줄은 처음 알았다. 물은 공기보다 밀도가 워낙 압도적으로 더 높기 때문에 비행기처럼 크게 돌출되지도 않은 저 작은 날개만으로도 그 무거운 선체를 띄울 수 있다고 한다.
수중익선은 모든 부위가 공중에 뜨는 위그선보다야 느리다. 하지만 위그선보다 더 대형화가 가능하고, 같은 출력으로 일반 선박보다 더 빠르고 편안한(= 배멀미 없는) 운항이 가능하다는 장점이 있다.

수중익선은 저렇게 떴을 때는 물이 양력의 매체 역할만 하지 스크루를 돌려서 동력을 전하는 매체 역할을 할 수 없다. 그래서 워터제트 엔진을 따로 장착해서 물을 뒤로 뿜어서 나아간다.

(3) 끝으로, 공기부양정은 마치 호치키스처럼 본명보다도 호버크래프트라는 제조사의 이름으로 더 널리 알려져 있는데..
얘는 날개가 없고 딱히 항공역학적인 디자인이 아니다. 하체가 공기 쿠션으로 둘러져 있고, 그 공간에다 압축 공기를 불어넣어서 그 공기의 압력으로 뜬다. (양력이 아니라 추력...) 딱 자기 부상 열차가 뜨는 만치만(cm 단위..) 간신히 뜨기 때문에 공중부양(?)을 한다는 느낌이 별로 안 든다.

사용자 삽입 이미지

그 대신 얘는 위그선보다야 훨씬 더 크게 만들어서 많은 사람과 짐을 실을 수 있으며, 물 없는 바닥 위에서도 어느 정도 움직일 수 있다. 일반 선박들은 바닥이 지면과 닿으면 곧바로 긁히고 좌초하는 반면, 얘는 그런 제약이 없다는 것이다.
그렇기 때문에 공중부양정은 험한 지형의 바닷가에 상륙 작전을 펼치는 군사 용도로 매우 적합하다. 물의 저항을 덜 받는 덕분에 일반 선박보다 훨씬 더 빠를 뿐만 아니라, 훨씬 더 내륙 깊숙히 들어갈 수도 있기 때문이다. 속도는 비행기만치 빠르지는 못해도 승용차 정도는 나온다.

공기부양정은 일반 선박처럼 물에 잠긴 형태의 스크루가 달려 있지 않으며, 옛날 증기선 같은 외륜도 없다. 뒤에 달린 프로펠러가 선체 상부의 공기를 뒤로 내뿜어서 나아간다는 게 특징이다. 물이 아니라 공기를 뒤로 밀어낸다.
사실, 비행기도 프로펠러를 뒤에다 장착해서 추진하고 뜨는 게 이론적으로 가능하다. 단지, 이륙하면서 기수가 위로 들릴 때 뒤의 프로펠러가 땅에 닿을 위험이 크기 때문에 안 할 뿐...

모든 교통수단은 이것저것 겸용으로 만들면 효율이 매우 떨어지고 생산 비용도 비싸진다. 공기부양정 역시 예외가 아닌지라 일반 선박보다 수송량 대비 매우 비싸고 연비도 낮고 엔진 소리가 시끄럽다. 그렇기 때문에 잠수함처럼 민간이 아닌 군용으로 주로 쓰이고 있다.

Posted by 사무엘

2020/12/28 08:35 2020/12/28 08:35

육상 경주

‘달리기’라는 동작으로 대표되는 육상 경주는 공이나 다른 도구 같은 게 일체 필요하지 않고 그냥 몸으로 달리기만 하면 되는 매우 단순하고 원초적인 스포츠이다.
성경에 등장하며(전 9:11) 심지어 신앙 생활에 직접 비유되기도 한 유일한 스포츠이다(고전 9:24, 히 12:1).

이 바닥은 축구처럼 태생적인 피지컬에 의존하는 면모가 강하다. 특히 순발력이 생명인 단거리로 갈수록 말이다.
그만큼 선수의 은퇴 연령도 낮은 편이다. 그리고 농구와 더불어 왠지 흑형이 압도적인 우위를 보이는 경향이 있다.

100 내지 200m짜리 단거리에서는 크라우칭(엎드린) 자세로 출발을 하며, 뒷바람이 2m/s 이상으로 불 때 수립된 기록은 인정되지 않는다. 일반 여객기가 제트 기류를 탄 덕분에 잠시 음속을 넘은 것 갖고 초음속 비행이라고 인정되는 게 아니듯이..
1968년 멕시코시티 올림픽은 굉장한 고지대에서 열렸는데, 이것조차도 육상의 기록에 영향을 끼쳤다. 공기 저항이 작아져서 단거리에서는 호재였지만 장거리에서는 산소 부족 때문에 악재였다고 한다.

400m 이상 장거리 내지 마라톤으로 가면 지구력이 중요하지 스타트는 별로 중요하지 않다. 그렇기 때문에 여러 선수들이 그냥 선 채로 떼거지로(?) 설렁설렁 출발한다. 특히 마라톤은 길이가 너무 길고 개최지마다 코스의 지형이 제각각이기 때문에 서로 다른 대회의 기록을 비교하는 게 원래는 별 의미가 없다.

그럼에도 불구하고 굳이 비교하자면 마라톤 세계 기록은 2시간 1분~2분대로 좁혀졌고 2시간대가 간당간당하다. 케냐의 엘리우드 킵초게는 공식 기록이 2018년 2시간 1분 39초였는데(독일 베를린 마라톤), 비공식적으로는 이미 2019년 1시간 59분 40초를 수립했다고 한다.
참고로 마라톤 코스는 높이 변화가 1km당 1m를 넘지 않는 평지여야 한다는 조건이 국제 육상 연맹에 의해 규정돼 있다.

우리나라는 1970년생 동갑내기 마라토너인 황 영조와 이 봉주 이후로 21세기부터는 토종 육상의 명맥이 끊긴 상황이다. 그런데 어째 공교롭게도 옛날 손 기정과 남 승룡도 1912년생 동갑이다.

얼마나 재능이 뛰어나고 거기에다 살인적인 노력이 더해졌으면.. 일제조차도 내키지는 않지만 자국민 대신 조선인을 국대로 선발할 수밖에 없었을까? 그리고 이들이 어째 그 어렵고 힘든 마라톤에서 금메달과 동메달을 나란히 따 버렸을까? 너무 대단한 일이 아닐 수 없다. 손 기정은 나름 히틀러를 가까이에서 대면하고 악수도 한 유일한 한국인이다.

* 참고: 단거리 세계 기록

마라톤의 반대편 극단이라 할 수 있는 100미터와 200미터 달리기의 세계 최고 기록은.. 2010년대를 풍미했던 전설적인 육상의 천재.. 자메이카 출신의 ‘우사인 볼트’(1986-)가 수립한 9.58초(2009)와 19.19초(2009)이다.

그럼 남자가 아닌 여자는..?
역시 흑인이지만 국적은 미국 토박이인 ‘플로렌스 조이너’(1959-1998)가 수립한 10.49초(1988)와 21.34초(1988)이다.
이 사람의 100m 신기록은 미국 내부의 올림픽 국대 선발전에서 나왔으며, 200m 신기록은 서울 올림픽에서 나왔다.

먼저 남자 얘기부터 하자면, 우사인 볼트는 뭐 말이 필요하지 않았다. 자세나 식사나 의상을 별로 튜닝 하지도 않고 설렁설렁 대충 뛰어도 금메달에 신기록이 그냥 제조되어 나왔다. 이건 다른 선수들이 노력으로 극복 가능한 격차가 아니었다.
그래서 이거 약의 힘이 아닌지 수상하다고 심판진이 눈에 불을 켜고 소변 검사 피 검사 별별 검사를 다 했지만.. 우사인 볼트에게서는 그 어떤 흔적도 나오지 않았다.

이런 남자쪽과 달리.. 여자 쪽은 비록 공식적으로 약물이 적발되지는 않았지만 약의 힘이 아니었나 의심을 받고 있다.
일단 기록이 30년이 넘게 깨지지 못했으며, 시간이 무려 서울 올림픽 시절에서 멈춰 있다.

저 선수는 92년 바르셀로나 올림픽 정도까지 활동할 법도 했지만 88년을 끝으로 석연찮게 은퇴했으며, 40을 못 넘긴 젊은 나이에 석연찮은 병으로 인해 세상을 떠난 것도 약물 후유증 때문이 아니었나 의혹이 제기되고 있다.

경기 때 짙은 화장과 치장을 하고 나온 건 약물로 인한 신체 변화를 감추려는 게 아니었나 싶고.. 그 당시 같이 뛰었던 외국의 경쟁자 선수들은 이 정도면 쟤는 약을 빤 게 틀림없다고 증언했다. 얼굴을 자세히 보면 호르몬의 왜곡으로 인해 수염이 나려는 것까지 감지됐다는데..;;

그런데 우리나라는 서울 올림픽 당시, 남자 육상에서 벤 존슨의 아나볼릭 스테로이드 복용을 적발해서 크게 한 건 터뜨렸던 반면, 여자 육상 쪽은 별 말 없이 넘어갔었다. 알 수 없는 일이다.

Posted by 사무엘

2020/12/26 08:33 2020/12/26 08:33
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/1835

1.
안전벨트가 없다~!

정말 압도적인 차이점이다. 더 나아가 열차에는 구토 봉투, 산소 마스크, 구명조끼 등 그 어떤 비상용 장비도 비치돼 있지 않다.

2.
일반실 좌석은 복도의 입석 승객이 잡으라고 모서리 부분이 약간 패여서 손잡이 형태로 만들어져 있다.
버스의 경우, 시내버스만이 그렇게 돼 있다. 고속도로를 주행하는 광역/시외 이상급의 버스는 입석과 승차 정원 초과가 아예 법으로 금지돼 있기 때문에 그런 거 없다.
여객기는.. 승무원들조차 무조건 착석해야 하는 이· 착륙이라는 위험한 절차가 있는 이상, 아무리 단거리 저가 항공이라 해도 입석은 전혀 생각할 수 없을 것이다.

그 반면 열차는 버스보다 더 안전하고 더 대량 수송 지향적이기 때문에, 입석형 통근형이 아닌 좌석형 장거리 간선 차량에도 입석 손잡이가 갖춰져 있다.
심지어 시속 200~300으로 달리는 고속열차도.. 좌석에 안전벨트가 없는 걸로도 모자라 입석 승객용 손잡이까지 있는 건 철도만의 고유한 특징이 아닐 수 없다.

애초에 '고속'의 정의가 자동차 도로는 시속 100 이상이 기준이지만, 철도는 시속 200 이상이 기준이다. 또한 철도는 승객뿐만 아니라 운전자의 입자에서도 자동차처럼 2시간마다 휴식 같은 제약에서도 당연히 열외이다.

사용자 삽입 이미지

위의 사진은 일본 신칸센의 좌석이다. 창문은 마치 여객기처럼 작지만 좌석에 잡다한 안전벨트 따위가 없으며, 좌석 등받이의 양 끝 모서리에 동그란 돌기 같은 게 있다(입석 승객용 손잡이). 버스나 여객기의 좌석은 이런 형태가 절대로 될 수 없다.

사용자 삽입 이미지

국내 철도 차량의 경우, 무궁화호는 위의 사진에서 보다시피 아주 큼직한 손잡이가 있었고, 새마을호는 고급 열차를 표방하다 보니 손잡이가 아예 없었다. KTX도 원칙은 입석을 안 받는 것을 표방했기 때문에 손잡이가 없다.
그나마 ITX-새마을은 큼직한 손잡이까지는 아니고 신칸센처럼 자그마한 돌기 정도로 타협했다.

3.
앞뒤 좌석을 서로 마주보게 회전시킬 수 있다.
가족이나 친구 일행끼리 마주보면서 갈 수 있는 교통수단은 세상에 얼마 없다. 자동차의 경우 일반 버스에서는 안 되고 일명 '봉고' 승합차 정도에서나 가능할 것이다.
걔네들도 등받이를 앞뒤로 미는 것까지만 가능하지, 열차의 좌석처럼 좌석을 통째로 뱅그르르 회전시키는 것은 안 된다. 뱅그르르 회전이 가능한 건 진짜 철도 차량 객차의 좌석밖에 없다.

사용자 삽입 이미지

그리고 좌석 2개를 통째로 회전시킬 공간이 확보돼야 하기 때문에 열차 객실의 좌석은 앞뒤로도 충분한 간격이 필요하다. KTX는 이런 회전이 가능하지 않고 순방향과 역방향 배치가 고정돼 있어서 초기에 논란이 있었다.

참고로, 철도 차량 중에도 옛 통일호 객차는 봉고차처럼 등받이를 앞뒤로 미는 것만으로 좌석의 방향을 조절하는 형태였다. 하지만 이런 좌석은 등받이의 앞뒤 구분을 할 수 없기 때문에 고급화에 한계가 있다. 등받이 뒤에 컵 받침대, 개인 모니터, 쓰레기 담는 그물 등등.. 아무것도 장착할 수 없어지기 때문이다. 그러니 이런 좌석은 최하급 열차 내지 봉고차에만 머물렀던 것이다.

4.
객실과 분리된 짐칸 공간이 따로 있지는 않다.
고속버스는 객실 아래에 짐칸이 있으며 여객기는 아예 부치는 수화물이라는 개념이 따로 있다. 그래서 선반에 올리기도 힘들 정도로 거대한 캐리어 같은 건 거기에다 싣거나 보내면 된다.

하지만 철도는 운행 중에 정차가 잦다는 특성상, 객실과 분리된 짐칸이라는 걸 운용하기는 어렵다. 객실 밖의 공간에 짐칸을 둔 열차도 있긴 하지만, 이 공간은 운행 중에 아무 승객이나 자유롭게 접근 가능하다. 그렇기 때문에 도난· 분실의 위험이 약간이나마 더 높다.

5.
주행 중에 객실이 24시간 내내 가장 밝다. 이 역시 운행 중 정차가 잦다는 특성 때문에 존재하는 특징이다.
이런 이유로 인해 열차는 승차감이 좋은 것과 별개로, 밤에 탑승 중에 잠을 자는 용도로는 버스나 여객기에 비해 불리한 면모가 있다. 전용 침대차가 아닌 이상 말이다.

* 보너스: 철도 차량의 운전석 창문 밖엔 백미러가 있는가?

자동차야 후진 또는 주행 중 차선 변경을 안전하기 하기 위해 후방 시야를 확보할 필요가 있으며, 운전석 창문 밖에 툭 튀어나온 백미러라는 게 반드시 있어야 한다.
물론 이건 주행 중에 차량의 공기 저항을 늘리는 부작용이 있다. 그렇기 때문에 요즘은 이것도 다 카메라 화면으로 대체하려는 연구가 진행되고 있다. 거울보다야 콩알만 한 렌즈만 노출시키는 게 공기 저항 부담이 덜할 테니까 말이다.

버스나 트럭 같은 큰 차는 운전석의 바로 전방 아래쪽도 사각지대이기 때문에 거기를 비추는 거울도 같이 달려 있다. 자그마한 거울로 최대한 넓은 영역을 비추기 위해서 거울의 표면은 볼록하게 만들어져 있다.
이런 게 달려 있어도 차량 주변의 사각지대를 모두 없앨 수는 없다. 그렇기 때문에 사각지대 교통사고를 예방하려면 시동이 걸려 있는 대형 차량의 주변에는 차든 보행자든 너무 가까이 얼쩡거리지 않는 게 좋다.

공기 저항에 목숨 걸어야 하는 비행기는 아무래도 백미러 따위와 접점이 없는 교통수단일 것이다. 그럼 철도 차량은..?
여객열차라면 출발 전에 승객이 모두 타거나 내렸는지 확인하기 위한 용도로 저런 거울이 있으면 좋을 때가 있다.
하지만 자동차만치 절실하게 필요하지는 않다. 열차는 역에 정차하는 지점이 늘 일정하기 때문에 그냥 역 승강장의 앞쪽에다가 기관사가 볼 수 있는 커다란 거울을 비치하는 게 더 낫기 때문이다.

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

옛날 철도 차량들은 길쭉한 백미러가 기관실의 양 끝에 있는 편이었다. 기관차라든가 CDC, NDC, 심지어 새마을호 디젤 동차에도 있었다.
하지만 KTX를 비롯해 2000년대 이후에 생산된 전동차와 기관차는 그렇게 돌출된 백미러가 없으며, 앞으로도 없을 것이다. 얘들이야말로 거울 대신 측면· 후방 카메라 영상이 훨씬 더 도움이 될 것이기 때문이다.

Posted by 사무엘

2020/12/23 19:34 2020/12/23 19:34
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/1834

« Previous : 1 : ... 42 : 43 : 44 : 45 : 46 : 47 : 48 : 49 : 50 : ... 215 : Next »

블로그 이미지

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

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2024/05   »
      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:
2691543
Today:
802
Yesterday:
1354