From kou @ cozmixng.org Thu May 8 09:03:44 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Thu, 8 May 2008 09:03:44 +0900 Subject: [Senna-dev 825] =?iso-2022-jp?b?W1BBVENIXSBwa2ctY29uZmlnGyRCQlAxfhsoQg==?= Message-ID: はじめまして、須藤と言います。 Sennaではコンパイルオプション(CFLAGSやLIBS)を取得するために senna-cfgを提供していますが、pkg-configにも対応してもらえると、他 のライブラリ(例えばGLibなど)と同じようにライブラリの存在の確認 やコンパイルオプションの取得を行えて便利です。 ということで、senna.pcを生成するパッチです。 Libsには-lsennaだけ加えるようにしています。これは、Sennaをライブラ リとして利用する側は-lpthreadや-lmを付ける必要はない気がしたからです。 (senna.hにはlibpthreadやlibmが必要なものはなさそう。) -------------- next part -------------- テキスト形式以外の添付ファイルを保管しました... ファイル名: senna-pc.diff 型: text/x-patch サイズ: 1096 バイト 説明: 無し URL: http://lists.sourceforge.jp/mailman/archives/senna-dev/attachments/20080508/50a15596/attachment.bin From kou @ cozmixng.org Thu May 8 09:47:32 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Thu, 8 May 2008 09:47:32 +0900 Subject: [Senna-dev 826] =?iso-2022-jp?b?UnVieRskQiVQJSQlcyVHJSMlcyUwJE4lRiU5JUgkTkF2GyhC?= =?iso-2022-jp?b?GyRCJGkkO0p9GyhC?= Message-ID: 須藤です。 bindings/ruby/test/以下にあるテストを走らせたいのですが、test/**/*.rbの 中にはEUC-JPで書かれているものとUTF-8で書かれているものがあり、 test/all_test.rbxを使って全部まとめて実行することができません。 (.rbのロードに失敗する。) 例: bindings/ruby% ruby -Ke test/all_test.rbx ... test/fixedbug-r00644/test_bug_r00644.rb:15: syntax error, unexpected '(', expecting ')' (SyntaxError) res = Senna::Snip::open('夢', 300, 1, '(', ')', nil, Senna::ENC_UTF8). ... Rubyバインディングのテストはどうやって走らせるものなのでしょうか? From kou @ cozmixng.org Thu May 8 10:12:45 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Thu, 8 May 2008 10:12:45 +0900 Subject: [Senna-dev 827] =?iso-2022-jp?b?W1BBVENIXSBzZW5faW5kZXhfdXBkYXRlKCkbJEIkTkxhGyhC?= =?iso-2022-jp?b?GyRCJGpDTSQsPy5NUSRHJC0kSiQkGyhC?= Message-ID: 須藤です。 sen_index_update()が中で使っているsen_inv_update()が返すsen_rcの値が 初期化されずに使われることがあるので、結果としてsen_index_update() が返す結果もおかしなことになっています。 これは、例えば、以下のような変更をしてテストを実行すると確認できる (かも)しれません。 Index: test/advanced-api-test/test_index_advanced.rb =================================================================== --- test/advanced-api-test/test_index_advanced.rb (revision 799) +++ test/advanced-api-test/test_index_advanced.rb (working copy) @@ -197,7 +198,7 @@ def test_select_optarg_mode_ja index = TestIndex::create # テスト 文書 は ここ に あり ます - index.update('1', 1, nil, 'テスト文書はここにあります') + p index.update('1', 1, nil, 'テスト文書はここにあります') rcs = index.select('テスト', nil, Senna::SEL_OR, Senna::get_select_optarg(Senna::SEL_EXACT)) assert_equal(1, rcs.nhits) rcs = index.select('テス', nil, Senna::SEL_OR, Senna::get_select_optarg(Senna::SEL_EXACT)) -------------- next part -------------- テキスト形式以外の添付ファイルを保管しました... ファイル名: senna-inv-update-rc.diff 型: text/x-patch サイズ: 335 バイト 説明: 無し URL: http://lists.sourceforge.jp/mailman/archives/senna-dev/attachments/20080508/477f5157/attachment.bin From morita @ razil.jp Thu May 8 11:17:04 2008 From: morita @ razil.jp (morita @ razil.jp) Date: Thu, 8 May 2008 11:17:04 +0900 Subject: [Senna-dev 828] Re: =?iso-2022-jp?b?W1BBVENIXSBwa2ctY29uZmlnGyRCQlAxfhsoQg==?= In-Reply-To: References: Message-ID: <20080508021704.GA13321@epepe.com> はじめまして、森と言います。 パッチありがとうございます!! さっそく取り込ませていただきました。 (sen_inv_updateのバグも‥ ご指摘ありがとうございます) AUTHORSに含めさせていただきましたが、もし問題などあればご指摘ください。 >>> Kouhei Sutou さんは書きました: > はじめまして、須藤と言います。 > > Sennaではコンパイルオプション(CFLAGSやLIBS)を取得するために > senna-cfgを提供していますが、pkg-configにも対応してもらえると、他 > のライブラリ(例えばGLibなど)と同じようにライブラリの存在の確認 > やコンパイルオプションの取得を行えて便利です。 > > ということで、senna.pcを生成するパッチです。 > > Libsには-lsennaだけ加えるようにしています。これは、Sennaをライブラ > リとして利用する側は-lpthreadや-lmを付ける必要はない気がしたからです。 > (senna.hにはlibpthreadやlibmが必要なものはなさそう。) > -------------- next part -------------- > テキスト形式以外の添付ファイルを保管しました... > ファイル名: senna-pc.diff > 型: text/x-patch > サイズ: 1096 バイト > 説明: 無し > URL: http://lists.sourceforge.jp/mailman/archives/senna-dev/attachments/20080508/50a15596/attachment.bin > _______________________________________________ > Senna-dev mailing list > Senna-dev @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > -- morita From kou @ cozmixng.org Thu May 8 11:36:05 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Thu, 8 May 2008 11:36:05 +0900 Subject: [Senna-dev 829] Re: =?iso-2022-jp?b?W1BBVENIXSBwa2ctY29uZmlnGyRCQlAxfhsoQg==?= In-Reply-To: <20080508021704.GA13321@epepe.com> References: <20080508021704.GA13321@epepe.com> Message-ID: 須藤です。 2008/05/08 11:17 : > パッチありがとうございます!! さっそく取り込ませていただきました。 ありがとうございます。 ついでですが、もし、↓が正しいならsenna-cfgの--libsからも -lpthreadと-lmを抜いてもよさそうな気がします。 >> Libsには-lsennaだけ加えるようにしています。これは、Sennaをライブラ >> リとして利用する側は-lpthreadや-lmを付ける必要はない気がしたからです。 >> (senna.hにはlibpthreadやlibmが必要なものはなさそう。) Index: configure.ac =================================================================== --- configure.ac (revision 801) +++ configure.ac (working copy) @@ -267,7 +267,7 @@ SENNA_LIBDIR='-L${libdir}' SENNA_INCLUDEDIR="-I${includedir}/senna" SENNA_CFLAGS="$GCOV_CFLAGS" -SENNA_LIBS="-lsenna $GCOV_LIBS $PTHREAD_LIBS $M_LIBS" +SENNA_LIBS="-lsenna $GCOV_LIBS" AC_SUBST(SENNA_LIBDIR) AC_SUBST(SENNA_INCLUDEDIR) # gcov関係のオプションも入れなくても良いような気がする。。。 # --enable-gcovしたsennaをライブラリとして利用することはあるの # だろうか。。。 From kou @ cozmixng.org Thu May 8 12:37:56 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Thu, 8 May 2008 12:37:56 +0900 Subject: [Senna-dev 830] =?iso-2022-jp?b?W1BBVENIXSBzZW5fc2VsX3Rlcm1fZXh0cmFjdBskQiRHGyhC?= =?iso-2022-jp?b?GyRCTW4kQSRrGyhC?= Message-ID: 須藤です。 sen_inv_term_extract()が初期化されていないsymにアクセスしようとする (sym->encoding)のでselectでsen_sel_term_extractモードを指定すると落 ちます。 例えば、以下のように変更をしたテストを走らせると落ちます。 Index: test/advanced-api-test/test_index_advanced.rb =================================================================== --- test/advanced-api-test/test_index_advanced.rb (revision 801) +++ test/advanced-api-test/test_index_advanced.rb (working copy) @@ -198,7 +199,7 @@ index = TestIndex::create # テスト 文書 は ここ に あり ます index.update('1', 1, nil, 'テスト文書はここにあります') - rcs = index.select('テスト', nil, Senna::SEL_OR, Senna::get_select_optarg(Senna::SEL_EXACT)) + rcs = index.select('テスト', nil, Senna::SEL_OR, Senna::get_select_optarg(Senna::SEL_TERM_EXTRACT)) assert_equal(1, rcs.nhits) rcs = index.select('テス', nil, Senna::SEL_OR, Senna::get_select_optarg(Senna::SEL_EXACT)) assert_equal(0, rcs.nhits) -------------- next part -------------- テキスト形式以外の添付ファイルを保管しました... ファイル名: senna-inv-term-extract.diff 型: text/x-patch サイズ: 712 バイト 説明: 無し URL: http://lists.sourceforge.jp/mailman/archives/senna-dev/attachments/20080508/ce71aa55/attachment.bin From morita @ razil.jp Fri May 9 15:19:38 2008 From: morita @ razil.jp (morita @ razil.jp) Date: Fri, 9 May 2008 15:19:38 +0900 Subject: [Senna-dev 831] Re: =?iso-2022-jp?b?W1BBVENIXSBzZW5fc2VsX3Rlcm1fZXh0cmFjdA==?= =?iso-2022-jp?b?GyRCJEdNbiRBJGsbKEI=?= In-Reply-To: References: Message-ID: <20080509061938.GA12334@epepe.com> 森です。 おお、、ありがとうございます。 こちらも取り込ませていただきました。 revision 794でけっこう大きく修正しまして、 その時にバグも入れてしまったようです‥。 >>> Kouhei Sutou さんは書きました: > 須藤です。 > > sen_inv_term_extract()が初期化されていないsymにアクセスしようとする > (sym->encoding)のでselectでsen_sel_term_extractモードを指定すると落 > ちます。 > > 例えば、以下のように変更をしたテストを走らせると落ちます。 > > Index: test/advanced-api-test/test_index_advanced.rb > =================================================================== > --- test/advanced-api-test/test_index_advanced.rb (revision 801) > +++ test/advanced-api-test/test_index_advanced.rb (working copy) > @@ -198,7 +199,7 @@ > index = TestIndex::create > # テスト 文書 は ここ に あり ます > index.update('1', 1, nil, 'テスト文書はここにあります') > - rcs = index.select('テスト', nil, Senna::SEL_OR, > Senna::get_select_optarg(Senna::SEL_EXACT)) > + rcs = index.select('テスト', nil, Senna::SEL_OR, > Senna::get_select_optarg(Senna::SEL_TERM_EXTRACT)) > assert_equal(1, rcs.nhits) > rcs = index.select('テス', nil, Senna::SEL_OR, > Senna::get_select_optarg(Senna::SEL_EXACT)) > assert_equal(0, rcs.nhits) > -------------- next part -------------- > テキスト形式以外の添付ファイルを保管しました... > ファイル名: senna-inv-term-extract.diff > 型: text/x-patch > サイズ: 712 バイト > 説明: 無し > URL: http://lists.sourceforge.jp/mailman/archives/senna-dev/attachments/20080508/ce71aa55/attachment.bin > _______________________________________________ > Senna-dev mailing list > Senna-dev @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > -- morita From a @ razil.jp Fri May 9 16:13:23 2008 From: a @ razil.jp (Tasuku SUENAGA) Date: Fri, 09 May 2008 16:13:23 +0900 Subject: [Senna-dev 832] Re: =?iso-2022-jp?b?UnVieRskQiVQJSQlcyVHJSMlcyUwJE4lRiU5JUgbKEI=?= =?iso-2022-jp?b?GyRCJE5BdiRpJDtKfRsoQg==?= In-Reply-To: References: Message-ID: <4823F993.8000800@razil.jp> 末永です。 この問題ですが、なぜか僕の環境ではエラーが発生しないのです… 指摘の現象が起きても全くおかしくないとは思うのですが… とりあえず、euc-jpに統一したテストをコミットしてみました。 (rev.804) お試しください。 Kouhei Sutou さんは書きました: > 須藤です。 > > bindings/ruby/test/以下にあるテストを走らせたいのですが、test/**/*.rbの > 中にはEUC-JPで書かれているものとUTF-8で書かれているものがあり、 > test/all_test.rbxを使って全部まとめて実行することができません。 > (.rbのロードに失敗する。) > > 例: > bindings/ruby% ruby -Ke test/all_test.rbx > ... > test/fixedbug-r00644/test_bug_r00644.rb:15: syntax error, unexpected > '(', expecting ')' (SyntaxError) > res = Senna::Snip::open('夢', 300, 1, '(', ')', nil, Senna::ENC_UTF8). > ... > > Rubyバインディングのテストはどうやって走らせるものなのでしょうか? ---- 末永 匡 From kou @ cozmixng.org Fri May 9 16:40:31 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Fri, 9 May 2008 16:40:31 +0900 Subject: [Senna-dev 833] Re: =?iso-2022-jp?b?UnVieRskQiVQJSQlcyVHJSMlcyUwJE4lRiU5JUgbKEI=?= =?iso-2022-jp?b?GyRCJE5BdiRpJDtKfRsoQg==?= In-Reply-To: <4823F993.8000800@razil.jp> References: <4823F993.8000800@razil.jp> Message-ID: 須藤です。 2008/05/09 16:13 Tasuku SUENAGA : > とりあえず、euc-jpに統一したテストをコミットしてみました。 > (rev.804) > お試しください。 ありがとうございます。 動くようになりました。ただ、手元ではいくつかテストが失 敗します。 % ruby test/all_test.rbx Loaded suite test Started ........F......F...........................E...................... Finished in 21.025679 seconds. 1) Failure: test_select_optarg_mode_ja(IndexAdvancedTest) [./test/advanced-api-test/test_index_advanced.rb:204]: <1> expected but was <0>. 2) Failure: test_exec_escalation(QueryAdvancedTest) [./test/advanced-api-test/test_query_advanced.rb:185]: <1> expected but was <0>. 3) Error: test_normalize_eucjp_upd(IndexUpdateTest): NoMethodError: undefined method `nhits' for nil:NilClass ./test/basic-api-test/test_index_update.rb:84:in `test_normalize_eucjp_upd' 66 tests, 4072 assertions, 2 failures, 1 errors 環境はDebianのsidでMecab関係のパッケージは以下が入っ ています。 % dpkg -l | grep mecab ii libmecab-dev 0.96-1.1 Header files of Mecab ii libmecab1 0.96-1.1 Libraries of Mecab ii mecab-ipadic 2.7.0+20070801-3 IPA dictionary compiled for Mecab ii mecab-ipadic-utf8 2.7.0+20070801-3 IPA dictionary encoded in UTF-8 compiled for Mecab ii mecab-jumandic 5.1+20070304-3 Juman dictionary compiled for Mecab ii mecab-jumandic-utf8 5.1+20070304-3 Juman dictionary encoded in UTF-8 compiled for Mecab ii mecab-utils 0.96-1.1 Support programs of Mecab ところで、Sennaの(正式な?)テストはRubyバインディ ングを用いたテストという認識であっていますか? From a @ razil.jp Fri May 9 16:47:28 2008 From: a @ razil.jp (Tasuku SUENAGA) Date: Fri, 09 May 2008 16:47:28 +0900 Subject: [Senna-dev 834] Re: =?iso-2022-jp?b?UnVieRskQiVQJSQlcyVHJSMlcyUwJE4lRiU5JUgbKEI=?= =?iso-2022-jp?b?GyRCJE5BdiRpJDtKfRsoQg==?= In-Reply-To: References: <4823F993.8000800@razil.jp> Message-ID: <48240190.6090700@razil.jp> 末永です。 このテストですが、 mecabの辞書のエンコーディングがEUC-JPであることを前提としております。 本来はエンコーディングを自動検出して テストをスキップしたり、適切な文字コードに変換してテストしたい ところではありますが… 現在、 Sennaのリリース前テストはこのRuby bindingsのテストを用いております。 将来的には、SennaQLという言語でテストを書く予定です。 Cでのテストも書きたいんですが、 なかなか手が回らない状態でして… Kouhei Sutou さんは書きました: > 須藤です。 > > 2008/05/09 16:13 Tasuku SUENAGA : > >> とりあえず、euc-jpに統一したテストをコミットしてみました。 >> (rev.804) >> お試しください。 > > ありがとうございます。 > 動くようになりました。ただ、手元ではいくつかテストが失 > 敗します。 > > % ruby test/all_test.rbx > Loaded suite test > Started > ........F......F...........................E...................... > Finished in 21.025679 seconds. > > 1) Failure: > test_select_optarg_mode_ja(IndexAdvancedTest) > [./test/advanced-api-test/test_index_advanced.rb:204]: > <1> expected but was > <0>. > > 2) Failure: > test_exec_escalation(QueryAdvancedTest) > [./test/advanced-api-test/test_query_advanced.rb:185]: > <1> expected but was > <0>. > > 3) Error: > test_normalize_eucjp_upd(IndexUpdateTest): > NoMethodError: undefined method `nhits' for nil:NilClass > ./test/basic-api-test/test_index_update.rb:84:in `test_normalize_eucjp_upd' > > 66 tests, 4072 assertions, 2 failures, 1 errors > > 環境はDebianのsidでMecab関係のパッケージは以下が入っ > ています。 > > % dpkg -l | grep mecab > ii libmecab-dev 0.96-1.1 Header files of Mecab > ii libmecab1 0.96-1.1 Libraries of Mecab > ii mecab-ipadic 2.7.0+20070801-3 IPA > dictionary compiled for Mecab > ii mecab-ipadic-utf8 2.7.0+20070801-3 IPA > dictionary encoded in UTF-8 compiled for Mecab > ii mecab-jumandic 5.1+20070304-3 Juman > dictionary compiled for Mecab > ii mecab-jumandic-utf8 5.1+20070304-3 Juman > dictionary encoded in UTF-8 compiled for Mecab > ii mecab-utils 0.96-1.1 Support > programs of Mecab > > > ところで、Sennaの(正式な?)テストはRubyバインディ > ングを用いたテストという認識であっていますか? --- 末永 匡 From kou @ cozmixng.org Fri May 9 16:48:00 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Fri, 9 May 2008 16:48:00 +0900 Subject: [Senna-dev 835] [PATCH] atexit_sen_fin() Message-ID: 須藤です。 atexit_sen_fin()はstaticでよいと思います。 Index: bindings/ruby/senna_api.i =================================================================== --- bindings/ruby/senna_api.i (revision 804) +++ bindings/ruby/senna_api.i (working copy) @@ -139,7 +139,7 @@ rb_gc_mark(optarg->compar_arg); } -void atexit_sen_fin(void) { +static void atexit_sen_fin(void) { // sen_fin(); } From kou @ cozmixng.org Fri May 9 17:01:25 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Fri, 9 May 2008 17:01:25 +0900 Subject: [Senna-dev 836] Re: =?iso-2022-jp?b?UnVieRskQiVQJSQlcyVHJSMlcyUwJE4lRiU5JUgbKEI=?= =?iso-2022-jp?b?GyRCJE5BdiRpJDtKfRsoQg==?= In-Reply-To: <48240190.6090700@razil.jp> References: <4823F993.8000800@razil.jp> <48240190.6090700@razil.jp> Message-ID: 須藤です。 2008/05/09 16:47 Tasuku SUENAGA : > このテストですが、 > mecabの辞書のエンコーディングがEUC-JPであることを前提としております。 それでは、私の環境のUTF-8を利用している環境では 失敗してもおかしくはないということですね。 わかりました。 > 本来はエンコーディングを自動検出して > テストをスキップしたり、適切な文字コードに変換してテストしたい > ところではありますが… そういえば、TestUnitExtというRubyのTest::Unitを拡張して テストをスキップ(省略)する機能を追加しているものが あります。 http://test-unit-ext.rubyforge.org/ それを使うとこんな風に書くことができます。 Index: bindings/ruby/test/all_test.rbx =================================================================== --- bindings/ruby/test/all_test.rbx (revision 804) +++ bindings/ruby/test/all_test.rbx (working copy) @@ -8,7 +8,15 @@ $KCODE = 'e' -require 'test/unit' +require 'fileutils' +test_unit_ext_dir = File.join(File.dirname(__FILE__), "..", "test-unit-ext") +unless File.exist?(test_unit_ext_dir) + system("svn", "co", "http://test-unit-ext.rubyforge.org/svn/trunk", + test_unit_ext_dir) +end +test_unit_ext_lib_dir = File.expand_path(File.join(test_unit_ext_dir, "lib")) +$LOAD_PATH.unshift(test_unit_ext_lib_dir) +require 'test-unit-ext' testdir = File.dirname(__FILE__) $:.unshift(testdir) Index: bindings/ruby/test/advanced-api-test/test_index_advanced.rb =================================================================== --- bindings/ruby/test/advanced-api-test/test_index_advanced.rb (revision 804) +++ bindings/ruby/test/advanced-api-test/test_index_advanced.rb (working copy) @@ -197,6 +197,8 @@ end def test_select_optarg_mode_ja + mecab_euc_jp = false # FIXME + omit("Mecab dictionary for EUC-JP is required") unless mecab_euc_jp index = TestIndex::create # テスト 文書 は ここ に あり ます index.update('1', 1, nil, 'テスト文書はここにあります') > 現在、 > Sennaのリリース前テストはこのRuby bindingsのテストを用いております。 > 将来的には、SennaQLという言語でテストを書く予定です。 わかりました。 > Cでのテストも書きたいんですが、 > なかなか手が回らない状態でして… そういえば、C用の使いやすい単体テストフレームワークで Cutterというものがあります。 http://cutter.sourceforge.net/ 試しにいくつかテストを書いてみましょうか? From kou @ cozmixng.org Fri May 9 17:28:21 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Fri, 9 May 2008 17:28:21 +0900 Subject: [Senna-dev 837] %append_output Message-ID: 須藤です。 Rubyバインディングの.iでは自前で複数の戻り値に対応していますが、 これを%append_outputを使うようにしてはいかがでしょうか? 全部やろうかと思ったのですが、多かったので試しに一つだけやって みました。 Index: bindings/ruby/senna_api.i =================================================================== --- bindings/ruby/senna_api.i (revision 804) +++ bindings/ruby/senna_api.i (working copy) @@ -174,20 +174,12 @@ $2 = size; } %typemap(argout) (void *keybuf, int bufsize) { - VALUE ary; - if (TYPE($result) == T_ARRAY) { - ary = $result; - } else { - ary = rb_ary_new2(2); - rb_ary_push(ary, $result); - } if ($1) { - rb_ary_push(ary, rb_str_new2($1)); + %append_output(rb_str_new2($1)); free($1); } else { - rb_ary_push(ary, Qnil); + %append_output(Qnil); } - $result = ary; } %typemap(in) (char *pathbuf, int bufsize) { From a @ razil.jp Fri May 9 19:16:35 2008 From: a @ razil.jp (Tasuku SUENAGA) Date: Fri, 09 May 2008 19:16:35 +0900 Subject: [Senna-dev 838] Re: =?iso-2022-jp?b?UnVieRskQiVQJSQlcyVHJSMlcyUwJE4lRiU5JUgbKEI=?= =?iso-2022-jp?b?GyRCJE5BdiRpJDtKfRsoQg==?= In-Reply-To: References: <4823F993.8000800@razil.jp> <48240190.6090700@razil.jp> Message-ID: <48242483.3050500@razil.jp> 末永です。 > そういえば、TestUnitExtというRubyのTest::Unitを拡張して > テストをスキップ(省略)する機能を追加しているものが > あります。 > http://test-unit-ext.rubyforge.org/ なるほど、omitの呼び出しでスキップできるんですね。 >> Cでのテストも書きたいんですが、 >> なかなか手が回らない状態でして… > > そういえば、C用の使いやすい単体テストフレームワークで > Cutterというものがあります。 > http://cutter.sourceforge.net/ > > 試しにいくつかテストを書いてみましょうか? おおお!!ステキです!! 是非テストの記述をお願いしたいです。 ついでにコミット権限もいかがでしょうか? --- tasuku From morita @ razil.jp Sat May 10 03:09:03 2008 From: morita @ razil.jp (morita @ razil.jp) Date: Sat, 10 May 2008 03:09:03 +0900 Subject: [Senna-dev 839] Re: %append_output In-Reply-To: References: Message-ID: <20080509180903.GA7617@epepe.com> 森です。 なるほど!! そんなワザがあったのですね!! 最近SWIGを使いつづけるご利益があまり感じられなくて、 次にAPIを拡張するぐらいのタイミングで脱SWIGしようかと思っていたのですが、 単に研究が足らなかっただけなのかも‥。ちょっと揺れてます。。 >>> Kouhei Sutou さんは書きました: > 須藤です。 > > Rubyバインディングの.iでは自前で複数の戻り値に対応していますが、 > これを%append_outputを使うようにしてはいかがでしょうか? > > 全部やろうかと思ったのですが、多かったので試しに一つだけやって > みました。 > > Index: bindings/ruby/senna_api.i > =================================================================== > --- bindings/ruby/senna_api.i (revision 804) > +++ bindings/ruby/senna_api.i (working copy) > @@ -174,20 +174,12 @@ > $2 = size; > } > %typemap(argout) (void *keybuf, int bufsize) { > - VALUE ary; > - if (TYPE($result) == T_ARRAY) { > - ary = $result; > - } else { > - ary = rb_ary_new2(2); > - rb_ary_push(ary, $result); > - } > if ($1) { > - rb_ary_push(ary, rb_str_new2($1)); > + %append_output(rb_str_new2($1)); > free($1); > } else { > - rb_ary_push(ary, Qnil); > + %append_output(Qnil); > } > - $result = ary; > } > > %typemap(in) (char *pathbuf, int bufsize) { > > _______________________________________________ > Senna-dev mailing list > Senna-dev @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > -- morita From hyperhighspeed @ gmail.com Mon May 12 00:13:56 2008 From: hyperhighspeed @ gmail.com (Nagayama) Date: Mon, 12 May 2008 00:13:56 +0900 Subject: [Senna-dev 840] =?iso-2022-jp?b?U0hPVyBTRU5OQSBTVEFUVVMbJEIkTj5wSnMkLCQqJCsbKEI=?= =?iso-2022-jp?b?GyRCJDckJBsoQg==?= Message-ID: <20080512001332.0474.866B119D@gmail.com> はじめまして、永山と申します。 Fedora Core 6にてtritonn-1.0.9、senna-1.1.2をソースからインストールを 行いました。 インストール後にmysqlを起動して以下のように実行しました。 mysql> use test mysql> CREATE TABLE t1 (c1 TEXT, FULLTEXT INDEX ft USING NGRAM (c1)) ENGINE = MyISAM DEFAULT CHARSET utf8; mysql> SHOW SENNA STATUS\G *************************** 1. row *************************** Table: t1 Key_name: ft Column_name: c1 Encoding: NULL Index_type: MECAB Normalize: OFF Split_alpha: OFF Split_digit: OFF Split_symbol: OFF Initial_n_segments: 0 Senna_keys_size: 0 Senna_keys_file_size: 0 Senna_lexicon_size: 0 Senna_lexicon_file_size: 0 Senna_inv_seg_size: 0 Senna_inv_chunk_size: 0 1 row in set (0.00 sec) SHOW SENNA STATUSの実行結果がどうもおかしいようです。 インデックスにNGRAMを指定しているのに強制的にMECABになります。 また mysql> show index from t1; +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ | t1 | 1 | ft | 1 | c1 | NULL | NULL | NULL | NULL | YES | FULLTEXT | | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ 1 row in set (0.00 sec) と実行してもIndex_typeにFULLTEXTとしか表示されません。 ご助言いただけますでしょうか。 どうかよろしくお願いいたします。 From ikdttr @ gmail.com Mon May 12 01:06:34 2008 From: ikdttr @ gmail.com (Tetsuro IKEDA) Date: Mon, 12 May 2008 01:06:34 +0900 Subject: [Senna-dev 841] Re: =?iso-2022-jp?b?U0hPVyBTRU5OQSBTVEFUVVMbJEIkTj5wSnMkLCQqGyhC?= =?iso-2022-jp?b?GyRCJCskNyQkGyhC?= In-Reply-To: <20080512001332.0474.866B119D@gmail.com> References: <20080512001332.0474.866B119D@gmail.com> Message-ID: いけだです。 Sennaインデックスの作成が正しく行えていない場合に、 このようなshow senna index結果となります。 うまくいかないパタンとして、mecabの辞書が参照できてないとか いろいろ可能性はありえますが、今の情報だけだと何とも言えないので まずはログを取得してエラーがでていないか見ていただくとよいと思います。 http://qwik.jp/tritonn/reference.html#fe5e27b4b3cc155675fb6c428415101b my.cnfに以下のように追記し、 [mysqld] senna-log senna-log-level=DEBUG mysqldを再起動後、もう一度インデックスの作成をやってみて データディレクトリにあるsenna.logを見てみてください。 2008/05/12 0:13 Nagayama : > はじめまして、永山と申します。 > > Fedora Core 6にてtritonn-1.0.9、senna-1.1.2をソースからインストールを > 行いました。 > インストール後にmysqlを起動して以下のように実行しました。 > > mysql> use test > mysql> CREATE TABLE t1 (c1 TEXT, FULLTEXT INDEX ft USING NGRAM (c1)) ENGINE = MyISAM DEFAULT CHARSET utf8; > mysql> SHOW SENNA STATUS\G > *************************** 1. row *************************** > Table: t1 > Key_name: ft > Column_name: c1 > Encoding: NULL > Index_type: MECAB > Normalize: OFF > Split_alpha: OFF > Split_digit: OFF > Split_symbol: OFF > Initial_n_segments: 0 > Senna_keys_size: 0 > Senna_keys_file_size: 0 > Senna_lexicon_size: 0 > Senna_lexicon_file_size: 0 > Senna_inv_seg_size: 0 > Senna_inv_chunk_size: 0 > 1 row in set (0.00 sec) > > SHOW SENNA STATUSの実行結果がどうもおかしいようです。 > インデックスにNGRAMを指定しているのに強制的にMECABになります。 > > また > > mysql> show index from t1; > +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ > | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | > +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ > | t1 | 1 | ft | 1 | c1 | NULL | NULL | NULL | NULL | YES | FULLTEXT | | > +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ > 1 row in set (0.00 sec) > > と実行してもIndex_typeにFULLTEXTとしか表示されません。 > > ご助言いただけますでしょうか。 > どうかよろしくお願いいたします。 > > _______________________________________________ > Senna-dev mailing list > Senna-dev @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > -- Tritonn http://qwik.jp/tritonn/ hatena http://d.hatena.ne.jp/mir/ twitter http://twitter.com/_mir_ From ikdttr @ gmail.com Mon May 12 01:10:10 2008 From: ikdttr @ gmail.com (Tetsuro IKEDA) Date: Mon, 12 May 2008 01:10:10 +0900 Subject: [Senna-dev 842] Re: =?iso-2022-jp?b?U0hPVyBTRU5OQSBTVEFUVVMbJEIkTj5wSnMkLCQqGyhC?= =?iso-2022-jp?b?GyRCJCskNyQkGyhC?= In-Reply-To: References: <20080512001332.0474.866B119D@gmail.com> Message-ID: いけだです。 以下のように回答しましたが、よくみるとバージョンが、 tritonn-1.0.9 senna-1.1.2 となっていますね。 すみません。tritonn-1.0.9はsenna-1.1.2のAPIに対応していないので、 今回の結果になったのだと思います。 senna-1.1.0をお使いいただくと問題を回避できます。 2008/05/12 1:06 Tetsuro IKEDA : > いけだです。 > > Sennaインデックスの作成が正しく行えていない場合に、 > このようなshow senna index結果となります。 > > うまくいかないパタンとして、mecabの辞書が参照できてないとか > いろいろ可能性はありえますが、今の情報だけだと何とも言えないので > まずはログを取得してエラーがでていないか見ていただくとよいと思います。 > > http://qwik.jp/tritonn/reference.html#fe5e27b4b3cc155675fb6c428415101b > > my.cnfに以下のように追記し、 > > [mysqld] > senna-log > senna-log-level=DEBUG > > mysqldを再起動後、もう一度インデックスの作成をやってみて > データディレクトリにあるsenna.logを見てみてください。 > > 2008/05/12 0:13 Nagayama : >> はじめまして、永山と申します。 >> >> Fedora Core 6にてtritonn-1.0.9、senna-1.1.2をソースからインストールを >> 行いました。 >> インストール後にmysqlを起動して以下のように実行しました。 >> >> mysql> use test >> mysql> CREATE TABLE t1 (c1 TEXT, FULLTEXT INDEX ft USING NGRAM (c1)) ENGINE = MyISAM DEFAULT CHARSET utf8; >> mysql> SHOW SENNA STATUS\G >> *************************** 1. row *************************** >> Table: t1 >> Key_name: ft >> Column_name: c1 >> Encoding: NULL >> Index_type: MECAB >> Normalize: OFF >> Split_alpha: OFF >> Split_digit: OFF >> Split_symbol: OFF >> Initial_n_segments: 0 >> Senna_keys_size: 0 >> Senna_keys_file_size: 0 >> Senna_lexicon_size: 0 >> Senna_lexicon_file_size: 0 >> Senna_inv_seg_size: 0 >> Senna_inv_chunk_size: 0 >> 1 row in set (0.00 sec) >> >> SHOW SENNA STATUSの実行結果がどうもおかしいようです。 >> インデックスにNGRAMを指定しているのに強制的にMECABになります。 >> >> また >> >> mysql> show index from t1; >> +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ >> | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | >> +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ >> | t1 | 1 | ft | 1 | c1 | NULL | NULL | NULL | NULL | YES | FULLTEXT | | >> +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+ >> 1 row in set (0.00 sec) >> >> と実行してもIndex_typeにFULLTEXTとしか表示されません。 >> >> ご助言いただけますでしょうか。 >> どうかよろしくお願いいたします。 >> >> _______________________________________________ >> Senna-dev mailing list >> Senna-dev @ lists.sourceforge.jp >> http://lists.sourceforge.jp/mailman/listinfo/senna-dev >> バグ報告方法:http://qwik.jp/senna/bug_report.html >> > > > > -- > Tritonn http://qwik.jp/tritonn/ > hatena http://d.hatena.ne.jp/mir/ > twitter http://twitter.com/_mir_ > -- Tritonn http://qwik.jp/tritonn/ hatena http://d.hatena.ne.jp/mir/ twitter http://twitter.com/_mir_ From kou @ cozmixng.org Mon May 12 11:48:44 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Mon, 12 May 2008 11:48:44 +0900 Subject: [Senna-dev 843] Re: =?iso-2022-jp?b?UnVieRskQiVQJSQlcyVHJSMlcyUwJE4lRiU5JUgbKEI=?= =?iso-2022-jp?b?GyRCJE5BdiRpJDtKfRsoQg==?= In-Reply-To: <48242483.3050500@razil.jp> References: <4823F993.8000800@razil.jp> <48240190.6090700@razil.jp> <48242483.3050500@razil.jp> Message-ID: 須藤です。 2008/05/09 19:16 Tasuku SUENAGA : >>> Cでのテストも書きたいんですが、 >>> なかなか手が回らない状態でして… >> >> そういえば、C用の使いやすい単体テストフレームワークで >> Cutterというものがあります。 >> http://cutter.sourceforge.net/ >> >> 試しにいくつかテストを書いてみましょうか? > > おおお!!ステキです!! > 是非テストの記述をお願いしたいです。 sen_index_create()のテストを書いてみました。 Cutterは0.9.0を使ってください。 http://sourceforge.net/project/showfiles.php?group_id=208375&package_id=249756&release_id=598627 > ついでにコミット権限もいかがでしょうか? せっかくなのでお願いします。アカウント名はkouがいいです。 -------------- next part -------------- テキスト形式以外の添付ファイルを保管しました... ファイル名: senna-test-index.diff 型: text/x-patch サイズ: 4473 バイト 説明: 無し URL: http://lists.sourceforge.jp/mailman/archives/senna-dev/attachments/20080512/6ea2a5f7/attachment.bin From kou @ cozmixng.org Mon May 12 12:25:00 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Mon, 12 May 2008 12:25:00 +0900 Subject: [Senna-dev 844] Re: %append_output In-Reply-To: <20080509180903.GA7617@epepe.com> References: <20080509180903.GA7617@epepe.com> Message-ID: 須藤です。 2008/05/10 3:09 : > 最近SWIGを使いつづけるご利益があまり感じられなくて、 > 次にAPIを拡張するぐらいのタイミングで脱SWIGしようかと思っていたのですが、 > 単に研究が足らなかっただけなのかも‥。ちょっと揺れてます。。 SWIGにはSWIGの利点があると思うのですが、今のような使い方だと残念ながら あまりその利点が活かせていないと思います。なので、今のような使い方を続ける のであれば、SWIGを捨てても問題ないと思います。 私の感覚ではSWIGでうれしいことは以下のようなことです。 * 定数が自動で定義される * エラー処理を一ヶ所で書ける GObjectなどではCでもメタプログラミング的なことができるので、定数を動的に定義 することができますが、普通のCでは手動で静的に定義しないといけません。定数の数 が多いとこれがとても面倒です。例えば、GUIのツールキットでキーボードのキーを定 数で表している場合にそれらを全部手動でRuby側に公開するのはしんどいです。 Cの関数では複数の値を戻り値として返すことができないので、普通の戻り値でエラー かどうかを返して、引数にポインタを渡して値を返すこともそこそこありません。Senna もそうですし、Subversionもそうなっています。このようにエラーの表現のしかたが統 一的に決まっている場合は、エラーチェックを機械的に行うことができます。つまり、 SWIGでできるということです。 ただ、残念ながら今のRubyバインディングのAPIはエラーチェックをプログラマに任せる ようになっています。これによりCやPerl(これは私の偏見)のようなRubyプログラマに は使いづらいAPIになっています。Rubyであれば、エラーチェックはライブラリ側が勝手 にやってくれて、必要なら例外を投げるようにするのが自然だと思います。 (これのパッチは%append_output化が終わったら投げようと思っていましたが。) 一方SWIGの嫌なところを以下の通りです。 * Cのライブラリのバインディングを作るときは、使いやすいAPIを提供するために .rbでSWIGで生成されたものをラップしなくてはいけない。 Cでは名前空間がないので関数名にプレフィックスをつけて分離しますが、Rubyではそれ は使いづらいです。そのため、ClassやModuleを使って名前空間を作り、プレフィックスを 除いたメソッド名にしないといけません。(使いやすいAPIを作るなら) つまり、SWIGで普通にCのライブラリのRubyバインディングを作ったときは、それをラップ する.rbを作らなければいけません。実際、Sennaでもそうしています。 つまり、簡単に言えば思ったより手作業あるね、ということです。 もちろん、.iでclassなどを使って頑張れば.rbでラップしなくてもそれっぽく使いやすいAPIを 作れるかもしれません。 例えば、C++のように名前空間のあるものからバインディングを生成する場合はSWIGがそれ を意識して頑張ってくれるので、Cの場合よりもラップするコードは少なくなると思います。 場合にもよりますが、%renameとか%ignoreとかで頑張れば.rbはほとんど必要なくなるかも しれません。 今のSennaの.iのように%include senna.hしないで.iにコピペしているのであれば、.iの中で classを定義して、そこでオブジェクト指向っぽいAPIを作った方がよいと思います。 この方法は、例えばHyperEstraierのSWIGバインディングが使っています。 というように、残念ながら今のRubyバインディングのやり方は私から見るとSWIGじゃなく てもよいのでは?という感じです。もちろん、やり方を変えればSWIGのよさを取り入れる こともできると思います。もし、私が直すなら、まずはコピペをやめて%include senna.hに します。 つらつらと書きましたが、もしよかったら参考にしてください。 From hyperhighspeed @ gmail.com Mon May 12 22:39:24 2008 From: hyperhighspeed @ gmail.com (Nagayama) Date: Mon, 12 May 2008 22:39:24 +0900 Subject: [Senna-dev 845] Re: =?iso-2022-jp?b?U0hPVyBTRU5OQSBTVEFUVVMbJEIkTj5wSnMkLCQqGyhC?= =?iso-2022-jp?b?GyRCJCskNyQkGyhC?= In-Reply-To: References: Message-ID: <20080512192629.1408.866B119D@gmail.com> 永山です。 いけだ様、親切でご丁寧なご回答ありがとうございます。 tritonn-1.0.9とsenna-1.1.0の組み合わせで解決いたしました。 ありがとうございました。 From morita @ razil.jp Wed May 14 01:58:04 2008 From: morita @ razil.jp (morita @ razil.jp) Date: Wed, 14 May 2008 01:58:04 +0900 Subject: [Senna-dev 846] Re: %append_output In-Reply-To: References: <20080509180903.GA7617@epepe.com> Message-ID: <20080513165804.GB11337@epepe.com> 森です。 情報ありがとうございます。 多分、1〜2週間以内ぐらいに、新しいsennaのAPIを提供したいと思っています。 そのAPIでは言語バインディングからsennaの機能をもっと本格的に使えるように なると見込んでいるので、使いやすさも性能も追求したいと思っています。 エラー処理の点、なるほどと思いました。すごく参考になります。 もしも「このAPI(バインディング)が出来が良い」というような例がありましたら、 紹介していただけると嬉しいです。 (SWIGを使っているものでも使ってないものでも良いです。) >>> Kouhei Sutou さんは書きました: > 須藤です。 > > 2008/05/10 3:09 : > > > 最近SWIGを使いつづけるご利益があまり感じられなくて、 > > 次にAPIを拡張するぐらいのタイミングで脱SWIGしようかと思っていたのですが、 > > 単に研究が足らなかっただけなのかも‥。ちょっと揺れてます。。 > > SWIGにはSWIGの利点があると思うのですが、今のような使い方だと残念ながら > あまりその利点が活かせていないと思います。なので、今のような使い方を続ける > のであれば、SWIGを捨てても問題ないと思います。 > > 私の感覚ではSWIGでうれしいことは以下のようなことです。 > > * 定数が自動で定義される > * エラー処理を一ヶ所で書ける > > GObjectなどではCでもメタプログラミング的なことができるので、定数を動的に定義 > することができますが、普通のCでは手動で静的に定義しないといけません。定数の数 > が多いとこれがとても面倒です。例えば、GUIのツールキットでキーボードのキーを定 > 数で表している場合にそれらを全部手動でRuby側に公開するのはしんどいです。 > > > Cの関数では複数の値を戻り値として返すことができないので、普通の戻り値でエラー > かどうかを返して、引数にポインタを渡して値を返すこともそこそこありません。Senna > もそうですし、Subversionもそうなっています。このようにエラーの表現のしかたが統 > 一的に決まっている場合は、エラーチェックを機械的に行うことができます。つまり、 > SWIGでできるということです。 > > ただ、残念ながら今のRubyバインディングのAPIはエラーチェックをプログラマに任せる > ようになっています。これによりCやPerl(これは私の偏見)のようなRubyプログラマに > は使いづらいAPIになっています。Rubyであれば、エラーチェックはライブラリ側が勝手 > にやってくれて、必要なら例外を投げるようにするのが自然だと思います。 > (これのパッチは%append_output化が終わったら投げようと思っていましたが。) > > > 一方SWIGの嫌なところを以下の通りです。 > > * Cのライブラリのバインディングを作るときは、使いやすいAPIを提供するために > .rbでSWIGで生成されたものをラップしなくてはいけない。 > > > Cでは名前空間がないので関数名にプレフィックスをつけて分離しますが、Rubyではそれ > は使いづらいです。そのため、ClassやModuleを使って名前空間を作り、プレフィックスを > 除いたメソッド名にしないといけません。(使いやすいAPIを作るなら) > つまり、SWIGで普通にCのライブラリのRubyバインディングを作ったときは、それをラップ > する.rbを作らなければいけません。実際、Sennaでもそうしています。 > > つまり、簡単に言えば思ったより手作業あるね、ということです。 > もちろん、.iでclassなどを使って頑張れば.rbでラップしなくてもそれっぽく使いやすいAPIを > 作れるかもしれません。 > > 例えば、C++のように名前空間のあるものからバインディングを生成する場合はSWIGがそれ > を意識して頑張ってくれるので、Cの場合よりもラップするコードは少なくなると思います。 > 場合にもよりますが、%renameとか%ignoreとかで頑張れば.rbはほとんど必要なくなるかも > しれません。 > > 今のSennaの.iのように%include senna.hしないで.iにコピペしているのであれば、.iの中で > classを定義して、そこでオブジェクト指向っぽいAPIを作った方がよいと思います。 > この方法は、例えばHyperEstraierのSWIGバインディングが使っています。 > > > > というように、残念ながら今のRubyバインディングのやり方は私から見るとSWIGじゃなく > てもよいのでは?という感じです。もちろん、やり方を変えればSWIGのよさを取り入れる > こともできると思います。もし、私が直すなら、まずはコピペをやめて%include senna.hに > します。 > > > つらつらと書きましたが、もしよかったら参考にしてください。 > > _______________________________________________ > Senna-dev mailing list > Senna-dev @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > -- morita From kou @ cozmixng.org Wed May 14 10:05:24 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Wed, 14 May 2008 10:05:24 +0900 Subject: [Senna-dev 847] Re: %append_output In-Reply-To: <20080513165804.GB11337@epepe.com> References: <20080509180903.GA7617@epepe.com> <20080513165804.GB11337@epepe.com> Message-ID: 須藤です。 2008/05/14 1:58 : > 多分、1〜2週間以内ぐらいに、新しいsennaのAPIを提供したいと思っています。 個人的な好みなのですが、今のAPIに少し思うところがあります。 Sennaにはbasic APIとadvanced APIがあって、basic APIではadvanced APIの一部 を関数名に使っています。(sen_index_update() -> sen_index_upd()) これは、より多く使う方はタイプ数が少ない方が使いやすい、ということからだと 思いますが、upd/ind/selはぱっと見でなんなのかがわからないことが多いです。 (indはいつもインドと思ってしまう。) 現在のようにadvanced APIに普通の名前を使って、basic APIに短い名前を使うの ではなくて、basic APIの方は普通の名前にしてadvanced APIは長い名前にすると いうのはいかがでしょうか?(sen_index_update()/sen_index_update_full()) こうすれば他のbasic APIとも統一されて(sen_index_create()などは名前が省略 されていない)自然になる気がします。 まぁ、個人的な好みです。 > そのAPIでは言語バインディングからsennaの機能をもっと本格的に使えるように > なると見込んでいるので、使いやすさも性能も追求したいと思っています。 楽しみにしています。 > エラー処理の点、なるほどと思いました。すごく参考になります。 それはよかったです。 %append_outputが一段落したらパッチを送ります。ただ、今のAPIが壊れてしまう んですよね。(今までsen_rcを返していたところで常にSenna::RC_SUCCESSを返 すようにしたままにすればまだマシですが、それでも今まで例外があがらなかった ところであがるので壊れるといえば壊れる。) > もしも「このAPI(バインディング)が出来が良い」というような例がありましたら、 > 紹介していただけると嬉しいです。 > (SWIGを使っているものでも使ってないものでも良いです。) 私が今まで使って、ソースも見た少ないサンプルの中だとrcairoが私好みです。 SWIGを使って頑張っているのだとSubversionのRubyバインディングですが、APIは そんなによくないです。(もう少し頑張らないとダメダメ) SQLiteのRubyバインディングもSWIGを使っていますが、これもSWIGで生成した APIをRubyでラップしていますね。ただ、直接使ったことはないのでAPIが良い悪い はわからないです。でも、頑張っている感じはします。 From kou @ cozmixng.org Wed May 14 10:24:16 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Wed, 14 May 2008 10:24:16 +0900 Subject: [Senna-dev 848] Re: =?iso-2022-jp?b?UnVieRskQiVQJSQlcyVHJSMlcyUwJE4lRiU5JUgbKEI=?= =?iso-2022-jp?b?GyRCJE5BdiRpJDtKfRsoQg==?= In-Reply-To: <48240190.6090700@razil.jp> References: <4823F993.8000800@razil.jp> <48240190.6090700@razil.jp> Message-ID: 須藤です。 2008/05/09 16:47 Tasuku SUENAGA : > 将来的には、SennaQLという言語でテストを書く予定です。 これは、SennaQL上にテスティングフレームワークを構築してテストを 作成する、という感じになるのでしょうか? SennaQLは入出力はS式でいけるので、他のScheme処理系でテストを書 いて、SennaQLの処理系に入出力をつなげてテストをするということも できると思います。 こんなイメージです。 SennaQL: (define (plus x y) (if (zero? y) x (plus (+ x 1) (- y 1)))) Scheme: (call-with-process-io "senna /tmp/xxx" (lambda (input output) (display input "(plus 1 3)") (assert-equal 4 (read output)))) 昔はuimもこんな風にしてテストをしていました。 この方法のメリットはこんな感じです。 * SennaQLがそんなに便利関数を持っていなくても、Scheme処理系が 便利関数をたくさんもっていれば楽にテストが書ける * SennaQLが落ちてもテストが続行される * SennaQL用のテスティングフレームワークを作らなくてもよい デメリットはこんな感じです。 * 別プロセスを起動するので普通より遅い この方法を使うならScheme処理系は多言語対応しているのでGaucheが いいと思います。そういえば、Gauche用のテスティングフレームワーク としてGaUnitというのがあります。 http://www.cozmixng.org/~rwiki/index.rb?cmd=view;name=GaUnit 今よりももっと楽にテストを書けるようなAPIが追加しようという意志が あるようです。 From kou @ cozmixng.org Wed May 14 18:08:26 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Wed, 14 May 2008 18:08:26 +0900 Subject: [Senna-dev 849] =?iso-2022-jp?b?SW5kZXhBZHZhbmNlZFRlc3QjdGVzdF9jcmVhdGVfd2l0aF9r?= =?iso-2022-jp?b?ZXlzGyRCJEclNCVfJCw7RCRrGyhC?= Message-ID: 須藤です。 IndexAdvancedTest#test_create_with_keysではsen_index_create_with_keys() でSenna::Indexを作るのでXXX.SENはできません。そのため、 Senna::Index#removeが失敗して、create_with_keys.SEN.iなどが残ってしまい ます。 この挙動は意図的でしょうか? sen_index_create_with_keys()で作られたsen_index *はsen_index_remove()の ときに.SENを消そうとしないとか、sen_sym_remove()しちゃうとか、この場 合をエラーにしない方法はいろいろあると思います。 From morita @ razil.jp Wed May 14 18:27:00 2008 From: morita @ razil.jp (morita @ razil.jp) Date: Wed, 14 May 2008 18:27:00 +0900 Subject: [Senna-dev 850] Re: =?iso-2022-jp?b?SW5kZXhBZHZhbmNlZFRlc3QjdGVzdF9jcmVhdGVfd2l0?= =?iso-2022-jp?b?aF9rZXlzGyRCJEclNCVfJCw7RCRrGyhC?= In-Reply-To: References: Message-ID: <20080514092700.GA3397@epepe.com> 森です。 意図的ではありません。 sen_index_create_with_keys()で作られたsen_index *はsen_index_remove()の ときに.SENを消そうとしないようにするのがスジだと思いますが、 それを判断するための情報がインデックスファイルの中に保存されないので、 うまく解消できないのです。APIの仕様に問題があったと反省しています。 sen_index_create_with_keys sen_index_create_with_keys_lexicon sen_index_open_with_keys sen_index_open_with_keys_lexicon の4つはsen_indexとsen_dbの橋渡しをするために作りましたが、 新APIの提供によって不要になるはずなので、 期間を置いていずれは廃止したいと考えています。 予定としては 新API αリリース ↓ コメントを受けつつAPI仕様を調整 ↓ 新APIをfix βリリース ↓ 安定化 ↓ Senna1.2リリース(同時に旧APIのいくつかをdeprecated扱いとする) ↓ ↓ Senna1.4あたりで(deprecated APIとv0.8形式インデックスのサポートを廃止) こんな感じで考えています。 >>> Kouhei Sutou さんは書きました: > 須藤です。 > > IndexAdvancedTest#test_create_with_keysではsen_index_create_with_keys() > でSenna::Indexを作るのでXXX.SENはできません。そのため、 > Senna::Index#removeが失敗して、create_with_keys.SEN.iなどが残ってしまい > ます。 > > この挙動は意図的でしょうか? > sen_index_create_with_keys()で作られたsen_index *はsen_index_remove()の > ときに.SENを消そうとしないとか、sen_sym_remove()しちゃうとか、この場 > 合をエラーにしない方法はいろいろあると思います。 > > _______________________________________________ > Senna-dev mailing list > Senna-dev @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > -- morita From kou @ cozmixng.org Wed May 14 18:43:35 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Wed, 14 May 2008 18:43:35 +0900 Subject: [Senna-dev 851] Re: =?iso-2022-jp?b?SW5kZXhBZHZhbmNlZFRlc3QjdGVzdF9jcmVhdGVfd2l0?= =?iso-2022-jp?b?aF9rZXlzGyRCJEclNCVfJCw7RCRrGyhC?= In-Reply-To: <20080514092700.GA3397@epepe.com> References: <20080514092700.GA3397@epepe.com> Message-ID: 須藤です。 2008/05/14 18:27 : > 意図的ではありません。 > > sen_index_create_with_keys()で作られたsen_index *はsen_index_remove()の > ときに.SENを消そうとしないようにするのがスジだと思いますが、 > それを判断するための情報がインデックスファイルの中に保存されないので、 > うまく解消できないのです。APIの仕様に問題があったと反省しています。 わかりました。 ところで、struct _sen_*が丸見えなのは意図的でしょうか? これのおかげでAPIの拡張が大変になっているようにも見えます。 今後、structの中身を隠すということはあるでしょうか? もちろん、アクセサ関数を使うよりもstructの中身に直接アクセスできた方が 速度的に有利だからこのまま、というのも十分理解できます。Sennaは速度を 重視するライブラリだと思いますし。ただ、Sennaを利用する側は直接struct の中身にアクセスできなくてもそんなに速度的には影響がないんじゃないか なぁとも思います。特にバインディングを利用するならですが。 個人的な好みとしてはAPIを柔軟に変更できるので隠したいです。 From morita @ razil.jp Wed May 14 18:47:18 2008 From: morita @ razil.jp (morita @ razil.jp) Date: Wed, 14 May 2008 18:47:18 +0900 Subject: [Senna-dev 852] Re: =?iso-2022-jp?b?UnVieRskQiVQJSQlcyVHJSMlcyUwJE4lRiU5JUgbKEI=?= =?iso-2022-jp?b?GyRCJE5BdiRpJDtKfRsoQg==?= In-Reply-To: References: <4823F993.8000800@razil.jp> <48240190.6090700@razil.jp> Message-ID: <20080514094718.GA3994@epepe.com> 森です。 Gaucheと組み合わせたテスト良さげですねー。 そもそもGaucheをQLとして使うという案もあったのですが、 検討の結果とりあえずは小さな処理系を使おうとということで 現在のアプローチに至っています。 >>> Kouhei Sutou さんは書きました: > 須藤です。 > > 2008/05/09 16:47 Tasuku SUENAGA : > > > 将来的には、SennaQLという言語でテストを書く予定です。 > > これは、SennaQL上にテスティングフレームワークを構築してテストを > 作成する、という感じになるのでしょうか? > > SennaQLは入出力はS式でいけるので、他のScheme処理系でテストを書 > いて、SennaQLの処理系に入出力をつなげてテストをするということも > できると思います。 > > こんなイメージです。 > > SennaQL: > (define (plus x y) > (if (zero? y) > x > (plus (+ x 1) (- y 1)))) > > Scheme: > (call-with-process-io "senna /tmp/xxx" > (lambda (input output) > (display input "(plus 1 3)") > (assert-equal 4 (read output)))) > > > 昔はuimもこんな風にしてテストをしていました。 > > この方法のメリットはこんな感じです。 > > * SennaQLがそんなに便利関数を持っていなくても、Scheme処理系が > 便利関数をたくさんもっていれば楽にテストが書ける > * SennaQLが落ちてもテストが続行される > * SennaQL用のテスティングフレームワークを作らなくてもよい > > デメリットはこんな感じです。 > > * 別プロセスを起動するので普通より遅い > > > この方法を使うならScheme処理系は多言語対応しているのでGaucheが > いいと思います。そういえば、Gauche用のテスティングフレームワーク > としてGaUnitというのがあります。 > http://www.cozmixng.org/~rwiki/index.rb?cmd=view;name=GaUnit > > 今よりももっと楽にテストを書けるようなAPIが追加しようという意志が > あるようです。 > > _______________________________________________ > Senna-dev mailing list > Senna-dev @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > -- morita From kou @ cozmixng.org Wed May 14 18:52:33 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Wed, 14 May 2008 18:52:33 +0900 Subject: [Senna-dev 853] Re: =?iso-2022-jp?b?UnVieRskQiVQJSQlcyVHJSMlcyUwJE4lRiU5JUgbKEI=?= =?iso-2022-jp?b?GyRCJE5BdiRpJDtKfRsoQg==?= In-Reply-To: <20080514094718.GA3994@epepe.com> References: <4823F993.8000800@razil.jp> <48240190.6090700@razil.jp> <20080514094718.GA3994@epepe.com> Message-ID: 須藤です。 2008/05/14 18:47 : > そもそもGaucheをQLとして使うという案もあったのですが、 > 検討の結果とりあえずは小さな処理系を使おうとということで > 現在のアプローチに至っています。 小さい処理系ということであれば、今ならSigSchemeもいいかも しれませんね。uimも小さい処理系を重視している(よう)なので 処理系の改良という点では成果を共有できるかもしれません。 あっちはR5RSですし、マルチバイト文字も頑張っていますし。 ただ、今から乗り換えるのは手間だとは思いますが。。。 From morita @ razil.jp Wed May 14 19:58:07 2008 From: morita @ razil.jp (morita @ razil.jp) Date: Wed, 14 May 2008 19:58:07 +0900 Subject: [Senna-dev 854] Re: =?iso-2022-jp?b?SW5kZXhBZHZhbmNlZFRlc3QjdGVzdF9jcmVhdGVfd2l0?= =?iso-2022-jp?b?aF9rZXlzGyRCJEclNCVfJCw7RCRrGyhC?= In-Reply-To: References: <20080514092700.GA3397@epepe.com> Message-ID: <20080514105807.GB3994@epepe.com> 森です。 メンバを公開している理由はふたとおりあります。 - 利用する側が構造体の中身に直接アクセスすることを意図している。 (optargs系) - 構造体の実体を利用する側で(スタック等に)確保可能にしたい。 (sen_sym_scan_hit, sen_sym_cursorなど) 後者については利用する側に中身をいじられるのは本意ではないですねー。 また、後者については今後中身が隠されたり変更されたりすることは有り得ると思います。 >>> Kouhei Sutou さんは書きました: > 須藤です。 > > 2008/05/14 18:27 : > > > 意図的ではありません。 > > > > sen_index_create_with_keys()で作られたsen_index *はsen_index_remove()の > > ときに.SENを消そうとしないようにするのがスジだと思いますが、 > > それを判断するための情報がインデックスファイルの中に保存されないので、 > > うまく解消できないのです。APIの仕様に問題があったと反省しています。 > > わかりました。 > > ところで、struct _sen_*が丸見えなのは意図的でしょうか? > これのおかげでAPIの拡張が大変になっているようにも見えます。 > > 今後、structの中身を隠すということはあるでしょうか? > もちろん、アクセサ関数を使うよりもstructの中身に直接アクセスできた方が > 速度的に有利だからこのまま、というのも十分理解できます。Sennaは速度を > 重視するライブラリだと思いますし。ただ、Sennaを利用する側は直接struct > の中身にアクセスできなくてもそんなに速度的には影響がないんじゃないか > なぁとも思います。特にバインディングを利用するならですが。 > > 個人的な好みとしてはAPIを柔軟に変更できるので隠したいです。 > > _______________________________________________ > Senna-dev mailing list > Senna-dev @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > -- morita From kou @ cozmixng.org Wed May 14 21:34:08 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Wed, 14 May 2008 21:34:08 +0900 (JST) Subject: [Senna-dev 855] Re: %append_output In-Reply-To: References: <20080513165804.GB11337@epepe.com> Message-ID: <20080514.213408.561632777532141672.kou@cozmixng.org> 須藤です。 In "[Senna-dev 847] Re: %append_output" on Wed, 14 May 2008 10:05:24 +0900, "Kouhei Sutou" wrote: > > エラー処理の点、なるほどと思いました。すごく参考になります。 > > %append_outputが一段落したらパッチを送ります。ただ、今のAPIが壊れてしまう > んですよね。(今までsen_rcを返していたところで常にSenna::RC_SUCCESSを返 > すようにしたままにすればまだマシですが、それでも今まで例外があがらなかった > ところであがるので壊れるといえば壊れる。) あ、一応言うと、この一段落したらというのは、%append_output化 をしてもらったら、と言う意味です。なのでそれまでは手元で温め ておくつもりです。API壊れますし。 From cubicdaiya @ gmail.com Wed May 14 21:46:12 2008 From: cubicdaiya @ gmail.com (Tatsuhiko Kubo) Date: Wed, 14 May 2008 21:46:12 +0900 Subject: [Senna-dev 856] =?iso-2022-jp?b?U2VubmFRTBskQiRON1FCMyRLJEQkJCRGGyhC?= Message-ID: <482ADF14.5040402@gmail.com> はじめまして。久保と申します。 SennaQLの継続についてお聞きしたいのですが、 call-with-current-continuation(call/cc)を使って継続を生成した時の挙動が ほかのScheme処理系と異なります。 SennaQLでは、call/ccを使って生成した継続を保存して、 後で呼び出すといったことができないのですが、 これは何らかの要因があって意図的にこのような動作をするようになっているの でしょうか? よろしくお願いします。 ・SennaQLの場合 > (define (square x) (* x x)) square > (define cont #f) cont > (square (call-with-current-continuation (lambda (c) (set! cont c) (square 20)))) 160000 > cont # > (cont 5) *** ERROR: Illegal function > ・Gaucheの場合 gosh> (define (square x) (* x x)) square gosh> (define cont #f) cont gosh> (square (call/cc (lambda (c) (set! cont c) (square 20)))) 160000 gosh> cont # gosh> (cont 5) 25 gosh> ・Guileの場合 guile> (define (square x) (* x x)) guile> (define cont #f) guile> (square (call/cc (lambda (c) (set! cont c) (square 20)))) 160000 guile> cont # guile> (cont 5) 25 guile> From cubicdaiya @ gmail.com Wed May 14 22:08:37 2008 From: cubicdaiya @ gmail.com (Tatsuhiko Kubo) Date: Wed, 14 May 2008 22:08:37 +0900 Subject: [Senna-dev 857] Re: =?iso-2022-jp?b?U2VubmFRTBskQiRON1FCMyRLJEQkJCRGGyhC?= In-Reply-To: <482ADF14.5040402@gmail.com> References: <482ADF14.5040402@gmail.com> Message-ID: <482AE455.3000604@gmail.com> 久保です。 すみません。先程の投稿ですが、 動作確認したSennaのバージョンを明記するのを忘れていました。 動作確認したSennaのバージョンは1.1.1です。 Tatsuhiko Kubo さんは書きました: > はじめまして。久保と申します。 > > SennaQLの継続についてお聞きしたいのですが、 > call-with-current-continuation(call/cc)を使って継続を生成した時の挙動が > ほかのScheme処理系と異なります。 > > SennaQLでは、call/ccを使って生成した継続を保存して、 > 後で呼び出すといったことができないのですが、 > これは何らかの要因があって意図的にこのような動作をするようになっているの > でしょうか? > > よろしくお願いします。 > > ・SennaQLの場合 > > >> (define (square x) (* x x)) >> > square > >> (define cont #f) >> > cont > >> (square (call-with-current-continuation (lambda (c) (set! cont c) >> > (square 20)))) > 160000 > >> cont >> > # > >> (cont 5) >> > *** ERROR: Illegal function > > > > ・Gaucheの場合 > > gosh> (define (square x) (* x x)) > square > gosh> (define cont #f) > cont > gosh> (square (call/cc (lambda (c) (set! cont c) (square 20)))) > 160000 > gosh> cont > # > gosh> (cont 5) > 25 > gosh> > > ・Guileの場合 > > guile> (define (square x) (* x x)) > guile> (define cont #f) > guile> (square (call/cc (lambda (c) (set! cont c) (square 20)))) > 160000 > guile> cont > # > guile> (cont 5) > 25 > guile> > > _______________________________________________ > Senna-dev mailing list > Senna-dev @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > > From kou @ cozmixng.org Wed May 14 22:35:05 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Wed, 14 May 2008 22:35:05 +0900 (JST) Subject: [Senna-dev 858] Re: =?iso-2022-jp?b?SW5kZXhBZHZhbmNlZFRlc3QjdGVzdF9jcmVhdGVfd2l0?= =?iso-2022-jp?b?aF9rZXlzGyRCJEclNCVfJCw7RCRrGyhC?= In-Reply-To: <20080514105807.GB3994@epepe.com> References: <20080514092700.GA3397@epepe.com> <20080514105807.GB3994@epepe.com> Message-ID: <20080514.223505.1038111520811776501.kou@cozmixng.org> 須藤です。 In <20080514105807.GB3994 @ epepe.com> "[Senna-dev 854] Re: IndexAdvancedTest#test_create_with_keysでゴミが残る" on Wed, 14 May 2008 19:58:07 +0900, morita @ razil.jp wrote: > - 利用する側が構造体の中身に直接アクセスすることを意図している。 > (optargs系) これらは使い捨て感(?)というかデータ感があるので公開するの が普通でよいと思います。 > - 構造体の実体を利用する側で(スタック等に)確保可能にしたい。 > (sen_sym_scan_hit, sen_sym_cursorなど) sen_sym_cursorはsen_sym_cursor_fin()を呼ばなきゃいけないので スタックに確保するのも動的にメモリを割り当てるのも使い勝手は あまり変わらない気がします(free()相当の呼び出しがなくならな いから)。 # このときはsen_sym_cursor_init()じゃなくて # sen_sym_cursor_new()にしてsen_sym_cursor **cにする 他にも*_close()/*_fin()を持っているものは隠してもよいのではな いかなぁと思います。なんというか、こいつらにはオブジェクト感 があります。(sen_sym_scan_hitはデータ感がするのでアレなんで すが) > また、後者については今後中身が隠されたり変更されたりすることは有り得ると思います。 わかりました。 From morita @ razil.jp Thu May 15 08:28:30 2008 From: morita @ razil.jp (morita @ razil.jp) Date: Thu, 15 May 2008 08:28:30 +0900 Subject: [Senna-dev 859] Re: %append_output In-Reply-To: <20080514.213408.561632777532141672.kou@cozmixng.org> References: <20080513165804.GB11337@epepe.com> <20080514.213408.561632777532141672.kou@cozmixng.org> Message-ID: <20080514232830.GA26729@epepe.com> 森です。 そうですね。 現時点のAPIではバインディングをあまりいじらない方が得策だと思っています。 >>> Kouhei Sutou さんは書きました: > 須藤です。 > > In > "[Senna-dev 847] Re: %append_output" on Wed, 14 May 2008 10:05:24 +0900, > "Kouhei Sutou" wrote: > > > > エラー処理の点、なるほどと思いました。すごく参考になります。 > > > > %append_outputが一段落したらパッチを送ります。ただ、今のAPIが壊れてしまう > > んですよね。(今までsen_rcを返していたところで常にSenna::RC_SUCCESSを返 > > すようにしたままにすればまだマシですが、それでも今まで例外があがらなかった > > ところであがるので壊れるといえば壊れる。) > > あ、一応言うと、この一段落したらというのは、%append_output化 > をしてもらったら、と言う意味です。なのでそれまでは手元で温め > ておくつもりです。API壊れますし。 > > _______________________________________________ > Senna-dev mailing list > Senna-dev @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > -- morita From morita @ razil.jp Thu May 15 13:44:07 2008 From: morita @ razil.jp (morita @ razil.jp) Date: Thu, 15 May 2008 13:44:07 +0900 Subject: [Senna-dev 860] Re: =?iso-2022-jp?b?U2VubmFRTBskQiRON1FCMyRLJEQkJCRGGyhC?= In-Reply-To: <482ADF14.5040402@gmail.com> References: <482ADF14.5040402@gmail.com> Message-ID: <20080515044407.GA7762@epepe.com> 森です。 ご指摘ありがとうございます!! これはバグでした。 revision 810で修正しました。 >>> Tatsuhiko Kubo さんは書きました: > はじめまして。久保と申します。 > > SennaQLの継続についてお聞きしたいのですが、 > call-with-current-continuation(call/cc)を使って継続を生成した時の挙動が > ほかのScheme処理系と異なります。 > > SennaQLでは、call/ccを使って生成した継続を保存して、 > 後で呼び出すといったことができないのですが、 > これは何らかの要因があって意図的にこのような動作をするようになっているの > でしょうか? > > よろしくお願いします。 > > ・SennaQLの場合 > > > (define (square x) (* x x)) > square > > (define cont #f) > cont > > (square (call-with-current-continuation (lambda (c) (set! cont c) > (square 20)))) > 160000 > > cont > # > > (cont 5) > *** ERROR: Illegal function > > > > > ・Gaucheの場合 > > gosh> (define (square x) (* x x)) > square > gosh> (define cont #f) > cont > gosh> (square (call/cc (lambda (c) (set! cont c) (square 20)))) > 160000 > gosh> cont > # > gosh> (cont 5) > 25 > gosh> > > ・Guileの場合 > > guile> (define (square x) (* x x)) > guile> (define cont #f) > guile> (square (call/cc (lambda (c) (set! cont c) (square 20)))) > 160000 > guile> cont > # > guile> (cont 5) > 25 > guile> > > _______________________________________________ > Senna-dev mailing list > Senna-dev @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > -- morita From morita @ razil.jp Thu May 15 13:53:36 2008 From: morita @ razil.jp (morita @ razil.jp) Date: Thu, 15 May 2008 13:53:36 +0900 Subject: [Senna-dev 861] Re: =?iso-2022-jp?b?SW5kZXhBZHZhbmNlZFRlc3QjdGVzdF9jcmVhdGVfd2l0?= =?iso-2022-jp?b?aF9rZXlzGyRCJEclNCVfJCw7RCRrGyhC?= In-Reply-To: <20080514.223505.1038111520811776501.kou@cozmixng.org> References: <20080514092700.GA3397@epepe.com> <20080514105807.GB3994@epepe.com> <20080514.223505.1038111520811776501.kou@cozmixng.org> Message-ID: <20080515045336.GB7762@epepe.com> 森です。 そうですねー。 sen_sym_cursor は非公開にしようかと思います。 その他の中身が公開されている構造体のうち、 使い捨て系&データ系の範疇に入らないのは sen_index のみです。 こちらは互換性維持のために当面は公開を継続します。 (いずれ sen_index 自体がdeprecatedになる見込みです。) >>> Kouhei Sutou さんは書きました: > 須藤です。 > > In <20080514105807.GB3994 @ epepe.com> > "[Senna-dev 854] Re: IndexAdvancedTest#test_create_with_keysでゴミが残る" on Wed, 14 May 2008 19:58:07 +0900, > morita @ razil.jp wrote: > > > - 利用する側が構造体の中身に直接アクセスすることを意図している。 > > (optargs系) > > これらは使い捨て感(?)というかデータ感があるので公開するの > が普通でよいと思います。 > > > - 構造体の実体を利用する側で(スタック等に)確保可能にしたい。 > > (sen_sym_scan_hit, sen_sym_cursorなど) > > sen_sym_cursorはsen_sym_cursor_fin()を呼ばなきゃいけないので > スタックに確保するのも動的にメモリを割り当てるのも使い勝手は > あまり変わらない気がします(free()相当の呼び出しがなくならな > いから)。 > > # このときはsen_sym_cursor_init()じゃなくて > # sen_sym_cursor_new()にしてsen_sym_cursor **cにする > > > 他にも*_close()/*_fin()を持っているものは隠してもよいのではな > いかなぁと思います。なんというか、こいつらにはオブジェクト感 > があります。(sen_sym_scan_hitはデータ感がするのでアレなんで > すが) > > > また、後者については今後中身が隠されたり変更されたりすることは有り得ると思います。 > > わかりました。 > > _______________________________________________ > Senna-dev mailing list > Senna-dev @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > -- morita From kou @ cozmixng.org Fri May 16 09:00:58 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Fri, 16 May 2008 09:00:58 +0900 Subject: [Senna-dev 862] Re: =?iso-2022-jp?b?SW5kZXhBZHZhbmNlZFRlc3QjdGVzdF9jcmVhdGVfd2l0?= =?iso-2022-jp?b?aF9rZXlzGyRCJEclNCVfJCw7RCRrGyhC?= In-Reply-To: <20080515045336.GB7762@epepe.com> References: <20080514092700.GA3397@epepe.com> <20080514105807.GB3994@epepe.com> <20080514.223505.1038111520811776501.kou@cozmixng.org> <20080515045336.GB7762@epepe.com> Message-ID: 須藤です。 2008/05/15 13:53 : > (いずれ sen_index 自体がdeprecatedになる見込みです。) え!?そうなんですか。 sen_index_create()じゃないテストを書けばよかった。。。 今後も残りそうで大事なAPIはどれでしょうか? (テストしておいた方がよさそうなAPI) From morita @ razil.jp Fri May 16 15:33:52 2008 From: morita @ razil.jp (morita @ razil.jp) Date: Fri, 16 May 2008 15:33:52 +0900 Subject: [Senna-dev 863] Re: =?iso-2022-jp?b?SW5kZXhBZHZhbmNlZFRlc3QjdGVzdF9jcmVhdGVfd2l0?= =?iso-2022-jp?b?aF9rZXlzGyRCJEclNCVfJCw7RCRrGyhC?= In-Reply-To: References: <20080514092700.GA3397@epepe.com> <20080514105807.GB3994@epepe.com> <20080514.223505.1038111520811776501.kou@cozmixng.org> <20080515045336.GB7762@epepe.com> Message-ID: <20080516063352.GA23658@epepe.com> 森です。 >>> Kouhei Sutou さんは書きました: > 須藤です。 > > 2008/05/15 13:53 : > > > (いずれ sen_index 自体がdeprecatedになる見込みです。) > > え!?そうなんですか。 > sen_index_create()じゃないテストを書けばよかった。。。 ごめんなさい‥。 でも、実際にそうなるのは、まだまだ先になると思います。 っていうか、早めにロードマップを示せるようにがんばります。 > 今後も残りそうで大事なAPIはどれでしょうか? > (テストしておいた方がよさそうなAPI) 今のところ仕様変更の予定がないのは、sen_snip系のAPIです。 > _______________________________________________ > Senna-dev mailing list > Senna-dev @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > -- morita From kou @ cozmixng.org Tue May 20 16:04:30 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Tue, 20 May 2008 16:04:30 +0900 Subject: [Senna-dev 864] =?iso-2022-jp?b?c2VuX3NuaXBfZXhlYygpGyRCJE4bKEJtYXhfdGFnZ2VkX2xl?= =?iso-2022-jp?b?bg==?= Message-ID: 須藤です。 sen_snip_exec()で受け取るmax_tagged_lenが必要以上に大きい値を返す ことがあるような気がします。 test/unit/test-snip.cのtest_simple_exec()とtest_customized_tag()の /* should be XXX? */ と書いているところです。 テストの書き方が悪いのか本体に問題があるのかがわからないので、報告 しました。 From kou @ cozmixng.org Tue May 20 23:16:55 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Tue, 20 May 2008 23:16:55 +0900 (JST) Subject: [Senna-dev 865] assert() Message-ID: <20080520.231655.951456257839789873.kou@cozmixng.org> 須藤です。 そういえば、Sennaはsnip.cの中でassert()を使っていますが、ライ ブラリがassert()で勝手に落ちてしまうのは使いづらいです。 例えば、Rubyバインディングから使っているときにassert()で落ち られるとバックトレースがとれずにデバッグが面倒です。 戻り値でエラーを通知するように変更するなどできないでしょうか? From morita @ razil.jp Wed May 21 13:43:29 2008 From: morita @ razil.jp (morita @ razil.jp) Date: Wed, 21 May 2008 13:43:29 +0900 Subject: [Senna-dev 866] Re: assert() In-Reply-To: <20080520.231655.951456257839789873.kou@cozmixng.org> References: <20080520.231655.951456257839789873.kou@cozmixng.org> Message-ID: <20080521044329.GA31794@epepe.com> 森です。 assert使わないようにしました〜。 >>> Kouhei Sutou さんは書きました: > 須藤です。 > > そういえば、Sennaはsnip.cの中でassert()を使っていますが、ライ > ブラリがassert()で勝手に落ちてしまうのは使いづらいです。 > > 例えば、Rubyバインディングから使っているときにassert()で落ち > られるとバックトレースがとれずにデバッグが面倒です。 > > 戻り値でエラーを通知するように変更するなどできないでしょうか? > > _______________________________________________ > Senna-dev mailing list > Senna-dev @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > -- morita From a @ razil.jp Wed May 21 18:41:19 2008 From: a @ razil.jp (Tasuku SUENAGA) Date: Wed, 21 May 2008 18:41:19 +0900 Subject: [Senna-dev 867] Re: =?iso-2022-jp?b?c2VuX3NuaXBfZXhlYygpGyRCJE4bKEJtYXhfdGFnZ2Vk?= =?iso-2022-jp?b?X2xlbg==?= In-Reply-To: References: Message-ID: <4833EE3F.4060405@razil.jp> 末永です。 返ってくるresultsのうちのstrlenの最大長 + 1がmax_tagged_lenになるという テストの想定仕様が正しいです。 実装を調査して、実装が上記の動作になるように修正いたします。 Kouhei Sutou さんは書きました: > 須藤です。 > > sen_snip_exec()で受け取るmax_tagged_lenが必要以上に大きい値を返す > ことがあるような気がします。 > > test/unit/test-snip.cのtest_simple_exec()とtest_customized_tag()の > /* should be XXX? */ > と書いているところです。 > > テストの書き方が悪いのか本体に問題があるのかがわからないので、報告 > しました。 ---- 末永 匡 From kou @ cozmixng.org Wed May 21 20:05:10 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Wed, 21 May 2008 20:05:10 +0900 (JST) Subject: [Senna-dev 868] Re: assert() In-Reply-To: <20080521044329.GA31794@epepe.com> References: <20080520.231655.951456257839789873.kou@cozmixng.org> <20080521044329.GA31794@epepe.com> Message-ID: <20080521.200510.1103454155144740718.kou@cozmixng.org> 須藤です。 In <20080521044329.GA31794 @ epepe.com> "[Senna-dev 866] Re: assert()" on Wed, 21 May 2008 13:43:29 +0900, morita @ razil.jp wrote: > assert使わないようにしました〜。 ありがとうございます。 From kou @ cozmixng.org Wed May 21 21:20:20 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Wed, 21 May 2008 21:20:20 +0900 (JST) Subject: [Senna-dev 869] Re: =?iso-2022-jp?b?c2VuX3NuaXBfZXhlYygpGyRCJE4bKEJtYXhfdGFnZ2Vk?= =?iso-2022-jp?b?X2xlbg==?= In-Reply-To: <4833EE3F.4060405@razil.jp> References: <4833EE3F.4060405@razil.jp> Message-ID: <20080521.212020.659817567672273719.kou@cozmixng.org> 須藤です。 In <4833EE3F.4060405 @ razil.jp> "[Senna-dev 867] Re: sen_snip_exec()のmax_tagged_len" on Wed, 21 May 2008 18:41:19 +0900, Tasuku SUENAGA wrote: > 返ってくるresultsのうちのstrlenの最大長 + 1がmax_tagged_lenになるという > テストの想定仕様が正しいです。 > > 実装を調査して、実装が上記の動作になるように修正いたします。 わかりました。 テストを直して、今の実装だと失敗するようにしておきました。 From kou @ cozmixng.org Mon May 26 14:41:09 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Mon, 26 May 2008 14:41:09 +0900 Subject: [Senna-dev 870] =?iso-2022-jp?b?Y29uZmlndXJlGyRCJHJBdiRpJDskayQ/JFMkSxsoQm5ma2Mu?= =?iso-2022-jp?b?YxskQiQsJTMlcyVRJSQlayQ1JGwkaxsoQg==?= Message-ID: 須藤です。 nfkc.cはサイズがでかく、コンパイルするのがそこそこ大変なので 必要のない限りコンパイルしたくありません。現在はconfigureが走 ると再コンパイルされてしまいます。これはどうにかならないでしょ うか? 原因はnfkc.cが(間接的に)config.hにdependしていることなのです が、これは必要でしょうか?senn_in.hは.cでだけincludeするように するのではだめでしょうか?str.hでsenna_in.hをincludeしなくなれば nfkc.cがconfig.hに依存することもなくなって、configureされたぐらい じゃ再コンパイルされなくなる気がします。 From morita @ razil.jp Mon May 26 15:23:17 2008 From: morita @ razil.jp (morita @ razil.jp) Date: Mon, 26 May 2008 15:23:17 +0900 Subject: [Senna-dev 871] Re: =?iso-2022-jp?b?Y29uZmlndXJlGyRCJHJBdiRpJDskayQ/JFMkSxsoQm5m?= =?iso-2022-jp?b?a2MuYxskQiQsJTMlcyVRJSQlayQ1JGwkaxsoQg==?= In-Reply-To: References: Message-ID: <20080526062317.GA5284@epepe.com> 森です。 >>> Kouhei Sutou さんは書きました: > 須藤です。 > > nfkc.cはサイズがでかく、コンパイルするのがそこそこ大変なので > 必要のない限りコンパイルしたくありません。現在はconfigureが走 > ると再コンパイルされてしまいます。これはどうにかならないでしょ > うか? 確かにその通りですね!! nfkc.cがconfig.hに依存しないように書きかえてみました。 これで無駄な再コンパイルが減るかもしれません。 > 原因はnfkc.cが(間接的に)config.hにdependしていることなのです > が、これは必要でしょうか?senn_in.hは.cでだけincludeするように > するのではだめでしょうか?str.hでsenna_in.hをincludeしなくなれば > nfkc.cがconfig.hに依存することもなくなって、configureされたぐらい > じゃ再コンパイルされなくなる気がします。 > > _______________________________________________ > Senna-dev mailing list > Senna-dev @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > -- morita From kou @ cozmixng.org Tue May 27 09:52:30 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Tue, 27 May 2008 09:52:30 +0900 Subject: [Senna-dev 872] Re: =?iso-2022-jp?b?Y29uZmlndXJlGyRCJHJBdiRpJDskayQ/JFMkSxsoQm5m?= =?iso-2022-jp?b?a2MuYxskQiQsJTMlcyVRJSQlayQ1JGwkaxsoQg==?= In-Reply-To: <20080526062317.GA5284@epepe.com> References: <20080526062317.GA5284@epepe.com> Message-ID: 須藤です。 2008/05/26 15:23 : > nfkc.cがconfig.hに依存しないように書きかえてみました。 > これで無駄な再コンパイルが減るかもしれません。 再コンパイルされないことを確認しました。 ありがとうございます。 From kou @ cozmixng.org Tue May 27 11:02:03 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Tue, 27 May 2008 11:02:03 +0900 Subject: [Senna-dev 873] sen_rc_to_string() Message-ID: 須藤です。 SennaのAPIでは関数の実行結果の成否をsen_rcで返しますが、sen_rcを 文字列に変換する関数があるとエラーメッセージを表示するときに便利 だと思います。errnoとstrerror()みたいな感じです。 sen_rc rc; rc = sen_index_open(...); if (rc) { printf("failed to open index: %s\n", sen_rc_to_string(rc)); exit(-1); } ... From kou @ cozmixng.org Tue May 27 11:04:19 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Tue, 27 May 2008 11:04:19 +0900 Subject: [Senna-dev 874] Re: sen_rc_to_string() In-Reply-To: References: Message-ID: 2008/05/27 11:02 Kouhei Sutou : > SennaのAPIでは関数の実行結果の成否をsen_rcで返しますが、sen_rcを > 文字列に変換する関数があるとエラーメッセージを表示するときに便利 > だと思います。errnoとstrerror()みたいな感じです。 > > sen_rc rc; > rc = sen_index_open(...); > if (rc) { > printf("failed to open index: %s\n", sen_rc_to_string(rc)); > exit(-1); > } sen_index_open()はsen_rcを返さなかった。。。 From a @ razil.jp Tue May 27 16:31:42 2008 From: a @ razil.jp (Tasuku SUENAGA) Date: Tue, 27 May 2008 16:31:42 +0900 Subject: [Senna-dev 875] Re: =?iso-2022-jp?b?c2VuX3NuaXBfZXhlYygpGyRCJE4bKEJtYXhfdGFnZ2Vk?= =?iso-2022-jp?b?X2xlbg==?= In-Reply-To: <20080521.212020.659817567672273719.kou@cozmixng.org> References: <4833EE3F.4060405@razil.jp> <20080521.212020.659817567672273719.kou@cozmixng.org> Message-ID: <483BB8DE.6030209@razil.jp> 末永です。 遅らばせながら、ご指摘のmax_tagged_lenが大きすぎる問題を 修正しておきましたー! 原因は、htmlタグを変換しない場合にも、 変換をしたのと同じサイズを確保していたためです。 とはいえ、まだcutterのビルドに成功していない状態です… テストで試したい… Kouhei Sutou さんは書きました: > 須藤です。 > > In <4833EE3F.4060405 @ razil.jp> > "[Senna-dev 867] Re: sen_snip_exec()のmax_tagged_len" on Wed, 21 May 2008 18:41:19 +0900, > Tasuku SUENAGA wrote: > >> 返ってくるresultsのうちのstrlenの最大長 + 1がmax_tagged_lenになるという >> テストの想定仕様が正しいです。 >> >> 実装を調査して、実装が上記の動作になるように修正いたします。 > > わかりました。 > > テストを直して、今の実装だと失敗するようにしておきました。 --- 末永 匡 From kou @ cozmixng.org Tue May 27 17:10:33 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Tue, 27 May 2008 17:10:33 +0900 Subject: [Senna-dev 876] Re: =?iso-2022-jp?b?c2VuX3NuaXBfZXhlYygpGyRCJE4bKEJtYXhfdGFnZ2Vk?= =?iso-2022-jp?b?X2xlbg==?= In-Reply-To: <483BB8DE.6030209@razil.jp> References: <4833EE3F.4060405@razil.jp> <20080521.212020.659817567672273719.kou@cozmixng.org> <483BB8DE.6030209@razil.jp> Message-ID: 須藤です。 2008/05/27 16:31 Tasuku SUENAGA : > 遅らばせながら、ご指摘のmax_tagged_lenが大きすぎる問題を > 修正しておきましたー! ありがとうございます。 > 原因は、htmlタグを変換しない場合にも、 > 変換をしたのと同じサイズを確保していたためです。 ひとつは直ったのですが、もうひとつの方はまだ直っていないようです。 % test/unit/run-test.sh ..F... 1) Failure: test_invalid_result_index <117 == max_tagged_len> expected: <117> but was: <113> test/unit/test-snip.c:194: test_invalid_result_index() Finished in 0.007755 seconds 6 test(s), 51 assertion(s), 1 failure(s), 0 error(s), 0 pending(s), 0 omission(s), 0 notification(s) 83.3333% passed > とはいえ、まだcutterのビルドに成功していない状態です… むぅ。 どんなエラーがでますか? From a @ razil.jp Tue May 27 17:40:47 2008 From: a @ razil.jp (Tasuku SUENAGA) Date: Tue, 27 May 2008 17:40:47 +0900 Subject: [Senna-dev 877] Re: =?iso-2022-jp?b?c2VuX3NuaXBfZXhlYygpGyRCJE4bKEJtYXhfdGFnZ2Vk?= =?iso-2022-jp?b?X2xlbg==?= In-Reply-To: References: <4833EE3F.4060405@razil.jp> <20080521.212020.659817567672273719.kou@cozmixng.org> <483BB8DE.6030209@razil.jp> Message-ID: <483BC90F.7080400@razil.jp> 末永です。 > ひとつは直ったのですが、もうひとつの方はまだ直っていないようです。 > > % test/unit/run-test.sh > ..F... > > 1) Failure: test_invalid_result_index > <117 == max_tagged_len> > expected: <117> > but was: <113> これは113で合っていると思います。 sen_snip_get_resultsでindex 0の結果を取得して、 そのstrlenを取ると112ですので。 sen_snip_openにてmappingに-1を与えた場合には、 &が&に変換されるため117になると思います。 恐らく、バグあり実装に合わせてテスト数値を設定されたのだと思います。 >> とはいえ、まだcutterのビルドに成功していない状態です… > むぅ。 > どんなエラーがでますか? GLibの2.14.5を$HOME/localにインストール後、 cutter-1.0.0のリリースtar ballを解凍し、 % export PKG_CONFIG_PATH=$HOME/local/lib/pkgconfig % export LD_LIBRARY_PATH=$HOME/local/lib % ./configure % make を行ったところ、以下のコマンドでエラーとなります。 /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I.. -I.. -DLOCALEDIR=\""/usr/share/locale"\" -pthread -I/home/tasuku/local/include/glib-2.0 -I/home/tasuku/local/lib/glib-2.0/include -DUI_MODULEDIR=\""/usr/lib/cutter/module/ui"\" -DUI_FACTORY_MODULEDIR=\""/usr/lib/cutter/module/factory/ui"\" -DREPORT_MODULEDIR=\""/usr/lib/cutter/module/report"\" -DREPORT_FACTORY_MODULEDIR=\""/usr/lib/cutter/module/factory/report"\" -DSTREAMER_MODULEDIR=\""/usr/lib/cutter/module/streamer"\" -DSTREAMER_FACTORY_MODULEDIR=\""/usr/lib/cutter/module/factory/streamer"\" -DFACTORY_MODULEDIR=\""/usr/lib/cutter/module/factory"\" -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -Wpointer-arith -Wcast-align -MT cut-sequence-matcher.lo -MD -MP -MF .deps/cut-sequence-matcher.Tpo -c -o cut-sequence-matcher.lo cut-sequence-matcher.c gcc -DHAVE_CONFIG_H -I. -I.. -I.. -DLOCALEDIR=\"/usr/share/locale\" -pthread -I/home/tasuku/local/include/glib-2.0 -I/home/tasuku/local/lib/glib-2.0/include -DUI_MODULEDIR=\"/usr/lib/cutter/module/ui\" -DUI_FACTORY_MODULEDIR=\"/usr/lib/cutter/module/factory/ui\" -DREPORT_MODULEDIR=\"/usr/lib/cutter/module/report\" -DREPORT_FACTORY_MODULEDIR=\"/usr/lib/cutter/module/factory/report\" -DSTREAMER_MODULEDIR=\"/usr/lib/cutter/module/streamer\" -DSTREAMER_FACTORY_MODULEDIR=\"/usr/lib/cutter/module/factory/streamer\" -DFACTORY_MODULEDIR=\"/usr/lib/cutter/module/factory\" -g -O2 -Wall -Wmissing-declarations -Wmissing-prototypes -Wpointer-arith -Wcast-align -MT cut-sequence-matcher.lo -MD -MP -MF .deps/cut-sequence-matcher.Tpo -c cut-sequence-matcher.c -fPIC -DPIC -o .libs/cut-sequence-matcher.o cut-sequence-matcher.c: In function ‘remove_junks_from_to_indices’: cut-sequence-matcher.c:303: error: ‘GHashTableIter’ undeclared (first use in this function) cut-sequence-matcher.c:303: error: (Each undeclared identifier is reported only once cut-sequence-matcher.c:303: error: for each function it appears in.) cut-sequence-matcher.c:303: error: expected ‘;’ before ‘iter’ cut-sequence-matcher.c:308: warning: implicit declaration of function ‘g_hash_table_iter_init’ cut-sequence-matcher.c:308: error: ‘iter’ undeclared (first use in this function) cut-sequence-matcher.c:309: warning: implicit declaration of function ‘g_hash_table_iter_next’ cut-sequence-matcher.c:312: warning: implicit declaration of function ‘g_hash_table_iter_remove’ make[3]: *** [cut-sequence-matcher.lo] エラー 1 includeにミスっているわけでもなさそうです。 --- 末永 匡 From kou @ cozmixng.org Tue May 27 17:51:20 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Tue, 27 May 2008 17:51:20 +0900 Subject: [Senna-dev 878] Re: =?iso-2022-jp?b?c2VuX3NuaXBfZXhlYygpGyRCJE4bKEJtYXhfdGFnZ2Vk?= =?iso-2022-jp?b?X2xlbg==?= In-Reply-To: <483BC90F.7080400@razil.jp> References: <4833EE3F.4060405@razil.jp> <20080521.212020.659817567672273719.kou@cozmixng.org> <483BB8DE.6030209@razil.jp> <483BC90F.7080400@razil.jp> Message-ID: 須藤です。 2008/05/27 17:40 Tasuku SUENAGA : >> % test/unit/run-test.sh >> ..F... >> >> 1) Failure: test_invalid_result_index >> <117 == max_tagged_len> >> expected: <117> >> but was: <113> > > これは113で合っていると思います。 > sen_snip_get_resultsでindex 0の結果を取得して、 > そのstrlenを取ると112ですので。 あ、そうですね。 テストを直しておきました。 > GLibの2.14.5を$HOME/localにインストール後、 あぁ、ごめんなさい。 うっかりGLib 2.16からの機能を使ってしまっていたのにREADMEを 直し忘れていたんです。GLib 2.16.xを使うとビルドできると思います。 From a @ razil.jp Tue May 27 18:32:15 2008 From: a @ razil.jp (Tasuku SUENAGA) Date: Tue, 27 May 2008 18:32:15 +0900 Subject: [Senna-dev 879] Re: =?iso-2022-jp?b?c2VuX3NuaXBfZXhlYygpGyRCJE4bKEJtYXhfdGFnZ2Vk?= =?iso-2022-jp?b?X2xlbg==?= In-Reply-To: References: <4833EE3F.4060405@razil.jp> <20080521.212020.659817567672273719.kou@cozmixng.org> <483BB8DE.6030209@razil.jp> <483BC90F.7080400@razil.jp> Message-ID: <483BD51F.90300@razil.jp> 末永です。 >> これは113で合っていると思います。 > あ、そうですね。 > テストを直しておきました。 ありがとうございます! >> GLibの2.14.5を$HOME/localにインストール後、 > あぁ、ごめんなさい。 > うっかりGLib 2.16からの機能を使ってしまっていたのにREADMEを > 直し忘れていたんです。GLib 2.16.xを使うとビルドできると思います。 http://ftp.gnome.org/pub/GNOME/sources/glib/2.16/glib-2.16.3.tar.gz からGlib 2.16.3を取ってきてビルドして、 % export PKG_CONFIG_PATH=$HOME/local/lib/pkgconfig % export LD_LIBRARY_PATH=$HOME/local/lib % ./configure --prefix=/usr % make # make install でインストールできました。 が、テストがうまく走っていない気がします… Sennaのconfigureは、 % CFLAGS="-O0 -ggdb" ./configure --prefix=/usr --with-cutter と行いました。 そして、test/unit/run-test.shを実行したものの、 結果が何も帰ってこない状態です。 test/unit/cutter-senna test/unit でも状況は一緒です。 ちなみに、 % find test/unit -name "*.so" test/unit/.libs/sen_test_utils.so test/unit/.libs/test_snip.so test/unit/.libs/test_index.so です。 --- 末永 匡 From kou @ cozmixng.org Tue May 27 20:36:51 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Tue, 27 May 2008 20:36:51 +0900 (JST) Subject: [Senna-dev 880] Re: =?iso-2022-jp?b?c2VuX3NuaXBfZXhlYygpGyRCJE4bKEJtYXhfdGFnZ2Vk?= =?iso-2022-jp?b?X2xlbg==?= In-Reply-To: <483BD51F.90300@razil.jp> References: <483BC90F.7080400@razil.jp> <483BD51F.90300@razil.jp> Message-ID: <20080527.203651.665876747611164860.kou@cozmixng.org> 須藤です。 In <483BD51F.90300 @ razil.jp> "[Senna-dev 879] Re: sen_snip_exec()のmax_tagged_len" on Tue, 27 May 2008 18:32:15 +0900, Tasuku SUENAGA wrote: > が、テストがうまく走っていない気がします… > Sennaのconfigureは、 > % CFLAGS="-O0 -ggdb" ./configure --prefix=/usr --with-cutter > と行いました。 > > そして、test/unit/run-test.shを実行したものの、 > 結果が何も帰ってこない状態です。 > test/unit/cutter-senna test/unit > でも状況は一緒です。 うーん、soが読み込まれていない雰囲気ですね。 > ちなみに、 > % find test/unit -name "*.so" > test/unit/.libs/sen_test_utils.so > test/unit/.libs/test_snip.so > test/unit/.libs/test_index.so > です。 これの結果を見せてもらえますか? % ldd test/unit/.libs/cutter-senna % strace test/unit/cutter-senna test/unit 2>&1 | grep so From a @ razil.jp Tue May 27 21:49:25 2008 From: a @ razil.jp (Tasuku SUENAGA) Date: Tue, 27 May 2008 21:49:25 +0900 Subject: [Senna-dev 881] =?iso-2022-jp?b?Y3V0dGVyGyRCJEckThsoQlNlbm5hGyRCJE4lRiU5JUgbKEI=?= =?iso-2022-jp?b?GyRCJEskRCQkJEYbKEI=?= In-Reply-To: <20080527.203651.665876747611164860.kou@cozmixng.org> References: <483BC90F.7080400@razil.jp> <483BD51F.90300@razil.jp> <20080527.203651.665876747611164860.kou@cozmixng.org> Message-ID: <483C0355.1080005@razil.jp> 末永です。 > これの結果を見せてもらえますか? > % ldd test/unit/.libs/cutter-senna > % strace test/unit/cutter-senna test/unit 2>&1 | grep so -------------------- tasuku @ dxxx:~/senna-svn$ ldd test/unit/.libs/cutter-senna libsenna.so.0 => /usr/lib/libsenna.so.0 (0x00002b1529676000) libcutter.so.0 => /usr/lib/libcutter.so.0 (0x00002b15298d2000) libgmodule-2.0.so.0 => /home/tasuku/local/lib/libgmodule-2.0.so.0 (0x00002b1529a00000) libdl.so.2 => /lib/libdl.so.2 (0x00002b1529b08000) libgobject-2.0.so.0 => /home/tasuku/local/lib/libgobject-2.0.so.0 (0x00002b1529c0b000) libglib-2.0.so.0 => /home/tasuku/local/lib/libglib-2.0.so.0 (0x00002b1529d4d000) libmecab.so.1 => /usr/lib/libmecab.so.1 (0x00002b1529f24000) libpthread.so.0 => /lib/libpthread.so.0 (0x00002b152a15c000) libm.so.6 => /lib/libm.so.6 (0x00002b152a272000) libc.so.6 => /lib/libc.so.6 (0x00002b152a3f4000) libgthread-2.0.so.0 => /home/tasuku/local/lib/libgthread-2.0.so.0 (0x00002b152a631000) librt.so.1 => /lib/librt.so.1 (0x00002b152a736000) /lib64/ld-linux-x86-64.so.2 (0x00002b152955e000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00002b152a83f000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00002b152aa3d000) tasuku @ dxxx:~/senna-svn$ strace test/unit/cutter-senna test/unit 2>&1 | grep so (空) -------------------- です。 確かにsoが読み込まれていない模様です… --- すえなが From kou @ cozmixng.org Tue May 27 22:15:52 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Tue, 27 May 2008 22:15:52 +0900 (JST) Subject: [Senna-dev 882] Re: =?iso-2022-jp?b?Y3V0dGVyGyRCJEckThsoQlNlbm5hGyRCJE4lRiU5GyhC?= =?iso-2022-jp?b?GyRCJUgkSyREJCQkRhsoQg==?= In-Reply-To: <483C0355.1080005@razil.jp> References: <483BD51F.90300@razil.jp> <20080527.203651.665876747611164860.kou@cozmixng.org> <483C0355.1080005@razil.jp> Message-ID: <20080527.221552.218751844668007072.kou@cozmixng.org> 須藤です。 In <483C0355.1080005 @ razil.jp> "[Senna-dev 881] cutterでのSennaのテストについて" on Tue, 27 May 2008 21:49:25 +0900, Tasuku SUENAGA wrote: > > これの結果を見せてもらえますか? > > % ldd test/unit/.libs/cutter-senna > > % strace test/unit/cutter-senna test/unit 2>&1 | grep so > -------------------- ありがとうございます。 > tasuku @ dxxx:~/senna-svn$ ldd test/unit/.libs/cutter-senna > libsenna.so.0 => /usr/lib/libsenna.so.0 (0x00002b1529676000) > libcutter.so.0 => /usr/lib/libcutter.so.0 (0x00002b15298d2000) > libgmodule-2.0.so.0 => /home/tasuku/local/lib/libgmodule-2.0.so.0 (0x00002b1529a00000) > libdl.so.2 => /lib/libdl.so.2 (0x00002b1529b08000) > libgobject-2.0.so.0 => /home/tasuku/local/lib/libgobject-2.0.so.0 (0x00002b1529c0b000) > libglib-2.0.so.0 => /home/tasuku/local/lib/libglib-2.0.so.0 (0x00002b1529d4d000) > libmecab.so.1 => /usr/lib/libmecab.so.1 (0x00002b1529f24000) > libpthread.so.0 => /lib/libpthread.so.0 (0x00002b152a15c000) > libm.so.6 => /lib/libm.so.6 (0x00002b152a272000) > libc.so.6 => /lib/libc.so.6 (0x00002b152a3f4000) > libgthread-2.0.so.0 => /home/tasuku/local/lib/libgthread-2.0.so.0 (0x00002b152a631000) > librt.so.1 => /lib/librt.so.1 (0x00002b152a736000) > /lib64/ld-linux-x86-64.so.2 (0x00002b152955e000) > libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00002b152a83f000) > libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00002b152aa3d000) もしlibbfd.soを用意するのが簡単なら(binutils-devパッケージが あるとか)それをインストールしてから、もう一回Cutterの configureからやってもらってもいいですか?オプションは特にい らないです。libbfd.soがあれば勝手に見つけて使ってくれます。 ただ、libbfd.soがなくてもそれっぽく動くようにはしてあるはず なので、面倒ならやらなくてもいいといえばいいです。 > tasuku @ dxxx:~/senna-svn$ strace test/unit/cutter-senna test/unit 2>&1 | grep so > (空) まさか空だとは思いませんでした。。。 straceがないとかではないですよね? そうですね。。。これで何がでますか? % test/unit/cutter-senna --help-all From a @ razil.jp Tue May 27 23:01:50 2008 From: a @ razil.jp (Tasuku SUENAGA) Date: Tue, 27 May 2008 23:01:50 +0900 Subject: [Senna-dev 883] Re: =?iso-2022-jp?b?Y3V0dGVyGyRCJEckThsoQlNlbm5hGyRCJE4lRiU5GyhC?= =?iso-2022-jp?b?GyRCJUgkSyREJCQkRhsoQg==?= In-Reply-To: <20080527.221552.218751844668007072.kou@cozmixng.org> References: <483BD51F.90300@razil.jp> <20080527.203651.665876747611164860.kou@cozmixng.org> <483C0355.1080005@razil.jp> <20080527.221552.218751844668007072.kou@cozmixng.org> Message-ID: <483C144E.90301@razil.jp> 末永です。 >> tasuku @ dxxx:~/senna-svn$ strace test/unit/cutter-senna test/unit 2>&1 | grep so >> (空) > > まさか空だとは思いませんでした。。。 > straceがないとかではないですよね? …strace入れていませんでした… そりゃ空のはずですね…申し訳ないです。 というわけで、再度実行してみました!! tasuku @ dxxx:~/senna-svn$ strace test/unit/cutter-senna test/unit 2>&1 | grep so access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libncurses.so.5", O_RDONLY) = 3 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libdl.so.2", O_RDONLY) = 3 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libc.so.6", O_RDONLY) = 3 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/home/tasuku/senna-svn/lib/.libs/tls/x86_64/libsenna.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/senna-svn/lib/.libs/tls/libsenna.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/senna-svn/lib/.libs/x86_64/libsenna.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/senna-svn/lib/.libs/libsenna.so.0", O_RDONLY) = 3 open("/home/tasuku/senna-svn/lib/.libs/libcutter.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/tls/x86_64/libcutter.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/tls/libcutter.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/x86_64/libcutter.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/libcutter.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/tls/x86_64/libcutter.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/tls/libcutter.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/x86_64/libcutter.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/libcutter.so.0", O_RDONLY) = 3 open("/home/tasuku/senna-svn/lib/.libs/libgmodule-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/libgmodule-2.0.so.0", O_RDONLY) = 3 open("/home/tasuku/senna-svn/lib/.libs/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libdl.so.2", O_RDONLY) = 3 open("/home/tasuku/senna-svn/lib/.libs/libgobject-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/libgobject-2.0.so.0", O_RDONLY) = 3 open("/home/tasuku/senna-svn/lib/.libs/libglib-2.0.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/libglib-2.0.so.0", O_RDONLY) = 3 open("/home/tasuku/senna-svn/lib/.libs/libmecab.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/libmecab.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/libmecab.so.1", O_RDONLY) = 3 open("/home/tasuku/senna-svn/lib/.libs/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libpthread.so.0", O_RDONLY) = 3 open("/home/tasuku/senna-svn/lib/.libs/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libm.so.6", O_RDONLY) = 3 open("/home/tasuku/senna-svn/lib/.libs/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libc.so.6", O_RDONLY) = 3 open("/home/tasuku/local/lib/libgthread-2.0.so.0", O_RDONLY) = 3 open("/home/tasuku/local/lib/librt.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/senna-svn/lib/.libs/librt.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/librt.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/librt.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/senna-svn/lib/.libs/librt.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/librt.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/librt.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/librt.so.1", O_RDONLY) = 3 open("/home/tasuku/senna-svn/lib/.libs/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/libstdc++.so.6", O_RDONLY) = 3 open("/home/tasuku/senna-svn/lib/.libs/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/senna-svn/lib/.libs/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libgcc_s.so.1", O_RDONLY) = 3 stat("test/unit/.libs/sen_test_utils.so", {st_mode=S_IFREG|0755, st_size=10717, ...}) = 0 stat("test/unit/.libs/test_snip.so", {st_mode=S_IFREG|0755, st_size=35702, ...}) = 0 stat("test/unit/.libs/test_index.so", {st_mode=S_IFREG|0755, st_size=16887, ...}) = 0 stat("test/unit/.libs/test_index.so", {st_mode=S_IFREG|0755, st_size=16887, ...}) = 0 open("test/unit/.libs/test_index.so", O_RDONLY) = 3 open("/usr/lib/gconv/EUC-JP.so", O_RDONLY) = 3 open("/usr/lib/gconv/tls/x86_64/libJIS.so", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/gconv/tls/libJIS.so", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/gconv/x86_64/libJIS.so", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/gconv/libJIS.so", O_RDONLY) = 3 open("test/unit/.libs/test_index.so", O_RDONLY) = 3 stat("test/unit/.libs/test_snip.so", {st_mode=S_IFREG|0755, st_size=35702, ...}) = 0 open("test/unit/.libs/test_snip.so", O_RDONLY) = 3 open("/home/tasuku/senna-svn/test/unit/.libs/tls/x86_64/sen_test_utils.so", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/senna-svn/test/unit/.libs/tls/sen_test_utils.so", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/senna-svn/test/unit/.libs/x86_64/sen_test_utils.so", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/senna-svn/test/unit/.libs/sen_test_utils.so", O_RDONLY) = 3 open("test/unit/.libs/test_snip.so", O_RDONLY) = 3 stat("test/unit/.libs/sen_test_utils.so", {st_mode=S_IFREG|0755, st_size=10717, ...}) = 0 open("test/unit/.libs/sen_test_utils.so", O_RDONLY) = 3 open("test/unit/.libs/sen_test_utils.so", O_RDONLY) = 3 socket(PF_FILE, SOCK_STREAM, 0) = 3 connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) socket(PF_FILE, SOCK_STREAM, 0) = 3 connect(3, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) open("/home/tasuku/senna-svn/lib/.libs/libnss_compat.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/libnss_compat.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/libnss_compat.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libnss_compat.so.2", O_RDONLY) = 3 open("/home/tasuku/senna-svn/lib/.libs/libnsl.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/libnsl.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/libnsl.so.1", O_RDONLY) = -1 ENOENT (No such file or directory) access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libnsl.so.1", O_RDONLY) = 3 open("/home/tasuku/senna-svn/lib/.libs/libnss_nis.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/libnss_nis.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/libnss_nis.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libnss_nis.so.2", O_RDONLY) = 3 open("/home/tasuku/senna-svn/lib/.libs/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/libnss_files.so.2", O_RDONLY) = -1 ENOENT (No such file or directory) access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/libnss_files.so.2", O_RDONLY) = 3 tasuku @ dxxx:~/senna-svn$ test/unit/cutter-senna --help-all 用法: lt-cutter-senna [オプション...] TEST_DIRECTORY ヘルプのオプション: -?, --help ヘルプのオプションを表示する --help-all ヘルプのオプションを全て表示する --help-streamer Show streamer options --help-ui Show UI options Streamer Options --streamer=[] Specify streamer UI Options -u, --ui=[] Specify UI アプリケーションのオプション: --version Show version -s, --source-directory=DIRECTORY Set directory of source code -n, --name=TEST_NAME Specify tests -t, --test-case=TEST_CASE_NAME Specify test cases -m, --multi-thread Run test cases with multi-thread --test-case-order=[none|name|name-desc] Sort test case by. Default is 'none'. --exclude-file=FILE_NAME Skip files --exclude-dir=DIRECTORY_NAME Skip directories --- 末永 匡 From morita @ razil.jp Wed May 28 08:24:48 2008 From: morita @ razil.jp (morita @ razil.jp) Date: Wed, 28 May 2008 08:24:48 +0900 Subject: [Senna-dev 884] Senna DB API Message-ID: <20080527232448.GA18751@epepe.com> 森です。 次バージョンのSennaに載せる新しいAPIの案を以下に載せました。 http://qwik.jp/senna/DBAPI.html 昨年から取り組んできたSennaStore(http://qwik.jp/senna/store.html)の機能を、 専用のクエリ言語(SennaQL)からだけでなく、API経由で広く使えるようにすることが 新APIの主な目的です。 従来のAPIでは実現できなかった多様なデータ構造が表現できるようになるため、 例えば、文書毎の属性(文書長etc..)や単語毎の属性(固有表現へのリンクetc..)を追加して、 マッチングやスコアリングのアルゴリズムに反映する等の拡張が自由に行えます。 新APIはsen_sym, sen_inv, sen_set等の従前の部品をそのまま流用していますから、 インデックスの形式、検索結果、性能への影響はありません。 また、新APIを適宜組み合わせて使うことによって従来のAPIで表現していたことが ほとんど全て記述できるようになります。従って長期的には従来のAPIの一部 (sen_index_*, sen_records_*, sen_set_*, sen_sym_* )は非推奨扱いにする予定です。 今後、皆様からのコメントを吸収しつつ実装とテスト(&文書化)を進めていければと 考えています。 よろしくお願いします。 -- morita From kou @ cozmixng.org Wed May 28 09:02:33 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Wed, 28 May 2008 09:02:33 +0900 Subject: [Senna-dev 885] Re: =?iso-2022-jp?b?Y3V0dGVyGyRCJEckThsoQlNlbm5hGyRCJE4lRiU5GyhC?= =?iso-2022-jp?b?GyRCJUgkSyREJCQkRhsoQg==?= In-Reply-To: <483C144E.90301@razil.jp> References: <483BD51F.90300@razil.jp> <20080527.203651.665876747611164860.kou@cozmixng.org> <483C0355.1080005@razil.jp> <20080527.221552.218751844668007072.kou@cozmixng.org> <483C144E.90301@razil.jp> Message-ID: 須藤です。 2008/05/27 23:01 Tasuku SUENAGA : > というわけで、再度実行してみました!! ありがとうございます。 > tasuku @ dxxx:~/senna-svn$ strace test/unit/cutter-senna test/unit 2>&1 | grep so テストのsoは読み込まれていますね。 > tasuku @ dxxx:~/senna-svn$ test/unit/cutter-senna --help-all > UI Options > -u, --ui=[] Specify UI 問題はCutterのUI用モジュールが読み込まれていないことですね。 これはどうなっていますか? % find /usr/lib/cutter # UIがなくてもテストは実行される。表示はされませんが。 あと、Cutterのビルドディレクトリで以下を実行するとどうなりますか? % test/run-test.sh テストが実行されるでしょうか? From a @ razil.jp Wed May 28 16:58:10 2008 From: a @ razil.jp (Tasuku SUENAGA) Date: Wed, 28 May 2008 16:58:10 +0900 Subject: [Senna-dev 886] Re: =?iso-2022-jp?b?Y3V0dGVyGyRCJEckThsoQlNlbm5hGyRCJE4lRiU5GyhC?= =?iso-2022-jp?b?GyRCJUgkSyREJCQkRhsoQg==?= In-Reply-To: References: <483BD51F.90300@razil.jp> <20080527.203651.665876747611164860.kou@cozmixng.org> <483C0355.1080005@razil.jp> <20080527.221552.218751844668007072.kou@cozmixng.org> <483C144E.90301@razil.jp> Message-ID: <483D1092.9000402@razil.jp> 末永です。 > 問題はCutterのUI用モジュールが読み込まれていないことですね。 > これはどうなっていますか? > % find /usr/lib/cutter tasuku @ dxxx:~$ find /usr/lib/cutter /usr/lib/cutter /usr/lib/cutter/module /usr/lib/cutter/module/report /usr/lib/cutter/module/report/pdf.a /usr/lib/cutter/module/report/pdf.la /usr/lib/cutter/module/report/pdf.so /usr/lib/cutter/module/report/xml.so /usr/lib/cutter/module/report/xml.a /usr/lib/cutter/module/report/xml.la /usr/lib/cutter/module/ui /usr/lib/cutter/module/ui/console.a /usr/lib/cutter/module/ui/console.la /usr/lib/cutter/module/ui/console.so /usr/lib/cutter/module/factory /usr/lib/cutter/module/factory/report /usr/lib/cutter/module/factory/report/xml_factory.so /usr/lib/cutter/module/factory/report/xml_factory.la /usr/lib/cutter/module/factory/report/xml_factory.a /usr/lib/cutter/module/factory/report/pdf_factory.a /usr/lib/cutter/module/factory/report/pdf_factory.so /usr/lib/cutter/module/factory/report/pdf_factory.la /usr/lib/cutter/module/factory/ui /usr/lib/cutter/module/factory/ui/console_factory.la /usr/lib/cutter/module/factory/ui/console_factory.so /usr/lib/cutter/module/factory/ui/console_factory.a です。 > # UIがなくてもテストは実行される。表示はされませんが。 なるほど。落ちる場合にはわかりそうですね… > あと、Cutterのビルドディレクトリで以下を実行するとどうなりますか? > % test/run-test.sh tasuku @ dxxx:~/cutter-1.0.0$ test/run-test.sh ................................................................................................................................................................................................................................. Finished in 0.887183 seconds 225 test(s), 913 assertion(s), 0 failure(s), 0 error(s), 0 pending(s), 0 omission(s), 0 notification(s) 100% passed というわけで、cutter自体のテストはキレイに通りました。 --- 末永 匡 From kou @ cozmixng.org Wed May 28 17:21:26 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Wed, 28 May 2008 17:21:26 +0900 Subject: [Senna-dev 887] Re: =?iso-2022-jp?b?Y3V0dGVyGyRCJEckThsoQlNlbm5hGyRCJE4lRiU5GyhC?= =?iso-2022-jp?b?GyRCJUgkSyREJCQkRhsoQg==?= In-Reply-To: <483D1092.9000402@razil.jp> References: <483BD51F.90300@razil.jp> <20080527.203651.665876747611164860.kou@cozmixng.org> <483C0355.1080005@razil.jp> <20080527.221552.218751844668007072.kou@cozmixng.org> <483C144E.90301@razil.jp> <483D1092.9000402@razil.jp> Message-ID: 須藤です。 2008/05/28 16:58 Tasuku SUENAGA : >> 問題はCutterのUI用モジュールが読み込まれていないことですね。 >> これはどうなっていますか? >> % find /usr/lib/cutter > > tasuku @ dxxx:~$ find /usr/lib/cutter ちゃんとインストールされてるんですねぇ。。。 何度も何度も申し訳ないのですが、これはどうなるでしょうか? % strace test/unit/cutter-senna --help-all 2>&1 | grep cutter >> # UIがなくてもテストは実行される。表示はされませんが。 > なるほど。落ちる場合にはわかりそうですね… 本当はデフォルトのコンソール用のUIが動くんですが。。。 >> あと、Cutterのビルドディレクトリで以下を実行するとどうなりますか? >> % test/run-test.sh > > tasuku @ dxxx:~/cutter-1.0.0$ test/run-test.sh > 100% passed > > というわけで、cutter自体のテストはキレイに通りました。 うーん、インストールがうまくいっていないっぽい感じですねぇ。 From a @ razil.jp Wed May 28 18:01:56 2008 From: a @ razil.jp (Tasuku SUENAGA) Date: Wed, 28 May 2008 18:01:56 +0900 Subject: [Senna-dev 888] Re: =?iso-2022-jp?b?Y3V0dGVyGyRCJEckThsoQlNlbm5hGyRCJE4lRiU5GyhC?= =?iso-2022-jp?b?GyRCJUgkSyREJCQkRhsoQg==?= In-Reply-To: References: <483BD51F.90300@razil.jp> <20080527.203651.665876747611164860.kou@cozmixng.org> <483C0355.1080005@razil.jp> <20080527.221552.218751844668007072.kou@cozmixng.org> <483C144E.90301@razil.jp> <483D1092.9000402@razil.jp> Message-ID: <483D1F84.3010609@razil.jp> 末永です。 結果からいうと、テストが動きました!ワー!! > 何度も何度も申し訳ないのですが、これはどうなるでしょうか? > % strace test/unit/cutter-senna --help-all 2>&1 | grep cutter tasuku @ dxxx:~/senna-svn$ strace test/unit/cutter-senna --help-all 2>&1 | grep cutter execve("test/unit/cutter-senna", ["test/unit/cutter-senna", "--help-all"], [/* 19 vars */]) = 0 open("test/unit/cutter-senna", O_RDONLY) = 3 read(3, "#! /bin/sh\n\n# cutter-senna - tem"..., 80) = 80 read(255, "#! /bin/sh\n\n# cutter-senna - tem"..., 5254) = 5254 stat("/home/tasuku/senna-svn/test/unit/.libs/lt-cutter-senna", {st_mode=S_IFREG|0755, st_size=11252, ...}) = 0 stat("/home/tasuku/senna-svn/test/unit/.libs/lt-cutter-senna", {st_mode=S_IFREG|0755, st_size=11252, ...}) = 0 execve("/home/tasuku/senna-svn/test/unit/.libs/lt-cutter-senna", ["/home/tasuku/senna-svn/test/unit"..., "--help-all"], [/* 17 vars */]) = 0 open("/home/tasuku/senna-svn/lib/.libs/libcutter.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/tls/x86_64/libcutter.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/tls/libcutter.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/x86_64/libcutter.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/home/tasuku/local/lib/libcutter.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/tls/x86_64/libcutter.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/tls/libcutter.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/x86_64/libcutter.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/lib/libcutter.so.0", O_RDONLY) = 3 stat("/usr/local/lib/cutter/module/factory/report", 0x7fff17646450) = -1 ENOENT (No such file or directory) stat("/usr/local/lib/cutter/module/factory/streamer", 0x7fff17646450) = -1 ENOENT (No such file or directory) stat("/usr/local/lib/cutter/module/factory/ui", 0x7fff17646920) = -1 ENOENT (No such file or directory) open("/usr/local/share/locale/ja_JP.UTF-8/LC_MESSAGES/cutter.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/local/share/locale/ja_JP.utf8/LC_MESSAGES/cutter.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/local/share/locale/ja_JP/LC_MESSAGES/cutter.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/local/share/locale/ja.UTF-8/LC_MESSAGES/cutter.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/local/share/locale/ja.utf8/LC_MESSAGES/cutter.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/local/share/locale/ja/LC_MESSAGES/cutter.mo", O_RDONLY) = -1 ENOENT (No such file or directory) write(1, "\347\224\250\346\263\225:\n lt-cutter-senna [\343\202"..., 1144用法: lt-cutter-senna [オプション...] TEST_DIRECTORY というわけで、/usr/localを見てて怪しいので、 cutterのビルドディレクトリでmake clean後 再度--prefix=/usrでmake, make installをしてみたところ、 うまく動作いたしました! tasuku @ dxxx:~/senna-svn$ test/unit/run-test.sh ...... Finished in 0.190874 seconds 6 test(s), 54 assertion(s), 0 failure(s), 0 error(s), 0 pending(s), 0 omission(s), 0 notification(s) 100% passed これで新APIのテストも書けそうですねー。 --- 末永 匡 From kou @ cozmixng.org Wed May 28 19:59:50 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Wed, 28 May 2008 19:59:50 +0900 (JST) Subject: [Senna-dev 889] Re: =?iso-2022-jp?b?Y3V0dGVyGyRCJEckThsoQlNlbm5hGyRCJE4lRiU5GyhC?= =?iso-2022-jp?b?GyRCJUgkSyREJCQkRhsoQg==?= In-Reply-To: <483D1F84.3010609@razil.jp> References: <483D1092.9000402@razil.jp> <483D1F84.3010609@razil.jp> Message-ID: <20080528.195950.1115488020123589353.kou@cozmixng.org> 須藤です。 In <483D1F84.3010609 @ razil.jp> "[Senna-dev 888] Re: cutterでのSennaのテストについて" on Wed, 28 May 2008 18:01:56 +0900, Tasuku SUENAGA wrote: > 結果からいうと、テストが動きました!ワー!! 動いてよかったです。 > これで新APIのテストも書けそうですねー。 これで開発がモリモリ進みますね♪ From kou @ cozmixng.org Wed May 28 20:22:10 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Wed, 28 May 2008 20:22:10 +0900 (JST) Subject: [Senna-dev 890] Re: Senna DB API In-Reply-To: <20080527232448.GA18751@epepe.com> References: <20080527232448.GA18751@epepe.com> Message-ID: <20080528.202210.880668937616821818.kou@cozmixng.org> 須藤です。 In <20080527232448.GA18751 @ epepe.com> "[Senna-dev 884] Senna DB API" on Wed, 28 May 2008 08:24:48 +0900, morita @ razil.jp wrote: > 次バージョンのSennaに載せる新しいAPIの案を以下に載せました。 > > http://qwik.jp/senna/DBAPI.html レコードのキー(ID?)を変更できるAPI(sen_table_rename()?)が あると嬉しいなぁと思いました。 例えば、ファイル名をキーに情報を保存して使っていて、ファイル をmvされたときに便利だろうなぁと思っています。 From morita @ razil.jp Thu May 29 00:09:06 2008 From: morita @ razil.jp (morita @ razil.jp) Date: Thu, 29 May 2008 00:09:06 +0900 Subject: [Senna-dev 891] Re: Senna DB API In-Reply-To: <20080528.202210.880668937616821818.kou@cozmixng.org> References: <20080527232448.GA18751@epepe.com> <20080528.202210.880668937616821818.kou@cozmixng.org> Message-ID: <20080528150906.GA11833@epepe.com> 森です。のっけから難題が‥。 キーはRDBで言う主キー的な位置づけなのですが、 構造上、値の変更ができないのです‥。(すみません) 例の場合ですと、「ファイル」表と「ファイル名」表を別に作って、 相互に参照するような感じが良いのかなぁと思います。 >>> Kouhei Sutou さんは書きました: > 須藤です。 > > In <20080527232448.GA18751 @ epepe.com> > "[Senna-dev 884] Senna DB API" on Wed, 28 May 2008 08:24:48 +0900, > morita @ razil.jp wrote: > > > 次バージョンのSennaに載せる新しいAPIの案を以下に載せました。 > > > > http://qwik.jp/senna/DBAPI.html > > レコードのキー(ID?)を変更できるAPI(sen_table_rename()?)が > あると嬉しいなぁと思いました。 > > 例えば、ファイル名をキーに情報を保存して使っていて、ファイル > をmvされたときに便利だろうなぁと思っています。 > > _______________________________________________ > Senna-dev mailing list > Senna-dev @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > -- morita From kou @ cozmixng.org Thu May 29 09:31:52 2008 From: kou @ cozmixng.org (Kouhei Sutou) Date: Thu, 29 May 2008 09:31:52 +0900 Subject: [Senna-dev 892] Re: Senna DB API In-Reply-To: <20080528150906.GA11833@epepe.com> References: <20080527232448.GA18751@epepe.com> <20080528.202210.880668937616821818.kou@cozmixng.org> <20080528150906.GA11833@epepe.com> Message-ID: 須藤です。 2008/05/29 0:09 : > キーはRDBで言う主キー的な位置づけなのですが、 > 構造上、値の変更ができないのです‥。(すみません) > > 例の場合ですと、「ファイル」表と「ファイル名」表を別に作って、 > 相互に参照するような感じが良いのかなぁと思います。 なるほど。 http://qwik.jp/senna/store_tutorial.html のブックマークだとURIをキーにしていたのでファイル名もキーになる のかなぁと思っていました。 「ファイル」表には例のコメントみたいに自動でIDを振っていくみたい な方がよいのですね。とすると、自動でIDが振られていくみたいな型 (?機能?)があると便利そうです。 From a @ razil.jp Thu May 29 23:35:15 2008 From: a @ razil.jp (Tasuku SUENAGA) Date: Thu, 29 May 2008 23:35:15 +0900 Subject: [Senna-dev 893] Re: sen_rc_to_string() In-Reply-To: References: Message-ID: <483EBF23.5020305@razil.jp> 末永です。 sen_enc2strみたいな関数があるのですが、 それと同じノリですよね。 僕もあると便利だと思います。 API経由で取得できる各種enum系の値について、 それぞれ標準の文字列化関数があると嬉しいですよね。 Kouhei Sutou さんは書きました: > 須藤です。 > > SennaのAPIでは関数の実行結果の成否をsen_rcで返しますが、sen_rcを > 文字列に変換する関数があるとエラーメッセージを表示するときに便利 > だと思います。errnoとstrerror()みたいな感じです。 > > sen_rc rc; > rc = sen_index_open(...); > if (rc) { > printf("failed to open index: %s\n", sen_rc_to_string(rc)); > exit(-1); > } > ... --- 末永 匡 From a @ razil.jp Thu May 29 23:37:05 2008 From: a @ razil.jp (Tasuku SUENAGA) Date: Thu, 29 May 2008 23:37:05 +0900 Subject: [Senna-dev 894] Re: Senna DB API In-Reply-To: References: <20080527232448.GA18751@epepe.com> <20080528.202210.880668937616821818.kou@cozmixng.org> <20080528150906.GA11833@epepe.com> Message-ID: <483EBF91.6050603@razil.jp> 末永です。 > 「ファイル」表には例のコメントみたいに自動でIDを振っていくみたい > な方がよいのですね。とすると、自動でIDが振られていくみたいな型 > (?機能?)があると便利そうです。 surrogate key tableというものが実現される予定です。 このテーブルでは、IDが自動で振られていきます。 http://qwik.jp/senna/DBAPI.html --- 末永 匡 From morita @ razil.jp Fri May 30 14:50:53 2008 From: morita @ razil.jp (morita @ razil.jp) Date: Fri, 30 May 2008 14:50:53 +0900 Subject: [Senna-dev 895] Re: Senna DB API In-Reply-To: <483EBF91.6050603@razil.jp> References: <20080527232448.GA18751@epepe.com> <20080528.202210.880668937616821818.kou@cozmixng.org> <20080528150906.GA11833@epepe.com> <483EBF91.6050603@razil.jp> Message-ID: <20080530055053.GA29321@epepe.com> こんにちは。森です。 すみません‥。 その'surrogate key table'っていう表現は(分かりにくいかと思って) 削除してしまったのですが、自動でIDを振ってくテーブルは想定してます。 sen_table_create()のflags引数にSEN_TABLE_NO_KEYを立てると、 keyを持たない、行IDだけを持つテーブルを作ることができます。 このタイプのテーブルは、sen_table_add() によって新しい行を作ります。 行IDは自動的に付与され、呼出側でコントロールしたり変更したりすることはできません。 >>> Tasuku SUENAGA さんは書きました: > 末永です。 > > > 「ファイル」表には例のコメントみたいに自動でIDを振っていくみたい > > な方がよいのですね。とすると、自動でIDが振られていくみたいな型 > > (?機能?)があると便利そうです。 > > surrogate key tableというものが実現される予定です。 > このテーブルでは、IDが自動で振られていきます。 > http://qwik.jp/senna/DBAPI.html > > --- > 末永 匡 > > _______________________________________________ > Senna-dev mailing list > Senna-dev @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/senna-dev > バグ報告方法:http://qwik.jp/senna/bug_report.html > -- morita