sekka 0.8.1 → 0.8.2
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/sekka-benchmark +135 -0
- data/emacs/sekka.el +52 -53
- data/lib/sekka/kvs.rb +1 -0
- data/lib/sekka/sekkaversion.rb +1 -1
- data/lib/sekkaserver.rb +14 -6
- data/test/approximate-bench.nnd +1 -1
- data/test/azik-verification.nnd +1 -1
- data/test/henkan-main.nnd +1 -1
- metadata +5 -15
data/bin/sekka-benchmark
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# -*- mode: nendo; syntax: scheme ; coding: utf-8 -*-
|
3
|
+
require 'nendo'
|
4
|
+
$LOAD_PATH.push( File.dirname(__FILE__) + "/../lib" )
|
5
|
+
core = Nendo::Core.new()
|
6
|
+
core.setArgv( ARGV )
|
7
|
+
core.loadInitFile
|
8
|
+
core.evalStr( <<";;END-OF-SCRIPT" )
|
9
|
+
;;;
|
10
|
+
;;; sekka-benchmark - sekka-serverのベンチマークプログラム
|
11
|
+
;;;
|
12
|
+
;;; Copyright (c) 2010 Kiyoka Nishiyama <kiyoka@sumibi.org>
|
13
|
+
;;;
|
14
|
+
;;; Redistribution and use in source and binary forms, with or without
|
15
|
+
;;; modification, are permitted provided that the following conditions
|
16
|
+
;;; are met:
|
17
|
+
;;;
|
18
|
+
;;; 1. Redistributions of source code must retain the above copyright
|
19
|
+
;;; notice, this list of conditions and the following disclaimer.
|
20
|
+
;;;
|
21
|
+
;;; 2. Redistributions in binary form must reproduce the above copyright
|
22
|
+
;;; notice, this list of conditions and the following disclaimer in the
|
23
|
+
;;; documentation and/or other materials provided with the distribution.
|
24
|
+
;;;
|
25
|
+
;;; 3. Neither the name of the authors nor the names of its contributors
|
26
|
+
;;; may be used to endorse or promote products derived from this
|
27
|
+
;;; software without specific prior written permission.
|
28
|
+
;;;
|
29
|
+
;;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
30
|
+
;;; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
31
|
+
;;; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
32
|
+
;;; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
33
|
+
;;; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
34
|
+
;;; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
35
|
+
;;; TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
36
|
+
;;; PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
37
|
+
;;; LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
38
|
+
;;; NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
39
|
+
;;; SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
40
|
+
;;;
|
41
|
+
;;; $Id:
|
42
|
+
;;;
|
43
|
+
(require "benchmark")
|
44
|
+
(define (bench-block title block)
|
45
|
+
(print "----------------------------------------")
|
46
|
+
(printf "[%s]\n" title )
|
47
|
+
(.puts Benchmark::CAPTION)
|
48
|
+
(.puts (Benchmark.measure
|
49
|
+
(&block ()
|
50
|
+
(block)))))
|
51
|
+
|
52
|
+
|
53
|
+
(define (gen-curl-command-string keyword limit)
|
54
|
+
(let ((host "localhost"))
|
55
|
+
(sprintf "curl --silent --show-error --max-time 60 --insecure --header 'Content-Type: application/x-www-form-urlencoded' http://%s:12929/henkan --data 'format=sexp' --data 'yomi=%s' --data 'limit=%d' --data 'method=normal' --data 'userid=%s' > /dev/null" host keyword limit "benchuser")))
|
56
|
+
|
57
|
+
|
58
|
+
(define (henkan-with-same-keyword limit)
|
59
|
+
(let1 cmd (gen-curl-command-string "Kanji" limit)
|
60
|
+
(bench-block
|
61
|
+
(sprintf "Samekey limit=%d (all request hits memcached)" limit)
|
62
|
+
(lambda ()
|
63
|
+
(for-each
|
64
|
+
(lambda (x)
|
65
|
+
(display ".")
|
66
|
+
(.system cmd))
|
67
|
+
(range 100))
|
68
|
+
(newline)))))
|
69
|
+
|
70
|
+
(define (henkan-with-uniq-keyword limit)
|
71
|
+
(let1 keylist
|
72
|
+
'(
|
73
|
+
"Aimai" "Ao" "Aoumigame" "Akakeitou"
|
74
|
+
"Bangou" "Bankai" "Banninkyoutuu" "Banouyaku"
|
75
|
+
"Chance"
|
76
|
+
"Dangai" "Daiichihousoku" "Daigakuin" "Daidokoro"
|
77
|
+
"Enjin" "Eigyoukatudou" "Eiseikidou" "Ebisu"
|
78
|
+
"Fantaji-"
|
79
|
+
"Goukaku" "Gakkou" "Gaikoku" "Gakki" "Gamenkeishiki" "Gamensaizu" "Garapagosu" "Gankyuu"
|
80
|
+
"Hinode" "Hi-ro-" "Hiroshima" "Hinjaku" "Hakari" "Ha-monika" "Haru"
|
81
|
+
"Iwanami" "Ikimono" "Inarizushi" "Iso" "Ishi" "Ima" "Imi" "Inu"
|
82
|
+
"Jinkoumondai" "Jinkoueisei" "Jiken" "Jiko" "Jirou" "Jakouneko"
|
83
|
+
"Kousei" "Kaisen" "Kiso" "Kisokenkyuu" "Kisoshikkan" "Kenkyuukikan" "Kenkyuunaiyou"
|
84
|
+
"London" "Lonly" "Load" "Love" "Listen" "List"
|
85
|
+
"Manyousyuu"
|
86
|
+
"Nouzei" "Namae" "Nakanaka" "Nihongohenkan" "Nihongo" "Nishi"
|
87
|
+
"Okinawa" "Oudanhodou"
|
88
|
+
"Painappuru" "Pa-sonaru"
|
89
|
+
"Quizu"
|
90
|
+
"Rokuon" "Rasenkaidan" "Risoku" "Risuku"
|
91
|
+
"Sougouhyouka" "Sougou" "Son" "Soro"
|
92
|
+
"Tuuka" "Tuika" "Taiyou" "Taiou" "Tamatama"
|
93
|
+
"Umi" "Ushiro" "Utagoe" "Uso" "Ukai"
|
94
|
+
"World" "Watagashi" "Watarigani"
|
95
|
+
"Yamagataken" "Yamai" "Yu-suke-su"
|
96
|
+
"Zonbi" "Zou" "Zanshin" "Zannen"
|
97
|
+
)
|
98
|
+
|
99
|
+
(bench-block
|
100
|
+
(sprintf "Uniqkey limit=%d" limit)
|
101
|
+
(lambda ()
|
102
|
+
(for-each
|
103
|
+
(lambda (x)
|
104
|
+
(let1 cmd (gen-curl-command-string x limit)
|
105
|
+
(display ".")
|
106
|
+
(.system cmd)))
|
107
|
+
keylist)
|
108
|
+
(newline)))))
|
109
|
+
|
110
|
+
|
111
|
+
(define (display-help)
|
112
|
+
(print "Usage : ")
|
113
|
+
(print " sekka-benchmark samekey0 .... henkan 100 times with same keyword [Kanji] (get N candidate)")
|
114
|
+
(print " sekka-benchmark samekey1 .... henkan 100 times with same keyword [Kanji] (get 1 candidate)")
|
115
|
+
(print " sekka-benchmark uniqkey0 .... henkan 100 times with uniq keywords [Aimai Ao ...] (get N candidate)"))
|
116
|
+
|
117
|
+
|
118
|
+
(define (main argv)
|
119
|
+
(cond
|
120
|
+
((= 0 (length argv))
|
121
|
+
(display-help))
|
122
|
+
(else
|
123
|
+
(let1 command (string->symbol (first argv))
|
124
|
+
(cond
|
125
|
+
((eq? 'samekey0 command)
|
126
|
+
(henkan-with-same-keyword 0))
|
127
|
+
((eq? 'samekey1 command)
|
128
|
+
(henkan-with-same-keyword 1))
|
129
|
+
((eq? 'uniqkey0 command)
|
130
|
+
(henkan-with-uniq-keyword 0))
|
131
|
+
(else
|
132
|
+
(errorf "Error: no such command [%s] \n" command )))))))
|
133
|
+
|
134
|
+
(main *argv*)
|
135
|
+
;;END-OF-SCRIPT
|
data/emacs/sekka.el
CHANGED
@@ -55,11 +55,6 @@
|
|
55
55
|
:type 'string
|
56
56
|
:group 'sekka)
|
57
57
|
|
58
|
-
(defcustom sekka-use-viper nil
|
59
|
-
"*Non-nil であれば、VIPER に対応する"
|
60
|
-
:type 'boolean
|
61
|
-
:group 'sekka)
|
62
|
-
|
63
58
|
(defcustom sekka-realtime-guide-running-seconds 30
|
64
59
|
"リアルタイムガイド表示の継続時間(秒数)・ゼロでガイド表示機能が無効になる"
|
65
60
|
:type 'integer
|
@@ -369,14 +364,17 @@
|
|
369
364
|
;; ユーザー語彙をサーバーに登録する。
|
370
365
|
;;
|
371
366
|
(defun sekka-register-userdict-internal ()
|
372
|
-
(let ((str
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
367
|
+
(let* ((str (sekka-get-jisyo-str "~/.sekka-jisyo"))
|
368
|
+
(str-lst (sekka-divide-into-few-line str)))
|
369
|
+
(mapcar
|
370
|
+
(lambda (x)
|
371
|
+
;;(message "Requesting to sekka server...")
|
372
|
+
(sekka-debug-print (format "register [%s]\n" x))
|
373
|
+
(let ((result (sekka-rest-request "register" `((dict . ,x)))))
|
374
|
+
(sekka-debug-print (format "register-result:%S\n" result))
|
375
|
+
(message result)))
|
376
|
+
str-lst)
|
377
|
+
t))
|
380
378
|
|
381
379
|
|
382
380
|
;;
|
@@ -392,17 +390,52 @@
|
|
392
390
|
t))
|
393
391
|
|
394
392
|
|
393
|
+
;; str = "line1 \n line2 \n line3 \n line4 \n line5 \n "
|
394
|
+
;; result:
|
395
|
+
;; '(
|
396
|
+
;; ("line1 \n line2 \n line3 \n ")
|
397
|
+
;; ("line4 \n line5 \n ")
|
398
|
+
;; )
|
399
|
+
;;
|
400
|
+
;; for-testing:
|
401
|
+
;; (sekka-divide-into-few-line
|
402
|
+
;; "line1 \n line2 \n line3 \n line4 \n line5 \n line6 \n line7 \n line8 \n line9 \n line10 \n line11 \n line12 \n")
|
403
|
+
;;
|
404
|
+
(defun sekka-divide-into-few-line (str)
|
405
|
+
(if (stringp str)
|
406
|
+
(let ((str-lst (split-string str "\n"))
|
407
|
+
(result '()))
|
408
|
+
(while (< 0 (length str-lst))
|
409
|
+
(push
|
410
|
+
(concat
|
411
|
+
(pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n"
|
412
|
+
(pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n"
|
413
|
+
|
414
|
+
(pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n"
|
415
|
+
(pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n"
|
416
|
+
|
417
|
+
(pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n"
|
418
|
+
(pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n"
|
419
|
+
|
420
|
+
(pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n"
|
421
|
+
(pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n"
|
422
|
+
|
423
|
+
(pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n"
|
424
|
+
(pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n" (pop str-lst) "\n"
|
425
|
+
)
|
426
|
+
result))
|
427
|
+
(reverse result))
|
428
|
+
'()))
|
429
|
+
|
395
430
|
(defun sekka-get-jisyo-str (file &optional nomsg)
|
396
|
-
"FILE を開いて
|
397
|
-
オプション引数の NOMSG を指定するとファイル読み込みの際のメッセージを表示しな
|
398
|
-
い。"
|
431
|
+
"FILE を開いて Sekka辞書バッファを作り、バッファ1行1文字列のリストで返す"
|
399
432
|
(when file
|
400
433
|
(let* ((file (or (car-safe file)
|
401
434
|
file))
|
402
435
|
(file (expand-file-name file)))
|
403
436
|
(if (not (file-exists-p file))
|
404
437
|
(progn
|
405
|
-
(message (format "
|
438
|
+
(message (format "Sekka辞書 %s が存在しません..." file))
|
406
439
|
nil)
|
407
440
|
(let ((str "")
|
408
441
|
(buf-name (file-name-nondirectory file)))
|
@@ -410,12 +443,10 @@
|
|
410
443
|
(find-file-read-only file)
|
411
444
|
(setq str (with-current-buffer (get-buffer buf-name)
|
412
445
|
(buffer-substring-no-properties (point-min) (point-max))))
|
413
|
-
(message (format "
|
446
|
+
(message (format "Sekka辞書 %s を開いています...完了!" (file-name-nondirectory file)))
|
414
447
|
(kill-buffer-if-not-modified (get-buffer buf-name)))
|
415
448
|
str)))))
|
416
449
|
|
417
|
-
;;(sekka-get-jisyo-str "~/.sekka-jisyo")
|
418
|
-
|
419
450
|
|
420
451
|
;; ポータブル文字列置換( EmacsとXEmacsの両方で動く )
|
421
452
|
(defun sekka-replace-regexp-in-string (regexp replace str)
|
@@ -998,36 +1029,6 @@
|
|
998
1029
|
(point))
|
999
1030
|
result)))))
|
1000
1031
|
|
1001
|
-
|
1002
|
-
;;;
|
1003
|
-
;;; with viper
|
1004
|
-
;;;
|
1005
|
-
;; code from skk-viper.el
|
1006
|
-
(defun sekka-viper-normalize-map ()
|
1007
|
-
(let ((other-buffer
|
1008
|
-
(if (featurep 'xemacs)
|
1009
|
-
(local-variable-p 'minor-mode-map-alist nil t)
|
1010
|
-
(local-variable-if-set-p 'minor-mode-map-alist))))
|
1011
|
-
;; for current buffer and buffers to be created in the future.
|
1012
|
-
;; substantially the same job as viper-harness-minor-mode does.
|
1013
|
-
(viper-normalize-minor-mode-map-alist)
|
1014
|
-
(setq-default minor-mode-map-alist minor-mode-map-alist)
|
1015
|
-
(when other-buffer
|
1016
|
-
;; for buffers which are already created and have
|
1017
|
-
;; the minor-mode-map-alist localized by Viper.
|
1018
|
-
(dolist (buf (buffer-list))
|
1019
|
-
(with-current-buffer buf
|
1020
|
-
(unless (assq 'sekka-mode minor-mode-map-alist)
|
1021
|
-
(setq minor-mode-map-alist
|
1022
|
-
(append (list (cons 'sekka-mode sekka-mode-map)
|
1023
|
-
(cons 'sekka-select-mode
|
1024
|
-
sekka-select-mode-map))
|
1025
|
-
minor-mode-map-alist)))
|
1026
|
-
(viper-normalize-minor-mode-map-alist))))))
|
1027
|
-
|
1028
|
-
(defun sekka-viper-init-function ()
|
1029
|
-
(sekka-viper-normalize-map)
|
1030
|
-
(remove-hook 'sekka-mode-hook 'sekka-viper-init-function))
|
1031
1032
|
|
1032
1033
|
(defun sekka-sticky-shift-init-function ()
|
1033
1034
|
;; sticky-shift
|
@@ -1156,8 +1157,6 @@ point から行頭方向に同種の文字列が続く間を漢字変換しま
|
|
1156
1157
|
(sekka-kill-sekka-mode))
|
1157
1158
|
(setq sekka-mode (if (null arg) (not sekka-mode)
|
1158
1159
|
(> (prefix-numeric-value arg) 0))))
|
1159
|
-
(when sekka-use-viper
|
1160
|
-
(add-hook 'sekka-mode-hook 'sekka-viper-init-function))
|
1161
1160
|
(when sekka-sticky-shift
|
1162
1161
|
(add-hook 'sekka-mode-hook 'sekka-sticky-shift-init-function))
|
1163
1162
|
(when sekka-mode (run-hooks 'sekka-mode-hook)))
|
@@ -1199,7 +1198,7 @@ point から行頭方向に同種の文字列が続く間を漢字変換しま
|
|
1199
1198
|
(setq default-input-method "japanese-sekka")
|
1200
1199
|
|
1201
1200
|
(defconst sekka-version
|
1202
|
-
"0.8.
|
1201
|
+
"0.8.2" ;;SEKKA-VERSION
|
1203
1202
|
)
|
1204
1203
|
(defun sekka-version (&optional arg)
|
1205
1204
|
"入力モード変更"
|
data/lib/sekka/kvs.rb
CHANGED
data/lib/sekka/sekkaversion.rb
CHANGED
data/lib/sekkaserver.rb
CHANGED
@@ -39,6 +39,7 @@ require 'nendo'
|
|
39
39
|
require 'eventmachine'
|
40
40
|
require 'syslog'
|
41
41
|
require 'uri'
|
42
|
+
require 'date'
|
42
43
|
require './lib/sekkaconfig'
|
43
44
|
require './lib/sekka/sekkaversion'
|
44
45
|
|
@@ -67,15 +68,22 @@ module SekkaServer
|
|
67
68
|
@thread = Thread.new do
|
68
69
|
Thread.pass
|
69
70
|
EventMachine::run {
|
71
|
+
d = DateTime.now
|
70
72
|
EventMachine::PeriodicTimer.new( 5 ) do
|
71
73
|
while not @queue.empty?
|
72
|
-
@queue.pop { |word|
|
74
|
+
@queue.pop { |word|
|
73
75
|
arr = word.split( /[ ]+/ )
|
74
76
|
userid = arr[0]
|
75
|
-
dictline =
|
77
|
+
dictline =
|
78
|
+
if 3 == arr.size
|
79
|
+
arr[1] + " " + arr[2]
|
80
|
+
else
|
81
|
+
";; comment"
|
82
|
+
end
|
76
83
|
registered = @core.registerUserJisyo(userid, @kvs, dictline)
|
77
84
|
if registered
|
78
|
-
|
85
|
+
str = d.strftime( "%D %X" )
|
86
|
+
puts "Info: [" + str + "]added to dict userid[" + userid + "] dictline[" + dictline + "]"
|
79
87
|
@core.flushCacheServer( @cachesv )
|
80
88
|
else
|
81
89
|
puts "Info: ignored (already added or comment) userid[" + userid + "] dictline[" + dictline + "]"
|
@@ -110,14 +118,14 @@ module SekkaServer
|
|
110
118
|
when "/register"
|
111
119
|
dict = URI.decode( req.params['dict'].force_encoding( "UTF-8" ) ).split( "\n" )
|
112
120
|
dict.each { |x| @queue.push( userid + " " + x ) }
|
113
|
-
sprintf( "register request
|
121
|
+
sprintf( "sekka-server:register request (%s) words added, current-queue-size (%s)", dict.size, @queue.size )
|
114
122
|
when "/flush"
|
115
123
|
@core.flushCacheServer( @cachesv )
|
116
124
|
n = @core.flushUserJisyo( userid, @kvs )
|
117
125
|
printf( "info : flush [%s] user's dict %d entries.", userid, n )
|
118
|
-
sprintf( "flush request successful. flush (%d) entries.", n )
|
126
|
+
sprintf( "sekka-server:flush request successful. flush (%d) entries.", n )
|
119
127
|
else
|
120
|
-
sprintf( "unknown path name. [%s]", req.path )
|
128
|
+
sprintf( "sekka-server:unknown path name. [%s]", req.path )
|
121
129
|
end
|
122
130
|
else
|
123
131
|
"no message."
|
data/test/approximate-bench.nnd
CHANGED
data/test/azik-verification.nnd
CHANGED
data/test/henkan-main.nnd
CHANGED
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sekka
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 61
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
7
|
- 8
|
9
|
-
-
|
10
|
-
version: 0.8.
|
8
|
+
- 2
|
9
|
+
version: 0.8.2
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Kiyoka Nishiyama
|
@@ -15,7 +14,7 @@ autorequire:
|
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
16
|
|
18
|
-
date: 2010-
|
17
|
+
date: 2010-12-06 00:00:00 +09:00
|
19
18
|
default_executable:
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
@@ -26,7 +25,6 @@ dependencies:
|
|
26
25
|
requirements:
|
27
26
|
- - ">="
|
28
27
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
28
|
segments:
|
31
29
|
- 0
|
32
30
|
version: "0"
|
@@ -40,7 +38,6 @@ dependencies:
|
|
40
38
|
requirements:
|
41
39
|
- - ">="
|
42
40
|
- !ruby/object:Gem::Version
|
43
|
-
hash: 3
|
44
41
|
segments:
|
45
42
|
- 0
|
46
43
|
version: "0"
|
@@ -54,7 +51,6 @@ dependencies:
|
|
54
51
|
requirements:
|
55
52
|
- - ">="
|
56
53
|
- !ruby/object:Gem::Version
|
57
|
-
hash: 3
|
58
54
|
segments:
|
59
55
|
- 0
|
60
56
|
version: "0"
|
@@ -68,7 +64,6 @@ dependencies:
|
|
68
64
|
requirements:
|
69
65
|
- - ">="
|
70
66
|
- !ruby/object:Gem::Version
|
71
|
-
hash: 3
|
72
67
|
segments:
|
73
68
|
- 0
|
74
69
|
version: "0"
|
@@ -82,7 +77,6 @@ dependencies:
|
|
82
77
|
requirements:
|
83
78
|
- - ">="
|
84
79
|
- !ruby/object:Gem::Version
|
85
|
-
hash: 3
|
86
80
|
segments:
|
87
81
|
- 0
|
88
82
|
version: "0"
|
@@ -96,7 +90,6 @@ dependencies:
|
|
96
90
|
requirements:
|
97
91
|
- - ">="
|
98
92
|
- !ruby/object:Gem::Version
|
99
|
-
hash: 3
|
100
93
|
segments:
|
101
94
|
- 0
|
102
95
|
version: "0"
|
@@ -110,7 +103,6 @@ dependencies:
|
|
110
103
|
requirements:
|
111
104
|
- - ">="
|
112
105
|
- !ruby/object:Gem::Version
|
113
|
-
hash: 15
|
114
106
|
segments:
|
115
107
|
- 0
|
116
108
|
- 4
|
@@ -126,7 +118,6 @@ dependencies:
|
|
126
118
|
requirements:
|
127
119
|
- - ">="
|
128
120
|
- !ruby/object:Gem::Version
|
129
|
-
hash: 3
|
130
121
|
segments:
|
131
122
|
- 0
|
132
123
|
version: "0"
|
@@ -140,7 +131,6 @@ dependencies:
|
|
140
131
|
requirements:
|
141
132
|
- - ">="
|
142
133
|
- !ruby/object:Gem::Version
|
143
|
-
hash: 3
|
144
134
|
segments:
|
145
135
|
- 0
|
146
136
|
version: "0"
|
@@ -149,6 +139,7 @@ dependencies:
|
|
149
139
|
description: Sekka is a SKK like input method. Sekka server provides REST Based API. If you are SKK user, let's try it.
|
150
140
|
email: kiyoka@sumibi.org
|
151
141
|
executables:
|
142
|
+
- sekka-benchmark
|
152
143
|
- sekka-jisyo
|
153
144
|
- sekka-server
|
154
145
|
extensions: []
|
@@ -158,6 +149,7 @@ extra_rdoc_files:
|
|
158
149
|
files:
|
159
150
|
- COPYING
|
160
151
|
- README
|
152
|
+
- bin/sekka-benchmark
|
161
153
|
- bin/sekka-jisyo
|
162
154
|
- bin/sekka-server
|
163
155
|
- emacs/http-cookies.el
|
@@ -198,7 +190,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
198
190
|
requirements:
|
199
191
|
- - ">="
|
200
192
|
- !ruby/object:Gem::Version
|
201
|
-
hash: 49
|
202
193
|
segments:
|
203
194
|
- 1
|
204
195
|
- 9
|
@@ -209,7 +200,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
209
200
|
requirements:
|
210
201
|
- - ">="
|
211
202
|
- !ruby/object:Gem::Version
|
212
|
-
hash: 3
|
213
203
|
segments:
|
214
204
|
- 0
|
215
205
|
version: "0"
|