敦賀延伸

ぶっちゃけ、名古屋方面は、地元からだと東京周りのほうが速い

安さでいけばしなのだけど。

地元→名古屋(敦賀経由)

- 始発 07:49発→12:25着 (敦賀からしらさぎ、米原でひかりに乗り換え)
- 終電 18:53発→23:05着 (敦賀からしらさぎ、米原でこだまに乗り換え)

名古屋→地元(敦賀経由)

- 始発 07:53発→12:12着 (米原までこだま、敦賀まで北陸本線(普通)に乗り換え)
- 終電 18:19発→23:45着 (米原までひかり、敦賀まで北陸本線(新快速)に乗り換え)

地元→名古屋(最速)

- 始発 05:46発→09:31着(東京周り新幹線)※鵜方には11:54着
- 終電 19:25発→22:57着(東京周り新幹線)

名古屋→地元(最速)

- 始発 06:51発→10:23着(東京周り新幹線)
- 終電 18:40発→22:31着(松本周りしなの)
-※本当の終電 終電 19:40発→23:45着(松本周りしなの)※鵜方17:05発

※すべてNAVITIMEで調べた(2024/3/17時点の情報)

新幹線だとちょい高いんですよね
安さで行くと在来線特急なんですが

まぁ、京都・大阪方面は夜行バスっていう手もあるんですけどね。京都に朝5時ごろ着くし。(たぶん)
ちなみに地元←→新大阪 で調べてみたら、東京経由の新幹線が最速ですね。やっぱり。
日をまたいでもよければ、帰りは大阪からサンライズで、っていう方法も。これならゆっくり関西方面観光できそう。

なんで鵜方かって?スペイン村でンゴちゃんコラボやってるからだよ!!行きたい!!

でも日帰りだと滞在時間6.5時間くらいしかなさそう

SCOOBE

Windowsを起動すると出てくるアイツ

Windowsを起動して、最近出てくる、OneDriveにバックアップしましょうとか、Windowsの設定をうんたらかんたら、ってやつ。
初期セットアップのOOBEに対して、SCOOBE(Second Chance Out-of-Box Experience)というらしい。
こいつを止める方法は以下。
forest.watch.impress.co.jp
窓の杜で紹介されていたので、こいつを設定するか、レジストリで設定すれば解決、らしい。
PCキッティングするときにあらかじめレジストリぶち込んで設定しちゃいますかね。BitLocker無効化と一緒に。
BitLockerも、いきなり回復キーが要求される画面が出てくる様子(たとえばUEFIを更新したときとか、Secure Bootのキーが更新されたときとか)。回復キーを控えてない場合、完全に復旧できない(データ復旧業者でも復旧できない)ので注意。
eset-info.canon-its.jp

休日使って2日間格闘してた

MagicOnionを業務で使う

MagicOnionは、基本的にUnity+.NET(C#)で使われるんですが、主にゲーム(Unity)で使われるライブラリなのでめっちゃ速い。
サンプルコードもめっちゃUnity(クライアント)+C#(サーバー)が多い。
Unityなしでなんとか使えるようにならないか。MagicOnion使って業務アプリを構築できないかと試行錯誤してみた。
github.com

今回の環境は

  • Visual Studio 2022
  • .NET 6
  • サーバー側はコンソールアプリケーション
  • クライアント側はWindows Form アプリケーション
  • DBアクセス先はSQL Server 2022
  • DBとの接続はDapper

そんな環境。

ハマったところのまとめ。

Dapper.FastCRUD.ModelGenerator でマッピングするクラスを生成していると、MessagePackのMessagePackObject属性が付かず、MessagePackを使ってそのままORMクラスをクライアント側に渡すことができないっぽいので、データを橋渡しするためのクラスを一つ作って間に挟んであげるとうまくいく感じ。

T4テキストテンプレートを改造してみたけど、ちょっとでも変えると動かなくなる。自動生成したクラスに、手動で [MessagepackObject] とか [MessagePack.Key(0)] とか追加すると、今度はDapperがおかしくなる予感(たぶん)。

また、Dapper.FastCRUD.ModelGenerator はapp.config(XML形式のconfig)を参照するのに対し、.NET 6 のConfigManagerはJSON形式のappsettings.json を参照するので、両方設定しないといけないのが面倒かな。

Dapperでアクセスする先のDBのテーブルに、スネークケースなテーブル名やフィールド名があると、うまくマッピングしてくれないので、その時は、Dapperのクエリを飛ばす前に、

Dapper.DefaultTypeMap.MatchNamesWithUnderscores = true;

を入れてあげると、ちゃんとマッピングしてくれる。
都度入れるとめんどくさいので、SQLクエリ発行用のクラスとメソッド作ってそこでやるか、オーバーライドすればいいのかな(よく知らない)。

…Dapper、なんであんな仕様なんだろ。前はスネークケースでもちゃんとマッピングしてくれたはず…

サーバー側の起動に関しては以下のGistを参照。
特にポート番号等の指定はなさそうだけど、既定だとポート5000で起動する(待ち受けIPアドレスとポートはコンソールに出力されるのでそこで確認)

MagicOnion Server Startup

クライアント側はフォームにボタン貼り付けて、そこのイベントで接続処理するか、フォームのコンストラクタで接続してあげるといいかも。
接続方法は

MagicOnion Client Connection
こんな感じでgRPCのチャンネルを上記のホストとポート名に設定してあげて、作成したIServiceを継承したインターフェイスに対してMagicOnionClient.Create してあげるといいかも。

切断…はコード書いたんですけど切断してくれてるのかなぁ…
まぁアプリ終了すれば切断されるから、今のところ、それ任せにしてるけど(たぶんよくない)。

--余談--
初めてインターフェイスを書いた。

VS2022で、T4テンプレート使う時に、アセンブリの競合が発生する

Dapper.FastCRUD.ModelGenerator を使って生成するときにこのエラーが発生してて、1~2週間ぐらい悩んでたんだけども、ふと今日検索してみたら、StackOverflowに答えが載ってた。
stackoverflow.com

EnvDTEと、Microsoft.VisualStudio.Interop で、DTE っていうアセンブリが競合してるらしい。
https://stackoverflow.com/a/69977332 の通りに、

I found the file that was adding the EnvDTE assembly

<#@ assembly name="EnvDTE"#>

and changed it to

<#@ assembly name="Microsoft.VisualStudio.Interop"#>

and that resolved my issue.

って書いてあったので、修正したら直った。

ひさしぶり

ffmpegを使って、特定フォルダのMP4なファイルを一括エンコードするPowerShellスクリプト

車に乗せてるカーナビが、10年以上前のGorillaで、動画再生が320x240、30fps、ビットレート1Mbps までしか対応してなくて、今までは変換にakj_betasを使ってたんですが、Java6でしか動かないらしく、手元のWin11だとそもそもJava6入らないし、ダウンロードサイトもないし(OTN経由でダウンロードできそうだけど、Oracleあんま好きじゃないのと会員登録がめんどくさかったのであきらめた)、で、いっそのことffmpeg使って専用のPowerShellスクリプト書いてしまえ、と。


カーナビ用(320x240/MPRG4/AAC-LC/1Mbps)に動画を一括変換するPowerS…

パラメータに変換元データがあるフォルダを指定する(ファイルじゃないよ!)と、自動で指定されたフォルダの中にCarnaviフォルダが作成され、そこに変換されたデータが格納されます。
まぁスクリプト内にパラメータを変数で設定してるので、そこを見ればカスタマイズ可能かと。
変換対象にする拡張子とか、ffmpegのオプションとか。

生存報告

Windows 10をローカルアカウントのみで使っていると、突然青い案内画面が出てくるアイツの対処法

某所に貼ったメモをそのまま貼り付け。

OOBEっぽい画面が突然表示され、MSアカウントの作成を要求され、キャンセル方法がない場合(ローカルアカウントで使用中に、MSアカウントを作成して紐付けしたくない場合)

  1. CTRL+ALT+F10(なんの効果かは不明:)
  2. CTRL+ALT+ESC(タスクマネージャー開く)
  3. プロセスタブから「Microsoft アカウント」または詳細タブから「wwahost.exe」を見つけて殺す

参考:
support.microsoft.com

インストール直後のOOBEで、ローカルアカウントを作成したいのに作成できない(MSアカウントを作成して紐づけしたくない)場合

  • 最初にネットワークに接続しないでセットアップ処理を続ける
  • もしネットワークに接続してしまったら
    1. LANケーブルを抜くか、無線LANをOFFにする(=PCがネットワークに接続できないようにする)
    2. MSアカウントの作成画面になったら、左上の←をクリックする、あるいは、適当なMSアカウント(example@example.com みたいなの) でログインしようとするとエラーが出る。
    3. ローカルアカウント作成に切り替わる

たぶんこれでできると思います。
(1回しかやってないからわからない)

今週のお題「いも」

インカのめざめが好きです。インカルージュってのもあるらしい。あとはジャガイモだったらなんでも。さつまいもは嫌いではないが率先しては食べない。

技術書典8→技術書典 応援祭へ

運営から技術書典8の開催中止と「技術書典 応援祭」への変更の連絡がありまして。(ここに書くの遅くなった)

blog.techbookfest.org

今回は応援祭への参加に切り替わりました。
頒布物は変わらず、前回上げた2冊です。

ただし、物理の販売はせず、電子書籍版のみの販売になる予定です。

(入稿した翌日に開催中止の連絡が来るなんて、急遽入稿キャンセルしちゃった…)

次回開催(技術書展9)にはGPSロガー本のVer/2が出せたらいいな。