« Previous : 1 : ... 194 : 195 : 196 : 197 : 198 : 199 : 200 : 201 : 202 : ... 221 : Next »

개통 이래로 단 한 번도 바뀌지 않았으리라 추정되는 서울 2기 지하철, 즉 SMRT(도철) 관할 5~8호선 역들의 승강장 안내 방송이 슬슬 개정되고 있는 듯하다.

역시, 스크린도어가 설치된 덕분에 열차의 진입이 승객에게 전혀 위험을 끼치지 않게 된 것이.. 방송에도 반영되었다.
‘때르르릉~’(상행), ‘땡땡땡땡’(하행) 경보음이 사라진 건 무척 충격적이다.
그리고 서울 메트로에 이어 SMRT도 드디어 “손님 여러분께서는 한 걸음 물러서 주시기 바랍니다” 멘트를 없앴다.

서울 메트로는 물러서라는 멘트가 그냥 “안전하게 승차하시기 바랍니다”로 대체된 반면,
도철은 “하차 승객부터 모두 내린 후에 승차하시기 바랍니다”라고.. 현재 9호선의 도착 안내 방송과 비슷한 레퍼토리를 도입했다.

또한, 한국어와 영어 공히 예전보다 더 고운 목소리로 바뀌었다. 성우가 누군지는 모르겠다.

Posted by 사무엘

2010/06/02 16:44 2010/06/02 16:44
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/284

세벌식 타자 시범


10분간 평타 약 750~800타.
세벌식은 도깨비불이 없습니다.
세벌식은 한글 타자를 재미있고 즐겁게 만들어 줍니다. 그냥 막 머리보다 손이 먼저 움직이면서 미친 듯이 글자를 찍어내고 싶다는 생각이 들게 됩니다.
세벌식은 리듬감이 있으며, 두벌식과는 달리 뭔가 꼬이고 짜증난다는 느낌이 안 듭니다.
세벌식은 장문과 단문의 속도 차이가 별로 안 납니다.
당신도 세벌식으로 이렇게 칠 수 있습니다.

Posted by 사무엘

2010/06/02 08:36 2010/06/02 08:36
, ,
Response
No Trackback , 8 Comments
RSS :
http://moogi.new21.org/tc/rss/response/283

다음 버전 개발 상황

1. 편집기: 찾기/바꾸기 대화상자를 꺼내는 중에 가끔씩 프로그램이 죽던 문제
아래와 같이 조치를 취한 후로 이것 때문에 프로그램이 문제를 일으킨 적은 그때로부터 약 40일 동안 전혀 없었습니다. 버그가 해결된 것으로 보입니다. 속이 다 후련하네요.

2. 외부 모듈: 이클립스에서 창을 띄울 때 글자판이 자꾸 0번으로 돌아가던 버그를 고쳤습니다. (메일을 통해 받은 버그 신고)

3. 외부 모듈: 아래아한글 2010을 종료할 때 에러가 나던 문제를 해결했습니다. (메일을 통해 받은 버그 신고)

의미 있는 버그 신고로 <날개셋> 한글 입력기의 안정성 향상에 기여해 주신 분께 감사합니다.
다음 버전은 5.54는 아니고요. 최소한 5.6이나 아니면 5.7로 갈 예정입니다.
생각하고 있는 기능 추가도 듬뿍 해서 올해 8월 정도쯤에 릴리즈 계획을 잡고 있습니다.

다만, 윈도우 7에서
아주 랜덤하게.. 며칠에 한 번꼴 빈도로..
<날개셋> 한글 입력기의 외부 모듈에서 한자 변환을 시도하면 프로그램이 아무 말도 없이 꺼지는 것 때문에 미치겠다는 문의가 있는데 저는 그에 대해서 전혀 알 길이 없습니다.
그쪽에서도 언제나 정확하게 재연은 안 되는 문제라고 하고, 저 그런 현상은 전혀 경험한 적이 없고..

비슷한 현상을 경험하거나 문제 재연과 관련된 단서가 있으신 분의 제보를 기다립니다.

Posted by 사무엘

2010/06/01 09:08 2010/06/01 09:08
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/281

본인은 예전에 쓴 적이 있는 <일제 강점기의 드라마틱한 크리스천 커플>이라는 글을 이 블로그뿐만 아니라 몇몇 크리스천 커뮤니티에다가도 올렸다.
이런 유사점과 차이점이 있는 두 위인 커플의 일대기와 연애 생활에 대해서 그냥 재미로 읽으라고 글을 올렸고, 정치색 같은 건 전혀 표방하지 않았다.

그러나, 글을 올린 곳에서 모두.. 이 승만에 대해서 내가 묘사한 표현이 심기가 불편하다는 댓글이 꼭 하나씩은 올라왔다.
그 댓글을 읽어보면 이 승만에 대한 진정어린 혐오와 증오심을 느낄 수 있었다.
그런데 그 혐오와 증오심의 근거는 본인이 보기에 일고의 가치가 없는 것들...

4· 19에 대한 기억이 워낙 짙어서 독재자까지는 그렇다 치는데, 그 밑으로 해방 직후와 심지어 일제 강점기 시절로까지 거슬러 올라가는 고인에 대한 원색적인 비방과 험담은 도대체 어디에서 유래되었는지 모르겠다.
“전후 상황과 문맥 다 무시하고 오로지 이 승만 개새끼 만들기”이다.

이 승만이 대통령 해 먹으면서 그렇게까지 죽을 죄를 지었나? 정말 김 일성이나 이 완용 욕도 저렇게 할까 싶을 정도이다.
평생을 기독교 정신으로 술· 담배 안 하고 검소하게 살았고 교리적으로 배도하지 않았으며, 딸 같은 서양 여자와 결혼한 게 특이점일 뿐이지 그래도 섹스 스캔들 전혀 없으며, 고위 관리들 회식 때 기생 끌어들이지 말고 대신 각자 자기 아내를 데리고 오게 하고..

그 정도로 행실상의 선한 간증이 있는 사람이 뭔가 잘못을 저지른 게 있다면, 일단 좌우 정황부터 좀 살펴야 하지 않는가? 왜 저 사람에게만 유달리 평가의 잣대가 그리도 가혹한가?
부정 선거, 부산 정치 파동, 보도 연맹 등을 줄줄 외우는 사람들이 평화선, 반공 포로 석방, 원자력 협정 같은 건 얼마나 알까?

지식이 편파적인 것으로밖에 안 보인다. 개독안티들도 얼마나 지식이 뛰어나고 논리정연한가? 그 문맥 안에서만 말이다. 걔네들 글대로 논리에 이끌려 가기만 하면 정말로 야훼는 완전 미친 변태 같은 무능한 신이고, 바이블 같은 ㅂㅅ 같은 책이 어떻게 수천 년간 존재해 왔는지 도무지 이해가 안 되게 된다. 단지 그들이 전제로 깔고 있는 설정들이 전혀 사실이 아니어서 문제일 뿐이지.

이 승만에 대한 주된 오해와 나의 반박을 열거한다.

1. 독립 운동가 시절부터 싸가지 없고 고집불통 안하무인이어서 파벌이나 만들었다
이 말만 들으면 언뜻 그런 것처럼 보인다. 하지만 내가 보기에는 “그 대신 실력으로 용서된다” 수준이다.
집안에서만 싸가지가 없었던 게 아니라, 미국 정치인들에게도 싸가지 없고(?) 콧대가 높았기 때문이다. 이 승만은 너무 똑똑하고 세계를 보는 눈이 다르고 다른 독립 운동가들과는 레벨이 넘사벽으로 달랐다. 이 순신 장군이나 세종대왕이 특이한 것만큼이나 특이한 사람이었다.

2. 무력 독립 운동 노선을 반대했다
신념과 관점의 차이일 뿐이며 정황상 그는 반대할 필요가 있었다. 그는 애초에 우리나라가 무력으로는 일본을 이길 수 없음을 간파했기 때문이다.
여기에 대한 자세한 해명은 본인의 이전 글 <안 중근 의사 순국 100주년>을 참고하라.

3. 남북 분단의 원흉이다
정말 말이 안 된다. 대다수 사람들이 UN이 뭔지 공산주의가 뭔지도 잘 모르던 시절에, 스탈린과 기회주의자 김 일성의 흉계를 간파하고 미국을 설득해서 남쪽에만이라도 자유 민주주의 국가를 세운 외교력을 두고두고 칭송해도 시원찮을 판에, 어떻게 헐뜯어도 저렇게 치졸하고 민망하게 헐뜯을 수 있을까?
이 승만을 분단의 원흉이라고 헐뜯는 건 우리나라가 북한 김 일성 손아귀에 들어가지 못해서 안달 난 것과 같다. 정말로 가해자와 피해자가 뒤바뀌고 선과 악 관념이 날조된 것이다(사 5:20).

4. 친미 (나쁜 의미의)
전혀 사실이 아니다.
대한민국 건국 이래로 이 승만만치.. 그 보잘것없는 허약한 국력으로도 외교 능수능란하게 잘 해 내고, 미국 정치인들을 쩔쩔매게 만들고 미국으로부터 최대의 국익을 얻어낸 정치인은 없었다. 일본하고만 짝짜꿍이 잘 맞던 미국을 한국의 친구로 바꾼 게 이 승만이다. 그 옛날에 중국이나 소련이 아닌 미국을 바라본 것이다. 이게 욕 얻어먹을 짓이란 말인가?
아니, 그보다도 그는 독립 운동가 시절부터 미국에서 40여 년을 지내면서도 미국 시민권을 일부러 거부하고 무국적자로 버텼다. 이게 친미인가? “대한민국은 곧 독립할 거고 나는 대통령이 될 것이기 때문에 미국 시민권 같은 건 없어도 됩니다”가 그의 지론. 나라가 쌩쌩 잘 돌아가고 있을 때 이런 말을 하면 대통령병 권력욕이지만, 나라가 없던 시절에 이런 말을 한 건 지극한 애국심이다.

5. 친일 (나쁜 의미의)
이건 본인도 처음엔 궁금했다. 일제로부터 지명수배를 받은 독립 운동가 출신이며 평생 일본을 그렇게도 싫어하고 지냈다는 사람이, 왜 반민특위를 해체하고 친일파 출신 관료들에게 기회를 줬는지 상식적으로 이해가 안 됐기 때문이다.
하지만 이건 나이가 들고 세상 물정을 좀 알고 나니까, 안타깝지만 그 당시 어쩔 수 없는 선택이었다는 걸 적극 공감하기 시작했다. 나치에게 겨우 3, 4년 남짓 점령당했다는 프랑스도 아니고 무려 한 세대에 가깝게 일제의 손아귀에 있던 나라가 그럼 일본 경찰· 군인 출신 인재를 활용 안 하고 어떻게 당장 치안과 국방을 유지하겠는가? 더구나 국군 수뇌부에조차도 ‘빨갱이’들이 있어서 적과 내통하는지, 사상이 어떤지 알 수가 없었고 이북에서는 수시로 폭동을 일으키고 건국을 음해하고 방해하던 마당에 말이다.

우리나라의 건국 초기에 친일파 청산을 가장 방해하고 그들이 설 빌미를 제공한 장본인은 다름아닌 북한이라는 게 본인의 지론이다. 박 정희도, 안 두희(김 구 암살범)도 다 6 25 덕분에 면죄부가 주어지고 복직할 수 있었는데 더 무슨 설명이 필요하리요?

6. 6· 25 때 혼자 도망치고는 다리 폭파나 했다
그런 적 없다. 이 승만은 “국민을 버리고 서울을 떠날 수 없다”고 쌩고집을 부렸고, 그걸 영부인과 측근들이 끈질기게 설득한 끝에 피난길에 오른 것이다.
그리고 서울 시내에 국군이 이기고 있다는 거짓 방송이 왜 며칠째 울려 퍼졌는지, 결정적으로 한강 다리를 누가 폭파하라고 시켰는지는 아무도 모른다. 휴전선 인근의 늘 있던 교전이어서 전쟁을 대수롭지않게 여겼던 것일 수도 있고, 다리 폭파의 경우 손발이 안 맞은 작전 실수였을 수도 있으며, 정말로 군부를 장악했던 불순세력이 자기네가 싼 똥을 남한 정부에다 전가시킨 것일 수도 있다.
단 하나, 이 승만이 “용용 난 먼저 피난 가지롱. 너희는 엿 먹어라” 하면서 다리 폭파한 건 절대 아니다!

쉽게 말해서 이 승만의 업적과 잘못 내지 한계는 컴퓨터 식으로 말하자면 윈도우 95 정도에다 비유할 수 있다. 윈도우 95는 도스와 16비트 윈도우에 머물러 있던 평범한 사람들에게 순식간에 무려 32비트 선점형 멀티태스킹 OS를 선사함으로써 생활을 완전히 바꿔 놨다(민주주의 주권 국가)! 하지만 도스에서 잘 살고 있던 사람들의 반발이 만만찮았으며, 윈95 역시 내부에는 상당수 16비트 코드를 답습할 수밖에 없었다. 호환성을 맞추다 보니 태생적으로 안정적일 수가 없었다. 불안정하다고 까이고, 또 확장완성형 때문에 한글 파괴라고 가루가 되도록 까였다. 아주 그럴싸한 비유이다.
그러나... 그러나 우리나라 IT가 윈도우 95 없이 세계 무대에서 나란히 설 수 있었을까? 그 당시에 윈도우 NT 돌릴 수 있는 컴을 가진 사람이 얼마나 됐을까?

그 후, 나라의 기틀이 잡히고 외교력보다는 이제 진짜 국내 민생을 살피는 지도력이 더 필요해지면서, 너무 늙어 버린 이 승만의 통찰력은 한계를 보인다. 인의 장막에 휩싸여 여당의 부정부패를 척결하지 못하고, 부하들의 감언이설에 속아 부정 선거에까지 연루되어 독재자로 낙인 찍힌 불운한 말년을 맞이한다.

그는 그래도 “나는 이럴 생각이 없었는데 내 부하놈들에게 속았다”, “고의적인 실수이다, 오해이다” 궁시렁궁시렁.. 요즘 정치인들처럼 입만 열면 거짓말로, 찌질한 변명과 험담으로 일관하지 않았다! 그냥 아무 말 없이 “국민이 원하면 하야한다” 한 마디로 모든 책임을 지고 권좌에서 물러났다. 남들이 욕하건 말건 역사의 평가에 모든 걸 맡기고 마지막 순간까지 고매한 품위와 명예를 지킨 것이다.

솔까말 본인은.. 본격적으로 우리나라 근현대사나 정치 놀이(?)-_-에 발을 들여놓기 전부터도 이 승만에 대해서는 “독립 운동가 출신의 초대 대통령이다. 잘은 모르지만 그 사람은 아주 똑똑하고 고집 세고.. 훌륭한 분이긴 한데 욕심 부리다 좀 추하게 끝났지.. 그 나이 먹도록 그렇게까지 오래 권력 맛을 보고 싶어서 징징댔던 걸까? 그래도 나중에라도 정신이 들어서 스스로 물러난 덕에 더 험한 꼴은 안 봤다” 정도만 알고 있었고 그 정도만으도 그럭저럭 상당히 정확한 진술이라고 생각한다.

이 승만은 후대의 전· 현직 '장로 대통령'보다 신앙면에서도 앞섰고 인물의 그릇 크기와 프로필도 월등히 앞선 분이다. 심지어 미국의 초대 대통령조차도 사실은 크리스천이 아니고 그냥 이신론자일 뿐이라는 설이 지배적인데, 이 승만은 확실하게 구원 받은 크리스천이다. 최소한 "우리 가족은 종교가 제각기 다 다르지만 싸우지 않고 잘 지냅니다" 이러던 에큐메니컬 전직 대통령보다야 100배는 더 낫다! 그런데 세상적인 불신자도 아니고, 크리스천이 어떻게 이 승만을 그렇게까지 싫어할 수 있는지 이해가 되지 않는다.

미국 건국 초기에 살았던 법학자인 사이먼 그린리프 박사(Simon Greenleaf; 1783-1853)는 성경은 훼이크이고, 예수의 부활도 다 허구라고 여겼다. 그런데 자신의 법학 지식을 동원하여 문헌 조사를 해 보니 세상에 예수의 부활만치 정확하게 잘 기록된 사건도 없고 이 정도면 법적으로도 아무 하자가 없는 완벽한 증언이라는 사실을 발견했으며, 결국 자신도 예수님을 믿게 되었다고 한다.

이런 것처럼 처음엔 멋도 모르고 이 승만 욕만 하다가 공부를 하면서 생각이 바뀌어 그를 존경하게 되고, 그 사람의 스케일과 인품에 감명 받은 지식인이 적지 않다. 알고 나니 '까'에서 '빠'로 돌아선 것. 그의 업적은 비가시적이고 하다못해 박 정희의 경제 개발보다도 더욱 수준이 너무 높아서 그게 업적인지를 모르는 사람이 많다. 이 승만보다 훨씬 더 형편없는 통치자 밑에서 탄식하고 신음하기 전에(우린 이미 이걸 경험 중이다!), 위인과 영웅의 업적부터 바로 알아봤으면 좋겠다.

사용자 삽입 이미지

Posted by 사무엘

2010/05/31 08:35 2010/05/31 08:35
,
Response
No Trackback , 3 Comments
RSS :
http://moogi.new21.org/tc/rss/response/280

C/C++의 type string은 간단한 건 간단하지만 복잡한 건 한없이 복잡하다. C/C++ 프로그래밍 경력 10년이 넘는 본인조차 아직 그런 쪽에는 능숙하지 않으며, 좀 복잡한 type 선언을 해야 하면 옛날에 짜 놓은 코드를 복사해서 가져온다. -_-

복잡한 게 뭔지를 물으신다면, 이런 것을 말한다. 특정 함수의 포인터, 배열의 포인터를 되돌리는 함수의 포인터, 포인터의 참조자, C++ 멤버 포인터 등등... 생각만 해도 머리가 뱅뱅 돌지 않는지?

C/C++에서 뭔가 명칭을 선언하는 건 아래와 같이 일면 단순하다. 간단한 것, 상식적인 것부터 살펴보자.

type p;

이렇게 써 주면 p라는 명칭은 type이라는 타입으로 선언된다. p는 변수가 될 수도 있고 함수도 될 수도 있고 포인터나 배열 변수가 될 수도 있다. C++은 함수 내부의 아무 위치에서나 변수를 선언할 수 있으나, 함수 안에서 또 함수를 선언할 수는 없다. nested 함수라는 개념이 존재하지 않는 것이다.

type a, b, c;

처럼 콤마를 써서 여러 명칭을 동일 type으로 동시에 선언할 수도 있다.
type에는 int, float 같은 built-in type이 들어갈 수 있고, 사용자가 예전에 정의한 구조체· 공용체나 클래스가 들어갈 수도 있다.

C에서는 구조체· 공용체의 명칭 앞에 struct나 union 키워드를 생략할 수 없으며 생략하려면 typedef를 별도로 만들어야 하는 부조리가 있었으나, C++에서는 그런 한계가 없어졌다. type이 템플릿인 경우, 템플릿을 실제로 만들어 내는 argument도 < >에다 둘러싸서 넣어 줘야 하며, 타입 명칭이 다른 scope에 존재할 경우 :: 연산자도 써 줘야 한다. std::vector<int>처럼.

type 명칭에는 이 변수의 성격을 규정하는 modifier 키워드도 선택사항으로 들어갈 수 있다. 이런 예로는 const, volatile, register 같은 키워드가 있다.

type에 대한 설명은 여기까지로 하고, 그럼 p(명칭)에 대해 알아보자.
명칭은 한 번에 여러 개를 동시에 선언할 수 있고, 또 원한다면 p=1처럼 =을 써서 선언과 동시에 초기화도 가능하다. C++의 경우, 아예 ()을 써서 생성자 함수 호출을 바로 시키는 것도 가능하며 built-in type에 대해서도 생성자 함수 호출하듯 값을 초기화할 수 있다. 즉,

int *a=NULL, b=7; /* C style */
int *a(NULL), b(7); //C++ style

C에서는 위의 문장만 허용되는 반면 C++은 아래의 문장도 허용된다는 뜻이다.

자, 그럼 이제 진짜 복잡한 부분으로 들어가 보겠다.
C/C++의 문법이 판타지 같은 이유는, 분명 명칭의 type과 관련된 modifier들이 type 부분에 확실하게 구분되어 있는 게 아니라 name 부분으로 개별 적용되는 것도 있기 때문이다. 그렇기 때문에 C/C++은

int *a, b;

라고 선언하면 *라는 modifier는 a에만 적용되어 a만 int형에 대한 포인터가 되고 b는 일반 int가 되는 것이다. 그런데 D라는 언어는 그렇지 않아서 위와 같이 선언하면 a와 b의 타입이 모두 int*가 된다.

이런 식으로 개별적으로 적용되는 modifier로는 다음과 같은 것이 있다. 이런 것들이 막 섞이면 사람 머리 터지게 만든다. ^^;;

*p : p가 포인터임을 뜻한다. 변수의 왼쪽에 붙으며, 오른쪽에서 왼쪽으로 해석한다. *가 여러 개 붙으면 2중, 3중 포인터가 될 수 있다. (pointer to)
&p : C++에서 추가된 문법이며, p가 참조자임을 뜻한다. 쓰임이 포인터보다 훨씬 제한적이기 때문에 다중으로 붙을 수 없다. 용법은 *와 동일. (reference to)

int *&p;

라고 하면 우에서 좌로 & → * 순으로 해석되어 p는 포인터의 참조자가 된다(a reference to a pointer to integer). 반대로 참조자를 가리키는 포인터라든가 참조자를 또 가리키는 참조자라는 개념은 C++에 없기 때문에, &*나 && 같은 문법은 틀렸다. 포인터의 문법을 간소화하려고 만든 게 참조자인데 이는 상식적으로 당연한 얘기. 하지만 이중 포인터의 참조자인 **&은 있을 수 있다. 이 정도면 *와 &의 관계는 충분히 설명됐을 것이다.
다음,

p() : 어떤 명칭 바로 오른쪽에 ()가 붙었다면 이는 그 명칭이 함수임을 뜻한다. 쉽다.

p[n] : 그 명칭이 배열임을 뜻한다. 첨자가 들어있어야 하는 게 원칙이지만, 함수 argument라든가 일부 1차원적인 문맥에서는 첨자가 생략되어서 포인터와 별 차이 없는 용법이 되기도 한다. 영어로는 array of에 해당. []가 오른쪽 끝에 계속 붙으면 다차원 배열을 만들 수 있다.

그렇다면 명칭의 왼쪽에 포인터가, 오른쪽에 ()나 []가 다 붙어 있으면 어떻게 해석해야 할까?
일단 오른쪽 것부터 해석한다. 그 후 오른쪽 끝에 도달하면 왼쪽으로 간다. 그래서

int *a[10];

은 []이 먼저 해석되어 array of / pointer to / int가 되고, 따라서 ‘int *가 10개 있는 배열’이 된다.
이 순서를 바꾸기 위해서 또 괄호가 사용된다. 함수를 뜻하는 ()와는 쓰이는 문맥이 다르며, 의미도 다르다. 이걸 아는 게 중요하다.

int (*a)[10];

은 *이 먼저 해석된 후 오른쪽의 배열로 넘어가서 pointer to array[10] of int가 되고, 따라서 배열의 포인터가 된다. 사실, C/C++의 type string은 일종의 영어 어순을 따르고 있는 셈이다. 이걸 알면 쉽다. 꼭 기억하자.

int func(int x);
int (*funcptr)(int x) = func;

명칭 다음에 곧바로 ()가 나오면 함수 선언이 되나, 이름이 괄호로 둘러싸여서 *가 먼저 해석되므로 funcptr은 pointer to function, 즉 함수의 포인터가 되고, 자신과 prototype이 완전히 같은 func라는 함수를 가리킬 수 있게 되는 것이다.

닫는 괄호를 만나면 아직 해석되지 않았던 왼쪽으로 이동하고, 그러다가 여는 괄호를 만나면 다시 닫는 괄호 바깥의 오른쪽으로 가면서 완전히 바깥에 도달할 때까지 이 과정을 반복하면 된다.
따라서 명칭 뒤에 붙는 (), *, [] 같은 게 아무리 복잡하더라도, 명칭의 좌우에 가장 가까이 붙어 있는 놈이 뭔지만 보면, 얘가 포인터인지 함수인지 배열인지 정도는 바로 알 수 있다.

double ( *varr( double (*)[3] ) )[3];

위는 배열의 포인터와 함수의 포인터가 모두 동원된 예이다. 슬슬 머리가 아파질 것이다. varr의 좌우로 *와 ()가 있는데, 이때 오른쪽으로 먼저 간다. 그래서 varr은 함수가 되고 왼쪽의 *는 함수의 리턴값과 관계가 있게 된다. 그렇다. 이놈은 double 형 배열의 포인터를 인자로 받는 함수인데, 이 함수의 리턴값 역시 double 형 배열의 포인터라는 뜻이다.

double (* (*pfnFunc)( double (*)[3] ) )[3] = varr;

그리고 저 varr을 가리키는 함수의 포인터는.. varr만 (*pfnFunc)라고 또 감싸 주면 만들 수 있다. ^^;; 포인터를 되돌리는 함수의 포인터인 것이다.

int *(*(*fp1)(int))[10];

굉장히 변태-_-스러운 예제인데, 별표를 맨 왼쪽에 있는 것부터 [1], [2], [3]으로 번호를 매기자면,
fp1은 int 형을 인자로 받고, 원소 개수가 10인 int 포인터[1]의 배열에 대한 포인터[2]를 되돌리는 함수의 포인터[3]이다.

pointer to *
function (int)
returning pointer to *
array [10] of int*

이제 진짜 궁극의 변태 같은 예를 들면,

char *(*(**foo[2][8])())[10];

array [2][8] of
pointer to **
function ()
returning pointer to *
array [10] of char*

다시 말해 char*가 10개 들어있는 배열의 포인터를 되돌리는 함수의 2중 포인터를 담고 있는 2차원 배열이라는 소리이다. ^^;;

그럼 마지막으로, 또 하나의 기괴한 C++ 문법을 소개하면서 글을 맺겠다. 그것은 바로 멤버 포인터라는 특이한 포인터이다.

class CMyObject {
public:
 int x,y,z;
 void foo() {}
 void bar() {}
};

CMyObject obj;
int CMyObject::*pVal = &CMyObject::x;
void (CMyObject::*pFunc)() = &CMyObject::foo;

obj.*pVal = 10;
(obj.*pFunc)();

위의 코드에서 볼 수 있듯 pVal은 int형인 x, y, z중 한 멤버 변수를 가리킬 수 있고, pFunc는 자신과 prototype이 같은 foo()와 bar() 중 하나를 가리킬 수 있다.
일반적인 C++ 클래스의 non-static 멤버들은 멤버 포인터로 하여금 자신을 가리키게 할 때 "&클래스::멤버"와 같은 식으로 주소를 얻을 수 있다. 이때 어느 토큰 하나도 생략할 수 없다. 심지어 자기 클래스 멤버 함수 내부에서라도 자기 클래스 이름을 반드시 명시해야 한다.

멤버 포인터를 나타내는 ::*은 ::와 *가 합쳐진 것이다. 그러나 멤버 포인터를 실제로 사용하는 연산자인 .* 또는 ->* 는 완전히 한 토큰으로, 사이를 띄울 수 없다. 또한 멤버 포인터 함수를 선언하고 호출할 때는 반드시 괄호가 필요하다. 이걸 하지 않으면 오른쪽의 함수 호출 ()가 먼저 해석되어서 개체와 멤버 포인터가 먼저 연결되지 못하기 때문이라 한다.
마치 파스칼 언어에서 우선순위 처리의 특이점 때문에 (a=1) and (b>5)처럼 각 항을 괄호로 싸 줘야 하는 것과 비슷한 맥락이라 하겠다.

그나저나 C++은 :: . -> 이렇게 세 연산자가 모두 따로 존재하는 언어라는 게 특이하다. 자바나 C#은 . 하나가 이들 기능을 모두 수행한다.

Posted by 사무엘

2010/05/29 15:20 2010/05/29 15:20
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/279

전기 이야기

집에서 컵라면을 먹기 위해 물을 끓일 때 평소에는 늘 전기 커피포트를 이용하다가 얼마 전엔 부득이하게 냄비+가스레인지라는 재래식 방법을 쓰게 되었다.

가장 먼저 든 생각이 뭐냐면, 화력을 최고로 설정했음에도 불구하고 물이 끓는 데 시간이 꽤 오래 걸린다는 것이었다. 하긴, 물은 잘 알다시피 비열이 꽤 큰 물질이며 끓이기 위해 많은 에너지가 필요하다.
하지만 도시 가스 정도만 해도 불꽃의 온도가 상당히 높다. 그을음과 배기가스도 (거의) 없어서 가정용으로 적합한 연료이며, 주부의 가사 노동을 크게 덜어 주고(깨끗하니까) 시간 아껴 주고(화력이 강해서) 산림 보존(설명이 필요 없음)에도 기여한 고마운 물질이기도 하다. 장작불 때서 목욕할 물을 데우거나 밥 지어 보시겠는가?

그럼에도 불구하고 전기를 이용하는 커피포트는 꽤 많은 물도 더욱 신속하게 펄펄 끓여 준다. 이때 얼마나 빡세게 열을 가할지가 상상이 된다. 그래도 주변은 완전히 플라스틱이고, 매우 안전해서 만지다 손을 델 염려도 거의 없다. (표면이 달궈진 냄비는 그렇지 않다.) 게다가 물이 다 끓으면 알아서 꺼진다.

이렇게 편리할 수가 없다. 다재다능한 전기 에너지를 가장 무식하게 활용하는 게 고작 저항을 이용한 전열기라 하지만, 전열기 역시 유용하다. 밖에 나갈 때야 휴대용 가스레인지가 필요하겠지만, 집에서 혼자 고기 구워 먹을 때 안성맞춤인 전기냄비도 있다. 게다가 전자레인지는 주변 온도를 높여서 가열하는 게 아니라 음식 내부의 물 분자를 진동시켜서 열을 가하는 최첨단 장비이다.

전자기력은 물질이라면 본질적으로 갖고 있는 힘인 만유인력과 더불어, 이 자연의 거시 세계에서 비교적 쉽게 관찰도 가능한 신비로운 힘의 원천이다. 우리보다 수천 년 전에 산 사람들도 마찰 전기라든가 자석 같은 걸 보고 굉장히 신기해했을 것이다.

그러나 인간이 이 에너지의 성질을 그럭저럭 파악하고 제대로 활용하게 된 것은 불과 200년 남짓? 정도밖에 되지 않았다. 패러데이, 맥스웰 같은 걸출한 과학자가 나와서 교류 전기와 발전기를 만들어 내고 전자기파를 발견하고, 거기에다 니콜라 테슬라 같은 전자 공학 덕후가 결정타를 날린 덕분에 인간은 전기 에너지를 대량 생산해 내고 이걸로 열과 빛과 동력(전동기)을 무한대에 가깝게 만들어 냈으며, 정보를 말 그대로 빛의 속도로 주고받고, 그걸로 인간의 지적 활동까지 분담하면서(컴퓨터) 오늘날의 찬란한 전기 문명 시대를 만들어 냈다.

본인은 시계에 대해서도 꽤 최근에야 새로운 사실을 알게 됐다. 요즘 아날로그시계를 보면 십중팔구 얼굴에 Quartz(석영)라는 단어가 꼭 적혀 있다. 이것은 이 시계가 기계식이 아니라 말 그대로 쿼츠 시계임을 뜻한다. 과거에는 시계는 태엽과 용수철, 지레와 톱니바퀴가 맞물려 동작하는 초정밀 기계였는데, 쿼츠 시계는 무려 20세기 중후반이 돼서야 컴퓨터나 형광등보다도 더 늦게 발명됐다.

쿼츠 시계는 동작 방식이 기계식 시계와는 완전히 다르다. 전기 신호를 받고 규칙적으로 진동하는 석영의 진동을 반도체가 인식하여 동작하는데, 문제는 쿼츠 시계는 싸고, 더 간단하고, 만들기 쉽고, 게다가 기계식 시계보다 압도적으로 훨씬 더 오차가 적어 정확하고... 세상에 이렇게 단점이 없이 절대적으로 우위에 있는 대안이 나오기란 정말 흔치 않은데 쿼츠 시계는 기계식 시계를 완전히 떡실신시키고 시계의 표준이 되었다. 이 역시 전기 덕분이다. 전자식 시계는 단순히 기계의 동력을 전기로 바꾸기만 한 게 아니라는 걸 처음 알았다.

철도와 전기가 찰떡궁합이라는 것은 이제 더 설명하지 않겠다. ^^;;

이렇게 우리 생활을 이롭게 한 전기이나, 잘못 사용하면 매우 위험해진다는 것 역시 주지의 사실이다. 전기에 대한 의존도가 높아진 만큼 전기로 인한 화재(누전· 합선)가 잦아졌으며 감전 사고도 빼 놓을 수 없다. 정전기는 물기만 있으면 싹 없어지지만, 젖은 손으로 전기 플러그를 만지면 감전의 위험이 있다. 이 둘의 차이가 뭔지 아는 분이라면 용자. =_=;;

정전기의 전압은 순간적으로 수천, 수만 V가 되기도 하지만, 실제로 인체에게 해를 끼치는 것은 전압(V)이 아니라 전류(A)이다. 정전기는 전류는 거의 없다시피하기 때문에 사람에게 치명적이지는 않으나, 사람에 따라서는 정전기에도 굉장히 민감한 경우가 있다. 이 점을 이용, 전기가 사람을 고문하고 사형 집행하는 수단으로도 쓰였다.

사람의 신경도 일종의 전기 신호를 따라 반응하는데 외부에서 그런 무자비한 전류가 들어오면 모세혈관이 터지고 사람 신경이 다 망가질 수밖에 없다. 어느 정도 이상으로 강하게 감전되면 사람은 통제 불능 상태가 되어, 감전을 일으키는 물체로부터 신체를 스스로 움직여 떨어질 수조차도 없어진다고 한다.

뭐, 전압마저 엄청 높으면, 그냥 퍽 불꽃과 함께 타 버리지만 말이다. 고압선 위에 참새가 앉아도 왜 감전되지 않는지도 어렸을 때 주된 과학 FAQ였는데, 답변의 요지는 물론 기억하지만, 구체적으로 어떻게 그게 가능한지 설명은 잘 못 하겠다. =_=;;

니콜라 테슬라가 선보인 마술(?) 중 하나였다는 무선 송전이 앞으로 과연 현실이 될 수 있을까? 그게 가능하다면 정말 현대 전자 공학의 총아로 칭송 받을 것이다.

Posted by 사무엘

2010/05/28 08:17 2010/05/28 08:17
,
Response
No Trackback , 8 Comments
RSS :
http://moogi.new21.org/tc/rss/response/278

고속버스 이야기

1. 최고의 자리와 최악의 자리

28인승 우등 고속버스를 기준으로 3번 자리는 혼자 고속버스를 이용할 때 그야말로 최고의 명당 자리이다.
맨 앞자리이니 앞 승객의 좌석 기울임에 영향을 받지 않으며 앞에 공간 많고, 전방의 경치가 훤히 보이고, 운전석 계기판까지 보이고, 빨리 내릴 수 있고... 요모조모 따져 봐도 가히 명당이 아닐 수 없다. 시내버스에도 경로석이 괜히 앞자리에 있는 게 아니다.

사용자 삽입 이미지

그렇다면 반대로 최악의 폭탄 자리는 두말할 나위도 없이 맨 뒷자리의 중앙이다. 번호로 치면 26~27 정도 되려나?
좌석의 폭부터가 앞의 자리들보다 약간 좁은 데다가 빨리 내릴 수 없고, 엔진이 바로 아래에 있기 때문에 엔진 소리와 진동도 가장 크게 전해지는 위치이다. 안전 벨트를 하지 않은 채로 차가 급정거라도 하면 앞의 뻥 뚫린 복도로 튕겨나갈 것 같아 불안하다. 워낙 안 좋은 자리이다 보니, 일각에서는 고속버스의 저 자리는 마치 KTX 역방향 좌석처럼 할인을 해 줘야 한다는 주장마저 제기되기도 했다.

2. 비행기와 비교하면?

이런 맥락에서 고속버스의 명당 자리는 비행기로 치면 비상구 옆 자리와 비슷하다. 비행기는 세상에서 가장 빡센(resource-critical) 교통수단이다 보니, 이코노미 좌석은 그 어떤 교통수단의 일반석보다도 자리가 좁으며 한 치 공간이 아쉽다. 그런데 비상구 근처 좌석은 앞에 공간이 넉넉하다. 그래서 비행기를 좀 타 본 사람이면 탑승권을 발권할 때 이 좌석을 달라고 직원에게 얘기한다.

다만, 이 좌석엔 아무나 탈 수 없다. 비상구 옆은 사고가 났을 때 비행기를 탈출하기가 굉장히 좋은 위치인 만큼, 여기에 앉은 승객은 비상시에 혼자 도망가지 말고 승무원들과 함께 다른 승객들의 구조와 탈출을 도와야 할 의무가 있다. 이건 전세계 항공업계에 법으로 규정된 의무 사항이다.

그렇기 때문에 이 좌석은 그 의무를 이해하고 거기에 동의하는 신체 건장한 성인에게만 발권된다. 그 좌석에는 각종 안전 수칙을 적어 놓은 팜플렛에도 "이 의무 사항을 이해하고 수행할 능력이 안 되거나 단순히 동의하지 않는 분이라면 즉시 승무원에게 요청해서 좌석을 다른 곳으로 교환하십시오"라고 적혀 있다. 오로지 비행기이니까 그런 제도가 있는 것이다.

3. 구동축

요즘이야 버스들은 열이면 열 다 RR(엔진과 구동축이 모두 뒷바퀴 쪽)이지만, 아주 옛날 구닥다리 버스 중에는 마치 트럭처럼 FR 차종도 있었다.
운전대 아래에 엔진이 있다 보니 그런 버스는 타 보면 운전대 쪽이 약간 높았다. 그 대신 맨 뒷좌석이 불룩 위로 돌출된 게 없었다.

버스를 RR로 만듦으로써 딱히 얻게 되는 장점이 있는지는 잘 모르겠다. 핸들이 가벼워지고 앞부분의 승차감이 좋아지는 걸 노리는 건지?
한편으로 승용차는 과거엔 FR 위주였고 그 유명한 현대 자동차의 포니 역시 FR이었던 반면, 기술이 좀더 발달하면서 FF로 다 바뀌었다. 작고 가벼운 승용차 정도면 무거운 엔진에다 구동축까지 바로 두는 게 여러 모로 유리하기 때문이다. 차가 커질수록 FR이 유리해지긴 하지만, FR 차들이 지난 1월 폭설 때 구동축 무게의 부족으로 인해 눈길에서 죄다 떡실신한 적도 있었다. 명품 외제차들도 예외가 아니었다.

끝으로, 트럭이야 그렇잖아도 뒷부분에 무거운 짐을 가득 싣는 걸 염두에 두고 만들어지니까 엔진이 뒤에 달릴 일은 절대 없을 것이고 언제까지나 FR 체계가 유지될 것이다.

4. 휴게소 환승

고속버스들도 이제 오로지 지정 좌석의 point-to-point 수송 방식이라는 고정관념을 깨고 휴게소 환승을 실시하고 있다. 시도는 나쁘지 않은데, 문제는 고속버스는 그렇게 후속 버스 접속 운행을 하기에는 정시성이 보장 안 된다는 것. 철도야 세상에서 제일 정확하고 잘 통제된 교통수단이며, 비행기도 딱히 결정적인 사고나 나쁜 날씨 크리만 안 터지면 그럭저럭 정시성이 보장되는 편이다. 그러나 도로 교통은 답이 없다. 고속버스는 승차권에 평균 소요 시간만 적혀 있을 뿐, 도착 예정 시각이란 게 찍혀 있지 않다!

그러니 휴게소 환승의 시범 시행도 잘 안 막히는 마이너한 노선에 그것도 주말이 아닌 주중부터 해 온 것이다. 게다가 고속버스는 철도와는 달리 여러 버스 회사들마다 시스템 통합 또한 아직 요원한 실정.
그래서 아직 한번에 선행-후행 버스 표를 통합으로는 못 사고, 휴게소에서 또 후속 버스 차표를 사야 한다고 함. 즉, 시스템적으로 완전히 다른 버스를 두 번 타는 것이나 마찬가지이며, 단지 각 지역에 있던 버스 터미널이 고속도로 내부의 휴게소로 옮겨졌다는 변화가 존재할 뿐이다.

그래도 우리나라는 항공이 발달하기에는 땅이 너무 좁고, 그렇다고 철도 인프라가 훌륭한 것도 아니고 거기에다 고속도로만 죽어라고 엄청 지어내다 보니, 시외나 고속 같은 장거리 도로 대중 교통수단이 매우 발달해 있는 나라이다. 항공사나 공항들은 국내는 너무 좁고 일찌감치 적극적으로 국제선 위주로 배수진을 치고 영업을 하다 보니 인천 공항 같은 실적 좋은 훌륭한 공항도 태어날 수 있었다.

5. 주행 속도

달리는 고속버스 안에서 운전석 계기판을 보면, 요즘 기사 아저씨는 정말로 규정 속도를 지켜서 운전한다. 이따금씩 정말로 느린 차를 추월할 때나 피치 못할 사정이 아니면 시속 100.. 많게 잡아도 110은 절대로 안 넘긴다. 주변에서 승용차들이 우리 버스를 다 쌩쌩 추월해 가더라도 말이다.

그도 그럴 것이 운전사는 규정대로만 달려야 하기 때문이다. 엔진 회전수와 속도가 다 기록으로 남고 있는 마당에 사고라도 나서 과속이 들통나면 운전사에게 좋을 게 하나도 없다.
옛날에 대학 시절에 고속버스를 이용한 일이 있었다. 대전-대구 사이에 경부 고속도로와 경부선이 나란히 달리는 곳을 버스가 달리고 있었는데, 마침 옆의 철길로 새마을호가 지나갔다. 그리고 열차는 딱 시속 100으로 달리고 있던 우리 버스를 아슬아슬하게 추월해 갔다. 조향이 필요하지 않은 궤도 교통수단은 같은 여건이라면 단순 도로 교통수단보다 땅도 덜 차지하고 속도도 더 낼 수 있는 법이다.

그나저나 타코미터를 보고 있으면 디젤 차량은 휘발유 차량보다 엔진 회전수가 정말 낮다는 걸 알 수 있다. 단위 회전수당 토크라고 해야 하나? 힘이 더 큰 것 같다.

Posted by 사무엘

2010/05/25 09:02 2010/05/25 09:02
,
Response
No Trackback , 8 Comments
RSS :
http://moogi.new21.org/tc/rss/response/277

열차 이용 경험 이모저모

※ 입석

본인은 철도를 매우 좋아하지만 우리나라처럼 대중교통 공급이 풍부한 곳에서 굳이 입석이나 예약 대기까지 감수하면서 철도를 이용하지는 않는다.
그래서 명절 때는 오히려 수시로 증차가 되고 좌석을 얻기 쉬운 버스를 자주 이용하는 편이었다. 명절 때 기차를 편하게 타고 가려면, 철도 오덕 기질 수련보다는 철도 인맥과 빽을 만들어 두는 게 더 필요하다. 코레일 직원이 대량으로 추석 귀향 열차 암표를 팔다가 적발됐다는 소식이 꼭 한두 번씩 들리지 않는가.

입석으로 열차를 탈 때는, 지정석 승차권이 있을 때에 비해서 어떤 점이 달라질까?
일단 신문지나 달력 같은 '깔고 앉을' 거리를 준비해 가야 한다. 그리고 무엇보다도 역에 일찍 도착해서 열차에 무조건 먼저 올라타야 한다. 그래야 통로 같은 좋은 자리를 먼저 차지하여 쪼그리고 앉을 수라도 있다. 안 그러면 정말 얄짤없이 객실 복도에서 손잡이를 잡고 서서 가야 한다.

세상엔 기차를 타고 싶어도 못 타는 사람도 많다. 그러니 출발지와 도착지가 비교적 철도로 잘 연결되어 있는 곳을 여행하는 사람들이 알아서 철도로 최대한 빠져 주는 게 좋을 것이다. KTX 같은 경우 워낙 빠르고 대구-서울도 1시간 40분이면 가기 때문에, 입석으로 장거리를 좀 가 봤자 그다지 불편하지도 않다. 더구나 본인의 고향은 경부선이 혼잡하면 중앙선이라는 훌륭한 우회 경로까지 존재하니 선택의 폭은 더욱 넓다고 할 수 있다.

※ 가장 아슬아슬했던 승차 경험

옛날에도 글을 통해 회상한 적이 있지만, 본인이 지금까지 기차를 가장 아슬아슬하게 탄 건 2004년 2월 17일의 서울-대전 하행 새마을호 탑승이었다. KTX 개통 직전에 마지막으로 탄 새마을호인 동시에, 출발 전 Looking for You를 내 인생에서 마지막으로 들은 열차였다.

밤 8시 30분 열차를 예매해 놨는데, 출발 딱 5분 전인 8시 25분에 지하철 1호선도 아닌 4호선 서울 역에서 내렸다. 게다가 가방을 두 개나 들고 있다. 이런 절망적인 상황에서 당시의 일기의 묘사에 따르면,
다리에 힘이 안 날 때까지, 젖먹던 힘까지 죽어라고 뛴 끝에 27분에 지상 서울 역 입구에 도달했다. 그리고 딱 29분에야 기차에 올라탔다. 계단을 내려가면서도 표를 흔들면서 문 닫지 말라고 막 소리를 질렀다.

기침을 하고 가쁜 숨을 몰아쉬며 내 자리에 짐을 놓자마자 차는 출발하기 시작했다. 까무러치기 일보직전. 옆 자리의 승객이 본인에게 괜찮냐고 물었다. Looking for You가 들려오긴 했으나, 들은 시간은 1분이 채 되지 않았던 걸로 기억한다.
목적지에 도착할 때까지 다리가 후들거렸고 후유증은 다음날까지도 계속됐다. =_=;;;;

Posted by 사무엘

2010/05/24 08:11 2010/05/24 08:11
Response
No Trackback , 7 Comments
RSS :
http://moogi.new21.org/tc/rss/response/276

또 잡설

1.
서동탄 역의 개통를 계기로 서울 지하철 1호선 서울 메트로 차 내부의 노선도가 크게 바뀐 것 같다.
그렇다. 1호선 S차 특유의 그 전구 인터페이스가 없어졌다. 지금까지 다닌 역과 지금 지나고 있는 구간이 전구 불빛으로 표시되는 노선도 말이다. 역 개통 이후로 그걸 지금까지 한 번도 못 봤다.

예전에 수원까지만 가던 열차가 그대로 병점으로 연장된 것과는 달리, 병점 행 열차는 대부분이 서동탄 행으로 연장되기는 했으나 다 그렇게 된 건 아니라고 들었다. 잘 알다시피 서동탄 역은 차량 기지 내부에 있는 역이다. 기지에서 바로 회차만 하는 게 아니라 진짜로 운행을 마치고서 쉬고 정비를 받으러 들어가는 열차는 병점에서 승객들을 다 하차시킨다. 마치 서울 지하철 2호선에서 가뭄에 콩 나듯이 평상시에 등장하는 신도림/성수 행 열차 같은 비율이 아닌가 생각된다.

2.
지난번에 나의 실수로 인해 바이러스 크리를 먹은 회사 컴 말이다.
레지스트리와 프로세스 관리자 등 기본적인 응급 처치를 하고 이제 겉보기로는 딱히 이상 증세가 보이지 않음에도 불구하고,
그 컴에다가 플래시 메모리를 꽂으면 거기 루트에 autorun.inf, 그리고 휴지통 디렉터리 아래에 Redmond.exe 등 이상한 파일이 묻어 나오기 시작한다.. 젠장, 바이러스가 여전히 완전히 소탕되지 않았고 흔적이 남아 있다.

그러면 이제 이놈의 바이러스 코드는 어떤 형태로 들어있는 것일까? svchost.exe가 로드해 있는 서비스들?
혹은 다른 미지의 EXE?? 훅킹을 통해 침투된 DLL?
그리고 어떻게 퇴치해야 하나? =_=;; 시스템 복원을 하면 될까? 운영체제 재설치라도 해야 하나? 흠 잘 모르겠다.

3.
구글이 근래에 IE6 장례식 캠페인을 한 데 이어, IE를 만든 MS에서조차도 이제 “IE6은 유통기한이 9년 경과한 우유--물론 이 말은 좀 과장과 어폐, 비약이 있지만--와 같으니 제발 쓰지 말라”고 적극 권고하는 중이다.

웹 표준이 지금처럼 성숙하고 발달하기 전에 편법을 써서라도 웹페이지 상에다 동영상과 MP3 재생을 꼭 하고 싶었고, 128비트 암호화와 인터넷 뱅킹을 하고 싶어서 도입한 게 ActiveX였다.
마치 오픈타입 표준 기술이 도입되기 전에 당장 편법으로라도 옛한글 처리를 하고 싶어서 한양PUA 같은 걸 만들었듯이 말이다.

그러나 그것보다 더 나은 표준이 제정된 뒤부터는 예전 것은 완전 애물단지가 된 셈.
예전 것 자체가 문제는 아니다. 때가 되면 예전 것을 청산을 잘 해야 하는데, 세상은 게으르고 나쁜 쪽으로 보수적으로 빠지는 경향이 있으니 그게 문제이다. PC방, 관공소 등엔 아직도 IE6 천지다. ^^;;
비주얼 C++ 6, 그리고 IE6은 버전이 6인 MS 제품이라는 공통점이 있는데, 너무 오랫동안 쓰이고 있는 구닥다리 퇴출 대상이 되었다는 공통점 또한 존재한다.

어쩌면 완성형 코드라든가, 윈도우 95의 어정쩡한 설계 철학, 그리고 심지어 우리나라 친일파 청산 문제도 이런 맥락으로 봐야 하는 건지도 모르겠다.
(거의 한 세대 기간에 가까운 35년씩이나 일제의 점령을 받고 있던 민족이, 현실적으로 일본 경찰· 군 간부 출신을 이용 안 하고서 어떻게 북한 공산당이나 간첩들과 맞서 나라 치안을 유지할 수 있었겠는가? =_=;;)

4.
옛날에 한창 반미 감정이 최고조이던 시절에 어느 운동권 출신의 음악가(왕년에 무려.. 국가보안법 사범이다)가 f***ing USA라는 민중가요(?)를 작곡한 적이 있었는데..
지금은 그걸 개사를 좀 해야 하지 않나 싶다.
"숏트랙 경기를 보았나 깡패의 나라 f***ing USA 아직도 미국이 아름다운/정의로운 나라인가" 대신에
"천안함 사건을 보았나 양아치 나라 f***ing 북한 아직도 그들이 동족으로 보이는가 우리는 왜 할 말도 못 하는가 얼마나 더 당해야 정신을 차릴 건가" 라고 말이다.

"북한이 선하다고 믿어 주고 한없이 퍼 주기만 하면 언젠가는 개과천선 할 것이다.." 도대체 저런 말을 처음에 어떤 작자가 퍼뜨렸는지 모르겠다. 그리고 김 대중 시절에 교전 수칙 저 따위로 만들었던 놈은.. 정말 쳐죽여야 하지 않는지? 여기에 대해서 아무도 의분하지 않으면서 지 만원, 조 갑제 같은 사람들만 수꼴이라고 욕하는 현 시국은 아무리 봐도 제정신이 아니다.

그런데.. 현 정권은 평소에 북한에 대해서 지금처럼 단호하게 나가던 성향이 절대 아니었는데, 갑자기 저렇게 대응을 하는 걸 보면, 선거를 의식해서 저러는 거라는 의혹도 부정하기는 힘들 것 같다. =_=;;;;

Posted by 사무엘

2010/05/22 09:13 2010/05/22 09:13
Response
No Trackback , 7 Comments
RSS :
http://moogi.new21.org/tc/rss/response/275

윈도우 비스타/7에서는 아래아한글의 키매크로가 지원되지 않는다는 걸 며칠 전에야 처음으로 확인했다. 메뉴가 흐려져 있고 아예 선택이 되지 않더라. XP를 졸업한 지 2년이 넘었는데 몇 년째 이 사실을 왜 모른 채 지냈는지 모르겠다. 키매크로는 도스용 1.x 시절 이래로 아래아한글 고급 사용자의 최강의 애용 기능이었는데도 말이다.

아니 그럼 도움말에다가 언급이라도 해 놓지 왜 아무 설명도 없이 메뉴 접근만 막아 놨는지? 그 이유는 인터넷을 검색한 뒤에야 알 수 있었다. 물론 어느 정도 짐작은 했지만 말이다.
(아래아한글 2005는 비스타/7에서는 수 차례의 패치를 안 받으면 에러가 나고 아예 동작을 하지 않으며, 2007도 패치를 받아야 Aero가 적용된 운영체제 표준 모양 스킨을 쓸 수 있다. 비스타에서 키매크로 메뉴를 막은 것도 2005의 패치부터 그렇게 된 거라 함.)

비스타 이상부터는, 아래아한글이 키매크로를 구현할 때 쓰이는 기능 내지 테크닉이 운영체제의 보안에 영향을 끼친다고 간주되어 그걸 운영체제 차원에서 막아 버린 모양이다. UAC 끄고 관리자 모드로 실행해도 별 소용 없다.

사실, 도스가 아닌 윈도우 같은 이벤트 위주 환경에서 키매크로 같은 걸 구현하기는 쉽지 않다. 도스처럼 한 프로그램이 모든 하드웨어 자원을 장악하고 독점하고 일괄 처리를 하는 환경이 아니기 때문이다.
아래아한글이 윈도우용으로 처음으로 포팅되었던 3.0B 시절에는 기능은 분명 화려해졌다. 드디어 아래아한글에다가 윈도우용 TTF에다가 여타 프로그램의 OLE 개체를 집어넣는 게 가능해졌다니.. 그리고 도스용 아래아한글과 정보 손실 없이 파일 공유까지 가능하다니!

하지만 윈도우용에 매크로 기능은 응당 포팅이 안 돼 있었다.
Win32s에, 95에, NT까지 다 신경써야 하던 시절에 그렇게 하드웨어에 민감한 고급 기능을 넣기는 현실적으로 곤란했을 것이다. 내 기억이 맞다면 96까지도 아직 없었다.
그러다가 97에 와서야 프로그램이 Win32s를 제낀 체제로 개편되고 매크로 기능도 다시 생겼다.

그랬는데 한 가지 굉장히 신기한 것은, 매크로를 기록하는 파일 포맷이 9x 계열과 NT 계열이 서로 달랐다는 것이다. 아래아한글 사용 안내문에서 분명히 본 문장이다. 즉, 똑같은 97을 쓰는데, 윈도우 9x에서 녹화하여 저장한 매크로 파일을 NT4에 설치된 97에다 가져와서 쓸 수는 없으며 동일한 매크로를 해당 플랫폼에서 다시 만들어야 했다는 뜻이다.

도대체 무슨 데이터를 저장하기에 똑같은 x86 계열 컴퓨터에서 저장한 매크로 파일이 왜 서로 호환이 안 됐을까? 단순한 키 시퀀스를 저장한 게 아니라 아래아한글의 매크로 구현 방식이 아주 특이했을 거라는 짐작만을 해 볼 뿐이다.
본인은 나름 한컴사전의 노클릭 단어 인식 기능도 어떻게 구현했을지 대략 짐작할 정도이지만, 매크로에 대해서는 여전히 알쏭달쏭 갸우뚱이다. 노클릭 단어 인식도 훅 DLL이 9x과 NT 계열이 서로 별도로 존재하며, 심지어 16비트 프로그램용 훅 DLL까지 들어있다.

그렇게 아래아한글은 윈도우에서도 키매크로를 살려 내기는 했지만, 도스 시절 같은 빠른 속도까지 회복하지는 못했다. 전광석화처럼 화면이 깜빡이며 돌아가는 도스 매크로에 비해 윈도우는...;;
그냥 화면에 그림만 그리는 도스 시절의 대화상자와, 수십/수백 개의 개체로 이뤄진 윈도우 대화상자가 뜨는 오버헤드는... 서로 비교가 안 될 것이다.
게다가 Alt+L, K, T, A, D (블록으로 잡은 텍스트의 한글 서체를 궁서로 바꾸기) 같은 궁극의 단축키 신공도 느릿느릿 마우스 위주인 윈도우에서는 그대로 재현할 수 없게 됐다.

도스든 윈도우든 키매크로 자체를 구현할 정도라면, 매크로가 실행되는 중에 화면 업데이트를 안 하게 하는 옵션을 넣는 것도 불가능하지는 않을 것 같은데, 그것만 해도 매크로의 실행 속도를 무척 향상시킬 수 있지 않을까 싶다.

매크로는 일반적인 워드 프로세서 사용자보다 더 전문적인 컴덕후들이 즐겨 사용하는 텍스트 에디터에서는 더욱 필수인 기능이다. 비주얼 스튜디오의 경우 긴 매크로가 실행 중일 때는 트레이에 풍선 도움말도 뜨고, 이걸 건드리면 실행 중인 매크로를 손쉽게 중단도 시킬 수 있다. 아래아한글에도 이런 배려가 있었으면 좋겠다.

윈도우 환경에서는 도스 시절 같은 기계적인 키매크로의 의미가 여러 모로 퇴색한 만큼, 아래아한글도 최신 버전부터는 스크립트 기반 매크로를 지원하고 있다. 과거 PC 통신 에뮬인 이야기에 혼잣말 기능이 있었듯이. 키 조작이 아니라 키 조작이 의미하는 명령을 기록함으로써 좀더 똑똑하고 효율적인 매크로를 구현하고 간단한 프로그래밍 로직과 분기까지 구현한 것이다. 이 정도로 매크로가 능동적인 존재가 되고 나면, 슬슬 매크로의 보안도 따져야 할 필요가 생길 것이다.

스크립트 매크로는 키매크로와는 내부 구현 방식이 다른 듯하며, 아래아한글도 앞으로는 키매크로를 빼고 스크립트 매크로만 지원할 것으로 보인다.
그런데 스크립트 매크로를 이용하여 키 입력을 녹화해 봤는데 이상한 에러와 함께 실행이 안 돼서리...;;;
급하게 매크로를 수만 번 실행해야 할 일이 있는데 결국은 VMware 아래의 윈도우 XP에다가 아래아한글을 설치해서 키매크로 뺑이를 돌려야 했다. 아놔이런....;;;;;;;;

HWP.EXE의 속성-호환성 탭을 이용해서 운영체제의 버전을 일부러 낮춰 주면 매크로 메뉴를 사용은 할 수 있게 되나, 반복 실행이 되지 않았다. Alt+번호로 개개 실행도 속도가 매우 느렸다. 앞서 말했듯이 아래아한글의 키매크로는 어떻게 구현됐는지 정말 궁금할 따름이다.

제대로 된 매크로를 응용 프로그램이나 운영체제가 지원해 준다면, 매크로를 실행 중인 프로그램은 매크로 실행 결과를 실시간으로 업데이트 하든 안 하든, 최소한 응답이 없이 죽어서 ghost 윈도우가 되는 일은 없어야 하며, 언제든지 중단도 시킬 수 있어야 할 것이다. 그리고 다른 프로그램에서 사용자가 키 입력을 하든 말든 자기는 자기 일만 잘 하고 있어야 할 것이다.

그런데 아래아한글은 그렇지는 못한 것 같다. 매크로를 돌리고 나서 한참 컴퓨터를 가만 놔뒀더니, 화면 보호기가 갑툭튀 실행된 후로 프로그램 창은 거의 ghost 윈도우처럼 아무 응답이 없고, 게다가 그때부터 키보드 입력이 엉뚱한 곳으로 갔는지 매크로가 제대로 실행되어 있지 않았다. 이런 망할 화면 보호기.. -_-

요즘 사람들은 컴퓨터를 안 쓸 때도 그냥 켜 놓는 경우가 워낙 많기 때문에 컴퓨터 설계자들은 idle 상태일 때 전기를 최대한 아끼는 방법을 연구하는 게 당연지사이다.
그런데 가끔씩은 컴퓨터를 서버 용도로 쓸 때도 있고, 프레젠테이션 발표용으로 쓰기도 하고, 윗글처럼 일괄 처리를 시켜 놓는 경우도 있다. 그럴 때는 오랫동안 키보드 입력이 없다고 해서 컴퓨터가 함부로 툭 꺼져 버려서는 안 된다. 이 둘이 마치 교통수단의 이동성과 접근성처럼 동전의 양면 같은 면모가 아닐까 한다.

Posted by 사무엘

2010/05/20 08:32 2010/05/20 08:32
, ,
Response
No Trackback , 5 Comments
RSS :
http://moogi.new21.org/tc/rss/response/274

« Previous : 1 : ... 194 : 195 : 196 : 197 : 198 : 199 : 200 : 201 : 202 : ... 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:
3044168
Today:
1360
Yesterday:
2435