1.

이 블로그는 좀 특이한 구석이 있다.
보통, 덕력이 좀 높은 블로거는 전문 분야 블로그와 일상 잡담 블로그를 분리해서 운영한다.
하지만 본인은 그렇게 하지 않으며 모든 관심 분야에 대한 글을 한 블로그에다 몰아서 올린다.
블로그를 따로 운영해야 할 정도로 덕력이 아주 높은 것도 아니어서 말이다..... 어? ㄲㄲㄲㄲ

난 사람들이 자기 관심 분야 블로그에만 가는 걸 원하지 않는다.
내 근황이 궁금하고 나에 대해 알고 싶어서 내 블로그에 온 사람이라면, 좋든 싫든 프로그래밍 관련 글도 보고, 철-_-도 관련 글도 보고, 한글 관련 글, 기독교 관련 글도 보길 원한다.
독자 여러분은 어떻게 생각하실지 모르겠지만 어쨌든 본인은 내 식대로 이런 식으로 블로그를 운영해 나갈 것이다. ㅋㅋ
<날개셋> 한글 입력기 카테고리가 몇 달째 글이 없으니 오늘은 또 오랜만에 개발 근황을 전하도록 하겠다.

2.

<날개셋> 한글 입력기의 다음 버전은 6.2로 확정했다. 나흘 뒤인 8월 21일 아침에 나올 예정이다. 현재 코딩은 거의 마쳤고 테스트와 도움말 작성 중이다.
편집기를 안 쓰는 분에게는 그리 큰 해당 사항이 없겠지만, 6.2에 대해서는 지금까지 오랜 숙원이었던 에디팅 엔진의 최적화 소식부터 먼저 전해야겠다.
무려 7년 전, 3.0 시절 이래로 변함없이 남아 있던 에디팅 엔진을 뒤집어엎었다. 옛날 코드의 로직을 재구성하여 더 정교하게 다시 만드는 게 쉬운 일이 아니었다.

예전 버전이 얼마나 비효율적이었는지를 단적으로 설명하자면 이렇다.
수십만 줄에 달하는 텍스트를 불러와서 맨 앞줄에서 엔터를 눌러서 줄을 삽입하거나 텍스트를 붙여넣으면 그 줄부터 문서 끝까지 내부적으로는 행번호가 다 renumbering된다. -_-;;
그리고 undo 한번 할 때마다 그 텍스트 레이아웃이 전부 다시 짜진다.

이제는 아무리 큰 문서를 불러와도 텍스트 레이아웃과 재배치는 영향을 받은 문단에서만 일어나며, renumbering도 없어졌다. Ctrl+Z를 마음껏 눌러도 된다.
다른 작업 우선순위에 밀리고 또 밀려서 7년 동안 못 하고 있던 일을 이제야 해냈다.
3.0을 만들던 당시는 세벌식 모아치기와 새로운 한글 입력 오토마타에 치중하느라, 에디팅 엔진은 비록 구닥다리 2.x에 비해서야 혁신이었지만 그래도 시간 관계상 대충 발로 짠 부분이 있었던 것이다.

이번 버전은 파일 저장도 매 줄마다 디스크에 쓰는 게 아니라, 수 MB 단위로 버퍼에다 미리 저장한 후 한꺼번에 디스크에 쓰게 함으로써 속도를 크게 향상시켰다. 이렇게 하는 게 이 정도로 큰 차이를 만들 줄은 몰랐다.
<날개셋> 변환기의 파일 변환 속도도 훨씬 더 빨라졌다.
학교에서 실제로 수~수십 MB에 달하는 옛한글 말뭉치 파일을 다뤄 보고서야 성능을 개선할 필요를 느꼈다.

3.

그리고 <날개셋> 편집기는 이제 legacy format(한컴 2바이트 코드 및 한양 PUA)으로 클립보드를 읽고 쓰는 기능이 없어지고, 편집 메뉴에 '선택하여 붙여넣기'(Paste special) 기능도 없어진다. Paste special은 무려 <날개셋> 한글 입력기 2.0때부터 있었던 기능이지만, 이 프로그램이 텍스트에다 서식을 넣을 수 있는 워드 프로세서도 아니고 사실 필요 없는 기능이다. 유니코드 하나만 신경 쓰면 되니까 말이다.

그 대신 이 기능들은 <날개셋> 변환기로 이동한다. 다만, 지금까지 한컴 2바이트 코드를 읽는 것 말고 '쓰는' 기능은 제2수준 한자를 지원하지 않았었는데, '쓰는' 것도 가능해진다. 클립보드 변환 기능까지 그대로 지원되긴 하지만, 아래아한글 97이나 <날개셋> 무려 2.x와 텍스트 데이터를 변환하는 상황이 아니라면 이제 쓸 일은 없을 것이다. 그러니 호환성 유틸리티인 변환기로 기능 이전.
하지만 유니코드가 등장하기 전에 아래아한글이 국어 정보 처리에 끼친 영향력을 감안하면, 한컴 2바이트 코드 지원을 완전히 없애 버릴 수는 없다.;;

또한, 옛한글을 한양 PUA <-> 유니코드 5.2 형식으로 변환하는 기능은 '텍스트 필터'로도 들어가서 편집기나 외부 모듈이 즉석에서 사용 가능하게 된다. 한양 PUA의 인지도는 아직까지도 무시할 수 없기 때문에..;;
이걸 감안하면, 비록 편집기의 한양 PUA 지원 기능은 겉으로는 일관성 차원에서 사라지지만, 동일 기능이 더 유용한 다른 형태로 대체되는 셈이다.

덤으로, <날개셋> 변환기는 옛한글 변환은 지금까지 UTF16 방식의 파일밖에 지원하지 않았다가 이제 드디어 UTF8도 지원할 예정이다. 그리고 명령줄에서는 하위 디렉터리의 모든 파일을 재귀적으로 찾아서 변환하는 /S 옵션이 추가된다.

4.

이렇듯, <날개셋> 한글 입력기의 다음 버전은 편집기와 변환기가 바뀐 게 많고 외부 모듈은 변화 사항이 상대적으로 적다고 볼 수 있다. 그래도 외부 모듈이 바뀐 걸 나열하자면,

첫째, 한글 글자판을 찾을 때 무조건 맨 위의 0번부터 그 아래가 아니라, 6.0에서 추가된 개념인 '기본 입력 항목'부터 먼저 고려하기 시작했다. (진작에 이렇게 했어야지..)
둘째, 편집기와 외부 모듈을 같이 쓰는 경우, 편집기에서 프로그램의 UI 언어를 바꾸면 외부 모듈도 아쉬운 대로 그걸 따라가게 했다.

이 외에, 프로그램 전반적으로는
수식에서 ? : 연산자와 콤마 연산자가 변수를 되돌리면 거기에 바로 대입이 가능하게 문법이 확장되었으며,
정 재민 님의 제안과 도움 덕분에 몇몇 글꼴들이 최신 유니코드 규격대로 업데이트되었다.
그리고 천지인· 나랏글과 더불어 스마트폰의 3대 복수 표준 입력 방식 중 하나가 된 팬텍 SKY 방식도 예제 입력 설정 파일을 만들어서 추가했다.

텍스트 필터 중에 '일괄 치환 필터'라고, 여러 건의 바꾸기 작업을 한꺼번에 수행하고 심지어 줄바꿈 문자까지 찾기-바꾸기 문자열에 포함할 수 있는 강력한 필터가 있는데,
여기에 있던 사소한 버그를 잡고, 이 필터에 '반복 적용' 옵션을 추가했다.
이걸 잘 활용하면 [   a   ], [ b  ] 같은 문자열도 싹 다 [a], [b] 같은 식으로 일괄적으로 공백 정리를 할 수도 있다. 이런 기능을 넣을 생각을 지금까지 왜 안 했는지 모르겠다.
적은 노력에 비해서 무척 유용할 수 있는 기능을 찾아내서 구현하는 건 참 즐거운 일이다.

끝으로, 타자연습은,
문장 연습 중에 오타를 내고서 Ctrl+Z를 눌렀을 때, 텍스트가 없어진 뒤에도 텍스트 위의 오타 마크가 사라지지 않던 버그를 잡았다.
그리고 게임은 이제 레벨이 올라갔을 때 자동 저장을 해 주지 않는다. 게임 중에 사용자가 단축키를 눌렀을 때만 해당 단계의 점수, 방어력, 주인공으로 나중에 게임을 이어서 할 수 있게 그 상태가 저장된다. 따라서 해당 단계의 초반에 저장을 하든, 끝날 때가 다 돼서 저장을 하든 그건 상관없다.

<날개셋> 타자연습의 게임 저장 체계는 어찌 보면 페르시아의 왕자 1의 그것과 비슷해졌다고 볼 수 있다.
(레벨의 첫 시작 시점만 저장할 수 있고, 한 시점만 저장 가능하다는 점에서)

5.
끝으로 여담,
<날개셋> 편집기처럼 텍스트 에디터를 처음부터 새로 만든다는 건 결코 쉬운 일이 아니다.
특히 유니코드의 complex script를 완벽하게 지원하려면 이미 거의 워드 프로세서 수준에 도달한다. 커서 이동, 마우스 포인터 위치로부터 문자열 위치 판단, 문단 정렬 같은 기본 중의 기본 작업들조차 완전 어려운 작업이 되기 때문이다. 내 프로그램은 그런 자질구레한 건 개발의 주목적이 아니기 때문에 죄다 깔끔하게 무시하고 개발되는데도 이 작업만으로도 코드의 양이 만만찮다.

WinAPI.co.kr의 운영자로 유명한 김 상형 님은 이런 텍스트 에디터를 개발하는 튜토리얼을 제공하고 있으니 초보 개발자들에게 무척 유익하다. 요즘 세상에 저 정도 프로젝트를 대인배스럽게 공개하는 분은 정말 드문데... 관심 있으신 분은 참고하기 바란다.

<날개셋> 입력기와 타자연습의 다음 버전도 어김없이 예전 버전과의 API 호환성은 깨질 예정이다. =_=;;; 따라서 둘을 원활히 같이 쓰려면 둘을 모두 업데이트해야 한다.
이제는 좀 바꿀 일이 없겠지 싶은 요소들도 계속 바뀐다. 그만큼 <날개셋> 한글 입력기는 여전히 활발하게 개발이 진행 중이고 살아 있는 프로젝트라는 뜻이기도 하다.

당초 계획했던 한자 관련 기능을 추가 못 하고, 입력기 커널에 내가 원하는 기능을 여건상 못 넣었는데, 이건 올해 하반기에 나올 또 다음 버전에서 기약을 해야겠다.

Posted by 사무엘

2011/08/17 08:11 2011/08/17 08:11
,
Response
No Trackback , 11 Comments
RSS :
http://moogi.new21.org/tc/rss/response/556

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

Comments List

  1. ^^ 2011/08/17 16:38 # M/D Reply Permalink

    저...

    <날개셋> 입력기와 타자연습의 다음 버전도 어김없이 예전 버전과의 API 호환성은 깨질 예정이다. =_=;;; 따라서 둘을 원활히 같이 쓰려면 둘을 모두 업데이트해야 한다.

    라고 하셨는데요

    왜 타자연습과 입력기를 같이 배포하지 않고 별도의 파일로 배포하시는 지 여쭤봐도 될까요?

    1. 사무엘 2011/08/17 22:50 # M/D Permalink

      두말 할 나위도 없이, 둘은 성격이 다른 프로그램이며, 둘 중 하나만 쓰는 사람도 있으니까요.
      타자연습은 입력기를 사용하는 응용 프로그램일 뿐입니다.

      그리고, 입력기와 타자연습 중 하나만 업데이트하고 다른 하나를 옛 버전을 그대로 쓰고 있더라도 대부분의 경우는 문제가 되지 않습니다.
      다만 입력기의 외부 모듈(IME)의 버전과 타자연습의 버전이 충돌하면, 타자연습에서 <날개셋> 한글 입력기 외부 모듈을 쓸 수 없게 됩니다.

      아예 입력기 아니면 타자연습 이렇게 한 프로그램만 쓴다면 모를까, 두 프로그램을 모두 사용하는 상황이라면, 이런 잡음을 없애려면 둘을 모두 최신 버전으로 업데이트 할 필요가 있다는 뜻입니다.

  2. 사이버카가미 2011/08/22 17:56 # M/D Reply Permalink

    새 버전 잘 받았습니다^^
    버그가 하나 생겼는데... 제가 두벌식과 오토마타가 같고 대신 쓸 수 있는 범위를 옛한글까지 확장한 입력기를 따로 만들어 쓰고 있었는데, IE나 메모장 같은 곳에서 TSF 확장 모드로 '한글'을 치면 '??????' 과 같이 앞 음절이 멋대로 조합 종료되어 버리는 문제가 있어요. 유니코드 완성형의 범위를 넘어설 때 조합 종료 문제가 일어나는 걸로 파악하고 있어요...넣은 옵션은 TSF 확장이랑, 입력 일반에서 '현재 글자가 ~', '완성된 글자를 ~', '낱자 단위 수정' 이에요.

    //(5:54 PM 8/22/2011) 메모장 말고도 다른 TSF 지원 프로그램에서도 시간이 지나면 그런 현상이 일어나네요..; (MetroTwit)

    1. 사무엘 2011/08/22 21:32 # M/D Permalink

      예전부터 있었던 현상이지 6.2에서 새로 발생한 건 아니죠? 6.2는 외부 모듈은 그쪽 부분은 바뀐 것도 없는데.
      전에도 비슷한 설명을 드린 적이 있는 것 같습니다만, 윈도우 운영체제는 한글 IME가 두 글자가 넘는 자모를 조합하는 걸 여전히 별로 좋아하지 않습니다. 말씀하신 것처럼 조합이 강제로 종료되어 버리는 현상도 있는데, 그건 제 프로그램이 더 개선할 수 있지가 않습니다.

    2. 사이버카가미 2011/08/23 00:52 # M/D Permalink

      아뇨, 6.0엔 그런 거 없었어요...ㅠ 내일 완전히 지웠다 다시 설치해 보고 말씀드릴게요.

    3. 사무엘 2011/08/23 01:01 # M/D Permalink

      다시 말씀드리지만 6.2는 그런 부분에서 버그가 생길 만한 변화는 없었습니다.
      그래도 만약 버그가 의심되는 부분이 있으면, '시스템 계층-한글 표현 방식'은 어떻게 맞춰 놓으셨는지도 꼭 정확하게 알려 주시기 바랍니다.

    4. 사이버카가미 2011/08/23 14:13 # M/D Permalink

      지운 뒤에 다시 설치해 보았는데 증상은 딱히 달라진 게 없네요..;ㅅ;
      말씀하신 옵션은 글자 계층 '현대 한글만, 호환용 한글 자모 사용', 낱자 계층 '표준 한글 자모, 채움문자 언제나 추가, 확장 자모 사용' 이에요.
      6.0으로 일단 롤백해놓고 해결 중인 상태예요, 음음..
      //지우는데 일부 파일이 어디에 살아 있는지, 다시 설치해도 설정이 초기화되지 않고 그대로네요...

    5. 사무엘 2011/08/23 19:32 # M/D Permalink

      저도 동일 현상을 확인했습니다.
      하지만 저 현상은 6.0에서도 똑같이 일어날 현상이며 새 버전만의 버그가 아닙니다.
      운영체제의 특성 때문에 어쩔 수 없는 사항이므로 여기에 대해서는 추후에 도움말에 더 자세히 명시하도록 하겠습니다.

      당장 문제를 해결하는 방법으로는..
      문의사항을 보아하니 조합이 끊기는 문제의 원인은 ㄴㄱ 옛한글이거든요?
      아무래도 두벌식 옛한글을 쓰지 않는 게 답일 것 같습니다. (빠른설정에서 옛한글 체크 끄기)

    6. 사이버카가미 2011/08/24 23:32 # M/D Permalink

      그냥 6.0 유지하는 게 나을 거 같네요..;
      6.2 재설치해서 계속 같은 버그가 있었지만 6.0으로 재설치하니 그런 일은 분명 없어요.

    7. 사무엘 2011/08/25 07:46 # M/D Permalink

      그런데 그것이 실제로 일어났습니다.

      처음에 저는 님의 버그 신고는 특별히 신경 쓸 필요도 없는 일상적인 운영체제 버그일 뿐이라고 생각했는데..
      진~짜 반신반의로 윈7에서 6.0 설치해서 똑같은 환경에서 '한글날'을 입력해 보니..
      예전 버전은 ㄴㄱ이 입력된 뒤에도 6.2와는 달리 조합이 끊기지 않는군요..;;

      깜짝 놀랐고, 현재로서는 뭐라 드릴 말씀이 없습니다. 저 역시 6.2 작업 과정에서 외부 모듈은 그런 부분이 영향을 받을 만한 변화를 준 적이 없습니다.
      금방 해결되지는 못할 것 같지만, 다음 버전이 나온다면 이 버그는 반드시 수정하도록 하겠습니다.
      꾸준히 버그 신고를 해 주셔서 감사드리고, 번거롭게 해서 죄송합니다.

    8. 사이버카가미 2011/08/25 13:11 # M/D Permalink

      아, 발견해주셔서 다행이에요! 예상치 못한 곳에서 버그가 있는 거군요...; OS까지 새로 설치하셔서 확인해주시고... 죄송하다뇨, 오히려 수고해주셔서 고맙습니다! :)
      날개셋 입력기 항상 잘 쓰고 있어요, 다음 버전 기대할게요!

Leave a comment
« Previous : 1 : ... 1652 : 1653 : 1654 : 1655 : 1656 : 1657 : 1658 : 1659 : 1660 : ... 2131 : 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:
2635357
Today:
2155
Yesterday:
1754