rdic server

普段 rdic という辞書を使っています。

http://www.yasgursfarm.us/rdic/

これはとても便利なのですが、コマンドラインからも使いたいということで安易にサーバ化。

--- rdic.orig   2005-04-20 16:44:27.000000000 +0900
+++ rdic        2006-11-19 21:37:08.000000000 +0900
@@ -4649,6 +4649,28 @@
       }
       GC.start
     end
+
+    Thread.start {
+      require 'socket'
+      dic = DictionaryMgr.instance()
+      serv = TCPServer.open('localhost', 52628)
+      while true
+        Thread.start(serv.accept) do |s|
+          while s.gets
+            a = []
+            dic.lookup_complete_match_each($_.chomp, false) do |l|
+              a << l
+            end
+            s.puts(a.size)
+            a.each do |l|
+              s.print(l)
+            end
+          end
+          s.close
+        end
+      end
+    }
+

     RdicMain::run do
       rdicctl = RdicViewControll.new(rdicmgr, history)

まぁせっかく常駐してるのでサーバ化してもらおうと。 52628 って数字は RFC2229 に将来的に対応は…しないというようなそんな。

#!/usr/bin/env ruby

require "socket"

s = TCPSocket.open('localhost', 52628)

s.puts(ARGV[0])
n=s.gets.to_i
for i in 0...n
  s.gets
  $_.chomp!
  puts $_
end
STDOUT.flush

s.close

クライアントはこんなもんで。ライセンスは Ruby のやつ。

ついでに発音記号が出るフォントなども入れたのでだいぶしあわせになりました。 mirc も eijiro とかつけよかな。

i@u ~> dict desk
■desk : 【発音】désk、【@】デスク、【変化】《複》desks、【レベル】1  【名】机、編集主任
なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h