1. 정렬 기능
컴퓨터에서 문자열 정렬은 아주 중요한 작업이다.
문자라는 게 디지털 컴퓨터에서는 0과 1의 조합인 숫자로 표현되는 만큼, 코드 번호 값의 대소로 문자를 비교하는 게 가장 직관적이고 당연하고 가장 합당하긴 하지만... 현실은 시궁창.
유니코드의 역사가 워낙 길어지면서 빈 영역 여기저기에 온갖 잡다한 문자들이 추가되었고, 이 때문에 단순 코드값 비교에 따른 정렬은 옛날에 비해 의미가 상당수 퇴색했다. 결국은 비교를 위한 별도의 테이블이나 알고리즘을 또 가지고 있어야 할 지경이 됐으니 말이다.
한글도 옛한글 자모가 몇 차례 나뉘어 추가되어서 좀 지저분해졌다. 그래도 유니코드 5.2 이후로 또 변화가 있을 것 같지는 않으니, 그 이상은 내 관심사 밖이다.
정렬을 할 때는 대소문자 구분을 하지 않는 게 보통이다.
그런데 <날개셋> 한글 입력기가 제공하는 정렬 필터는 한 걸음 더 나아가, 대소문자를 구분하지 않은 두 문자열이 동일하다면, 원래 형태대로 비교를 다시 해서 대소를 가리도록 로직이 다음 버전부터 수정될 예정이다. 경우에 따라서는 이렇게 해 주는 게 유용할 수도 있을 것 같아서이다.
정렬 전 | 그냥 대소문자 무시 정렬 | 대소문자 무시+2순위 고려 |
Base CASE SAFE Vase base safe vase Safe BASE Case case |
Base base BASE CASE Case case SAFE safe Safe Vase vase |
BASE Base base CASE Case case SAFE Safe safe Vase vase |
하지만 본인이 아는 유명 프로그램들 중 저걸 배려하는 프로그램은 전혀 없다. 아래아한글, MS 워드, 엑셀, EditPlus, AcroEdit 등... 대소문자 구분을 안 시키면 그 내부에서는 word, WORD, Word 순서는 전혀 지켜지지 않는다.
그뿐만이 아니라 다음 버전에서는 문자열 중의 숫자를 natural order로 비교하는 옵션이 추가된다. 쉽게 말해, A100을 A9보다 나중에 오게 하는 것 말이다. 1은 9보다 먼저 오지만, 100은 9보다 더 큰 수이기 때문.
구현해 놓고 써 보니, 이거 생각보다 굉장히 유용한 기능이다. 왜 진작에 이런 기능을 안 넣었는지 모르겠다. “작은 코딩, 큰 만족”이 프로그래밍 덕질의 아드레날린이며 중독성의 원천이다.
숫자 비교는 자릿수가 더 많은 놈부터 먼저 쳐 주는 로직만 넣으면 끝날 것 같지만, 00100과 101 같은 훼이크도 조심해야 하고, 마이너스와 소숫점까지 생각하면 알고리즘이 의외로 복잡해진다.
현재 정렬 필터는 내부적으로 Quick sort를 사용하지만(unstable 알고리즘), 각 아이템들의 원래 배열 순서도 비교할 때 고려해 주기 때문에, 동일한 아이템끼리도 안정성(stability)이 보장된다. 유니코드 5.2 기준 모든 옛한글의 순서를 정확하게 비교해 내고 아래아한글처럼 종성부터 비교하는 옵션이 있을 뿐만 아니라, 저런 면까지 나름 꼼꼼하게 고려해서 구현되어 있다. ^^;;
2. 아이콘
다음 버전부터는 <날개셋> 변환기와 입력 패드의 아이콘이 바뀔 예정이다.
변환기는 뭔가 변환 메커니즘을 나타내는 회전 화살표가 담긴 아이콘이며,
입력 패드는 그 용도답게 태플릿+스타일러스가 그려진 아이콘이다.
요즘은 인터넷에 예쁜 아이콘들 갤러리가 넘쳐나니, 아이콘도 직접 그리는 것보다는, 이미 그려진 걸 찾아서 찜하고 필요하다면 구입하는 게 나은 세상인 듯하다. 맞춤복보다는 기성복 구도?
물론 아이콘의 출처는 프로그램 도움말의 '일러두기' 란에 명시될 예정이다.
<날개셋> 편집기의 아이콘인 빨간 수첩^^;;은 과거 비주얼 C++이 예제로 제공하던 아이콘이 그 전신이다. EditPlus도 동일 컨셉이긴 하나, 수첩을 펼친 방향이 <날개셋> 편집기의 그것과는 정반대이다.
이 컨셉으로 큼직한 트루컬러+알파 채널 아이콘까지 그려 주신 분은 옛날 인터넷 세벌식 사랑 모임의 운영자이던 이 정민 님이다. 그게 벌써 2003년의 일인데 3.0 시절부터 8년이 넘게 동일 아이콘을 쓰고 있는 셈.
이것 말고도, 마치 지금의 상명 대학교의 로고타입처럼 한글 자모를 세로로 풀어 써서 <날개셋> 자체를 형상화한 '기본 아이콘'도 있는데, 이건 외부 모듈이 사용하고 있다.
<날개셋> 기본 아이콘의 컨셉은 1.0 만들 때 본인이 구상한 것이다. (당연히 상명 대학교의 로고타입을 모르는 상태에서 디자인한 것임. 우연의 일치. ㄲㄲ) 이를 트루컬러 이미지로 각색하신 분 역시 이 정민 님이다.
참고로, 외부 모듈은 파란 기본 아이콘이고, <날개셋> 타자연습은 여러분도 다 잘 알다시피 초록색 기본 아이콘을 쓰고 있다.
프로그램의 아이콘에 이어 도구모음줄의 각종 아이콘도 트루컬러나 256색화할 때가 되긴 했다만, 흠.. 귀찮다.;;
이렇게 프로그램 UI에 들어가는 각종 이미지들의 기술 수준이 상승했건만, 비주얼 C++의 자체 IDE가 제공하는 아이콘 편집기는 트루컬러+알파 채널, 심지어 요즘 같은 PNG 이미지가 embed된 아이콘을 제대로 열지 못한다. 그런 거 하나 만들려면 이제 별도의 '싸제' 그래픽 에디터를 써야 하니 불편하다.
VC++ 6.0 시절에는 트루컬러 이미지 자체를 열질 못했다. 그런데 256색까지밖에 읽어들이질 못하는 주제에, 내 기억이 맞다면 VC6의 IDE는 JPG 파일을 열 수는 있었다. 그리고는 JPG 사진을 256색으로 '디더링'-_-해서 표시해 줬다. 흠좀 많이 무섭죠? -_-
3. 찾기/바꾸기 대화상자
<날개셋> 편집기의 다음 버전은 찾기/바꾸기 대화상자의 디자인이 살짝 바뀔 예정이다.
'뒤로 검색'은 별도의 옵션으로 존재하지 않으며 버튼 자체가 '다음 찾기'와 '이전 찾기'로 따로 존재함으로써 탐색 방향을 결정하게 된다.
그리고 '처음부터 찾기' 옵션이 별도로 추가되며('이전 찾기'를 하면 문서 끝부분부터 찾게 됨), F3/Shift+F3으로 찾기를 계속하다가 문서의 끝부분에 도달했을 때는 자동으로 첫 부분으로 돌아가서 다시 찾게 할 수 있다.
'처음부터 찾기' 옵션을 지정하고서 '모두 바꾸기'를 누르면 지금 커서 위치에 상관없이 문서 전체에서 찾기/바꾸기를 일괄적으로 수행할 수 있다.
예전에는 '뒤로 검색'을 선택하면 F3이 역방향 검색, Shift+F3이 그 반대인 순방향 검색이었으나,
이제는 F3은 언제나 순방향 검색, Shift+F3이 역방향 검색이 된다..
4. 기본 IME로 지정 옵션
마치 웹브라우저에 자신을 운영체제의 기본 브라우저로 지정하는 옵션이 있듯,
드디어 추가되었다.
'TSF A급 확장 옵션'만 달랑 남아있던 '고급 시스템 옵션'에 이게 들어갔다.
사실 원래 의도했던 건, 프로그램을 설치할 때 “<날개셋> 한글 입력기를 기본 IME로 지정” 옵션을 추가하는 것이었다. 이게 아주 자연스럽지 않은가?
하지만 Windows Installer가 도대체 프로그램을 어떤 환경에서 구동하는지, 그때는 기본 IME 지정이 죽어라고 되지 않아서 어쩔 수 없이 설치 후에 사용자가 이렇게 하는 걸로 디자인을 바꿨다.
이것만으로도 운영체제 제어판을 일일이 꺼내는 것보다 마우스 클릭질을 상당히 줄일 수 있다.
물론, 이미 기본 IME로 지정이 된 상태라면, 버튼은 disable된다.
5. 이 외에도 이번 6.5에서는 드디어 기본 입력 스키마의 '글쇠 인식 옵션'에, 기존 47개 글쇠 94개 자리뿐만이 아니라 임의의 단축글쇠에다가 글쇠를 배당하는 기능이 추가되어 Shift+Capslock을 모아치기/이어치기/풀어쓰기 변환을 한다거나, Numlock 상태의 키패드에다가 한글 입력 방식을 구현한다거나 하는 활용이 가능해진다. 이것도 지금까지 꽤 오랜 숙원이었다. 쉽게 말해 지금 편집기 계층에 있는 '단축글쇠 테이블'이 입력기 계층으로도 일부 내려온 거라고 생각하면 된다.
단타를 하나 인식하는 것까지가 '기본 입력 스키마'가 하는 일이고, 그 이상 더 변칙적인 입력... 가령 동시치기라든가 한 글쇠를 눌렀다가 떼거나 오래 누르거나 하는 것은 '동시입력' 같은 별도의 스키마가 담당하게 될 것이다.
또한, 임의의 글쇠를 인식하는 것과는 반대로 이미 인식하는 글쇠도 인식을 하지 않게 할 수 있다.
예를 들어 표준 두벌식 글자판은 A~Z까지 알파벳 26개 글쇠만 영문과 다를 뿐 나머지 숫자와 기호는 영문과 동일하다. 그래서 MS IME가 동작하는 걸 보면, 두벌식에서는 숫자와 기호는 IME가 아예 가로채지 않으며, 응용 프로그램에는 IME 메시지가 아니라 일반적인 키보드 메시지가 전달된다. 세벌식일 때만 모든 글쇠를 가로챈다.
이것을 <날개셋> 한글 입력기도 이제 사용자가 지정함으로써 구현 가능해진다는 뜻이다. 숫자나 기호 글쇠를 등록한 뒤, '글쇠 독점하지 않기' 옵션을 지정하면 된다.
6. <날개셋> 한글 입력기의 외부 모듈은 TSF A급 환경에서는 전용 편집기와 비슷한 독자적인 텍스트 조작을 지원했다. 이미 조합이 끝난 한글도 낱자 단위로 지우고, 앞 글자에 조합 상태로 달라붙는 기능 말이다. 하지만 현대 한글과는 달리, 2글자 이상의 조합으로 표현되는 옛한글에 대해서는 그런 기능을 제공하지 않았다(못했다). 글꼴과 코드, 운영체제 차원에서 프로토콜 지원 미비, 응용 프로그램마다 동작 방식의 차이 등 여러가지 기술적인 이유 때문이다. 이는 앞으로 Windows 운영체제가 개선되어야 할 사항이다.
하지만 이번 6.5 버전에서는 비스타/7의 TSF 확장 모드에 한해서... 다시 말해 확장 옵션이 켜진 상태에서 웹브라우저의 입력란과 메모장(일반 에디트 컨트롤)에서 유니코드 옛한글의 고급 조작을 시범적으로 enable해 보았다.
TSF 확장 모드 자체가 아직 상당히 불안정하고 오동작이 많은 모드이긴 하지만, MS 워드나 워드패드 같은 원조 TSF A급 환경에서는 고급 조작이 “아예 불가능했다”.
제한적이나마 이제 옛한글도 낱자 단위로 지우고 달라붙어지는 게 신기하다.
사실, <날개셋> 편집기도 이론적으로는 <날개셋> 외부 모듈의 고급 조작을 완벽하게 지원한다. 하지만 그건 어차피 홈그라운드이고, 외부 모듈 말고 자체 입력기도 쓸 수 있는 환경이니, 별 의미는 없다.
이것 말고도 이번 6.5는 내부적으로 프로그램 완성도가 강화되고 각종 버그가 수정된 게 엄청 많다.
2012년의 첫 글은 아주 희망적인 글로 시작했다. 새 버전이 몹시 기대된다.
Posted by 사무엘