다솜 입력기 개발 일정 순서1

Thu, 23 Jul 2015 23:38

제가 오늘 다솜 입력기가 먹통되는 현상을 겪었습니다.ㅠㅠ

  1. 오늘 발견한 먹통 현상(race condition) 해결할 것.

  2. 우분투 유니티 한/영 표시기

  3. 정음(한글) 엔진 설정기 — 키 설정, 두벌식,세벌식 선택 기능.

이렇게 만들 예정입니다. 다음은 순서는 미정.
열심히 사용해 주세요.
감사합니다.


hodong 2015-07-24 10:36

0번 문제는 동기화 서버 설계 오류. 재현은 CTRL + Z 눌러서 응용 프로그램을 중단시키면 서버가 동기 신호를 받지 못하여 무한히 기다리게됨. 해결 방법은 스레드를 적용하면 되는데 끝글자가 엉뚱한 곳에 찍힐 수 있음.


hodong 2015-07-24 14:37

비동기 방식에서는 ibus에서 겪은 바와 같이 자질구레한 문제점이 발생되므로 동기화 방식을 고수할 것임. 그러나 동기화 방식에서는 스레드를 도입해야만 먹통 상태 해결 가능.
그러나 싱글톤 방식 때문에 오작동 소지 있음.

결론: 동기화 + 스레드 + 엔진 인스턴스 + 사전 싱글톤
(엔진 인스턴스의 경우 인스턴스 재사용을 통하여 최소량 사용 가능할 듯)

최선책은 현시대에 맞는 IM 프로토콜을 설계하는 것인데… 프로토콜 설계할 능력이 되질 않으니… 그나저나 구글 IME, MS IME는 어떤 방식인지 참 궁금함.


hodong 2015-07-25 01:50

그런데 다시 테스트해보니 이상하게도 재현이 안 되는데….
일단…
log를 통하여 확실하게 확인한 것은…
이상하게도 agent가 2개 연결되어 있는 경우가 있는데,
이런 경우 1개의 agent에는 전송이 되고 나머지 1개의 agent에는 g_socket_send() 가 API 문서에 따르면,
If the socket is in blocking mode the call will block until there is space for the data in the socket queue. 이렇게 되는 것이죠.


hodong 2015-07-25 02:38

재현 완료. 원인 파악 완료.
dasom-agent 를 터미널에서 실행시키고 CTRL + Z 누르면, dasom-agent 가 중단됩니다.
그러고나서 dasom-agent로 패킷을 여러번 보내면 (g_socket_send () 를 여러 번 하면) g_socket_send()가 If the socket is in blocking mode the call will block until there is space for the data in the socket queue. 이렇게 되는 것이죠.


hodong 2015-08-03 04:34

  1. 먹통 현상(race condition)은 2015년 7월 25일 수정 이후로 발생되지 않음. 그래서 스레드 도입하지 않았음.

  2. 우분투 유니티 한/영 표시기는 만들긴 했는데 좀 모양이 안 이쁨.

  3. 정음(한글) 엔진 설정

GUI를 만들지 않았지만 dconf-editor로 설정이 가능함.
아래 경로 및 키 이름은 추후 바뀔 수 있습니다.
org –> freedesktop –> dasom –> engines –> jeongeum
한글 기본키로 한글키, 쉬프트+오른쪽ALT키, 오른쪽ALT키
기본 한자키로 한자키, 오른쪽CONTROL키
기본키를 설정해 두었습니다.
따라서 노트북 자판에서 한영 전환 가능합니다.

다만, 한자창에 버그가 약간 있긴 합니다.

그리고 우분투에서 ALT키로 한영 전환하려면 우분투 데스크탑에서 ALT 단축키로 되어 있는 걸 해제하여야 할 겁니다.
다른 방법으로는 xmodmap 이런 걸로 ALT_R 대신 Hangul로 맵핑해야 할 겁니다. 안 그러면 단축키가 작동되는 안습 상황 발생합니다.
http://egloos.zum.com/nemonein/v/5222946


hodong 2015-08-09 02:35

2015년 8월 8일부로 특수문자 지원합니다.
또한 한자창에 10개 항목 나오도록 크기 수정 및 스크롤바 정상 작동하고록 고침.
한자창이 커서 위치에 뜨드록 수정했습니다.

2015년 8월 8일부로 한글 입력기로서 필요한 최소한의 기능은 모두 갖춘 것 같습니다.
키 설정 GUI 이런 것도 있으면 좋겠지만… dconf-editor 을 이용하여 키를 설정할 수 있긴 합니다.

gnome shell 이용하시는 분은

gnome-shell-extension-tool -e dasom-agent@gnome-shell-extensions.cogno.org

이렇게 extension을 활성화해주셔야 패널에 한/영 상태가 표시됩니다.
dasom-agent@gnome-shell-extensions.cogno.org 이름은 미래에 예고없이 변경될 수도 있습니다.

설치는 README 파일을 참고하세요.