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

研究会

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

〔730〕CSV 形式の農薬登録情報ダウンロードサービスを開始しました Hidemi Oya (07/11/17 22:46)

〔741〕ACFinder 071120test版 kabe (07/11/20 23:08)
〔743〕Re:ACFinder 071120test版 kabe (07/11/21 9:13)
〔744〕Re:ACFinder 071120test版 Hidemi Oya (07/11/21 10:19)
〔746〕CSV データダウンロード URL のユーザ指定 Hidemi Oya (07/11/21 12:23)
〔747〕アイディア2つ Hidemi Oya (07/11/21 21:21)
〔748〕ACFinder 071121test版 kabe (07/11/21 23:35)
〔750〕Re:ACFinder 071121test版 Hidemi Oya (07/11/22 0:44)
〔752〕Re:ACFinder 071121test版 kabe (07/11/22 20:35)
〔754〕Re:ACFinder 071121test版 Hidemi Oya (07/11/23 1:11)
〔756〕Re:ACFinder 071121test版 kabe (07/11/23 9:10)
〔759〕Re:ACFinder 071121test版 Hidemi Oya (07/11/23 11:22)
〔751〕ACFinder 071121test版バグ kabe (07/11/22 13:18)
〔753〕Re:ACFinder 071121test版バグ Hidemi Oya (07/11/22 23:23)
〔755〕Re:ACFinder 071121test版バグ Hidemi Oya (07/11/23 9:01)
〔757〕Re:ACFinder 071121test版バグ kabe (07/11/23 9:21)
〔758〕Re:ACFinder 071121test版バグ Hidemi Oya (07/11/23 10:47)
〔761〕Re:ACFinder 071121test版バグ kabe (07/11/23 21:08)
〔766〕Re:ACFinder 071121test版バグ Hidemi Oya (07/11/24 12:37)
〔760〕ACFinder 071123test版 kabe (07/11/23 21:00)
〔762〕Re:ACFinder 071123test版 Hidemi Oya (07/11/23 21:42)
〔763〕CSV データを若干仕様変更 Hidemi Oya (07/11/23 22:10)
〔765〕SQL タブの引用符をシングルクォートに Hidemi Oya (07/11/23 22:49)

〔741〕ACFinder 071120test版
 kabe WEB  (07/11/20 23:08)

引用なし
   kabe です。

071120test版です。
http://acfinder.kabe.info/acfinder071120.exe

zip書庫の解凍時に上書き確認ダイアログが出ないよう修正しました。
ExepressCX フリー版でインストーラーを作成してみました。
デフォルトインストール先がProgram Files で今のところインストール先を記憶しません。次回からレジストリに記録するようにします。
余力があればアンインストーラも作成します。

〔743〕Re:ACFinder 071120test版
 kabe WEB  (07/11/21 9:13)

引用なし
   kabe です。

CSVデータを極力変換しなくても済むよう、全角アルファベット、数字、記号は半角のままでいきます。
http://www.acis.famic.go.jp/toroku/dokusei.htm から取得した毒性データについても、同様の変換を行ってデータベースに取り込むよう修正しています。

で、spec.db が更新されない場合、薬剤タブでDDVP や MEP などのASCII文字列の毒性、魚毒性が表示されない不具合があります。
そのような場合は、データ更新ダイアログから拡張機能>毒性テーブル(spec.m_dokusei)更新を実行してください。
あるいは spec.db を削除してから acfinder を再起動してください。

〔744〕Re:ACFinder 071120test版
 Hidemi Oya WEB  (07/11/21 10:19)

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

>071120test版です。
 すみません。これに気づかず、CSV ファイルを仕様変更してしまいました。

 ということで、「071120test 版を評価中の皆様」へ
 新しい test 版が出るまで、当サイトの CSV データを利用すると、「u」は「m^2」と表示されますので、ご了承ください。

>ExepressCX フリー版でインストーラーを作成してみました。
 私自身は、インストーラの有無を選択できる場合は無しを選択する口ですが、やはりインストーラがあると便利ですね。今までは、新規インストールに
(1) LZH 解凍ソフトがなければ、まず解凍ソフトをインストール
(2) (1) で UNLHA32.DLL を使っていなければ、ダウンロードしてインストール
(3) ACFinder 用フォルダー作成と解凍
(4) ACFinder のショートカット作成
という手順が必要でしたが、(1), (2) の段階で挫折する人もいました。
 インストーラ付きなら (1), (3), (4) は不要で、CSV 利用がデフォルトになれば (2) も必須ではなくなるので、より多くの人に利用してもらえると思います。

>余力があればアンインストーラも作成します。
 勧めておいて私自身は ExpressCX をまともに使ったことがないのですが(^_^;)、インストーラを作成した時のデータでアンインストーラも自動作成されるのだと思ってました。

〔746〕CSV データダウンロード URL のユーザ指定
 Hidemi Oya WEB  (07/11/21 12:23)

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

 ひとつお願いがあるのですが、CSV データのダウンロード先を、ユーザが変更できるようにしていただけないでしょうか? ないとは思いますが、CSV データの利用者が転送量制限に引っかかるほど増えると、分室等でも薬検の許諾をとってデータを提供してもらわなくてはならなくなるかもしれません。
 また、これが可能になると、独自DB検索システム用のデータ更新も非常にやりやすくなります(というか、現状ではこちらの方の理由が大きいですけど^^;)。こちらのためだけなら、acfinder.ini の [NET] セクションに、UrlDownSite1 エントリが設定されていれば、その値を使うというようにしてもらえるだけでも OK です。

 薬検の URL も変更可能にしておけば、もし URL が変わってもプログラムを変更することなく、すぐに対応できますね。

〔747〕アイディア2つ
 Hidemi Oya WEB  (07/11/21 21:21)

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

 検索部分の本筋とは全く関係ありませんが、インストーラが付いて便利になったので、さらに便利にする案を。

1 データベース強制バージョンアップオプション
 071119test 版で、データベース更新が必要な場合に自動的にダイアログが表示されるようになったということですが、これをもう一歩進めて、インストール後データベースを強制的に更新してしまってはどうでしょう。どうせ更新しなければ使えませんし、インストーラ付きならインストール後の自動実行ソフトの指定もできますよね。
 /U オプションだと受信データが更新されてなければデータベースを更新しませんが、たとえば /V オプションで起動すると、受信データが更新されていなくてもデータベース更新をするようにしておきます。で、データベース構造が変わったときなどは、インストール後に /V オプションで ACFinder を起動するようにします。
 これ以外の方法もあるでしょうが、/V オプション方式だと、これから開発する独自DB検索システム(すでに薬検の許諾済み)のデータベース更新で、すでに作成済みの CSV ファイルをそのまま使えるようになってさらに便利になるメリットもあります(^_^;)。

2 ACFinder アップデート通知
 ACFinder がアップデートされていたら、自動的にダウンロード&インストールというのが理想ですが、新バージョンがあれば通知してくれるだけでもかなり便利になると思います。通知機能があれば、昨年の登録基本部のカラム変更、今年の URL 変更などのようなことがあっても、皆さんすぐに対応できます。
 通知だけなら、バージョンとチェンジログを記載したテキストか HTML ファイルを置いておき、現在のデータ更新チェックと同じ方法でチェックして、更新されていればその内容を表示するというのが最も簡単な実装方法だと思います。

〔748〕ACFinder 071121test版
 kabe WEB  (07/11/21 23:35)

引用なし
   kabe です。

071121test版です。
http://acfinder.kabe.info/acfinder071121.exe

CSVからテーブルへの読込みをシンプルにしました。
m^2 > u 変換のみ行います。
若干更新速度が速くなっています。

これを見ると、9万行の適用部でも、もっと劇的に早くなるのではないかと期待したのですが、思った程ではなかったです。
http://www.3rd-impact.net/Document/SQLite/Translation/Current/speed.html
1行毎に ExecSQL を実行しているせいかと思いましたが、そうでもないようです。

独自の接続先を選択できる機能を付けました。
設定>基本設定>ダウンロードタブを見てください。
接続先には update.txt toroku.zip の前までのURLを記入してください。

〔750〕Re:ACFinder 071121test版
 Hidemi Oya WEB  (07/11/22 0:44)

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

>CSVからテーブルへの読込みをシンプルにしました。
>m^2 > u 変換のみ行います。
>若干更新速度が速くなっています。
 今回は、csv->acis.db 変換が 7.8 秒ということで、071119test に比べると約 30 %短縮されました。xls->acis.db 変換に比べると、ほぼ半分の時間です。
 適用データを最初にテンポラリテーブルとして作ると、メモリ搭載量でかなり速度が変わると思われますが、xls->acis.db 変換対比で 30 %以上の短縮率が得られれば、そこそこ速くなった感じはすると思います。

>1行毎に ExecSQL を実行しているせいかと思いましたが、そうでもないようです。
 でも、前から BEGIN/COMMIT が機能してないようには感じてます。大量の INSERT 文を発行できるように、ストリームから SQL を流し込めるようにした方が良いのかなあ…。

>独自の接続先を選択できる機能を付けました。
 ありがとうございます。バッチリ、自宅サーバからデータをダウンロードできるようになりました。

>接続先には update.txt toroku.zip の前までのURLを記入してください。
 最初、ディレクトリ名の後ろのスラッシュを付けてなかったので、失敗しました(^_^;)。文字列末尾がスラッシュでない場合は、自動的にスラッシュを付加してくれると、より使いやすさが増すと思います。

〔751〕ACFinder 071121test版バグ
 kabe WEB  (07/11/22 13:18)

引用なし
   kabe です。

アルファベット、記号を半角のままで利用することに伴うバグがありました。

定型処理で、きゅうり(露地) など半角の()が含まれる作物名を regexp で検索できません。
きゅうり(露地)のように全角の()はOKです。
また作物タブでも、作物名選択ダイアログの検索タブからチェックボックスで選択した場合は検索できません。ツリーから選択する場合は、全角括弧になっているため検索できます。

原因は全角の()は \(? に展開されますが、半角の ( は ( のままのためです。
作物タブの作物名覧に直接記述した場合は、エンターした時点で半角括弧が全角括弧に強制的に変換されるため検索できます。

連休中に修正版を作成しますが、それまでご注意ください。

〔752〕Re:ACFinder 071121test版
 kabe WEB  (07/11/22 20:35)

引用なし
   >Hidemi Oyaさん

kabe です。

> でも、前から BEGIN/COMMIT が機能してないようには感じてます。
あ〜、どうもそのようですね。
BeginTransaction と Commit をコメントアウトしても、同じ早さです。
こんなことに今頃、気付くとは…
こうなると私にはさっぱりわかりません。

〔753〕Re:ACFinder 071121test版バグ
 Hidemi Oya WEB  (07/11/22 23:23)

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

>原因は全角の()は \(? に展開されますが、半角の ( は ( のままのためです。
 あ゛〜、すみません、私の CsvToRegexp 関数のせいですね。あの当時は全角しか考えてませんでしたから(^_^;)。
 AcfUtil.pas の CsvToRegexp 関数で、
 s := AnsiReplaceStr(s, '(', '\(?');
 s := AnsiReplaceStr(s, ')', '\)?');
の下に
 s := AnsiReplaceStr(s, '(', '\(?');
 s := AnsiReplaceStr(s, ')', '\)?');
を追加してください。

〔754〕Re:ACFinder 071121test版
 Hidemi Oya WEB  (07/11/23 1:11)

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

>BeginTransaction と Commit をコメントアウトしても、同じ早さです。
 ですよね。BEGIN 文でオートコミットは中止されるはずですが、それが機能していない(たとえば、sqlite3_finalize API の呼び出しでオートコミットに戻ってるとか)か、オートコミットによる速度差がないのかのどちらかでしょう。

 前者の場合は、複数の SQL 文をまとめて発行すれば、改善される可能性はあります。とりあえずは、100〜1000 行程度の INSERT 文をまとめて ExecSQL する方法を試してみてもらえませんか?
 INSERT 文をまとめるのは、TStringList.Add() して行くのが手っ取り早いですが、行数が増えるにつれてどんどん遅くなります。string に連結して行く方がより効果的だと思います。

〔755〕Re:ACFinder 071121test版バグ
 Hidemi Oya WEB  (07/11/23 9:01)

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

 さらに、CsvToRegexp 関数に下記も追加しておいた方が良さそうですね。

s := AnsiReplaceStr(s, '[', '\[?');
s := AnsiReplaceStr(s, ']', '\]?');
s := AnsiReplaceStr(s, '[', '\[?');
s := AnsiReplaceStr(s, ']', '\]?');

〔756〕Re:ACFinder 071121test版
 kabe WEB  (07/11/23 9:10)

引用なし
   >Hidemi Oyaさん

kabe です。

> とりあえずは、100〜1000 行程度の INSERT 文をまとめて ExecSQL する方法を試してみてもらえませんか?
これ、string に連結する方法を試してみたのですが、返って遅くなりました。
1000行連結すると、5倍くらい遅くなります。
文字列を連結するよりは1行づつ INSERT した方がずっと早いです。

sqlite.pas の方で何か対策ありますか。

ここの一番最後のあたり、それらしいことを書いてあるような気がしますが私には理解できません。
http://hp.vector.co.jp/authors/VA002803/sqlite/capi3dll.htm

〔757〕Re:ACFinder 071121test版バグ
 kabe WEB  (07/11/23 9:21)

引用なし
   >Hidemi Oyaさん

kabe です。

ありがとうございます。
ただ半角の方を先に置換しないとまずいですね。

あと作物名に露地が含まれていれば、施設は除外するようにしてましたが、露地と施設の両方が含まれていると、施設を検索できなかったのでこの部分も修正します。

〔758〕Re:ACFinder 071121test版バグ
 Hidemi Oya WEB  (07/11/23 10:47)

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

>ただ半角の方を先に置換しないとまずいですね。
 あ゛あ゛あ゛〜〜〜、おっしゃるとおりでございます。寝ぼけてました。

>あと作物名に露地が含まれていれば、施設は除外するようにしてましたが、露地と施設の両方が含まれていると、施設を検索できなかったのでこの部分も修正します。
 ん? え〜っと、具体的にどういうケースでしょうか?
 将来的には、Aの露地とBの施設のみに登録というような場合もあるかもしれませんが、今のところそういうのはなさそうですが…。

〔759〕Re:ACFinder 071121test版
 Hidemi Oya WEB  (07/11/23 11:22)

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

>これ、string に連結する方法を試してみたのですが、返って遅くなりました。
>1000行連結すると、5倍くらい遅くなります。
 あちゃ〜、そんなに遅くなりますか…。文字列サイズが大きくなるとメモリの再割り当てが発生するので、最初に SetLength で十分な量のメモリを確保しておかなければならないのかもしれません。それと、もし INSERT 文を
 INSERT INTO table (..) VALUES (..);
にしているなら、
 INSERT INTO table VALUES (..);
にすればいくらか速くなるかも…。
 が、SQL が長すぎて sqlite3_prepare に時間がかかっているのだとすれば、上記対策をしても結果は同じでしょうね。10〜50 行程度でまとめた方が良いかもしれません。

>ここの一番最後のあたり、それらしいことを書いてあるような気がしますが私には理解できません。
 SQLite.pas の ExecSQL は、sqlite3_exec ではなく、sqlite3_prepare, sqlite3_setp, sqlite3_finalize を使っています。ということで、INSERT 文の連結でなんとかなるかなと思ったわけです。
 INSERT 文の連結でダメなら、紹介していただいた記事でやっているように、仮パラメータの INSERT 文を用意しておいて、実パラメータを bind していく方法くらいしかありません。が、SQLite には SQL 文に PREPARE/BIND がないので、API レベルで汎用的に実装する方法が思い浮かびません。それと、フィールドごとに分解して bind する処理に時間がかかりますから、今回のように CSV データを INSERT する場合は、前述のように単純に全フィールドを INSERT していく方が速いはずです。

〔760〕ACFinder 071123test版
 kabe WEB  (07/11/23 21:00)

引用なし
   kabe です。

071123test版です。
http://acfinder.kabe.info/acfinder071123test.zip
EXEのみです。

半角の () [] を含む作物名を検索できない場合がある不具合を修正しました。

CSVデータの読込み方法を若干変更していますが、速度にほとんど変化はありません。
10行ひとまとめにして INSERT するのがほんの少しだけ早そうなのでそのようにしています。
文字列変換は _1 〜 _5 を 1.〜5.に戻す処理を付けました。

薬剤タブの検索仕様を若干変更しました。
薬剤の絞り込みを行う場合、これまで用途コンボボックス(殺菌剤、除草剤などの選択)を選択すると、作物名が指定されていてもリセットしてました。
作物名が指定されていれば、その作物の殺菌剤や除草剤のみを検索するようにしました。
薬剤候補と用途は、どちらかが選択されると、片方はリセットされます。

〔761〕Re:ACFinder 071121test版バグ
 kabe WEB  (07/11/23 21:08)

引用なし
   >Hidemi Oyaさん

kabe です。

> ん? え〜っと、具体的にどういうケースでしょうか?
> 将来的には、Aの露地とBの施設のみに登録というような場合もあるかもしれませんが、今のところそういうのはなさそうですが…。
まあ、あまりないとは思いますが、きゅうり(露地栽培)ときゅうり(施設栽培)だけを同時に検索して使用時期の確認をしたいなどとという場合を想定しています。
071123test版はそのように変更しました。

〔762〕Re:ACFinder 071123test版
 Hidemi Oya WEB  (07/11/23 21:42)

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

>CSVデータの読込み方法を若干変更していますが、速度にほとんど変化はありません。
 今回は、csv->acis.db 変換が 7.9 秒ということで、071121test 版と変わりませんでした。恐らく、これが私のマシンで目一杯の速度だということでしょう。2つ併せて 10 万レコード近いですから、ある程度時間がかかるのはやむを得ないと思います。

>文字列変換は _1 〜 _5 を 1.〜5.に戻す処理を付けました。
 あれま、適用の本文中にも1.2.などの丸付き数字を使っているものがあったんですね。CSV データに変換する段階で、丸付き数字を (1), (2) に変換するようにしますので、次のバージョンからこの部分は削除していただいて結構です。

>作物名が指定されていれば、その作物の殺菌剤や除草剤のみを検索するようにしました。
 現在は検索が速くなったので、前の仕様でも速度的な問題はありませんでしたが、やはりこの方が分かりやすくて便利ですね。

 ひとつ気づいたのですが、毒性データの英数字が全角のままなので、2,4-PA とか MCPA とかの毒性が表示されなくなってしまいました。元データは英数字が半角、カナが全角なので、文字種変換しない方が良いですね。併せて、私の作った別名テーブルも、英数字を半角に変換してご利用ください。

〔763〕CSV データを若干仕様変更
 Hidemi Oya WEB  (07/11/23 22:10)

引用なし
   Hidemi Oya です。

>CSV データに変換する段階で、丸付き数字を (1), (2) に変換するようにしますので、次のバージョンからこの部分は削除していただいて結構です。
 ここで書いたように、丸付き数字は、_1, _2 ではなく、(1), (2) に変換するようにしました。

 このほか、様々なプラットフォームでなるべく問題が少なく、そのまま使いやすい形にするということで、「メートル」は「メートル」、「u」は「平方メートル」に変換するように修正しています。

〔765〕SQL タブの引用符をシングルクォートに
 Hidemi Oya WEB  (07/11/23 22:49)

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

 今更ながらなんですが…。SQL タブの SQL 作成支援で、文字列を囲む引用符がダブルクォートになっていますが、シングルクォートに変えていただけないでしょうか? sqlite3.dll のバージョンによるのかもしれませんが、以前、ダブルクォートだと日本語のハンドリングがやや不安定になることを経験したことがあります。

〔766〕Re:ACFinder 071121test版バグ
 Hidemi Oya WEB  (07/11/24 12:37)

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

>まあ、あまりないとは思いますが、きゅうり(露地栽培)ときゅうり(施設栽培)だけを同時に検索して使用時期の確認をしたいなどとという場合を想定しています。
 同じ作物でってことでしたか。
 しかし、考えてみれば当たり前なんですが、作物タブで「きゅうり(施設栽培),きゅうり(露地栽培)」なんていう検索もできたんですねえ…。やってみて初めて、上位作物だけでなく複数の作物を指定できることに、今更のように気がつきました(^_^;)。
 あと、きゅうりの有機銅剤のように、同一作物でも露地と施設で使用時期が異なるために、単に「きゅうり」ではなく、露地と施設がそれぞれ別個に登録されている農薬があるのも知りませんでした。いやいや、奥が深い…。

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