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

1.

<날개셋> 한글 입력기는 잘 알다시피 글쇠배열 수준을 넘어서 한글 조합 로직을 완전히 외부에 expose하고 사용자가 이를 입력 옵션의 일부로서 마음대로 고칠 수 있는 유일한 한글 입력 프로그램이다.

한글 조합 로직은 전산학에서 오토마타라고 불리는 '정규 문법'(regular grammar)으로 흔히 모델링되며, 보통은 그 알고리즘이 해당 한글 입력 프로그램의 소스 코드 내부에 복잡한 switch문의 형태로 하드코딩되어 있다. 그러나 <날개셋> 한글 입력기는 그렇지 않으며, 아예 C언어 수식의 문법 형태로 오토마타를 사용자가 일일이 지정이 가능하다.

정규 문법은 옛날에 1996년도 한국 정보 올림피아드 경시부(본인이 그 시절에 정올 공부를 한 세대여서.. ^^)에서 출제되었던 잠수함 코드 식별 문제와 같은 차원의 난이도이다. 주어진 규칙대로 상태를 쭉쭉 switch해 나가다가 코드가 yes로 끝나면 잠수함이고, 그렇지 않으면 noise이다. 한글 입력 오토마타도 그런 수준이라는 뜻이다.

첨언하자면, 이것보다 한 단계 더 복잡한 차원의 문법은 그 이름도 유명한 문맥 자유 문법(CFG)이다. 이제는 다단계의 여닫는 식별 부호를 재귀적으로 처리할 정도가 되어야 하고, 제대로 파싱하기 위해서는 스택이 필요하다. 여기서 스택은 한글 입력 순서를 기억하는 그런 스택이 아니라, 각 재귀 단계별 상태를 기억하기 위한 스택이다. 정규 문법이 Windows의 INI 파일 정도의 복잡도라면, 문맥 자유 문법은 XML 정도 된다고 보면 된다.

전산학 전공자라면 데이터 구조 시간에 복잡한 괄호와 연산자가 들어간 수식을 처리하는 프로그램을 만든 적이 있을 텐데, 그게 바로 간단한 문맥 자유 문법을 인식하는 프로그램을 구현해 본 것이다. 그러나 한글은 초-중-종성으로만 구성되지 '초성-여는 중성-종성-닫는 중성'이라든가, '여는 초성-중성-여는 종성-닫는 종성-닫는 초성' 처럼 글자 자체가 재귀적으로 이상하게 전개되는 형태는 아니므로, CFG가 아닌 정규 문법만으로 표현이 충분히 가능하다.

사람이 다루는 자연어든, 컴파일러가 다루는 프로그래밍 언어 소스가 아니어도, 컴퓨터라는 계산 기계가 인식과 생성과 처리 가능한 모든 파일 포맷은 결국 이런 문법으로 formal하게 생성 규칙을 나타낼 수 있으며 그럴 수밖에 없다. 텍스트 파일이든, 그래픽 포맷이든, 심지어 기계어 코드의 포맷이든 말이다. 그래서 오토마타 이론은 전산학에서 매우 중요하게 다루어진다.

2.

다시 본론으로 돌아와 한글 입력기 얘기를 계속하겠다.
한글 입력기도 구현체가 제각각이기 때문에 프로그램마다 동작 방식이 대동소이한 차이가 있었다. 예를 들어 “중성+종성 형태의 미완성 한글의 입력이 가능한가? 그리고 세벌식의 경우 초성+종성 미완성 한글도 입력 가능한가?” 하는 것 말이다. 오토마타는 바로 이런 세밀한 로직을 바꿀 수 있다.

아래아한글은 도스용 3.x까지만 해도 그런 게 가능하지 않다가 윈도우용으로 넘어오면서 어느 샌가 미완성 한글의 표현이 가능해졌으며, 특히 97 때는 전무후무하게 초-종-중 순의 입력도 가능해서 아주 초보적인 형태의 모아치기까지 지원했었다. 그게 워디안 이후부터는 다시 없어졌지만 말이다.

<날개셋> 한글 입력기는 그런 것들을 구분하기 위해서 일반적인 이어치기 오토마타뿐만이 아니라 미완성 한글의 입력을 불허하는 오토마타도 따로 갖추고 있다.
PC 환경이 도스에서 윈도우로 넘어가면서 한글 코드의 주류도 조합형에서 완성형으로 넘어갔다. 완성형은 구조적으로 낱자의 초성과 종성을 구분하는 게 불가능하고 미완성 한글도 표현할 수 없기 때문에, 한글 입력 오토마타도 그에 맞춰서 설계되는 게 불가피했다.

그런데 맥 OS가 제공하는 한글 입력기는 동작 방식이 흥미롭다. 두벌식은 별 차이가 없는데 MS의 한글 입력기와 큰 차이를 보이는 부분은 세벌식이다.
오토마타가 '미완성 한글을 허용 안 하는 이어치기'의 변종이다. 초성과 중성의 단독 입력은 허용하지만, 종성 단독이나 여타 미완성 한글의 입력은 아예 무시하여 허용하지 않는다. 또한 받침 ㄲ, ㅆ은 ㄱ, ㅅ의 연타로 입력을 못 하고 반드시 한 타로만 쳐야 한다.

입력 무시는 <날개셋> 한글 입력기의 오토마타에서 -1이라는 음수 상태로 정의되어 있으므로 이런 입력 로직도 <날개셋> 한글 입력기로 어렵지 않게 구현할 수 있다.

0 → A ? 1 : B ? 3 : C ? -1 : 0
1 → A ? 1 : B ? 2 : C ? -1 : 0
2 → B ? 2 : C ? 4 : 0
3 → B ? 3 : C ? -1 : 0
4 → C ? 4 : A|B ? 0 : -1

초기 상태에서는 종성 C만 -1로 빠지게 하여 무시하면 된다. 그리고 초성이 입력된 상태인 1번 상태에서도 C만 무시하면 된다.
초성과 중성이 모두 입력된 2번 상태에서만 종성의 입력이 허용되며, 이 경우 오토마타는 4번 상태로 가게 된다.
중성만 단독으로 입력된 상태인 3번에서도 중성만 동일 상태로 받아들이면 되고 종성은 여전히 무시한다. (C ? -1: 0)

끝으로 문제가 되는 건 초-중-종성이 모두 입력된 4번 상태이다. 받침 ㄴ+ㅎ=ㄶ 같은 결합은 계속 허용해야 하지만 더 결합할 수 없는 받침은 입력을 무시해야 한다. 그리고 초성과 중성은 다음 글자로 입력을 받아들인다. 이 상태를 어떻게 표현하면 좋을까?

<날개셋> 한글 입력기는 오토마타로부터 양수 상태값을 얻어서 결합 가능 승인은 받았지만 실제로는 낱자 결합 규칙이 존재하지 않아서 추가 결합이 불가능해진 낱자가 발견될 경우, 성분 변수 A~C에다가 모두 0을 집어넣어서 해당 상태에 대한 오토마타 함수값을 다시 구한다. 그렇기 때문에 C에 값이 있을 때는 일단 4번 상태를 계속 유지하게 하되, 초성이나 중성에 값이 있으면(A|B) 다음 글자로 넘어가서 조합을 진행하게 하고(0), 진짜로 세 변수가 모두 0일 때만 -1로 조합을 무시하게 하면 된다.

요컨대 초성과 중성만 단독 입력이 가능하고 정확하게 초-중-종 순서를 따르지 않은 unexpected 종성은 입력을 무시하게 한 오토마타인데, 이것도 좀 오래 써 보니 오타 방지 차원에서는 나쁘지 않은 것 같다.

3.

이제 오토마타 얘기 말고 다른 기술적인 얘기로 넘어가겠다.
맥 사용자라면 이미 충분히 아시겠지만, 매킨토시 컴퓨터는 별도의 한/영이나 한자 키가 없기 때문에 한/영 전환이 cmd+space이고, 한자 변환은 opt(alt)+enter이다.

다만 약간 불편한 점은, 두벌식이든 세벌식이든 겹받침을 입력하는 방법이 없다는 것이다. 두벌식에서 ㄱ+ㅅ을 누르면 둘은 따로 떨어지며, 세벌식은 아예 겹받침 단독 입력이 불가능하기 때문이다.

초성+한자로 특수문자를 입력하는 기능도 맥에는 없다. 일반 PC에서는 그야말로 도스 시절에서부터 존재한 오랜 전통임에도 불구하고, 맥은 그런 것의 영향을 지금까지 전혀 받지 않은 채 지내 왔다니 놀라울 따름이다. 전/반각 모드 같은 것도 맥에서는 찾을 수 없다.

윈도우에서는 두벌식/세벌식이 한 한글 IME 내부에서의 설정치로 존재해 왔지만 맥은 각각의 벌식이 마치 영문 쿼티/드보락처럼 별개의 입력 방식으로 다뤄진다. 어찌 보면 이게 더 직관적인 디자인인 건지도 모르겠다. 그래서 입력 환경 설정 대화상자에는 글자판을 선택하는 옵션은 없으며 backspace 키의 동작 방식 같은 것만 있다.

Windows는 95 이래로 조합 중인 한글을 깜빡이는 네모 커서로 나타내는 관행을 도스 시절 프로그램으로부터 확실하게 도입하여 정착시켰다. 이 당연한 관행이 3.1때까지만 해도 없었기 때문에, 한글을 조합 중일 때 커서는 그냥 해당 한글의 앞에 똑같은 길쭉한 형태로만 보였다. 당시 윈도우 3.x용 MS 워드 6.0이 예외적으로 IME를 자체 처리하여 네모 커서를 자체 구현하던 수준이었다.

그에 반해 맥은 조합 중인 한글을 그냥 일본어나 중국어의 조합을 표시하듯이 밑줄로 처리한다. 즉, 맥에서는 깜빡이는 네모 커서를 볼 일이 없다는 뜻. 사실, 깜빡이는 네모 커서는 도스 시절 이래로 오랫동안 봐 왔기 때문에 심리적으로 편하기는 하지만, 한글 조합을 두 글자 이상의 길이로 표현하는 가능성을 차단했다는 큰 제약도 존재한다.

그래서 MS 운영체제에서는 전통적으로 한글 조합을 단어 단위로 잡는 기능이 존재한 적이 없다. 한자 입력할 때를 빼면 사실 전/반각만큼이나 별로 필요하지도 않은 것도 사실이긴 하지만 말이다. 그 반면 맥에는 그 옵션이 있다.

이런 점들을 감안하면, 한글 입력 하나를 두고도 맥과 윈도우는 문화가 상당히 다름을 알 수 있다. 차이는 이것으로 그치지 않는다. 오류가 없는 100% 정확한 세벌식 최종 글자판이 윈도우에서는 무려 비스타와 오피스 2007 타임라인에 와서야 겨우 제공된 반면, 맥에서는 공 박사님의 영향력 덕분인지 그야말로 OS X도 아니고 20세기 클래식 시절부터 당연히 기본 제공되어 왔음도 감안할 필요가 있다.

Posted by 사무엘

2012/07/20 19:21 2012/07/20 19:21
, , , , ,
Response
No Trackback , 3 Comments
RSS :
http://moogi.new21.org/tc/rss/response/709

오늘날 PC에서 명맥을 유지하며 살아있는 데스크톱용 운영체제는 역시나 윈도우, 맥, 리눅스 3관왕이다. 다만 이들이 대등한 점유율이 절대 아니며, 셋의 점유율은 공비가 무려 10에 육박하는 등비수열을 이룬다.

맥이야 x86 계열 CPU로 갈아타고 기계의 가격도 내리면서, 옛날에 비해서야 정말 많이 대중화가 되었다. 또한 아이폰/아이패드가 모바일에서 워낙 큰 성공을 거둔 덕분에 맥북/아이맥까지 반사 이익을 보고 있기도 하다. 아이폰/아이패드에서 돌아가는 소프트웨어를 만들려면 결국 그 계열의 PC가 필요하니까 말이다.

그래도 윈도우에 비하면야 맥 사용자는 정말 10% 이내의 소수이다. 맥OS를 작정하고 써 볼 의향이 있는 게 아니라면, 맥 계열 기계는 비슷한 사양의 일반 컴퓨터보다 여전히 비싸며 구입 후에 서비스도 구리고 키보드· 마우스의 일부 동작 방식이 이질적이기 때문에 덥석 권할 게 못 된다. 솔직히 나도 지금의 맥북 살 돈으로 일반 노트북을 샀다면 아마 화면이 두 배 정도 더 큰 걸 살 수 있었지 싶다. 그러나 ‘스잡빠’, ‘앱등이’로 대표되는 굳건한 추종자도 있는 마당에, 이쪽 진영은 결코 없어지지는 않을 것이다.

맥은 소수이지만 인지도라도 있지 리눅스는 그조차도 없다. 리눅스를 서버도 아닌 데스크톱 로컬 환경의 주 운영체제로 쓰는 사람은 가히 소수 중의 소수이다. 작정하고 MS 진영을 반대하고 철저한 copyleft 정신으로 무장한 컴덕후 해커이거나, 잡스를 숭배하는 것처럼 리처드 스톨먼을 숭배하는(최소한 그의 인격이 아니면 그의 이념을) 사람 정도만이 리눅스를 쓰지 않을까 싶다.

물론, 맥이 예전보다 접근성이 개선된 것만큼이나 리눅스도 옛날에 비해서는 초보자가 쓰기 정말 편해지긴 했다. 하지만 그래도 초보자가 쓰기엔 리눅스는 인지도 있는 응용 프로그램이 부족하고, 뭘 세팅하고 바꾸려면 유닉스 명령줄을 다뤄야 하는 등 생소한 면모가 적지 않다.

사용자 삽입 이미지
(연구 목적으로 2010년 무렵에 VM을 만들어서 돌려 본 우분투 리눅스 9.x의 화면이다. 한때 리눅스의 그래픽 셸은 GNOME이냐 KDE냐로 갈라져 혼란스러운 편이었으나, 요즘은 결국 둘 다 지원하는 쪽으로 가는 추세라 한다.)

20년이 넘게 도스와 윈도우에만 길들여지고 10년이 넘게 윈도우 프로그래밍만 해 본 본인의 입장에서 맥 OS에 존재하는 주목할 만한 특징을 간추려 보면 다음과 같다.

가장 먼저, 운영체제의 시스템 메뉴와 응용 프로그램의 메뉴가 한데 완전히 통합되어 있다는 점이 매우 인상적이다.
Windows는 운영체제의 시스템 메뉴에 해당하는 시작 메뉴가 task bar에 있다. 이것은 응용 프로그램의 창에 소속된 메뉴하고는 당연히 완전히 별개이다. CreateWindowEx 함수는 창을 생성할 때 메뉴 핸들도 별개로 받는다.

그러나 맥은 화면 상단에 항상 고정되어 있는 시스템 메뉴에 응용 프로그램의 메뉴가 얹힌 형태로 나타난다. 이런 건 윈도우에서는 OLE 개체 embedding 상태에서나 어렴풋이 볼 수 있는 모습이다.

사용자 삽입 이미지
(제목은 워드패드인데 도움말에 나와 있는 건 그림판. 어?)

응용 프로그램 메뉴는 파일이나 도움말 같은 기본적인 것만 남고, 그 사이엔 개체를 제공하는 프로그램의 메뉴가 뜨는 것 말이다. 요즘은 이런 디자인도 과거 유물로 치부되어 별도의 프로그램 창이 따로 뜨는 형태로 바뀌고 있지만. (MS부터가 자기네들이 만든 표준 메뉴 인터페이스를 구닥다리로 치부하고 안 쓰려 하니 말이다)

맥에서는 시스템 전체를 통틀어 pull-down 메뉴는 하나만 있으며, 한 순간에 현재 활성화되어 있는 프로그램의 메뉴 하나만 볼 수 있다. 문서 창에 메뉴가 따로 달려 있지 않다. 그리고 맥에서 돌아가는 GUI 응용 프로그램이라면 반드시 이런 디자인을 따라야만 한다.

윈도우에서는 대화상자 하나만 달랑 띄우고 따로 메뉴를 만들기는 곤란한 프로그램의 경우, 대화상자의 시스템 메뉴를 customize해서 보통 ‘이동 / 닫기’만 있는 그 메뉴에다가 About이라든가 Always on top 같은 추가 명령을 넣는 경우가 있다. 그러나 맥은 어떤 프로그램에게라도 무조건 기본 메뉴가 주어지니 그런 식의 테크닉이 존재하지 않는다.

맥은 그런 기본적인 인터페이스가 모든 응용 프로그램에서 무조건 동일하기 때문에 윈도우처럼 무슨 오피스 200x 스타일 메뉴나 도구모음줄을 만들어 주는 GUI 툴킷이라는 게 존재하지 않는다. 윈도우에서야 보급 메뉴 대신에 그 자리에다 싸제 메뉴 창을 얹어서 보급 메뉴처럼 동작하게만 만들면 custom UI를 손쉽게 만들 수 있지만, 맥은 그렇게 할 수 없으니 말이다.

비주얼 C++의 MFC 프로젝트 마법사를 보면, GUI 응용 프로그램을 전통적으로 MDI, SDI, 대화상자라는 세 형태로 분류한다. 그런데 맥에서는 어떤 형태의 프로그램도 일단은 가장 범용적인 MDI에서 시작한다고 볼 수 있다. 실제로 문서 창은 하나밖에 생성하지 않는 프로그램이라 할지라도 말이다. ‘<날개셋> 타자연습’을 맥용으로 만든다면, 프로퍼티 페이지의 밖에 존재하는 ‘사용자 로그인’이나 ‘종합 환경설정’ 같은 명령은 응당 메뉴에서 내리는 명령으로 바뀌어야 할 것이다.

또한 맥은 동일 프로그램의 중복 실행에 대한 개념이 Windows와는 다르다. 같은 프로그램은 한 번만 실행되고 그 동일한 프로그램이 여러 문서를 담당한다는 MDI 사고방식이 맥은 더욱 엄격하다. 그래서 맥 OS의 task bar에 해당하는 dock은 프로그램이 실행됐냐 안 됐냐의 여부만 표시되어 있지만, 이 아이디어를 차용한 윈도우 7의 task bar는 프로그램의 중복 실행 개수도 살짝 표시하고 있는 것이다.

이런 디자인 때문에, 맥에서 프로젝트 단위로 문서를 다루는 프로그램은 내부 구조가 많이 복잡해진다. 개발툴이 그런 예 중 하나이다. 비주얼 C++이야 여러 개를 실행해서 제각기 프로젝트를 열면 되지만, xcode는 프로젝트별로 각각의 문서창을 차지하고 있으면서 그 내부에서 또 파일을 편집하는 창을 관리해야 한다.

맥 응용 프로그램은 마지막 문서 창이 닫혀서 문서가 하나도 없는 상태에서 키보드 포커스가 다른 프로그램으로 넘어갈 때 자동으로 종료되는 편이다. 이런 동작 방식은 Windows에서는 볼 수 없던 모습이다.
물론 모든 프로그램이 그러는 건 아니다. 대표적으로 Finder도 파일 표시(윈도우로 치면 탐색기 창 같은) 창이 하나도 없이 포커스가 바뀌더라도 종료되지 않고 언제나 실행되어 있는다. 내장 웹브라우저인 사파리도 마찬가지이다.

키보드로는 Alt+F4에 해당하는 Cmd+Q를 누르면 언제나 프로그램이 종료된다. 단, 윈도우의 Alt+F4는 그냥 창을 닫는다는 보편적인 용도도 포함하는 단축키인 반면, Cmd+Q는 언제 어디서나 해당 응용 프로그램을 완전히 종료시킨다는 의미 차이가 있다.

윈도우 프로그래머라면, 맥에서는 저런 것뿐만이 아니라 응용 프로그램의 파일 구성까지 상상도 못 할 정도로 다르다는 사실에 더욱 놀라게 될 것이다. 단순 실행 파일 말고 GUI 응용 프로그램은 아이콘, 리소스, 구성 파일이 한데 담긴 패키지 형태로 배포된다. 파일 시스템상으로는 디렉터리 구조이지만 운영체제 내부에서는 가상적인 단일 패키지 파일로 취급된다.

맥에서는 그럼 레지스트리가 없으면 응용 프로그램의 설정 저장을 위해 어떤 기법을 쓰는지? 프로그램 추가/제거는 어떻게 하는지? 동일 개발자가 만든 여러 프로그램이 동일 코드를 공유하려면 DLL 같은 건 어느 디렉터리에다 집어넣으면 되는지? 맥은 윈도우 같은 32/64비트 코드 혼용 문제는 없는지?

알고 싶은 게 한두 가지가 아닌데 그런 걸 윈도우 프로그래머의 입장에서 잘 설명해 놓은 인터넷 사이트나 책은 아직까지는 난 못 봤다. 아무래도 둘은 서로 달라도 너무 달라서 두 플랫폼의 사고방식에 모두 완전히 통달한 개발자는 거의 없으리라 예상된다.;;

이렇듯, 그토록 쉽게 다가설 수 없는 이질감에도 불구하고, 맥 OS는 좀 써 보면 윈도우에서는 느낄 수 없는 참을 수 없는 고급스러움, 미적 감각이 느껴지는 건 부인할 수 없다. 맥 같은 녀석이 존재함으로써 IT 세계가 좀 더 다양해지고 MS의 독점을 약간이나마 견제하는 효과가 난 건 인류 전체의 관점에서는 그래도 이익이긴 한 것 같다.

Posted by 사무엘

2012/07/10 08:11 2012/07/10 08:11
, , ,
Response
No Trackback , 10 Comments
RSS :
http://moogi.new21.org/tc/rss/response/705

<날개셋> 한글 입력기의 개발자가 심층 분석한 MS 한글 IME 리포트.
버그를 나열하기 전에 먼저 독자의 이해를 돕기 위한 기술 설명부터 하겠다.

A. MS IME의 두벌식과 세벌식의 구현 차이 -- 오토마타

일단 좋은 말부터 꺼내자면, MS 한글 IME는 현존하는 한글 입력기들 중, 어떤 의미에서는 기본에 충실하게 가장 FM대로 만들어져 있다. 두벌식과 세벌식의 로직이 서로 확고하게 분리되어 있으며 구조가 완전히 다르다. 그리고 MS 버전의 두벌식 한글 입력기는 전산학적으로 볼 때 진정한 두벌식의 고증에 가장 충실하게 만들어져 있다.

무슨 말이냐 하면, 자음이라면 초성을 조합할 때와 종성을 조합할 때의 조합 규칙에 차이가 없다. 그래서 초성이 입력되는 상태에서도 ㄶ, ㄳ 같은 겹받침을 바로 입력할 수 있는 반면, ㄲ, ㅆ 같은 쌍자음은 연타가 아니라 반드시 Shift로만 입력할 수 있다. 이 동작 방식은 내가 알기로 윈도우 95 시절 이래로 시종일관 변함 없다.

<날개셋> 한글 입력기나 아래아한글의 두벌식 입력기는 그렇지 않다. 도깨비불 현상만 추가되었을 뿐 세벌식의 사고방식으로 두벌식을 덤으로 구현한 형태에 가깝다. <날개셋>의 경우, 이 점을 감안하여 지난 6.0 버전에서 초-종성 공유 낱자 결합 규칙이라는 개념이 추가되었으며, 이를 사용하면 두벌식 입력 방식을 좀 더 두벌식스러운 사고방식으로 설정할 수 있다.

뭐, 아래아한글도 1980년대 말에 1.0이 처음 개발되었을 때는 개발자들이 세벌식이 정확하게 뭔지 몰라서 자음만 한 벌 더 있을 뿐 여전히 도깨비불 현상이 존재하는 형태로 만들었다가, 고 공 병우 박사에게서 지적 받고 고쳤다는 일화가 전해지긴 한다만.

B. MS IME의 두벌식과 세벌식의 구현 차이 -- 글쇠 인식

표준 두벌식 글자판은 A부터 Z까지 딱 알파벳 글쇠 26개에만 한글이 배당되어 있고 나머지 글자들은 영문과 완전히 똑같다. 그렇기 때문에 MS 한글 IME는 두벌식일 때는 알파벳 글쇠만 가로채어 사용하며, 숫자, 기호, 공백 글쇠는 처리하지 않고 응용 프로그램으로 그대로 넘겨 준다.

세벌식은 그렇지 않다. 몇 가지 영문과 일치하는 기호가 있긴 하지만 일반적으로 공 병우 세벌식은 4단까지 독자적으로 사용하고 숫자와 기호 영역까지 침범한다. 그래서 MS IME는 세벌식에 대해서는 아예 공백까지 포함한 48개 글쇠 자리를 모두 가로채어 동작한다. <날개셋> 한글 입력기는 가로챌 글쇠 영역 자체를 필요에 따라 정밀하게 제어하는 옵션을 아주 최근의 6.5 버전에서야 추가했다.

이렇게 두 글자판의 구현이 제각각 따로라는 점 자체는 나쁘지 않다. 그러나 이는 MS IME에 두벌식을 쓸 때는 괜찮은데 세벌식을 쓸 때만 자잘한 버그가 존재하는 빌미를 제공하고 있다. 역사적으로 볼 때, 이런 버그는 더럽게 안 고쳐진다는 특징도 있었다. 두벌식과 세벌식의 넘사벽 급의 인지도 차이 때문이다.

10년도 더 전에 포트리스라는 대포 쏘기 게임이 인기였을 때, 세벌식으로는 한글 모드에서 Space로 대포 쏘기가 안 되어 채팅과 게임을 같이 하기가 불편하다는 이슈가 있었다. 두벌식에서는 Space가 응용 프로그램이 직접 접수한 공백이지만, 세벌식에서는 Space가 직접 오는 게 아니라, 한글 IME가 가공을 하고 보내 준 공백이라는 완성된 문자열이 오기 때문이다.

C. 윈도우 7에서의 변화

자, 앞에서 다룬 건 MS 한글 IME의 두벌/세벌 메커니즘의 차이이고, 지금 하는 얘기는 운영체제의 버전에 따른 디테일의 변화 쪽이다.

16비트 윈도우 시절에는 운영체제에 유니코드도, 국제화(I18N)도, 지역화(L10N)도 없었다. 동일 제품을 한중일 나라의 문자를 입출력할 수 있게 개량하는 것은 MS의 각 지사에서 완전히 독자 기술을 사용해서 알아서 재량껏 해야 했다.

그러다가 윈도우 95/NT4가 되면서 글꼴 쪽도 획기적으로 발전하고(내장 비트맵, 트루타입 컬렉션 등), 입력기 쪽도 한중일 통합 IME 프로토콜이 처음으로 제정되었다. 그리고 입력기 프로그램은 EXE가 아니라 여타 운영체제에서 유례를 찾기 힘든 독특한 형태인 DLL이 되었다. 그래서 윈도우만 입력기의 한영 상태가 각 프로그램별로(정확히는 스레드별로) 완전히 따로 놀지, 공유가 되지 않는다.

윈도우 2000부터는 추가 글꼴과 코드 페이지 데이터만 설치해 주면 세계 어느 나라 윈도우에서도 아무 나라 언어의 입력기를 설치할 수 있게 되었고, 윈도우 XP부터는 고급 텍스트 서비스라고 불리는 일명 TSF 기술이 도입되었다. 윈도우 비스타부터는 이제 전세계 언어의 입력기와 글꼴이 추가 설치를 할 필요도 없이 기본으로 제공되며, TSF 프로토콜이 주류가 되고 기존 IME 프로토콜은 호환성 계층을 통해서나 제공된다.

이로써 비스타에서 문자 입력 방식의 그랜드 슬램이 달성되고 해피엔딩이 된 것 같은데, 윈도우 7에 와서는 기능이 추가된 건 없으면서 뭘 또 잘못 건드렸는지 문자 입력 쪽의 안정성이 전반적으로 하락했다. MS 한글 IME만의 버그인 것도 있고 운영체제 자체의 버그인 것도 있다. 이 글에서는 지금까지 언급한 A~C를 염두에 두고, 2012년 현재 MS 한글 IME에 존재하는 것으로 알려진 버그들을 정리해 보았다.

1. 세벌식 최종 + 전각문자

맥 OS는 공 병우 박사(이분이 요즘 같았으면 전형적인 앱등이이셨다ㅋㅋㅋ)의 텃새 덕분에 전통적으로 세벌식 최종이 강세였으며, 세벌식이라 하면 곧 최종 자판을 가리켰다. 그러나 PC 쪽은 도스 시절 이래로 390이 강세였기 때문에 세벌식이라 하면 곧 390을 가리켰다. 최종은 아래아한글조차 97에 와서야 제공하기 시작했을 정도로 인지도가 미미했다.

윈도우 95 때 처음으로 세벌식 최종 글쇠배열이 있긴 했지만 그런 인지도 부족으로 인해 틀린 배열이 굉장히 많았다. 그게 98에서 좀 바로잡히긴 했지만 여전히 오류가 있었고, 그 오류는 윈도우 XP/오피스 2003에 가기까지 고쳐지지 않았다.

비록 최종 글자판은 참고표와 가운뎃점처럼 1바이트 아스키 영역에 없는 글자가 있는 게 특이점이긴 했지만, 윈도우 98부터는 어차피 한글 IME의 모든 내부 자료구조가 유니코드로 바뀌었기 때문에 큰 문제가 되지 않았다. 구조가 그러하니 내가 파워업을 개발해서 패치도 가능했던 것이고.

윈도우 비스타 + MS 오피스 2007에 와서야 드디어 100% 정확한 세벌식 최종 글자판이 제공되기 시작했다. 2003년 중반에 내가 한국 MS를 방문해서 수정을 강력하게 요청했던 것도 아마 작용하지 않았겠나 생각해 본다. 비록 그 해 가을에 발표된 오피스 2003에서 바로 반영되지는 못했지만 말이다.

그런데, 이 사람들이 일을 깔끔하게 처리하지 못했다. 전각 모드에서는 참고표와 가운뎃점이 제대로 입력되지 않는다. 얘들은 아스키 문자가 아니니 라틴 문자처럼 일괄적으로 0xFEE0를 더해서는 안 되는데 그거 처리를 추가하지 않은 듯하다. 윈도우 7+오피스 2010에서까지 변함없다. 물론 한국에서는 전각 문자를 거의 쓰지 않으니, 이건 심각한 문제는 아니다.

참고로 한중일의 MS 오피스는 XP 버전부터 운영체제의 IME를 자기 것으로 패치하는 게 관행이 됐다. 일본어 IME는 운영체제의 것과 오피스의 것이 차이가 난다는 말도 있는 듯하지만, 한글 IME는 운영체제의 것이나 오피스의 것이나 차이가 거의 없음.

2. MS 워드 2007 이상에서 세벌식을 쓸 때만 나타나는 역상 현상

워드 2007 이상에서, 오피스 2007 이상 또는 윈도우 비스타 이상이 제공하는 한글 IME로 세벌식을 써서 한글과 숫자, 기호, 공백을 입력한다. 그 뒤에 IME를 날개셋이라든가 다른 일본어· 중국어 입력기로 바꾼 뒤 글자를 입력한다. 그러면 예전에 MS 한글 IME의 세벌식으로 입력했던 공백이나 숫자, 기호가 역상(검은 배경, 흰 글씨)으로 바뀐다!

사용자 삽입 이미지
굉장히 기괴한 버그이다. 이것은 워드에서만 나타난다는 점에서 워드의 문제이기도 하지만 세벌식으로 입력한 비한글 문자에 대해서만 나타난다는 점에서 MS IME의 문제이기도 하다. B에서 언급한 기술 차이를 생각해 보라.

이 역상은 문서의 내부 서식이 아니라, 문자의 중간 조합 상태를 표현하기 위해 문자 입력기가 임시로 부여하는 시각 효과이다. 일본어 입력 중에 나타나는 점선 밑줄 같은 것 말이다. 해당 문서를 저장한 뒤에 다시 불러오면 다행히 사라지긴 하지만, 그 상태에서 조치를 취하지 않으면 인쇄도 그대로 역상 모양으로 된다. -_-

더욱 기괴한 건, 오피스 2003 같은 예전 버전의 MS IME로는 세벌식을 쓰더라도 이런 현상이 발생하지 않는다는 점이다. MS 제품 자체의 버그가 확실하다. 윈도우 7/오피스 2010에서까지 고쳐지지 않았다.

3. 윈도우 7, 한글 입력 중에 바탕 화면을 클릭했을 때

윈도우 7에서 MS 워드 2007이나 2010을 실행하여 아무 한글 IME로나 한글을 입력한 상태로 있는다. 창을 최대화하지는 않은 채로 가령, ‘아’를 조합하고 있는다. 그리고 그 상태로 마우스로 바탕 화면을 클릭했다가, 다시 워드의 제목 표시줄을 클릭하여 돌아온다.

비스타에서는 동일한 절차를 수행하고 나면 ‘아’의 조합이 종료되어 커서가 ‘아’ 뒤에 가 있다. 그러나 7에서는 커서가 여전히 ‘아’를 조합하고 있지만 실질적으로는 조합이 끝난 상태이다. 받침 ㄴ을 입력하더라도 ‘안’이 되지 않고 ㄴ이 새로 조합된다.

윈도우 7은 한글 조합 중에 창의 포커스가 바뀌었을 때의 내부적인 처리가 갑자기 좀 이상하게 혹은 엄격하게 바뀌었다. 비스타나 XP 이전에는 아무 문제가 없던 게 7에서 갑자기 문제를 일으켜서 그에 대한 방어를 해야 했다. <날개셋> 한글 입력기도 과거의 5.51과 5.52 때 이와 관련된 버그 패치가 행해졌다.

4. 윈도우 7의 콘솔에서 세벌식으로 조합을 종료할 때 글자가 덧남

윈도우 XP/비스타에서는 해당사항 없고 7에서만 발생하는 구조적인 문제이다. 서비스 팩 1에서도 고쳐지지 않았다.
명령 프롬프트에서 세벌식 자판으로 한글을 입력하다가 온점이나 스페이스처럼 비한글 문자를 입력하면서 조합을 종료시키면, 조합 중이던 한글이 덧난다. 가령, ‘다.’를 입력하다 보면 ‘다다.’가 된다.

이건 꽤 황당하고 심각한 버그인데 왜 아직까지 안 고쳐졌는지 이해가 안 된다. 게다가 윈도우 7은 출시된 지 이제 무려 3년이 다 돼 가지 않는가.
왜 세벌식일 때만 그렇냐고? 이 역시 B에서 설명되었듯, 비한글 문자를 처리하는 방식이 두벌식과 세벌식이 다르기 때문이다. 문자 입력 프로그램이 아니라 운영체제의 구조적인 버그이기 때문에 윈도우 7에서는 MS IME든 날개셋이든 동일하게 발생한다.

5. IME 2010, 콘솔에서 한자 후보 목록이 곧바로 나타나지 않음

이것은 약간 불편할 수는 있지만 그렇게 심각한 문제는 아니다. 콘솔에서 한글을 조합하는 중에 한자 키를 눌러 보면, 원래 한자 후보가 콘솔 창의 하단에 곧바로 떠야 하는데 뜨지 않는다.
물론 이 상태에서도 번호를 누르면 해당 한자로 바로 변환이 되며, 좌우 화살표 같은 페이지 전환 키를 누르면 그제서야 후보 목록이 나타난다. 뭔가 코딩 실수가 들어간 듯하다.

이 버그는 윈도우 7의 기본 한글 입력기에서도 존재하지 않으며, 한글판 MS 오피스 2010과 함께 설치된 한글 IME 2010에서만 나타나는 문제이다. 즉, 운영체제의 것을 대체하는 오피스의 IME가 오히려 버그를 포함하고 있는 셈이다.
<날개셋> 한글 입력기에는 물론 이런 문제가 없다.

Posted by 사무엘

2012/06/24 08:34 2012/06/24 08:34
, , , , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/699

컴퓨터의 모니터 화면을 픽셀 단위로 있는 그대로 저장하는 기능의 필요성은 과거 도스 시절부터 쭉 있어 왔다. 프로그램의 기능을 설명할 때, 특정 인증샷을 남길 때 등 여러 모로 유용하고 필요한 기능이기 때문이다.

오늘날에도 키보드에는 print screen이라는 키가 있다. 옛날에는 사용자가 이걸 누르면 하드웨어 차원에서 인터럽트가 발생하여, 텍스트 모드 화면에 찍혀 있던 글자가 프린터 포트(LPT1)로 진짜로 갔다. 프린터가 안 켜진 상태에서 이걸 누르면 컴퓨터가 멎었다. pause를 누르면 컴퓨터의 전체 작동이 일시 중단되고 ctrl+alt+del을 누르면 컴퓨터가 곧바로 재부팅되던 시절의 얘기이다.

하지만 이런 기본 기능은 너무 원시적이고 빈약하며, 그래픽 모드에 대한 대비책이 전무했기 때문에 화면 캡처는 결국 소프트웨어 계층이 담당하는 영역으로 넘어가게 되었다.

도스 시절의 화면 캡처 프로그램은 응당 램 상주(TSR) 프로그램의 형태였다. 아래아한글의 경우, 1.5x에서는 hcopy.exe라는 자그마한 유틸리티가 있었는데, 텍스트 모드 아니면 무려 허큘리스 단색 그래픽 모드만 지원했었지 싶다. 2.0과 그 이후부터는 별도의 유틸리티는 없어졌고 대신 아래아한글 프로그램에 자체적으로 화면 캡처 기능이 들어갔다. 언제라도 Alt+키패드 +키를 누르면 지금 화면을 PCX 그림 파일로 저장할 수 있었다.

한동안 본인이 사용했던 프로그램은 수채화라는 그래픽 프로그램에 내장되어 있던 snap이라는 덜 유명한 국산 프로그램, 그리고 Screen Thief라는 비교적 유명한 외국산 프로그램이다 ST는 아주 특이하게도 텍스트 모드도 색깔과 바이오스 글꼴이 모두 가미된 그래픽 원형 그대로 캡처해 주는 끝내주는 기능이 있었다. 생성되는 그림 파일 확장자도 GIF로, 비록 오늘날의 JPG에 비할 바는 아니지만 PCX보다야 더 무겁고 압축률이 뛰어난 포맷이었다.

도스에서 윈도우로 넘어가면서 화면 캡처는 굉장히 쉬워졌다. 여러 프로그램들을 동시에 띄우고 드나들 수 있는 멀티태스킹 환경일 뿐만 아니라, 언제든지 Print Screen만 누르면 화면 전체 또는 활성화된 창이 비트맵 형태로 클립보드에 저장되기 때문이다. 그래픽 하드웨어가 워낙 겹겹이 잘 추상화되다 보니, 화면 캡처란 이제 기술적으로 대상 윈도우의 DC 내용을 내 DC로 Bitblt하는 것이 전부이다.

너무 간단해졌다. 옛날에는 하드웨어 가속을 받는 동영상이나 일부 게임 화면은 이 방법으로 캡처할 수 없어서 별도의 특수한 프로그램을 써야만 했지만 이것도 비스타부터는 옛말이 됐다.

기본적인 기능은 운영체제가 자동으로 제공해 주니, 캡처 유틸리티들은 편의성을 더욱 강화하고, 일정 수준 이상의 그래픽 편집과 보정 기능도 갖추는 방향으로 발전하기 시작했다. 여러 윈도우의 동시 캡처, 자동 스크롤 캡처, 그리고 현재 화면보다 더 큰 해상도를 가장한 화면 캡처, 멀티모니터 지원, 텍스트 정보 추출 등, 화면 캡처라는 주제 하나만으로도 기발한 아이디어가 적지 않다. 편집 쪽도 Blur 같은 전문적인 사진 보정보다는, 색깔 추출, 디더링 같은 산술적인 변환 기능이 더 필요할 것이다.

본인은 옛날에는 동영상 화면의 캡처를 위해 HyperSnap이라는 프로그램을 잠깐 썼었는데 나름 굉장히 잘 만든 프로그램이었다. 하지만 지금은 그거 없이도 동영상 화면 캡처가 얼마든지 가능해졌기 때문에 안 쓴다. 그냥 옛날 Paint Shop Pro가 같이 제공하는 화면 캡처 기능을 유용히 쓰는 중이다.
오늘날은 국산 프로그램으로는 ‘오픈캡처’가 이 분야에서 아주 유명하다. 완전 무료 프로그램이다가 최근에는 기업 대상으로 유료화되었다.

윈도우 환경이라도 게임들 역시 전통적으로 화면 캡처 기능을 제공해 왔다. 옛날에 256색 게임들은 운영체제의 print screen 키로는 비록 비트맵 데이터는 화면 캡처가 되지만 팔레트 정보가 저장되지 않아 화면이 이상한 색으로 저장되곤 했기 때문이다. 한편, 요즘은 컴퓨터의 성능이 놀랍도록 좋아지고, UCC 만들기가 보편화하면서 아예 게임 화면 동영상을 찍는 기능도 쓰이고 있다. 외산으로는 프랩스(Fraps), 국산으로는 반디캠 같은 프로그램이 좋은 예이다.

화면도 나오고 동영상도 나왔으니, 글을 맺기 전에 소리 캡처에 대해서도 잠깐만 언급하겠다. XP 이하 시절에는 내 컴퓨터에서 나오는 소리를 도로 녹음하는 것이 비교적 쉽게 가능했는데 비스타부터는 그게 방법이 꽤 까다로워지고, 하드웨어 환경에 따라서는 아예 불가능한 컴퓨터까지 생겼다고 본인은 알고 있다. 비스타 때부터 비디오와 오디오의 하드웨어 계층이 바뀌었다.

개인적으로, 키매크로 유틸리티와 저런 부류의 캡처 유틸리티는 운영체제가 기본 제공할 만한 보조 프로그램의 아주 좋은 예라고 생각한다. 컴퓨터의 활용 능력 및 생산성하고 직접적인 관계가 있는 도구이기 때문이다.

Posted by 사무엘

2012/05/31 08:36 2012/05/31 08:36
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/689

1.

옛날에 폰 노이만(폰 노이만 구조라는 컴퓨터 근간을 닦은 사람)이라는 사람은 기계어로 직접 컴퓨터에다 코딩을 하는 기계어 매니아였다. 기계어가 너무 불편하다고 어느 제자가 어셈블리 비슷한 상위 계층 언어를 만들려 하자 “귀한 컴퓨터 자원으로 쓸데없는 짓이나 한다”고 그를 나무랐다.;;
이거 마치 희대의 저격수인 시모 하이하가 조준경 그딴 걸 왜 쓰냐고 나무란 것과 비슷한 맥락 같다.;;
 
그 반면, 데이크스트라(다익스트라. 그래프 탐색 알고리즘을 고안한 그 사람)는 어셈블리/기계어 같은 언어를 비생산적이고 삽질스럽다고 아주 강하게 디스한 것으로 잘 알려져 있다. 그도 그럴 것이, 구조화 프로그래밍을 주장하면서 GOTO문을 배격한 사람이 기계스러운 BRANCH 따위가 난무하는 저급 언어를 좋아할 리가 없겠다.
 
둘 다 우주괴수급의 천재 수학자 및 전산학자이다만, 이런 식의 관점의 차이가 존재하는가 보다. 재미있는 일이다.
 
2.

밸브 코퍼레이션의 창립자 게이브 뉴웰 (카운터 스트라이크, 하프 라이프, 포탈 등의 게임 개발사)
페이스북의 창립자인 마크 주커버그 (나보다 더 어림..)
마이크로소프트의 창립자인 빌 게이츠 (설명 불필요)
 
억만장자 IT 기업인인 이들은 모두 하버드 대학 중퇴자라는 공통점이 있다. 다 미국인이기도 하고.

3.

개발자가 소프트웨어를 팔아서 먹고 살려면

(1) 관공서나 기업에서 구입하지 않을 수 없는 핵심적인 프로그램을 개발 (교육이나 업무 분야)
(2) 하드웨어에 같이 들어가는 프로그램을 개발해서 하드웨어와 함께 판매
(3) 온라인 게임 개발 (늘 서버 접속을 하기 때문에 이용료 징수 가능)
(4) 아니면 개인을 대상으로도 유료 판매가 가능한 유통 경로(앱스토어, 스마트폰 등)를 거치는 프로그램 개발

중 하나로는 가야 할 것 같다. 저 네 가지 말고 혹시 다른 방법이 있을까?

4.

내가 맥 OS에 매력을 느끼는 큰 이유 중 하나는.. 폰트 래스터라이저가 정말 짱이라는 점.
똑같은 글꼴을 화면에 찍어 내는 퀄리티가 서로 게임이 안 되는 수준이니...

사용자 삽입 이미지
위는 Windows, 아래는 맥이다.
Windows는 ClearType을 시키면 맑은 고딕처럼 전용 힌팅이 들어간 글꼴이 아니면 그냥 안티알리어싱이 없는 것보다 약간 나은 정도로만 찍히는 반면.
Mac은 힌팅이 없다시피한 글꼴도 Adobe Reader 이상의 퀄리티로 찍어 준다!

5.

그나저나 맥 OS는 Finder (윈도우로 치면 탐색기)에서 파일이나 디렉터리의 이름을 바꾸는 게 엔터이고, 실행하거나 여는 게 Cmd+아래라니 참 희한하다. 윈도우라면 이름 바꾸는 건 F2이고, 여는 게 응당 엔터인데 말이다.

6.

과거에 MS 오피스가 2003에서 2007로 버전업되었을 때 비주얼이 화려해지고 좋아진 기능이 분명 적지 않았지만, 내게는 굉장히 마음에 안 드는 변화도 있었다. 그것 중 하나는 파워포인트에서 '컬러 타자기' 애니메이션 효과가 굉장히 느려져서 랙이 심해지고 프레임 수가 감소한 것이었다. 글자가 말 그대로 타자기로 찍듯이 한 글자씩 천천히 나타나는 것 말이다. 그렇게 현란하거나 CPU의 부하가 심한 효과도 아니다.

그랬는데 2010을 나중에 써 보니, 마치 2003처럼 애니메이션이 다시 매끄러워져 있었다.
혹시 컴퓨터가 빨라지고 화면 해상도가 낮아져서 그런 게 아닌가 싶어서 컴퓨터를 바꿔서 확인해 보았다.
그랬더니 같은 1280*1024 화면이라도 역시 2010에서는 Core2 duo급 컴에서도 매끄럽게 나오는 반면, 2007에서는 쿼드코어 i5급 컴에서도 버벅거렸다.

그래서 이것은 소프트웨어적인 알고리즘 개선 덕분이라는 결론을 내리게 됐다. 2007과 2010 사이엔 이런 차이도 존재하는가 보다.

7.

근래엔 <날개셋> 한글 입력기의 구성 파일들에 대해서 바이러스 및 악성 코드 진단 문의가 부쩍 늘었다. 그래서 그에 대한 개발자의 공식 입장을 내 홈페이지에다가도 게시할 필요를 느끼게 됐다.

결론부터 말하자면 당연히 “바이러스 아님”이다. 모든 프로그램들은 바이러스도, 안티바이러스(일명 백신)도 알지 못하는 100% 청정 컴퓨터에서 개발되며, 개발 환경에서 갓 빌드된 직후의 실행 파일들이 곧바로 설치 패키지로 포장된다. 바이러스 같은 게 들어갈 일이란 없다. 이 일 때문에 본인에게 문의하면 언제나 동일한 대답밖에 돌아올 게 없으며, 그 외에 더 할 말이 없음을 이 자리에서 밝히는 바이다.

더 근본적으로는 실행 파일과 MSI 패키지가 디지털 서명을 받지 못한 관계로, 웹브라우저부터가 빨간 경고와 함께 <날개셋> 프로그램의 다운로드를 저지(discourage)하는 것도 좀 아쉬운 점이다. 이건 훗날 프로그램이 더 나은 수익원과 배포 통로를 확보했을 때에나 해결 가능할 것 같다.

그래서 이 참에 아예 프로그램 다운로드 페이지에다가 설명을 써 놨다. “10년이 넘게 인생을 걸며 이 프로그램을 개발하고 개선해 온 저를 믿으신다면, 그런 보안 경고들은 모두 무시하고 안심하고 사용하시기 바랍니다.

문득 생각해 볼 문제: 비주얼 C++이나 그에 상응하는 개발툴이 설치된 컴퓨터를 자동으로 감지하여 프로그램이 링크될 때 쓰이는 C 라이브러리 같은 lib, obj 파일을 감염시키는 컴퓨터 바이러스 프로그램이 존재할까? 처음부터 바이러스에 감염된 프로그램이 생성되도록? -_-;;

Posted by 사무엘

2012/05/19 08:22 2012/05/19 08:22
, ,
Response
No Trackback , 9 Comments
RSS :
http://moogi.new21.org/tc/rss/response/684

요즘 학교나 관공서의 전산망에서는 인터넷 접속을 위해서 특정 보안 솔루션 ActiveX들과 그것도 모자라서 바이러스 백신까지 무조건 설치하라고 강요하는 걸 볼 수 있다. 그걸 안 하면 사이트 접속이 되질 않게 해 놓았다.  허나 본인은 그런 보안 솔루션들에 대해 정서적으로 굉장한 반감을 갖고 있으며, 그것들을 몸서리치게 싫어한다.

여러 보안 솔루션 중 키보드 보안 프로그램이 하는 역할은 아마도 사용자의 키 입력(비밀번호 같은)을 메시지 훅킹으로 가로챌 수 없게 하고, 반대로 없는 키 입력을 소프트웨어적으로 생성할 수 없게 하는 일일 것이다(온라인 게임에서 오토의 실행 차단). 또한, 은행 돈거래 관련 정보가 담긴 패킷은 정보가 유출되더라도 의미 파악이나 변조가 거의 불가능하게 아주 복잡한 계산을 동원한 암호화/해독이 클라이언트에서 행해져야 할 필요가 있을 것이다. 그런 기술적인 필요를 본인은 모르는 건 아니다.

다만, 웹 표준만으로 도저히 구현할 수 없는 운영체제 커널 기술 수준의 보안이 불가피하게 필요하다면, 차라리 무리해서 웹 애플리케이션을 만드는 걸 포기하고 깨끗하게 로컬 환경에서 돌아가는 exe 형태의 프로그램과 배포 패키지를 만들었으면 좋겠다.

nProtect 부류의 이상한 프로그램들은 웹브라우저를 끈 뒤에도 계속 메모리 차지하면서 남아 있는 것 정도나 보기 싫은 수준이고 그나마 ‘낫다’. 하지만 이놈의 빌어먹을 백신은 답이 없다. 바이러스나 악성 코드에 걸리지 말라고 설치하는 솔루션들이, 깔고 나면 악성 코드나 그 이상 수준으로 민폐 끼치면서 컴퓨터 성능을 쪽쪽 갉아먹기 때문이다. 좀 심하게 표현하면 컴을 완전히 병신으로 만들어 놓는다.

마치 치안과 국방을 담당해야 할 자국의 정규군이나 경찰이 하라는 일은 안 하고 자기네들부터 민폐 끼치고 민간인들을 등쳐 먹는다거나, 반공을 빌미로 공권력이 심심하면 멀쩡한 생사람을 빨갱이로 몰아서 잡아 죽인다거나 하는 상황을 생각하면 되겠다.

맥북 이전 4대 노트북을 쓰던 시절의 일이다. 본인이 다니는 학교는 내부에서 와이파이로 인터넷에 접속할 때 NetCare인지 뭔지 하는 보안 ActiveX와 바이로봇 백신을 반드시 설치하도록 강요를 하고 있다. 둘 중 하나라도 설치를 안 하면, 몇몇 사이트는 아예 접속이 되지 않거나 쿠키가 저장되지 않아서 로그인을 할 수가 없으며, 되는 사이트도 보안 솔루션들을 설치하라고 협박하는 문구가 든 프레임이 웹사이트에 제멋대로 추가되어 나오곤 했다.

그래서 본인은 어쩔 수 없이, 울며 겨자 먹기로 마지못해 깔라는 것들을 다 설치해 줬다. 그러자 저런 성가신 현상이 모두 없어지고 인터넷은 잘 되기 시작했다. 그러나 그 뒤부터 내 컴에서는 끔찍한 헬게이트가 시작되었다.

부팅 직후에 시스템이 시작 메뉴 구동 같은 각종 조작에 응답하는 속도가 눈에 띄게 느려졌고, 웹브라우저가 페이지를 여는 속도, 전반적인 파일 액세스 속도도 인내심의 한계를 느끼는 수준이 되었다. 최대 절전 모드에서 복귀하는 시간까지 예전보다 훨씬 더 길어졌다. 멀쩡하던 컴퓨터가 진짜 만신창이 장애인이 된 느낌이었다. 평상시에 운영체제의 메모리 사용량도 예전보다 수십 MB가량 늘었다.

나는 운영체제의 업데이트들은 목록만 자동으로 받게 한 뒤, 다운로드와 설치는 내가 지정한 것만 수동으로 하게 해 놓고 있었다. 그랬는데 그 보안 솔루션은 나의 설정을 씹고, 인터넷만 됐다 하면 마구잡이로 온갖 업데이트들을 제멋대로 받아서 설치했다.

언제부턴가 MS 오피스가 SP2이던 게 느닷없이 SP3으로 바뀌어 있었다. 프로그램이 버전업되어서 좋은 게 아니라 도리어 부아가 치밀었다. “이 자식, 지금까지 왜 이리 느리고 쓸데없이 디스크 액세스를 하는가 했더니, 그 수백 MB짜리 업데이트를 내 동의도 없이 제멋대로 설치하느라 그랬군.” 하는 생각에 말이다.

참다못해 하루는 넷케어고 백신이고 전부 다 모조리 지워 버렸다. 요즘은 백신도 용량이 몇백 MB 수준으로 뭘 하느라 그리도 커졌는지 모르겠다. 이것들을 다 지우고 나자 내 컴퓨터는 거짓말처럼 평화가 찾아왔다. 모든 성능이 예전 상태로 돌아갔다. 보안 솔루션들이 그들의 퇴치 대상인 악성 코드가 하는 짓을 동일하게 하고 있음이 입증된 순간이었다.

이제 맥북을 사용하면서 뜻하지 않게 얻은 큰 수확이 있다. 보안 솔루션 제약은 Windows 운영체제에만 적용되며, 맥에서는 그런 게 전혀 없이도 인터넷을 곧바로 자유롭게 이용할 수 있다는 것. 야호! 빌어먹을 넷케어니 바이로봇 따위를 설치하지 않아도 된다. 맥OS가 날 구했다. 스잡빠니 애플빠니 난 그딴 건 모르지만, 어쨌든 이거 덕분에 맥OS 호감도가 급상승했다.

한편, 고향에서도 비슷한 일을 최근에 겪었다. 고향집 컴퓨터가 언제부턴가 병신 중의 상병신이 돼 있었다. 부팅 후에 시작 메뉴를 눌러도 한참 동안 반응이 없고, 웹브라우저를 띄운 뒤에 창이 나타나기까지 몇 분이 족히 걸리고 있었다. 레지스트리나 파일 디렉터리를 살펴봐도 딱히 악성 코드에 걸린 것 같지는 않은데 영문을 모를 노릇이었다.

이 현상의 주범은 바로 V3 Lite였다. 이놈을 당장 지우자 컴퓨터는 운영체제를 갓 설치한 직후처럼 아주 쌩쌩해졌다! 그러니 난 도대체 진짜 악성 코드란 어떤 놈인지 가치관의 혼란을 겪을 수밖에 없었다.

바이러스가 묻은 메일 첨부 파일을 클릭한 것도 아니고, 이상한 사이트를 돌아다니다가 ActiveX 설치에 ‘예’를 누른 것도 아니었다. 이 V3은 어머니께서 집에서 인터넷으로 업무를 보시기 위해 어쩔 수 없이 설치한 것이었다. 이거랑 무슨 희한한 듣보잡 ActiveX들을 설치하지 않으면 직장의 업무 자동화 시스템에 접속이 되질 않기 때문이었다.

이런 일련의 사건을 겪은 뒤, 나는 더욱 더 백신 따위는 죽어도 절대로 쓰지 말아야겠다는 생각을 굳게 하게 되었다. 옛날처럼 백신이 그냥 사용자가 요청할 때만 파일이나 메모리를 스캔하면서 바이러스 검사를 해 주던 시절이 그립다. 저런 거지 같은 잉여 쓰레기 프로그램을 얹고도 작업을 원활하게 하려면, 가히 정말 최신식 최고급 컴퓨터를 써야겠다. 아니, 내 컴퓨터가 아무리 빠르고 메모리가 썩어 넘친다 해도 저런 프로그램에게 컴퓨터 자원을 내어 주기는 싫다.

보안을 빌미로 원치 않는 프로그램의 설치를 강요하는 이런 못돼먹은 풍조가 좀 없어졌으면 하는 바람이 있다. 이런 일이 계속될수록 이에 대한 반발 심리로 나의 컴퓨터 보안 위협 불감증은 더욱 커질 것이다.

Posted by 사무엘

2012/04/02 19:23 2012/04/02 19:23
, , ,
Response
No Trackback , 8 Comments
RSS :
http://moogi.new21.org/tc/rss/response/663

1.
오늘날 전세계적인 히트를 친 게임을 만든 유명 개발사가 왕년에는 이런 고전 게임을 만든 적이 있었고, 그걸 내가 어렸을 때 즐겨 한 적도 있다는 걸 알게 됐을 때 놀라움을 느끼게 된다.

본인의 초등학교 시절의 추억이 담겨 있는 Rick Dangerous 시리즈는 온통 순발력과 타이밍 퍼즐로 가득한 2D 아케이드 플랫폼 게임이다. 체력도 없이 주인공을 즉사시키는 트랩이 곳곳에 지뢰밭처럼 깔려 있고, 여러 번 죽으면서 시행 착오를 겪지 않고서는 트랩을 알 수 없는 것도 많아서 본인은 게임의 레벨 디자인을 개인적으로 좋아하진 않았다.

사용자 삽입 이미지
이 게임의 개발사는 영국의 Core Design이다. 훗날 툼 레이더를 개발한 회사라니 믿어지는가? 1996년에 나온 1부터 시작해 2003년의 Angel of Darkness 시리즈까지를 이 회사가 만든 뒤, 나중에는 개발사가 Crystal Dynamics로 바뀌었다.

2.
Dangerous Dave는 id 소프트웨어의 그 이름도 유명한 존 로메로의 옛날 작품인 거 모르는 분이 별로 없을 것이다. 나중엔 기획 쪽으로 부서를 옮겼지만 이 양반도 프로그래밍을 할 줄 아는 사람이고, 회사 내부에서 쓰는 게임 데이터 제작용 툴 정도는 직접 만들기도 했다.

사용자 삽입 이미지

3.
액션/아케이드 게임은 주인공이 으레 마초스러운 남자이며, 게임의 목적은 언제나 여자친구나 공주님을 구하는 설정인 게 많다. 그러나 그 통념을 정면으로 깨고 오히려 여자가 왕자님을 구하러 모험을 떠나는 게임이 있으니, 바로 Jill of the Jungle 시리즈이다.
사용자 삽입 이미지

1992년에 Epic MegaGames에서 개발한 이 게임은 비슷한 시기의 다른 게임에 비해서는 그래픽이 좀 허접하다. 맵의 각 칸을 구성하는 그래픽이 딱 격자인 게 티가 날 정도이니 말 다 했다.;; 하지만 인상적인 건, 내가 알고 있는 고전 게임들 중에 제일 관대하고 UI가 친절하다는 점이다. 그 당시에 F1 도움말이 있는 게임이 얼마나 됐을까? ㅋ 어디서나 저장 가능하고 게임 주변 환경에 대해서 친절하게 설명이 엄청 많이 나온다. 말이 많다.

그리고 시간 제한도 없으면서 목숨 수 제한도 없다. 그 당시의 2D 아케이드 플랫폼 게임들은 시간 제약이 없으면 목숨 수 제한이 있다거나, 아니면 그 반대인 것처럼 둘 중 하나는 있는 게 보통이었다. 그리고 목숨 수 제한이 없더라도, 죽고 나면 예전에 먹은 아이템은 다 잃은 채 게임을 해당 레벨부터 다시 시작해야 했는데 이건 그렇지도 않았다.
약간의 고비를 좀 넘기면 한 3, 40분 정도만 애쓰면 무난하게 엔딩을 볼 수 있다.

이 게임을 만든 프로그래머는 Tim Sweeney이다. 그렇다. 훗날 3D 게임용 Unreal 엔진을 만든 그 개발자이다.

4.
길 잃은 바이킹(The Lost Vikings)은 1992~93년을 풍미한 유명한 게임이다. 한 주인공만 조종하는 여느 아케이드 플랫폼 게임과는 달리, 이 게임은 제각기 특기가 다른 세 명의 주인공을 순서대로 조종해서 맵의 퍼즐을 풀고 이동해야 한다. 달리 빨리 달리고 점프를 할 수 있는 놈, 화살을 쏠 수 있는 놈, 방패 겸 낙하산이 있는 놈이 있다.

사용자 삽입 이미지
이 게임의 개발사는 Silicon & Synapse인데, 이게 훗날 디아블로, 스타크래프트, 워크래프트, WOW로 세계를 뒤흔들어 놓는 게임 개발사가 될 줄 누가 알았을까? 그렇다, <길 잃은 바이킹>은 블리자드 엔터테인먼트의 옛 작품이다. id 소프트웨어로 치면 Commander Keen 같은 옛날 작품이라 할 수 있다. RTS 장르만 만드는 줄 알았는데 블리자드도 왕년엔 아케이드를 만들었다.

5.
옛날에 본인이 접한 게임들 중에는 엔딩을 본 것도 있고, 끝내는 정복을 못 한 어려운 것도 있다.
그래서 이것과 관련된 기억을 좀 나열해 보자면.. 대표적으로 보글보글 레벨 32가 있었다.
잘 알다시피 이건, 몬스터를 죽이기 위해 위에 있는 좁은 구멍을 통해 밑으로 들어가는 방법은 대단히 위험하다. 여섯 마리나 되는 몬스터에게 십중팔구 부딪혀 죽는다.

아주 오래 기다리고 있으면 몬스터 중 일부가 구멍 위로 나오는 경우도 있지만, Hurry up과 고래크리 때문에 그때까지 기다릴 수는 없다.
이 레벨까지 오는 것만 해도 천고만신 만신창이인데 레벨 32가 본인의 병목 지점이었고, 여기서 크레딧 다 깎아먹은 뒤 본인은 끽해야 3x나 4x대 레벨이 한계였다. 이보다 더는 무리였다.

사용자 삽입 이미지

그러나 시대가 지나서 요즘은 유튜브에 온갖 고전 게임들을 플레이하는 우주괴수들의 동영상이 나돈다. 공략 사이트들도 있다. 그리고 저 레벨은 방법만 알면 그렇게 어려운 레벨도 아니다. (☞ 공략 사이트 클릭)
비결은 시작 지점에서 거품을 불어서 그 거품 위로 점프를 하여 top-to-bottom이 아니라 bottom-to-top으로 몬스터들 굴 속으로 올라가는 것이다.

단, PC용 버전은 게임기용 버전보다는 그렇게 하기가 더 어렵다.

6.
추억의 레밍즈!
여러 에디션들 중에서 Oh no! More Lemmings의 Crazy 카테고리는 레벨 1도 쉬운 편이 아닌데 레벨 2 Dolly Dimple에선 어지간한 레밍즈 뉴비들은 다 떨어져나가고 만다.

미칠 듯이 쏟아져나오는 레밍즈에 출구까지는 높이 차이가 너무 심하고(추락사), 도구도 얼마 없고, 게다가 100% 다 구출해야 하고..

사용자 삽입 이미지

공략법은 이 그림에 나와 있듯이 한 놈만 저런 땅파기를 이용해 밑으로 내려가게 한 후, 저렇게 사다리를 파는 것이다. 그런데 나는 공략법 보고도 제대로 못 따라할 것 같다.
추락사를 할 높이에서 떨어지더라도 출구로 떨어지는 건 안전하기 때문에, 사다리를 출구 위까지 놓고 쥐들을 거기로 떨어뜨리는 해법도 있긴 하다.
이것도 공략집 사이트를 소개하겠다. (☞ 클릭)

7.
게임 개발 업계에 있는 사람들 사이에서는 완전 상식이겠지만, 왕년의 스타 개발자가 옛날답지 않은 이상한 모습으로 몰락한 사례가 여럿 있다. 앞에서 언급되었던 존 로메로는 id 소프트웨어를 떠난 뒤에 정말 처참하게 망가진 케이스이며, 빌 로퍼도 한때 블리자드의 부사장 자리에까지 올랐지만 거기를 떠난 후 근황이 묘연하다.

그리고 울티마 시리즈를 만들어서 천재 게임 개발자로 추앙받던 리처드 개리엇은 그 명성은 안드로메다로 가고 가히 우주먹튀 수준으로 비아냥의 대상이 되어 있다.

8.
국내의 기업들은 영어나 알파벳을 쓸데없이 남발하고 문서, 간판이나 소프트웨어의 UI 같은 데서 표준어/맞춤법도 틀리는 반면, 오히려 외국계 기업이 그런 걸 더 잘 지키는 경우가 적지 않다.
당장 떠오르는 예는 맥도날드이다. 간판에다 한글로 ‘맥도날드’라고 큼직하게 쓰고 영어로는 작게 보조로 쓴 것 때문에 예전에 민간의 한글 운동 단체들로부터 칭찬을 받은 적이 있다.

그런데 블리자드도 그런 식의 개념 면모 때문에 사용자들로부터 칭찬을 받고 있다고 들었다. 물론, 한국이 블리자드 게임들을 워낙 폭발적으로 사랑해서 매상을 많이 올려 줬으니 거기서도 우리나라를 특별히 배려-_-하는 것일 수도 있지만, 동기야 어쨌든 잘하는 건 잘하는 것이니까. 스타크래프트 2는 동영상에 나오는 사람의 입모양까지 한국어에 맞춰 만들어졌고, 각종 배경에 나오는 문자까지 전부 철저하게 한국어로 바뀌었다.

특히 WOW에서던가 배틀넷에서던가, 채팅 중 입력하는 한글 자모 커맨드를 세벌식 자판 기준까지 지원해 준 건 세벌식 사용자들로부터 오래 전부터 칭송받은 사항이다. 어떻게 외국계 기업이 세벌식 자판까지 알고 로컬라이즈를 할 수 있었을까?

9.
어느 장르에서든 게임이 2D에서 3D로 바뀌면 옛날 같은 개떼 물량전이 퇴색하는 건 어쩔 수 없는 tradeoff임이 분명하다. 아무래도 둘의 CPU 처리 부담의 차이가 장난이 아니니까 말이다.
단적인 예로, 스타크래프트 2나 워크래프트 3에서 스타크래프트 원판의 저글링 개떼 같은 찰진(?) 맛을 느낄 수는 없을 것이다.

둠 2에서 퀘이크로 넘어갔을 때만 해도 그렇다. 100% 폴리곤으로 넘어간 첫 버전이던 퀘이크는 이제 맵 어디를 뒤지더라도 과거의 둠 2 같은 광활한 평지에서 수십 마리의 몬스터들이 우글거리는 모습을 볼 수 없었다.

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

Posted by 사무엘

2012/03/20 19:21 2012/03/20 19:21
, ,
Response
No Trackback , 6 Comments
RSS :
http://moogi.new21.org/tc/rss/response/657

1. 시스템 종료를 시스템 재시작으로 바꾸기

아주 오래 전부터 생각해 오던 건데...
시스템 종료 명령을 내려서 운영체제가 shutdown 중일 때 특정 글쇠를 누르면...
시스템 종료를 철회하는 것까지는 안 되더라도, 최소한 나중에 컴이 아주 꺼져 버리는 게 아니라 reboot/restart로 바뀌게 하기... 이것만 있어도 아주 아주 편할 것 같다. 난 윈 9x 시절부터 이거 필요성을 몇 년째 느껴 왔다. -_-;;
기술적으로 별로 어려운 것도 없을 텐데.

2. IE의 안습한 속도

내가 IE 쓰면서 굉장히 불만스럽고 싫은 것 중 하나는..
페이지 인코딩이나 팝업 허용 옵션을 변경할 때 매번 해당 페이지를 reload하는 것...
최소한 사용자한테서 묻고 하거나, 지금 로딩돼 있는 놈을 해당 설정만 바꿔서 다시 표시할 수 없나?

그리고 속도도 불만이다. 웹 브라우저가 체감 성능이 좋으려면 페이지 캐싱을 잘 해야 하고 자바스크립트 구동하는 속도가 빨라야 하고 HTML 파싱과 렌더링 알고리즘이 좋아야겠지만, 그 중 기본 중의 기본은 새 탭이나 새 창을 띄우는 반응 속도가 빨라야 한다.

그런데 이 속도를 IE와 사파리와 구글 크롬 이 셋끼리 비교해 보면 IE는 그저 한숨만 나올 뿐이다.

Ctrl+N/T를 누르거나 링크에 대한 Ctrl/Shift+클릭을 했을 때의 반응...;;
IE 이놈은 살 좀 빼야 할 것 같다.
그래도 다운로드 확인 대화상자가 떠 있는 동안 미리 다운로드를 하는 건 좋은 아이디어이며, 체감 다운로드 속도를 크게 끌어올린 주역이다. IE9가 머리 좀 썼다..

3. 악성 코드가 붙은 웹페이지

다만, 크롬도 성가시고 불편한 점이 없지는 않다.
일부 사이트에 들어가면 이 사이트는 어디어디로부터 유래된 악성 코드가 묻어 있으니 위험하다면서 브라우저가 페이지 표시를 거부한다.
요즘 아무리 HTML이 동적인 요소가 많이 발달했다 해도, HTML은 기본적으로 컴퓨터에 아무 영향을 주지 않는 문서일 뿐인데 정보 열람을 브라우저가 제멋대로 거부하니까 굉장히 불쾌하다. 오피스 문서도 출처가 의심스러운 매크로가 있으면 매크로만 제외하고 보여주면 되지 않는가.

실제로, 그런 사이트들의 소스를 보면 문서가 다 끝난 닫는 html 태그 뒤에, 또 이상한 자바스크립트가 들어가 있긴 하다. 이런 건 정체가 무엇이며 내 컴퓨터에 정확하게 어떤 영향을 끼칠 수 있는지? 이런 사이트는 서버가 해킹이라도 당했기 때문에 소스 뒤에 이상한 자바스크립트가 첨부되어 나오는지? 여러가지 디테일이 궁금하다. 바이너리 형태인 EXE 실행 파일 안에 바이러스 코드가 붙은 것도 아니고, 텍스트 형태인 웹문서 소스에도 악성 코드가 붙을 수 있구나? -_-

4. 사용자 계정 컨트롤 (UAC)

윈도우 비스타에서 이 기능이 첫 도입된 취지는 적극 이해한다만, 이를 제대로 인식이나 활용 못 하는 옛날 애플리케이션들 때문에 상당히 고달프다.
다른 브라우저는 테스트하지 않았다만, 내 컴의 IE9는 일반 권한 모드로 실행하면, TextCube 블로그 엔진으로 글 쓰면서 첨부 파일 업로드 버튼을 눌렀을 때 파일 열기 대화상자가 먹통이 되고 뜨지 않는다. 웹 프로그래밍이 UAC의 영향을 받기라도 하나? 그 이유는 모르겠다. 어쨌든 당장 내 블로그에다 그림이 곁들여진 글을 올릴 때는 IE를 관리자 권한으로 실행해야 한다.

여차여차 하다 보면 결국 일반 권한 프로그램과 최고(=관리자) 권한 프로그램이 뒤섞여 있게 되는데, 일반 권한 프로그램은 관리자 권한 프로그램에다가 메시지를 보내거나 interprocess communication을 할 수 없다. 그래서 분명 파일을 열라는 요청을 내렸는데 이게 아무 말도 없이 씹힌다거나 하는 일이 비일비재하다. Program Files 폴더 아래에다가 파일을 건드리는 (몰상식한) 프로그램의 경우, 이게 진짜 Program Files인지, 아니면 UAC가 redirect한 가짜 Program Files인지도 아리까리해지고.. 불편하다.

그리고 나로 하여금 운영체제 차원에서 UAC를 끄지 않을 수 없게 만든 결정적인 주범은 아래아한글 2007.
UAC가 켜져 있으면 아래아한글을 “관리자 권한 주고 실행”하더라도 PDF 인쇄 기능이 전혀 동작하지 않고 그냥 먹통이 된다. 아래아한글 전용 글꼴인 HFT는 자기네 전용 드라이버를 안 쓰면 PDF로 제대로 만들지도 못하는데, 문제는 본인은 아래아한글 2.5 확장팩 글꼴 매니아여서 HFT를 안 쓰면 안 된다는 것. -_-

차라리 발상을 정반대로 바꿔서 말이다. 평소에는 전체 권한으로 지내다가, 좀 risk가 있는 웹페이지 들어갈 때 사용자가 지정한 특정 응용 프로그램만 “권한 낮춰서 실행” 이렇게 접근하는 건 어떨까 싶기도 하다. 파워 유저의 입장에서는 그게 더 편할지도..;

5. 컴퓨터의 시계

시계가 없는 컴퓨터란 상상할 수 없다. 컴퓨터의 내부에는 상당히 정확한 시계가 있다. 기계식일 리는 없고 당연히 전자식.
옛날에 IBM PC XT는 시계 배터리가 없었다. 그래서 컴을 켤 때마다 날짜와 시각을 다시 설정해야 했으며, 이 때문에 당시 MS-DOS는 autoexec.bat가 없더라도 date와 time 명령은 수행한 후 명령 프롬프트가 나타났었다.

그 반면 오늘날처럼 제대로 된 컴퓨터와 운영체제 하에서는 시스템의 날짜와 시각을 바꾸기 위해 관리자 권한이 필요하며, 사실 그렇게 해야 하는 게 마땅하다. 시스템의 날짜· 시각이 멋대로 바뀔 수 있으면 그걸 기준으로 동작하는(특히 뭔가 업데이트 여부를 판단하는) 프로그램들이 모조리 혼란에 빠진다.

윈도우 운영체제를 쓰다가 간단하게 달력을 꺼내 보는 방법은, 작업 표시줄에 있는 시계를 더블클릭하여 날짜/시각 대화상자를 꺼내는 것이었다. 그게 옛날에는 대화상자였는데 비스타부터는 간단한 팝업창처럼 바뀌어서 키보드 포커스를 잃으면 창이 바로 사라져 버리며, 결정적으로 창을 옮길 수가 없게 되어 좀 불편해졌다.
다만, 비스타부터 다른 시간대의 추가 시계를 출력하는 기능이 추가된 것은 아주, 대단히 편리하다. 마음에 든다. 본인은 LA의 시간대와, GMT 표준시간대를 추가해 놓고 지낸다.

그나저나 시계 하니까 생각나는데... 시계의 원조는 기계식 시계이며, 톱니바퀴와 렌치가 일반인들의 머리에 각인되어 있는 기계의 상징인 건 틀림없는 것 같다. 그래서 윈도우에서도 DLL 확장자의 상징 아이콘은 톱니바퀴 그림이고, 각종 공구 모양은 제어판이나 도구, 옵션 기능의 아이콘이 되어 있다.

6. Task dialog

잘 알다시피 윈도우 비스타부터 Task Dialog는 아주 멋진 UI 요소가 추가되었다.
그런데 여기에서 좀 이상한 동작 방식을 우연히 발견하여 여기에 그 내역을 공개한다.
Windows 환경에서는 Alt+F4는 창 닫기 내지 종료를 의미하며, 대화상자는 당연히 '취소'로 닫기 때문에 ESC와 역할이 거의 같다.
하지만 Task dialog를 Alt+F4로 닫아 보면... '취소'가 아니라 언제나 맨 첫째 버튼을 누른 결과가 전달되는 듯하다.

메모장을 띄운 뒤, 텍스트를 고치고서 저장 안 하고 Alt+F4를 누른다.
“변경 내용을 저장하시겠습니까?” 대화상자(task dialog임)가 뜬 상태에서 포커스를 '저장'이나 '저장하지 않음', '취소' 중 아무것에다 둔 뒤에 Alt+F4를 누르면...
놀랍게도 '다른 이름으로 저장' 대화상자가 뜬다. 맨 왼쪽의 '저장' 버튼이 눌린 것처럼 반응이 온다.
이거 좀 문제가 있어 보인다.
윈도우 비스타와 7 모두 최신 서비스 팩 있는 상태에서도 동일하게 동작함.

Posted by 사무엘

2012/02/16 19:32 2012/02/16 19:32
Response
No Trackback , 12 Comments
RSS :
http://moogi.new21.org/tc/rss/response/642

본인의 고향집에 있는 부모님께서 사용하시는 PC는 내가 쓰는 PC보다야 훨씬 더 구닥다리 기종이다.
몇 년 전까지만 해도 펜티엄 3에 램은 192MB인 윈도우 2000/ME급 사양이었다. 완전 골동품..;;

그런데 컴퓨터에 이상이 생겨서 서비스를 받고 났더니, 도대체 누구에게서 서비스를 받았는지는 모르겠지만 저 컴퓨터에 윈도우 XP가 깔려 있었다.;;
잘 알다시피 XP는 못해도 램이 256MB 정도는 돼야 쓸 수 있는 덩치이지 않은가. 부팅에서부터 간단한 인터넷 확인을 하기까지 걸리는 시간이 본인의 인내심의 한계를 느끼게 했다.

결국 본인은 내가 대학 학부 시절에 쓰던 펜티엄 4 + 램 512MB짜리 컴으로 PC를 교체해 드렸다. 부모님이야 진짜로 간단한 인터넷 접속 + 워드 작업밖에 안 하시기 때문에 기계가 물리적인 고장만 안 난다면 이 컴을 앞으로 10년-_-은 더 쓰실 법도 해 보였다. 한때 내가 개인 작업용으로도 쓰던 컴이었으니, 인계 당시 최적화는 잘 되어 있었고 윈도우 XP의 체감 속도는 씽씽 날아다니는 수준이었다.

그러나 행복은 오래 가지 못했다.
언제부터인가 고향에 가서 확인해 보니, 악성 코드가 덕지덕지 달라붙어서 컴의 성능을 다 깎아먹고 있었다.
부팅 직후에 시작 메뉴를 열어서 웹브라우저를 띄울 때 운영체제가 굼뜨는 모습이 꼭 옛날의 램 192MB짜리 컴을 쓰던 것과 비슷했다. 램이 그보다 두 배 이상 더 많은 컴에서 말이다.;;

시스템 정보 → '로드된 모듈'을 보면 정체 불명의 이상한 dll이 explorer.exe 내지 iexplore.exe에 달라붙어 있었고, 파일을 지우고 레지스트리를 아무리 정리해도 이런 파일은 재부팅 후에 잡초처럼 계속 생겨나곤 했다.
USB 포트로 메모리 스틱이나 외장 하드를 이 컴에다가 꽂았다가 빼서 확인해 보면, 역시나 루트 디렉터리에 이상한 exe와 autorun.inf가 생겨 있었다.

나는 이런 부류의 악성 코드들이 운영체제에 어떤 방식으로 기생하는지, 어떻게 전염되는지 기술적 디테일을 전혀 알지 못한다.
내 컴퓨터에 지금까지 그런 것들이 침입한 적이 없으며, 내가 스스로 대처한 경험이 없다. 난 내 컴에 백신도 전혀 안 깔고 지낸다.

저런 악성코드를 완전히 뿌리뽑는 방법을 모르기 때문에, 본인은 집 컴의 C:를 그냥 밀어 버리고 운영체제를 다시 설치했다. 사실, 컴퓨터의 상태가 굉장히 안 좋기도 했다.
마침 내가 대학 시절에 만들어 놨던 윈도우 XP sp0(-_-) 원본 씨디가 있어서 그걸 썼다.
XP sp2 통합 씨디 이미지를 갖고 있긴 하지만, 또 씨디 굽기가 귀찮아서..;;
허나 그것이 본인에겐 고난의 시작이었다..;;

운영체제 자체의 설치는 40분 남짓한 시간 만에 별 탈 없이 됐다.
그래픽 카드는 nVidia GeForce의 완전 구닥다리 초창기 모델이어서 그런지, 별도의 드라이버를 설치할 필요조차 없이 운영체제가 알아서 잡아 줬다.
원래 그래픽 카드가 잡혀 있지 않으면 그냥 800*600 슈퍼 VGA의 제일 기본 VBE 모드만 가능하다. 그것보다는 약간 나아진 셈이다.

그리고, XP 이전 2000 이하의 OS는 그래픽 카드 드라이버를 설정 안 하거나 안전 모드로 부팅한다거나 하면, 아예 640*480 16컬러 VGA밖에 지원되지 않았으니 그 시절은 참 어지간히도 암울했었다. 단, 덧붙이자면, 9x 계열과는 달리 2000은 원시적인 16컬러 VGA에서도 화면이 바뀌는 곳에서 마우스 포인터가 깜빡거리는 현상이 없던지라, 얘는 하드웨어 제어를 어떻게 하는지 본인은 개인적으로 궁금증이 들곤 했다. 이것이 NT 커널의 위력인가..?

악성 코드 없이 광속으로 반응하는 청정 OS를 써 보는 기쁨도 잠시. 새 OS는 인터넷이 되지 않았다. 20세기의 유물로 전락한 전화 걸기 대화상자가 뜨는 걸 보고 경악했다.
어라? 네트워크가 전혀 설정되어 있지 않았고, 장치 관리자에 가 보니 이더넷 컨트롤러의 드라이버가 정체 불명이라고 찍혀 있었다.

본인의 컴퓨터 하드웨어 지식은 “요즘은 랜 카드나 사운드 카드는 다 마더보드 내장인데 OS가 알아서 다 잡아 주지 않나?” 정도에 머물러 있었다. 그래서 생각한 두 가지 카드는 다음과 같았다.

1. 2001년에 나온 구닥다리 SP0이어서 못 잡는 것이 아닐까? SP2를 따로 설치하면 아마 자동으로 잡힐 것이다. (잘 알다시피 윈도우 XP SP3은 SP1 이상을 요구하며, SP0에서 바로 설치 못 함)
2. 아니면, 이 컴퓨터의 랜 카드의 메이커가 뭔지는 모르겠지만 Realtek 브랜드의 드라이버 아무거나 설치해 주면 될 것이다.

사실, 최신 운영체제는 무엇보다도 최신 하드웨어의 지원 능력면에서 구버전보다 우월하다. 이 점에서는 심지어 과거의 윈도우 ME도 98 SE보다 훨씬 더 낫다. 98만 해도 드라이버를 따로 설치 안 하면 USB 메모리조차 인식을 못 하기 때문이다.

그래서 250여 MB에 달하는 SP2 설치 파일을 다른 곳에서 애써 복사해 오고, 내가 아는 랜 카드 드라이버를 몇 개 구해서 설치해 봤다. 하지만 두 시도 모두 실-_-패로 끝났다. 특히 SP2는 이 운영체제가 어둠의 경로-_-로 설치된 거라는 걸 알기라도 했는지 제품 시리얼 번호를 갖고 트집을 걸면서 더 진행을 거부하였다.

이런 와중에 새 OS는 설치된 지 불과 몇십 분 만에 또 악성 코드에 감염됨으로써 나에게 충격과 공포를 안겼다. 인터넷이 아예 안 되는 컴퓨터가 어떻게 그렇게 될 수 있는가...????

범인은 아까 그 프로그램들을 복사· 설치하기 위해 꽂은 어머니의 USB 메모리였다. 그 메모리는 이미 예전 컴퓨터로부터 악성 코드가 묻을 대로 묻어 있었을 것이고, 가만히 생각해 보니 USB 메모리의 autorun을 실행하지 않게 하는 윈도우 보안 패치는 생각보다 한참 뒤에 발표되었다. 그리고 이 컴퓨터의 OS는 업데이트 하나 없는 XP sp0으로, 온갖 보안 결함에 무방비로 노출되어 있는 호구이지 않던가. 이런 우라질레이션..;; -_-;;

도대체 CD롬도 아니고, 디스켓이나 다름없는 USB 메모리를 꽂기만 하면 자동으로 autorun이 돌아가게 해 놓은 친구는 무슨 생각으로 그런 기능을 넣었는지 모르겠다.. 키보드 입력을 버퍼 크기 제한도 없이 받아들이는 C언어의 gets 함수만큼이나 보안 면에서 멍청하고 위험한 디자인이 아닌가?

그런 주제에 윈도우 XP의 설치 프로그램은 설치 도중에 자기 운영체제와 웹브라우저에 대해서 '가장 강력하고 보안이 뛰어나다'고 자화자찬을 늘어놓고 있으니 그 어이없음에 웃음이 나올 뿐이었다. 뭐, 10년 전에 그랬다는 소리니까 봐 주자.;; 9x 계열이 갖고 있던 자유도와 유닉스 계열의 엄격함과 탄탄함(robustness)은 동시에 충족될 수 없는 이율배반적인 이념이니까 말이다.

이미 시스템 정보에는 악성 코드 DLL이 올라가 있었고, 레지스트리에서는 역시 정체 불명의 실행 파일이 시작 프로그램으로 등록되어 있었다. 탐색기에서 드라이브를 열 때의 동작 방식도 이상하게 바뀌었다.
악성 코드를 없애려고 운영체제를 재설치했는데 일이 꼬여서 이렇게 되었고 랜 카드도 전혀 잡히지 않았으니, 본인은 난감하지 않을 수 없었다.

결국, SP2가 적용된 윈도우 XP 원본 씨디를 또 만들었다. 귀찮아서 안 하려 한 짓을 결국은 하게 됐다. 그리고 그걸로 XP SP0을 밀고 윈도우를 또 새로 설치했다. 그래서 악성 코드는 노아의 홍수와 같은 심판으로 또 없애 버렸지만, SP2로도 랜 카드는 여전히 잡히지 않았다.

참다못해, 이놈의 랜 카드의 정체가 뭔지 파악하기 위해 컴퓨터의 케이스를 개방해야 했다. 랜 카드는 ASUS 마더보드 내장형이었는데, 모델명별로 자기만의 랜 카드 드라이버가 따로 있는 모양이었다.
장치 관리자에서 드라이버를 이걸로 업데이트하자 드디어 네트워크 설정이 잡히고 인터넷이 되기 시작했다. 휴우... 이런 경험은 난생 처음이었다.

인터넷이 되니 이제 큰 불은 껐다. 다른 소프트웨어를 설치하기 위해 가상 CD 구동 프로그램을 설치하고, 그리고 구닥다리 IE6을 당장 IE8로 교체했다. 세상에 컴퓨터 역사상 굴지의 IT 기업들이 앞장서서 “고객님, 제발 이 버전 쓰지 말고 업그레이드 하세요!”라고 하소연을 하고, 너무 오래 살아남아서 죽지 못해 사는 좀비처럼 된 소프트웨어가 IE6 말고 또 있을까?

비주얼 C++ 6도 너무 오래 살아 있는 소프트웨어이긴 하지만, 일단 이건 불특정 다수가 쓰는 프로그램은 아니고. 그런데 요즘은 어느샌가 IE 7마저도 이제 지원 안 할 거니까 업글하라고 눈칫밥을 주는 웹사이트가 하나 둘씩 생기고 있다.

IE 7이나 8을 XP에서 첫 설치하려면 무슨 IME의 동작과 관련된 운영체제 패치부터 먼저 설치해야 한다는 걸 처음 알았다. IE는 잘 알다시피 문자 입력과 관련된 괴이한 현상이 심심찮게 존재하는데, 역시 서로 민감한 부위를 건드리긴 하는가 보다.
플래시 메모리에 묻어 있는 악성 코드도 못 걸러내는 주제에, 웹브라우저가 자동 다운로드 기능을 차단하는 건 본인은 개인적으로 굉장히 불편했고 헛다리 짚는 듯한 느낌이었다. 필요한 팝업창을 차단해서 불편한 것보다 더 불편했다.

이런 식으로 컴퓨터를 대강 세팅했다. 고향에서 맨날 밥만 얻어먹고 가는 게 아니라 이번엔 고향집 컴퓨터를 깔끔하게 정리하고, 아버지 차에다가 내 돈으로 기름도 몰래 채워 넣는 등, 이쁜 짓(?)도 좀 하고 왔다. ^^;;
허나, 내년 설날에 고향에 가 보면 또 컴퓨터에 악성 코드가 덕지덕지 묻어 있을 것 같다. -_-;;; 혹시 부모님 직장의 컴들은 이미 다 오염돼 있지는 않나 모르겠다. 여쭤 보니 운영체제도 비스타/7이 아니라 XP라던데.. 더욱 걱정된다.

글을 맺으며..;;

1. 이번 일을 계기로, 보안 패치 없는 윈도우 XP는 정말 쓰레기라는 걸 체험했으며, 컴퓨터 환경에 따라서는 랜 카드도 저렇게 잡아 줘야 한다는 걸 알게 됐다.

2. 옛날에 윈도우 9x는 설치 GUI가 아예 윈도우 3.x 엔진 기반이었다. 그리고 9x만의 특징인데, 오래 쓰다 보면 가끔 메뉴의 ▶ 모양이라든가 윈도우의 버튼들이 숫자· 문자로 바뀌는 기괴한 버그가 나타나곤 했다. 아무리 옛날에 PC 환경이 열악했다고 해도, 그런 허접하고 불안한 운영체제를 어떻게 몇 년간 썼는지 놀랍기 그지없다.

3. 악성 코드는 정말 구제역 같은 느낌이 든다. 컴퓨터 보안 쪽으로 더 알고 싶다.

4. 윈도우 비스타가 깔린 본인의 컴은 데스크톱과 노트북 모두 3~4년째 OS의 재설치 없이 악성 코드 청정 지대이며, 이상 무이다.

Posted by 사무엘

2011/10/11 19:25 2011/10/11 19:25
, ,
Response
No Trackback , 10 Comments
RSS :
http://moogi.new21.org/tc/rss/response/583

컴퓨터의 성능이 향상되고 그에 맞춰 인터넷 기술이 눈부시게 발달하면서, 예전에는 로컬 환경이 아니면 불가능하던 일이 웹에서 곧장 가능해져 왔다. 웹에서 바로 사용하더라도 ActiveX를 깔아야 해서 플랫폼 독립성이 보장되지 않았고 어차피 로컬에서 프로그램을 돌리는 것과 별 다를 바 없던 기능도, 이제는 그조차도 필요 없어진 것이다.

본인은 웹 프로그래밍은 잘 모르는 사람이지만, 오늘날 존재하는 기술 계층을 다음과 같이 크게 세 등급으로 나눈다.

Level 3: 웹 표준만으로 다 커버되는 기능을 일컫는다. 기기와 CPU를 불문하고 표준을 준수하는 모든 웹브라우저에서 쓸 수 있는 기능이므로 가장 보편적이고 깨끗하다. 비록, Level 1,2만치 빠른 성능이나 세세한 컴퓨터 조작은 기대하기 어렵다는 구조적인 한계는 있으나 그 한계는 놀라운 속도로 줄어들고 있다. 위지윅 웹 에디터조차 이 계층으로 내려왔으니까.

Level 2: 플래시 정도의 별도 컴포넌트는 써야 하는 기능이다. 플래시는 워낙 너무 유명해서 사실상 표준으로 정형화해 있긴 하다만, 이 계층의 미들웨어도 일종의 노다지 시장인지라, 잘 알다시피 마이크로소프트의 Silverlight가 팽팽히 맞서는 중이다. 동영상은 flv 덕분에 현재 Level 2가 대세로 정착하였으나, HTML5의 등장 덕분에 Level 3로 내려가는 게 점쳐지고 있다. 그래도 옛날에는 동영상조차도 Level 1이었다.
리눅스나 아이폰에서는 어른들의 사정 때문에 플래시가 제대로 지원되지 않는 등, 몇몇 잡음과 애로사항이 존재하기도 한다.

Level 1: 여전히 어떤 형태로든 운영체제 내지 특정 컴퓨터 아키텍처에 종속적인 네이티브 코드의 도움을 브라우저 외부로부터 받아야 하는 기능이다. 시스템 훅킹을 써야 하는 키보드 해킹 방지 툴이라든가, 레지스트리를 검사하는 프로그램 업데이트 관리자 등. 사용자의 컴퓨터가 이 프로그램을 설치할 수 있는 사양인지 체크하는 기능을 웹으로 구현하려고 해도 ActiveX가 필요할 것이다. 이 레벨의 입지는 앞으로 줄어들 것이고 그래야만 정상이지만, 그러나 완전히 없어지지는 않을 것이다.

웹 환경의 발전 덕분에, 단순 정보 열람 성격이 강한 프로그램이 로컬에서 제일 먼저 퇴출되었고 웹 형태의 프로그램으로 다 탈바꿈했다. 대표적인 예가 사전. 오늘날은 아래아한글 번들의 한컴사전만이 로컬에서 겨우 명맥을 유지하고 있을 뿐이다. (난 지금도 아주 잘 쓰고 있는데. -_-) 이거 전신이 과거 도스용 아래아한글의 덧실행 프로그램이었으니, 참 격세지감이다.
아울러 HTML5로는, 이젠 어지간한 프레젠테이션도 심지어 플래시조차 동원하지 않고 Level 3 계층만으로 다 가능하다고 하더라.

인터넷 지도는 그런 식의 혜택을 가장 많이 본 분야가 아닌가 싶다.
본인은 중/고등학교 시절에 아래아한글 97 CD에 번들로 내장되어 있던 MFC 기반 허접 지도 프로그램을 구경하였으며, 2001년경엔 ActiveX 기반의 한미르 지도를 인터넷에서 처음으로 접했다. 그리고 2003년 말에 콩나물을 처음으로 접했다(현재는 다음 지도에 합병).

그랬는데 인터넷 지도 기술이 이 정도로 기가 막히게 발달하게 될 줄은 정말 예상하지 못했다.
콩나물도 처음에는 ActiveX가 필요했다. 하지만 얼마 되지 않아 그런 건 없어졌고..

이제는 단순 지도 그림 열람은 플래시조차 없어도 되는 L3이 되었다. 지도도 모자라서 전국의 항공 사진까지 제공된다. 다음 지도는 한술 더 떠서 로드뷰라는 엽기적인 기능까지 제공하는데, 그런 기능은 한 등급 올라가서 플래시를 사용하는 L2 계층에서 구현되어 있다.
(참고로 옛날에 철도청 홈페이지에는 새마을부터 통일호까지 열차 내부를 딱 그런 시점으로 열람하는 기능을 제공했는데, 그건 아마 자바 애플릿 아니면 ActiveX 기반 구현이었다.)

한편, 구글 지도는 역시 미국에서 만든 서비스답게 도로의 이름이 우선적으로 잘 나와 있는 게 무척 인상적이다. 다음이나 네이버 같은 국내 지도는 도로 이름보다는 교차로의 이름의 기재에 더 충실한데, 이는 서로 vertex냐 edge냐 하는 차이 같다.

구글 지도가 제공하는 진짜 안드로메다급의 충격적인 기능은 잘 알다시피 Google Earth 되시겠다. 물론, 처음부터 구글이 만든 건 아니고 다른 회사 제품을 인수한 것이긴 하다만, 사람이 거주하는 세계 거의 전역의 위성 사진을 진짜 지구본 뱅그르르 돌리는 느낌으로 열람할 수 있다. 가히 신의 눈 수준. 말세에 인간이 정말 이런 기술까지 경험하는 게 경악스럽다.

이미 아시는 분도 있지만, 구글 지도의 위성 사진은 국내 지도가 보안상 표기하지 않고 있는 청와대, 군용 시설, 발전소 등도 남김없이 까발린다. 산으로 뒤덮여 있는 녹사평 역 주변을 구글 지도로 들여다보다가 까무러칠 뻔 했다. (담장 너머로 펼쳐진 미군 부대는 완전 소도시 수준이었다.. 그것도 서울 한복판에서!)

플래시 버전의 Google Earth도 있긴 하지만, 어쨌든 구글 지도에서 이 earth 기능을 웹에서 정식으로 사용하려면 별도의 클라이언트 프로그램을 설치해야 한다. 즉, L1 등급. 그 정도로 복잡하고 방대한 기능은 아직 L3이나 L2만으로는 감당이 안 될 법도 하다.

인터넷 지도를 보니까 기술의 발전이 놀라운 한편으로 웹 프로그래밍의 기술 등급이 떠올라서 글을 끄적여 봤다.
로드뷰까지 등장한 마당에 전국 철길에 대한 레일로드뷰도 있어야 한다고 주장해 보지만, 철도는 보안 시설이다 보니 안 될 거야 아마.. ㄲㄲㄲㄲㄲ

Posted by 사무엘

2011/09/07 19:17 2011/09/07 19:17
, ,
Response
No Trackback , 2 Comments
RSS :
http://moogi.new21.org/tc/rss/response/566

« Previous : 1 : ... 5 : 6 : 7 : 8 : 9 : 10 : 11 : 12 : 13 : 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:
2635264
Today:
2062
Yesterday:
1754