MIT’s blog

個人的なメモかな

プログラミング

CsvHelperで楽させて頂く

もう何年前に書いたのか忘れてるツールの機能を追加する為に A .NET library for reading and writing CSV files. Extremely fast, flexible, and easy to use. | CsvHelperを使ってみる。プロジェクトへの追加はパッケージマネージャコンソールでPM> Instal…

二重起動禁止

少しご無沙汰でした。5月22日になったばかりの午前1時過ぎに体の異変で目が覚めた。風邪の症状で、念の為に体温計ると37.5℃で基本熱が出ない体質でコロナワクチン2回目の時に37.1℃まで上がったのが何十年ぶりだったんですが、ああ、こりゃコロナだと思い24時…

キー項目

JRA-VANの提供データは仕様書なんかで諸々の定義がされてます。そんな中でキーにする項目で微妙な記述があります。馬毎レース情報のキーなんですが、馬番をキーにするか否か。 出走馬名表時点では、全て初期値を設定(出馬表時点で馬番が埋まるため、馬番を…

BackgroundWorkerコンポーネント

DoEventsではなく、マルチスレッド化で対処するのが今風?らしいが、これはなかなかハードルが高い。そもそも、JV-Link自体が32bitだったり諸々の事情からなのかマルチスレッドでの動作が遅くなる模様なので今回は宿題として残します。ってのもデータベース構…

Application.DoEventsは古い?

Windowsでのプログラミングの基本をVisual Basicで始めたのはもう30年近く前になるのかな~^^; ループで回して長い処理する時にはDoEvents入れよう的な習慣が染みついてたと思うんですが、それは昔の話? まあ、当初Windows2000かWindowsNTだったのかな?OSがM…

Parameterの準備

1レコードに1,700以上の項目があるテーブルの登録処理に時間が掛かってたんですが、このやり方を改善してみました。これまではcmd.Parameters.Add(new SQLiteParameter("@PARA", value));って感じで毎回やってたんですが、事前にcmd.Parameters.Add(new SQL…

1時間の短縮

今朝起きてみると、フルセットアップが終了してました。13時間38分と1時間程度短縮されてました。ここまでの苦労に見合うかは別として、まだまだなのは確かです。ただ、今回の諸々の変更で、データベースファイルのサイズが60ギガ→40ギガにサイズダウン。ん?…

SQLiteの接続文字列がまだまだ勉強不足

まだまだ色々と分かってないとは思うけど、データベース新規作成時に指定しておくものと、毎回指定しなきゃなものがある気がする。毎回メモリの指定するとしばらくしてリソース不足のエラーが出始めるので、これは何となく作成時のみにしておく。ジャーナル…

接続文字毎の結果

取敢えず、何も指定しないデータベースのパスのみだと2022/04/28 10:23:07 出走別着度数(2,445) [2022/03] >> Done! ...79.2959801秒2022/04/28 10:24:26 出走別着度数(1,276) [2022/03] >> Done! ...41.2450401秒PRAGMA TEMP_STORE = MEMORY;2022/04/28 10:…

SQLiteの接続文字列

そもそも、データベースのパスだけしか指定はしてなかったんですが、あちこちで接続文字列で色々指定するとパフォーマンスが上がるって事で試してるんですがなかなか上手く行きません。PRAGMA LOCKING_MODE = EXCLUSIVE;DB Browser for SQLiteではエラー無く…

メモリ不足解消するが速度は変わらず

本日32GBx2枚が届いたので早速PCに組込後、試してみるがメモリ不足は解消されているが速度は全く変わらずでした。OSで64GB認識されているので問題ないとは思うけど、まあ、そのうちにOSのインストールからやり直してみるかもですが、SQLiteの処理が遅いのは…

メモリ不足

SQLiteの接続文字列で色々やってたんですが、一向に早くならなくて半ば諦めムードだったんですが、昨夜のフルセットアップでVisual Studioへの出力にふと目をやるとSQLite error (6154): os_win.c:46881: (8) winMapfile2(E:\CS Project\KSD\KSD_DB.db) - こ…

UPSERT

データベースのノウハウ不足は否めません。日々勉強になる事が沢山あります。今回はデータベースの基本操作の登録・更新・削除で新しい機能っていうのか方法がある事を知りました。 これまでSQLite3では基本INSERTは高速で更新とか遅いって話は知っていて、…

滅茶苦茶遅いんだと

JRA-VANの掲示板でのやり取りで、14時間とかは問題外の遅さorz いや、別にスピードスターだとは思ってなかったけど、少し内容は違うかもだが、同じ事を30分で可能な事を14時間越えってのはねぇ。 まあ、手抜きコーディングなのは否めなくて、少し反省も…

DataGridViewのデザイン時のバグ

データベース登録済みのデータ表示にDataGridViewコントロールを利用してみる事にしたのですが、最初はデータバインディングで楽にと思ってましたが、これがそうでもなく、データバインディングせずに自力でデータ表示する事にしました。 デザイン時にカラム…

コンテキストメニューで印入力

ラベルコントロールにコンテキストメニューを表示して入力する方法をなかなか理解出来なかったのですが、やっと実装出来ました。コンテキストメニューを表示するのはさほど難しい話では無かったです。ContextMenuStrip contextMenuStrip = new ContextMenuSt…

JVRead vs JVGets

ブログにはひと月ぶりの書き込みですが、昨年末からの入退院の繰り返しもどうにか一段落したので、本業の三交代勤務でプログラミングし放題ではなくなったので、若干のスローダウンはしてますが、開発は続行中。今現在も通算何度目になるのか分からなくなっ…

インデックス忘れてました

ふと、遠い昔の記憶からデータベースでのインデックスの存在を思い出し、グーグル先生に確認しながら実装してみました。先に結果からですが、やはり画期的にスピードは上がりました。これならどうにか使えるんじゃないかと自己解決にしようかなっと。インデ…

DBアクセスのド素人w

業務ではほぼDB関連の仕事してないので、ほぼというのは全くではないけど、管理者としては関わってないけど、DB絡みのプロジェクトは経験有り、他の開発者とはDBとは的な話はした事はある。ってか、多分偉そうな事を言った気がする。学生時代の記憶からだと…

もしかすると、Entity Frameworkがって事ではないかも?

少し考えてたのですが、今回自分がやっている事はあくまでEntity FrameworkでSQLiteを扱うって事なんですが、今回のコードファーストやり始め、SQL Server Expressに対しては本当に楽でしたので、このEntity FrameworkはSQL Server 相手なら悪くないパフォー…

Entity Frameworkの謎

大昔、世の中にADO.NETがやっと現れた頃に早速飛びついて今回やってる事と同じ事を試してデータベース作成に挑み、1年分のデータ登録に1日とか余りの激遅に一旦投げた事があるんですが、月日が流れても便利な機能にはその代償があるんですかね? それとも単…

大きな方針転換して、プロジェクトに複数のコンテキストが存在する

昨日行ったフルセットアップは結局金曜日の夜は修正のみで一旦終了し、土曜日の朝から追加修正して開始。終わったのは日付回って今日午前0時過ぎでした。14時間43分とか掛かってまして、やはり62ギガバイトとかの巨大なDBファイルとなりました。追加…

日付として"0000/00/00"

前々から文字列として提供されたデータを数値化する際にエラーになるものがあり、対処はしてきたつもりでしたが、日付データとしてタイトル通りの"0000/00/00"は確かに存在しない日付としてエラーになる。日付データとして提供してるんなら、何らかの意味の…

データベースへの変更

昨年末から続く身体的な問題。2週間程前にやっと退院したと思ったんですが、先週末に仕事中に腹部にまた異変があり、週明け月曜日に病院に行くと、昨年末の右鼠径ヘルニアよりも若干下になる右大腿ヘルニアとの診断で、水曜日に再手術となり、まあ、本日無…

C#のLINQ to Entitiesで複数のソート

C#だろうとVBだろうと、まあ、そもそもSQLは素人レベルだけど、なんとなくだけど、ここまで40年以上プログラミングしてたりすると、ある程度予測が出来たりしてイメージして、それをLINQ的に書いてみたりしてるんですが、LINQにはクエリ式とメソッド式がある…

C# Version 10諸々

今週月曜日に人生初の大腸カメラの予約をしてたんですが、病院の指示通りに前日日曜日には3食指定の食事をし、下剤を服用して就寝し、決められた時間に病院の指定場所に入り、2時間掛けてニフレック2リットルを飲みきってまあ、実際には空腹でハイペース…

TreeView

データベース登録処理はほぼデバッグ完了。巨大なDBファイル抱えたプロジェクトはバックアップも大変orz バックアップする場所も以前は無料クラウドに可能だったけど、このサイズは辛い。Googleドライブになんとか入れてるけど、余力が無くなった。 開発は次…

巨大DBファイルの最適化

ふと、2回目のフルセットアップで出来た65GBのSQLite3のデータベースファイルに最適化してないな~っと思い、最適化するコーディングを追加。本日早速試してみるが、最初の1時間以上はなんも動きが見れず、ダメかな~っと放置。1時間半過ぎた位だったか、…

NOT NULL constraint failed

ちと記憶が曖昧ではありますが、多分大晦日からこのエラーで悩んでました。基本、こちらのミスの筈なんですが、ひとりでじっとソース眺めてるとなかなか見つけられず、色んな事を疑う(笑) テーブル名があまりにも長いからかな~っとか、NuGet不足かな~っと…

RichTextBoxをログ表示用に

Visual Studio Community 2022でのデバッグも大分慣れてきました^^SQLiteへのデータ登録処理のログをRich Text Boxに表示してるんですが、VSC2019と微妙に動作が違う気がする。そもそも、ログ表示用で入力は受け付けないのでReadOnlyプロパティはTrueにしま…