마우스로 더블 클릭하는 미니 사전

공부하면서 자세한 뜻과 예문을 보여주는 기능에 대한 필요성을 느낍니다.
영문 속독을 위해 현재와 같은 간단한 뜻 보여주는 것은 유지되어야 합니다.
이것을 유지하면서 자세한 뜻과 예문을 보여주는 기능을 추가하고 싶습니다.

이미 실험해 놓은 코드가 있어서 기능 추가는 어렵지 않는데
요새 공부하냐고 바뻐서 UI 설계할 시간이 없습니다.
UI 설계(창, 버튼, 알림 영역, 위치, 배치 등)해 주시면 반영해보겠습니다.

지연되는 오류 고쳐서 응답성을 획기적으로 개선했습니다.
소스는 이곳에서

http://github.com/cogniti/minidict

[quote="cogniti":1iry396k]지연되는 오류 고쳐서 응답성을 획기적으로 개선했습니다.
소스는 이곳에서

http://github.com/cogniti/minidict[/quote:1iry396k]

에러 나오는데요. 8-)
minidict.rb:182: uninitialized constant Dict::StringIO (NameError)

저번에 말씀 드린 것은
기존 출력양식에서 품사 정도만 더 나오면 좋겠다는 얘기였습니다.
지금으로서도 귀엽고 나름의 개성도 있는 것 같습니다.

1.8.x 에서 안 되는 오류 고쳤습니다.

[quote="cogniti":px0lnq3p]1.8.x 에서 안 되는 오류 고쳤습니다.[/quote:px0lnq3p]
됩니다. :P
사용 중의 불편한 점은… 이전에도 그랬었는지 기억이 안나는데요.
문서에서 영어단어 부분을 더블클릭하면 사전 창이 클릭한 곳을 중심으로 뜨게 됩니다.
사전을 다 보고, 찾아 봤던 단어 옆의 문서 내용을 봐야 하는데 창이 떡하니 버티고 있습니다.

클릭한 곳의 하단에 사전 창이 떠 줬으면 좋겠다는 겁니다.
그리고 클릭한 곳에 마우스 포인터 이동없이 그 자리에서 클릭해서 창이 사라질 수 있게 공간을 남겨 줄 필요가 있습니다.

창 제목 표시줄이라고 하나요?
그 부분은 없어도 될 것 같은데요. 걸리적 거린다는 기분도 들구요.
닫기, 최소화, 창 조절… 별 의미는 없죠.
이건 그다지 불편하지는 않습니다.

우분투 사용하면서 여러가지 사전을 봐 왔었는데요.
이 사전도 생각보다 좋습니다.
설치하는게 좀 번거로워서 deb 파일로 했으면 좋겠다는 생각도 했습니다.

잘 쓰겠습니다. :P

ruby 를 한 번도 본적은 없지만,
대충 소스를 본 결과,
창의 위치를 현재 마우스 커서의 우 하단으로 놓기 위해서는

line 76:
@window.gravity = Gdk::window::GRAVITY_CENTER

@window.gravity = Gdk::window::GRAVITY_NORTH_WEST

으로 수정하면 되는 듯합니다.

저도 윗 분 의견 처럼, 가능하면, 의존성을 넣고 deb 으로 패키징 하고,
창의 테두리는 아예 없어도 되지 않을까 싶습니다…
사실 컴퓨터의 성능이 부족함에도 compiz 를 돌리는 데, 이 녀석의 경우 테두리가 한 박자 늦게 뜨거나 아예 안뜨기도 하는군요.

유용히 잘 쓰겠습니다.

[quote:lv5obwtw]1. 사전 창 위치
2. 제목 표시줄 문제[/quote:lv5obwtw]
사전 창 위치는 개선 필요성을 느끼고 있습니다.
제목 표시줄을 넣은 이유는 프로그램 종료 때문인데,
제목 표시줄 없이 마우스 클릭으로 종료할 수 있는 방법을 모색해보겠습니다.
이를테면 TextView 또는 Window, Frame 내에 버튼을 넣는다던가 하는 방식을 고려하겠습니다.

그리고 품사 등, 예문을 표시할 수 있는 옵션(이를테면: "자세히 보기" 버튼)을 만들까 합니다.

개선 건의 사항 올립니다.

동사의 3인칭 단수 현재 형태나 명사의 복수형태에서,
단어 끝에 붙는 -s 혹은 -es 가 있는 단어의 경우
대부분의 경우는 잘 찾지만
또한 드물지 않게 단어 찾기에 실패하는 경우가 있습니다.

다른 희망사항으로는…
가능하다면 단어의 발음도 들을 수 있었으면 좋겠습니다.

이번에 다시 다운 받아서 실행 시켜보니
일전에 있었던 창의 위치와 관련된 부분은 수정되어 있더군요.
추가로 단어 발음 기호도 나오네요.(이것도 제 희망사항이었는데요. :oops: )

다른 사전과 비교해 봐도 참 괜찮은 사전입니다.
가독성이 좋다고 생각했었는데 이유를 생각하다 보니
다른 사전과 달리 단어의 뜻이 한 줄씩 분리되어 있어서 그렇지 않나 하는 생각이 드네요.

영어공부에 많은 도움이 될 것 같습니다.
감사합니다. :P

1.9.x 에서 테스트했습니다.
1.8.x 에서 작동하지 않는다면 알려주세요.
기존에 있던 cache.db 파일 삭제 후에 사용하세요.

소스는 이곳에서

http://github.com/cogniti/minidict

[b:19hv94tm]변경사항[/b:19hv94tm]

예문도 나옵니다.

[quote:19hv94tm]단어 끝에 붙는 -s 혹은 -es 가 있는 단어[/quote:19hv94tm]
사전 소스를 변경하여 아마 -s, -es 도 제대로 나올 듯합니다.
사전 소스는 구글 서버에서 json 형식으로 가져옵니다.

[code:19hv94tm]단어의 발음 듣기[/code:19hv94tm]
발음파일.mp3 라는 파일이름이 지저분하게 TextView 창에 나타납니다.
구현 중입니다.

[b:19hv94tm]할 일[/b:19hv94tm]

발음듣기 구현(천천히 구현할 생각)
예문 나오기 / 안 나오기 선택 기능 구현
강조(bold) 단어 구현

[b:19hv94tm]알려진 버그[/b:19hv94tm]

x3c x3e 이런 식으로 이상한 문자가 나오는 경우가 있는데, 그거는 tag 등의 정보입니다.
발견 후, 알려주시면 사전 창에 표시가 안 되도록 적용하겠습니다.
단어 "a" 의 경우 index가 이상하게 표시됩니다.

우분투 10.04
ruby1.8

사용하다 보니 minidict.rb 파일을
/home/사용자계정/bin 에 두고 사용했는데요.
/home 디렉토리에 cache.db 파일이 하나 생기고
/home/사용자계정/bin 디렉토리에 cache2.db 파일이 하나 생겼습니다.
두 개 다 삭제하고 새로운 minidict.rb 파일을 다운 받아서 실행했습니다.
에러가 발생하네요.

[code:32a1qzj0]minidict.rb:6:in `require’: no such file to load – gtk2 (LoadError)
from minidict.rb:6
[/code:32a1qzj0]
다시 예전 파일과 cache.db 파일 두개를 휴지통에서 되살리고
실행시켰더니 똑같은 에러가 나오네요.

ruby1.9 쓸려고 1.8 삭제하고 1.9 설치하니까
파일을 못 찾겠다는 에러가 나오네요.
1.9 설치하는 다른 방법이 있나요?

1.9 용 gtk2 가 설치되지 않아서 발생한 에러입니다.

[code:2oya4m3x]sudo gem1.9.1 install gtk2[/code:2oya4m3x]

이렇게 설치한 후에 다시 실행해보세요.
그리고 방금전에 minidict 버그 발견해서 고쳤습니다.

https://github.com/cogniti/minidict

sudo gem1.9.1 install gtk2

하니까 이렇게 나오네요.

sudo: gem1.9.1: command not found

우선 ruby1.9.1 -v 또는 ruby -v 명령을 통하여 자신의 컴퓨터에 어떤 버전이 설치되었는지 확인이 필요합니다.

http://packages.ubuntu.com/maverick/amd ... 1/filelist

ruby1.9.1 설치하셨으면
gem1.9.1 도 같이 설치됩니다. gem1.9.1 패키지가 따로 있지는 않습니다.

아마 ruby1.8.x 을 설치하신 것 같은데,
그 경우 libgtk2-ruby 패키지를 설치해주면 됩니다.
sudo apt-get install libgtk2-ruby

요새 공부하냐고 minidict 업데이트를 했는데,
제가 만든거라서 제 입으로 말하기 거시기 하지만
인터넷에서 문서 보면서 바로 사전에서 단어 찾으니 좋긴 좋네요. :)

akuna님 열공하세요 ;)

루비 버전은 ruby1.8.7 이네요.
댓글 주시기 전에 libgtk2-ruby 패키지를 설치해 봤었는데
동일한 메시지가 나오길래 설치한 것 다 지웠었습니다.

다시 libgtk2-ruby 설치해 보니 여전히 에러 메시지가 나오는데
자세히 보니 에러 메시지가 틀립니다.
json 부분이 그 전 에러 메시지와 다른 부분입니다.

minidict.rb:10:in `require’: no such file to load – json (LoadError)
from minidict.rb:10

또 해결방법을… 8-)

사전은 정말 마음에 듭니다.
잘 만드셨어요.
파이어폭스 부가기능 중에도 비슷한 유형의 사전이 있는데요.
minidict 보다는 좀 못한 것 같구요.

일반 문서나 PDF 문서 볼 때도 좋습니다.

아…PDF 문서 얘기가 나왔으니 잊어 먹기 전에 건의사항 하나 올립니다.
웹 브라우저에서는 단어를 클릭하면 , . ? ( ) [] ’ "! …
이런 기호가 단어 옆에 있어도 더블 클릭하면 단어만 선택되서 사전이 잘 작동합니다.
그런데 이 PDF 문서에서는 더블클릭하면 문자 옆에 인접한 그런 기호가 다 붙어서 범위 선택이 됩니다.
드래그 해서 범위 지정을 해야 하는데…
귀찮기도 하고 또한 그 범위 지정이 일반문서 보다 PDF 문서에서 하기가 더 어렵습니다.
섬세하게 잘 드래그해야 합니다.

저런 기호들이 단어 앞 뒤로 붙을 경우 제거하고 검색하게 할 수 있을까요?

ㅎㅎ 요구사항이 많습니다.
덕분에 좋은 사전 잘 사용하고 있습니다.
계속 유지 발전 시켜 주십시오. :P

필요로 하는 패키지
gtk2, json, gdbm, ruby

다음처럼 하면 루비 1.8.x 버전과 필요로 하는 패키지가 설치됩니다.
아마, 먼 훗날에는 1.9.x 가 설치될 겁니다.

[code:1zr2271d]sudo libgtk2-ruby libjson-ruby libgdbm-ruby ruby[/code:1zr2271d]
이렇게 설치하고 ruby minidict.rb 해보니 잘되는 것 같네요.

참고로, 루비 1.9.x 버전에는 json, gdbm 이 내장되어 있는 것 같습니다.
제가 1.9 버전을 고집하는 이유는 한가지 입니다. 유니코드 지원.

PDF 문서의 경우, 마우스로 더블 클릭하면 문서에 따라서(주로 다단으로 된 문서) 광범위하게 선택되는 경우가 있습니다. 이런 거는 pdf 뷰어에서 해결해줘야 하는 문제라서 minidict 에서 해결하기가 어렵습니다.

조만간 README 파일에서 설치 방법을 업데이트 하겠습니다.
감사합니다.

이제… 됩니다. ;)

루비 1.9.x 버전의 유니코드 지원 얘기는 소문으로 들었습니다.
시냅팁 패키지 관리자에서 검색해 보면 루비 1.9.x 버전이 있는 것 같은데요.
아까 설치해 봤었는데 minidict 이 실행이 안되더군요.
시냅틱에 검색된 것은 미완성인지 제가 잘못 적용한 것인지… :oops:

PDF 문서와 관련된 것은 해결하기가 어렵군요.
잘 알겠습니다.

새로 올리신 minidict 을 사용해 보니…
의도하신 것 인지, 아니면 잘못 적용된 것인지 두 가지 현상이 눈에 띄는군요.
단어 뜻 위에 예문이 위치하고 있습니다. 일반적으로 단어 뜻이 먼저 나오고 그 아래에 예문이 나옵니다.
품사 표시가 그 품사 마지막 단어 뜻이 끝나는 위치에 있습니다. 일반적으로 품사 표시는 첫번째 단어 뜻 이전에 나옵니다.

이번에는 예문까지 나와서 금방 알아보기는 힘든 부분이 있네요.
말씀하신 대로 ‘간략하게 보기’ 버튼도 필요하겠군요.
앞으로 개성있는 사전이 될 것 같습니다.
기대가 됩니다.
감사합니다.

의도한 거는 아니고 1.9.x 에서는 정상적으로 나오는데,
1.8.x 에서는 그렇게 나오는군요. 미처 확인하지 못했습니다.
아마 변수 바인딩 문제 때문에 그런거 같은데 조만간 해결될 겁니다.

아, 그리고 1.8.x, 1.9.x 설치 방법 적어놓았습니다.

https://github.com/cogniti/minidict#readme

루비 버전 때문에 이런 일이 생기는군요.
어서 1.9.x 로 올라가야겠네요. 8-)

1.9.x 설치 방법 보고 설치하다 안되서 왔습니다.
ruby1.9.1 설치하고
sudo gem1.9.1 install gtk2 하니
이런 에러 메시지가 나오구요.
sudo: gem1.9.1: command not found

설치할 때 나온 제안하는 패키지를 더 설치했습니다.
sudo apt-get install ruby1.9.1-examples rdoc1.9.1 ri1.9.1 rubygems1.9.1
그 다음에 실행해 보거나
sudo gem1.9.1 install gtk2 명령으로 나온 에러 메시지들 입니다.

[code:1fm5q1we]akuna@akuna-desktop:~$ ruby1.9.1 /home/akuna/bin/minidict.rb
Building native extensions. This could take a while...
ERROR: Error installing gtk2:
ERROR: Failed to build gem native extension.

/usr/bin/ruby1.9.1 extconf.rb
extconf.rb:6:in require'&#58; no such file to load -- mkmf (LoadError) from extconf&#46;rb&#58;6&#58;in <main>’

Gem files will remain installed in /var/lib/gems/1.9.1/gems/cairo-1.10.0 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/cairo-1.10.0/ext/cairo/gem_make.out
[/code:1fm5q1we]

[code:1fm5q1we]
akuna@akuna-desktop:~$ sudo gem1.9.1 install gtk2
Building native extensions. This could take a while...
ERROR: Error installing gtk2:
ERROR: Failed to build gem native extension.

/usr/bin/ruby1.9.1 extconf.rb
checking for GCC... yes
checking for Win32 OS... no
checking for Mac OS X... no
checking for cairo version (>= 1.2.0)... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
–with-opt-dir
–without-opt-dir
–with-opt-include
–without-opt-include=${opt-dir}/include
–with-opt-lib
–without-opt-lib=${opt-dir}/lib
–with-make-prog
–without-make-prog
–srcdir=.
–curdir
–ruby=/usr/bin/ruby1.9.1
–with-pkg-config
–without-pkg-config
–with-override-variables
–without-override-variables

Gem files will remain installed in /var/lib/gems/1.9.1/gems/cairo-1.10.0 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/cairo-1.10.0/ext/cairo/gem_make.out[/code:1fm5q1we]

[code:1fm5q1we]akuna@akuna-desktop:~$ ruby1.9.1 /home/akuna/bin/minidict.rb
/home/akuna/bin/minidict.rb:6:in require'&#58; no such file to load -- gtk2 (LoadError) from /home/akuna/bin/minidict&#46;rb&#58;6&#58;in <main>'[/code:1fm5q1we]
우분투 10.04 인데요.
루비 1.8.7 설치된 상태에서 했습니다.
에러 메시지는 정성스럽게 나와서 될 것 같기는 한데 잘 모르니…
잘 안되면 다음에 검색 좀 해 보고 다시 해 보든지 해야 겠네요.
좋은 밤 되세요. :P

ruby 1.8.x 에서 결과가 제대로 안 나온 원인은
hash 방식의 차이 때문이었습니다.
1.8.x 에서는 임의의(arbitrary) 해시이고
1.9.x 에서는 정렬된(ordered) 해시입니다.

소스를 고쳐서 ruby 1.8.x 지원합니다.
빼먹는 것 없이 결과를 출력해 주는지는 좀 더 테스트해봐야 할 듯.

그리고 gem1.9.1 install gtk2 에서 에러나는 이유는
헤더 파일 등이 없기 때문입니다.
ruby1.9.1-full 하면 ruby1.9.1-dev 도 설치가 됩니다.

[code:4x04ap0v]
sudo apt-get install ruby1.9.1-full rubygems1.9.1
sudo apt-get install build-essential pkg-config libgnome2-dev
sudo gem1.9.1 install gtk2
[/code:4x04ap0v]

아마 잘 될 겁니다.

일단…
sudo apt-get install ruby1.9.1-full rubygems1.9.1
sudo apt-get install build-essential pkg-config libgnome2-dev
sudo gem1.9.1 install gtk2
해도 에러가 납니다.

에러 메시지는 동일합니다.
ruby1.9.x 을 사용하는게 아직은 보편적이지 않은 것 같네요.

새로 올라온 minidict 를 간단하게 시험해 봤습니다.
대부분의 경우에 정상적이었습니다만…
때로는 이상하게 나올 때도 있습니다.

품사표시 아래 부분의 빈 공간이 생깁니다.
그리고 1,2,3,4… 표시가 여러 용도로 사용되는 것 같은데요.
같은 화면에 나올 경우에는 내용 파악하는데 약간 어려움이 있네요.
또 가끔 품사표시가 예전 처럼 단어 뜻 아래 쪽에 표시 될 때도 있구요.
[attachment=1:3shvgpj9]screenshot15.png[/attachment:3shvgpj9]
[attachment=0:3shvgpj9]screenshot14.png[/attachment:3shvgpj9]
뭐 하나 만드는게 쉬운일이 아니군요. :roll:
천천히 시간을 두고 여유있게 하세요. :P