2023/05/01

突然のPC起動不能

 本日普通に朝起きてPC起動する。スマホ見たりしてたので、ふと、モニターに目を向けるとASUSマザーのロゴのままで、ん?リセットボタン押して再び試みるもやはりマザーのログで止まる😖まあ、今年8月で丸5年になるPCなのでそろそろ問題あっても不思議はないものの突然のトラブル。昨日まで新たに入れた2つのソフトが数日ぶっ通しでセットアップ作業していて、これが無条件に起動ドライブにインストールされ、そこにデータベース構築とかねぇ。しかも、数日動かして予想すら出来ない状態のまま、なんだこれ?って感じのソフトでした。やはりインストール先が指定出来ない様なソフトは入れないのが吉かも。いや、別に犯人が確定してる訳じゃないので...あくまでも怪しいってのとトリガー引いたかな~ってね。

まあ、そんなんで、今朝からOSのクリーンインストールとなり作業してます。SSDが年数的にも微妙な気はするけど、それ言ったら3つ繋いでるHDDなんかはそれ以前から使っていてるものなので、それらもねぇ。更にPCだってと考え出したらきりがないです。おいおい、予算組んで検討しなきゃですね。

追記
書き込んで確認すると4月30日ってorz 今日は既に5月1日です。なんだろ?このグーグルのブログシステムが前にも日付違ってたりしたんだけど原因不明です。

2023/04/30

バッファロー SSD-PUT1.0U3-BKC

 先日microSDとカードリーダー購入して20MB/s程度速度でコピーしていて、まあ当たり前ですが遅いなぁっと😒で、SSDならもう少し早いかな~っと事で購入してみた。結論から言えば、42MB/s程度で倍のスピードは出るもののやはり遅いなぁっと😔 1TBで7,835円でした。

元気なうちに色々溜まってるデータを整理して子供達の写真や動画をなんとか出来ればと思ってますが、どうするべきか未だに悩んではいます。その昔CDに焼いたりDVDに焼いたりと今ならブルーレイに焼くなりすれば良いのか、ディスクに焼くのは安く済むけれど手間が掛かるのと相手もドライブが必要になる。今後ドライブの無いPCが主流になったらと考えるとmicroSDとか今回購入してみたUSBなSSDとかの方が良いのかな~っとね。

2023/04/28

ちょっとした節目

 本日現役としての勤務を終了しました。やれやれです。でも、来月20日までは有休消化で在席状態で来月分の給料まではもらえますが、65歳の年金支給までまだまだ働かなきゃ生活出来ません😫 なので明日には次の仕事の面接とか決まってるんですが、採用されなければハローワークに行って可能性を探してくる予定。

そんな節目もそうなんですが、もう何十年か続けたポイ活の2つのサイトに決別をしました。いや、それでもまだ4つ残ってますし、Microsoft Rewards入れると5つなんです。今後更に厳選して絞り込んで負担減らそうかとは思ってます。まあ、現役退いたのでね😉

で、先日も書きましたがJRA-VANの今年の仕様変更に伴い新仕様に対応しないアプリはアウト!って事で、何十年も使い続けたカツラギも消しちゃったので別のを入れてみようと3つ程入れてみました。まあ、厳密には先週既に1つ入れて、更に2つ増やしてみたんですが、先週1つ入れた時に今回入れた2つは除外した理由は、インストール先の指定が出来ないとか😖 システムツールとかならあれですが、一般アプリでインストール先固定で勝手にCドライブに入るとかマジで受け入れがたいんですが、近年のアプリ動向の把握の為にも入れてみました。更に驚く事に1つは説明で初期セットアップで数日掛かるってorz いやね、自分自身も当初フルセットアップに14時間とかでしたから分からないでもない。でもね~、もう少し努力して欲しいかなっと。セットアップ終えて内容次第では2度目はないかな。もう1つも12時間以上経過しているけど未だやってるので...

まあね、馬券生活なんか夢見た頃も無くはないけど、現実的にはねぇ。それでも、可能性にはちょっとだけこの節目にも色々と試してみます。

2023/04/20

この夏JV-Linkの仕様が変更される

 先月時点で開発者メールで案内は来てましたが、最近JRA-VANの掲示板に投稿があったりで対応進める事にしました。まあ、手本的には生産者コードの6→8桁かと繁殖登録番号の8→10桁の変更がメインで生産者関連は名前の70→72バイトもある。こんな案内だったので予想にはあまり関係ないからおいおい確認するかって程度の認識でいたが甘かった。この変更に伴い、JV-Linkバージョンアップして新フォーマットでのリクエストからのデータ受信になるので未対応ソフトは当然NG。別に予想のメインとしては当の昔から使ってませんでしたが、参考にはしてたカツラギ。作者さん他界してもう何年か経ちますが当然対応される事はないので削除する事にしました。ダビジェネはそもそもJV-Link以前のソフトなので旧仕様データ作成して読ませてるのでこちらは問題無し。

で、対応してる最中なんですが、ここに来て今更な事に気付く😮 血統登録番号ってそもそも以前から10桁なんですが、これをC#でint型で使ってるミスを発見。いや、これ、実はint型って「-2,147,483,648 ~ 2,147,483,647」なんですが、血統登録番号って頭4桁は西暦なんです。で、今年が西暦2023年なのでエラーにならずに済んでました。まあ、西暦2146年まではエラーにはならないけど、今回の繫殖登録番号の変更でint→longにって作業してて気が付くとかねぇ😓 まあ、なのでついでに修正しちゃわないとって事で大掛かりな修正作業となりますが、来週末から長期休養予定なので一気にやろうかと。

SanDisk microSD 512GB Ultra Class10

 USBメモリやUSBなSSDと迷いましたが、取敢えず今回はmicroSDでPC内に溜まってる子供達のビデオデータをバックアップして子供達に渡そうかと。いや、本来ざっくり動画編集してDVDなりブルーレイなりに焼くのがベストだとは思うけど、その時間と労力がね~orz 息子の誕生あたりのは以前にやったんですが本当に大変な作業で素人がやった訳であまり褒められたものではなかったので、それ以降やめてます。

あっ、で、購入してUSBカードアダプタに刺して認識確認すると476GB。まあね、まるまる512GBと認識されるとは思ってませんでしたが許容範囲内かな。今回の購入に際してちょっとよさげなatolla SDカードリーダー 2-in-1 USB3.0 Type C カードリーダーも購入してるんですが、こちらはまだ到着してない😓 このカードリーダーが届けばもう少し違ってくるとは思うけど、既存のUSB2.0程度のカードリーダーなので滅茶苦茶遅い。更に、購入してそのまま試すとエラーが出た。ん?と、まあ、フォーマットすらしなかったからなぁっと思いWindows11のエクスプローラーでドライブ右クリックからの「フォーマット」から行う事に。なんか、その昔にはPanasonicのフォーマットアプリを使った記憶もあるんだが、OS標準機能でする事にしたんだけど、そこでフォーマットはNTFSかexFATか選択するんだが、どっちが良いのかアイビー先生に尋ねると、使ってるOSでWindowsならNTFS、マックならexFATだと教えて頂いたが、なぜかこのフォーマット機能はWindowsのエクスプローラーからなのにexFATが既定だと😟 クイックフォーマットでNTFSにしてコピー開始すると今度はエラーは出なくなり、でも、いつ終わるか...既に開始してから20~30分は経過してると思うが0%でプログレスバーはミリ程度と変わらないから根気強く待つのみ。

参考までに今回は4,649円での購入でした。カードリーダーは2,074円です。

追記
コピー全く進む気配無いので詳細情報表示してみると153GBコピーするのに残り2日とかorz 即キャンセルしましたが、このキャンセルも時間掛かる模様。速度111KB/sとか出てるのでこのリーダーでは無理っぽいので発注済みのリーダー届いたら再トライします。

追記 2023.4.23
無事にカードリーダーが到着して早速コピー開始すると、やはり全然違います😃 速度20MB/s程度で残り2時間弱なので無事に終わってくれそうです。この辺りが次回以降にUSBなSSDなんかも検討する必要性が出てくる感じなのかも😕

2023/03/29

Microsoft Rewards 4回目

 前回は2023/1/26なので2ヶ月と3日。前回3回目にも同じだったのでこれがやり続けると達成出来る期間なのかなぁ。ただ、マイクロソフトEdgeボーナスは毎日最大12ポイント。パソコン検索(90)とモバイル検索(60)もあるから、毎日達成すればもう少し短縮は出来なるのかも。デイリーストリークは234日は。365日も見えてきたかな😄

これ、毎日頑張ると日々のセットで最低30、その日によってボーナスクイズで+20なんですが、確定ではないのでカウント外にするとして、10日毎のデイリーストリークボーナスが150なので15/日として検索ボーナスが12+90+60なので合計207は確定とすると最短26日でアマゾンギフト600円なので23円/日のポイ活ですが、検索ボーナスのEdgeボーナスはあっという間の4回の検索で達成出来ますが、PCとモバイルをフルにもらうのはキツイかも。自分自身は現状がベストなのでこれを続けられる様にやっていこう😜

2023/03/26

DataGridViewでの謎

 徐々にC#でのコーディングも慣れたり、コントロールの使い方もボチボチなんだけど、以前も謎な現象がDataGridViewで逢ったんですが今回もかなり苦労した。

そもそもカラムが何とかだとSortModeはAutomaticらしい。なので、実際普通にカラムヘッダークリックすればソートされ、もう一度クリックすればソートが逆にって感じだったんです。で、その方向が表示されれば良いなって事でアイビー先生に訊ねるとAutomaticにすれば表示される的な回答で、はて、既にAutomaticでも表示されないので色々と試す。

結論として、最初から自動だと表示されてなかったとは思うが、今となっては戻すの面倒なので確認しませんが、ColumnHeaderMouseClickイベントに追加で該当カラムのヘッダーセルのSortGlyphDirectionに現在のSortOrderをセットして解決するべくコーディングしたり、そもそも、表示したいヘッダーに十分な幅が無いので広げたり、で、フォームのデザイン画面から幅いじり出したらその昔に苦労させられたバグに遭遇。いじったカラムも設定値にならないし、他のカラムもなんか変なサイズになったり、ヘッダーの高さまで変わる始末orz まあ、幅や高さをフォームのLoadイベントで全て設定する様に変更しました。で、このグリム何故かヘッダーの高さを33以上にすると表示される。32では表示されない。

private void dvg_ColumnHeaderMouseClick(Object sender, DataGridViewCellMouseEventArgs e)
{
    DataGridView dgv = (DataGridView)sender;
    DataGridViewColumn sortedColumn = dgv.Columns[e.ColumnIndex];
    sortedColumn.HeaderCell.SortGlyphDirection = dgv.SortOrder;
}

2023/03/11

WebView2のSourceプロパティ

 懸命にアイビー先生(BingのAI検索なのかな)に質問し、WebView2の実装時の再確認してました。まあ、そもそもWebView2コントロールも理解せず、C#の理解もまだまだな状態で進めてますので何が良くて何が間違ってるとかの理解が無いまま、猿真似でコーディングしてますが😅、フォームのデザインから見直しして作り直し。

ここまでポップアップする入出金時の部分をWebView2を2つ用意して、フォームに2つ並べておいたのですが、これを同じ位置に重ねておき、ポップアップ時に2つ目のVisibleをTrueにして終わったらまたFalseにしてフォームのサイズダウンをした。更にどこぞのサイトのSourceプロパティにデザイン時に設定しておくと出来ない事がある的なのが頭の片隅に残ってたので、この対処も含めフォームの根本的な作り直し。で、ついでにだらだと書いてたプロセスも子プロセスにして視認性の向上をしてみた。で、この際にここまでの間違いも発見。どこのサイトを参考に書いたかはもう覚えてないけど、

webView2.CoreWebView2.ExecuteScriptAsync($"...");
await Task.Run(async () =>;
{
    // 読み込み完了まで待機
    if (condition2.Wait(wait_time))
        timeout_err = false;
    else
        timeout_err = true;
});

としてたんですが、"Task.Run(async () =>"ではなく"Task.Run( () =>"にする。更に、ExecuteScrriptAsyncの行にもawaitをつけてみた。つまり、

await webView2.CoreWebView2.ExecuteScriptAsync($"...");
await Task.Run(() =>;
{
    // 読み込み完了まで待機
    if (condition2.Wait(wait_time))
        timeout_err = false;
    else
        timeout_err = true;
});

って感じです。で、子プロセス化する際に

private async Task<bool> Child_Process()
{
    bool timeout_err = false;
    //ここにExecuteScriptAsyncとTask.Run()を
    return timeout_err;
}

って感じに書き直しました。呼び出し側は、

Task<bool> taskChild_Process = Child_Process();
timeout_err = await taskChild_Process;
if (!timeout_err)
{
    // 続行する処理
}

としてみた。

2023/03/05

自分の技量に見合うのはWebView2のみかもorz

 AngleSharpもHttpClientも現在の自分には無理orz 何をどうしたらいいのかとか何が悪いかが見当もつかない状態なので終わりです。で、元鞘?(笑) WebView2は分かり易さは他2つとは別次元で分かり易い。BingのAI導入でグーグル先生よりも頼りになる事も多々ある😉 最悪の事態は放棄して誰かが作ったツールに乗っかるんですが、今はまだそこまでは妥協しないで進めます。

WebView2自体は悪くはないし、分かり易いです。Bing先生に質問すると的確な答えも得られたりします。って事は、まあ、ネット上にノウハウが有るんだと😁 つまり、多くの方が利用して情報提供してるんだという事ですね。

今回得た情報は選択ボックスでの指定方法ですが、

<select id="bet-basic-type" ng-model="vm.oSelectType" ng-options="oType as oType.name for oType in vm.oaType" ng-change="vm.changeType()" class="ng-pristine ng-valid ng-not-empty ng-touched" aria-invalid="false" style=""><option label="単勝" value="object:3215" selected="selected">単勝</option><option label="複勝" value="object:3216">複勝</option><option label="枠連" value="object:3217">枠連</option><option label="馬連" value="object:3218">馬連</option><option label="ワイド" value="object:3219">ワイド</option><option label="馬単" value="object:3220">馬単</option><option label="3連複" value="object:3221">3連複</option><option label="3連単" value="object:3222">3連単</option></select>

みたいに、どの選択肢なら"value='object:????'" 的な事が分かるので

document.querySelector('???').value = 'object:3215';
document.querySelector('???').dispatchEvent(new Event('change'));"

をExecuteScriptAsynciにて指定すれば良い事が分かる。

2023/02/27

記憶力の低下がね~

 若い頃はとかって話をする時点で爺確定なんだけど、まあ、還暦までもう3ヶ月切りましたので否定はしない😃 未だにC#の事を勉強(?)しながらプログラミングしてるのですが、グーグル先生に沢山教えてもらっても直ぐに忘れる。で、またググるorz まあ、そんな感じなんでここに記録してるんですが、任意の型宣言で重宝するのがタプル型。これも少し前に覚えたんですが、この「タプル」って言葉が思い出せない。タプルに説明はあるが、なかなか重宝して使っているのに記憶に残らない。

2023/02/20

データベース構造の見直し

 現在進めているデータベース設計はもう1年以上前からなんですが、当初から問題はあったんですが、先に進める為に特に手を加えずにいました。フルセットアップ(1986年辺りからなのかな)で登録内容をステータスバーに表示させる為に処理毎にApplication.DoEvent()を呼び出しているので14時間程度掛かる処理で出来上がるデータベースファイルは57ギガバイトとかの巨大なものです。これを最適化する処理は3時間弱とかだった。

先週ふとオッズ関連の作業してて、今のまま進めるのは得策じゃないと判断し、オッズ及び票数のテーブル設計を変更する事にした。これまでは開発当初利用してたコードファーストでのデータベース作成の名残で親子関係を持つテーブル構成で設計してたんですが、これがデータベースへの登録処理で大きな負担になっている事は分かっていました。更にこの親子関連のデータ項目保持の為にデータベースファイルが肥大化してるんだとの認識もしてました。
親テーブルに基本情報を持ち、子テーブルに個々の目のデータを入れる設計なので、単勝だとまあ最大18頭分のデータが子テーブルに入るんですが、三連単に至っては最大4,896個ものデータがレース毎に入る訳でこの可変なデータを1つのテーブルに収めるのが良いのか悪いのかが、データベースファイルとして基本的な事を理解してると思い判断してたんですがsqlite3を信じて決断(笑)。3日程度掛かる変更作業を夜勤明けにこなして週末のレースには挑める様に終わらせました。まあ、日曜日のレースはWIN5の1レース目の予想中に気を失って気が付いたのは夕方の全レース終了後orz まあ、フェブラリーステークスも1番人気→3番人気→4番人気の固い決着だし、WIN5も5万円台の決着なんで、当然そんな固い予想はしないので結果オーライでした😁

修正後の高速セットアップ(Application.DoEventの呼び出しは最小限に抑える)では今まで2時間程度だったのが1時間40分で済みました。出来上がったデータベースファイルは12ギガバイト程度までダイエットが出来、最適化に要する時間が7分弱とか! 色々な動作が機敏になる副作用があり、手間暇かけたかいがありました。今後はこのバージョンで開発進める事に。

2023/02/15

SQLiteでのDBNull.Value.Equals(value)

SQLiteでExecuteScalarで値を取得する際に

var value = cmd.ExecuteScalar();
if (DBNull.Value.Equals(value))
{
    // 存在しない
}
else
{
    // 存在する
}

としても上手く判定出来ない?デバッグ作業で分かったのは

if (DBNull.Value.Equals(value)
{
    // 存在しない
}
else if (value == null)
{
    // null
}
else
{
    // 存在する
}

とすると「存在しない」ではなく「null」になる。これが現在利用している環境のバグなのか仕様なのか謎だな!

追記 2023.2.16 18:25
Windows 11 Pro 22H2 ビルド 22621.1265
Visual Studio Community 2022 Ver. 17.4.4
Sysrem.Data.SQLite.Core Ver. 1.0.116

2023/02/11

やばいな~

 八方ふさがりです。自分の器量が足りないのか、webViewで程々に理解して進められてましたが、AngleSharpとHttpClientではここ数週間スタックしてますorz 自分の無能さに疲れる。

webViewでは基本的な部分は抑えられてるかと思います。どうやって調べてどうやってそれを実装するか。AngleSharpにしてもHttpClientにしても単純にサイトを読み込むのは出来るのですが、ログインさせる為の処理はまっくた進展出来ない。

どちらが最善なのかも全く比べる段階にも至らないorz それがEncordingがネックになっているのか、そもそものインターフェースが理解出来ていないのか。本当にやばいです!