<날개셋> 한글 입력기 7.11

<날개셋> 한글 입력기 7.1은 다음 7.3이나 7.4가 나올 때까지 오랫동안 안정적으로 쓰일 수 있을 것 같았으나.. 시간이 흐르고 보니 부득이 소규모 7.11 업그레이드가 3주 남짓한 시간 만에 나오게 됐다.

이 버전에서는 외부 모듈이 다음과 같이 대대적으로 개선됐다.

1.
TSF B급 프로그램(메모장 같은)에서 '호환용 한글 자모'를 쓰고도 옛한글이 전혀 입력되지 않던 문제를 해결했다.
이것은 직전 버전인 7.1에만 있던 버그이다. TSF A급 프로그램에서 두벌식 도깨비불 현상에 의해 옛한글이 곧장 시작되었을 때 조합이 끊어지던 문제를 해결했었는데 불행히도 그게 TSF B급 프로그램에서는 심각한 오동작을 유발하고 있었다.
결국 A급일 때와 B급일 때를 인위적으로 나누어 따로 동작하게 하는 방식으로 두 토끼를 모두 잡았다.

한글 IME 개발이라는 게 이렇게 지저분하고 어렵다.
모호한 스펙 때문에 IME를 사용하는 구현체별로 문서화되지 않은 예측 불가능한 동작이 너무 많으며, 이것을 하나하나 다 맞춰 줘야 한다. 한 프로그램에다 동작을 맞춰 주면 다른 프로그램에서 오동작하는 게 왕왕 있다.

물론, TSF B급 프로그램에서는 '호환용 한글 자모'를 써서 첫 조합은 한 글자 길이를 보장시킨 뒤에 제한적으로 옛한글 입력이 가능하지만, 두벌식의 경우 도깨비불 현상으로 옛한글이 곧장 시작되었을 때 조합이 끊어지는 건 어쩔 수 없다.
이런 문제 때문에 MS에서는 논란의 여지를 없애기 위해 자기가 개발한 옛한글 입력기는 오로지 TSF A급 프로그램에서만 동작하게 제약을 걸었다. 지원하는 글자판 자체도 두벌식밖에 없기도 하니 말이다.

2.
Windows 8에는 일명 메트로라고 불리기도 한 Modern UI가 있고 거기서 일부 앱은 권한이 극도로 제한된 상태로 동작한다. 본인은 입력기를 테스트할 때 날씨(Weather) 앱을 실행한 뒤 장소 추가 대화상자를 꺼내 보곤 했다. 그런데 테스트를 하려면 인터넷 연결을 꼭 해야 해서 개인적으로 무척 성가시고 불편함을 느꼈다.

어쨌든, 그런 제한 모드에서는 IME가 자기 입력 설정을 불러올 수조차 없어서 어쩔 수 없이 설치 직후의 기본 입력 설정으로 동작한다. 이때는 입력 설정이 제대로 로딩되어 있는 다른 프로그램--데스크톱 앱 또는 권한 제약이 없는 Modern 앱--을 미리 실행해 놓고, 제약이 걸린 앱도 덩달아 같이 실행해야 입력 설정이 동기화된다. 이것은 기술적으로 더 어쩔 수 없는 귀결이다.

그런데 이번 버전에서는, 제약이 걸린 앱을 먼저 실행하고 제약이 없는 앱(데스크톱 앱 포함)을 “나중에” 뒤늦게 실행한 뒤, 제약이 걸린 앱으로 되돌아오더라도 입력 설정이 동기화되도록 프로그램을 개선했다. Modern 앱에서 <날개셋> 한글 입력기의 사용 편의성이 더 향상될 것으로 기대한다.
당연히.. 제약이 없는 앱을 실행한 뒤엔 그 프로그램에서 <날개셋> 한글 입력기 외부 모듈을 로딩도 하고서 돌아와야 한다.

3.
그리고 드디어, 드디어...
외부 모듈도 현대 한글뿐만 아니라 옛한글까지 bksp 낱자 단위로 지우기 및 달라붙기 같은 기능이 동작 가능해졌다. 물론 TSF A급 프로그램 한정이고, 단순한 한글 자모 나열이 아니라 filler까지 정규화가 잘 된 글자에만 한해서 말이다.

이 기능을 구현하는 기반은 사실 지난 6.5 버전 때 이미 다져져 있었다. 그러나 실제로 제공되지는 못하고 봉인되어 있었는데,
그건 TSF A급 프로그램에서 존재하던 옛한글 조합 관련 버그 때문이었다.
그래서 그 버그를 고치면서 봉인돼 있던 기능까지 다시 살펴보게 되었고, 결국 이것도 덩달아 구현에 성공한 것이다. 만세! 한글 처리 기술의 진보를 이뤘다.

외부 모듈과 관련된 위의 세 이슈가 중요한 것이고 다음은 사소한 변화 사항들이다.

(1) 이 프로그램은 입력 설정이 없는 경우 MS 한글 IME의 설정이 어떻냐에 따라서 세벌식이나 두벌식을 자동으로 가져온다. 그런데 0번 말고 2번에 배당되는 기본 한글 글자판은 언제나 세벌식 옛한글로 고정이었다.
이제부터는 0번이 두벌식으로 맞춰지면 2번의 옛한글 글자판도 두벌식 옛한글로 지정되게 바뀌었다.

(2) 영문 about 대화상자에 layerd 오타-_-를 잡았다. 2004년에 나온 3.0의 영문 GUI 때부터 지금까지 줄곧 존재했던 오타이다. -_-;;; 오타가 그 단어의 실제 발음과 직관적으로 잘 대응하는 편인 관계로, 오타가 있는 줄 9년이 넘게 꿈에도 모르고 있었다.
그리고 편집기의 편집 화면 옵션 대화상자에 있던 '이동줄'이라는 단어도 '스크롤 막대'라고 MS 표준 번역 용어로 바꿨다. 이 역시 해당 옵션이 처음으로 추가되었던 3.0 버전 때부터 썼던 단어인데 드디어 변경.. ㅎㅎ
사실 '이동줄'은 한글 윈도 3.1의 도움말에 있던 용어이다.

(3) 지난 7.1에서는 앞으로 '고급 입력 스키마'를 재개발할 것을 염두에 두고 기존 '동시 입력 스키마'를 제거했다.
그랬는데, 이 입력 스키마를 사용하고 있는 분으로부터 요청을 받고 그걸 다시 원상복귀시켰다.
다만 이제 이 입력 스키마는 이름 뒤에 '임시용'이라는 단서가 붙었으며 영문 명칭에는 아예 legacy라는 단어가 추가되었다.

(4) 화면 키보드 입력 도구가 지금까지 크기가 너무 작은 게 흠이었는데, 작게-중간-크게 3단계로 크기를 조절하는 기능을 추가했다.
물론 글쇠 자체는 여전히 16*16 고정된 크기로만 찍히지만, '중간'으로만 해도 고해상도 화면에서는 글쇠배열이 훨씬 더 시원스럽게 보일 것이다.

(5) 두벌식 종성으로 입력한 종성으로 중성+종성을 한꺼번에 입력하여 도깨비불 현상을 일으킬 때, 내부 처리가 좀 더 정확하게 되도록 입력 엔진을 개선했다. 내부 사연이 좀 복잡하므로 이에 대한 자세한 내역은 별도의 글로 다루도록 하겠다..

(6) <날개셋> 편집기의 찾기 기능을 다소 손질하여, 찾는 문자열 영역이 한글을 이루는 글자의 중간에 걸치는 것은 정상적인 찾기 결과로 인정하지 않게 했다. 그래서 'ㅎㆍ'를 검색하면 정말로 'ㅎㆍ'만 걸리지, 'ㅎㆍㄴ'이 걸리지는 않게 했다. 'ㅎㆍ'로 'ㅎㆍㄴ'을 찾는 건 '한글 낱자 단위로' 옵션을 켰을 때에만 가능하다.

업데이트가 귀찮으시더라도, 부디 최신 버전을 사용하여 프로그램의 원 저자가 의도한 모든 기능을 마음껏 활용하시기 바란다.
아울러, 10월 한 달간 두 분이 후원금을 보내 주셔서 누적 후원자 수는 세 분이 되었다. 태어나서 이런 걸 연달아 받아 보는 경험이 거의 처음이어서 감개무량하고 보람을 느낀다. 감사드리는 바이다.

Posted by 사무엘

2013/11/04 19:23 2013/11/04 19:23
Response
No Trackback , 14 Comments
RSS :
http://moogi.new21.org/tc/rss/response/895

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

Comments List

  1. 김재주 2013/11/05 21:52 # M/D Reply Permalink

    날개셋 개발하시는데 있어서 정해둔 유닛 테스트 같은 게 있으신가요?

    미리 만들어 둔 테스트 셋트를 스크립트를 사용해서 검증하면 버그 예방에 상당한 도움이 될 것 같아서요.
    Static analyzer도 쓰시는지 궁금하고요.

    1. 사무엘 2013/11/06 00:03 # M/D Permalink

      역시 재주 님다운 수준 높은 질문이군요. ㅎㅎ
      TSF A급, B급, legacy 운영체제의 IME 환경 등.. 카테고리별 테스트 케이스는 있습니다. 하지만 매번 매뉴얼대로 꼼꼼하게 테스트를 하거나 자동화 절차까지 갖춰 놓은 정도는 아니구요.
      이번 7.1처럼 외부 모듈에서 아주 중요하고 민감하며, 변경시 side effect가 발생할 수 있는 부분은 그런 걸 더 신중하게 했어야 하는데 미처 생각지 못했던 부분에서 문제가 발생했었습니다.

      그리고 정적 분석은 마침 고맙게도 Visual Studio 2012에서 추가돼서 예전에 한번 전체 소스를 대상으로 돌려 본 적은 있습니다.
      하지만 생각만치 심각한 문제가 있지는 않았습니다. 또한 정적 분석을 제대로 활용하려면 함수 선언부에도 각종 메타정보를 다 공급해 줘야 하는데 그런 것까지는 활용을 못 했습니다. ^^;;

  2. Lyn 2013/11/08 10:32 # M/D Reply Permalink

    PVS Studio
    http://pvs-studio.viva64.com/

    도 추천드립니다.

    1. 사무엘 2013/11/08 21:23 # M/D Permalink

      오오, 고맙습니다. 정말 세상은 넓고 온갖 정보와 솔루션은 넘쳐나는군요..!

  3. 사샤나즈 2013/11/11 22:36 # M/D Reply Permalink

    오오오... Modern 앺에서 동기화 기능! 추가해주셔서 감사합니다! 이제 굳이 스카이프를 껐다 켜지 않아도 날개셋을 작동시킬 수 있겠군요! layerd도 고쳐졌네요 >.<

    어떤 프로그램에선 옛한글 입력하면 조합이 망가져 버리던 문제도 있었는데 아마 1번에서 말한 문제가 아니었나 싶네요! 프로그램 문제인가 하고 있었는데...

    1. 사무엘 2013/11/12 01:08 # M/D Permalink

      저도 바라던 소식입니다. 7.11이 가려운 곳 여러 군데를 긁어 주는 버전업이 됐군요. ^^
      저도 며칠간 써 봤습니다만 이번 버전은 진짜로 앞으로 몇 개월은 업데이트가 필요하지 않을 정도로 충분한 완성도를 갖추고 잘 만들어진 것 같습니다.

  4. 사샤나즈 2013/11/22 20:45 # M/D Reply Permalink

    이상하게 여전히 자꾸 두벌식으로 고정되는 경우가 있는데, 그 중 하나로 윈도8.1의 기본 스카이프 앺에서는 항상 날개셋이 두벌식으로 고정되는 거 같네요. 다른 프로그램에서 글자판을 모두 불러온 상태에서 다시 스카이프를 껐다가 켜도 계속 두벌식으로 고정되니 스카이프와 호환성 문제가 있는 것인지... @.@

    1. 사무엘 2013/11/23 07:33 # M/D Permalink

      음 그런가요? 정확하게 표현하자면, 데스크톱용 앱을 실행해서 날개셋을 로딩해 줬는데도 설정 동기화가 같이 되지 않는 '모던 앱'이 여전히 있다는 얘기지요? 내장 스카이프가 그 예 중 하나이고? (제가 갖고 있는 preview에는 그게 아직 포함되지 않아서 재연은 못 해 보겠네요)
      절 도와드리는 셈치고, 번거로우시겠지만 잘 적용되지 않는 조건/경우를 스스로 더 정확하게 구체적으로 정리해 보셨으면 좋겠습니다. ^^
      일단 7.11 이후로 당분간, 최하 내년 봄 이상까지는 날개셋은 버전업 계획이 잡혀 있지 않으니 시간은 많습니다.

      * 여담이지만 모던 UI라는 말은 또 스타일 UI로 공식적으로 또 바뀌었다네요? 저도 최근에 알았습니다. 어휴 자꾸 사람 헷갈리게.. 개인적으로는 메트로가 제일 고유명사스럽고 알아듣기 쉬웠는데.. -_-;;

    2. 사샤나즈 2013/11/23 15:25 # M/D Permalink

      테스트를 조금 더 해서 알아본 바로는 스카이프 앺과 윈도 스토어의 MetroTwit 앺에서 이런 증상이 나타납니다.
      탐색기나 기타 데스크탑 프로그램에서 입력기를 불러들여도 이 두 앺에서는 두벌식으로 고정되는데, 방금 찾은 임시방편은 데스크탑 IE를 켜고 페이지 내에 입력창이 있는 페이지를 IE에서 불러오면 그 즉시 증상이 풀립니다.

      //파폭이나 크롬, 또는 데스크탑용 MetroTwit을 켜도 즉시 풀리네요..
      나머지 Style UI(!) 앺들은 그냥 탐색기에서 입력해보는 것만으로(또는 Win+S를 눌러 검색 막대를 불러오는 것만으로) 입력기를 불러올 수 있게 되는데, 저 두 앺들만 특이하게 이런 증상이 있네요.

    3. 사무엘 2014/01/21 01:45 # M/D Permalink

      드디어 Windows 8.1 정식 버전을 설치해서 말씀하신 상황을 살펴봤습니다.
      하지만 스카이프의 채팅창만을 말씀하시는 거라면, Win+S만 눌렀다 되돌아와도 제 자리에서는 입력 설정의 동기화가 별 문제 없이 되는걸요.
      님의 블로그의 글에 댓글로 자세한 조건을 알려 드렸습니다.
      문제에 대한 재확인을 부탁드립니다.

    4. 사샤나즈 2014/01/21 06:09 # M/D Permalink

      문제를 영상으로 찍어 보았습니다. 첫 화면은 로그오프 뒤 처음 진입한 화면입니다.

      마지막 터치키보드가 나오지 않는 장면은 물리키보드를 썼습니다.
      http://sdrv.ms/1e8Pv4b

      환경은 64bit 영문입니다만 언어나 32/64bit 차이가 영향이 있는지는 잘 모르겠네요...

    5. 사무엘 2014/01/21 07:34 # M/D Permalink

      오옷, 굉장히 신속하게 답변해 주셔서 고맙습니다.

      데스크톱뿐만 아니라 메트로(Modern/Style/Win store app..-_-)에서도 곧장 Win+S를 누르면 되는군요. 그리고 32비트 전용 환경에서는.. 스카이프 → Win+S 만 갔다 와도 곧장 동기화가 문제 없이 돼 버립니다.
      또한 현재 <날개셋> 한글 입력기가 메트로와 데스크톱 사이에 입력 설정을 동기화하는 방식은.. 기술적으로는 비트 수를 가리는 방식이기도 합니다.
      그렇기 때문에 현재로서는 응용 프로그램의 비트 수를 의심해야 하지 않나 생각해 봅니다.

      혹시 스카이프는 메트로 기반이긴 하지만 32비트 프로그램이고, 동기화를 시켜 주는 프로그램들도 다 32비트라는 공통점이 있지 않은가요? 그렇잖아도 웹브라우저는 어지간해서는 여전히 32비트 프로그램이 대세잖아요? Win+S나 탐색기 같은 운영체제 셸이야 다 64비트일 테고.
      데스크톱에서는 <날개셋> 한글 입력기의 About 화면을 보면 동작하는 프로그램이 32비트인지 64비트인지 곧장 알 수 있습니다.

      이것을 확인 부탁드립니다~!
      비트수 때문이라는 게 판명되면.. 이 문제는 더 해결 가능하지 않고, 매뉴얼 '일러두기'에 아이템이 추가되어야 합니다.

    6. 사샤나즈 2014/01/27 12:23 # M/D Permalink

      아마 그 이야기가 맞는 것 같습니다.
      작업 관리자에서 스카이프를 32bit로 표시하고 있네요. 그 상태에서 같은 .NET 프로그램을 켜더라도 64bit로 돌아가는 .NET 프로그램을 켜면 스카이프 쪽과 동기화되지 않고 32bit 프로그램을 켜면 스카이프 쪽과 잘 동기화되네요!

      위에서 Firefox를 켰을 때 잘 동기화된다고 했었습니다만 64bit 빌드를 켰을 때는 동기화되지 않습니다. 이제 궁금증이 풀렸네요 :)

      이런 증상이 있는 스카이프와 MetroTwit 앺 모두 32bit로 돌아간다는 특징이 있군요!

    7. 사무엘 2014/01/28 09:20 # M/D Permalink

      OK! 메트로 앱은 C++/CLI 기반이어서 좀 managed 코딩 냄새가 나지만, 그래도 엄연히 비트 수를 구분하는 네이티브 기계어 프로그램이더군요. 저도 도움이 됐습니다. 감사합니다. :)

Leave a comment
« Previous : 1 : ... 1351 : 1352 : 1353 : 1354 : 1355 : 1356 : 1357 : 1358 : 1359 : ... 2141 : Next »

블로그 이미지

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

- 사무엘

Archives

Authors

  1. 사무엘

Calendar

«   2024/04   »
  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        

Site Stats

Total hits:
2676062
Today:
630
Yesterday:
2124