한글 낱자 입력 컨트롤

<날개셋> 한글 입력기는 한글 입력 설정을 전문적으로 다루는 프로그램이다 보니, 여타 프로그램에서는 찾을 수 없는 독특한 UI를 갖추고 있다.

그 중 대표적인 예는 한글 낱자만 하나 입력 받는 컨트롤 윈도우이다.
제어판에서 입력 항목 설정으로 들어간 후, "낱자 처리"에서 어렵지 않게 구경할 수 있다. 바로 이렇게 생긴 놈이다.

사용자 삽입 이미지

<날개셋> 1.x 시절에는 그런 게 없었고, 그냥 글자 입력+콤보가 결합된 일반 표준 컨트롤을 썼다.
어차피 옛한글도 지원 안 되고 고를 수 있는 게 초성 ㄱ부터 ㅎ까지 19개, 중성 21개, 종성 27개가 전부였으므로 이렇게만 UI를 만들어도 아무 문제될 게 없었다.

사용자 삽입 이미지

그러던 게 <날개셋> 2.x 시절에는 상황이 약간 달라졌다.
옛한글이 지원되기 시작했기 때문에, 운영체제가 시스템 차원에서 표시할 수 없는 한글 낱자도 그려야 할 필요가 생겼다. 그래서 owner-draw(항목 내용을 응용 프로그램이 직접 그리는) 콤보박스로 UI가 바뀌었다.

사용자 삽입 이미지

그러나 그 대신 원하는 낱자를 한글 글자판으로 바로 입력하는 기능은 사라졌기 때문에, 설정을 바꾸기 위해 매번 콤보박스를 열고 스크롤을 해서 낱자를 클릭해야 하게 되어 번거로워졌다.
자음이 2~30개가 채 안 넘던 게 옛한글 포함 134개로 폭증했으니 스크롤 양도 증가했을 것이고, 가상 낱자까지 포함해 256개나 되는 항목이 한 줄에 겨우 한 개씩만 표시되는 것도 매우 불편한 점이었다.

지금과 같은 형태의 독자적인 낱자 입력 컨트롤은 <날개셋> 3.0과 함께 첫 도입되었다.
2.x 시절의 불편도 해소해야 하거니와 3.0부터는 가상 낱자의 공간이 8비트 크기인 255를 넘어 아예 16비트 크기로 확장되었기 때문에, 예전과 같은 UI 자체를 전혀 사용할 수 없게 되었기 때문이다. 콤보박스에다 아이템을 65500개 추가하리?

낱자 입력 컨트롤은 에디트 컨트롤과 콤보박스 컨트롤을 혼합한 형태로 만들어졌으며 한글 낱자 하나만 입력하는 데 생각할 수 있는 최대한의 편의를 보장한다. 마치 그래픽 편집 프로그램이 자신만의 전용 색깔 선택 컨트롤을 구현해 놓은 경우가 많듯, 한글 입력기는 응당 자신만의 한글 낱자 선택 컨트롤을 갖춘 셈이다. 아래의 설명을 잘 읽어보기 바란다.

먼저, 이 컨트롤은 <날개셋> 한글 입력기의 입력 커널을 그대로 공유한다.
<날개셋> 편집기에서 글자판을 전환한 것이 이 낱자 입력 컨트롤에서도 그대로 적용된다. 그래서 지금 세벌식 최종 자판을 쓰고 있다가 초성 입력란에서 ㄱ~ㅎ 중 하나를 누르면 그 낱자가 바로 입력된다.

한글만 입력 가능한가? 그렇지 않다. 숫자를 입력하면 해당 낱자 번호에 해당하는 낱자가 바로 입력되며, 이때 숫자는 세벌식 자판의 숫자 패드라든가 numlock 키패드 숫자를 모두 인식한다. 쉽게 말해 낱자 입력 컨트롤은 한글과 숫자를 이중으로 입력받는 체계를 갖춘 셈이다. 숫자로는 물리적인 한글 낱자로 대응하지 않는 가상의 낱자를 입력할 수 있다.
숫자를 입력하고 있을 때는 오른쪽의 숫자가 빨간색이 되어 모드가 바뀌었음을 알려 준다.

여기에 덧붙여 지금이 한글이 아닌 영문 입력 모드인 경우, 그 영문 이니셜로 시작하는 낱자로 바로 이동이 된다. 즉, G를 눌러서 ㄱ, ㄲ 등을, N을 눌러서 ㄴ을 선택할 수 있고 I를 눌러서 ㅣ로 바로 갈 수도 있다.

그리고 화살표 키를 쓸 수 있다. 상하 화살표를 누르면 코드 번호가 1씩 증가하거나 감소하고, 좌우 화살표를 누르면 잡다한 옛한글들을 건너뛰고 ㄱㄴㄷㄹ 순으로 빠르게 이동이 가능하다.

어디 그 뿐이랴? 지금 입력 중인 낱자를 복사하거나 붙여넣을 수도 있다. Ctrl+C, X, V 단축키가 있으며 심지어 우클릭 메뉴도 구비되어 있다. 숫자를 복사하거나 한글 낱자를 하나 복사해서 붙여넣으면 그 낱자가 바로 입력된다.

이 컨트롤을 마우스로 클릭하거나, 포커스가 있는 상태에서 F4를 누르면 콤보박스가 나타난다. 이것은 운영체제의 콤보박스와 동작 방식이 같다. 그러면 선택 가능한 모든 한글 낱자가 문자표 형태로 한 화면에 쭉 나타나며(스크롤 같은 것 없음), 원하는 낱자를 마우스로 클릭하면 된다. <날개셋> 한글 입력기 5.0은 지원하는 한글 낱자 개수가 더욱 늘어나 있다. 한글 낱자들은 색깔이 제각각 다른데, 그 의미는 다음과 같다.

- 검정: 현대 한글 (초성 19, 중성 21, 종성 27)
- 파랑: KS 완성형 코드에 낱자 형태로 등록되어 있는 기초 옛한글로,
- 분홍: 유니코드 1.1과 아래아한글 2.0이 전통적으로 지원해 온 옛한글 (U+11xx대)
- 초록: 한동안 한양 PUA에만 존재했고 유니코드 5.2와 <날개셋> 5.x에서 표준으로 정식 추가된 옛한글
- 회색: 초성이나 종성 중 한 곳에만 존재하는 자음을, <날개셋>만이 내부 편의를 위해 다른 쪽에도 비표준 방식으로 구현한 것

한글 낱자를 마우스 포인터로 가리키고 있으면 해당 자모의 유니코드 이름과, 영문 변수명이 풍선 도움말로 뜨기 때문에 외국인에게도 도움이 될 것이다. F3을 누르면 사전 순이 아닌 등급 순으로 낱자들이 정렬된다. 즉, 검은색 현대 한글이 ㄱ부터 ㅎ까지 뜬 후, 그 뒤 옛한글이 뒤따른다는 뜻.

윈도우 운영체제가 제공하는 콤보박스의 약점 중 하나는, 현재 선택된 아이템에서 인접한 아이템으로 한 번 클릭만으로 손쉽게 이동하는 게 없다는 것이다. 그런 약점을 보완하기 위해 슬라이더라든가 up-down 컨트롤을 옆에 덧붙이는 경우도 있다. 그러나 한글 낱자를 선택하는 건 무슨 연속된 영역을 선택하는 게이지도 아니고, 무슨 글꼴 선택 콤보박스처럼 이것저것 살펴봐야 하는 부류도 아니기 때문에 그런 UI는 넣지 않았다.

이런 점에서 <날개셋> 한글 입력기의 낱자 입력 컨트롤은 <날개셋> 한글 입력기만의 고유한 UI로 불리기에 손색이 없다. 걸출한 고유 UI로는 글쇠배열 편집기도 있는데, 이 UI 역시 써 본 분들은 알겠지만 <날개셋> 입력 커널을 공유하기 때문에 내가 당장 쓰는 글쇠배열로 다른 글쇠배열을 손쉽게 만들 수 있다. 아울러, 낱자 입력 컨트롤의 콤보박스 부분은, 문자표에서 볼 수 있는 문자표 컨트롤의 코드를 공유한다.

Posted by 사무엘

2010/08/21 15:33 2010/08/21 15:33
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/353

※ Fabrice Bellard (프랑스) 1972년생
http://bellard.org/
홈페이지를 보면, 주인장은 수학과 전산학, 전자 공학의 완전 덕후임을 알 수 있다.
파이 계산, 컴파일러, 게다가 IOCCC(국제 난잡한 C 코드 경연대회) 입상 경력.
관심 분야가 이쪽과 상당히 비슷한, 본인의 모 지인이 떠오른다. (누굴까? ㅋㅋㅋ)
이 사람은 1990년대 도스용 실행 파일 압축 프로그램인 lzexe의 개발자이기도 하다.
겨우 고등학생 나이 때 8086 어셈블러로 직접 짰다고 한다. 흠좀무...;;;;;;
그 당시, V3로 바이러스 검사를 해 보면, 압축된 실행 파일은 검사가 되지 않고 압축부터 풀어야 한다는 경고문이 떴다. lzexe와 더불어 pklite도 실행 파일 압축 프로그램이었다.

※ David Fotland (미국) 1957년생
http://www.smart-games.com/
The Many Faces of Go라는 바둑 게임의 개발자이며, 회사까지 차려서 20년 전이나 지금이나 바둑 AI를 열심히 밀고 있는 게임 인공지능 전문가이다. (도스, 윈도우, 모바일 기기) 그 프로그램을 혼자서 다 만들었다니.. 대단하다.
생각보다 나이가 지긋한 분이다. 캘리포니아 주 산호세에 거주 중.

※ Jean-loup Gailly (프랑스)
http://gailly.net/
gzip의 개발자이며, 데이터 압축 분야의 세계적인 권위자로 유명하다. 아래아한글도 2.1 시절부터 이 사람이 개발한 알고리즘을 라이선스하여 hwp 파일 내부 압축을 구현하고 있다. 현재는 스위스 취리히에서 살고 있으며, 구글에 입사했다. 나이가 좀 있어 보이는 분인데 정확한 생년은 모르겠다.
이 사람도 바둑 매니아이다. 개인 홈페이지를 보면 바로 위의 the Many Faces of Go 프로그램에 대해서도 응당 논평을 해 놓았다. AI가 세계 최강급은 아니지만 초보자를 위한 인터페이스가 무척 잘 돼 있다나?

※ Ken Silverman (미국) 1975년생
http://advsys.net/ken/
듀크 뉴켐 3D의 기술 기반인 빌드(Build라는 단어 자체가 고유명사) 엔진을 개발한 게임 프로그래머.
뼛속까지 프로그래머 근성이 철철 흐르는 한편으로 과학, 스포츠, 음악 등등 온갖 분야에 해박한 엄친아라는 게 느껴진다. 빌드 엔진 역시 학창 시절의 작품이다.
지금까지도 딱히 정식으로 소속된 직장이 없이, 프리랜서 프로그래머로만 일하는 모양이다.

※ Shawn Hargreaves (영· 미 이중 국적) 1975년생
http://www.talula.demon.co.uk/
Ken과 동갑이고 비슷한 업종에 종사 중인 게임 개발자이다.
도스 시절, 32비트 C/C++ 컴파일러로 왓콤과 맞장을 떴던 GNU 계열의 DJGPP를 기억하시는가? DJGPP용으로 소스까지 공개이던 걸출한 게임 그래픽 라이브러리 알레그로를 만든 사람이 이 사람이다.
음악에 특별히 조예가 아주 깊은 매니아이다. 지금은 쟝 아저씨의 구글 입사와 비슷한 시기에 마이크로소프트에 입사해서 XNA 기반 게임 개발에 푹~ 잠겨 있는 듯.

말이 나왔으니 또 덧붙이자면.
본인은 중· 고등학교 시절에 스크래블 게임을 컴퓨터용으로 개발했다.
국내에 그런 프로그램이 개발된 사례가 없었기 때문에 응당 외국의 동급 프로그램들을 여럿 구해다가 벤치마킹을 했는데.. 알고 보니 그런 게임의 개발자 중에도 졸라 프로그래밍 고수가 많았다.

※ Jim Homan (1950년대생)
미국 출신. CrossWise라는 걸출한 게임을 혼자 만든 사람으로, 컴퓨터 AI가 굉장히 뛰어나고 프로그램 UI도 매우 프로페셔널하게 잘 만들어졌다. 윈도우 3.1용으로는 보기 드물게 비주얼 C++ 1.x + MFC로 개발되었다.
이 사람은 옛날에는 자기 회사를 차려 사업을 했기 때문에 회사 홈페이지 아래에 얹힌 개인 홈페이지에 개인 프로필도 나와 있었다. MIT에서 컴퓨터 과학을 전공하고 성적도 엄청 좋았고, 접해 본 플랫폼과 관심 분야 등등도 화려하기 그지없었는데, 지금은 이 사람에 대해서 알 수 있는 곳이 없다.

※ Graham Wheeler (1960년대생으로 추정)
http://www.linkedin.com/in/grahamwheeler
WordsWorth라는 게임을 만들었다. 개발자는 완전 수학 덕후로, 학부에서 수학 전공하고 대학원에서 컴퓨터 과학으로 박사와 박사 후 연구원까지 마친 브레인이다. 국적이.. 남아프리카 공화국으로, 케이프타운 대학을 나왔다.
지금은 마이크로소프트에 입사. 프로필과 블로그를 보면 역시 뼛속까지 엔지니어를 넘어 골수 컴퓨터 과학자이다.

한 줄 요약: 세상은 넓고 덕후들, 고수들은 무진장 많다.

Posted by 사무엘

2010/08/20 09:03 2010/08/20 09:03
, , , , , ,
Response
No Trackback , 5 Comments
RSS :
http://moogi.new21.org/tc/rss/response/352

날개셋 한글 입력기 5.65

4개월이 넘는 시간 동안 0.1이 조금 넘는 분량만치 버전이 올라갔습니다. 5.7까지 하기에는 좀 분량이 안 차는 것 같고.. 하지만 이제 5.5x는 확실히 졸업이죠.

고등학생 신분으로 만든 마지막 버전: 1.1 (2000년, 인터넷 미공개)
대학생 학부 신분으로 만든 마지막 버전: 3.41 (2005년)
병특 신분으로 만든 마지막 버전: 4.82 (2008년)
일반 풀타임 직장인 신분으로 만든 마지막 버전: 이번 5.65 되겠습니다. (2010년) 더구나 개발 10주년 기념작이기도 합니다. (☞ 받는 곳 )

리드미 파일을 보면 알 수 있듯이. 이번 5.65의 변화 사항은 다음과 같은 세 분야로 요약됩니다.
아주 의미심장합니다.

※ 날개셋문자의 타입으로 다중 문자와 다중 한글 자모 추가

다중 문자를 쓰면, 유니코드 UTF16 형태로 표현했을 때 최대 6바이트짜리 문자열을 본문에 한꺼번에 집어넣을 수 있습니다.
그래서 '날개셋 고급 입력기'의 사용자 정의 조합 같은 걸 쓰지 않고도 '000' 같은 문자열 정도는 글쇠에 바로 배당할 수 있습니다.
또한 조합용이 아닌 완성된 한글 문자로도 예전에는 현대 한글 하나만 배당 가능했지만 이제는 각 자모가 한 글자씩을 차지하는 옛한글도 배당할 수 있으며, 리가처가 별도로 붙은 복잡한 라틴 문자도 글쇠에 배당할 수 있습니다.

사용자 삽입 이미지

그럼 다중 한글 자모는 무엇일까요?
<날개셋> 한글 입력기는 원래 다중 한글 자모를 지원합니다. ㄱ+ㅏ를 한꺼번에 배당해서 '간', '감', '강' 같은 글자를 세 타가 아닌 두 타만에 입력하게 할 수 있지요.
그런데 그건 같은 글자 안에서만 지원됩니다. 이번 버전에서는 종/초중, 중종/초 같은 글자 경계를 넘어서는 다중 한글 자모를 지원합니다.

그래서 '가'를 입력 도중에 종성과 다음 글자 초성을 동시에 입력해서 '강ㅇ' 같은 글자를 바로 만들 수도 있습니다. (ㅇ은 조합 중인 상태) 가상 낱자와 응용하면 '갇' → '가ㅌ'를 만들 수도 있게 됩니다. 도깨비불 현상을 모음이 아니라 자음으로 만들어 내는 것이죠.
이런 기능이 보편적으로 쓰일 일은 많지 않겠지만 한글 입력기의 기능의 완전성 차원에서 꽤 오래 전부터 계획했던 기능인데 이걸 드디어 구현했습니다. ^^

※ 제어판 UI가 굉장히 많이 개선되었습니다

낱자 처리나 최종 변환 테이블처럼 각종 데이터의 목록이 있는 곳에서 아무 항목도 선택하지 않고 '삭제'를 누르면 해당 데이터를 한꺼번에 지울 수 있게 했습니다. 물론 정말 모두 지울 거냐는 확인 질문도 뜹니다.

또한 중복값을 추가하면 무조건 에러만 나는 게 아니라 값의 대체도 가능하게 했습니다. 가령, ㄱ+ㄱ→ㄲ이라는 규칙이 있는데 ㄱ+ㄱ→ㄴ을 또 추가하면 무조건 에러가 나고 퇴짜만 맞는 게 아니라, ㄲ을 ㄴ으로 고칠 거냐는 질문이 나오게 됐고요.

리스트를 Ctrl+클릭하면 ㄱ+ㄱ→ㅋ, ㅋ+ㄱ→ㄲ, ㄲ+ㄱ→ㄱ처럼 순환식 결합 규칙이 있는 경우 이 순환을 자동으로 한꺼번에 selection으로 만드는 기능도 추가했습니다.
낱자 선택 컨트롤의 경우, F3을 누르면 낱자를 무조건 사전 순으로만 출력하는 게 아니라 코드와 등급 순으로도 정렬이 되게 했습니다. 이렇게 하면 현대 한글만 맨 앞에 우선적으로 먼저 나열되기 때문에, 옛한글을 사용하지 않고 현대 한글만으로 입력 환경을 구성할 때 매우 편리합니다. 이것도 진작에 구현됐어야 할 기능이죠.

사용자 삽입 이미지

※ 각종 버그 수정

제어판 UI가 미세하게 오동작하거나 심지어 프로그램이 죽을 수 있던 문제를 여럿 발견하여 해결했습니다.
<날개셋> 편집기는 찾기 대화상자 꺼내다가 프로그램이 random하게 죽던 문제를 드디어 완전히 해결했습니다.
윈도우 XP(비스타/7 말고) + 아래아한글 2010에서 외부 모듈을 사용하다가 프로그램을 종료하면, 프로그램이 그냥 종료되지 않고 외부 모듈에서 에러가 나던 문제도 물론 해결됐고요. 아래아한글 2010이 출시된 지가 언제인데 새 버전 공개가 좀 늦은 감이 있군요.

유용하게 사용하시기 바랍니다.
다음 버전은 5.x대의 마지막 버전.. 즉 6.0 직전 버전 컨셉으로,
내부 API를 상당수 재정비하고(breaking change 잔뜩) 프로그램의 보안과 안정성을 강화하는 쪽으로 리팩토링 할 예정입니다.
가령, 아무 생각 없이 문자열을 넘겨주던 함수에다가 버퍼의 크기도 명시해 주는 식으로.
또한, 입력 설정 데이터에 오류가 있더라도 프로그램이 뻗지 않게(fuzz testing)..;;

조금만 있으면 <날개셋> 한글 입력기 커널인 ngs3.dll이 600KB를 돌파하고,
모든 모듈의 소스 코드 총합이 6만 줄을 돌파합니다.
물론 저의 코딩 스타일을 잘 아는 분이라면, <날개셋> 한글 입력기의 실질적인 소스 코드 수는 이미 10~15만 줄일 거라고 예상하기도 합니다. ㅋㅋㅋ

Posted by 사무엘

2010/08/18 23:25 2010/08/18 23:25
Response
No Trackback , 3 Comments
RSS :
http://moogi.new21.org/tc/rss/response/351

-- 들어가는 말: 스크롤의 압박이 심한 글임을 밝힌다.

본인은 일명 2D 플랫폼 게임이라고 불리는 아케이드 장르로 PC 게임에 첫 입문한 사람이다. 여기서 플랫폼이란, 어떤 소프트웨어가 돌아가는 운영체제 내지 하드웨어 기반을 말하는 게 아니라, 말 그대로 게임 세계 내부가 주인공이 돌아다니고 점프하는 발판(platform)들로 이루어져 있다는 뜻이다. 요즘은 3D 트렌드 때문에 이런 2D 플랫폼 게임은 보기가 힘들어졌다.

그래서 본인은 롤플레잉이나 전략 시뮬 같은 다른 장르의 게임들을 거의 하지 않았다. 삼국지나 대항해시대, 프린세스 메이커 같은 것들.
그런 여타 장르 게임 중에서는 스타만... 얘는 워낙 너무 히트 치고 유명했으니까 예외적으로 했을 뿐, 전략 시뮬/RPG 전문인 블리자드의 다른 명작 게임은 접하지 않았다. 뿌리가 거기에 있는 요즘 온라인 MMORPG도 본인은 흥미가 안 가서 안 하고 지낸다.

컴퓨터 학원에서 GWBASIC을 배우던 시절, 수업을 마치고 모노크롬 모니터로 게임을 즐겼다. 게임은 2D 플로피디스크에 담겨 있었고, 그때는 실행 파일이라는 개념도 몰라서 '암호'(?)라고 불렀다. 그 반면, 모노크롬 CGA/허큘리스로 하던 게임이 286 AT VGA 환경에서 실행되니까 완전히 딴 작품이 되었다.
그런데 그때 학원에서 불법 복제하던 게임은 용량이 부족하다는 핑계로 EGA/VGA 그래픽 파일은 빠진 녀석이 많아서, 집의 컬러 모니터 컴퓨터에서도 겨우 4색짜리 CGA 그래픽으로 만족해야 하는 경우도 많았다.

다음은 그때 즐겼던 게임들을 특성별로 조목조목 분석한 것이다. 그때는 뭔지도 모르고 그냥 게임을 했는데, 나이가 들어서 다시 보니까 그래도 영어로 흘러나오는 게임 스토리들이 해석이 되는 건 좋다. ^^;;

※ 릭의 위험한 모험 2 (Rick Dangerous 2)

제작사: 영국의 코어 디자인(Core Design). 훗날 툼 레이더를 만들어 낸 회사이다!
스크롤 단위: 가로로는 화면(페이지) 단위, 세로로는 픽셀(줄) 단위인 독특한 체계
게임 목표: 던전에 존재하는 모든 트랩 퍼즐들을 통과하여, 던전을 살아서 빠져나갈 것. 그리고 마지막 레벨에서는 최종 보스를 죽일 것.

주인공의 무기: range attack이 가능한 총(총알 최대 6발)과 폭약 6발을 쓸 수 있음. 한 총알이 날아가고 있는 동안엔 총을 또 쓸 수 없다.
주인공이 가능한 동작: 엎드려 가기, 그리고 주먹으로 버튼을 누르는 동작이 있음. 점프는 자기 키의 3배 정도로 가능함. 사다리를 타고 오를 수 있음.
주인공의 체력: 체력이라는 게 없고 오로지 즉사만 있음. 트랩 하나에라도 잘못 걸리면...;; -_-;;
죽으면: 마지막으로 가로로 이동한 화면에서 다시 시작하며, 모든 게 원상복귀됨. (죽였던 몬스터나 바꿔 놓은 게임 지형 등이 다 reset) 목숨 한계는 6.
점수: 적을 죽이거나 점수 아이템을 먹거나 특정 지점을 통과했을 때 점수가 올라간다. 하지만 높은 점수가 게임 진행에 뭔가 이익을 주는 것은 없다.

시체: 뻥~ 점프를 하면서 화면 밖으로 튕겨나간다.
비고:: 몬스터 역시 주인공을 죽게 하는 다른 트랩(미사일, 전깃줄 등등..)에 빠지면 죽는다. 사실, 몬스터를 이렇게 죽였을 때 점수가 더 높게 올라간다.

총평: 오로지 순발력으로 트랩 피하는 퍼즐만으로 가득한 게임. 정말 어렵다. 조금이라도 타이밍 늦어서 죽으면 깜짝깜짝 놀란다. 게임이 무슨 108계단 40컴보도 아니고 자비심이 없다. 5개의 레벨 중 본인은 어렸을 때 첫 1~3개의 레벨까지는 깼는데, 레벨 4 중후반부터는 gg 쳤고, 최종 보스가 있는 레벨 5는 구경도 못 했다. 주기적으로 주인공을 노리는 트랩들의 출현 패턴을 파악해야 하는데... 쉽지가 않다. 거기에다 미묘한 컨트롤과 순발력도 따라 줘야 하고...;; 고수가 하는 플레이 동영상을 유튜브로 보니, 지금 생각해 봐도 내겐 무리이다.
장애물을 제거하려고 오른쪽으로 다이너마이트를 터뜨렸는데 그 장애물이 내가 있는 왼쪽으로 날아온다거나... 순 어거지 같은 트랩도 있다. 순전히 주인공 죽이는 게 목적인 데모노포비아-_- 같은 게임도 아니고 말이야..;; 이런 건 유저 인터페이스 면에서는 바람직하지 못하다.

※ 위험한 데이브 (Dangerous Dave)

제작자: 훗날 ID 소프트웨어로 간 존 로메로(John Romero)
스크롤 단위: 가로로는 화면(페이지) 단위, 세로 스크롤이 없음. 밑으로 떨어지면 다시 화면 위로 닿는 특이한 설정
게임 목표: 던전에 존재하는 트로피를 반드시 먹은 후, 각종 트랩을 피해서 던전을 빠져나갈 것. 최종 보스 같은 건 없음.

주인공의 무기: 총이 존재하는 레벨에서 총을 먹으면 총을 쏠 수 있으나, 한 총알이 날아가고 있는 동안에는 총을 또 쏠 수 없다.
주인공이 가능한 동작: 점프만 있으며, 자기 키의 3배 정도로 가능함. 제트팩을 쓰면, 공중에서 떨어지지 않고 원하는 곳으로 자유자재로 이동 가능.
주인공의 체력: 역시 체력이라는 게 없고 즉사만 있음. 불이나 물 등에 빠지면 죽고 적의 총알에 맞아도 죽는다. 하지만 몬스터와 부딪치면, 여느 게임과는 달리 나만 죽는 게 아니라 그놈도 같이 죽는 '자폭'이라는 시스템이 있다.
죽으면: 해당 레벨의 시작 위치에서 다시 시작하지만, 예전의 게임 상태는 그대로 유지됨. 기본 목숨 한계는 3.
점수: 보석을 먹거나 몬스터를 죽이면 올라간다. 점수가 2만 점의 배수가 될 때마다 목숨이 하나씩 생긴다.

시체: 펑~ 폭발한다.

총평: 10개의 레벨이 존재하는데 레벨이 올라갈수록 점진적으로 굉장히 어려워진다. 게임 엔진 자체는 너무나 단순하기 그지없고 던전 모습도 허접하다. (스프라이트도 검은색 배경에다가 무려 xor 연산으로 그리는지, 두 스프라이트가 겹치면 겹치는 부분의 색깔이 변한다!) 하지만 그 작은 규모 치고는 적당하게 어렵고 퍼즐을 풀어 나가는 재미는 있다. 몬스터 외에 딱히 움직이는 트랩은 없다는 게 특징.
총을 먹어야 몬스터를 죽일 수 있는데, 날아다니는 몬스터를 피해서 먼저 총을 먹으러 가야 하는 게 어려웠다.

※ 보글보글 (Bubble Bobble) -- 제목이 좀 교묘하게 의역됨

제작사: 일본 Taito
스크롤 단위: 한 레벨은 오로지 한 화면에서만 이뤄지고 게임 도중 스크롤이란 게 없다! 다음 레벨로 넘어가는 게 세로로 방 단위 스크롤임.
게임 목표: 각 레벨에 존재하는 몬스터들을 모두 죽일 것. 최종 보스 있음.

주인공의 무기: 거품을 쏜다. 거품으로 적을 가둬서 터뜨리면 된다. 다만, 일부 레벨에서는 번갯불이나 불십자가 같은 더 강력한 무기 아이템이 주어지는 경우도 있다.
주인공이 가능한 동작: 점프만 있으며, 자기 키의 3배 정도로 가능함.
주인공의 체력: 즉사만 있음. 몬스터와 몸이 닿거나 몬스터의 발사체에 맞으면 무조건 죽는다.
죽으면: 해당 레벨의 시작 위치에서 다시 시작하며, 게임 상태는 그대로 유지됨. 기본 목숨 한계는 4인데, Credits라는 개념이 있어서 Credit를 사용하면 해당 레벨의 초기 상태에서부터 게임이 다시 시작된다.
점수: 몬스터가 죽으면서 남긴 각종 과일들을 먹었을 때, 그리고 심지어 거품을 터뜨려도 올라간다. 점수가 5만 점의 배수가 될 때마다 목숨이 하나씩 생긴다.

시체: 몬스터가 죽으면 화면을 날아다니다가 각종 과일이나 아이템으로 변하고, 주인공이 죽으면 데굴데굴 구르다가 사라진다.
비고:: 2인용이 가능하다.

총평: 뭔가 랜덤한 요소가 엄청 많은 게임. 캐릭터가 아기자기하고 예쁜 캐주얼 컨셉이긴 한데, 역시 어렵다. ㅠ.ㅠ 레벨마다 시간 제한이 있어서 게이머를 압박하며, 특히 몇몇 레벨은 깨는 방법을 모르면 얄짤없이 다 죽을 수밖에 없다. 레벨이 총 100개 있는 게임에서 한 40 이후부터는 가 본 기억이 없다.

※ 페르시아의 왕자 (Prince of Persia) -- 아주 무난한 제목

제작자: 조던 메크너(Jordan Mechner)
스크롤 단위: 가로와 세로 모두 화면 단위로만
게임 목표: 던전에 존재하는 트랩 퍼즐들을 통과하여, 던전을 살아서 빠져나갈 것. 그러기 위해서는 출구 문을 열어야 하는데 이 과정이 힘들다. 마지막 레벨에서는 최종 보스를 죽일 것.

주인공의 무기: 검이 있다. melee 공격만 가능한 셈.
주인공이 가능한 동작: 점프는 진짜 실제 사람이 가능한 높이로만-_- 가능하다. 엎드리기, 매달리기 등 다양한 동작이 있다.
주인공의 체력: 2층 높이에서 떨어지거나 칼싸움 중에 몬스터의 공격을 받았을 때처럼 hit point가 1개 단위로 감소하는 경우가 있다. 그러나 고층에서 추락, 가시에 찔림, 칼에 허리가 잘림 등 대부분의 트랩들에 걸리면 즉사한다. (추락사라는 개념이 있는 게임 자체도 흔치 않음)
죽으면: 해당 레벨의 처음부터 다시 시작하고 모든 게임 상태가 원상복귀된다. 목숨 제한은 없지만, 아주 독특하게도 시간 제한이 있다.
점수: 점수라는 개념이 전혀 없음.

시체: 죽은 시체는 사라지지 않고 바닥에 그냥 널부러져 있다. 시체가 이렇게 끝까지 남아있는 게임은 당시 드문 편이었다. 죽은 모습도 꽤 끔찍한 편.
비고:: 몬스터 역시 절벽에서 떨어지거나 가시에 찔리거나 허리가 잘리면 주인공과 똑같이 죽는다.

총평: 허리 자르는 칼(chopper)가 내게 상당한 트라우마를 선사했던 게임이다. 얘도 상당히 어려운 퍼즐 난이도 때문에 엔딩 보기를 포기한 사람이 많았으나, 본인은 이건 모든 레벨을 깨고 엔딩 보는 데 성공했다. 단, 내 혼자 연구해서 깬 건 아니고, 남이 하는 걸 보고서 막힌 부분을 뚫는 방법을 발견한 뒤부터이다.
조던 메크너는 드라마/영화 감독 출신답게, 게임도 뭔가 한 편의 드라마처럼 웅장한 스케일로 시작하게 만들었다.

※ 고인돌 (Prehistorik)

제작사: 프랑스의 Titus
스크롤 단위: 가로로는 화면 단위. 세로 스크롤은 아주 예외적으로 위층으로 올라가거나(레벨 5) 아래의 물로 빠질(레벨 1) 때 화면 단위로 일어나는 경우가 아니면 일반적으로 없음
게임 목표: 던전에 존재하는 각종 몬스터들을 잡아먹어서 Food를 채운 후, 출구로 빠져나갈 것. 던전 차원에서 그렇게 어려운 퍼즐은 없다. 그리고 던전이 끝나면 보스를 해치우는 레벨이 나옴.

주인공의 무기: 방망이나 돌도끼만 존재하며, 역시 melee 공격만 가능함.
주인공이 가능한 동작: 점프는 실제 사람이 가능한 높이로만 가능하지만 스프링 아이템을 먹으면 키의 2~3배 정도 높이로 점프가 가능해진다. 사다리가 있음. 다른 게임과는 달리, 사다리를 잡고 있는 도중에 뛰어내리거나 떨어지는 게 가능하지 않다.
주인공의 체력: 체력 시스템이 있고 3~5단계 수준은 아닌 다단계의 hit point가 있다. 물에 빠지거나 절벽으로 곤두박질치면 즉사이긴 하지만, 그렇게 ring out되는 것 말고 던전 내부에 주인공을 즉사시키는 트랩은.. 수면 위를 오르내리는 섬 말고는 거의 존재하지 않는다. (심리적으로 안전함을 느낌) 그런데, 게임 중에 hit point는 오로지 데미지를 입어서 감소만 할 뿐, 보충하는 방법이 전혀 존재하지 않는다.
죽으면: 딱히 way point 같은 것도 없고 죽기 직전의 위치에서 다시 시작하는 굉장히 대인배스러운 체계. 당연히 게임은 지금 상태에서 그대로 계속됨. 목숨 제한이 있지만 목숨을 늘려 주는 아이템도 있고, 게임을 진행하다 보면 보너스로 목숨도 많이 주는 편이다.
점수: 음식을 먹으면 점수가 올라가고, 클리어를 빨리 해도 보너스가 많이 주어진다.

시체: 몬스터는 일단 죽지 않는다. 죽이는 게 아니라 기절시키고 나서 잡아먹는 개념이기 때문에, 끔찍한 시체 같은 게 없다. 주인공이 죽으면 해골이 되어 하늘나라로 빠이빠이~~

총평: 다른 게임들에 비해서는 비교적 쉽게 엔딩을 볼 수 있었다. 목숨도 10여 마리가 넘게 남기고 말이다. 공룡이 살던 시대를 묘사한 배경 그래픽이 무척 아름다웠다. 특히 빙하(레벨 3)와 숲(레벨 5). 프로그램의 버그 때문에 계단 오르다가 물에 쑥 빠져 버리면 좀 짜증.
레벨 클리어 후 보너스 점수 정산을 하는 화면은 왜 그래픽이 아닌 텍스트 모드에서 뜨는지가 늘 궁금했다. ^^

※ 블루스 형제

제작사: 역시 Titus
스크롤 단위: 가로와 세로 모두 픽셀 단위로 자유자재
게임 목표: 각 레벨별로 얻어야 하는 특수한 악기 아이템을 먹은 후, 던전을 통과하여 출구로 빠져나가는 깃발을 먹을 것. 보스 같은 개념은 없음

주인공의 무기: 상자를 들어 집어던지는 게 가능하다. melee가 없고 range 공격만 있는 셈.
주인공이 가능한 동작: 엎드릴 수 있고, 점프 역시 키의 3배 정도 높이로 가능하다. 하지만 상자를 들고 있으면 점프 높이가 급감하며, 엎드릴 수도 없게 된다. 일단 들었던 상자는 다시 놓을 수 없고 몬스터를 향해 던져서 없애 버리는 것만 가능한 것도 아쉬운 점. 그리고 물에서 헤엄치는 게 있다. 산소 제한은 없으며, 물에서 무제한 체류 가능.
주인공의 체력: 3~5칸 정도 있다. 이 게임은 모든 트랩은 빠져나가는 게 가능하며, 즉사라는 게 사실상 존재하지 않는다.
죽으면: 레벨별로 way point가 존재하는데, 주인공이 죽기 전에 가장 최근에 거쳤던 way point에서부터 다시 시작한다. 예전 게임 상태는 보존되어 있다. 목숨 제한이 존재하며, 목숨은 레코드 아이템을 100개 채우면 하나 늘어난다.
점수: 점수라는 게 없었지 싶다. 있더라도 수집한 레코드 개수가 훨씬 더 중요했던 걸로 기억.

시체: 몬스터는 죽으면 마치 <릭의 위험한 모험>에서처럼 점프를 하면서 튕겨나간다. 주인공은 죽으면 블루스를 춘다... 음??
비고:: 2인용이 가능하다.

총평: 고인돌보다는 확실히 어렵다. 하지만 본인의 연구와 플레이만으로 스스로 5개+1개 최종 레벨을 모두 격파하고 엔딩을 봤다. 아주 넓은 던전이 인상적이었다.

※ 폭스

제작사: 역시 Titus
스크롤 단위: 가로와 세로 모두 픽셀 단위로 자유자재. 사실, 블루스 형제에서 기술적으로 한 단계 더 발전한 게임이라 할 수 있다.
게임 목표: 던전에 존재하는 트랩 퍼즐들을 통과하여, 던전을 살아서 빠져나갈 것. 단, 보스를 죽여야 하는 레벨도 있다.

주인공의 무기: 블루스 형제와 마찬가지로 자체 무장은 존재하지 않고, 던전 내부에 있는 각종 도구를 던져서 적을 죽일 수 있다. 하지만 도구 자체는 블루스 형제보다 훨씬 더 다양한 게 존재한다.
주인공이 가능한 동작: 역시 엎드릴 수 있고 점프는 키의 3배 정도 높이로 가능하다. 도구를 들고 있어도 점프 높이는 변함없으며, 들었던 도구를 다시 놓아 떨어뜨릴 수 있다. 그런데, 이색적으로 점프할 때 점프 강도를 조절 가능하다.
주인공의 체력: 고인돌처럼 다단계로 존재한다. 그런데 특이한 것은, shield 모드가 없다! 블루스 형제나 고인돌은 주인공이 상처를 입으면, 어서 그 나쁜 환경으로부터 빠져나가라고 주인공에게 추가 데미지를 유보하는 shield 모드를 만들어 준다. 그러나 폭스는 그렇지 않기 때문에 여러 몬스터가 있는 곳에서 부닥치다가 순식간에 hit point를 다 잃고 죽을 수도 있다. 이에 덧붙여, 주인공을 즉사시키는 트랩도 많이 존재한다.
죽으면: way point를 갱신해 주는 아이템이 있다. 주인공은 게임을 진행하면서 그런 아이템을 먹어야 하며, 주인공이 죽으면 마지막으로 그 아이템을 먹은 곳에서 게임이 다시 시작된다. 직전 상태는 보존됨. Titus의 게임들은 다 직전 상태를 보존해 준다.
점수: 존재하지 않음

시체: 주인공이나 몬스터나 다 죽으면 수직 점프를 한 후 화면 아래로 떨어져 사라진다.
비고:: hit point를 회복해 주는 아이템이 있는데, 체력이 full로 꽉 차서 더 회복할 게 없는 상태에서 그걸 먹으면 보너스 점수가 올라간다. 그리고 이 보너스 점수가 일정 한도에 다다르면 목숨을 하나 더 추가해 준다. 폭스 이외의 게임에서는 본 적이 없는 재미있는 시스템이다.

총평: 10개가 넘는 레벨이 있는 걸로 아는데, 퍼즐이 블루스 형제보다도 굉장히 어렵다. 본인은 레벨 5 정도에서 이미 GG. 위에서 언급했듯이 shield 모드가 없어서 더욱 어렵게 느껴지기도 한다.

Posted by 사무엘

2010/08/16 09:06 2010/08/16 09:06
, , , , , , ,
Response
No Trackback , 11 Comments
RSS :
http://moogi.new21.org/tc/rss/response/349

C 언어 표준 라이브러리에는 잘 알다시피 배열 데이터에 대해서 간단한 검색과 정렬 알고리즘을 구현해 놓은 함수가 존재한다.
정렬을 수행하는 qsort()가 대표적인 예이고, 이미 정렬된 배열에 대해서 이분 검색을 수행하는 bsearch()도 유용하다.

이들 검색과 정렬 함수는 비슷한 형태의 인자를 받아서 동작한다. 배열을 가리키는 포인터, 각 원소의 개수와 크기, 그리고 찾고자 하는 원소의 값, 그리고 비교 함수의 포인터이다. 비교 함수는 두 원소의 비교를 수행하여 대소 관계를 리턴값의 부호 또는 0 여부로 알려 주어야 한다. 이렇게 함으로써 int든 float든 그 어느 자료형이라도 범용적으로 검색하거나 정렬을 수행할 수 있다.

그런데 C 언어는 이분 검색뿐만 아니라 선형 검색을 하는 함수도 제공한다. 찾는 원소와 같은 값이 나올 때까지 배열을 처음부터 끝까지 단순히 뒤지기만 하는 알고리즘 말이다. 동작 방식은 단순하기 그지없지만, 이분 검색과 더불어 그냥 일관성을 위해서 선형 검색도 함수로 표준화한 듯하다. 선형 검색이 받아들이는 비교 함수는 두 값의 대소 비교를 할 필요가 없이 두 값이 단순히 같으면 0, 그렇지 않으면 nonzero만 되돌려도 된다.

그런데 본인은 C 언어가 제공하는 선형 검색 함수의 형태를 보고는 놀라지 않을 수 없었다.

1. 이분 검색이 bsearch이니 선형 검색은 응당 lsearch일 거라고 본인은 생각했다. 그런데 선형 검색 함수는 _lsearch와 _lfind로 나뉘어 있고, 어찌 된 이유인지 함수 이름 앞에 밑줄이 추가돼 있다. 이분 검색과 정렬 함수는 stdlib.h에도 선언이 되어 있는 반면, 선형 검색 함수는 거기에 없으며 반드시 생소한 search.h를 인클루드 해 줘야 한다. 왜 이런 차이가 존재하는지부터 의문이다.

2. _lsearch는 원소를 찾아서 이게 배열에 존재하지 않으면, 그 원소를 배열의 끝에다가 추가를 한다. 따라서 이 함수는 매개변수만 올바르다면, 원하는 원소가 배열에 없다고 하더라도 NULL을 리턴하지 않는다. 그 반면 _lfind는 read-only 함수로, 원하는 원소가 없으면 NULL을 되돌린다. 그러므로 정확하게 bsearch 함수의 동작 방식만 선형 검색의 형태로 원한다면 _lsearch가 아닌 _lfind를 써야 한다.

3. bsearch와는 달리, 선형 검색 함수는 배열 원소의 개수를 넘겨주는 인자가 포인터형이다. 그것도 size_t도 아닌 unsigned int의 포인터이기 때문에 64비트 환경에서도 여전히 32비트 값 전달만 가능하다는 한계마저 그대로 지닌다. ㅜ.ㅜ 왜냐하면 _lsearch의 경우, 원하는 원소가 배열에 존재하지 않아서 그 원소가 배열 뒤에 추가되었을 경우, 배열 원소 개수를 1 증가시켜 주기 위해서이다.

그러나 배열 원소 추가를 하지 않는 _lfind라면 배열 원소 개수 인자가 포인터여야 할 필요가 전혀 없고 bsearch처럼 size_t 값을 그대로 받기만 하면 된다. 왜 _lfind까지 _lsearch처럼 그렇게 포인터를 받게 해 놓았는지 모르겠다.

Posted by 사무엘

2010/08/13 09:18 2010/08/13 09:18
,
Response
No Trackback , 5 Comments
RSS :
http://moogi.new21.org/tc/rss/response/347

구미와 더불어 본인에게 21세기 이전에 기차 타고 방문한 추억이 있는 곳은 바로 수원이다. 고등학교 시절, 인텔 ISEF 참가 준비와 교육 때문에 한동안(1999년 3월~4월).. 무려 주말마다 성균관 대학교 수원 캠퍼스를 찾은 적이 있기 때문이다. 이 거사를 치르느라 그 옛날에 휴대전화까지 잠깐 구경하기도 했다.

그러고 보니 구미와 삼성 하니까 둘 다 경부선 철도가 지나고 삼성과 밀접한 관계가 있는 산업 도시라는 공통점이 있네? 뭐 그건 그냥 우연의 일치인 것 같고.

저것도 지금 생각하면 그야말로 상상도 할 수 없는 엄청나고 값진 경험인데, 내가 그때는 지리와 교통 쪽 감각이 백지나 다름없는 상태여서 당시에 대한 기록과 기억이 전혀에 가깝게 없다. ㅠ.ㅠ 새마을호나 무궁화호 같은 관념도 없어서 어떤 열차는 좀 으리으리하고 고급스러운데, 어떤 열차는 좌석도 작고 입석 승객까지 있어서 혼잡하다는 식의 인식만 있었다.
희미한 기억을 더듬어 보면, 집에 돌아갈 때 기차를 잘못 타서 삽질한 적도 있었다.

수원 역에서 성균관대 역까지는 전철로 금방이다. 출구로 나가면 곧바로 야구 연습장이 보였고, 언덕을 내려서 조금 걸어가면 성균관 대학교 이공계 대학 캠퍼스가 나왔다. 당시 지도 교수는 워낙 유명한 분이니 실명을 거론하겠다. 황 대준 교수님의 멀티미디어 연구실에 있었다. 그러면서 거기 랩에 있던 대학원생 형들과도 부대꼈고, 아마 이분들이 지내는 기숙사 내지 대학원생 아파트 구경도 했던 것 같다. 난 그로부터 10년도 더 지나서 이제야 대학원으로 고고씽이구나. ㅠ.ㅠ

그때가 본인 역시 이제 막 도스+C에서 벗어나 윈도우 API+MFC를 같이 공부하던 시절이었기 때문에, 이때의 대회 준비 경험은 본인의 실력 향상에도 큰 도움이 됐다. 단편적인 프로그래밍 지식뿐만이 아니라 영어 프레젠테이션, 대인 관계, 대학과 대학원의 분위기 같은 것들도.
내가 조금만 더 세상 보는 식견이 넓었으면 그때 마주쳤던 분들에게 훨씬 더 예쁘게-_- 보이고, 그분들에게서 더 많은 걸 배워 올 수도 있었을 텐데 그러지 못한 것은 늘 아쉬움으로 남는다.

대학 시절 한때는, 밤에 자다가 <날개셋> 한글 입력기로 ISEF에 다시 나가는 괴상한 꿈을 꾸기도 했다. 그건 아주 한국적인 소재인 데다, 고3 때 입상한 작품이기 때문에 그런 일은 현실에서는 절대 불가능한 일이다. 사실, 본인이 ISEF 첫 출전 티켓을 딴 것도, 전적으로 당시 본인보다 더 뛰어난 작품을 만든 학생은 이듬해에 대학에 가 버렸기 때문이었다.

그 당시는 아직 인지도가 부족한 관계로 ISEF 참가 경험은 IOI(국제 정보 올림피아드) 참가와는 달리 입시에서 뭔가 가산점으로 인정이 안 되었다. 그런데 그게 본인에게는 역설적으로 기회로 작용했다. ISEF에 갔다 온 후에도 아예 고3 때 과거 ISEF 작품과는 관계가 없는 작품을 하나 또 만들어서 그건 아예 대상을 받아 버렸기 때문이다. 정올 역사상 전무후무한 기록이 아닐지? (경시부였다면 불가능한 일. IOI 참가자는 이제 상급 학교에 진학하기 전까지 KOI에 또 응시할 수 없다.)

첫 참가자인 본인 이후로 ISEF 참가자 교육은 카이스트에서 이뤄지고 있는 걸로 본인은 알고 있다. 그리고 혼자만 가는 게 아니라 최하 두 팀이 가는데, 동 대회에 출전하는 ISEF 참가자들끼리는 서로 그렇게 자주 교류한다거나 친한 사이가 되지는 않는다고 들었다. (후배에게서 들은 증언) 차라리 서로 다른 기수의 대회에 참가한 선후배끼리가 친해진다나?

정보 올림피아드와 관련하여 본인이 방문한 적이 있는 대학으로는 성균관대 말고도 KOI 경시부가 당시 치러졌던 서울대, 그리고 공모부 2차 심사가 열렸던 중앙대(1997)와 숭실대(1998)가 있다. 경시부의 경우, 지방에서 온 애들은 대회 전날의 예비 소집에 참석한 후 무려 학교 근처의 여관에서 자기도 했는데...;;;

지금은 그런 행사들이 대학에서 개최되지 않고 백범 기념관이라든가 정보화 진흥원 본관에서 개최되는 걸로 안다. 기관 이름도 처음엔 정보 문화 센터(ICC)이다가 정보 문화 진흥원(KADO)을 거쳐 지금은 정보화 진흥원(NIA)으로 참 자주 바뀌었다.
옛날에는 역대 수상자를 조회하면서 공모부의 경우 작품명까지 볼 수 있었는데 그건 사생활 보호(?) 차원에서 삭제한 모양이다.

어쨌든 결론은!
본인의 인생에서 정올과 관련된 옛 추억에도 철도가 조금이나마 끼여 있다. 그걸 이제 와서 추적하려고 하니까 쉽지 않다.

Posted by 사무엘

2010/08/12 09:01 2010/08/12 09:01
, , , ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/346

경상북도 구미에는 경북 외국어 고등학교가 있다.
포항에 있는 본인의 모교인 경북 과학 고등학교도 1993년에 개교했으니 본인이 중· 고등학생 나이이던 당시에는 꽤 최근에 생긴 학교이긴 했으나, 외고는 더욱 나중에 생긴 학교였다.

경북 외고는 1995년에 설립 인가가 나고 1996년 개교로 알고 있고 있는데, 그땐 아직 기숙사나 강당 같은 건물조차 다 완공되지 않은 상태였다고 한다. (그런데 학교 홈페이지엔 연혁이 안 나와 있다. -_-)
1996년 개교이면 민족사관 고등학교와 생년이 동일하다. 1995년 중학교 <방학책>(초등학교의 탐구생활에 해당하는 책자?)의 뒷표지 광고에 민족사관 고등학교 1회 입학생 요강이 적혀 있던 걸 기억한다. 물론 살인적으로 까다로운 전형 절차와 우수한 성적, 요구 조건으로 말이다. 내신에 심층 면접에, 나중엔 체력장까지... 흠좀무.

어쨌든 본인은 경북 외고가 그 민사고와 동급으로 그렇게 역사가 짧은 파릇파릇한 학교인지는 그 당시에 잘 몰랐다. 하도 특목고, 특목고 하니까 내가 사는 경북에도 그런 외국어고가 으레 있겠지 하는 생각을 했었다.

다른 과목에 비해 영어가 상대적으로 강하고, 비록 전교 열 손가락 안의 순위까지는 아니어도 평소실력(?)만으로 나름 상위권이고...
머리는 나쁘지 않-_-은 거 같은데 그닥 노력파 성실형은 아니고 자꾸 컴퓨터로 쓸데없는 짓만 하던 본인에게, 당시 중학교 선생님들의 진로 조언은 불 보듯 뻔했다.

“지금보다 조금만 더 공부 열심히 하고 내신 튜닝-_- 해서 외고 가라”였다.
백 번 수긍한다. 내가 선생이어도 본인 같은 학생에겐 그렇게 조언했을 것이다. 뭐 나중엔 정보 올림피아드 입상 실적 덕분에 과학고로 당첨됐지만-_- 말이다.

그러던 차에 본인이 처음이자 마지막(사실상??)으로 경북 외고와 인연을 맺은 일이 있었다. 바로 1997년 가을, 본인이 중3이던 시절에 거기서 자기네 학교 홍보를 목적으로 중학생들을 대상으로 제 1회 외국어 경시대회를 개최했던 것이다. 외국어 경시대회라고 해 봤자 사실상 영어 필기시험이었다.
이 대회의 입상자는 외고에 지원할 때 가산점을 준다는 단서도 당연히 붙었다. 그래서 본인은 그 대회에 우리 중학교에서는 혼자서 참가했다. 덕분에 대회 당일 수업은 공결로 째고, 경북 외고로 고고씽.

깔끔한 붉은 벽돌 건물이 무척 인상적이었다. 그때는 이미 이런 특목고에 진학해 있는 외고 재학생들이 가히 하늘처럼 높게 보일 뿐이었다. 시험 치는 느낌이 어땠는지는 13년이나 지난 지금 기억이 날 리가 없고, 어쨌든 그때 본인은 장려상 하나 겨우 건져 왔다.

그런데 아무리 생각해도 신기한 게 있다.
그때 본인은 동행하는 인솔 교사가 없이 혼자 기차 타고 타지에 있는 학교에 찾아가서는 시험 치고 돌아왔다! 경북 외고는 구미 역에서 900m 남짓한 가까운 거리에 있기 때문에 타지에서 방문할 때는 철도가 딱이다.

하지만 지금으로부터 13년 전이면 본인은 지리 하나도 모르고, 혼자서 기차 탈 줄도 모르던 시절이었다. 어떻게 갔는지는 기억이 안 나지만, 시험 치고 나서는 확실하게 혼자였다는 게 기억난다. 담임 선생님에게 경과 보고를 공중전화로 하고, 귀가도 다시 기차 타고 스스로 해냈다. 그때 지금처럼 일기를 써 놨으면 그 당시 철도가 어땠는지 더할 수 없이 귀중한 기록이 되었을 텐데!

사실 경북 과학고도 포항 역에서 지하철 두 정거장 남짓한 가까운 거리이다. 포항에 지하철이 있다는 소리는 물론 아니지만, 뭐 1.5km 남짓한 거리니까... 본인은 그것도 까맣게 모르고서 고등학교 시절 3년간을 철도는 전혀 이용하지 않고, 더 멀고 비싼 시외버스만으로 경주와 포항을 왕래했다. 그 정도로 지리에 문외한이었는데 그때 구미 여행은 어떻게 해냈을까?

그때 이후로 본인은 구미를 다시 찾은 적이 없다. 하지만 그 경험 덕분에 ‘경북 외고는 구미 역에서 무척 가깝다’는 기억 하나는 지금까지 생생하게 남아 있다.

이제 본인이 글을 쓰는 전형적인 방식인, 관련 잡설들을 옴니버스 형태로 나열하는 걸로 글을 맺겠다.

1. 경북 과학고와 외고뿐만 아니라, 초등학교를 제외한 본인의 모교들은 전반적으로 역사가 짧은 편이었다. 계림 중학교는 1986년 개교로, 이는 포항 공대의 생년과 카이스트의 학부 개설 연도와 공교롭게도 일치한다. 다만, 본인은 이제 대학원은 역사가 무진장 긴 학교로 가게 된다. ^^;;

2. 그러고 보니 정보 올림피아드 경시 부문의 전신이던 PC 경진대회의 경북 지역 예선은 포항도, 구미도 아닌 안동에서 늘 개최되어 왔다. 안동은 경북 내륙의 중심지이지만 당시 고속도로 하나 없는 교통 불편한 곳이다 보니, 인솔 선생님이 꼬불꼬불한 국도로 차를 몰면서 대회장까지 학생들을 태워다 주었다.

3. 본인에게는 초등학교 때 같은 반을 한 적이 있고 당시 같은 영어 사교육-_- 학원에서도 각종 대회에서 본인과 1, 2등을 다투는 라이벌 사이이던 여자 동창이 있다. 예쁘고 못 하는 게 없는 모범생 엄친딸이었는데, 이 친구는 결국 경북 외고에 진학했다. 저 외국어 경시대회에 참가를 안 했을 것 같지는 않지만 그때 현장에서 걜 만나지는 못했다. (어머니께 고증을 의뢰하니, 어머니 왈, 걔도 그 대회에 응당 참가했고 역시 장려상 받았다고 한다)
본인은 뭐 과학고에 합격했으니, 중학교를 마칠 무렵 서로 축하 전화를 주고받았다. 본인의 어머니와 그 친구 어머니께서 서로 아는 사이여서 말이지..;;;

4. 하지만 과학고도 가 보니, 당시 외국어 경시대회에 참가했던 친구가 그래도 딱 한 명 있었다. 어떻게 알았냐 하면, 그때 외고에서는 모든 대회 참가자에게 학교 마크가 인쇄된 공책을 사은품으로 줬는데, 본인과 그 친구가 서로 그 공책을 갖고 있는 걸 봤기 때문이다.

5. 하긴, 내 기억이 맞다면, 본인이 중학교에 갓 들어간 시절인 1990년대 중반에 우리나라의 언어 관련 교육 제도에 좀 변화가 생겼다. 논술이 처음으로 부각되고 논술 경시대회라는 게 생긴 게 그때이다. EBS에서 중· 고등학생을 대상으로 전국에서 동시에 영어 듣기 평가를 시행해서 그 점수 20점이 중간· 기말고사의 영어 점수에 들어가기 시작한 것도 그때. 또한 나름 영어 말하기(혼자 웅변이 아니라 연극) 대회도 그때 생겼다.

세월이 흘러 어느 지식인 검색을 보니, 영어 말하기 대회 때 써먹겠다면서 개그 만화 일화 3기 3화 쇼토쿠 태자 대사를 좀 영작해 달라는 요청을 본 기억이 난다. Inside the pillow is full of tuna (베게의 속에는 참치가 가득) ㅋㅋㅋㅋㅋㅋ 이 나라의 미래는 밝다.

Posted by 사무엘

2010/08/11 08:49 2010/08/11 08:49

1.
한국어와 영어가 서로 정반대인 관념 중에 대표적인 예로는 부정문에 대한 응답 방법이 있다.

"너 숙제 안 했지?"에 대한 대답이 한국어는 "아냐, 했단 말이야."인 반면, 영어로는 "Yes, I did"로 긍정 의문에 대한 대답과 완전히 동일하기 때문이다. 한국어의 관점에서는 거 참 희한한 사고방식이 아닐 수 없다.

하지만 영어에도 무조건 상대방의 말 자체에 대한 긍정과 부정을 뜻하는 감탄사가 없지는 않은 것 같다.
Then Sarah denied, saying, I laughed not; for she was afraid. And he said, Nay; but thou didst laugh. (창 18:15) 안 웃었는데요. / 아냐, 너 아까 방금 분명히 웃었어.

킹 제임스 성경은 yes/no보다 yea/nay(예이/네이)가 훨씬 더 많이 쓰인다. 마 5:37의 "오직 너희 의사 표시는, 예, 할 것은, 예, 하고, 아니요, 할 것은, 아니요, 하라."에서도 yea/nay이다.

2.
이에 덧붙여 또 중요한 차이로 '가다'와 '오다'가 있다.

"너 빨리 이리 와 봐."에 대한 대답으로 한국어는 "지금 가는 중이야"인 반면, 영어로는 "I'm coming"이다.
영어는 남이 내게 come이라고 지시를 내렸으니, 나는 거기에 순응하여 그에게 come한다고 기계적으로 표현한다.
그러나 한국어의 '오다'는 오로지 나에게, 화자에게 상대방이 움직여 가까이 간다는 뜻이다. '오다'의 주체가 '나'가 되지는 않는다.

그래서 come이 성경 번역에서도 굉장히 어려운 요인 중 하나가 된다. 문자 그대로 죄다 '오다'라고 번역하면 우리말 어법에 어긋나게 되는 경우가 있기 때문이다. 사실 같은 영어 성경 중에서도 킹 제임스 성경은 come이라고 표현했는데 그걸 go나 enter로 바꿔 버린 경우가 적지 않다.

3.
이렇게 단어 자체에 '나'라는 객체가 수반된 비슷한 예로는 불완전 동사인 '달다'가 있다.
sweet나 equip 말고 give이다. '다오', '달라', '도(사투리-_-)'로만 활용되는 그 이상한 단어 말이다.
불완전 동사가 '가로다', '더불다', '달다', '데리다' 말고 또 뭐가 있더라?
이 '달다'는 '주다'와 의미상으로 거의 차이가 없다. 하지만 남으로 하여금 특별히 '나에게' 뭔가를 주기를 원한다는 아주 이기적인 뉘앙스로 쓰인다. '주다'라고만 하면 내가 남에게 베푸는 뉘앙스가 풍기지 않는가?

"저 사람에게 빵을 다오"라고 하면 뭔가 이상하고 어색하다. "저 사람에게 빵을 주게/주시오/주세요"라고 하거나 아니면 "내게 빵을 다오", "우리에게 빵을 달라"라고 해야 말이 된다.

흔히 한국어는 압존법이란 게 있을 정도로 최대한 청자 위주로 언어가 구성돼 있다고들 한다..
내가 언급하는 사람이 나보다 높더라도, 청자보다는 낮은 사람이라면 반말이 허용된다. "할아버지, 아버지께서 오십니다"가 아니라, "할아버지, 아버지가 옵니다"가 되는 것처럼 말이다.

그러나 '오다-가다'의 관계를 살펴보면, 한국어도 청자가 아닌 나 위주, 화자 위주의 사고방식이 배인 것도 분명 있다. 그래서 '달다' 같은 단어도 존재하는 것이다.
또한 개인적인 친분 사이가 아닌 공식 석상에서는 압존법이 꼭 적용되는 것도 아니라는데? KBS 한국어 능력 시험 공부하면서 교재 어딘가에서 본 기억이 있다. 가령, 할아버지/아버지가 아니라 사장/과장이라거나(자기는 대리-_-) 할 때 말이다. 이래서 한국어는 어렵다. -_-;;

끝으로, 성경 번역에서 유명한 토착화 표현을 덧붙이며 글을 맺는다.

(1) "누가 너를 데리고 오 리를 끌고 가면 십 리를 가 주어라"(마 5:41)가 영어로 원래 무엇인지가 아는가? 1 mile과 2 miles이다. 5리(약 2km)가 1 마일(약 1.6km)보다는 약간 더 긴 거리이다. ^^;;
(2) "장가 가고 시집 가기"는 영어로는 "결혼하거나 혼인 당하거나"(marry / be given in marriage / be married to)가 된다. -_-;; 성경에서 여자가 시집 가는 건 언제나 marry의 수동태로 표현되어 있다.

Posted by 사무엘

2010/08/10 08:37 2010/08/10 08:37
, ,
Response
No Trackback , 4 Comments
RSS :
http://moogi.new21.org/tc/rss/response/343

나의 운영체제 사용 내력

구경이란 해당 운영체제가 설치된 다른 컴퓨터를 본인의 눈으로 처음으로 직접 보고 잠시나마 다룰 기회가 있었던 때를 말한다.

※ 윈도우 95
출시: 1995년 중반
구경: 1996년 초. 당시 정말 전율이었음
본인 컴퓨터의 OS로 사용: 1996년 말. 컴퓨터를 한번 업그레이드 하면서.

※ 윈도우 98
출시: 1998년 중반. 윈도우 95+IE4일 뿐이라는 비아냥거림 잔뜩. 실제로는 전혀 그렇지 않으며, 개선되고 나아진 게 엄청 많음
구경: 1999년 초
본인 컴퓨터의 OS로 사용: 2000년 후반. 구닥다리 노트북이 장수한 덕분에 95를 굉장히 오래 사용. <날개셋> 한글 입력기 1.0은 윈도우 95 환경에서 개발됐다.

※ 윈도우 2000
출시: 2000년 초
구경: 2000년 후반. layered 윈도우 + 마우스 포인터 주변의 그림자가 무척 신기했다.
본인 컴퓨터의 OS로 사용: 2002년 중반. NT 계열로 갈아타는 데 은근히 오래 걸렸음

※ 윈도우 XP
출시: 2001년 말
구경: 2001년 말. 대학 내의 얼리 어답터 덕분에 꽤 일찍 구경. Luna 화면은 당시 엄청난 충격이었음
본인 컴퓨터의 OS로 사용: 2002년 말. 램 256MB로는 돌리기 좀 무겁다는 걸 실감함.

※ 윈도우 비스타
출시: 2006년 말~2007년 초
구경: 2007년 초. 세벌식 파워업 패치 만드느라 어둠의 경로로 구했음. Aero는 역시 충격과 공포였음
본인 컴퓨터의 OS로 사용: 2007년 후반, 새 데스크톱 컴퓨터를 장만하면서

※ 윈도우 7
출시: 2009년 중반
구경: 2009년 중반. 윈도우 7은 정식 출시 전부터도 구해다 쓰는 용자들이 워낙 많아서 구경하기 매우 쉬웠음.
본인 컴퓨터의 OS로 사용: Not yet! 회사 컴, 집의 데스크톱과 노트북이 전부 여전히 비스타임.

새로운 윈도우 운영체제가 출시되면 본인이 그걸 실제로 내 컴퓨터에서 쓰게 되기까지 짧게는 1년, 길게는 2년이 넘는 간극이 있어 왔다. 과연 난 7은 언제쯤 써 보게 될까?
하지만 PC 성능의 상향 평준화, 그리고 운영체제의 안정성 증가(운영체제를 재설치할 일이 별로..-_-), 불법 복제 방지용 인증 같은 요인들 때문에 당분간 내 PC가 운영체제를 갈아탈 날은 금방 올 것 같지는 않다.

Posted by 사무엘

2010/08/09 08:48 2010/08/09 08:48
,
Response
No Trackback , 6 Comments
RSS :
http://moogi.new21.org/tc/rss/response/342

교통수단을 만드는 업계에서 회사끼리의 과열 경쟁으로 인한 시장 왜곡과 공멸을 막기 위해,

자동차(2차 석유 파동을 계기로.. 분업): 5공 시절인 1981년엔 자동차 공업 합리화 조치가 취해져서 회사마다 만들 수 있는 자동차의 업종이 제각기 지정되었다. 그래서 소형 승용차는 현대와 대우 자동차만이 생산할 수 있었고, 기아 자동차는 중소형 트럭이나 승합차만 생산할 수 있게 됐다. 그 규제는 1987년에 풀렸는데, 규제가 풀리자마자 기아에서는 프라이드라는 승용차를 만들고, 현대에서는 그레이스나 포터 같은 중소형 승합차와 트럭을 만들어 기아 자동차의 봉고에 대항하기 시작했다.

전동차(IMF를 계기로.. 합병): 지하철 전동차 생산과 납품은 현대 정공, 대우 중공업, 한진 중공업 이렇게 3개 대기업이 경쟁하면서 각 노선별로 사이좋게 나눠 가져 왔다. 회사별로 좋아하는 인버터 수입 회사 취향도 제각각이던 시절. 그러나 경쟁의 부작용도 만만찮았던 모양이다. 결국 나라에서는 1999년에 세 회사의 전동차 생산 부분을 통폐합한 로템이라는 법인을 출범시켰다. 구 명칭인 한국 철도 차량은 영문 이니셜이 KOROS여서 일본어로 ‘죽여 버린다’로 읽히는 관계로, 이미지 개선을 위해 사명을 바꾼 거라는 후문이 전해진다.
개그 만화 일화 서유기 편에서 “1등 하는 놈을 증오로 죽인다!” 라는 삼장법사의 대사도 “이치(1)”로 시작해서 “코로스!”로 끝난다.

Posted by 사무엘

2010/08/07 13:04 2010/08/07 13:04
, ,
Response
No Trackback , No Comment
RSS :
http://moogi.new21.org/tc/rss/response/341

« Previous : 1 : ... 197 : 198 : 199 : 200 : 201 : 202 : 203 : 204 : 205 : ... 230 : Next »

블로그 이미지

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

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2026/08   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          

Site Stats

Total hits:
3994776
Today:
1155
Yesterday:
2195