Kouhei Sutou
kou****@clear*****
Thu Jan 15 15:07:17 JST 2015
In <54B7560A.2010005 �� clear-code.com> "Re: [Groonga-commit] droonga/droonga-client-ruby �� 0434f43 [master] Fixup missing fields and validate them for droogna-send command" on Thu, 15 Jan 2015 14:54:18 +0900, YUKI Hiroshi <yuki �� clear-code.com> wrote: > Perfectorはあくまで省略されたidやdateを補うだけの物で、 > Validatorはメッセージに設定されたdate等の情報が正しい形式かを検証する、 > という分け方にしています。 > メッセージに元々不正なdateが設定されていたという場合に、 > Perfectorはそれをスルーして、その後のValidatorが例外を上げる、 > という感じの動きを想定していました。 なるほど。 であれば、PerfectorじゃなくてCompleterだっけ、そっちの方がい いんじゃないですかねぇ。パーフェクトって「完全」じゃないです か。完全にするなら不正なdateも直してくれそうな気がします。 「補完」だったら足りないものを補うだけで既存のものがおかしく ても直さなそうな気がします。 あれ、もしかして、Perfectorに通したあとにValidatorに通す前提 だったらIDがないとかのチェックはせずにdateのフォーマットチェッ クだけでよかったりしません? > ただ、Droonga::Clientのレイヤで補完と検証をするように改めたので、ここま > で厳密にモジュールを分けなくても良かったかもという気はしています。 > > > Kouhei Sutou wrote: >>> + request_message = perfector.perfect(request_message) >>> + validator.validate(request_message) >> >> perfectにした後にvalidateするのっておかしくないですか? >> perfectにしたら必ずvalidationが通りそうなので、する意味がな >> さそうに思います。 >> >> あと、このコミットじゃないですけど、 >> perfector.perfect(request_message)はrequest_messsageを破壊的 >> に変更しないほうがいいと思いました。 >> >> In <0434f43f27809dd625dcecfded3f59048339faea �� jenkins.clear-code.com> >> "[Groonga-commit] droonga/droonga-client-ruby �� 0434f43 [master] Fixup missing fields and validate them for droogna-send command" on Thu, 15 Jan 2015 14:35:42 +0900, >> YUKI Hiroshi <null+groonga �� clear-code.com> wrote: >> >>> YUKI Hiroshi 2015-01-15 14:35:42 +0900 (Thu, 15 Jan 2015) >>> >>> New Revision: 0434f43f27809dd625dcecfded3f59048339faea >>> https://github.com/droonga/droonga-client-ruby/commit/0434f43f27809dd625dcecfded3f59048339faea >>> >>> Message: >>> Fixup missing fields and validate them for droogna-send command >>> >>> Modified files: >>> bin/droonga-send >>> >>> Modified: bin/droonga-send (+7 -0) >>> =================================================================== >>> --- bin/droonga-send 2015-01-15 14:34:21 +0900 (0442383) >>> +++ bin/droonga-send 2015-01-15 14:35:42 +0900 (0dc032f) >>> @@ -21,6 +21,8 @@ require "yajl" >>> require "json" >>> >>> require "droonga/client" >>> +require "droonga/client/message_perfector" >>> +require "droonga/client/message_validator" >>> >>> options = OpenStruct.new >>> options.report_request = false >>> @@ -33,6 +35,9 @@ servers = [] >>> default_server = "droonga:localhost:10031/droonga" >>> messages_per_second = Droonga::Client::RateLimiter::DEFAULT_LIMIT >>> >>> +perfector = Droonga::Client::MessagePerfector.new >>> +validator = Droonga::Client::MessageValidator.new >>> + >>> def parse_server(server, options) >>> server_matcher = /\A(?:(droonga|http):)?([^:]+)(?::([0-9]+))?(?:\/(.+))?\z/ >>> server =~ server_matcher >>> @@ -167,6 +172,8 @@ json_parser.on_parse_complete = lambda do |request_message| >>> message << "\n" >>> print(message) >>> end >>> + request_message = perfector.perfect(request_message) >>> + validator.validate(request_message) >>> client = clients[client_index] >>> client.send(request_message) >>> client_index = (client_index + 1) % clients.size >> >> _______________________________________________ >> Groonga-commit mailing list >> Groonga-commit �� lists.sourceforge.jp >> http://lists.sourceforge.jp/mailman/listinfo/groonga-commit >> > > -- > 結城 洋志 <YUKI Hiroshi> > E-mail: yuki �� clear-code.com > > 株式会社クリアコード > 〒170-0005 東京都豊島区南大塚3-29-9 > 中野ビル3階 > TEL : 03-5927-9440 > FAX : 03-5927-9441 > WWW : http://www.clear-code.com/ > > _______________________________________________ > Groonga-commit mailing list > Groonga-commit �� lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/groonga-commit