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
그래서 WORD, Word, word라는 단어가 모두 존재하면, 똑같은 word라 해도 오름차순에서는 언제나 저 순서가 유지되게 된다. 대소문자뿐만 아니라 전/반각, 한자 독음 비교 같은 다른 옵션에 대해서도 동일한 원칙이 적용된다.

하지만 본인이 아는 유명 프로그램들 중 저걸 배려하는 프로그램은 전혀 없다. 아래아한글, 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년이 넘게 동일 아이콘을 쓰고 있는 셈.

이것 말고도, 마치 지금의 상명 대학교의 로고타입처럼 한글 자모를 세로로 풀어 써서 <날개셋> 자체를 형상화한 '기본 아이콘'도 있는데, 이건 외부 모듈이 사용하고 있다.

사용자 삽입 이미지사용자 삽입 이미지
외부 모듈은 편집기나 입력 패드처럼 다른 여러 응용 프로그램들하고 비교되는 게 아니라, Microsoft IME처럼 이미 같은 입력기들과 비교된다. 그러니 이 프로그램이 IME라는 건 누구나 다 알고 있고 <날개셋>이라는 브랜드가 중요하므로, 프로그램의 기본 아이콘으로 이걸 그냥 쓰는 것이다.

<날개셋> 기본 아이콘의 컨셉은 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 사무엘

2012/01/01 19:11 2012/01/01 19:11
Response
No Trackback , 14 Comments
RSS :
http://moogi.new21.org/tc/rss/response/621

Trackback URL : http://moogi.new21.org/tc/trackback/621

Comments List

  1. 백성 2012/01/02 10:41 # M/D Reply Permalink

    기대되는군요...
    아이콘이 바뀐다라...

  2. 소범준 2012/01/01 21:57 # M/D Reply Permalink

    저도 세벌식을 하고는 싶은데, 여전히 상황적으로 딱히 바꾸기가 어렵군요.
    하지만 저도 세벌식에 대해 관심이 전혀 없었던 건 아닙니다.
    (이 주제를 가장해서 번개 한번 해요~.^^;)

  3. 사무엘 2012/01/02 10:03 # M/D Reply Permalink

    백성: 6.5는 현재 최종 테스트 중입니다. 스케줄을 앞당겨 이번 주말쯤 공개될 겁니다.

    소범준: 종합 시험 치고 6.5 마무리 짓고 나서 이 달 중순쯤에 지난번처럼 한번 모여 보기로 하죠.
    특히 백성 군(ㅋㅋ)도 제 프로그램의 heavy user이니, 같이 있으면 활용법을 잘 가르쳐 줄 겁니다.

    1. 백성 2012/01/02 10:48 # M/D Permalink

      음, 알겠어요.
      날개셋 타자게임 12단계까지 클리어하게 해 드리면 되는 거죠?(으잉 ㄲㄲㄲㄲ)

  4. rubis 2012/01/05 09:51 # M/D Reply Permalink

    안녕하세요! 건의드릴게 있어요
    세벌식 3-2011 자판 배열도 날개셋의 기본 번들 자판으로 포함시켜주세요~

    최근 390과 최종의 아쉬움때문에 개인적으로 자판을 수정하여 사용하려했는데 적당하고 잘 만들어진 배열을 알게 되었어요.

    http://pat.im/855

    날개셋 키배열도 함께 있어서 날개셋 사용자라면 금방 사용할수 있긴한데요. 이 배열 많이 보급되었으면 하는 마음이 있어 부탁드려요.
    한번 검토해보시고 이번 패치가 아니더라도 기본 번들로 포함되었으면 좋겠어요!

    1. 사무엘 2012/01/05 18:07 # M/D Permalink

      팥알 님께서 정말 작품을 만들어 놓으셨군요. :)
      현재 6.5 버전은 중대한 버그가 나오지 않는 이상 배포 패키지를 고치지 않는 단계이고, 이제 하루이틀 남짓 뒤면 내놓을 예정입니다.

      3-2011 자판이 나온 지 아직 1개월이 채 지나지 않았고(곧 있으면 딱 1개월..?), 이번 6.5 버전에서는 입력 스키마 차원에서 글쇠 customize 기능이 또 추가되는 만큼, 이를 이용한 기능 활용이 또 가능하리라 생각됩니다.
      그래서 새로운 세벌식 글쇠배열은 6.5의 다음 버전이 나왔을 때, 배열이 진짜 굳어졌다고 여겨질 때 넣도록 하겠습니다. 지금은 좀 더 지켜보고요. 이 점 양해 구합니다.

  5. 팥알 2012/01/05 21:07 # M/D Reply Permalink

    제 생각에도 3-2011 자판을 날개셋에 기본 배열에 넣는 것은 이른 것 같습니다.
    어차피 날개셋은 설정 파일만 만들면 다른 배열을 쉽게 쓸 수 있고, 언젠가 더 나은 배열이 나올 수도 있겠지요.
    어떤 수정안이든 이미 있는 배열의 매력을 살리는 것이 목적인 만큼,
    이왕이면 충분히 검토하여 더욱 많은 분들이 만족할 수 있게 다듬은 배열이 들어가면 좋겠습니다.

    그나저나 막강한 날개셋에 기능이 또 들어간다고 생각하니 입이 다물어지지 않습니다.
    날개셋의 새 기능 덕분에 궁리할 거리도 더 생기겠네요.
    아직 모르는 기능이 많은데도, 날개셋은 제게 꿈을 현실로 만들어 주고 있습니다.
    이대로 가면 비밀 글쇠가 가득한 마술 자판을 볼 수 있겠습니다. ^^

    1. 백성 2012/01/05 22:52 # M/D Permalink

      개인적으로 IME에서는 특수부호뿐만 아니라 자음+한자도 좀 확장했으면 좋겠고요, 모음+한자도 지원했으면 좋겠습니다. :-)

    2. 사무엘 2012/01/06 09:42 # M/D Permalink

      팥알 님, 반갑습니다. 3-2011판 안을 보고 무척 놀랐습니다. 대단히 수고 많으셨습니다.
      (제외한 겹받침의 수준이 적합하고, 대신 추가한 기호라든가, 특히 ㅐ와 ㅓ의 위치 교환은 꽤 참신하더군요! ㄵ-ㅈ의 배치도 그렇고요)
      rubis 님께서도 지적하셨듯, 앞으로 세벌식이 표준이 된다면 or 되려 한다면 390과 최종을 통합하는 제3의 안이 나와야 할 것입니다.
      그러면 그 표준안의 타이틀이 '진짜' 최종이 돼야겠죠..;;
      이번 새 버전을 써 보시고 또 좋은 아이디어와 의견은 많이 공유해 주시길 요청드립니다. ^^

    3. 팥알 2012/01/06 17:11 # M/D Permalink

      ㅈ-ㄵ을 바꾼 것은 백성님의 의견이고, 다른 몇몇 분들의 의견도 따랐습니다.
      요즈음은 옛한글뿐만 아니라 히브리어를 비롯한 외국어 발음 표기 문제로 확장 한글 논의가 활발하던데, 날개셋이 완벽하지는 않더라도 확장 한글 자판을 위한 틀을 거의 갖추고 있어서 기능 면에서 활용할 수 있는 폭이 매우 클 것 같습니다.

      곧 6.5판을 써 보고 떠오르는 게 있으면 말씀 드리겠습니다.
      좋은 도구를 나눠 주시는 사무엘님께 감사 드립니다.

  6. rubis 2012/01/05 23:29 # M/D Reply Permalink

    사무엘님께서도 좋게 평가하시니 기분이 좋네요!

    제 경우도 그렇고 많은 신규 사용자 또는 이미 세벌식을 사용하고 있는 사람들은 390과 최종 사이에서 낭비되는 고민들이 매우 많을 것이라 생각합니다. 팥알님의 배열이 100% 모두를 충족시킬 것이라고 자신하진 않지만 많은 사람들에게 도움이 될 것이라는 믿음이 있습니다. 어쨋든 제 마음은 모두 전해드린 것 같아 기분은 좋습니다.

    사무엘님께서 인지해주고 계신 것이 첫번째 목표였고 날개셋에서 검토되고 받아드려진다면 세벌식을 더 빠르게 소개할 수 있는 솔루션이 될것이기에 드렸던 의견이란 걸 모두 알고 계시리라 생각합니다.

    읽어주시고 의견 주셔서 더욱 감사합니다.

  7. 백성 2012/01/06 04:27 # M/D Reply Permalink

    6.5 새 버전 잘 쓰고 있습니다. 키패드가 사용가능한 것이 엄청난 장점이 되겠군요. 이제는 알트지알이나 넣어볼까나...

    ※편집기 아이콘은 안 바뀌었군요. 조만간 바뀌기를 기대합니다.
    ※구결 무서워요 ㅎㄷㄷ

    1. 사무엘 2012/01/06 09:41 # M/D Permalink

      엥? 댓글이 올라온 시각이, 블로그에 공지가 올라오기도 전..
      새 버전을 새벽에 예상보다 일찍 몰래 올렸는데, 이곳 블로그 말고 대문 페이지도 평소에 늘 체크하고 있었나요?
      custom candidate 기능은 6.5의 다음 버전에서 크게 강화될 예정입니다.

    2. 백성 2012/01/06 10:23 # M/D Permalink

      6.3도 날짜보다 일찍 올라왔길래, 한번 Guess를 해 봤습니다.

Leave a comment
« Previous : 1 : ... 1006 : 1007 : 1008 : 1009 : 1010 : 1011 : 1012 : 1013 : 1014 : ... 1552 : Next »

블로그 이미지

철도를 명절 때에나 떠오르는 4대 교통수단 중 하나로만 아는 것은, 예수님을 사대성인· 성인군자 중 하나로만 아는 것과 같다.

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2019/10   »
    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:
1266317
Today:
2
Yesterday:
508