« Previous : 1 : ... 186 : 187 : 188 : 189 : 190 : 191 : 192 : 193 : 194 : ... 215 : Next »

※ CreateFont

받는 인자가 무려 14개나 되어, Win32 API 전체를 통틀어 손꼽힐 정도로 받아들이는 인자가 많다. MSDN 레퍼런스 없이는 함부로 꺼내 쓰지도 못한다.
그렇다고 해서 딱히 포인터를 전달한다거나, 결과값을 받는다거나 하는 것도 아니고 인자들은 다 단순한 int 아니면 문자열들이다. 이 값들을 LOGFONT라는 구조체에다 담아서 한꺼번에 전달하는 CreateFontIndirect라는 함수가 별도로 있기도 하다.

하지만 실제로 쓰이는 인자는 글꼴 이름과 크기(가중치 100), 그리고 아주 가끔 빌드/이탤릭 여부(가중치 20) 정도가 진짜 전부이다.
전문적인 워드/그래픽 프로그램이 아니고서야 장평값이 다르다거나 기울여진 상태로 글자를 찍을 일이 있기나 할까? 운영체제가 기본으로 지정한 퀄리티(안티앨리어싱 여부) 말고 다른 걸 지정할 일도 거의 없기는 마찬가지. 좀더 간단한 형태의 함수가 있었으면 좋겠다. MFC의 CFont::CreatePointFont()처럼 말이다.

※ CreateProcess

인자 개수 10개. 프로그램을 실행하는, 좀더 정확히 말하면 프로세스를 생성해 주는 가장 저수준 함수이다.
실생활에서는 파일 이름과 매개변수(가중치 100)만 있으면 거의 다 통용되고, 거기에다 초기 시작 디렉터리와 윈도우 초기 배치 방식을 나타내는 SW_* 값 정도만 있으면 될 것이다(가중치 20).

하지만 이 함수 역시 사용하기는 무진장 까다롭다. 파일 경로를 나타내는 버퍼는 read only여서는 안 되고 write 가능한 영역에 있어야 한다. 운영체제가 이 문자열을 그대로 strtok 스타일로 tokenize를 했다가 다시 원래 형태로 되돌려 주기 때문이다. null 문자를 잠시 삽입하므로 이는 버퍼를 수정하는 행위임.
디버거 붙일지 여부, 각종 보안 설정, 환경 변수 값, 심지어 멀티모니터 환경에서 프로그램을 초기에 띄울 모니터 위치 등등.. 별별 정보를 다 지정 가능하기 때문이다.

게다가 리턴값으로는 새로 생긴 프로세스 및 스레드의 식별자와 핸들 같은 것도 돌아오는데, 그 핸들은 이 함수를 호출한 프로세스가 알아서 Close 해 줘야 된다. 여간 손이 많이 가는 게 아니다.
MS는 프로그램을 실행할 때 16비트 시절의 잔재인 WinExec 함수를 사용하지 말고 이 함수를 사용할 것을 권하나, WinExec의 간편함(달랑 명령줄과 윈도우 배치 방식만 넘겨주면 됨!)의 유혹을 뿌리치기는 쉽지 않을 것이다. 사실 WinExec도 이제는 내부적으로 CreateProcess를 호출하는 방식으로 실행된다.

※ CreateFile

인자 개수 7개. C 표준 함수에 있는 fopen처럼 파일 이름과 용도(많지도 않다. 읽기 아니면 신규 생성)만 있었으면 좋겠지만, 역시 운영체제 API이다 보니 보안 관련, 파일 공유 여부 같은 잡다한 정보들이 엄청 많이 들어간다. 파일을 그저 문서의 열기/저장 기능 구현 용도로나 쓴다면 대부분의 세부 옵션들은 필요하지 없으며, 그냥 디폴트만 넘겨 주면 된다.
사실 이 함수는 디스크 상의 파일뿐만 아니라 파일의 형태로 표현 가능한 각종 운영체제 오브젝트들을 생성할 수도 있는 상당히 다재다능한 녀석이다. 피타고라스는 세상만물이 수라고 말했다면, 유닉스에서는 모든 게 파일이라고 한다. 윈도우 운영체제도 그런 철학이 아주 없지는 않다.

※ GetOpenFileName

우리에게 친근한 파일 열기 대화상자를 꺼내 주는 함수. 이제 얘는 인자로 일일이 입력 정보를 받는 방식을 애초부터 포기하고, 대신 크고 아름다운 구조체만을 받는 형태이다. C++로는 응당 클래스를 만들어 쓴다. MFC의 CFileDialog처럼.

하지만 실제로 자주 쓰이는 정보는 열기/저장 여부, 시작 디렉터리, 파일 포맷 필터 말고 있나? (가중치 100)
거기에다가 아주 가끔씩 파일 복수 선택 여부라든가 '읽기 전용으로 열기' 같은 자잘한 옵션만.. (가중치 30)
이렇게 굳이 구조체 만들 필요 없이 간단하게 실행이 끝나는 함수도 좀 있었으면 좋겠다는 생각을 꽤 자주 하곤 했다.

※ TaskDialogIndirect

너무나 클래식한 API인 MessageBox 함수를 대체하는 새로운 UI 대화상자 함수로, 윈도우 비스타에서 처음으로 추가된 걸로 잘 알려져 있다.
다른 건 '메시지 박스' 그대로 쓰면 되는데 "다음부터 이 메시지 표시하지 않음" 체크 같은 딱.. 2% 아쉬운 면모만 보충하고 싶을 때... 이 함수가 가히 구세주이다. 참고로 이 함수를 쓰려면 공용 컨트롤 6.0 매니페스트가 필수라는 걸 잊지 말자.

물론 얘는 TaskDialog와 TaskDialogIndirect로 아예 두 버전으로 나뉘어 있고, 쓸데없이 괜히 함수 프로토타입만 복잡한 게 아니라 진짜로 사용자가 실제로 쓸 수 있는 기능이 엄청 많은 게 맞다. 최근에 만들어진 만큼 API를 비교적 잘 설계했다는 생각이 든다. 하지만 정확하게 기억은 안 나는데 TaskDialog에는 정작 내가 꼭 써야 하는 customize 기능이 빠져 있어서 어쩔 수 없이 훨씬 더 복잡한 TaskDialogIndirect 함수만 써야 했던 것 같다. 그건 아쉬운 점.

대화상자의 제목, 큰 제목, 본문, 각 버튼의 모양, 링크, 라디오 상자 등등등...
이건 구조체가 아니라 아예 대화상자 생성 스크립트(XML 기반)를 받게 해도 이상할 게 없어 보인다.
최신 MFC에는 이 task dialog를 감싸는 클래스가 "당연히" 추가되어 있으며, 각종 상업용 GUI 패키지들에는 XP 이하 운영체제에다가도 task dialog를 자체 구현한 솔루션이 있기도 하다.

Posted by 사무엘

2010/06/29 08:53 2010/06/29 08:53
,
Response
No Trackback , 3 Comments
RSS :
http://moogi.new21.org/tc/rss/response/306

C++의 typename 키워드

C++ typename 키워드의 용법은 크게 두 가지이다. 그러나 주된 목적은 동일하다. 다음에 나오는 명칭이 변수도 될 수 있고 변수의 타입 이름이 될 수도 있는 문맥일 때, 이것이 명백하게 후자임을 알려 주는 것이다.

먼저, typename은 잘 알다시피 템플릿 인자를 선언할 때 class 대신 쓸 수 있다.

template<class T> void Swap(T& a, T&b );
template<typename T> void Swap(T& a, T&b );

위의 두 줄은 의미상 완전히 동일하다.
템플릿이 C++ 언어에 처음으로 추가되었던 당시에는 typename이라는 키워드가 없었고 템플릿 인자를 선언할 때에도 class를 썼던 것이다.
그러나 이것은 의미상으로 문제가 있었다. 아래의 예를 보자.

template <class T, int N>
class MyClass {
public:
    T data[N];
};

MyClass<int, 20> obj;

템플릿 인자로는 잘 알다시피 자료형 이름 내지 정수 숫자가 올 수 있다.
그런데 int N에 해당하는 템플릿의 인자로는 마치 일반 함수의 인자처럼 int 값에 해당하는 20이 쓰였다. 그런데, class T에 해당하는 첫째 인자는 그럼 T라는 클래스에 속하는 개체가 쓰인단 말인가?

전혀 그렇지 않다. 여기서는 진짜로 특정 type에 속하는 20 같은 값이 아니라, type 자체가 인자로 와야 하기 때문이다.
그래서 의미상 완전히 다르다는 걸 표현하기 위해 typename이라는 키워드를 class 대신 사용할 수 있게 되었다. 매우 바람직한 조치이다. class라는 키워드는 이제 진짜로 새로운 클래스를 선언할 때만 쓰도록 하자.

그리고 다음 용법이 개념상으로 진짜 중요하다. scope resolution과 관계가 있다.
A가 클래스 이름일 때 A::B라는 표현을 썼다면, C++의 특성상 B는 A의 멤버 변수일 수도 있고, A 클래스 내부에 선언된 다른 타입(클래스, 구조체 따위)의 이름일 수도 있다. 그 클래스 내부에 무엇이 선언돼 있냐에 따라서 해석이 달라진다. 처리가 어렵다.

그런데 설상가상으로 A 자체가 실제로 무슨 타입이 들어올지 모르는 템플릿 클래스의 인자라면? B에 대한 해석은 그야말로 귀에 걸면 귀걸이, 코에 걸면 코걸이가 될 수밖에 없어진다. A의 실체가 무엇이건 B의 정체는 컴파일 시점 때 다 결정되어야 하는데 말이다.

그럴 때 typename A::B를 써 주면, B는 A가 무엇이건 상관없이 변수가 아니라 말 그대로 type 이름으로 처리되어야 함을 컴파일러에게 알려 준다. 이 키워드는 절대적인 모호성 해결보다는, C++의 문법 해석의 복잡성을 좀 줄이고 컴파일러 개발을 더 수월하게 만들려는 목적이 더 크다고 보면 정확하다.
자, 이번에도 이해를 돕기 위해 예제 코드를 보자.

template<typename T>
class MyClass {
public:
    struct MYSTRUCT {
    };
    static MYSTRUCT dat;

    typename T::COMP pp;
};

struct SAMPLE {
    struct COMP {
    };
};

MyClass<SAMPLE> obj;

바로 이런 식으로 MyClass가, 자신의 템플릿 인자 T가 내부적으로 또 갖고 있는 COMP라는 구조체를 이용하기 위해서는 pp를 저렇게 typename을 줘서 선언해야 한다. COMP를 자료형 이름임을 명확하게 해 줄 필요가 있다.

비슷한 이유로 인해,

template<typename T>
typename MyClass<T>::MYSTRUCT MyClass<T>::dat;

템플릿 클래스 내부에 있든 구조체 형태로 된 static 멤버를 밖에서 또 정의해 줄 때, typename을 넣어 줘야 한다.
똑같이 MyClass<T>::로 시작하는 명칭이지만 typename이 선행된 MYSTRUCT는 자료형이고, dat는 멤버 변수로 인식되는 근거가 여기에 있는 것이다.
늘 생각하는 것이지만 C++의 세계는 참으로 심오하다. -_-;;

Posted by 사무엘

2010/06/28 08:56 2010/06/28 08:56
,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/305

국군의 흑역사 -- 무장 탈영

1993년 4월 19일. 구포 역 무궁화호 전복 사고가 터진 지 한 달이 채 안 되어 서울 한복판에서는 한 무장 탈영병 때문에 무려 총격전이 벌어지고 시민들은 잠시나마 극도의 공포에 떨어야 한 일이 있었다. 그 탈영병의 똘끼는 그야말로 북한 무장 공비를 능가하는 충격과 공포 그 자체였다. 탈영 역사에 관한 한, 아마 창군 이래로 전무후무한 흑역사로 남지 않을까 싶다.

사건의 주인공은 철원의 전방 부대에서 근무하던 임 채성 일병. 그는 이 대형 사고를 치기 전에도 이미 탈영으로 구속된 적이 있는 군 생활 부적격자 관심 사병 단계였다고 한다. 애인이 고무신 거꾸로 신기라도 했다거나 그런 것도 아닌데, 그냥 괜히 부적격자였던 것 같다. 불만이 쌓인 끝에 그는 결국 K1 기관단총에다가 무려 130여 발에 달하는 실탄과 수류탄 22발을 갖고 탈영했는데... 이 정도면 가히 터미네이터 내지 듀크 뉴켐 수준이다.

http://imnews.imbc.com/20dbnews/history/1993/1754426_6127.html

탈영은 굉장한 중범죄이다. 특히 무장 탈영병은 현장에서 사살 당하는 수가 있다. 또한 우리나라 헌병대는 탈영병 잡는 건 전문가이며, 탈영병의 인맥과 연줄까지 다 동원해서 정말 잘 잡는다. 군인은 아무리 옷 갈아입고 가발까지 써도 딱 보면 군인이라나? 얼마 전에 이 재진이 잡힌 걸 생각해 보라. 거기에다 탈영은 매해 내려지고 ‘갱신’되는 3군 참모 총장들의 “탈영병 복귀 명령” 덕분에, 사실상 공소 시효가 없다는 것도 상식에 속한다.

그럼에도 불구하고 일본의 만화나 게임 같은 매체에서는 탈영을 무슨 철없고 혈기 만연한 20대 청년이 한 번쯤 해볼 만한 탈선 정도로 아주 가볍게 다루는 듯. 군대가 없어서 총 쏴 보려고 우리나라 부산까지 원정 오는 애들이, 병역 의무 여부가 대통령까지 바꿔 놓은 이웃 나라의 정서를 이해할 리가 없다. (이상, 탈영에 대한 엔젤하이로 위키 설명을 재구성)

군부대를 빠져나간 임 일병은 민폐를 정말 많이 끼쳤다. 근처의 민간인을 위협하여 옷을 뺏고 차를 얻어 탔으며, 덕분에... 무려 7군데에 달하는 검문소를 유유히 통과하여 서울로 진입했다!

탈영 후, 밀항해서 곧장 해외로 뜨거나 첩첩산중에서 은둔해도 시원찮을 판에 서울 시내를 누비고 있었으니, 그의 행적은 곧 헌병대에 발각됐다. 그런데 그를 처음으로 발견한 헌병이 상부에다 보고를 하면서 개삽질을 하는 바람에 그를 놓치고 만다. 그때 임 일병을 신속하게 체포 내지 사살하는 데 성공했으면 차후의 유혈 사태를 예방할 수도 있었을 텐데, 그러지 못해서 여기 헌병들은 나중에 가루가 되도록 깨지고 까였다고 한다. “선조치 후보고라는 게 바로 이런 상황을 위해 존재하지 않느냐 이 ㅂㅅ아!” 같은 식이었을 것이다. -_-;;

왜 그거 있지 않은가? “시꺼 임마, 난 간부다” 한 마디에 기가 눌려서, 나중엔 그거 훼이크를 구사하는 북한군까지 밤에 통과시켜 줘 버린 초병처럼 말이다.

본격적으로 뮌헨 올림픽 참극이 벌어진 건, 임 일병이 자기가 독 안에 든 쥐 신세가 됐음을 스스로 직감하고부터였다. 어느 30대 여성을 포함해 주위 사람을 닥치는 대로 인질로 잡고, 주변에 움직이는 차나 사람을 향해 총질을 했다. 소이탄과 살상용 수류탄까지 막 던졌다. 겨우 리볼버 권총으로나 무장한 경찰은 무려 기관총을 소지한 임 일병의 전투력을 제압할 수 없었다. 이 과정에서 시민 1명이 총상을 당해 숨지고, 7명이 중경상을 입었다!

결국 임 일병은 화이바가 아니라 베레모를 쓴 저격수의 총을 복부에 두 방이나 맞고 피투성이가 되어 쓰러졌다. 외국에서는 총기 난사 사고를 내는 또라이들은 보통 자기도 자살하는 걸로 끝을 내는데 그는 그러지는 않았던 듯. 이로써 희대의 무장 탈영병 총격전은 끝이 났다. 그는 중상을 입었지만 즉사하지는 않았으며, 아직 생명에는 지장이 없었다. 이송된 병원에서는 가히 터미네이터라는 별명으로 통했다고 한다. 뭐, 치료가 끝나 봤자 남은 건 군사 재판에 회부되어 사형 선고 인증 받고 다시 총살형-_-의 이슬로 사라지는 것밖에 없었지만 말이다.

일개 병사가 무장 탈영하여 서울 한복판에서 멀쩡한 시민들을 인질로 붙잡거나 살상하고, 총과 수류탄까지 난사했으니... 이 친구가 군대에 끼친 후폭풍은 가히 엄청났다. 소속 군부대에서는 줄초상이 났다. 사단장이 경질되었고, 대대장부터 일직하사까지 간부들은 죄다 군복 벗은 정도가 아니라 아예 구속크리를 먹었다고 한다. 그가 통과한 검문소를 관할하던 헌병대장도 응당 짤렸다.

잘 알다시피 우리나라는 민간인의 사형 집행은 교수형--뭐, 이제 집행 안 한 지 10년도 더 됐으나--이지만, 군인의 사형 집행은 여전히 총살형을 쓰고 있다. 군인이 총으로 적군을 안 죽이고 도리어 아군을 죽이거나 심지어 이적 행위를 한다면, 그 총으로 자기가 죽는다는 상징성을 부여하기 위해서일 것이다. 그런데 그 총살형 집행도 헌병이 한다고 하니 흠좀무스럽다.

지난 2005년 6월엔 역시 전방에서 군 복무 부적격 티가 농후하던 김 모 일병이, 자살이나 탈영은 아니고 고참들에게 앙갚음을 하려고 총기 난사+수류탄으로 대량 팀킬을 저질렀었다. 이 참극으로 무려 8명이나 목숨을 잃고 김 일병 역시 응당 군사 재판에서 사형 선고를 받았는데, 그건 집행이 됐는지 모르겠다. 그러나 당시 피해자 유족들은 그저 “저 나쁜 쌍노무 새키 어서 사형에 처해라”는 아니었으며, 오히려 군이 온갖 의혹들을 해소해 주지는 않고 김 일병만 희생양으로 뒤집어씌워 자기네 실수와 비리를 슬쩍 덮으려 한다면서 관계자들을 강하게 비난했다.

물론 군대에서 이따금씩 일어나는 이런 불상사들은 아주 예외적이고 극단적인 경우일 뿐이다. 그러나 사회에서 유능하던 인재가 군대에서 그 능력을 썩히고 도리어 캐 고문관 취급이나 당한다면... 그리고 실제로 북한과 싸우지도 않고서 앞날이 창창한 청년들이 이렇게 허무하게 죽어 나가고 군대에서 그 원인에 대한 해명과 재발 방지조차 약속하지 않는다면... 나라의 안보와 기강은 무너질 수밖에 없을 것이다.

군대에서 병사가 저렇게 나쁜 사고를 큼직하게 치면 위의 간부들은 이제 진급에 애로사항이 꽃피게 되며, 심하면 줄줄이 짤린다. 하지만 병사가 전투 중에 북한군(무장 공비)을 사살한다면? 상황은 완전 그 반대가 된다. 1 kill만 달성해도 당사자는 최소한 천만원 대 단위의 포상금부터 시작해서 훈장에, 계급 특진에, 정말 헬기 타고 금의환향 포상 휴가까지 주어진다. kills수가 많으면 바로 전역도 가능할 것이다. 그 병사의 관할 간부들은 승진길이 확 트이기 때문에, 지금까지는 있는 줄도 몰랐던 그 병사한테 엄청 잘 해 주게 된다.

아무리 남북 화해 분위기가 만연하다 해도, 또 국방백서에 주적 표기가 있든 없든, 우리나라는 현실적으로 휴전선에서 북한군을 향해 총부리를 겨누고 있으며, 우리나라 국군은 북한군의 목숨을 노리고 거기에 목말라하는 집단임을 부정할 수가 없는 셈이다.

Posted by 사무엘

2010/06/26 08:39 2010/06/26 08:39
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/304

옛날 사람의 모습이 남아 있는 방법은?

1. 초상화로만 (컬러^^)
2. 흑백 사진으로만 (19~20세기 초중반)
3. 흑백+컬러 사진 공존 (20세기 중반)
4. 컬러 사진으로만 (20세기 후반~)

역대 미국 대통령의 초상화만 봐도 1, 2를 거쳐 4로 변하는 모습을 볼 수 있다.
이런 점에서 19세기 중· 후반과 20세기 초· 중반을 살았던 우리나라의 이 승만 초대 대통령은 컴퓨터만 빼고 과학 기술의 급변화를 경험한 사람이라 할 수 있다.

처음엔 한학만 공부하다가 나중에 영어를 비롯한 신학문을 섭렵했고,
미국으로 유학 갈 때는 배를 타고 태평양을 건넜겠지만 커서는 비행기도 탔다.
조선 땅에서 말을 타 본 적이 있는지는 모르겠지만 미국에서는 차도 몰아 봤다. 그는 정말 “아는 것이 힘, 배워야 산다”의 산 증인이었다.

이 승만의 사진은 흑백밖에 없는 줄 알았는데 컬러 사진도 있다니 놀랍다.
심지어 그 유명한 1948년의 대한민국 정부 수립 선포식 사진도 컬러 버전이 있다.
사실 우리나라를 배경으로 한 컬러 사진 자체는 무려 구한말 시절 것부터 있긴 한데, 그 당시 컬러 사진은 비싸고 흔치 못했을 뿐이었다.

사용자 삽입 이미지

사용자 삽입 이미지

오늘날의 대한민국 건국은 정말로 중국이나 소련이 아닌 미국을 끌어들인 이 승만의 공로가 가히 절대적이다.
뭐, 김 구 대통령으로 우리끼리 통일 조국 운운하는 떡밥이 있는데, 세상 물정 모르는 소리. 우리끼리 그렇게도 쉽게 원하는 대로 나라 세우는 게 가능했다면, 애초에 우리끼리 살던 나라를 외세에 허무하게 뺏기지도 않았을 것이다.

요즘도 '노란 대통령'을 추모하는 리본을 걸어놓고 '감사합니다. 잊지 않겠습니다' 하는 게 유행인 것 같다. 그 사람에게도 공적과 과오가 공존하며, 그런 유형의 사람이 대통령을 함으로써 국민에게 나름 의미를 남긴 것도 없지는 않다.

하지만 그 사람보다야 훨씬 더 프로필이 우수하고 훨씬 더 대인배이고 훨씬 더 민족을 사랑하고, 지금보다 훨씬 더 어려운 상황에서 더 훌륭한 업적을 이뤄 놓은 초대 대통령이 나는 더 존경스럽고 그립다. 한글, 세벌식, 새마을호뿐만 아니라 이런 것도 내게 이 나라에 대한 일말의 자부심과 애착을 제공하는 근거이다.

대한민국 건국, 감사합니다!

사용자 삽입 이미지

Posted by 사무엘

2010/06/25 07:57 2010/06/25 07:57
,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/303

삼겹살과 커피

우리나라가 삼겹살과 커피 소비가 과거에 비해 급격히 늘었으며, 세계적으로 비교해도 인구에 비해 소비량이 많다고 들었다. 마치 일본이 유별나게 참치와 고래고기 소비가 많은 것처럼 말이다.
여기서 말하는 '과거'란 불과 2, 30년 전이며 그렇게 먼 과거도 아니다.

커피를 예로 들어 보자. 사람 만나서 부담 없이 마시는 기호품 내지 음료수로 거의 타의 추종을 불허하는 본좌급으로 등극해 있으며, 청량음료와 더불어 양대 산맥이다. 재료를 전량 수입에 의존하는 주제에 말이다. 스타벅스 정도밖에 모르던 시절이 엊그제 같은데 그야말로 우후죽순처럼 들어서고 있는 커피집들을 보라. 원래 우리 민족은 이 정도로 커피 즐겨 마시지는 않았다.

삼겹살도 마찬가지. 서양에서는 베이컨을 만들어 약간씩 먹는 부위인데 우리나라에서는 그게 푸짐한 서민 요리이고 회식 술안줏감이다. 우리나라는 돼지의 다른 부위는 별로 안 먹는데 그 부위만 기형적으로 수요가 많아서 수입에 의존한다고 한다. 전국 방방곡곡에 널려 있는 삼겹살 식당들.. 오죽하면 축산업계에서 다른 부위도 좀 먹어 달라고 캠페인을 벌일 정도이다.

원래 삼겹살은 중금속/먼지 제거 효과 때문에 광부들이 작업 마친 후에 먹었고 황사 때나 생각나는 그런 고기였다고 한다. 저런 삼겹살 문화가 생긴 건 상당히 최근이라 함.
자기 소득이 없는 가난한-_- 학생이 구내 식당에서 비싼 커피를 마시거나, 저녁 식사로 삼겹살을 사먹을 일은 흔치 않다. 본인 역시 학생 딱지를 떼고 직장 생활을 시작하면서 본격적으로 커피와 삼겹살을 자주 접하게 됐기 때문에, 우리나라 사회 풍토가 원래부터 이런 줄 알았다.

그런데 그것도 아니라는 게 충격적이다. 마치 서울 지하철 1호선이 옛날에 빨간색 인테리어였다는 사실만큼이나 적응이 안 된다. 본인은 빨간색 인테리어를 본 기억이 전혀 없으며, 처음부터 1호선이 군청색인 줄로만 알고 있었으므로.

본인은 커피는 오로지 맛으로만 마신다. 마셔도 졸음 방지 효과가 전혀 나타나지 않으며, '카페인? 그거 조미료임?' 그냥 그러는 수준이다. 물론 그렇다고 해서 카페인 중독 증세가 나타날 때까지 퍼 마시고 싶지는 않다. ^^;;
또한 삼겹살도, 참치 요리도 아주 좋아한다. "이모코와 참치는 사이가 좋아요 투나잇 / 베개의 속에는 참치가 한가득" -_- 참치는 그렇다 쳐도, 이렇게 맛있는 돼지고기를 못 먹는 유대교와 이슬람교 사람들은 무척 딱하다. -_-;;

끝으로, 말이 나왔으니 말인데, 신분이 학생에서 직장인으로 바뀌면서 학생 시절에는 전혀 존재감 없던 날이 공휴일로 새롭게 부각되기 시작한 게 생각난다. 바로 성탄절과, 근로자의 날이다.
전자는 어차피 방학 기간에 포함되다 보니 별도의 휴일로서의 의미가 전혀 없었으며, 후자는 취지부터가 학생과는 관계가 없기 때문이다. 이런 것도 학생과 직장인의 차이라 볼 수 있다.

Posted by 사무엘

2010/06/24 09:52 2010/06/24 09:52
,
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/302

나로 호, 우주 기술 외

1. 나로 호, 좌절 말고 더욱 분발하길

우주 강국의 꿈은 참 멀고도 험한 것 같다.
2009년과 올해의 나로 호 발사는 국민의 염원을 저버리고 두 번 다 실패로 끝났다. 지구 중력을 벗어나기란 쉬운 일이 아니다.
그리고 그보다 전 2008년에는 드디어 우리나라도 러시아에 의존하여 우주인을 배출은 했으나, 순탄한 과정만으로 된 건 아니었다. (10년 전에는 나름 노벨 상 수상자도 배출했는데, 그마저도 어차피 과학 분야도 아니고 묘하게 존재감 없다.)

우리가 21세기에 와서야 힘겹게 겨우 따라 하고 있는 모든 과정을 미국과 러시아(구소련)는 무려 반세기에 가깝게 전에 먼저 개척했다니, 얼마나 엄청난 기술인지 경악하지 않을 수 없다.

그 미국도 무려 여섯 번이나 달에 갔다 오는 데 성공하고 우주 개발 경쟁에서 구소련을 확실히 떡실신시킨 뒤부터는, 우주에 대한 국민들의 관심은 급속도로 식어 갔다. 월남전 때문에 미국 내부의 분위기도 뒤숭숭했다. "쓸데없는 데에 돈지랄 하지 말고 당장 민생이나 살피라"는 목소리가 빗발쳤다. 2차 세계 대전 시절까지만 해도 가히 Show me the money 국가였던 미국조차 오죽했으면 아폴로 17호 이후 40년이 넘게 유인 우주선 달 탐사를 중단할 수밖에 없었다. 돈이 한두 푼 드는 것도 아니고.. (물론, 소련도 비록 유인 우주선만 못 보냈을 뿐이지, 달에 탐사선을 보내고 월석 캐서 돌아오는 것까지는 얼마든지 해냈다.)

성경에 따르면, 출애굽 시절에 무려 홍해가 갈라지는 기적을 체험하고도, 백성들이 불평하고 모세를 원망하고 이집트 시절을 도로 그리워하게 되기까지 며칠이 채 걸리지 않았다. 당장 좀 배고프고 목 마르고 불편하니까 말이다. 나중엔 매일 '만나'라는 음식을 하늘로부터 기적적으로 받아서 연명하면서도 하나님께 잘도 반역했다.
그런 것처럼, 사람이 달에 직접 갔다 오는 데 성공하는 기적 같은 일이 벌어졌는데도 그게 여러 번 되풀이되는 일상사가 되니까 국민들의 관심은 이내 현실적인 것으로 되돌아간 것이다. 그래 놓고는 세월이 흐르고 나니, 그때 달에 진짜 갔다 오긴 했는지 음모론이나 펴고 있는 게 인간의 간사한 심리이다.

이렇듯 진짜로 대단한 성공한 과업에 대해서도 조금만 마음에 안 들고 미흡한 게 있으면 대중의 반응이 저렇게 싸늘한데, 하물며 우리나라에서 쏴 올리는 발사체는 아직 실패만 거듭하고 있고, 기껏 배출했다는 우주인은 우주인인지 우주 관광객인지 모를 취급만 받고 있으니 국민들이 "300억짜리 폭죽, 국민 세금으로 우주 관광"(참고로 KTX 광명 역은 3천억짜리 간이역) 하면서 비아냥거리는 것도 이상한 일은 아니다.

더구나 요즘 사람들은 우주 개발이 처음으로 진행되던 옛날만치 우주에 대한 동경심이 있지도 않으며(이미 우주에 대해서 어지간히 알 건 다 알게 됐으므로..), 오히려 이공계 기피 현상의 영향으로 과학자 자체가 되지 않으려고 한다는 것도 그때와 큰 차이이다. 일본인 최초의(그리고 아시아 최초라고 하는) 우주인이라는 모리 마모루도 1992년인가 그때 우주로 나가서 한 실험은 우리나라 이 소연 씨가 한 실험과 어차피 별 차이가 없는 수준이었다고 한다. 하지만 귀환 후 국민적 이미지는 그 두 사람이 꽤 차이가 나는 것 같다. =_=;;;

이런 시국에도 불구하고 열악한 환경에서 밤낮 구분도 없이 가슴을 졸이며 나로 호 발사에 참여한 연구원들의 노고를 치하한다. 부디 이번 실패에 좌절하지 말고 다음에는 반드시 성공하기를 대한민국 국민 중 하나로서 기원한다.

2. 기술 보안 이야기 -- 우주인을 중심으로

앞 단락에서는 우주인 얘기와 우주 발사체 얘기를 별 구분 없이 뒤섞어서 전개해 왔는데,
지금부터는 우주인을 주제로 좀더 진지한 얘기를 하고자 한다.

미국은 워낙 땅 넓고 한국보다 잘 사는 나라이다 보니 비행기를 자가용으로 갖고 있는 항공 면허 소지자도 있고, 또 IT계의 억만장자 중엔 사비를 들여서 우주에 갔다 오기도 한 우주덕(우주 덕후)도 있다. MS 워드와 엑셀 개발의 초창기 주자인 전설의 프로그래머 찰스 시모니는 잘 알려진 우주 관광객이며, 게임계에서 모르면 간첩인 존 카맥(둠, 퀘이크 개발자)도 우주 개발 산업에 엄청 관심이 많다. 저 사람의 프로그래밍은 지구인의 실력이 아닌 게 분명하니, 이제 자기 별로 돌아가려고 우주에 눈독을 들이고 있다는 농담도 나돈다.

그러나 우리나라는 아직 그럴 정도는 아니다. 그래서 나라에서 우주인 후보를 소집해서 국비로 육성을 해 줬는데...
본인은 개인적으로 우리나라에서 선발된 우주인 2인 중 남자인 고 산 씨를 굉장히 부러워했다. 잘생기고, 외고 출신으로 서울대 수학과, 영어와 러시아어 같은 여러 외국어에 능통하고, 성격도 적극적이고 좋고, 운동도 잘 하고, 나이도 적당하고... 모든 면에서 부러운 엄친아이고 스펙 면에서 이보다 우주인에 적격인 사람이 국내에 없을 거라고 생각했다.

그런데 우리는 이내 충격적인 소식을 접했다. 고 씨가 무슨 규정을 위반했다면서 예비 우주인으로 강등되고, 실제로 우주에는 이 소연 씨가 갔다 오게 됐다. 이때 고 씨가 무슨 규정을 왜 위반했는지 아는가?

고 씨는 성격이 너무 적극적이었다. 러시아 사람들이 자신들을 단순 우주 관광객으로 취급하는 걸 도저히 용납할 수 없었다고 한다. 내가 무슨 내 돈 들여서 떠나는 우주 관광객도 아니고 나름 국가 대표로, 국민 세금으로 우주에 가는 건데!
수업을 들을 때도 우주선의 원리에 대해 귀찮을 정도로 질문을 많이 하고, 조금이라도 더 새로운 정보를 얻어 오기 위해 러시아어도 독학으로 꾸준히 공부했다. 교관이 언짢아하면서,

"우리는 당신들이 우주에서 사고만 안 칠 정도로만 가르치면 임무 다 하는 겁니다. 너무 많은 걸 알면 다치는 수가 있으니 자꾸 꼬치꼬치 캐묻지 마시죠?"
이렇게 대꾸했을 정도라고 한다.

그랬는데 호기심을 참지 못한 고 씨는, 여차여차 하던 끝에 러시아가 극비 사항으로 관리하는 우주선 운영 교본을 대여해서 몰래 읽어보기 시작했는데, 그게 보안 요원에게 적발되었다고 한다.
그건 그야말로 러시아인들이 구소련 시절에 피와 땀으로 터득한 노하우가 담긴 우주 개발 교본이었다. 이런 상황이 발생했을 때 우주인의 생존 요령, 우주선을 띄우는 방법, 뭘 하는 방법... 이런 것들.

고 씨는 추후 인터뷰에서 "내가 조금만 참고 걔네들 지시에만 고분고분 따랐으면 우주에 갔다 왔을 수도 있었다. 하지만 그때의 나의 행동에 대해 후회는 없다"고 말했다. 과연 대인배이다.

우리나라 기술진이 미국에 나가서 처음으로 반도체 기술에 대해 배울 때도, 또 프랑스로 가서 고속철 기술에 대해 처음으로 배울 때도 이와 굉장히 비슷한 수모를 겪었다. 뭐 좀 슬쩍 들여다보기만 해도 규정 위반했다고 사람 퇴장시키고, 교육 일정을 제멋대로 펑크 내고 말이다. 삼성 반도체, 현대 자동차 이런 것들.. 정말로 피땀 흘려 맨바닥에서 이뤄 낸 우리나라 밥줄임을 잊지 말아야 한다. 비록 그런 대기업들이 경영하는 짓거리가 마음에 안 드는 구석은 있더라도 말이다.

또 반대로 말하자면, 나라를 좀먹는 기술 유출 같은 사건 같은 것에 절대로 둔감하지 말아야 한다. 예전에야 남산 안기부 때문에 이미지가 안 좋지만, 요즘 국가 정보원은 그런 산업 스파이들을 우리가 알게 모르게 굉장히 많이 잡아 냈으며, 지금까지도 세금값 하는 얼마 안 되는 국가 기관 중 하나로서 제 역할을 잘 하고 있다.

그리고 군사 기밀.. 고 산 씨도 FM 좀 몰래 훔쳐보다가 저렇게 불이익을 당했는데, 육군 교전 요령 같은 군사 기밀이 담긴 FM을 대놓고 북으로 빼돌린 투스타 장군이라면.. 도대체 어쩌라는 건가? 아직도 간첩은 있고 잡히고 있다. 옛날처럼 안보를 빌미로 국민들 불안 조장하고 겁 줄 목적으로 보도를 대놓고 안 할 뿐이다.

지금이 그러한데 하물며 건국 초기에는 군대 내부에도 좌익이 드글드글했다. 북한이 침략했을 때 맞서 싸우기는커녕 적과 내통하고 그냥 항복해 버릴 간부들이 즐비했다. 오죽했으면 친일파 출신까지 적극 활용해서 사상 검증과 숙군 작업부터 해야 했을까? 그것부터라도 하고 나서 거의 곧바로 6 25가 터진 건 정말 다행이었다. 또 뒤집어 말하면, 일본군 출신 중에서도 그때 북한군 공산당과 싸우다 전사한 사람 많았다.

마치 산불은 순식간이지만 숲이 다시 자라기까지는 수십 년이 걸리는 것처럼 기술이란 것도 마찬가지이다. 예전 글에서 한번 언급한 적이 있지 싶은데, 성경에도 기술 개발에 앞장서고 기계를 만들었다는 왕이 딱 한 명 등장한다(대하 26:15). 우주 개발 하니 이와 관련하여 여러 착잡한 생각이 드는 게 있어서 몇 자 글로 정리해 보았다.

Posted by 사무엘

2010/06/23 09:19 2010/06/23 09:19
, ,
Response
No Trackback , a comment
RSS :
http://moogi.new21.org/tc/rss/response/301

프로그램의 권한

1.
병특 회사에서 근무하던 시절의 일이다.
그때 본인은 본업을 넘어-_-, ActiveX 컨트롤을 만들어 관리하던 적이 있었다.
(사용자들이 아무리 ActiveX 욕하고 우리나라가 무슨 MS 공화국이네 뭐네 하면서 까도, 일선 개발자들은 위에서 까라면 깔 수밖에 없다. 더구나 본인은 국방부 시계가 돌아가던 중! ^^;;; )
ActiveX는 내부에 플래시 UI를 하나 만들어서 플래시는 웹 상에서 사용자와 소통을 하고, ActiveX는 플래시와 소통을 하면서 플래시만으로 하기 힘든 네이티브 코드를 수행했다. 내가 왕년에 저런 일까지 했다니..

그런데 문제가 있었다. 정확하게는 기억이 안 나지만, ActiveX든 플래시든.. 뭔가 로컬에 있는 파일을 참조하는 건 아무 문제가 없었는데 웹에 있는 놈을 가져오는 건 아무 이유 없이 도무지 되지 않고 작동을 거부하는 것이었다.
먼 옛날 일이 됐으니 망정이지, 이것 때문에 당시 회사에 환멸을 느낄 정도로 좌절하고 삽질했었다. -_-;;

문제의 원인은 보안이었다. 그 당시 갓 출시된 플래시 7이던가 8이던가.. 하필 그때부터 보안 정책이 딱 바뀌어 플래시의 액션스크립트는 아무 웹에서나 정보를 덥석 가져오지 못하게 되었다.
그 반면, 내 로컬 컴퓨터의 ....\flash player\#security\flashplayertrust 이런 디렉터리에다가 configuration file을 만들어서 접근을 허용하는 웹 주소를 먼저 적어 줘야 하고, 플래시는 허용된 웹으로만 접근할 수 있다.
자세한 정보: http://kb2.adobe.com/cps/116/1165eb90.html

어쨌든 이것 때문에.. 가장 권한이 많고 강력한 ActiveX가 DllRegisterServer를 통해 등록될 때 저 flashplayertrust에다가 우리 플래시에 대한 정보를 덩달아 등록해 주고, 등록 해제될 때 그 정보를 삭제하도록 함으로써 문제는 일단락되었던 걸로 기억한다. ActiveX는 네이티브 코드인 관계로 파일, 레지스트리, 웹 등에 다 접근이 되고, 심지어 Win32 API를 직접 호출해서 뭐든 다 할 수 있으니.. 사기 유닛이다.

물론 오늘날은 다른 웹 표준과 RIA 기술도 풍부한데 저런 무식한 방법을 쓰는 건 곤란하다.
참고로 플래시에 전설의 flv 동영상이 추가된 게 그 무렵부터일 것이다. 유튜브가 그때 막 태동했으니 말이다. 플래시가 벡터 드로잉 애니메이션뿐만 아니라 일반 비디오 플레이어 분야도 섭렵하기 시작했으며, 덕분에 이제 인터넷으로 동영상 볼 때 ActiveX 설치를 요구하는 사이트는 개념 없다는 소리를 듣기 시작하게 됐다.

2.
안드로이드 어플 만들면서도 비슷한 경험을 했다. 아놔 다른 프로그램에서는 잘 되는 환경설정 변경이 왜 도대체 안 되고, 기껏 되더라도 왜 내가 바꾼 환경설정이 다른 곳에 도무지 적용이 안 되는지.. 함수 호출 결과는 성공인데.. 그 뒤 결과는 그냥 씹히고 있던 것이다.
하루를 삽질하고 났더니 원인은 역시 매니페스트 파일에다가 android.permission.WRITE_SETTINGS , android.permission.CHANGE_CONFIGURATION 요 따위 퍼미션 요청을 안 해 놨기 때문이었다.

3.
그동안 유닉스 계열 OS에 비해 권한이나 보안 같은 관념이 너무 약하던 윈도우도, 비스타부터는 그쪽으로 좀더 엄격해졌다.
잘 알다시피 사용자 계정 컨트롤(UAC)라는 게 추가됐으며, 프로그램을 관리자 권한으로 실행할 때와 그렇지 않을 때에 허용되는 권한의 차이가 매우 커졌다. 가령, 관리자 권한이 아니면 '내 문서' 말고 다른 디렉터리에다가는 파일을 제대로 만들지도 못한다.

그리고 이 프로그램이 요구하는 권한을 명시하는 게 가능해졌다.
아무 권한에서나 실행 가능한지, 무조건 관리자 모드에서 실행돼야 하는지 하는 걸 말이다.
지정은 EXE 내부의 매니페스트 XML에다가 하면 된다. 그 개념은 이미 윈도우 XP에서 시스템 DLL의 로딩 방식을 제어하기 위해 도입된 바 있으므로 새삼스러울 게 없다.
비주얼 C++ 2008부터는 링커 옵션에 이걸 바로 지정해 주는 게 추가됐다. 그 이전 버전에서는 사용자가 직접 xml 파일을 손으로 써서 링크해 주면 된다.

스크린 키보드처럼 장애인 Accessbility용 프로그램은 의외로 높은 보안 수준이 필요하다.
내가 받은 입력에 대한 결과를 시스템 모든 프로그램에다가 끼쳐야(키보드 입력 흉내) 하기 때문에
이런 프로그램은 별도의 인증을 거쳐야 운영체제가 그 정도의 권한을 허락하게 되어 있다.
그런 인증을 거치지 않은 "<날개셋> 입력 패드"는, 사용자가 직접 관리자 권한으로 실행해 주지 않으면,
자기보다 권한 등급이 높은 프로그램에다가는 글자 입력을 전달해 줄 수 없다.

글을 맺는 소감:
삽질해야 하는 게 싫다. -_-;;
지금 유닉스 명령어 익히느라 땀 뻘뻘 흘리는 걸 보면, 옛날에 지금보다 영어도 훨씬 더 못 하던 시절에 도스 명령은 어째 알아서 외웠는지 궁금하다.
지금 이놈의 안드로이드 때문에 삽질하는 걸 보면, 옛날에 윈도우 API는 어째 공부했는지 내가 생각해도 나 자신을 이해할 수 없다.
그때는 삽질을 삽질이라고 여기지 않고 전적으로 재미로 했기 때문에 프로그래밍에 재미를 붙일 수 있었던 것 같다.

Posted by 사무엘

2010/06/22 08:55 2010/06/22 08:55
, , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/300

이론 지식과 실무 지식

일반적으로 대학교 전산과는 무슨 비주얼 C++ IDE 사용법이나 C/C++ 문법 같은 걸 가르치는 곳이 아니다. 그 정도로 특정 플랫폼에 종속적인 툴이라든가 테크닉은 학생이 알아서 익히는 걸로 간주하며, 학교에서 따로 가르치지도 않는다. 그런 걸 전문으로 가르치는 곳이라면 아주 실무 위주 교육의 IT 학원에 더 가깝다고 봐야 할 것이다.

그 반면 대학교 전산과에서 가르치는 건 오늘날 디지털 컴퓨터의 이론적 기반이 되는 배경 지식이다. 튜링 기계, 시간 복잡도, 형식 언어, 오토마타, 유한 상태 기계, 계산 이론 같은 것들. 오늘날 무수한 IT 노동자들이 생업의 수단으로 삼는 툴과 테크닉들을, 처음에 만든 사람들이 무슨 생각을 하고 그런 걸 만들었을지에 대한 이론적 배경을 배운다. 아주 고차원적인 방향으로 머리를 단련하는 것이다.

비슷한 논리를 국문과에다가도 적용해 보자.
본인은 국문학 전공자라고 해서 표준어/맞춤법을 다 꿰뚫고 있다거나 우리말의 달인일 거라고 생각하지는 않는다. ‘알맞은’과 ‘알맞는’ 중 무엇이 맞는지, ‘내일’을 나타내는 순우리말이 있는지, 어떨 때 ‘잘못’을 쓰고 어떨 때 ‘잘 못’을 쓰는지, ㅐ와 ㅔ의 발음 차이가 뭔지 같은 것들은.. 물론 국문학 전공자라면 응당 알아야 하는 내용이지만 대학교의 국문과가 저런 단편적인 지식만--전산과로 치면 프로그래밍 언어 스킬-- 주입하는 곳은 결코 아닐 거라는 게 본인의 생각이다.

저런 건, 저런 쪽으로 좀 관심이 있는 사람이라면 누구나 관련 서적 한두 권만 사서 공부해서 쉽게 익힐 수 있는 내용이다. 대학에서는 그런 지엽적인 게 아니라 더 어려운 걸 가르칠 것이다. 국어학 분야로 한정짓자면 한국어가 세계 각국의 언어들과 비교해서 무엇이 특이한지, 이 단어의 품사가 무엇이고 형태소 분석을 어떤 방식으로 하는지, 중세 국어는 현대 국어와 무엇이 달랐는지 같은 것들.. 그러고 보니 국문과는 뭔가 언어학 계열 아니면 문예 창작 계열로 나뉘는 듯.

영문학을 전공하고도 미국인과 free talking을 못 하는 사람이 있을 수 있고, 전산학을 전공하고도 컴퓨터 조립을 못 하는 사람이 있을 수 있다. 이렇듯, 어느 분야를 가도 실무 지식과 이론 지식은 뭔가 살짝 괴리가 있는 모양이다.

그럼에도 불구하고 본인이 아는 국문과 출신의 지인 중에는, 학창 시절에 수능 언어 영역 110점을 어렵지 않게 넘기는 친구도 있었고(아버지가 소설가라고 한다!), 일반인은 400~600점대밖에 안 나온다는 KBS 한국어 능력 시험에서 무려 800점을 넘긴 친구도 있었다. 물론 둘 다 여자. 차라리 텝스를 800 넘으라면 공부 좀 해서 넘겠는데, 저 시험은 내 능력으로는 불가능이다. 한 번 응시한 적이 있기 때문에 시험 수준을 안다. -_-;;;
문과 머리와 이과 머리는 확실히 다르다는 걸 느꼈다.

* * * * * * * * * *
저는 학부를 졸업한 지 거의 5년만에 풀타임 직장 생활에 종지부를 찍고, 올가을부터 학생으로 돌아갈 예정입니다.
대학원에 합격했거든요. (연세 대학교 언어 정보학 협동 과정)
블로그 말고 제 홈페이지 대문이나 방명록을 보신 분이라면 이미 눈치 챘을 겁니다.
윗글에서 언급한 딱 국어학 + 전산학을 결부 지은 협동 과정이지요.

Posted by 사무엘

2010/06/19 13:35 2010/06/19 13:35
Response
No Trackback , 6 Comments
RSS :
http://moogi.new21.org/tc/rss/response/299

1.
지난 5월 말, 석가탄신일 연휴 때 고향에 가서 부모님께서 쓰시는 컴퓨터를 여러 군데 손 봤다. XP 정도나 돌릴 수 있는 구형 컴퓨터이다. 내가 없는 사이에 컴퓨터 A/S를 받아서 하드를 포맷하고 운영체제를 새로 설치했다고 하던데, 파일 시스템이 웬 생뚱맞게 FAT32로 되어 있어서 당장 NTFS로 바꿨다.

그리고 드디어 IE7을 설치했다. 부모님의 반응은 “서울 컴퓨터와 같은 인터페이스이구나”였다. 내가 있는 곳에서는 XP가 없고 비스타만 있기 때문이다. 탭을 지원하고 메뉴가 기본적으로 숨어 있는 IE7의 외형과, 그렇지 않은 IE6의 외형은 부모님이 보시기에도 차이가 명백했던 것이다.

때가 2010년인데 IE8이 아닌 IE7을 선택한 이유는 짐작하다시피 병맛 같은 국내 사이트 때문이다. 교사가 쓰는 컴퓨터에다 NEIS가 안 돌아가는 브라우저를 설치할 수는 없는 노릇이고, 본인 역시 IE8을 비스타 64비트에서 한번 설치해 봤다가 국민 은행 뱅킹이 에러 메시지도 없이 그냥 전혀 동작하지 않는 걸 보고, 혼비백산하여 곧바로 IE7로 복귀해야만 했다. 본인의 개인 노트북에만 IE8을 설치해 쓰는 중이다.

IE8이 IE7보다 그렇게도 가벼워지고 성능이 향상되고 ACID 지수도 올라갔다고 하는데 본인은 거기까지는 잘 모르겠다. 그저 탭의 윗부분 색깔이 colorful해졌다는 차이밖에 안 보인다. 세월이 흐르면서 본인은 얼리 어답터 기질은 다 죽어서 업데이트 같은 걸 귀찮아하는 타입. O<-<

그럼에도 불구하고 본인이 지금까지 서울 각지에서 이용해 본 PC방들은 어쩜 이리도 한결같이 IE6을 쓰고 있으니 과연 충격과 공포이다. 각종 통계에 잡히는 IE6 사용자들의 상당수가 PC방이 아닐까 하는 생각이 들 정도였다.
윈도우 XP sp3이면 어차피 IE8까지 돈도 안 들이고 업그레이드 가능한데 왜 이런 투자에 인색한 걸까?

여기서 IE의 역사를 좀 살펴보자. 1은 가히 듣보잡이고, 2는 윈도우 95 번들로 제공된 최초의, 그러나 정말 빈약한 버전이었다.
3은 드디어 넷스케이프 3과 맞장뜨기 시작한 버전인데, 넷스케이프의 플러그 인에 대응하여 ActiveX를 최초로 내장했다. IE3은 MS가 개발한 프로그램 중 전무후무하게 toolbar에 텍스처가 존재했으며, 마우스가 가리키고 있는 버튼에만 윤곽이 나타나는 소위 flat 스타일 toolbar를 최초로 도입한 프로그램이었을 것이다. 나름 산뜻한 외형을 지향했다는 뜻.

오늘날의 IE의 근간이 잡힌 건 4부터이다. HTML 도움말, 액티브 데스크톱 같은 갖가지 기술이 이때 첫 도입됐다. 5에서는 complex script, global IME 등 다국어 처리 능력이 크게 강화된 걸로 기억하며, 무려 윈도우 3.x를 지원한 마지막 버전이다. 그 이후의 버전에 대해서는 설명을 생략하겠다.

윈도우 XP와 같은 시기에 출시된 IE6이 수 년간 엄청 장수하고 독점적인 지위를 누리면서, MS에서는 이제 IE 팀을 해체할까 하는 생각까지 했다고 하는데 흠좀무. 그러던 차에 2004년 가을을 생생히 기억한다. 모질라 재단에서 파이어폭스라는 획기적인 브라우저를 내놓으면서 현재까지 IE의 독점 구도를 크게 무마하는 데 성공했다. 오늘날은 잘 알다시피 구글 크롬까지 빠른 속도를 강점으로 승부 중이다.

2.
오늘날처럼 블로그나 트위터 같은 게 생기기 전, 너도 나도 나모 웹에디터 같은 프로그램으로 아기자기한 홈페이지 만들던 시절이 있었다. 딱 그런 옛날 스타일 홈페이지를 보면 감회가 새롭다. 애니메이션 gif, 아주 초보적인 수준의 플래시, 그리고 테크노트나 제로보드 기반 게시판들. 본인이 학창 시절 때 몇몇 선생님들이 만든 홈페이지가 아직도 그런 스타일이다. 옛날 생각이 난다.

본인이 인터넷이란 걸 처음 접한 게 1997년 말이다. 내가 저장해 놓은 적이 없는 새로운 글과 그림이 화면으로 쏟아져 나오는 게 이리도 신기할 수 없었다. 그때 조선일보던가 MBC던가.. 국내 언론사들은 웬 VivoActive player라는 듣보잡 ActiveX로 동영상도 보여주곤 했다. 물론 지금과는 비교조차 할 수 없는 열악한 화질이었지만 말이다. 그때는 RealAudio/Video도 있었으나, 컴퓨터와 네트워크 속도의 향상 덕분에 이내 mp3 등에 캐발리고 말았다. 그리고 얼마 안 가 넷스케이프도 IE에 완전히 발린다.

3.
맥 OS에는 애플에서 자체 개발한 사파리라는 브라우저가 기본 내장되어 있다. 비록 사파리는 크로스 플랫폼 프로그램이기는 하지만, 윈도우에서는 별 재미를 못 보고 있는 모양이다. <날개셋> 한글 입력기도 그렇게 윈도우, 맥, 리눅스를 다 날아다니는 프로그램이었으면 얼마나 좋을까?

그나저나 맥 OS 클래식은 9까지만 해도 메모리 보호와 선점형 멀티태스킹조차 지원되지 않았다니 대체 뭐야... 90년대 말까지 쓰이던 운영체제가 기술적으로는 그 허접한 윈도우 3.1과 다를 바가 없었다는 말인지? CPU가 16비트였는지 32비트였는지? PC 쪽과는 역사가 너무 다르니 그저 궁금할 따름이다. 어렸을 때부터 본인에게 매킨토시에 대한 이미지는, 전자 출판과 복잡한 그래픽 작업처럼 PC하고는 가히 넘사벽인 최고급, 최고가 컴퓨터였기 때문이다.

아울러 맥 OS X에는 그림판뻘 되는 간단한 그래픽 편집기를 내장하지 않고 있다는 것에도 깜짝 놀랐다. 워드패드와 메모장 둘의 역할을 훌륭하게 해 내는 TextEdit는 있지만 그림판에 대응하는 프로그램은 없다니... =_=

Posted by 사무엘

2010/06/18 08:55 2010/06/18 08:55
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/298

이 글에서 소개하는 두 게임은, 본인이 좋아한 장르가 아니고 즐겨 하지는 않았지만, 본인의 기억에 비교적 좋게 남아 있는 고전 게임이다.

1. LHX

헬리콥터 시뮬레이션 게임이다.
1992년 5월, 초등학교 4학년의 나이로 본인이 최초로 접한 개인용 컴퓨터가 286 AT급 기종이었다. 40MB짜리 하드디스크의 GAME 디렉터리 아래에 기본으로 깔려 있던 게임이 페르시아 왕자 1과 바둑(the many faces of go던가? 그 유명한 프로그램), 그리고 이놈이었다. 그러니 이 게임을 어찌 잊을 수 있으리요?

그 시절엔 단순한 화면 스크롤이나 스프라이트의 2차원적인 이동 말고 전체 화면급으로 프레임이 완전히 새로 바뀌는 애니메이션 자체를 보기가 쉽지 않던 시절이었다. 컴퓨터 성능이 뒷받침을 못 해 줬기 때문이다. 그런데 부동소수점 전용 프로세서조차 없던 그 열악한 기계에서 비록 허접하게나마(텍스처 같은 것도 없고 그저 solid color ^^) 3차원 공간이 구현되고 헬리콥터 조종석이 1인칭 시점으로 보이니 놀랍지 않을 수 없었다.

인트로 화면에서 LHX 글자와 ■●▲ 도형이 뱅글뱅글 돌아가는 애니메이션도 아주 인상적이었다. 캐드 프로그램 같다. 본인이 먼 훗날에 3차원 그래픽 시연 프로그램을 직접 만들 수 있게 됐을 때도 둠, 퀘이크와 더불어 이 장면이 떠오를 정도였다. 아 이제야 나도 저런 프로그램을 만드는 이론적인 배경을 터득했구나!

꽤 현실감을 추구했던 만큼, 헬리콥터의 체력은 단순히 hit point 하나로만 표현되는 게 아니라, 속도계의 일부가 깨지거나 어느 부품이 날아가거나 무슨 기능이 박살나는 것처럼 무척 세세한 묘사가 지원되었다. PC 스피커로 나오는 소리 역시 백미. 본인은 도스 시절에 하드웨어 제어 프로그래밍 경험이 전혀 없이 32비트 윈도우 운영체제로 바로 넘어간 세대이기 때문에, 옛날에 그런 걸 갖고 놀았던 시절이 무척 신기하게 느껴진다.

LHX의 개발자는 Brent Iverson이다. 프로필을 보니 예술 쪽과 전산학 내공을 두루 갖춘 굉장히 탁월한 프로그래머인 것 같다. 과거에 유명한 2D 그래픽 프로그램이던 딜럭스 페인트의 도스용 포팅을 한 사람이기도 하다.
(상업용 게임들이 320*200 256컬러 VGA에서 돌아가던 시절에는 딜럭스 페인트가 오늘날의 포토샵 정도로 스프라이트 만들 때 필수 툴이었다. ^^;;)
듣기로는 군 복무 경력도 있는 듯? 그러니 저런 사실적인 군사 미션 게임도 만들 수 있었을 것이다.

다음은 LHX 화면 녹화 동영상이다.
http://www.youtube.com/watch?v=rbgJGg5yd1A (인트로 화면)
http://www.youtube.com/watch?v=VC3OUrgf1Lg (게임 플레이)

2. 대항해시대 2

대항해시대 시리즈 중에서 가장 명작이었다고 평가 받는 작품. 본인에게는 국산 게임인 <그 날이 오면 3>만큼이나, 음악이 아름다워서 기억에 남는 게임이다.
오프닝부터... 툭툭툭툭 툭툭툭툭.. 빠암 빠암.. 빠암 빠암.. 빠 밤 빰... ^^;;
그리고 비록 3D와는 관계가 없고 16컬러이기까지 하지만, 그래픽 역시 16컬러치고는 색상이 미려하고 고해상도의 장점을 살려 깔끔한 편이다.

다음은 이 게임의 오프닝 동영상이다.
http://www.youtube.com/watch?v=EM143YYEdEg

일본물에 조예가 깊은 분이라면 이미 알겠지만, 이 게임의 음악들을 작곡한 사람은 칸노 요코라는 40대 중반의 여성 음악가이다. 초등학교에 들어가기도 전부터 작곡을 했다는 음악 신동이라 한다. 캐릭터 선택 음악, 항해 중 음악 등등... 아주 낭만적이다.
이 사람은 유수의 게임뿐만 아니라 우리나라의 몇몇 드라마 주제곡도 작곡했으며, 한국에도 팬이 많다.

이 게임은 한글화도 되어 나왔다. 요즘처럼 유니코드도 없고 문자 처리의 국제화와 관련된 그 어떤 표준도 존재하지 않던 시절에 localizing은 상당한 고역이었을 것이다.
특히 이름을 입력할 때 쓰이는 한글 입력 루틴은 어떻게 만들었을까? 키보드를 이용한 두벌식 한글 입력 같은 건 당연히 존재하지 않았으며, 한글 자모를 화살표로 일일이 선택한 후 조합해야 했다.

그러고 보니 오늘날처럼 터치 스크린이나 포인팅 장비가 대중화하기 전부터도, 아주 제한된 key만으로 한글이든 로마자든 글자를 입력해야 하는 환경이 있었다. 게임, 특히 오락실 게임에서 말이다. 알파벳과 숫자 정도야 그냥 A부터 Z까지 위 아래 화살표로 고르고, 대소문자마저 무시하고서 이니셜만 입력하게 해도 되지만 한글은 그보다는 복잡한 과정이 필요할 것이다.

그러나 한글은 그래도 그런 환경에서 입력을 구현이라도 할 수 있지, 일본어와 한자로 가면 정말 답이 안 나온다. 일본이 다른 소프트웨어 중에서도 오직 게임 산업이 발달한 것은 그나마 가장 locale-neutral한 분야여서 그렇다고 하는데 사실인지?

우리나라가 한글 처리에 특화된 아래아한글이라는 워드 프로세서가 강세이듯,
일본도 외국 기업이 흉내 내기 어려운 수준의 일본어 처리 능력을 자랑하는 이치타로(일태랑)라는 토종 워드 프로세서가 있다고 한다. 하지만 아래아한글만치 독자적인 영역을 확보하지는 못하고 결국 MS 워드에게 발리고 있는 듯? 하긴, 일본은 IME마저 패키지 소프트웨어로 팔리는 나라이니, 문자 사정이 한국과는 마치 지구와 금성의 차이만큼이나 극단적으로 다르다. 그래도 한국에도 <날개셋> 같은 3rd-party 입력기가 있다. ^^;;

.
.
.

갑자기 얘기가 문자 쪽으로 새었다. 다시 게임 얘기로 돌아오자면..
풍부한 리소스와 하드웨어 환경만이 명작 게임을 반드시 보장하지는 않는 것 같다.
개나 소나 3D를 써야 하는 오늘과는 달리, 옛날에는 오히려 제한된 자원의 특성을 이용해서 더욱 창의적인 방식의 게임이 많이 시도되었다. 레밍즈나 테트리스 같은 게임이 3D로 컨버전된 후 완전 ㅈ망이지 않았던가.
또한, 그야말로 불멸의 명작으로 평가 받는 스타크래프트도 3D가 전혀 아니며, 무려 윈도우 95에서 실행 가능하고 640*480 256컬러로 돌아가는.. 초 구닥다리이다.

본인은 온라인 게임류를 별로 안 좋아해서 품질 좋은 패키지 게임을 선호하는 편이지만,
게임 업계의 현실은 불법 복제 걱정이 없는 온라인밖에 답이 없는 모양이다.
마치 노트북도 4:3 화면을 선호하는데 온통 와이드 화면밖에 안 나오는 것처럼 말이다.

Posted by 사무엘

2010/06/17 09:04 2010/06/17 09:04
, ,
Response
No Trackback , 6 Comments
RSS :
http://moogi.new21.org/tc/rss/response/297

« Previous : 1 : ... 186 : 187 : 188 : 189 : 190 : 191 : 192 : 193 : 194 : ... 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:
2699854
Today:
301
Yesterday:
1544