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

별들의 근황

본인은 군 장성하고는 아무 인연도 없다. 그냥 생각이 나서 자료를 모아 본 것이다. ^^
각 사람이 아니라 장군이라는 직급이 주제이기 때문에 고유명사가 아닌 보통명사로 글을 분류했다.

사용자 삽입 이미지
2009년 3월, 투스타 신분으로 안양의 모 예비군 훈련장을 발칵 뒤집어 놓으며 매스컴의 주목을 한몸에 받은 방 원팔 장군(1956년생. 육사 35기)을 기억하는가?
뉴스 기사를 검색해 보니 작년 말까지도 여전히 사단장 직급이던데 지금은 진급은 했으려나 모르겠다.

사용자 삽입 이미지
쓰리스타와 포스타의 만남.
정 승조 장군(1953년생. 육사 32기)은 2007년 말에 저 사진에 나온 대로 군단장에 취임하고, 2009년에는 47대 육군 사관학교 교장을 역임한 후, 현재는 포스타로 진급하여 제1야전군 사령관을 맡고 있다. 육사 교장 재임 기간이 5개월 남짓밖에 안 되는데, 이는 일찍 진급한 덕분에 보직이 바뀐 것이다.

사용자 삽입 이미지
이등병과 포스타!!!
와.. 옆의 저 병사는 무슨 생각을 하고 있을까? 후덜덜덜덜... 얼어붙어 있는 게 표정만 봐도 느껴진다.
임 충빈 장군(1950년생. 육사 29기)은 45대 육군 사관학교 교장(2006~2008)과 39대 육군 참모 총장(2008~2009)을 연달아 맡은 후, 현재는 더 진급할 곳이 없으니 예편한 상태.
저 사진은 2009년 언젠가 육군 참모 총장의 초소 시찰 중에 촬영된 것이라 한다.

Posted by 사무엘

2010/05/19 08:19 2010/05/19 08:19
,
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/273

1. 어지간하면 이제 좀 ‘짜장면’을 표준어로 삼자

‘짜장면’을 반대하는 대표적인 근거가 뭔지 본인은 잘 알고 있다. ‘짜장’은 원래 중국어에서 유래된 외래어이고 우리말 맞춤법은 외래어 표기를 할 때 극히 일부 듣보잡 언어를 제외하면 된소리를 쓰지 않고 있는데, 된소리로 발음된다고 다 된소리를 써 버리면 버스도 뻐스로, 게임도 께임으로 바꿔야 되기 때문이다.

그런데 여러분은 짜장이 버스나 게임 같은 급의 생소한 외래어라고 생각하는가? 짜장이 외래이어이면 빵, 가방, 담배, 구두 같은 단어도 몽땅 외래어이다.
물론 순우리말 ‘짜장’이라는 단어는 부사로, ‘참, 과연’.. 즉 영어로 치면 yea나 indeed 같은 뜻이 별도로 있긴 하다. 쉽게 말해서 창 3:1의 Yeah, hath God said를 “하나님께서 짜장 그렇게 말씀하시더냐?” 처럼 옮겨도 된다!
하지만 이제 그 짜장과 저 짜장은 한국어에서 동음이의어가 되어 버린 지 오래이고 오히려 후자의 뜻이 훨씬 더 영향력이 있다. 게다가 짬짜면 같은 응용(?)까지 있다.

이제 와서 너무나 비현실적인 단어로 전락한 ‘자장면’을 고집할 필요는 없다는 게 본인의 생각이다. 자장면에다가 외래어 표기법을 갖다 붙이는 건, ‘먹거리’라는 말이 조어법에 어긋난다거나 셈씨(數詞) 뒤에다가 님 붙인 형태이기 때문에 ‘하나님’은 틀렸고 ‘하느님’이 맞다는 식의 비약인 것 같다. 고유명사를 만드는 건데 부르기 쉽고 최소한의 어원적 근거만 있으면 됐지, 그런 것 따질 필요까지는 없다.
(사실, 고유명사 중에 쌍용도 틀린 말이다. 청룡, 황룡 할 때처럼 쌍룡이 맞다. ^^ 하지만 고유명사인데 뭔들 어떠하겠는가. 오뚝이인들 어떻고 오뚜기인들 어떠하리?)

2. ‘석/서/세’, ‘넉/너/네’ 구분하지 말고 그냥 ‘세’, ‘네’로 통일하자

‘종이 세 장’이라는 표현은 틀렸다는 걸 아는가? ‘석 장’이라고 해야 맞다.
정말 아무 쓰잘데기 없고 의미 없는 구분이다. 괜히 사람 헷갈리게 만들고 한국어를 더 복잡하고 어렵게 만드는 요소이다. ‘서너’(3 or 4) 같은 예외만 인정하고, 뒤에 단위(말, 개, 장 등등)에 따라 숫자의 표현이 바뀌는 일이 없게 하는 게 더 낫겠다.

3. ‘째’와 ‘번째’ 좀 구분해서 쓰자

‘째’는 영어로 치면 정확하게 n-th(순위, 서열)에 대응하며 (첫째, 둘째, ..., 열한째, 열두째),
‘번째’는 n-th time(반복되는 일의 횟수)에 대응한다고 보면 정확하다. 즉, 쓰임이 완전히 다르다는 걸 알아야 한다.

- 이 선수가 둘째로 결승선을 통과했다. (2등)
- 이 선수가 두 번째로 결승선을 통과했다. (두 바퀴째)

하지만 현실은 시궁창. 쓰임이 굉장히 문란해져서 둘 다 무조건 ‘번째’가 쓰이며, 순위인지 횟수인지는 그냥 문맥으로 대충 구분되는 중이다. ^^;;;; '째'는 명사형으로 "첫째(아이)를 낳았다" 정도에서나 쓰는 것 같다.

4. ‘기존’을 제발 오· 남용하지 말자

이 단어의 쓰임을 완전히 뒤죽박죽으로 만들어 놓은 곳은 본인이 보기에 IT계이다. 하도 새로운 기술이 홍수처럼 쏟아져 나오다 보니 자꾸 옛날 것과 비교를 해야 하는 분야이기 때문이다.

‘기존’은 말 그대로 ‘이미 존재하는’이란 뜻이다. ‘현존’이나 ‘실존’처럼 ‘하다’를 붙여 용언을 만들 수도 있다. 그런데 요즘은 기존이 ‘이전’, ‘예전’ 같은 뜻으로 막 남발되고 있고, 오히려 ‘기존하다’라고 용언으로는 거의 안 쓴다. “기존에 있던 것은 버리세요” ㅋㅋㅋㅋ 기존이 무슨 뜻인지 안다면 저 문장이 얼마나 말이 안 되는지 알 수 있다.

5. ‘커녕’은 조사(토씨)이다

커녕은 ‘도’, ‘조차’와 동일한 조사이다. “사람커녕 쥐새끼 한 마리 없다”라고 해도 원래 맞다. 커녕을 강조하기 위해서 쓰이는 표현이 ‘는(은)커녕’이다.
그런데 요즘 사람들은 습관적으로 “사람은 커녕 쥐새끼 한 마리 없다”라고 커녕을 거의 부사처럼 띄어서 써 주고 있다. ^^;;

6. ‘다르다’와 ‘틀리다’를 제발 구분해서 쓰자

“ ‘다르다’는 ‘틀리다’와는 의미와 쓰임이 다른 단어입니다. 그렇기 때문에 ‘다르다’라고 써야 할 곳에 ‘틀리다’라고 쓰는 것은 틀립니다/틀렸습니다.”

‘틀리다’는 보통 ‘틀렸습니다’라고 과거형으로 많이 쓰이다 보니, 현재형에다가 ‘다르다’라는 의미가 자꾸 들어가려는 모양이다.

7. ‘더 이상’의 자세한 설명은 생략한다.

사실은 ‘더 이상’도 ‘덜 이하’가 잘못된 것만큼이나 아주 잘못된 표현이다. 김 화백의 유명한 만화 대사이기 때문에 원문 그대로 인용할 뿐, 본인 역시 내가 직접 쓰는 글에는 ‘더 이상’이라는 말을 절대 쓰지 않는다. ‘더는’, ‘더’, 또는 하다못해 ‘그 이상’라고 써야 맞다.

8. ‘김밥’의 표준 발음은 ‘김빱’이 아니다?

아마 많은 사람들이 의아해할 것이다. 본인도 지금까지 김밥을 ‘김밥’이라고 그대로 발음한 적이 한 번도 없었다.

곰국, 비빔밥은 다 국과 밥이 된소리로 변하는 반면 짜장밥, 보리밥, 볶음밥은 예사소리 그대로이다. 곰국이 곰고기로 만든 음식이 아니듯이, 재료가 아니라 조리 방법을 나타내는 단어는 된소리이고 단순 재료 합성일 때는 예사소리인가 그렇게 생각했었는데 비빔밥과 볶음밥의 관계를 생각하면 꼭 그렇지도 않다. 볶음밥은 단순히 둘째 음절이 '끔' 된소리여서 셋째 음절이 예사소리로 유지된 것일 뿐이다.

즉, 된소리로 바뀌는 건 거의 랜덤인 듯하다. 이러면 사람들에게 왜 굳이 김빱이 아니라 김밥이라고 발음해야만 하는지를 설득하기가 어려울 것 같다.
하나 덧붙이자면 햇님도 잘못된 말이고 해님이 맞다. 우리말에서 사이시옷은 정말 울트라 캡숑 어려운 개념이며, 단어 구분을 어렵게 만들고 있는 주범이다.

9. ‘쩜’과 ‘짜’

이미 국어에서 별도의 변별 요소로 널리 쓰이고 있는 ‘짜’(특정 글자를 강조하는 접미사)와 ‘쩜’(소수점의 명칭)이 별도의 표기로 필요하다고 생각함. ‘자’는 단어의 끝에 등장하면 字보다는 者의 의미로 훨씬 더 강하게 쓰이며, ‘점’은 point보다는 score의 의미로 더 쓰이기 때문이다.

“하나님에서 님짜는 존칭을 나타내는 접미사라기보다는 완전한 단어의 일부입니다.”
“저희 어머니의 성함은 김 순짜 애짜입니다.”
“저 선수의 점수는 이십오쩜 오점입니다.”

10. ‘여덟’

8을 뜻하는 ‘여덟’은 먼 미래엔 아예 ‘여덜’로 철자가 바뀔지도 모르겠다. “열에 여덟은” 할 때 ‘여덜븐’이라고 발음하는 사람이 있는가? 비슷한 예로 ‘돐’이라는 단어가 맞춤법이 바뀌는 과정에서 아예 ‘돌’로 퇴화가 확정된 적이 과거에 있었다.

북한에서 인명의 ‘희’를 아예 ‘히’로 바꿔 버렸듯이 말이다. 사실 한국에서도 ‘의’를 제외하면 ㅢ를 ㅡ+ㅣ로 발음하는 경우 자체가 사실상 사라졌다. ‘띄어쓰기’만 해도 그렇다.

Posted by 사무엘

2010/05/18 07:25 2010/05/18 07:25
Response
No Trackback , 22 Comments
RSS :
http://moogi.new21.org/tc/rss/response/272

바이러스에 걸리다

어느 유명 커뮤니티 사이트를 사칭하면서 누가 당신을 찜해서 무슨 파일을 보냈다는 식의 메일이 내 회사 이메일로 도착했다.
이런 메일은 100% 스팸이나 바이러스나 기타 등등 불순한 메일... 즉 보내는 사람이 내가 누군지 모르고 보낸 메일이다.

내가 제정신으로 있으면서 이런 첨부 파일을 열 리는 절대 없었겠지만, 일단 압축을 풀거나 JPG 그림 파일을 보는 것만으로 바이러스가 전달될 리는 없다고 여겼기 때문에 파일을 열어 봤다.

그리고 내가 방심했던 게... 요즘 특히 msn 계정으로는 할 일 없는 녀석들이 아무에게나 저런 메시지를 워낙 많이 보내기 때문에, 저건 꼭 기계가 퍼뜨리는 바이러스는 아닐 수도 있다고 판단했던 것이다. 왜, 네이버나 싸이에 가 보면 내 아이디를 어떻게 귀신같이 찾았는지 무슨 카페로 초대하는 메일이나 쪽지가 많이 도착하지 않는가? 그런 것처럼 말이다.

그랬는데.... 감쪽같이 속았다.
압축되어 있던 파일은 헥사 에디터로 들여다보니 실행 파일이었을 뿐만 아니라 실제 이름은,
document.jpg (공백 잔뜩) .exe 였다! 오른쪽 부분을 내가 못 본 것이다.
이런 망할...;; 기분 확 잡치는 순간이었다.

작업 관리자를 열어서 즉시 저 프로세스를 죽였다.
이미 내 계정 모처에다가 운영체제 시스템 프로세스를 사칭한 lsass.exe가 만들어지고 돌아가고 있는지라, 그것도 프로세스를 죽이고 파일을 지웠다.
레지스트리 편집기를 열어 보니 역시 저 가짜 lsass를 실행하는 엔트리가 만들어져 있어서 그것도 삭제. 본인은 저 ‘시작 프로그램’ 레지스트리 목록은 즐겨찾기에다 등록해 놓고 수시로 검사한다.

그러고 나서 ‘시스템 정보’를 띄워서 로드된 모듈을 exe뿐만 아니라 dll 단위로 정밀 검사하고, ‘제어판 관리 도구-서비스’로 들어가서 이상한 놈이 생기지는 않았는지도 검사.
이상이 없는 걸 확인하고 재부팅 후에도 다행히 특이 사항이 발견되지는 않고 있으나, 요즘 바이러스들이 얼마나 끈질긴 놈인지를 익히 알기 때문에 여전히 마음이 편하지가 않다.

인터넷으로 최초로 받은 실행 파일이나 심지어 chm 파일은 클릭해도 정말로 열(실행할) 거냐고 운영체제가 원래 묻지 않던가?
어쨌든 여러 모로 방심하다가 큰 낭패를 당할 뻔 했다.

여담이지만 윈도우 비스타에서부터 추가된 사용자 계정 컨트롤은, 일단 바이러스가 취할 만한 동작은 다 무조건 사용자의 허가와 관리자 암호 입력을 받은 뒤에만 행하기 때문에 컴퓨터를 굉장히 안전하게 만들어 준다는 건 명백하겠다. 하지만 평소에 컴퓨터 다루기가 불편해도 너무 불편해지니까 끄고 지낸다. -_-;;

지금까지 스팸 메일 한 통 온 적 없던 내 회사 메일로 어떻게 해서 이런 바이러스가 묻은 메일이 오게 됐을까? 같이 이런 메일을 받은 직장 동료도 있는 걸 보아하니 거래하는 회사에 등록되어 있는 주소록을 토대로 바이러스가 쫙 전파된 것 같다. 어쩌면 내가 바이러스 메일을 열어 버린 동안 내 컴퓨터를 통해서 또 바이러스 메일이 전파되었을지도 모르고.

컴퓨터로 뭔가 생산적인 일만 해도 우리나라 IT 개발자들은 격무와 야근에 시달리는 중인데, 정말 더럽게 할 일 없어서 이런 거나 만들어 퍼뜨리는 국내외의 바이러스 제작자들은... 제발 정신 차리고, 해충 같은 짓 하지 말고 세상에 좀 도움이 되는 일이나 했으면 좋겠다.

Posted by 사무엘

2010/05/17 08:58 2010/05/17 08:58
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/271

남이섬 여행 (2010/5/14)

회사 워크샵 명목으로 남이섬에 갔다 왔다.
남이섬 방문은 2004년 2월에 고등학교 동기 MT 이후로 6년만에 처음이다. 그 옛날에 처음 갔을 때는

- 얼음 폭포와 타조를 구경했다.
- KTX 개통 직전, 경춘선 통일호를 처음이자 마지막으로 이용했다.

정도만 기억에 남아 있었는데, 겨울에 이어 이제 초여름 날씨 때에도 가 보니 감회가 새롭다.
경춘선이 끼는 지역은 산과 호수가 어우러진 정말 아름다운 지대라는 걸 다시금 느낄 수 있었다. 환상적인 경치였다. 마침 날씨도 어쩜 이리도 좋았는지!
이뿐만이 아니라 이번 여행은 다음과 같은 점에서 매우 의미 있는 경험이었다.

사용자 삽입 이미지

- 경춘선 열차가 아닌 자동차로 간 여행.
- 외곽 순환 고속도로의 성남 IC 이북 구간을 난생 처음으로 구경하고, 더구나 미사 대교로 한강을 건너서 지금까지 말로만 듣던 경춘 고속도로까지 처음으로 구경해 봤다(고속국도 60호선). 덕소로 가면서 고속도로가 철길 위로 지나는 것만 봤는데 이제는 우리 도로 아래로 중앙선 철길이 있는 걸 본 것이다.
- 빨간색 교량을 한 경춘선 구 단선 선로와, 이제 새롭게 연두색 고가로 건설되고 있는 경춘선 복선 전철 선로를 선명하게 대조할 수 있었다.
- 소위 경춘북로라고 불리는 46번 국도는 어지간한 고속도로를 뺨칠 정도로 잘 닦여 있었다. 산을 정면으로 뚫은 터널과 아파트들 위로 우뚝 솟은 고가는 마치 외곽 순환 고속도로의 의왕-과천 구간을 보는 느낌이었다. 단, 차선 수는 8차선이 아닌 4차선.

남양주와 가평 일대에는 형형색색의 인테리어를 한 펜션과 모텔들이 즐비했다.
그리고 또 빼놓을 수 없는 건 군부대. 지나가는 길목에서 말로만 듣던 가평의 야전 수송 교육단(운전병을 양성하는 곳)도 보고, 사격장 근처에서 총소리를 듣기도 했다.

남이섬 내부엔 '유니세프 나눔 열차'라는 웬 협궤 꼬마 열차가 다닌다. 궤간이 정말 실감나게 좁은데, 아마 과거 수인선 협궤와 동일한 궤간이지 싶다.

사용자 삽입 이미지

사용자 삽입 이미지
날씨가 얼마나 좋았는지 상상이 되지 않는가?
아래는 <겨울 연가>던가.. 무슨 드라마를 찍은 장소이기도 하다는 오솔길.
사용자 삽입 이미지

단선 비전철에 디젤 기관차가 달리던 경춘선이 앞으로는 장대 레일 복선 전철로 거듭난다. 이런 휴양지로 머지않아 전동차가 다닐 걸 생각하면 가슴이 설렌다.

사용자 삽입 이미지

Posted by 사무엘

2010/05/15 21:32 2010/05/15 21:32
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/270

« Previous : 1 : ... 187 : 188 : 189 : 190 : 191 : 192 : 193 : 194 : 195 : ... 214 : Next »

블로그 이미지

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

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2024/03   »
          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:
2632499
Today:
1051
Yesterday:
1314