五十谷の読み方は「いさだに|いかだに|ごじゅうだに|いそや」

内容は読む必要ない。 とりあえず読めなかったのでメモ。地名は主に3つの読みがある。 地名 福井県の五十谷(いさだに) 富山県の五十谷(いかだに) 石川県の五十谷町(ごじゅうだにまち) 人名(いそや、いがたに) 地名 福井県の五十谷(いさだに) 福井…

【C++/CLI】System::String^をdouble/intに変換する

まず前提は以下の通り。 // これは .NETの型 System::String^ str = "10;" // こっちは .NET/C++(CLI)共通で使える型 double d = 0; 変換に使うメソッドはいくつかあるのでそれぞれの使い方です。 System::String^ str = "10"; double d = 0; int i = 0; // …

【UniRx】MessageBrokerの使い方

UniRx に付属しているプロセス内の簡易型の広域メッセージ送受信ライブラリのMessageBroker の使い方の紹介です。 最近は MessageBroker の代わりによりモダンな MessagePipe というライブラリもリリースされていますが、Unity で単一シーン、簡単な UI しか…

【SQLite】ジャーナルがwalのDBを更新しても内容が変わらない

ものすごい単純な事だけどハマってしまったのでメモ。 INSERT したはずのレコードがなぜか SELECT * しても見えない問題が発生しました。 条件 Windows環境 自分より高い権限が必要な領域にDBファイルを配置している ジャーナルモードはwal 操作内容 管理者…

【UniRx】MessageBrokerを拡張する(Pub/Subの型指定)

UniRx に付属しているプロセス内の簡易型の広域メッセージ送受信ライブラリのMessageBroker をちょっと拡張してみようと思います。 拡張内容 (1) pub/sub は型指定したい (2) 直接 Subscribe したい (3) MessageBroker には触らないで拡張する 確認環境 Unit…

【Unity】タッチ処理の実装(エディタ、実機両対応)

【Unity】スマホとPCの両方のタッチに対応する PCのクリックとスマホのタッチだと実は検出の実装方法が違うとのことで調べてみました。スマホ向けアプリを製作していてエディター上で動作確認しているシーンを想定しています。 // ★PC // 左クリックが押し込…

【C#】.NET CoreでMagicOnion+IPC通信を試す

タイトルの通り gRPC のライブラリである MagicOnion を使いつつ IPC(プロセス間) 通信したいと思います。 ちなみに、MagicOnion を使うと WCF を使った RPC の API 呼び出しのワークフローと極めて似た感じで実装できるようになります。特に proto からの型…

Odinでオプションが有効(or 無効)の時だけメニューを表示する

Unity の Editor 拡張が簡単にできる有料アセット「Odin Inspector and Serializer」で、ある bool 型の変数値が true(or false) の時だけインスペクターに表示されるメニューの作成方法です。 以下のスクリプトをオブジェクトにアタッチします。 using Sire…

Twitterの表示回数を非表示にする

ここ最近で一番最悪の変更が来ましたね。その名も「表示回数(ViewCount)」と言うらしいです。 こんな指標に付き合ってると承認欲求で頭がおかしくなる or 気にして気軽に使えなくなるので自分の見える範囲はサクッと非表示にしておきましょう。 動作環境 Win…

【Unity】Vector3(構造体)に自分自身の値を変更する拡張メソッドを定義する

Unity の Vector3 (Vector2 など構造体)に自分自身を書き換える処理を追加する拡張メソッドの定義方法の紹介です。 前提として以下のように Vector3 に拡張メソッドを定義して値を変更しようとしても値は変わらない事を確認します。 public static class Vec…

【Unity】メモリの改ざんを防ぐ機能を実装する

アプリなどでメモリ上に保持してる値って外部ツールで割と簡単に読み取ったり変更されてしまうんですよね。変更したときにどのアドレスに保存されているみたいな位置を特定されると実行中に値を書き換えられてしまいます。 そこでこれらの行為を防止するため…

【C#】メモリにファイルの内容を展開せずにAESで暗号化する

以前にデータを AES 暗号化する方法を紹介しましたが、実装例が何らかのデータをアプリのメモリ上に byte 配列として全部に読み取った内容を展開してから AES 暗号化する方法でした。 この方法だと、例えば 1GB のファイルを暗号化しようとすると1GBぶん全て…

【Unity】StreamingAssetsからテキストを読み取る

Unity の StreamingAssets に置いたファイルを読み取る実装例です。 Android と WebGL は特別な処理が必要だそうで UnityWebRequest を使ってデータを読み取るようです。それ以外のプラットフォーム(iOS, Windows, デバッグ中のエディタ上)では普通にファ…

【Unity】パララックス(多重スクロール)を実装する

Unityの2Dの表現で視差の効果を使ったパララックスのスクロール(Parallax)を実装例を紹介したいと思います。かつてレトロゲームの背景スクロールでよくありましたね。 この表現方法は、スクロールの速度が奥のほうがゆっくりで手前ほど早くスクロールする…

WF-C500はホワイトノイズがやばい

SONY のエントリーモデルのワイヤレスイヤホン WF-C500 を半年使用したので感想を書きたいと思います。 結論 WF-C500 を買ったのは大失敗でした。 マジで何でこんなクソなの買ってしまったんだろう… 2022年の1月に買って12月まで使ってましたが我慢の限界で…

JAN,FEB/MAR... 英語の月の略語

英語で各月の略号は3文字の短い形式があります。 以下表の通り各月は3文字の大文字で表されます。 月 英略 英 01月 JAN January 02月 FEB February 03月 MAR March 04月 APR April 05月 MAY May 06月 JUN June 07月 JUL July 08月 AUG August 09月 SEP Septe…

ObservableCollectionの要素の変更通知を受け取る

ObservableCollection でコレクションに格納されている要素の変更通知を受け取る方法です。 単純に Add されたときに要素に PropertyChanged を設定するだけでは全く考慮が足りないため現実的に子要素から通知を受け取る実装を考えたいと思います。 確認環境…

【Twitter】古いいねの消し方

注意: 全体的に Twitter の挙動が意味不明なせいで記事の内容も良く分からない感じになってます。こんな事もあるんだなー程度で読んでください。 Twitter の古いいねの消し方です。何年も前の数万件もいいねがある場合、Twitter の動きがかなり変なので作業…

ObservableCollectionの変更イベントの挙動を確認する

ObservableCollection は List に似た機能を持ってるクラスで、要素を追加したり削除したときにイベントが発生する機能を持つクラスです。この発生するイベントは、WPF とか UWP みたいな XAML 環境は MVVM が標準でサポートされているので、各コントロール…

PowerShellからC#を実行する

PowerShell 構文を使って .NET のライブラリ使いながらスクリプト書と多少面倒な時があり C# で書けないかと思ったのでそのやり方の紹介です。PowerShell の中で C# のコードを書いてスクリプトを実行する方法の紹介です。 また別のところで作成した .NET の…

【C#】リフレクションでオブジェクトの値を列挙する

C# のリフレクションという機能を使用して任意の型の内容、public なフィールドとプロパティをすべて列挙してみようと思います。 リフレクションを使用するので、特定の型のメンバーを認識したうえでフィールドやプロパティの名前を指定して列挙するのではな…

【C#】SQLiteでクエリー結果の列名を取得する

SQLを発行した結果の列名を取得する方法です。 DbDataRecordからSchemaInfoを取得して列名と型を取得しようと思います。 C#でSQLをダイレクトに実行する場合、コネクションを取得しコマンドを発行した後、SqliteDataReader で結果を読み取るのが一般的です。…

ラムダ式はデリゲート型ではないためDelegate型に変換できません

Windows フォームなんかの古いライブラリで引数が Delegate のメソッドにラムダ式を書いたりすると「ラムダ式 はデリゲート型ではないため、'Delegate' 型に変換できません。」と怒られます。 // こんな風に書くと怒られる public partial class FormMain : …

【C#】ファイルダウンロード時の連番のファイル名を作成する

よくブラウザでファイルをダウンロードしたときに既にそのファイルがあった場合、末尾に(1)、(2)...という風に連番が付いた別のファイルが作成されます。 // こんな風に連番が自動的に作成される Sample.zip Sample (1).zip Sample (2).zip これを C# で同じ…

【C#】再帰構造を別の再帰構造に変換する

あるオブジェクトが自分自身をメンバーに持つ、子要素を無限に繰り返して持てる構造を再帰構造とか再帰データと言います。 // 自分自身をメンバーにもつ構造 ClassA + ClassA + ClassA + null // 終端はnull こういう再帰構造をもつオブジェクトを別の再帰構…

【C#】ZipArchiveでフォルダを扱う

.NET の Zip を扱うための ZipArchive クラスってファイルを zip に追加するための「CreateEntryFromFile」はありますが、フォルダを扱う「CreateEntryFromDireocty」みたいな操作はありません。 普通に使用したらすぐ必要になるので、ZipArchive でフォルダ…

【ASP.NET】大容量ファイルのダウンロード&C#での保存方法

C# の ASP.NET Web API で大容量ファイルをダウンロードする方法です。 ファイルの内容全てbyte配列としてメモリ上に展開しクライアントに応答するとファイルの内容分のメモリがリクエストごとに必要になります。ある程度のサイズなら問題にならない事もあり…

明示的なインターフェイスの実装の使いどころ

C# には「明示的なインターフェースの実装」という言語仕様があります。 使い方 使い方はシンプルに以下の通り。 同じメソッドを持つ複数のインターフェースの実装を別々に実装することができます。 // 同じ名前を持つ2つのインターフェース public interfac…

.NET 6でWindowsサービスを作成する

.NET6 でWindow サービスを作成する方法の紹介です。 確認環境 作成と動作確認環境は以下の通りです。 .NET6 VisualStudio 2022 Windows11 プロジェクトの作成と準備 まず「ワーカーサービス」プロジェクトを「MyService」という名前で作成します。今回はト…

TeamsのOfficeファイルをローカルのショートカットから開く

Teams 上にアップロードした Excel, Powerpoint などのファイルへのショートカットを作成してデスクトップから開く方法です。 この方法で作成したショートカットは Teams 上の共有ファイルを直接を開くことができます。 この方法でショートカットから開くと…