1990년대 초중반 16비트 시절, 특히 Windows 3.x 시절엔 분야별로 이런 괴수들이 있었다.
30여 년 전의 아재 얘기이고 예전에 이 블로그에서도 다뤘던 얘기도 있지만 이렇게 한데 다시 정리해 본다.

1. 콜백 함수의 메모리 보정

80386 이전에는 CPU 차원에서 메모리 가상화 내지 보호라는 게 존재하지 않았다. 그런 환경에서 멀티태스킹이라든가 64KB 이상 메모리 접근을 구현하려다 보니 프로그래밍이 지금과는 비교할 수 없이 구리고 불편한 구석이 많았다.
운영체제에다 내가 만든 대화상자 콜백 함수를 하나 지정하려 해도 그 포인터를 바로 못 넘겨주고 이 콜백의 소유자가 누군지 레지스터에다 써 넣는 thunk를 감싸서 줘야 했다.

그래서 함수 전처리/후처리 thunk를 생성해 주는 MakeProcInstance와 FreeProcInstance라는 API가 제공됐는데..
마소의 직원도 아닌 Michael Geary라는 프로그래머가.. 빌드된 실행 파일을 살짝 후처리만 함으로써 저런 번거로운 절차 없이 콜백 호출이 되게 하는 기법을 발견해서 공개했다. (☞ 링크)

이건 이 바닥 업계를 크게 놀라게 했다. Windows를 개발한 마소에서도 자기들이 생각한 것보다 더 간편한 방법이 있었다는 것에 놀랐고, 이 기법을 차기 버전인 Windows 3.1에다 시스템 차원에서 정식 적용했다.

즉, 제3자 프로그래머는 Windows 3.0과의 호환성을 생각한다면 일일이 thunk를 만들어 주든가, 아니면 저 FixDS라는 툴로 후처리를 하면 되고..
3.1만 생각하면 된다면 저런 것 없이 프로그램을 편하게 만들면 된다.

2. 32비트 extender

Windows 3.x는 enhanced 모드에서 386 CPU에서 제공되는 멀티태스킹 관련 일부 기능만 사용할 뿐, 일단은 DOS와 마찬가지로 16비트 프로그램이었다.
그런데, 심지어 1993년에 Windows NT 3.1과 함께 PE 실행 파일과 Win32 API라는 게 정식으로 공개조차 되기 전에..!!!!
마소가 아닌 제3자 싸제 개발사에서 Windows 3.1을 위한 32비트 extender 런타임을 만든 경우도 있었다.

에 그러니까.. 옛날 도스용 게임에서 사용하던 DOS/4GW 같은 런타임의 Windows판이며, Win32s 같은 물건을 마소 말고 딴 데서 만들었다는 것이다. 미친;;
C/C++ 컴파일러로 유명했던 Watcom에서 Win386이라는 익스텐더를 만들었으며, 데이터베이스 앱인 Foxpro가 대표적으로 얘를 기반으로 동작했다. (☞ 관련 링크)

3. 32/16비트 flat thunk

Windows 95가 개발된 뒤, 마소에서는 32비트 코드와 16비트 코드 사이의 호환성 계층을 뚫어 주는 일에 진심이었다.
32비트 EXE에서 레거시 16비트 DLL의 함수를 호출하려면 뭐 thunk compiler를 돌려서 뭘 감싸 주고 메모리 주소를 무슨 세그먼트로 바꾸고 어쩌구저쩌구.. 했는데~

그 당시 Windows 95 Programming Secrets의 저자인 Matt Pietrek은 리버스 엔지니어링을 통해 마소에서 공개하지 않은 내부 API를 끄집어냈다.
이걸로 훨씬 더 간단하게 16비트 코드로 들어가는 방법을 공개하니 마소에서 그 당시에 크게 놀랐다고 한다. (☞ 관련 링크)
그 당시에 32비트 프로그램에서 시스템 리소스가 몇 % 남았다고 정보를 표시하는 건 이런 경로를 거쳐서 16비트 API를 호출해서 알아 온 것이었다.

4. 통째로 한글화

하긴, 꼭 외산 소프트웨어 말고 개인적으로 ‘한메한글 for Windows’도 굉장히 대단한 작품이었다고 생각한다.
Windows 3.x라는 준 운영체제를 통째로 마개조해서 없는 문자를 인식하게 만든 거니까.. 유니코드 시대가 도래하기 전에 말이다.

영문 원판에다가 한메한글만 씌운 게.. 마소 한국 지사에서 만든 정식 한글판보다 더 가볍고 성능이 뛰어났다. 그래서 그 시절 컴잘알들은 Windows를 그렇게 사용하기도 했다.
물론 16비트 시절에는 시스템이 불안정한 대신, 단독으로 시스템 전체에 영향을 주는 프로그램을 만들기도 훨씬 더 쉬웠었다.

그러고 보니 Windows 3.x 시절에는 껍데기 셸도 통째로 싸제 프로그램으로 갈아치우는 게 가능했다.
구닥다리 MDI 프로그램인 '프로그램 관리자' 말고 Norton Desktop을 띄운다거나, 한컴에서도 아래아한글 3.0x 시절에 '한컴 셸'이라고 꽤 괜찮은 유틸리티를 같이 선보인 적이 있었다.
이런 셸을 띄우면 Windows도 macOS라든가 NextSTEP 같은 타 운영체제와 더 비슷한 외형으로 바뀌었었다.

싸제 셸 프로그램 트렌드는 Windows 95에서 내 컴퓨터와 탐색기를 담당하는 전능하신 explorer 셸이 등장하면서 종결됐다. 이것도 참 재미있는 옛날 추억이다.;;

5. 비공식 그래픽 모드

끝으로, Windows 얘기는 아니지만..
Michael Abrash라는 프로그래머는 VGA 그래픽 카드의 스펙을 잘 뜯어보다가 제조사에서 정식 공개한 적 없는 기능을 찾아내서 발표했다.
그 당시 게임에서 많이 사용하던 320*200 mode 0x13 말고, 320*240 같은 해상도를 지원하는 일명 mode X 말이다. (☞ 관련 링크)

이 사람이 개발한 기술은 Doom 다음으로 Quake라는 FPS 게임에 도입됐다.
우리나라에서 옛날에 개발됐던 아마추어 슈팅 게임인 ‘85되었수다 / 삭제되었수다’도 내 기억이 맞다면 일반적인 mode 13h 말고 저 mode X 파생 그래픽 모드를 사용했었다.

Posted by 사무엘

2025/05/14 08:35 2025/05/14 08:35
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/2377

2. 영역 순찰

고양이는 평소에 잠을 그렇게도 많이 잔다고 한다(고양이만 그런 건 아니겠지만). 그럼 깨 있는 동안은 쟤들은 뭘 하면서 하루를 보낼까..??
물론 목구멍이 포도청이니, 여느 동물과 마찬가지로 사냥감 내지 먹이를 찾아 필사적으로 헤맬 것이다.
허나, 먹이 문제와 별개로 꼬냉이는 혼자 독고다이로 지내는 걸 좋아한다. 그리고 특정 장소 자기 '나와바리'에 대한 애착이 아주 강하다는 특성이 있다.

그렇기 때문에 꼬냉이는 하루 2~3회씩 자신의 영역을 순찰하면서 침입자가 있는지, 수상한 일이 벌어졌는지를 꼼꼼히 관찰한다고 한다. 그러면서 나와바리 경계에 있는 기물에다가 얼굴을 부비면서 자기 냄새를 묻힌다.
심지어 소변 스프레이=_=로 마킹을 하는 경우도 있다. 원래 꼬냉이는 모래· 흙 위에다가 배설을 하면서 배설물을 흙으로 덮고 파묻을 줄도 아는 깨끗한 동물인데 말이다.

집고양이와 길고양이는 그 나와바리가 실내냐 실외냐의 차이밖에 없다.
집고양이는 욕실이나 창고처럼 평소에 자기가 자유롭게 들나들 수 없었던 곳의 문이 열리면 잽싸게 그리로 들어가서 두리번거리며 냄새를 맡는다.
그리고 집사한테도 다가가서 부비부비 하면서 또 자기 냄새를 묻혀 업데이트(..)한다. 이 정도면 냄새가 무슨 지문 같은 역할이라도 하는가 보다.

지금까지 없던 낯선 냄새가 감지되는 거, 집의 가구 배치가 갑자기 달라지는 거, 다른 고양이가 자기 나와바리에 들어오거나 집에 낯선 닝겐 손님이 오는 거.. 이런 것들은 고양이에게 꽤 긴장과 스트레스를 야기한다고 한다.

3. 재개발 악재

옛날에 붉은 벽돌로 지은 단독주택이 많던 시절에는 주변에 뭔가 틈바구니 같은 게 많았다. 길고양이들이 집 담장도 넘고 골목 사이 으슥한 틈바구니에 요리조리 짱박히면서 어떻게든 지낼 수 있었다.
하지만 오로지 직육면체 상자 일색으로 너무 깔끔하게 정돈된 오늘날의 아파트숲은 꼬냉이에게 호의적이지 않다. 걔들이 지낼 만한 곳은 지하 주차장밖에 없을 듯하다.

그리고 대도시에서 수십 년 묵은 단독주택들은 다들 헐리고 재개발되는 추세이다(아마 저런 아파트 단지로?). 이건 그 나와바리에서 살고 있던 꼬냉이들에게는 재앙 같은 소식이랜다.
이거 뭐 "성북동 비둘기"가 오늘날은 "한남동 꼬냉이"로 바뀌어야 할지도..?? (한남동 일대도 한창 재개발 중이라니까)

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

그런데 중장비가 들어와서 웅웅거리면서 낡은 건물을 깨부수는데.. 거기 살고 있던 꼬냉이들은 탈출을 제대로 못 할 가능성이 높다고 한다. 자기 나와바리에 대한 집착을 못 버리기 때문이다.
쟤들은 밖으로 도망을 안 가고 더 깊은 구석에 짱박혀서 숨어 있다가, 철거된 건물 잔해에 맞거나 같이 파묻혀서 죽을 수 있다고 한다. 이런..ㅠㅠㅠ 이게 진짜 비극이다.

하긴, 겨울철에 꼬냉이가 자동차 엔진룸 안에서 웅크리고 자다가 나중에 그 차가 시동이 걸렸을 때 갈려들어갈 수 있다던데. 건물 철거 때도 비슷한 일이 얼마든지 있을 수 있겠다.

숲을 파괴해서 야생동물의 먹이나 서식지가 없어지는 게 아니다.
원래부터 사람이 살고 있던 건물들을 다 철거하는 바람에 길고양이의 서식지가 없어진다니..
이것도 오로지 꼬냉이만이 겪는 기괴한 고충인 듯하다.;;

그래서 캣맘들은 지역 관공서나 재개발 시공사에다가 민원을 넣어서 여러 조치를 취했다.
철거 예정인 건물을 가리는 외벽 아래에다가 꼬냉이가 드나들 수 있는 자그마한 구멍을 뚫는다. 그리고 그 구멍에다가 물과 사료를 놔 둬서 거기 사는 아이들이 가능한 한 밖으로 나오도록 유도하는 거다.

물론 옛날 나와바리를 탈출만 했다고 해서 다가 아니다. 그 꼬냉이들은 이제 갈 곳이 없으니 얘들을 임시 보관소로 보내서 누군가가 냥줍해 가도록 분양을 주선한다. =_=;;;
주인 없는 그 하찮은 꼬냉이들이 뭐라고 얘들을 이렇게까지 걱정하고 신경 쓰는 캣맘들이 생각보다 많더라. 주기적으로 물· 사료를 놔 두는 정도만 생각한다면 큰 오산이다.

4. 간택과 보은

저 정도로 고양이를 좋아하는 캣맘이 존재하는 이유는.. 아무래도 고양이가 귀엽기 때문이 아닐까?
하물며 밥만 주는 게 아니라 아예 냥줍까지 하는 것에는 꼬냉이의 외모가 아무래도 큰 영향을 끼친다.

물론 일개 길고양이 레벨에서 털이 완전 쌔하얀 페르시아 고양이 같은 아이를 기대할 수는 없다. 털 도색은 그냥 흑백이나 회색· 고동색· 황토색 계열의 얼룩덜룩한 흔한 잡종이 대부분이겠지만, 그래도 얼굴 동그랗고 토실토실하고 충분히 귀여운 애들은 많이 있다.

고양이 집사와 관련해서는...

  • 그러고 보니 공 병우 박사의 제자였던 송 현 선생님도 늘그막엔 길고양이 돌보는 일에 진심 재미를 붙이신 적이 있었다. 그분 살아 계시던 시절에 본인이 결혼과 꼬냉이 얘기를 같이 나누지 못하다니 아쉽다.
  • 그 밖에 유튜브에는 유명 랜선 집사들도 많이 있다. 베베집사라든가 메주..;; 와이프의 소개로 본인도 이런 세계에 대해 접했다. 이 사람들은 꼬냉이 돌보고 방송하는 일만 전업으로 하는 유튜버이다.
  • 19세기의 간호행정가 플로렌스 나이팅게일도 길고양이를 개인적으로 무려 60마리나 냥줍해서 키웠던 원조 캣맘이었다고 한다. 꼬냉이에게는 인간에게 존재하지 않는 갬성이 존재한다는 식으로까지 얘기했다.

사용자 삽입 이미지

"개는 인간을 주인으로 떠받들지만.. 고양이는 닝겐을 집사로 간택할 뿐이다~"라는 농반진반 드립이 있다. =_=;;;
고양이가 개에 비해 홀로 도도하다는 이미지가 있는 건 사실이다. 그러나 그렇다고 현실의 꼬냉이가 그 정도로 안하무인인 건 아니다. 꼬냉이는 자기 담당 집사에게 자기가 사냥한 아이템을 상납하면서 나름 '보은'을 할 줄도 안다는 게 주지의 사실이다.

본인조차도 작년에 앨리가 '보은'하는 걸 실제로 본 적이 있다. 갖고 놀라고 던져줬던 생선 인형을 물고는 본인 앞에 다시 나타난 것이다.
글쎄, 쥐나 벌레 같은 생체를 가져온 건 아니지만 일개 꼬냉이가 이런 생각까지 한다는 게 무척 놀라웠다. 그 당시에 앨리가 그렇게 선물이라도 바쳐서 우리집 안에 들어오고 싶었던 것 같다.

사용자 삽입 이미지

"장화 신은 고양이"라는 동화도 이런 꼬냉이의 특성 때문에 만들어진 게 아닐까?
꼬냉이는 앞서 가축의 용도에서 살펴봤다시피 고기, 노동력, 부산물 같은 게 애매하다. 저 동화는 그래도 꼬냉이가 유용한 구석이 있다는 걸 아주 판타지스럽게 각색한 것 같다. 일본에서는 "고양이의 보은"이라는 지브리 애니가 만들어지기도 했고 말이다.

5. 나머지 이야기들

(1) 기분 좋고 평안할 때 그릉그르르??? 골골송
평안한 상태로 바닥이 푹신한 때 꾹꾹이
기분 나쁠 때, 경계 또는 경고 모드일 때 캬아아아~~ 하악질..
요렇게 상황별로 꼬냉이의 동작을 묘사하는 용어가 있다.

(2) 글쎄, 개의 야생 에디션이 늑대이듯이 고양이도 야생 에디션인 살쾡이(삵)가 있다. 야생 에디션은 홈 에디션 대비 덩치나 공격성이 더 강화돼 있다.
참고로 하이에나는 늑대 같은 개꽈 느낌이 강하지만.. 생물학적으로는 얘도 의외로 사자나 표범 같은 고양이꽈라고 한다.

(3) 고양이는 정말 이례적으로 성경에 언급이나 등장이 전~~혀 없는 걸로 유명하다. 개, 쥐, 돼지, 말, 소, 양, 염소 등등등은 다 나오며, 레위기에서 박쥐, 펠리컨, 대머리독수리도 나오는데 말이다. 고양이는 하다못해 부정한 동물로 언급도 없다.
이에 대해서는 성경이 기록되던 시기에 지금 우리가 아는 자그마한 고양이라는 품종이 존재하지 않았기 때문이라는 설명이 있다. 성경에 닭이 나오지 않는 것처럼 말이다.

Posted by 사무엘

2025/05/11 08:35 2025/05/11 08:35
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/2376

0. 들어가는 말: 들짐승과 집짐승

자연에는 여러 동물들이 존재하는데, 어떤 종류는 인간의 입장에서 다음과 같이 이용할 가치가 있다.

(1) 일을 시켜서 부려먹기: 개, 소(농사), 말(교통수단).. 넓게 보면 서커스 묘기도 이 범주에 들겠다.
(2) 산 채로 얻는 부산물: 꿀, 알, 젖, 털 같은.. 이거 덕분에 꿀벌은 일개 곤충일 뿐이지만 축산법 상으로는 엄연히 가축이다.
(3) 죽여서 얻는 부산물: 고기와 가죽. 소, 돼지, 닭, 오리 등.. 오늘날 닭은 이 분야의 끝판왕이다.

노동력 (1)에 대해서 더 살펴보자면..
오늘날이야 자동차와 농기계 덕분에 말이나 소의 노동력이 필요할 일은 거의 없어졌다. 소는 이제 식용으로만 키운다.
그 반면, 개는 차분하고 충직한 성격 덕분에 품종에 따라 사냥개나 군견, 맹인 안내견, 마약 탐지견 같은 고도의 특수 임무까지 수행 가능한 유일한 동물이다.

냄새 맡는 능력만 따지자면 도야지가 개보다 더 뛰어나면 뛰어나지, 절대 못하지 않다. 그 커다란 콧구멍을 폼으로 달고 다니는 게 아니기 때문이다. 지능도 개나 도야지나 다 피장파장이다.
하지만 도야지는 고집 세고 인간의 훈련을 잘 따르지 않고 깩깩거리는 그 성깔이 걸려서 저런 일을 못 시키는 거다. 인간과 호흡을 맞추면서 자신의 그 능력을 인간을 위해 기꺼이 바치려는 의지가 개보다 훨씬 뒤떨어진다.

한편, 꿀벌은 (2) 꿀뿐만 아니라 충매화 기반 농작물들의 수분을 도와준다는 (1) 노동력 공로도 엄청나다고 볼 수 있다. 이걸 인간 수작업이나 기계 "따위"로 일일이 하면 사람 입으로 들어가는 농작물의 가격이 지금보다 몇 배는 뛰게 될 터.. 꿀벌의 효율과 가성비 따위는 꿈도 꿀 수 없을 것이다.

이렇듯, 인간에게 유익한 동물이 인간과 함께 지내게 되면 '가축'의 범주에 들어가게 된다.
인간을 공격하지 않고 인간의 통제에 잘 따르면서 이 테두리 안에서 스스로 번식도 하고, 저런 (1)~(3)을 더 잘하는 쪽으로 품종 개량이 진행된다.

늑대가 들개를 거쳐 우리가 아는 그런 개로 바뀌고, 멧돼지가 털 없고 엄니 없고 더 뚱뚱한 집돼지로 바뀐다. 이런 동물들은 이제 돌봐 주는 인간 없이 홀로 야생에 던져지면 제대로 못 살게 된다.
내 경험상 성경도 육상 동물을 분류할 때 포유류 양서류 같은 구분은 안 한다. 그냥 가축(cattle) 아니면 일반 야생 짐승이냐(beast) 정도로만 분류한 편이다.

산업화 이후 현대에 와서는 아래의 (4)와 (5)도 동물의 용도에 추가된 듯하다. 1차 산업이 아닌 업종에서도 동물을 필요로 하는 예외적인 사례라 하겠다.

(4) 귀여워서 정서적 교감: 집안에 들여다 놓고 키우는 애완동물..
(5) 임상실험: 제약회사 실험쥐 내지 우주 개발 초창기에 인간보다 먼저 우주로..;;

(5)는 그렇다 친다만.. (4)는 인간들이 등 따시고 배 부르고 삶에 여유가 생기면서 등장한 카테고리에 가깝다.
이와 관련해서는 개가 정말 가장 큰 변화를 겪었다. (3) 도사견인지 뭔지 멍멍탕으로 쓰이는 품종, (1) 셰퍼드, 포인터 같은 품종, 거기에다 (4) 포메라니안, 푸들 같은 애완견 품종이 다 있으니 말이다.

(4)와 (5)는 가축이라고 부르기는 조금 거시기해 보인다.
그럼 이 시점에서 이 글의 주제를 꺼내도록 하겠다. 고양이, 꼬냉이는 어느 범주에 속하는 동물인 걸까?

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

고양이는 먹이사슬 서열에서는 엄연히 사나운 육식동물이다. 허나, 덩치가 엄청 작으며 외형과 울음 소리가 기막히게 귀여운 요물이다.

꼬냉이는 개와 달리 (1) 노동력이나 (2) 부산물은 해당되지 않겠다. 아, 쥐 잡는 것 정도나 (1)에 약간 들어가려나?
개는 논란의 여지가 있을지언정 (3) 개고기를 먹기도 한다. 하지만 꼬냉이는 일부 문화권의 극소수 마이너 괴식인 나비탕 말고는 일단은 식용으로 여겨지지도 않는다. 그 마이너한 개고기보다도 훨씬 더 마이너하다.

오늘날 꼬냉이는 천상 (4) 얼굴마담 역할밖에 없는 것 같다. 그래서 그런지 얘는 우리나라 축산법상 가축으로 분류되지 않는다. 개, 돼지는 물론이고 꿀벌조차도 법적으로는 가축이지만 고양이는 그렇지 않다는 것이다.

1. 유비쿼터스 고양이

꼬냉이는 행정· 관리 측면에서 개, 돼지 같은 여느 동물과는 굉장히 다른 특성이 있다.
주인 없는 개체가 사람 사는 마을에 버젓이 돌아다님에도 불구하고.. 나랏님이 포획하지 않고 인간과의 공존을 묵인하는 유일한 동물이라는 것..

즉, 꼬냉이는 법적으로 유해조수로 취급되지 않는다. 가축도 아니고 유해조수도 아니라는 것이다.
개는 들개뿐만 아니라 애완용 댕댕이라도 주인 없이 돌아다니는 애가 있다고 119 신고가 접수되면 나랏님이 출동해서 걔를 잡을 것이다.
멧돼지는..? 더 말할 필요도 없다. 개는 꼭 죽이지 않고 최소한 보호소에라도 보내겠지만 멧돼지는 그냥 사살이다.
그 반면, 꼬냉이는 잡아서 기껏해야 TNR밖에 하지 않는다. 잡아서 중성화만 시킨 뒤, 현장에 도로 놔 준다.

이렇게 조치가 관대한 이유는.. 꼬냉이는 저렇게 놔둬도 사람에게 물리적인 위험을 끼치지 않기 때문이다.
꼬냉이를 목줄과 입마개 채우고 산책 시킨다는 말은 아무도 못 들어 봤을 것이다. 그리고 길고양이 앞에서 사람이 등을 보이고 달아난다 해도 쟤가 쫓아온다거나 하는 일은 없다. 반대로 고양이가 사람을 경계하고 도망칠 뿐이지..
꼬냉이는 극단적인 상황에서 사람을 앞발 발톱으로 할퀼 수는 있다. 하지만 멧돼지처럼 체중을 실어서 들이받는다거나(..), 개처럼 입으로 물어뜯지는 않는다.;;

다시 말하지만 꼬냉이는 본능적으로 사나운 맹수 기질이 있다. 배고프지 않아도 그냥 괜히 사냥을 하고, 사냥감을 갖고 놀기까지 한다. 단지, 그 사냥 대상이 자기보다도 더 작은 새, 개구리, 쥐, 벌레 등으로 국한될 뿐인 거지.
'종' 전체 차원에서 인간과의 공존이 용인되는 동물 중에서 제일 크고 지능 높고 귀엽다고 여겨지는 아이가 바로 꼬냉이인 듯하다. 개는 모든 종이 인간에게 무해한 건 아니니까.

그래서 그런지 꼬냉이는 우리 주변에서 생각보다 정말 흔하게 볼 수 있는 지경이 됐다.
어지간한 공원이라든가 옛날 스타일 단독주택 골목들엔 다 있고.. 의외로 아파트 단지에도 서식한다.
꼬냉이들이 지구 정복 음모라도 꾸미고 있나 하는 엉뚱한 생각이 들 정도이다.

얼마 전엔 5월 연휴를 맞이해서 부모님도 뵐 겸 고향 경주를 찾아갔는데..
황성 공원의 소나무숲엔 원래 청설모들이 있지 않았나? 그런데 지금은 거기도 청설모는 안 보이고 꼬냉이들이 어슬렁거리고 있었다. =_=;;

강아지를 키우려면 아무래도 펫샵이나 유기견 보호소를 찾아가서 애완견을 정식으로 분양받아야 할 것이다.
그러나 꼬냉이의 경우, 운 좋으면 그냥 길냥이 중에서도 상태 좋고 귀여운 아이를 '냥줍'하거나 심지어 그쪽으로부터 먼저 간택을 받을 수도 있을 것 같다.

본인이 작년 여름-가을 사이에 '앨리'라는 아이와 잠깐 있었던 시절은 꼬냉이의 이런 특성에 대해 개인적으로 진지하게 생각할 수 있었던 기간이었다.
길고양이는 완전한 야생동물도 아니고 그렇다고 애완동물도 아닌 참 애매한 위치에 있다. 그들은 완전히 산 속도 아니고 건물과 공터 곳곳에서 야금야금 몰래 살아간다. 이거 뭐 자전거도 자동차도 아닌 오토바이와 비슷한 처지인 건가?

일부 몰지각한 캣맘이 남의 집이나 차 근처에다가 꼬냉이들 먹이를 놔둬서 갈등을 빚는다. 캣맘이 그 꼬냉이들을 자기 집까지 데리고 와서 전적으로 책임지는 건 아니기 때문이다.
하지만 반대로 주인 없는 골칫거리니까, 또 어차피 오만 데 발이 채일 정도로 흔하다는 이유로 꼬냉이들을 죄의식 없이 잡아다가 학대하고 잔인하게 죽이는 일부 사람들도 문제다. 고양이는 세상에 이런 논란의 중심에 앉아 있는 특이한 존재라는 것이다.

오죽했으면 주인 없는 개의 멸칭이 '똥개'인 반면, 주인 없이 굴러다니는 고양이의 멸칭은 '도둑고양이'였다. 그게 요즘은 '길고양이'로 많이 대체됐다.
글이 많이 길어졌으니 다음엔 꼬냉이의 생태에 대해서 더 썰을 풀도록 하겠다.
아이고 이거 진작에 올라왔어야 할 글인데 요즘 정말 모든 스케줄이 질질 늘어지고 틀어지고 있다.ㅠㅠㅠㅠㅠ

Posted by 사무엘

2025/05/08 08:35 2025/05/08 08:35
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/2375

템플릿 얘기가 좀 길어졌는데.. 다음 주제는 가상 함수와 관련된 엉뚱한 생각이다.
C++이라는 언어는 앞서 잠깐 언급했던 바와 같이, '오버로딩과 오버라이딩' 사이에 뭔가 견제를 하는 게 있다.
그것과 비슷하달까, C++은 오버라이딩과 멤버 함수 포인터 사이에도 디자인 차원에서 선을 긋는 게 있어 보인다.

무슨 말이냐 하면.. 가상 함수가 존재하는 어떤 객체가 주어졌을 때, 이 객체가 참조하는 vtable 값을 직접 확인하는 것을 언어 차원에서 전혀 허용하거나 지원· 고려하지 않는다.
이 객체의 어떤 가상함수는 부모 클래스의 것과 같은지, 아니면 오버라이딩 됐는지.. 이런 것을 알 수 없다.

&obj->Foo == &TBase::Foo 이런 식으로 비교하는 거?? 가상과 비가상 불문하고 다 안 된다. 클래스의 non-static 멤버 함수의 주소를 얻는 건 컴파일 타임 바인딩이 가능한 &클래스::멤버 형태만 허용될 뿐, 런타임 바인딩인 &변수->멤버는 안 된다. 그냥 컴파일 에러로 처리된다.

멤버 함수 포인터를 이용해서 pFunc에다가 특정 클래스의 Foo를 집어넣었더라도.. (obj->*pFunc)()를 호출해 보면 obj->Foo()를 호출한 것과 동일하게 접수된다.
멤버 함수 포인터에는 자신의 vtable을 참조해서 그걸 호출해 주는 thunk 함수만 연결되기 때문이다. 그 아래의 vtable 상의 주소로 다이렉트 접근이나 제어는 안 된다! 신기하지 않은가?
(하긴, 다중 상속 체계에서는 this 오프셋 보정도 이런 thunk가 하는 일 중 하나이겠지만)

C++ 클래스에서 vtable이란 걸 바이너리 차원에서 꼭 이렇게 구현해야 한다고 C++ 표준에 규정돼 있지는 않다.
그러나 실제로 구현되는 방식은 컴파일러 불문하고 거의 뻔할 뻔자이다. 그렇기 때문에 다음과 같은 동작을 억지로 구현해 줄 수 있다.

class Base {
public:
  int x;
  virtual void VF1() {}
  virtual void VF2() {}

  void* GetFuncPtr(int n) { //0: VF1, 1: VF2
    void*** pppf = (void***)this;
    return (*pppf)[n];
  }
};

무려 삼중 포인터가 쓰인 GetFuncPtr이라는 저 함수를 주목하시라. void에 대한 포인터(1)의 배열(2)을 가리키는 포인터(3)이기 때문에 삼중이 된 것이다.
가상 함수가 들어있는 클래스는 맨 첫 멤버가 vtable 포인터이기 때문에 this에 대해 저런 형변환이 가능하다.

그 다음으로, Base에 대해 1번 함수를 오버라이드한 Derived1, 2번 함수를 오버라이드한 Derived2, 그리고 둘 다 오버라이드한 Derived3. 이 세 클래스를 다음과 같이 선언해 보자.

class Derived1 : public Base {
public:
  int y;
  virtual void VF1() {}
};

class Derived2 : public Base {
public:
  int z;
  virtual void VF2() {}
};

class Derived3 : public Base {
public:
  int w;
  virtual void VF1() {}
  virtual void VF2() {}
};

요렇게 한 뒤, Base, Derived1, Derived2, Derived3 아무 객체나 선언해서 GetFuncPtr(0)을 호출해 보면 Base와 Derived2는 같은 값을 되돌린다. Derived2는 VF1을 오버라이드 하지 않았기 때문이다.
GetFuncPtr(1)을 호출해 보면 Derived1이 Base의 것과 같은 값을 되돌린다. 이유는 동일.

그렇다고 이 주소값은 &Base::VF1, &Derived2::VF2 처럼 실존하는 멤버 함수의 주소를 C++ 연산자를 통해서 얻은 주소값과 일치하지 않는다. 이거는 멤버 함수 포인터에다가 대입해서 호출을 할 수 있지 않다.
애초에 멤버 함수 포인터는 일반 함수 포인터와 달리 임의의 정수형으로부터 대입하는 게 아예 불가능하지 싶다. reinterpret_cast나 C-style cast도 되지 않는다.
그러니 저 값은 그냥 클래스 간에 값이 같은지 다른지 비교 용도로만 써먹을 수 있을 뿐이다.

그리고 사실은 언제나 저렇게 가상 함수 2개짜리 vtable이 생긴다는 보장도 없다.
클래스를 만들어서 멤버 함수를 virtual로 선언했지만 실제 코드에서 이 클래스의 인스턴스를 한 번도 포인터로 접근하지 않아서 런타임(다이나믹) 바인딩이 필요하지가 않다면..
컴파일러가 최적화 스킬을 발휘해서 vtable을 곧이곧대로 만들지 않을 수도 있다. 그러면 우리가 저렇게 만든 GetFuncPtr 함수도 제대로 맞게 동작하지 않을 것이다.

일반적인 함수라면.. 형태가 너무 단순해서 컴파일러가 평소에는 인라이닝이나 인트린식으로 실컷 최적화한다고 하더라도 그 함수의 주소가 필요할 때는 일반적인 함수 포인터 값이 반드시 제공돼야 한다. 최적화는 부가 기능일 뿐이지만, 함수 포인터는 언어 스펙에서 제공되는 필수 기능이기 때문이다.
그러나 vtable에 명시된 함수 주소는 그렇게 공식적으로 제공되는 기능이 아니다. 프로그래머가 언제까지나 꼼수로.. at your own risk를 염두에 두고 써야 한다.

이상이다.
글을 맺으면서 문득 드는 생각인데.. C++의 RTTI (런타임 type info)가 내부적으로 구현되는 방식도 가상 함수가 구현되는 방식과 아주 밀접한 관계가 있으며, 서로 떼어서 생각할 수 없어 보인다.

vtable이라는 게 결국은 한 클래스와 무조건 일대일 대응하는 고유한 정보이니, 참조하는 vtable이 동일한 객체는 동일한 클래스의 인스턴스임이 보장되기 때문이다.
그러니 자기 클래스의 이름이라든가, 부모 클래스 목록 같은 RTTI도 vtable과 함께 두거나 최소한 RTTI를 가리키는 포인터를 vtable에다가 둘 법도 해 보인다. dynamic_cast 연산자는 그런 정보를 참조하면서 동작하면 될 테고.

아 그런데.. 이런 깔끔한 관계는 단일 상속 체계에서나 보장되겠다;;
다중 상속이라면 2개째 이후의 기반(부모) 클래스에 대해서 매번 vtable 포인터가 또 추가될 테니 일이 정말 복잡해지겠다.
단일 상속에서는 복잡도가 뭔가 1씩 더해지는 것만 생각하면 됐는데, 다중 상속에서는 2씩 곱해지는 수준으로 복잡도가 폭발적으로 증가한다.;;

그러니 C++ 표준화 이전부터 RTTI를 자체 구현했던 C++ 프레임워크들은(가령, MFC 같은 골동품) 그런 건 깔끔하게 포기하고 단일 상속만 염두에 두고 저런 기능들을 구현했지 싶다.

말이 길어져 버렸는데.. 암튼 이 글의 결론은
"이 ptr은 Base의 파생 클래스이긴 한데요, 특정 무슨 함수가 오버라이드 돼서 Base의 원래 것과는 달라졌는지 아닌지만 좀 알 수 있을까요?"
요건 언어 차원에서 알려주지 않는다는 것이다. 그런 건 query하는 함수를 사용자가 수동으로 구현해 줘야 한다.

Posted by 사무엘

2025/04/17 08:35 2025/04/17 08:35
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/2374

객체지향 언어라면 파생 클래스 코드에서 기반 클래스의 멤버에 접근하는 것이야 너무 당연히 가능하다. 상속을 protected나 public으로 받기만 했다면 말이다.
기반 클래스의 scope에서 선언된 내부 클래스라 하더라도 마음껏 인스턴스를 만들고 참조할 수 있다.

class Base {
protected:
  int x;
  class InnerClass {
  public:
    int z;
  };
};

class Derived: public Base {
public:
  void Foo() {
    x = 100; //base 꺼
    InnerClass o; o.z = 100; //base 꺼
  }
};

그런데 이게 평범한 클래스가 아니라 ‘템플릿 클래스’라면 상황이 어찌 될까?

template<typename T>
class TBase {
protected:
  int x;
  class InnerClass {
  public:
    int z;
  };
};

template<typename T>
class TDerived : public TBase<T> {
public:
  void Foo() {
    x = 100;
    InnerClass o; o.z = 100;
  }
};

한동안은 이 코드는 잘 통용됐다. 문법적으로 아무 하자가 없어 보이지 않는가? 내가 아는 한 Visual C++ 2010 컴파일러 정도까지는 이상이 없었다.
그런데 2010년대에 C++ 표준이 바뀌었는지.. 저건 후대의 버전부터는 컴파일되지 않고 오류를 일으키기 시작했다.
2019/2022에서 말이다. 그 사이에(2012, 13, 15, 17??) 정확히 언제부터 변화가 생겼는지는 잘 모르겠다.

TDerived에서 기반 클래스 멤버인 x에 접근하는 것 자체가 언어 차원에서 봉쇄되고 금지된 건 아니다. 단지, 템플릿 클래스에서 코드의 의미 명료화를 위해 좀 깐깐한 조치가 취해진 것 같다.

TDerived에서 x에다 접근하려면
this->x 라고 일일이 쓰든가, 아니면 TBase<T>::x라고 타입을 명시해 줘야 한다. 그 x를 지칭하기 위해서 어쨌든 x 단독으로 방치만 하지 않으면 된다.

CInternalClass도 주변에다 좀 decoration을 해 줘야 한다. 얘는 멤버 변수나 함수가 아니라 타입이다 보니.. typename 내지 using 처방을 해 주면 된다.
참조할 때 매번 typename TBase<T>::InnerClass 이러던가..
아니면 TDerived의 선언부에다가 using InnerClass = TBase<T>::InnerClass 이렇게 박아 주고 나서 다음부터 InnerClass만 쓰면 된다.

흐음~~
내가 기억하기로 C++에서 템플릿이라는 건 처음 도입됐던 시절엔 거의 C++판 매크로나 마찬가지였다.
템플릿 인자가 무엇이 들어오느냐에 따라 코드의 의미가 귀에 걸면 귀걸이, 코에 걸면 코걸이(특히 값이냐 타입이냐)처럼 완전히 달라질 수 있었기 때문이다.

T가 int냐, double이냐, 1000바이트 짜리 뚱뚱한 클래스냐~ 이거는 컴파일러 입장에서 단순히 코드 생성이나 최적화 전략만을 좌우할 것이다.
그러나 T::member 이런 거는..? T에 어떤 클래스가 오느냐에 따라서 member는 멤버 변수? 멤버 함수? 심지어 내부의 다른 클래스/enum 이름이 될 수도 있다. 멤버라 하더라도 static 멤버가 될 수 있고, non-static이 될 수도 있다!

이러니 템플릿 코드는 그거 단독으로 문법 체크를 하는 게 매우 난감했다.
템플릿에다가는 그 어떤 아무말을 씨부려 놔도 그 자체는 컴파일러가 전혀 개의치 않고 넘어갔다. #define MACRO(x) 그 다음에 그 어떤 아무말을 씨부리건 이것만으로는 컴파일 에러가 발생하지 않는 것과 같은 이치이다. 에러는 이 매크로를 사용하는 곳에서 발생할 뿐..

템플릿도 TBase<int>건 TBase<POINT> 처럼 그 템플릿에다가 인자를 줘서 실제로 사용할 때에야 파싱과 코드 생성이 시작됐다. 그때에야 에러가 발생했다.

그랬는데.. 요즘 C++ 언어의 디자인 추세는 템플릿이 너무 무질서하고 자유도가 너무 높은 것을 통제하려는 것 같다.
특히 템플릿만을 단독으로도 최대한 분석한다. 템플릿 인자로 그 무엇을 넣더라도 그와 무관하게 무조건 구문 실패와 에러가 발생할 만한 것은 굳이 템플릿을 실제로 사용하지 않더라도 지적해 준다.

일례로, 위의 코드에서 TDerived::Foo() 안에다가 x=100이 아니라 y=100을 넣으면 바로 에러가 난다.
이렇게 하려다 보니 T::member라는 토큰은 템플릿 인자 T에 무엇이 들어오건 최소한 멤버인지 타입명인지 정도는 고정적으로 의미 보장이 돼야겠다. 그래서 typename T::member 같은 조치가 취해졌다.

그리고 T에 무엇이 들어오건 주변 문맥을 고정시켜야겠으니 implicit하게 부모 클래스 멤버에 접근 가능하던 혜택(?)도 없어진 것이다.
그 혜택을 다시 입고 싶으면 using을 활용해서 직접 요청을 해야 된다. using은 typedef의 상위 호환 대체제이기도 하니..

왜, 같은 이름의 함수로 오버로딩과 오버라이딩을 동시에 시도했을 때도(예: virtual void foo()와  void foo(int)를 동시 시도) 파생 클래스에서는 오버라이딩 되지 않은 부모 클래스 멤버로 자동 접근하는 건 "막힌다". 그런 것과 비슷한 느낌이 든다.
막힌 멤버로 접근하려면 역시 부모 클래스 이름을 일일이 써 주거나, using Base::foo 라고 자동 접근 요청을 해야 된다. 이 조치도.. 나중에 일부러 취해진 것이다.

C++ 템플릿은 임의의 타입들을 다 boxing해서 단일 바이너리(컴파일된 코드)만으로 모든 템플릿 인자를 담당하는 '제네릭' 같은 물건이 아니다. 하지만 그렇다고 정말 귀걸이 코걸이가 다 되는 C++판 매크로도 아니니.. 그 중간의 다른 무언가를 지향하는 것 같다.

자, 본인이 이 글을 쓰게 된 계기는..
이 홈페이지의 옛날 자료실에 있는 "정렬 알고리즘 모음집" C++ 코드가 최신 컴파일러에서는 컴파일되지 않는다는 걸 뒤늦게 발견했기 때문이다.
템플릿 클래스 사이에 상속을 구현했는데.. 이제는 코드를 한참 뜯어고쳐야 컴파일 될 것 같다. ㄲㄲㄲㄲㄲ
이 참에 옛날 자료실을 다 github로 옮기는 것도 생각해 봐야겠다.

Posted by 사무엘

2025/04/14 13:00 2025/04/14 13:00
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/2373

1. 톰 아저씨의 오두막 (1852)

이 소설은 흑인 노예 제도가 있던 19세기 미국의 역사를 바꿔 놓은 엄청난 명작 화제작 문제작이었다. 작가는 '해리엇 스토(우)'라는 이름의 목사 사모이다.
주인공인 톰은 흑인 노예이지만 기독교 신앙으로 똘똘 뭉친 초 대인배 성인군자이다. 그는 처음에는 선한 백인 집안에 소속돼 있었지만, 거기 가세가 기울면서 하필 악한 백인에게 팔려 간다.

그 악한 주인도 톰이 일꾼으로서 아주 유능하다는 건 금세 알아본다. 그래서 그는 톰에게 완장을 씌워 주고는 동료 동족 노예들을 줘 패고 학대하면서 군기 잡고 관리하라고 지시한다. 그러나 톰은 이에 불응한다.
단순히 어렵고 힘든 일이나 주인의 목숨을 구하는 일이라면 자기 목숨을 걸고라도 하겠지만, 저런 반인륜적인 명령은 따를 수 없다고 말이다.

톰은 그 댓가로 자기가 악한 주인에게 직접 잔인한 폭행을 당하고 죽도록 얻어터진다. 그는 뒤늦게 찾아온 옛 주인 가족들이 보는 앞에서 기력이 다해 죽고 만다. 그런데 그는 죽어가는 와중에도 악한 주인을 미워하거나 저주하지 않고 그를 위해서도 중보 기도를 한다.

이야~ 신파가 통하던 낭만주의 시절에 이런 소설이 하나 있었으면 독자들이 다들 울고불고 했지 싶다.
뭐, 19세기 중반이면 서구 제국주의 열강 사이에서도 노예 제도는 거의 끝물을 경험하고 있었다. 아 물론 인종 차별과 식민지 착취는 당연히 있었지만, 최소한 국가 차원에서 휴먼 노예를 대놓고 경매장에다 진열하고 값을 흥정하고 사고 파는 짓거리는 없어졌다는 뜻이다.

그리고 더 중요한 거.
노예 제도를 옹호했던 미국 남부라고 해도, 실제로 흑인 노예를 거느릴 경제력이 되는 계층은 아주 소수의 농장주 지주 급 금수저들뿐이었다. 그때 성인 노예 1인은 요즘으로 치면 고급 승용차나 상용차(트럭..)에 맞먹는 비싼 가격을 자랑했기 때문이다.

남부 농촌 사람들이라고 해서 집집마다 흑인 노예 한둘씩 데리고 있었던 게 절대 아니다. 월급 주고 부리는 가정부 메이드랑 헷갈리지 마시라.
그럼에도 불구하고 노예도 없는 흙수저 주제에 남부 사람들이 노예 제도 수호를 위해 남북전쟁 때 기꺼이 참전한 이유는..
"내가 비록 직접 노예를 갖고 있지는 않지만 남의 노예라도 몽땅 해방돼 버려서 나랑 동급의 신분이 되는 건 용납할 수 없지!" 이런 심리 때문이었다고 한다. -_-;;;

암튼.. 이렇게 남북전쟁까지 촉발시킨 이 소설의 제목은 Uncle Tom's Cabin이고, 부제는 Life among the lowly (밑바닥 인생)이었다.
이게 우리나라엔 이 광수(19xx 일제 시대), 계 용묵(1954) 같은 소설가에 의해 번역되어 소개됐는데..
이때는 소설 제목이 "검둥이의 설움"....;;;;이라고 붙여졌다!! ㄷㄷㄷㄷㄷ 원제와 부제 내용을 저렇게 적당히 섞은 것 같다.

사용자 삽입 이미지

성인군자 톰이 일체의 물리적인 저항· 항쟁 없이 거의 순교자처럼 죽는 슬픈 소설을 읽고 숙연해져 있었는데 그 당사자가 한낱 검둥이래~ㅠㅠㅠ 완전 현타 온다.
지금은 한국어 검둥이도 영어 ni***와 맞먹는 인종차별 멸칭으로 전락했으니 말이다.. 거 참 '동무, 빨갱이' 이런 단어처럼 멀쩡한 단어가 어감이 타락해 버렸다.

하긴, 1950년대 동시기엔 미국에서도 담배 광고에 방긋 웃는 아기 얼굴이 들어갔고, "의사들이 가장 많이 선택한 최고의 담배!!" 이 짓거리가 행해졌다.
그리고 남편이 가장의 권위 유지(...)를 위해 필요하다면 마누라라도 볼기를 패서 훈육해야 하는지를 갖고 신문에서 독자들끼리 논쟁을 했었다. 그만큼 그때와 지금은 시대가 사람들 상식과 통념이 서로 극단적으로 달라졌다. (☞ 이전 글 )

우리나라는 지리적 배경 때문에 히틀러나 나치에 대한 반감은 서구권보다 덜하고, 인종 갈등도 미국에 비할 바가 아니다.
옛날에 김 태영 국방부 장관이 재임 중에 "아프리카는 온통 밀림 속에서 무식한 흑인들이나 뛰어다니는 곳이다"라고.. 가히 "민중은 개돼지"를 능가하는 말실수를 했던 바 있다.. 제주 해군 기지가 필요하다고 설득하던 중에 저런 말이 도대체 왜 튀어나온 걸까? =_=

그래도 저것도 그냥 해프닝으로 끝났다. 저 말 때문에 저 사람이 옷 벗고 커리어 끝장나거나, 밤에 골목길에서 칼빵 맞는다거나 하지는 않았다.
반대로 우리나라도 수십 년 전에 LA 폭동 때 궤멸적인 피해를 입었지만.. 그게 딱히 인종차별이나 흑인 혐오 정서로 이어지지도 않았다. 그냥 전반적으로 무덤덤한 거다. '흑형' 정도면 중립적이거나 오히려 긍정적인 말 아닌가? =_=

다 좋은데.. 애들 보는 멀쩡한 동화 애니메이션 주인공의 피부색은 좀 건드리지 않았으면 좋겠다. =_=;;;;;;;;; 특히 요즘 D모 사 작품들 말이다. =_=;;

2. 장발장 (1863)

아이고, 톰 아저씨 이야기가 너무 길어졌다.
톰 아저씨로부터 10년쯤 뒤에는 프랑스에서 '빅토르 위고'라는 대문호가 그 이름도 유명한 '장발장'이라는 소설을 발표했다.

'장발장'은 거기 나오는 주인공의 이름이고, 소설의 원제는 '레 미제라블' -- 비참한 사람들이다. 이거 마치 노래에 대해서 "가사 첫 줄 vs 원제"와 비슷한 관계이려나?
톰 아저씨 소설의 부제에도 the lowly 밑바닥 하층민라는 단어가 있기는 하다만, 장발장은 아예 '비참한, 가련한'이라는 단어가 있다.

이 소설을 어린 시절에 요약본 동화로만 접한 사람은 그냥 생계형 잡범 누범이 어느 성직자의 도움으로 개과천선해서 사회에 공헌하는 인재가 됐다~~ "끝" 이렇게만 생각할지 모른다. 솔직히 나도 그 정도밖에 모른다.
하지만 이거 원작은 1000 페이지를 넘는 대하드라마 급 장편 소설이랜다. 혁명기 시절의 프랑스 역사를 미주알고주알 다루면서 서민들의 비참한 삶과 동심파괴 면모들을 그대로 고발하고 폭로했다고 한다.

'장발장'... 이름으로나 캐릭터로나 머리가 더부룩한 '장발'-_-;;;인 떡대 남자가 떠오른다만..
살아 온 배경은 완전히 다르지만 이 사람하고 톰 아저씨도 접점이 완전히 없지는 않은 것 같다.

사용자 삽입 이미지

이 소설은 1910년대에 최 남선이 번역해서 국내에 처음으로 소개했다고 한다. 그 긴 원판을 몽땅 번역한 건 당연히 아니고 요약본일 텐데... 이 양반은 제목을 "너 참 불쌍타"라고 붙였다.;;;; 그래, 비참하고 가련한 사람들이니까 불쌍하지. ㅠㅠㅠㅠㅠ

3. 옛날 영화 제목의 음역· 번역

(1) The Sword And The Sorcerer (1982)

사용자 삽입 이미지

스워드 ㄷㄷㄷㄷㄷㄷㄷㄷ..!!!
뭔가 스물스물 스웜 sworm 같다. ㅋㅋㅋㅋㅋㅋㅋ

(2) The Hidden (1987)

사용자 삽입 이미지

하이든~~ 아놔ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
본토에서는 단모음인데 우리나라에서 장모음을 쓰는 게 DirectX (다이렉트/디렉트) 같은 것도 있다만.. 하이든은 너무했다 ㅠㅠㅠㅠㅠㅠ
작중의 외계 악마가 락 음악이 아니라 서양 클래식을 좋아할 것 같다 이 말이다~~!!

사용자 삽입 이미지

하긴, 영어로 저렇게 "동사의 과거분사형"만 꽝 박아놓은 제목은 우리말로 직역이 난감하다.
그래서 Frozen은 겨울왕국이라고 좀 의역됐고, Taken은.. 걍 테이큰이라고 음역됐다.

(3) The Hitman (1991)

사용자 삽입 이미지

이건 뭐 번역도 다른 영단어로 하다니 참 난감하다.
히트맨은 암살자~~ 이런 뜻이다만, 스트롱맨은 도대체 뭐냐. ㅋㅋㅋㅋㅋ
그 와중에 "네놈을 살려 두긴 '쌀'이 아까워!!"도 백미다. 너무나 한국적으로 광고카피를 만들었다.

이렇듯, 소설이고 영화고 제목을 우리말로 꽤 창의적으로 옮긴 사례들을 나열해 보니 참 재미있고 병맛스럽다. ㅋㅋㅋㅋ

Posted by 사무엘

2025/04/02 19:35 2025/04/02 19:35
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/2372

다음 버전 개발 근황

아이고~ 3월 초 이후로 무려 3주 가까이 블로그에 새 글이 또 끊겼다.
그 사이에 나라엔 괴물 산불 때문에 정말 궤멸적인 피해가 발생했다. 이 와중에 대통령 탄핵은 인용되건 기각되건 이것도 엄청난 후폭풍 파장을 불러일으킬 것이다.

경제 성장이 멈춰서 기업들이 채용을 안 한다네, 자영업자 소상공인들이 지금이 IMF/코로나 시절보다도 장사가 안 된다며 울상인 거는 더 말하면 입만 아프고..
기름값이 좀 내려간 건 좋다만, 그거 말고는 전반적인 나라 상황이 별로 좋지 않다. ㅠㅠㅠ

그래도 이 와중에 본인은 정말 찔끔찔끔 느릿느릿이나마 날개셋 브랜드 프로그램들의 다음 버전 개발을 진행하고 있다.
마지막 버전이 나온 지 벌써 1년이 돼 가는데.. 어지간해서는 올해 상반기는 안 넘기고 죽이 되건 밥이 되건 업데이트를 좀 하고 싶다. 구체적인 시기나 정확한 다음 버전 번호는 아직 미정이다.

현재까지 작업된 것 중에 대외적으로 자랑할 만한 아이템들은 다음과 같다.
막 거창한 작업은 못했고, 그냥 이미 제공되는 기능과 UI들의 완성도를 더 높인 것들 위주이다.

1. 편집기 프로그램의 문자표 대화상자가 다음과 같이 많이 개선되었다.

(1) 오랜 숙원이었는데.. 드디어 U+10000 이후의 확장 평면 글자들에 대해서도 명칭이 나오게 했다.
문자표 대화상자뿐만 아니라 입력 도구 문자표와 이모지 문자표도 모두 동일한 혜택을 입었다.

사용자 삽입 이미지

각각의 이모지들에 대해서도 정확한 설명이 나오는 게 참 좋다.

이건 정확히는 Windows 10 2017년도 언젠가부터 도입된 유니코드 라이브러리를 활용해서 동작한다. 기존 BMP (기본 다국어 평면) 문자의 명칭을 얻는 API와는 다른 새로운 API를 사용한다.
단어들이 몽땅 대문자로 찍혀서 기존 BMP 영역의 명칭과는 이질감이 느껴진다만, 이건 어쩔 수 없는 듯.
마소에서는 왜 이미 만들어 놓은 기존 API를 확장하지 않았는지 그게 개인적으로 의문이다.

(2) '종류'를 'KS X 1001'이나 '모든 한글 자모'처럼 '글꼴이 지원하는 모든 문자'보다 작은 문자 집합을 사용할 경우, 그 문자 집합에 존재하는 유니코드 영역만 '바로가기'에 남게 했다.
이것도 개인적으로는 꽤 오랜 숙원이었는데 드디어 이뤘다.

사용자 삽입 이미지

(3) '모든 한글 자모'에는 지금까지 오로지 표준 한글 자모만이 표시되곤 했는데..
여기 뒷부분에다가는 호환용 한글 자모도 추가했다. 현실에서는 한글 낱자를 표현할 때 이게 워낙 많이 쓰이기 때문이다. 코드 순이 아니라 사전 순으로 표시된다는 점에서 의미가 있다.

(4) 이 대화상자에서 '바로가기'를 등록한 것과, 문자표 입력 도구에서 '사용자 정의 문자표'를 지정한 것이 서로 연계되게 했다.
한쪽에서 문자를 등록하거나 제거한 뒤 대화상자/창을 닫으면, 다른 쪽을 열 때 그게 반영되어 나온다.

사용자 삽입 이미지

(5) 그리고 끝으로.. 이렇게 바로가기/사용자 정의 문자표를 등록한 것은 레지스트리에 저장도 되게 했다.

2. 편집기의 다른 UI와 동작들도 자잘하게 개선됐다.

사용자 삽입 이미지

(1) '기타 가져오기' 대화상자의 '실행 위치'에 현재의 커런트 디렉터리가 cue text로 표시돼 보이게 했다. 사용자는 이 프로그램이 어느 디렉터리를 기반으로 실행되는지를 바로 알 수 있다.

(2) 그리고 저 '/' 버튼을 눌렀을 때 표시되는 디렉터리 선택 대화상자를.. 재래식 스타일 말고 최신 스타일로 표시되게 했다. 에 그 뭐냐.. 기존 파일 선택 대화상자를 변형해서 디렉터리 선택 모드로 표시하는 거 말이다.
재래식 스타일(browse for folder)은 한눈에 봐도 좀 낡고 구려 보인다. 아래 스샷을 참고하시라.

사용자 삽입 이미지

(3) 이 프로그램에는 지금 편집 중인 문서 파일이 있는 위치(디렉터리)에서 '명령 프롬프트'를 여는 기능이 있다.
이게 지금까지는 cmd.exe / command.com이라는 실행 파일 이름을 하드코딩 하는 무식한 방식으로 구현되어 있었다.
그러나 이제는 COMSPEC이라는 환경변수를 통해 저 프로그램 이름과 위치를 얻어 오는 걸로 바뀌었다. 이건 뭐 아주 자잘하고 사소한 변화이다.

(4) 이 프로그램에는 '모두 저장'이라는 명령이 있다.
이건 내용이 변경된 문서 창들에 대해서 일괄적으로 저장 명령을 내리는 기능인데..
우리 쪽에서 내용을 변경하지 않았더라도 외부에서 파일 내용이 바뀐 것도 감지해서 어떻게 할지 사용자에게 묻게 했다. (그걸 불러오거나, 아니면 우리가 저장을 다시 해서 덮어쓰거나)

어쨌든 save all 명령이 한번 성공적으로 수행되고 나면 그 어떤 경우든 메모리로 읽혀져 있는 텍스트 내용과, 파일로 저장된 텍스트 내용이 서로 동기화가 되게 했다.

3. 그 밖에

(1) 텍스트 필터, 입력 도구 등~~ 분야별 각종 기능 목록에서 말이다.
별도의 추가적인 설정 사항이 없는 기능을 선택했을 때는 설정 버튼이 처음부터 흐려지고 눌러지지 않게 했다!!

사용자 삽입 이미지

햐~ 이것도 진작에 조치를 취했어야 했는데 왜 이제야 아이디어가 떠올랐나 모르겠다. ㄲㄲㄲㄲㄲㄲ

(2) 날개셋 제어판의 '낱자 처리' 탭에서 한글 낱자들을 선택하는 컨트롤 말이다.
회색으로 표시되는 초성 ㄱㄴ, 종성 ㄱㄷ처럼.. 내 프로그램에서만 편의상 사용하는 비표준 낱자들은 기본적으로 표시되지 않게 했다.
이전까지는 표시하는 게 디폴트, 숨기는 게 옵션이었던 반면, 이제부터는 숨기는 게 디폴트, 표시하는 게 옵션으로 정책을 바꿨다.

(3) '화면 키보드'에서 글쇠들의 배경색을 미묘하게 바꿨다. 문자 글쇠는 흰색으로, ctrl/shift 같은 비문자 글쇠는 회색으로 나오게 했다. (저 스샷 상으로는 회색이 너무 연하긴 하다만..)
흠, 옛날 쌍팔년도 시절 XT니 286이니 하던 시절엔 컴터 키보드가 다들 이런 색깔이었던 것 같은데.. 거기에서 착안했다. 요즘은 그런 고전적인 배색을 찾기 어려운 듯..

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

이 흰색과 회색 구분은 단순히 붙박이로 고정되어 있지 않다.
현재 입력 스키마가 가로채어 사용하는 글쇠는 흰색, 그렇지 않은 글쇠는 회색이다.
그렇기 때문에 '빈 입력 스키마'일 때는 모든 글쇠가 예전처럼 회색으로 나온다.
아직도 화면 키보드에 이렇게 자잘하게 개선할 게 있었다니 참 신기하다. ^^

(4) '한글 로마자 입력기'의 '공진청' 방식에서 ㅝ가 입력되지 않던 것을 바로잡았다.
이건 내 기억으로 거의 작년 8월에 외국인 사용자에게서 메일을 통해 오류를 제보받았던 건데.. ㅠㅠㅠ
프로그램이 그때 이후로 아직까지 버전업이 되지 않아서 개선 사항이 반영되지 못했다.

이상이다.
생각 같아서는 외부 모듈에서 '일본어 IME와 같이 사용할 때 전각/한영 상태 이슈', 'space 가로채기 여부를 보정 옵션으로' 이슈를 꼭~~ 처리하고 싶은데.. 이게 다음 버전에 들어갈 수 있을지 모르겠다.

4. 타자연습도..

(1) 타자연습은 딱 하나.. "로그인 하지 않은 익명 상태일 때 날개셋 편집기의 글꼴 설정을 가져오게 하기"만이 작업되어 있다.

(2) 타자연습 내부에서 날개셋 제어판을 꺼내는 곳은 지금처럼 설정 대화상자 내부가 아니라 주 프로그램 창으로 옮길 예정이다.

(3) 이것 말고, 긴글 연습을 끝까지 마치고 나서 다시 들어갔을 때 한글 입력 설정이 깨지고 프로그램이 뻗는 매우 중대하고 심각한 문제가 사용자의 신고로 접수됐고 내 자리에서 재연까지 확실하게 됐다.
이건 0순위로 해결돼야 하고 무조건 다음 버전이 나와야 할 안정성 문제인데, 정말 답답하게도 아직 정확한 원인 파악과 해결이 안 됐다. =_=;;; 어쨌든 이거 해결 없이는 다음 버전 없다.

내일 지구가 멸망한다 해도 코딩 할 거리는 왜 이리 많나 모르겠다.
내 프로그램 관련 소통 창구로 구글 포럼을 개설할까... 이것도 일단 생각할 거리이다.
10여 년 전엔 페이스북 플러그 인을 개설한 적이 있었는데, 뭐가 잘 안 돼서 얼마 못 가 닫았었다.

Posted by 사무엘

2025/03/28 23:03 2025/03/28 23:03
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/2371

작년 말~올해 초의 국내 철도 동향

2024년 말부터 2025년 초 사이에는 전국 곳곳에서 여러 철도들이 신규 개통하거나 리마스터링(!!) 됐다. 오랫동안 공사가 진행됐던 게 이렇게 결실을 맺으니 기쁘다. 종축 간선들의 개통 내역이 서쪽에서 동쪽으로 얼추 시간 순으로 정렬되는 게 절묘하다는 느낌도 든다.

1. 서해 노선들

(1) 2024년 11월 2일부로 장항선의 신창-홍성 약 36km 구간이 복선화에 이어 전철화까지 완료됐다.
장항선이야 뭐 10년도 더 전부터 대대적인 선형 개량과 복선 전철화가 진행돼 왔다. 수도권 전철 1호선은 천안을 넘어 신창까지만 가지만, 더 아래의 일반열차 구간들도 자동차 도로와의 경쟁력을 확보하기 위해 현대화가 진행 중이라는 것이다.

그 과업이 지금도 완전히 끝난 건 아니다. 과업 구간을 홍성 이북과 이남으로 나눠서 이북부터 먼저 개통하고, 나머지 구간은 2~3년 뒤에 끝내려는가 보다.

예로부터 장항선은 수요가 제법 있어서 1시간에 1대꼴로 열차가 다녔다. 단선으로서는 선로 용량의 한계에 가깝게 열차를 운행시킨 것이었는데 이 때문에 지연도 아주 잦았다. 장항선이 리마스터링 되면 이런 불편이 많이 해소될 것이다.
장항선은 옛날에 새마을호가 다닌 가장 짧은 노선이었으며, 구특전 새마을호가 투입됐고 새마을호가 퇴역(객차형, 2018)한 최종 노선이기도 했다.

(2) 그리고 같은 날 서해선 서화성-홍성 약 90km에 달하는 구간이 완공되어 개통했다. 아까 장항선의 복선전철화를 홍성 이북부터 먼저 완공한 이유가 바로 이 서해선과의 연계를 위해서였다. 차량은 ITX-마음이 투입됐다.

그런데!! 수도권 전철 서해선은 대곡에서 원시까지 다니지만.. 원시에서 서화성을 잇는 6km짜리 구간은 아직 완공되지 않았다. 북쪽의 수도권 전철 서해선과, 남쪽의 일반열차 서해선이 아직 연결되지 않고 따로 노는 상태이다. 서해선 역시 장항선의 전구간 리마스터링과 비슷한 시기에 완공될 것 같다.

(3) 끝으로, 평택에서 서쪽으로 분기하는 지선 철도인 일명 ‘평택선’도 변화를 겪었다. 여기는 평택항과 미군 기지 때문에 진작부터 철도의 필요성이 제기돼 왔는데 정작 철도가 너무 늦게 만들어진 것 같다.

2015년 2월에 평택에서 창내까지 8km 구간이 개통했고, 2024년 11월엔 이 선로가 더 연장되어 서쪽의 서해선 안중 역까지 연결됐다. 그리고 전 구간이 복선화는 아니어도 전철화됐다. 이런 과업이 이뤄졌으니 장항선과 서해선뿐만 아니라 평택선까지 다같이 합동 개통식을 할 만도 하다.

평택선은 서해선보다도 더 서쪽으로 뻗어서 평택항+아산 국가산업단지 부근의 ‘포승 역’까지 이으려는 연장 계획이 있다. 이것도 굉장히 오래된 계획이긴 하지만 아직 구상 단계에 머물러 있다. 안중에서 포승까지 갈 길이 멀다.

2. 중부내륙선

다음으로 2024년 11월 30일.
중부내륙 고속도로(45)의 철도 버전인 중부내륙선이 건설 중인 건 잘 알려진 사실이다. 지난 2021년 말에는 경강선 부발 역에서부터 충주 역까지가 개통됐고 차량은 KTX-이음이 투입됐는데.. 그로부터 거의 3년 뒤엔 충주-문경이 추가로 개통했다.

원래 문경선은 경북선의 지선으로서 사실상 망해 가는 로컬 지선이었지만 이렇게 신흥 간선 철도와 만나면서 완벽하게 소생했다. 저 동쪽 끝의 삼척선도 비슷한 일을 겪게 됐는데, 이에 대해서는 잠시 후 또 언급하도록 하겠다.
중부내륙선은 리마스터링이 아니라 신규 건설이다. 그리고 일단은 복선이 아니라 단선이라고 한다. 요즘 정말 알게 모르게 새로 생기는 철도들이 많다.

3. 중앙선 전구간 복선전철화

중앙선은 서울과 경주.. 그야말로 경부선에 준하는 장거리 간선임에도 불구하고 20세기까지는 너무 차별 대우를 받고 낙후해 있었다. 그러다가 2000년대 이후부터 수도권 전철 구간이 생기고 선형 개량과 증속, 복선 전철화가 야금야금 진행됐고.. 그 과업이 2024년 12월 20일, 2020년대 중반이 돼서야 끝을 보게 됐다.

이제 2025년의 중앙선은 전구간 복선 전철 준고속선이다. 우리가 쌍팔년도 시절에 알던 그 낙후된 단선 비전철 중앙선과는 완전히 다른 철도로 바뀌었다!
중앙선에서 제일 수요가 없고 널널한 구간이 중간의 영천-의성-안동 사이이다 보니, 복선전철화도 여기가 제일 늦게 마지막으로 끝났다. 차량은 역시 KTX-이음이 들어갔다.

4. 동해선 전구간 완공

그리고 2025년 1월 1일부로 동해선이 영덕에서 삼척까지 120km가 넘는 구간이 드디어 완공됐다. 덕분에 강릉에서 동해까지 영동선, 동해에서 삼척까지 삼척선, 그리고 영덕과 포항을 지나는 기존 동해남부선 구간이 모두 한데 연결됐다.
7번 국도의 선형에 대응하는 간선 철도가 깔끔하게 완공됐다. 마치 분당선과 수인선이 한데 연결된 것처럼, 구 군산선이 장항선과 연결되고 통합된 것처럼 말이다.

이 동해선은 1940년대에 일제가 한반도에 ‘마지막’으로 건설하던 철도이기도 했다. 전쟁 시국에 돈 안 되는 로컬 철도들은 선로를 뜯어 갔지만, 그래도 중국 가는 데 필요한 경부선과 경의선은 기어이 복선화를 완공했다. 그리고 러시아로 가는 데 필요한 동해선은 새로 건설까지 했던 것이다. 물론 도중에 일제가 패망하는 바람에 그걸 실제로 완공하지는 못했지만 말이다.

동해선의 잔여 구간(포항-삼척)은 중부내륙선과 마찬가지로 복선 노반만 확보해 놓고 일단 단선으로 만들었다. 하지만 전철화가 됐기 때문에 전구간을 전동차나 전기 기관차로 다닐 수 있다.
동해선은 서울과 멀리 떨어졌고 서울 쪽으로 가지도 않는 철도이지만 수요가 예상 이상으로 많고 인기도 많다고 한다. 울진에서 철도 구경을 하는 날이 오리라고 누가 예상이나 했을까? 바람직한 일이다.

5. GTX A선

자, 서쪽에서 동쪽까지 종축 간선을 쭉 훑고 나서 이제 수도권으로 돌아온다.
수도권 전철은 단순 도시철도나 광역전철을 넘어서 더 작은 경전철, 아니면 더 깊고 빨라진 고심도 급행전철을 만드는 지경에 도달했다.
도로가 너무 막혀서 지하철을 만들었는데 기존 지하철은 역이 너무 많아서 느리고.. 이미 만들어진 지하 구조물을 더 확장할 수도 없어서 말이다.

여러 노선 중에서 파주, 서울, 수서, 동탄을 얼추 \ 모양으로 잇는 A선이 제일 먼저 추진됐다. 거기서도 동남쪽의 수서-동탄이 2024년 3월에 개통했는데, 이건 그냥 이미 있는 SRT용 고속선에다가 전철을 추가로 운행시키는 형태이니 제일 먼저 개통 가능했다.
그 뒤, 지난 2024년 12월 20일에는 서북쪽의 서울-운정 구간이 개통했다. 경의선 상에 속하는 서울 역과 대곡 역이 GTX의 버프를 받았으며, 특히 대곡은 바로 다음에 소개할 교외선까지 탈 수 있는 교통 허브로 발전했다.

다만, 아까 서해선이 북쪽과 남쪽이 단절됐던 것처럼 이 GTX도 북쪽과 남쪽의 서울 시내 구간이 단절돼 있다. 이거 연결은 2026년 이후에나 가능할 듯하며, 그 사이에 삼성 역은 또 수 년은 더 기다려야 개통할 것으로 보인다.
서울은 지하 깊숙한 곳까지 온통 미어 터진 동네인데 거기를 비집고 공사하는 건 여간 어려운 일이 아닐 것이다.;;

6. 교외선

끝으로, 2025년 1월 11일부터는 교외선에 정규 여객열차의 운행이 재개됐다. KTX 개통과 함께 여객열차의 운행이 무기한 중단된 지 무려 21년 만의 일이다.
지금의 교외선처럼 서울 북부를 지나는 철도 노선은 일제도 만들고 싶어하기는 했다. 하지만 얘의 실질적인 건설과 개통은 1960년대에 우리나라에서 자체적으로 했다.

저기는 그야말로 서울 바깥의 그린벨트 지대만 작정하고 다니는가 싶다.
생각 같아서는 경의선의 마이너 아웃라이너인 신촌과 가좌(지상)를 연계해서 교외선을 다니는 열차를 넣으면 좋을 것 같다만..

문제는 교외선은 비전철 구간이고 코레일이 현재 디젤 동차를 보유하고 있지 않다는 것이다.
딱 2량짜리 NDC나 3량짜리 CDC/RDC를 굴리면 될 걸.. 그게 없어서 꼴랑 객차 2량을 끌기 위해 어쩔 수 없이 디젤 기관차 2량 앞뒤에다가 발전차까지 연결했다.

사용자 삽입 이미지

이건 정말 삽질 삽질 캐삽질이다. 무궁화호 운임 받으면서 열차를 저렇게 굴리면 기름값조차 못 건지는 적자가 장난이 아니지 싶다. 7x00호대 특대형이 아니라 4400호대 입환기 수준의 작은 기관차이긴 하지만 그래도 여전히 비효율적이다.
그런데 그렇다고 교외선이 수요가 왕창 많아서 당장 전철화 공사 명분이 서는가 하면 그것도 아니어서 문제다.

그러고 보니 지난 1994년엔 철도청에서 증기 기관차를 하나 수입해 와서 교외선에 투입시켜 관광열차로 굴렸었다(901호). 석탄까지는 아니고 석유로 물을 끓이긴 하지만 엄연히 증기 기관차이다.
교외선은 30년 전이나 지금이나 뭔가 특이한 기관차를 볼 수 있는 관광 노선인 것 같다.

이렇듯, 교외선은 복선화· 전철화나 선형개량 같은 리마스터링 없이, 그저 완전 폐선만을 면하고 아주 소박하게 개통했다. 수인선의 경우 협궤가 폐선되고 나서 20여 년 만에 복선전철로 부활하고 심지어 분당선과도 통합됐던 반면.. 교외선은 항동 철길이나 경기화학선 꼴이 되지 않은 것만으로도 감지덕지다. 수도권의 정선선 같은 느낌...??

현재 풍기 역에서 정태보존 중인 901호 증기 기관차는 현재 심하게 낡고 부식돼서 운행은커녕 전시도 못 할 지경이 됐다. 옛날 장단 역 비무장지대에 버려졌던 녹슨 기관차 꼴 나고 있다.

Posted by 사무엘

2025/03/08 12:32 2025/03/08 12:32
, , , , , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/2370

에휴 별로 좋은 얘기는 아니지만.. 유튜브 첫 화면에 뜬 꼬꼬무 에피소드를 몇 편 보고 나니 입이 간지러워졌다.

1. 유괴 및 아동 살해 관련

(1) 지난 1997년에는 그 이름도 유명한 박 초롱초롱빛나리 양 유괴 살인 사건이 있었다.
사건 당시 피해자는 8살짜리 소녀였고, 가해자는.. 20대 후반의 유부녀 '임산부'였다.
가해자는 무기징역을 선고받고 현재까지 복역 중이다. 남편으로부터는 곧장 이혼 당했고, 출산한 애는 남편이 거둬들여서 미국으로 곧장 입양 보내 버렸다.
2025년이면 저 여자는 이제 감방에서 썩어 온 기간이.. 태어나서 그 전까지 사회에서 있었던 기간을 넘어서게 된다.

(2) 지난 2017년에는 인천에서 멀쩡한 여고생이--범행 당시에는 자퇴 상태-- 벌건 대낮에 8살짜리 여자애(2009년생)를 유괴해서 별 동기도 없이 살해했었다. 아무 면식도 없는 묻지 마 살인이었다.

(3) 그런데 그로부터 8년 뒤, 얼마 전엔.. 다른 8살짜리 여자애가 학교에서 미친 싸이코 여교사한테 불려가서는 묻지 마 살해를 당했다. 거 참~ 살다 살다 별 소식을 다 겪는다. =_=;;
역시 여자의 적은 여자라는 식의 넘 궁색한 편가르기는 하고 싶지 않다만, 그런데..
"저 교사년도 원래는 착한 사람이었는데 진상 학부모의 악성 민원에 너무 시달리다 못해 미쳐 버리고 흑화"한 거라는 변명이 나도는가 보다. 이거 실화냐?

올해는 날씨나 항공 사고 등 여러 방면에서 참 비범하게 흘러가는 것 같다.
다만, 오늘날은 최소한 "금전 갈취 목적으로" 어린애 유괴는 거의 불가능해졌다. 그건 곧바로 잡히는 자살행위나 다름없게 됐다. 위대하고 전능하신 CCTV에, 금융실명제와 전산화에, 찬란한 핸드폰 발신지 추적 기술 덕분에 말이다.

유괴의 목적이 성폭행이나 쾌락살인, 혹은 단순히 '나도 애 키우고 싶어서'가 아니라 금전이라면.. 집으로 협박 연락을 해야 하고 어떤 형태로든 돈 보낼 곳을 알려줘야 하기 때문이다.
이렇게 가해자가 피해자와 접촉하는 과정에서 꼬리 밟히고 잡힐 위험이 지금은 쌍팔년도 시절 대비 정말 수직 상승해 있다.
정보 보안의 관점에서는 이거 마치 대칭 키 암호화 알고리즘의 한계 같아 보이기도 한다. =_=;; 결국은 암구호를 전해 줘야 하니까.

글쎄, 시대 흐름에 맞춰서 협박을 익명 메신저로 하고 송금도 암호화폐로 요구할 수 있겠지만.. 이거는 피해자네 가족이 IT 기술 쪽으로 전혀 문외한 알못이면 무용지물이 될 공산이 크다. =_=
차도둑이 남의 차를 훔쳐서 시동까지 걸었는데 차가 수동이어서 못 끌고 가는 것 같은 일이 벌어질 수 있다.

그리고 돈만 현금박치기 대신 사이버머니로 대체했다 하더라도 다리 달린 애를 물리적으로 데리고 가는 모습이 CCTV에 다 찍히고 동선이 추적되는 건 도저히 어찌할 수 없다. 공간 워프나 생체 스텔스 클록킹이라도 구사하지 않는 한 말이다.
그러니 사이버 기법을 동원하려면 애를 힘들게 유괴하느니 그냥 보이스피싱이나 랜섬웨어 짓거리로 분야를 바꾸는 게 더 수지맞을 것이다. 애 대신에 그냥 남의 작업 데이터들이나 악성코드를 통해 암호화시키고 볼모로 잡는 거다. -_-;;

"전화 발신지 추적을 해야 하니 사모님이 최대한 시간 끌면서 저놈과 1분이라도 더 오래 통화를 해 주세요" 쌍팔년도 시절에 이래야 했다는 게 참 격세지감이다.
요즘 위치 추적이 얼마나 간편하게 되는지는 자동차 고장이나 사고 때문에 보험사를 불러 봐도 알 수 있다. "현 위치 추적에 동의하십니까?" 예~ 끝. 경찰이 수사 때문에 추적하는 거면 동의 받을 필요조차 없고. 그러니 위치 추적 대신 대포차나 대포폰 같은 다른 분야가 문제될 뿐이다.

내가 아동 유괴 범죄들 사례를 보면서 참 인상깊게 느꼈던 건.. 애가 비싼 장난감을 갖고 있어도 당하고, 없어도 당한다는 거였다.

없으면 "삼촌이 그거 사줄게!" 이러면서 꾀어낸다. (애엄마는 아이고 자기가 그걸 사줄걸 그랬다면서 울고불고 자책하고 후회)
하지만 있으면 "오 얘는 집이 돈 좀 만지고 잘사는가 보군!" 이러면서 다른 방법으로 어떻게든 꾀어낸다! 그렇지 않은가?
그러니 애엄마는 장난감과 관련해서 어떻게 하든 죄책감을 가질 필요가 없다.

요즘 세상은 저런 옛날에 비해서는 많이 안전해졌다. 이제는 금전 목적으로 애 유괴뿐만 아니라 은행강도도 그냥 자살행위이다.
그런데 요 근래까지도 어설프게 은행털이를 시도하다가 몇 시간 만에 바로 잡힌 멍청한 아재들이 종종 뉴스를 타더라. 얼마나 돈이 궁해져서 이판사판 정신줄과 판단력을 상실해 버렸는지 모르겠지만, 저건 그냥 "나 인생 살기 싫으니 교도소나 좀 보내줘"와 동급인 제스쳐가 됐다.

2. 이 호성 4모녀 살인 사건 관련

지난 2008년 2~3월 사이에 벌어졌던 이 호성 4모녀 연쇄살인 사건은 정말 끔찍하고 충격적인 사건이었다.
이 호성은 프로야구 선수 출신의 사업가였고, 선수 은퇴 직후에는 겨우 30대 나이로 승승장구 잘 나갔다. 그러나 나중에는 어째어째 실패하고 말아먹는 바람에 오징어 게임 오 명규 사장... 아니, 임 정대 아저씨보다 더 빚더미에 올라앉았다.

오징어 게임이란 게 현실에 있다면 이 사람이야말로 참가할 동기가 아주 충분했다. 젊은 나이에 채무가 저 지경인데, 그래도 왕년에 운동 했던 사람답게 피지컬은 아주 좋았으니까.
그 와중에 꼴랑 1억 5천 남짓한 돈이나 뺏을려고, 남의 식당 가게나 뺏을려고 내연녀 가족을 통째로 몰살..은 영 아닌 것 같다.

단순히 그 때문만은 아니고 "딴 내연녀와도 바람 피움, 빚이 단순히 몇 억 수준이 아님" 등 여자 쪽에서 이 호성의 사생활 실상을 알아 버려서 놈의 역린을 건드렸고 이 때문에 싸움이 벌어졌던 게 아닐까? 어쨌든 입을 막아야 하기 때문에 이런 참극이 벌어졌던 것 같다.

화순에서 실종자 장녀의 핸드폰이 잠깐 켜지고 신호가 잡힌 건 정말 괴이하다. 장녀가 완전히 죽지 않았고 손에 꽉 쥐고 있던 핸드폰을 필사적으로 켰거나, 아니면 가해자놈이 현장을 정리하다가 실수로 잠깐 켰거나.. 둘 중 하나겠지.
어쨌든 꺼진 핸드폰이 신호가 잡히는 건 뇌사자가 깨어나는 것만큼이나 과학적으로 불가능한 일이다.
바로 얼마 전에(2007) 벌어졌던 보성 어부 연쇄살인 사건(오종근)도 핸드폰 덕분에 극적으로 실마리가 발견되고 해결됐었다. 이와도 유사성이 느껴진다.

4모녀 중 대학생인 장녀만 집 안이 아니라 혼자 집 밖에서 살해당했다. 장녀는 "아저씨 갑자기 왜 이러세요!!" 극렬히 저항 반항을 했는지 두개골이 깨지고 얼굴이 난타 당하는 등 시신 상태도 제일 참혹했다고 한다. 전공이 내 와이프와 같은 분야라고 하니 개인적으로 더욱 애석하고 안타깝게 느껴진다.

이 호성은 정상적으로 검거돼서 재판 받았다면 저 보성 어부 오 종근과 비슷한 취급을 받았지 싶다. 오 종근은 4킬에 사형(현재 최고령 사형수)인데, 이 호성도 최소한 4킬.. 그것도 어린 소녀까지 포함한 일가족을 완전히 몰살시켜 버렸지 않는가. 이 정도면 무기징역을 넘어 사형이 떨어져야 할 것이다.

그런데 이 호성은 자기가 흉악범 용의자로 수배되었다는 소식을 접하고서 이틀 뒤에 성수대교에서 뛰어내려 ㅈㅅ해 버렸다. 경찰 측에서 요청한 엠바고를 SBS가 어기고 동네방네 보도를 해 버리면서 이 호성이 압박감을 느껴 저렇게 가 버렸다면서 비판과 논란이 많다.
이 호성은 유명인사여서 어떻게 몰래 숨고 잠적하기도 어려운 처지이며, 그 성깔에 검거 압박감을 느끼면 ㅈㅅ을 하면 했지 자수는 절대 안 했을 사람이니까 말이다.

한편, 저 사건으로부터 5년 뒤, 지난 2013년 여름에는 성 재기 남성연대 대표가 재정 지원을 호소하면서 특별 퍼포먼스 이벤트 차원에서 마포대교에서 뛰어내렸었다.
이 사람은 강물에 떨어지면 곧장 헤엄쳐서 빠져나오겠다고 호언장담을 했지만 그래도 목숨을 부지하지 못했다. 너무 높은 데서 깊고 차가운 강물로 떨어지니 몸이 못 버텨서 곧장 기절하고 익사했다.

한강 투신이란 게 이 정도로 위험하다. 죽으려는 의도가 전혀 없이 뛰어내려도 저렇게 될 정도니까. 참고로 성 재기도 이호성과 동갑인 1967년생이었다.

3. 여담

(1) 옛날에 비슷하다면 비슷한 시기에 발생했던 김 은정 아나운서 실종(1991)과 윤 영실 배우 실종(1986)도 매우 괴이한 사건이다. 두 당사자가 똑같이 1956년생 여성 방송연예인이며, 정말 감쪽같이 싹 증발해 버려서 시체조차 발견되지 않았다는 공통점이 있다. 목격자 증언이 전무하고 용의자도 모르는 채 영구 미제 사건이 돼 버렸다.

(2) 며칠 전에 얘기했다시피 앞날이 창창하던 어느 스타급 20대 여배우는 음주운전 때문에 골로 가 버렸다.
한편으로, 나이 80을 바라보던 어느 할아버지 배우는 오징어 게임의 인기를 타고 늘그막까지 커리어의 최정점을 찍는가 싶더니 그만 불미스러운 부적절 행위에 연루되어 그 기회를 날려 버렸다. 안타까운 일이 아닐 수 없다.

이건 이 글에서 주로 다뤘던 강력 흉악 범죄까지는 아니지만, 그래도 경범죄 급의 가벼운 실수도 분명 아니다. 정말 사람은 부귀영화를 거머쥐었을 때야말로 정신줄 꼭 붙잡고 자기관리 품위관리 욕구 컨트롤을 잘 해야겠다는 걸 느낀다. 범죄자들은 밑바닥 인생을 살면서 그런 컨트롤을 더욱 안 하기 때문에 더 크고 심한 사고를 치는 셈이다.

Posted by 사무엘

2025/03/05 08:35 2025/03/05 08:35
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/2368

1. 110년 전의 자동차

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

포드 T(모델명)라고 불리는 이 골동품은 지금으로부터 100~110년 전, 1910년~1920년대를 풍미했던 전설의 자동차였다.
얘는 자동차 기계 기술뿐만 아니라 철저한 산업공학 방법론도 적용되어 만들어졌다. 그래서 세계 최초의 서민 자가용 국민차로 엄청 저렴하게 많이 대량 생산 보급되었다.

1차 대전이 끝나고 대공황 직전까지 1920년대 미국 황금기의 역사를 포드 T 없이 논할 수는 없다. 우리나라는 1980년대가 마이카 시대이고 일본은 1960년대였던 반면, 천조국은 1920년대가 그러했다.
한반도에서 일제 시대 문화 통치 이러던 시절에 천조국에서는 서민들이 주식 해서 돈 불리고, 라디오 장만하고 포드 T 자가용을 뽑았었다는 거다.

뭐, 엔진이 4기통 2900cc 배기량으로 200마력이 아니라 20마력이었다는 건=_=;;; 100년 전의 시대상이라는 걸 감안하고 넘기도록 하자.;;
비슷한 시기에 만들어졌던 순종 어차 캐딜락이 8기통 5100cc 배기량으로 31마력이었으니 배기량 대비 출력이 서로 크게 차이 나지 않는다.

이 110년 전 자동차는 오늘날 자동차와 비교했을 때 핸들과 브레이크만 비슷할 뿐, 운전하는 게 훨씬 더 복잡하고 더 어려웠다.
차체 밖에 있는 크랭크를 돌려서 시동 거는 건 경운기와 비슷했다.
악셀 페달이 없고 스로틀 레버로 엔진 출력을 조정하는 건 오토바이나 경비행기와 비슷했다.

얘도 표면적으로는 페달이 세 개 있지만.. 좌 클러치와 우 브레이크 말고 중앙의 페달은 후진 모드 전환 페달이었다.;;
가속을 위해서 연료와 공기를 적절히 배합하는 거, 시동을 걸기 위해 외력을 엔진에다 전할 준비를 했다가 내리는 거.. 이런 절차들이 다 자동화돼 있지 않아서 일일이 수동 제어를 해야 했다. 그런데 변속은 달랑 2단계밖에 되지 않았다.

지금 MZ 세대의 C++ 프로그래머는 뭐 세그먼트가 어떻고 메모리 모델이 어떻고 far/near 포인터가 어떻고 하는 16비트 잔재 같은 건 전혀 모를 것이다.
총기에다 비유하자면.. K2, M16 같은 현대의 소총만 쏴 본 사수는 총구에다가 직접 화약과 쇠구슬을 넣던 구닥다리 전장식 머스킷을 격발할 수 없을 것이다. 총처럼 생겨도 다 같은 총이 아니다.

그것처럼 오늘날의 운전자한테 덥석 포드 T를 몰아 보라고 하면 당연히 못 할 것이다.
하지만 옛날에 천조국에서는 여성 주부들도 이런 자동차를 몰고 마트 가서 장도 잘 보고 왔다고 한다.;;

1930~40년대쯤 돼서는 자동차의 타이어가 이때보다 더 굵직해지고, 필러도 더 두꺼워지고.. 변속기도 3단 정도가 등장하고 평지에서 시속 100 정도도 낼 수 있게 되었다.
당연히 서민형 양산형 자동차가 말이다. 그 시절에도 카레이싱이란 게 있었고, 특수한 경주용 머신들은 훨씬 전부터 이미 100~150을 찍었기 때문이다.

키만 돌리면 시동이 걸리는 전자식 스타트 모터, 원시적인 형태의 자동변속기, 엔진 노킹을 막아 주는 유연휘발유(무연이 아니라)는 1920년대에 발명됐다.
후륜구동보다 더 만들기 어려운 전륜구동은 1930년대에 유럽에서 처음으로 발명되고 실용화됐다.
안전벨트나 ABS 같은 건 2차 대전 이후, 1950년대 이후에나 슬슬 보급됐고, 일부 기술은 비행기에 있던 것이 자동차로 전파되기도 했다.

2. 자동차의 구동축

후륜구동 승용차는 뒷좌석에 타 보면 구동축이 차지하는 공간 때문에 바닥 중앙이 볼록 삐져나와 있다.
개인적으로 먼 옛날 어린 시절에 포니 택시를 탔을 때, 그리고 커서 직장 생활 하면서는 아주 가끔 높으신 분의 고급 외제차를 같이 탈 일 있을 때에나 요런 삐죽 튀어나온 부위를 구경했었다. =_=;;
오늘날이야 어지간한 서민들이 모는 승용차는 몽땅 다 전륜구동으로 바뀌었으니 저런 구동축을 볼 일이 없다.

전륜과 후륜은 이런 내부 말고도 외부에도 자잘한, 하지만 중요한 차이점이 있다.
전륜은 구동축인 앞바퀴가 엔진룸 뒤의 앞좌석 도어 쪽에 최대한 밀착해 있는 반면.. 후륜은 그렇지 않다.
앞바퀴와 앞좌석 도어 사이에 한 뼘 이상 공간이 있으면 후륜차.. 이 공식이 얼추 잘 맞는다. (아래 그림에서 A는 전륜, B가 후륜)

사용자 삽입 이미지

  • 기아 K7과 K9
  • 기아 오피러스 vs 쌍용 체어맨
  • 현대 그랜저 vs 대우 슈퍼 살롱/임페리얼
  • 현대 포니 vs 포니엑셀(프레스토)
  • 에쿠스 1세대 vs 2세대

이렇게 비슷한 차급과 비슷한 시기이면서 구동축 위치만 다른 차들을 비교해 보면 차이가 더욱 명확하게 드러난다.
"얘는 공간이 있는 걸 보니 후륜이겠군" 하고 고개를 들어 보면 진짜로 제네시스 아니면 독일제 대형 외제차이더라.;;

왜 이런 차이가 존재하느냐 하면.. 전륜구동은 앞바퀴를 무거운 엔진의 바로 뒤에다 배치하려 하기 때문이다. 접지력을 확보하기 위해서다. 후륜구동은 구동축이 엔진으로부터 너무 멀리 떨어져 있으니 빙판길에서 맥을 못추는 거고.. 전륜구동 정도로 냅두는 게 적당하다.

상식적으로 생각해 봐도.. 차를 앞으로 굴려 주는 구동축이 엔진보다도 앞에 있으면 구동축이 혼자 헛돌기 너무 좋아 보인다. 안 그래도 앞으로 가속을 하면 무게중심이 더 뒤로 쏠릴 텐데.

사용자 삽입 이미지

역사적으로 최초의 증기 자동차라 일컬어지는 퀴뇨의 삼륜차(1770)는 FF였다. 아예 물탱크가 통째로 앞바퀴보다 앞에 배치돼 있었다. 그 프랑스에서 전륜구동 나중에 승용차도 세계 최초로 개발했다는 게 흥미롭다.
그 반면, 최초의 휘발유 내연기관 자동차라 일컬어지는 다임러 모터바겐 삼륜차는 RR에 가까웠다. 엔진과 구동축이 모두 뒤에 있고 앞바퀴로는 조향만 했으니까.

그런 초창기 이후엔 현대적인 자동차들은 FR이 대세가 됐다. 그러다가 20세기 중후반쯤부터 승용차는 FF, 대형 버스는 RR로 분화됐고, 그 사이 대형 승용차나 트럭, 소· 중형 승합차만이 FR을 고수하게 됐다.

그런데 여느 차가 아니라 굴절버스조차도 엔진과 구동축이 중간의 꺾인 부위보다 더 뒤에 있는 건.. 뭔가 역학적인 순리를 거스른 것이고 엄청난 기술의 산물인 것 같다. 잭나이프 현상을 어찌 제어하려고?
마치 우주왕복선이 역학적인 순리를 거슬러서 엄청 어렵게 만들어진 것과도 비슷한 맥락이다. 발사체의 앞이 아니라 위에다가 payload를 얹고도 수직· 수평 비행 때 모두 균형을 맞추는 건 대단히 어려운 일이기 때문이다.

사용자 삽입 이미지

그나저나 세계 최초의 양산형 전륜구동 승용차라는 '시트로엥 트락숑 아방'을 보면.. 앞바퀴의 배치가 의외로 전혀 전륜구동처럼 보이지 않는다. 이건 엔진의 실린더들이 요즘 전륜구동 차들처럼 진행 방향 기준 수직이 아니라.. 평행으로.. 나란히 배치됐기 때문이다.

전륜구동이라면 보통은 엔진이 수직(가로)으로 배치되며, 그게 몽땅 앞바퀴보다 앞에 놓이곤 한다. 실린더 배치가 수직(세로)이면 크랭크축은 바퀴와 같은 방향으로 나란히 직관적인 배치가 가능하다.
그러나 평행(세로) 배치이면 실린더가 진행 방향과 동일하게 나란히 놓이고, 크랭크축과 바퀴 사이의 방향을 바꿔 줘야 한다. 이건 후륜구동과 더 잘 어울린다.

옛날에 대우 자동차는 V형도 아닌 직렬 6기통 엔진으로 전륜구동을 구현한 적이 있다. 특히 아카디아의 경우 전륜구동이면서 전륜답지 않게 앞바퀴와 앞문 사이에 틈새도 있는 편이었는데, 이 역시 엔진이 평행 배치되어 있어서 저런 모양이 가능했다.

전륜, 그리고 직렬 6기통.. 이건 전부 엔진 공간을 많이 필요로 하는 기술이다. 이걸 전부 구현해 낸 건 마치 동력분산식 철도 차량에서 정화조 화장실까지 구현한 누리로 전동차를 보는 듯한 느낌이다. ^^

3. 30여 년 전

사용자 삽입 이미지

아아아~~ 옛날에 대형 트럭· 버스의 이마 부위에 달려 있던 자그마한 불빛 3인방은.. 속도 표시등이었구나..!
저건 뭐 차폭등도 아니고 용도가 뭘까 궁금했는데 근래에야 처음으로 알게 됐다. ㅠㅠㅠ
시속 100을 넘어가면 중앙의 적색까지 포함해서 모든 램프가 켜진다. 그래서 자기가 과속 중이라는 걸 주변으로 자진신고 해 준다.

저건 당연히 무인 과속 단속 카메라가 없던 낭만적인 시절의 산물이다.
1990년대까지만 해도 저거 장착이 의무였다가 2000년대에 와서 폐지됐다. 일본에서 독자적으로 시행하고 있던 제도를 우리나라도 따라했던 거라고 한다.

오늘날 속도 표시등 대신 저런 대형차(4.5톤 이상 트럭)에 존재하는 규제는 아예 속도 리미터(최대 90)라든가 유로6 배기가스 규제이다.
차주의 입장에서는 성능이나 연비에 도움이 되지 않는(안전이나 환경 쪽=_-) 이런 잉여 장비는 몰래 떼 버리고 싶을 것이다. 그런 걸 적발하라고 자동차 검사라는 게 있긴 하지만 말이다.;;

하긴, 대형차와 관련해서는 아래의 아이템들도 아련한 추억이 돼 있다.

(1) 현대 8톤 트럭
그냥 '5톤 트럭 + 가변축 + 과적'이라는 꼼수에 밀려서 사라진 게 아닐까 싶다.
아니면 아예 11.5톤 트럭을 쓰고 말지(1종 보통 면허로 운전 가능한 가장 큰 차), 8톤은 포지션이 애매해졌다.
다만, 대우 8톤 트럭은 지금도 있다.

(2) 고속버스 타이어에 은색 휠캡
고급 승용차에 엔진룸 후드 오너먼트(체어맨, 에쿠스 등등..)가 있다면 고급 버스에는 휠캡이 있었다. 그러나 이것도 어느 샌가 사라지고 없어졌다.

Posted by 사무엘

2025/03/02 08:35 2025/03/02 08:35
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/2369

« Previous : 1 : ... 5 : 6 : 7 : 8 : 9 : 10 : 11 : 12 : 13 : ... 230 : Next »

블로그 이미지

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

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2026/08   »
            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:
3994361
Today:
740
Yesterday:
2195