Laboratory of Mobile Agricultural Chemicals Searcher
携帯農薬検索実験室

研究会

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
84 / 114 ツリー <前へ | 次へ>

〔44〕自動かな漢字/別名変換、屋号抜き農薬名分類に関する動作確認のお願い Hidemi Oya (05/10/18 22:07)

〔184〕Re:農薬登録情報 Excel ファイル Hidemi Oya (06/05/31 1:54)
〔189〕Re:農薬登録情報 Excel ファイル s_kobayashi (06/06/01 0:57)
〔191〕Re:農薬登録情報 Excel ファイル Hidemi Oya (06/06/01 22:29)
〔194〕Re:農薬登録情報 Excel ファイル s_kobayashi (06/06/01 23:29)
〔197〕Re:農薬登録情報 Excel ファイル Hidemi Oya (06/06/02 0:47)
〔199〕Re:農薬登録情報 Excel ファイル s_kobayashi (06/06/02 23:51)
〔200〕Re:農薬登録情報 Excel ファイル Hidemi Oya (06/06/03 21:32)
〔201〕Re:農薬登録情報 Excel ファイル s_kobayashi (06/06/03 21:39)
〔203〕Re:農薬登録情報 Excel ファイル Hidemi Oya (06/06/04 14:28)
〔204〕Re:農薬登録情報 Excel ファイル s_kobayashi (06/06/04 16:52)
〔206〕Re:農薬登録情報 Excel ファイル Hidemi Oya (06/06/04 18:02)
〔207〕Re:農薬登録情報 Excel ファイル s_kobayashi (06/06/04 20:14)
〔211〕Re:農薬登録情報 Excel ファイル Hidemi Oya (06/06/04 23:33)
〔220〕Re:農薬登録情報 Excel ファイル s_kobayashi (06/06/06 0:12)
〔222〕Re:農薬登録情報 Excel ファイル Hidemi Oya (06/06/06 0:40)
〔224〕Re:農薬登録情報 Excel ファイル s_kobayashi (06/06/06 21:56)
〔202〕Re:農薬登録情報 Excel ファイル s_kobayashi (06/06/04 13:22)
〔205〕Re:農薬登録情報 Excel ファイル Hidemi Oya (06/06/04 17:31)

〔184〕Re:農薬登録情報 Excel ファイル
 Hidemi Oya WEB  (06/05/31 1:54)

引用なし
   s_kobayashi さん、こん**は。Hidemi Oya です。

>1 データダウンロード(5ファイル)
 既にご存じかもしれませんが、http://www.acis.go.jp/ddata/index.htm のレスポンスヘッダには Last-Modified も ETag も付加されていて、サーバは If-Modified-Since, If-None-Match リクエストヘッダにちゃんと対応してくれるので、薬検のサーバにあまり負荷をかけずに更新の判定を行うことができます。

>私の課題としては、このデータをデータベースに取り込んで、対象作物名、代表的農薬名、対象病害虫名のリストを与えると、登録情報一覧表を吐き出すシステムを作りたいと思っています。とりあえずはhtml出力が目標です。
 今回の追加/変更/削除のリストも提供してくれれば、データベースの更新が楽なんですけどね。今のままだと、毎回データベースを作り替えです。
 それはそれとして、ポジティブリスト対策で、現在直売野菜を中心に下のような表を作成しています。作物と農薬名のリストを与えると、こういう表ができるようなシステムもご検討いただけるとありがたいです。

>kabe さん
 ローカルデータ版でもご検討ください。

    作物1 作物2 … 主な対象病害虫
農薬1 21日 14日
     3回  4回
農薬2  7日  1日
     4回  3回
 :

〔189〕Re:農薬登録情報 Excel ファイル
 s_kobayashi  (06/06/01 0:57)

引用なし
   >Hidemi Oyaさん

>>1 データダウンロード(5ファイル)
> 既にご存じかもしれませんが、http://www.acis.go.jp/ddata/index.htm のレスポンスヘッダには Last-Modified も ETag も付加されていて、サーバは If-Modified-Since, If-None-Match リクエストヘッダにちゃんと対応してくれるので、薬検のサーバにあまり負荷をかけずに更新の判定を行うことができます。

ヘッダ処理っていまいち理解できていません。いまは、ddata/index.htm の日付を見て判断しています。(^^ゞ

> 今回の追加/変更/削除のリストも提供してくれれば、データベースの更新が楽なんですけどね。今のままだと、毎回データベースを作り替えです。

これは判断が分かれますね。ワタシ的には全面更新でも再構築の待ち時間が我慢できる範囲なら、全面更新を選ぶと思います。大本営発表以外の微修正がないとは限りませんし。つーか、機種依存文字が多すぎてびっくりです。(^◇^;)


> それはそれとして、ポジティブリスト対策で、現在直売野菜を中心に下のような表を作成しています。作物と農薬名のリストを与えると、こういう表ができるようなシステムもご検討いただけるとありがたいです。

>    作物1 作物2 … 主な対象病害虫
>農薬1 21日 14日
>     3回  4回
>農薬2  7日  1日
>     4回  3回
> :

登録適用部の全データをmysql に吸わせるところまで成功しましたけれど、うまく検索できません。文字コードをujisにしているのに、日本語検索でヒットしてくれません。

たぶん単純な設定ミスだと思うのですが、よく分かりませんでした。

また解決したら報告します。

〔191〕Re:農薬登録情報 Excel ファイル
 Hidemi Oya WEB  (06/06/01 22:29)

引用なし
   s_kobayashi さん、こん**は。Hidemi Oya です。

>ヘッダ処理っていまいち理解できていません。いまは、ddata/index.htm の日付を見て判断しています。(^^ゞ
 ddata/index.htm を受信した時のレスポンスヘッダに、Last-Modified と ETag があります。この値を保存しておき、次に ddata/index.htm をチェックする時に、リクエストヘッダに
If-Modified-Since: 保存しておいた Last-Modified の値
If-None-Match: 保存しておいた ETag の値
を付加してやると、Last-Modified 以降に更新されていた場合や ETag の値に変更があった場合のみレスポンスボディが返され、更新されていない場合はレスポンスコード 304 のレスポンスヘッダのみが返されます。サーバ側は、無変更の場合はボディを返す必要のないので負荷が小さく、無駄なトラフィックも低減できます。
 さらに、ddata/index.htm は1日に複数回更新されることは普通なく、夕方更新されるようなので、最終チェック時刻を保存しておけば、毎日 18 時頃に1回チェックするだけですみます。


>これは判断が分かれますね。ワタシ的には全面更新でも再構築の待ち時間が我慢できる範囲なら、全面更新を選ぶと思います。大本営発表以外の微修正がないとは限りませんし。つーか、機種依存文字が多すぎてびっくりです。(^◇^;)
 以前、農薬名の長音記号がハイフンになっているものがあって連絡したらすぐ直してくれましたが、登録内容以外の修正は当然速報には入ってきません。速報は、失効農薬も1か月に1回のみですし。データに関しては、現在差分提供されていないので、差分提供の形にするなら細かな修正や失効も含めて提供を要望するってのが前提です。各システムのリソースやインターネットトラフィックの無駄遣いを避けるためには、可能な限り全面更新しないですむ方法を要望していくのがスジだと思います。
 それと、シェアレンタルホストでウェブアプリを動かすことを考えると、更新時のレスポンス低下やサーバへの集中的な負荷増大を招く可能性が高いため、全面更新は現実的ではありません。自前サーバなら、データ更新デーモンを走らせておいて、深夜にでもまとめてやってしまえば良いので全面更新だろうが全く問題ないですが(前述のようなリソースの無駄遣いの問題は残りますが)、自前サーバは希有な環境です(家はハードウェア的には可能でも接続契約が許しません)。

>登録適用部の全データをmysql に吸わせるところまで成功しましたけれど、うまく検索できません。文字コードをujisにしているのに、日本語検索でヒットしてくれません。
 sjis, utf8 どっちでしょう? sjis だと、処理系によっては 0x5c を含む文字を検索できなかったりします。utf8 はエンコーダーによって機種依存文字がうまくマッピングできない場合もあるので、半角カタカナを全角に変換して内部データを euc で持っておくのがベストかもしれませんね。

〔194〕Re:農薬登録情報 Excel ファイル
 s_kobayashi  (06/06/01 23:29)

引用なし
   >Hidemi Oyaさん

> ddata/index.htm を受信した時のレスポンスヘッダに、Last-Modified と ETag があります。この値を保存しておき、次に ddata/index.htm をチェックする時に、リクエストヘッダに
>If-Modified-Since: 保存しておいた Last-Modified の値
>If-None-Match: 保存しておいた ETag の値
>を付加してやると、Last-Modified 以降に更新されていた場合や ETag の値に変更があった場合のみレスポンスボディが返され、更新されていない場合はレスポンスコード 304 のレスポンスヘッダのみが返されます。サーバ側は、無変更の場合はボディを返す必要のないので負荷が小さく、無駄なトラフィックも低減できます。

ということは、過去のレスポンスヘッダを付けてリクエストを打つ方法を探す必要があるわけですね。いまのLWP::Simpleモジュールではダメっぽいです。

> 以前、農薬名の長音記号がハイフンになっているものがあって連絡したらすぐ直してくれましたが、登録内容以外の修正は当然速報には入ってきません。速報は、失効農薬も1か月に1回のみですし。データに関しては、現在差分提供されていないので、差分提供の形にするなら細かな修正や失効も含めて提供を要望するってのが前提です。各システムのリソースやインターネットトラフィックの無駄遣いを避けるためには、可能な限り全面更新しないですむ方法を要望していくのがスジだと思います。
> それと、シェアレンタルホストでウェブアプリを動かすことを考えると、更新時のレスポンス低下やサーバへの集中的な負荷増大を招く可能性が高いため、全面更新は現実的ではありません。自前サーバなら、データ更新デーモンを走らせておいて、深夜にでもまとめてやってしまえば良いので全面更新だろうが全く問題ないですが(前述のようなリソースの無駄遣いの問題は残りますが)、自前サーバは希有な環境です(家はハードウェア的には可能でも接続契約が許しません)。

私は自宅環境での動作試験なのであまり周辺環境までは考えていませんけれど、将来的な波及を考えると要望は必要ですね。

> sjis, utf8 どっちでしょう? sjis だと、処理系によっては 0x5c を含む文字を検索できなかったりします。utf8 はエンコーダーによって機種依存文字がうまくマッピングできない場合もあるので、半角カタカナを全角に変換して内部データを euc で持っておくのがベストかもしれませんね。

さんざん苦労したあげく原因が分かりました。perl5.8.5+DBI+mySQLはeucを指定してtextのカラムに書き込んでも実際のデータはutf8でしか入らないようです。文字データはいわゆる英数字・記号は半角、半角カタカナは全角に変更して、機種依存文字を置換したデータを使っています。

検索の際にuft8でsql文を作成し、結果のリストをmapでeucに変換してから表示するということで多少手間は掛かりますが、文字化けは完璧に解決しました。hidemiさんのご希望のようなことも簡単に出来ます。ただし検索結果が冗長なので、パイプラインでuniqしてから表示させています。

==============================================================

農薬名リスト:アプロード エルサン ダイアジノン ランネート スミチオン アディオン アファーム スピノエース カスケード
作物名リスト:だいこん はくさい かぶ キャベツ ねぎ トマト ピーマン

だいこん-------------------------------
●アプロード

●エルサン
エルサン粉剤2 2回以内 収穫30日前まで
エルサン粉剤3 2回以内 収穫30日前まで
エルサン乳剤 2回以内 収穫30日前まで
エルサン粉剤2 2回以内 収穫30日前まで
エルサン乳剤 2回以内 収穫30日前まで
エルサン水和剤40 2回以内 収穫30日前まで

●ダイアジノン
ダイアジノン粉剤3 1回 は種時
ダイアジノン粒剤3 2回以内 は種時
ダイアジノン粒剤5 1回 は種時
ダイアジノン粒剤5 2回以内 は種時及び生育期 但し、収穫21日前まで
ダイアジノン粒剤5 1回 は種時
ダイアジノン粒剤5 2回以内 は種時及び生育期 但し、収穫21日前まで
(以下略)
==============================================================

〔197〕Re:農薬登録情報 Excel ファイル
 Hidemi Oya WEB  (06/06/02 0:47)

引用なし
   s_kobayashi さん、こん**は。Hidemi Oya です。

>ということは、過去のレスポンスヘッダを付けてリクエストを打つ方法を探す必要があるわけですね。いまのLWP::Simpleモジュールではダメっぽいです。
 LWP::Simple だと無理ですね。LWP::UserAgent なら可能ですが、これほどの機能は不要です。必要十分な機能、軽さ、簡単さを兼ね備えているのは、HTTP::Lite 辺りでしょうか(pure perl なのでコンパイルもいりませんし)。

>さんざん苦労したあげく原因が分かりました。perl5.8.5+DBI+mySQLはeucを指定してtextのカラムに書き込んでも実際のデータはutf8でしか入らないようです。
 ujis って、MySQL の EUC-JP だったんですね。CREATE DATABASE dbname DEFAULT CHARACTER SET ujis で作成したデータベースでも utf8 になっちゃうんですか? character_set_server が utf8 になっていて、データベース作成時に文字コードを指定してなかったので utf8 になったというのなら分かりますが…。
 あと、データベースが utf8 でも、SET CHARACTER SET ujis ステートメントで、SQL の入出力文字コードを EUC-JP にすることができるはずです。これだと文字コード変換は MySQL が行うので、スクリプト側での変換は不要です。

文字データはいわゆる英数字・記号は半角、半角カタカナは全角に変更して、機種依存文字を置換したデータを使っています。

>hidemiさんのご希望のようなことも簡単に出来ます。ただし検索結果が冗長なので、パイプラインでuniqしてから表示させています。
 ありがたや、ありがたや。ついでに、例示したような形の HTML テーブルに変換して出力してくれると Excel に取り込みやすいのでさらにうれしかったりしますが…(^_^;)。

〔199〕Re:農薬登録情報 Excel ファイル
 s_kobayashi  (06/06/02 23:51)

引用なし
   >Hidemi Oyaさん

> ujis って、MySQL の EUC-JP だったんですね。CREATE DATABASE dbname DEFAULT CHARACTER SET ujis で作成したデータベースでも utf8 になっちゃうんですか? character_set_server が utf8 になっていて、データベース作成時に文字コードを指定してなかったので utf8 になったというのなら分かりますが…。
> あと、データベースが utf8 でも、SET CHARACTER SET ujis ステートメントで、SQL の入出力文字コードを EUC-JP にすることができるはずです。これだと文字コード変換は MySQL が行うので、スクリプト側での変換は不要です。

使っている印象では、encoding "eucjp"環境のせいで、書き込みの際に型の指定が外れて結果的にutf8になっているような感じです。binmode "binary"みたいな形で書き込めばうまく行くのかもしれませんが、回避方法があるならもういいかって思っています。

>>hidemiさんのご希望のようなことも簡単に出来ます。ただし検索結果が冗長なので、パイプラインでuniqしてから表示させています。
> ありがたや、ありがたや。ついでに、例示したような形の HTML テーブルに変換して出力してくれると Excel に取り込みやすいのでさらにうれしかったりしますが…(^_^;)。

とりあえず決め打ちの作物名リスト、農薬商品名リストから収穫前日数、使用回数をuniqしてtableを出力できるようになりました。この2つをリストで入力してhtmlを吐き出すにはもう少し時間が必要です。

私のサブルーチン書きなぐりプログラミングは試作程度にしか耐えれないのですけれど、もし希望があれば、自宅サーバーで公開します。習作みたいなものなので、動作保証は出来ませんけれど。

〔200〕Re:農薬登録情報 Excel ファイル
 Hidemi Oya WEB  (06/06/03 21:32)

引用なし
   s_kobayashi さん、こん**は。Hidemi Oya です。

>使っている印象では、encoding "eucjp"環境のせいで、書き込みの際に型の指定が外れて結果的にutf8になっているような感じです。
 perl 側の encoding プラグマは関係ないと思いますけど…。MySQL にアジアンランゲージサポートか cp932 キャラクタセットがインストールされてないとか?

>この2つをリストで入力してhtmlを吐き出すにはもう少し時間が必要です。
 期待してますよ〜。

>私のサブルーチン書きなぐりプログラミングは試作程度にしか耐えれないのですけれど、もし希望があれば、自宅サーバーで公開します。
 作物等が固定でも、どんな感じだか是非見てみたいです。

〔201〕Re:農薬登録情報 Excel ファイル
 s_kobayashi  (06/06/03 21:39)

引用なし
   >Hidemi Oyaさん

>>私のサブルーチン書きなぐりプログラミングは試作程度にしか耐えれないのですけれど、もし希望があれば、自宅サーバーで公開します。
> 作物等が固定でも、どんな感じだか是非見てみたいです。

ご要望にお応えして、現時点のバージョンを公開します。
書きなぐり版ですので検索精度も動作安定性も全く未保証です。
間違っても実務に使わないでください。

http://otori.homes.com.au/yaku.html

〔202〕Re:農薬登録情報 Excel ファイル
 s_kobayashi  (06/06/04 13:22)

引用なし
   >Hidemi Oyaさん

> perl 側の encoding プラグマは関係ないと思いますけど…。MySQL にアジアンランゲージサポートか cp932 キャラクタセットがインストールされてないとか?

mysqlのバージョンは3.23.58です。FedoraCore3に付いていたものを使っています。

一応、my.confには
−−−−−−−−−−−−−−−−−−−−−−−−−−−
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default-character-set=ujis

[mysql.server]
user=mysql
basedir=/var/lib

[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
default-character-set=ujis
−−−−−−−−−−−−−−−−−−−−−−−−−−−
とujisを指定して、

mysql> SHOW variables like "cha%";

| character_set | ujis
| character_sets | latin1 big5 cp1251 cp1257 croat czech danish dec8 dos estonia euc_kr gb2312 gbk german1 greek hebrew hp8 hungarian koi8_ru koi8_ukr latin2 latin5 swe7 usa7 win1250 win1251 win1251ukr ujis sjis tis620 |

という状態で使っています。再コンパイルなどは行っていません。

encodingプラグマを使わなければ基本的に生データでやりとりできますが、プラグマを使うと入出力時に必ずフィルタ処理が掛かります。で、utfフラグが立った状態、フラグ無しeucjp、フラグ無しutf8、といろいろなパターンで日本語文字列をmysqlに書き込んでみましたが、いつもutf8でデータが書き込まれるのです。

何か設定が違うのかもしれませんが、これ以上仕様を変更して自分のシステムに不具合がでても困りますので、対処療法でしのいでいます。

〔203〕Re:農薬登録情報 Excel ファイル
 Hidemi Oya WEB  (06/06/04 14:28)

引用なし
   s_kobayashi さん、こん**は。Hidemi Oya です。

>ご要望にお応えして、現時点のバージョンを公開します。
 試してみました。すごく良い感じです。実用版の公開を心待ちにしています。

 若干気になった点を…。
 デリミタに全角読点以外に半角/全角スペースや半角カンマも使えるようですが、全角カンマや半角読点はデリミタとして認識してくれません。半角読点はともかくとして、IME を全角読点の代わりに全角カンマに設定している人もいるでしょうから、少なくとも全角カンマはデリミタとして認識してくれた方が使いやすいかもしれません。
 元データの作物名が漢字/ひらがな/カタカナな混じりなのでしょうがないんですが、少なくともひらがな/カタカナは気にせず使えた方が便利です。
 下記のように、剤型が異なる農薬は別行で出力してくれると、後で Excel 等に読み込んで整形する際に使いやすいと思います。

 できれば欲しい機能としては、1つの対象作物と複数の周辺作物を指定し、対象作物に登録のある全ての農薬を自動的に抽出して同様の表を作成できれば便利ですね。この場合、農薬数が多くなりすぎるので、殺虫剤/殺菌剤別などを最初に指定できればさらに good です。


    作物1    作物2
A粒剤 定植時 1回 定植時 1回
A乳剤 7日前 3回 前日 2回


〔204〕Re:農薬登録情報 Excel ファイル
 s_kobayashi  (06/06/04 16:52)

引用なし
   >Hidemi Oyaさん

 試用レポートありがとうございます。

> 若干気になった点を…。
> デリミタに全角読点以外に半角/全角スペースや半角カンマも使えるようですが、全角カンマや半角読点はデリミタとして認識してくれません。半角読点はともかくとして、IME を全角読点の代わりに全角カンマに設定している人もいるでしょうから、少なくとも全角カンマはデリミタとして認識してくれた方が使いやすいかもしれません。

 これは、s///g置換で半角スペースにしてsplitしているだけなので、対象文字はいくらでも増やせます。ご指摘の文字は近日中に追加します。

> 元データの作物名が漢字/ひらがな/カタカナな混じりなのでしょうがないんですが、少なくともひらがな/カタカナは気にせず使えた方が便利です。

 置換テーブルは次期プロジェクトで対応します。(1)正確な作物名を入れる、(2)表記ふれのある作物名にも対応する、(3)それらを踏まえてシソーラスに対応する、の3段階で対応できればと思います。とりあえず、oyaさんの作物名置換テーブルを参考にさせて頂きます。(^^ゞ

> 下記のように、剤型が異なる農薬は別行で出力してくれると、後で Excel 等に読み込んで整形する際に使いやすいと思います。

 そのような場合は、剤型までリストに含めてください。
例)スミチオン乳剤、スミチオン水和剤、オルトラン粒剤、オルトラン水和剤

 でもそうすると、いまの出力例では行タイトルにもセルにも商品名が入って邪魔ですね。セルの商品名はオプションで選べる方がいいのでしょうか。

> できれば欲しい機能としては、1つの対象作物と複数の周辺作物を指定し、対象作物に登録のある全ての農薬を自動的に抽出して同様の表を作成できれば便利ですね。この場合、農薬数が多くなりすぎるので、殺虫剤/殺菌剤別などを最初に指定できればさらに good です。

 農薬名リストの入手先を変えればいいだけですけれど、それはUIも含めて大きな変更になりそうですね。いまのものとは別のプロジェクトにして進化させる方が良いかもしれません。

 ちなみに私のねらいとする農薬検索プロジェクトはこちらです。
 今日完成したばかりで全く練れていないのですが、良かったら試してください。

http://otori.homes.com.au/yaku2.html

検索例
作物名:%稲%
農薬商品名1:ミスターホームランD Lジャンボ
対象病害虫名1:ホタルイ
農薬商品名2:オリゼプリンスアドマイ
対象病害虫名2:いもち
農薬商品名3:アプロードパダン粉
対象病害虫名3:コブノメイガ
農薬商品名4:テクリードCフロアブル
対象病害虫名4:いもち
農薬商品名5:ブラシンジョーカーフロアブル
対象病害虫名5:カメムシ

〔205〕Re:農薬登録情報 Excel ファイル
 Hidemi Oya WEB  (06/06/04 17:31)

引用なし
   s_kobayashi さん、こん**は。Hidemi Oya です。

MySQL 3.x はよく分かりませんが、少なくとも MySQL 4.1 以降では、データベース作成時に文字コードを指定すればそれで保存され、データベースの文字コードにかかわらず、SET CHARACTER SET で指定した文字コードで接続/入出力が行われる(データベース内と入出力の文字コードが異なる場合は MySQL が自動的に変換する)と書かれています(もっとも、MACS for acis 3.x は元データが UTF-8、携帯農薬実験室のトピックは RSS 配信が UTF-8 のため、MySQL を UTF-8 でしか使ったことがないのでこれを確認したことはありませんが^^;)。
 で、これからいうと、[#197] で書いたいずれかの方法で EUC-JP で使えるのではないかと思ったんですが、それに対しての回答はなかったので、「試してみたけどダメだった」と解釈しました。とすれば恐らく MySQL 側の問題と考えられるため、
> perl 側の encoding プラグマは関係ないと思いますけど…。
と書いた次第です。
 が、perl 5.8.0 だと encoding プラグマの全ての機能を利用できないので、影響が出ることがあるかもしれません。また、DBI モジュールがデータベース接続及び入出力に PerlIO レイヤを経由していない場合、perl5.8.0 以降では encoding プラグマを使っていても接続及び入出力は UTF-8 になりますね。

 考えてみたら、ECU-JP でレコードを書き込んで、それが自動的に UTF-8 に変換されて保存されているということは、[#200] で書いたような原因でもなさそうです。となると、DBI モジュールですかねえ?
 PHP も UTF-8 で使うのが無難ですから、複数処理系から利用できる汎用的なデータベースを構築する際は、機種依存文字やデータサイズに目をつぶっても UTF-8 ベースにしておくのが無難かもしれませんね。

〔206〕Re:農薬登録情報 Excel ファイル
 Hidemi Oya WEB  (06/06/04 18:02)

引用なし
   s_kobayashi さん、こん**は。Hidemi Oya です。

>oyaさんの作物名置換テーブルを参考にさせて頂きます。(^^ゞ
 いくらでもご利用ください。

> そのような場合は、剤型までリストに含めてください。
 それは分かっているんですが、
> でもそうすると、いまの出力例では行タイトルにもセルにも商品名が入って邪魔ですね。
が問題です。農薬名と適用の列が分かれてないので、Excel で列ごと一気に削除というわけにもいきませんから。
>セルの商品名はオプションで選べる方がいいのでしょうか。
 上記のように農薬名と適用の列を分けるよりは、こちらの方が使いやすそうですね。
 ただ、剤型も含めて農薬を指定するのは面倒なので、リストには剤型をしてなくても [#203] のような結果が得られるというのが、使用する立場としては一番楽かなあ…。

 ところで、この表の行は、クエリで一気に出力レコードとして作ってるんでしょうか? それとも HTML テーブルにする際に、クエリの結果を変換してるんでしょうか? もし前者なら、ACFinder でも同様のことが可能になるので、ぜひどのようなクエリを使っているのかをお教えください。

> 農薬名リストの入手先を変えればいいだけですけれど、それはUIも含めて大きな変更になりそうですね。いまのものとは別のプロジェクトにして進化させる方が良いかもしれません。
 暇がある時で結構なので、ぜひご検討をお願いします。

> ちなみに私のねらいとする農薬検索プロジェクトはこちらです。
 なるほど、農薬ナビのような使い方ですね。成分ごとの総使用回数に配慮した防除パターンを作成する場合や、特別栽培のチェックの際などには便利そうです。

〔207〕Re:農薬登録情報 Excel ファイル
 s_kobayashi  (06/06/04 20:14)

引用なし
   >Hidemi Oyaさん

>>セルの商品名はオプションで選べる方がいいのでしょうか。
> 上記のように農薬名と適用の列を分けるよりは、こちらの方が使いやすそうですね。
> ただ、剤型も含めて農薬を指定するのは面倒なので、リストには剤型をしてなくても [#203] のような結果が得られるというのが、使用する立場としては一番楽かなあ…。

 私のDBのテーブルは、登録適用部?.xlsのシート3と全く同じ構成になっています。
 そこで、

my $sqldata=qq(select meishou,shiyoukaisuu,jiki from tekiyoubu where meishou like "%$meishou%" and sakumotsumei like "$sakumotsu");

 で「%農薬の名称%」「作物名」のリストによるダブルのループでsqlを生成しデータベースを検索しています。得られた「農薬の名称」「本剤の使用回数」「使用時期」を.でつなぎ合わせ、屋号を切り捨てて、sort+uniqでセルの内容を作り出しています。

 oyaさんの希望を叶えるには、事前に商標・商品名テーブルを用意するか、データベースに一回当たらないと難しいと思います。ただ、いまでもダブルループで負荷を掛けていて、5×6件くらいのリストでレスポンスに数秒程度かかっています。これ以上データベースに負荷を掛けるべきか、事前処理で要素を整理するかは議論する必要があると思います。


> ところで、この表の行は、クエリで一気に出力レコードとして作ってるんでしょうか? それとも HTML テーブルにする際に、クエリの結果を変換してるんでしょうか? もし前者なら、ACFinder でも同様のことが可能になるので、ぜひどのようなクエリを使っているのかをお教えください。

 種明かしは上記のとおりです。表の行はforeachループが作り出しています。クエリはセルの内容しか作りません。

>> 農薬名リストの入手先を変えればいいだけですけれど、それはUIも含めて大きな変更になりそうですね。いまのものとは別のプロジェクトにして進化させる方が良いかもしれません。
> 暇がある時で結構なので、ぜひご検討をお願いします。

 分かりました。メインのプロジェクトが落ち着いたら考えてみます。

>> ちなみに私のねらいとする農薬検索プロジェクトはこちらです。
> なるほど、<a href="http://riss.narc.affrc.go.jp/nouyaku.htm">農薬ナビ</a>のような使い方ですね。成分ごとの総使用回数に配慮した防除パターンを作成する場合や、特別栽培のチェックの際などには便利そうです。

 農薬ナビの成果はよく把握していませんが、技術資料作成支援に近いかもしれません。私の組織では、農薬名の記載されたあらゆる資料の作成について農薬検査所データベースによる複数回チェックが義務づけられています。防除暦などのチェックは膨大な作業が必要になっていました。そこで、省力的なチェック用の紙データを作るのが目的でした。

 このシステムを使って、起案者が正確なバックデータを付けて回覧するようになれば、二次チェック者は出典の日付が正しいかどうかだけに注意すればデータベースを確認しなくてもチェックを進めることが出来ます。内容も必要事項だけに絞り込まれているのでチェックが容易です。作業能率は10倍以上改善できると期待しています。

 成分回数チェックはエコ農産物の申請書類用に付けたおまけです。データベースらしくて面白いかなと思ってつくりました。(*^_^*)

〔211〕Re:農薬登録情報 Excel ファイル
 Hidemi Oya WEB  (06/06/04 23:33)

引用なし
   s_kobayashi さん、こん**は。Hidemi Oya です。

>my $sqldata=qq(select meishou,shiyoukaisuu,jiki from tekiyoubu where meishou like "%$meishou%" and sakumotsumei like "$sakumotsu");
 これが何でダブルのループなんだろうと思ったんですが、perl 側で農薬名と作物名のリストからそれぞれひとつずつ取り出して、その回数分 SELECT を繰り返しているってことなんですね。MySQL では正規表現が使えるので、下記のようなクエリにすれば、ループ無しで検索できます。で、農薬名を第1キー、作物名を第2キーにした2次元ハッシュに回数と時期を連結した値を保存していけば、あとで簡単に表の形で取り出せます。さらに、農薬名をハッシュキーにする際に、tm.pm を使って屋号を削除すれば、ハッシュ保存の段階で屋号抜き通称名でグルーピングでき、ハッシュデータサイズも削減できます。
 なお、MySQL で大きなデータでは試したことがありませんが、小さなデータでは正規表現によるオーバーヘッドは感じませんでした。

$re_sakumotsu = join('|', split(/[ \,]| |、|,/, $in_sakumotsu));
$re_meishou = join('|', split(/[ \,]| |、|,/, $in_meishou));
// ユーザが正規表現でリストを渡すようにした方が使い勝手が良いかな
$sqldata = "select meishou, shiyoukaisuu, jiki from teiyoubu where meishou regexp '$re_meishou' and sakumotsumei regexp '^($re_sakumotsu)$'";

> oyaさんの希望を叶えるには、事前に商標・商品名テーブルを用意するか、データベースに一回当たらないと難しいと思います。
 もちろん、屋号抜き通称名にまとめられている方がベターなのは言うまでもないですが、屋号付き農薬名ごとに異なる行になっていれば、Excel で削除するのは簡単なので、検索システム側であえて屋号を外した状態になってなくても OK です。
 ただ、上の方法なら屋号抜き通称名ごとのグルーピングもデータベースを使用することなく可能だと思います。

 ついでに、この方法でいくなら、農薬指定がない場合は、
$sqldata = "select meishou, shiyoukaisuu, jiki from teiyoubu where sakumotsumei regexp '^($re_sakumotsu)$'";
で検索するようにするだけで、リストにあげた作物に登録がある全農薬の表も作れます(用途を検索条件にして農薬数を制限しないと実用上は厳しいでしょうけど)。[#203] で書いた機能とはちょっと違いますが、こちらでも十分です。
 ってことで、メインのプロジェクトが落ち着いたら、こちらの手法もご検討ください。

>私の組織では、農薬名の記載されたあらゆる資料の作成について農薬検査所データベースによる複数回チェックが義務づけられています。
 うちもそうです。ってか、防除基準の誤記載等が問題になってから、多分いずこも同じ状況なんでしょうね。

>内容も必要事項だけに絞り込まれているのでチェックが容易です。作業能率は10倍以上改善できると期待しています。
 農薬検査所の検索結果はいらないモノも全て出てきますからねえ…。JPP-NET は検索条件に合致する適用のみが表示されますが、この目的には農薬ごとに検索する必要があるので、s_kobayashi さんのシステムが一番便利ですね。

〔220〕Re:農薬登録情報 Excel ファイル
 s_kobayashi  (06/06/06 0:12)

引用なし
   >Hidemi Oyaさん

正規表現はsql99なのかもしれませんけれど、私の教科書「PerlDBI」には書いていませんので対応できていません。

というか、||の列挙なら正規表現でなくても、in (要素の列挙)で拾えるような気がします。

また試してみます。

〔222〕Re:農薬登録情報 Excel ファイル
 Hidemi Oya WEB  (06/06/06 0:40)

引用なし
   s_kobayashi さん、こん**は。Hidemi Oya です。

>というか、||の列挙なら正規表現でなくても、in (要素の列挙)で拾えるような気がします。
 IN って、ワイルドカード使えましたっけ?

 kabe さんのおかげで、[#218] のように主クエリだけの SQL 一発で検索可能な方法が判明しました。

〔224〕Re:農薬登録情報 Excel ファイル
 s_kobayashi  (06/06/06 21:56)

引用なし
   >Hidemi Oyaさん

> IN って、ワイルドカード使えましたっけ?

 何か勘違いしてました。(T.T) 流してやってください。

  ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃番号順表示 ┃検索  
84 / 114 ツリー <前へ | 次へ>
ページ:  ┃  記事番号:   
(SS)C-BOARD vv3.8 is Free.