shuhelohelo’s blog

Xamarin.Forms多めです.

Razor PagesでAjaxでPostする

Razor Pagesではページハンドラー(MVCでのアクションメソッド)をAjaxから直接呼び出せるため、別途MVCのWebAPIとして作成する必要はなく、ページモデル(cshtml.cs)内に書くことができる。 以下の例ではJSONデータを返すだけのシンプルなものだが、画像を…

Razor Pagesで同じプロパティに対してInputとhidden Inputがあった場合、どちらが優先されるか

タイトルのとおり。 ビュー側に同じプロパティに対してhiddenとそうでないinputがあった場合に、BindPropertyはどのような動作をするのかを確認する。そんなことはしないだろうけれど気になった。 結論:先に書かれているほうが優先される。 hidden inputが…

【Razor Pages】複雑なオブジェクトのGetリクエストのバインドはどうなる?

以下のようなオブジェクトがあったとして、 public class MyClass { public string Message { get; set; } } このようにBindPropertyを使ってGetリクエストでクライアントからデータを受け取る場合、 [BindProperty(SupportsGet = true)] public MyClass MyC…

【Razor Pages】SupportsGetについて

クライアント側からサーバー側にデータを渡したい場合、publicプロパティに[BindProperty]属性をつけることで、クライアントから送られてきたデータを自動的にそのプロパティで受け取ることができる。 これによって、Httpリクエストのリクエストボディからデ…

MAUIでバックグラウンド(非アクティブ時でも)で処理を継続する(Android編)

はじめに この記事は,以前にXamarin.Formsで行った「アプリケーションが非アクティブの状態でも動作を継続させる方法」のMAUI版です. 結論から言うと、個人的な趣味でメッセージングにCommunityToolkit.MvvmのWeakReferenceMessengerを使うようにしたぐらい…

Xamarin.FormsでBackgroundタスク

https://robgibbens.com/backgrounding-with-xamarin-forms/robgibbens.com www.youtube.com この記事と動画のとおりにXamarin.FormsでAndroid,iOSの両方でBackgroundタスクを実行するテストを行った. MessagingCenterを使用し,以下を行っている. Android,iO…

MAUIでQRコードを読み取る

こちらの動画の内容をやってみたメモ。 www.youtube.com ZXing.Net.Mauiをインストール github.com NugetパッケージマネージャでZXing.Net.Mauiを検索する。 このパッケージは現時点ではプレビューなので検索欄の右側のInclude prereleaseにチェックをつけて…

MAUI:ボタンの有効無効を条件で切り替える

devblogs.microsoft.com CommunityToolkitを使っています。 CommunityToolkitを使うとこれまで(Xamarin.Forms)ではたくさんの定型的なコードを書かなければならなかったところが、クラスやプロパティ、メソッドへの属性の指定で済むため、実装の労力を大幅に…

MAUI:画面遷移時のデータの受け渡し

画面遷移のとき、遷移先にデータを渡したいことがあります。 画面Aで選択された内容を画面B側で表示したい、とか、画面B側での処理に使いたい、といったようにです。 MAUIのShellアプリケーションではURIベースのナビゲーションを使います。 WebサイトのURL…

MAUIでCommunityToolkit.Mvvmを使ったPubSubメッセージング

参考 www.youtube.com メッセージングとは 送信側と受信側がお互いを意識しないで(依存しない)データのやり取りを行う仕組み、なのかな。 送信側は受信側のことを考えることなく送信したいときにメッセージを送信する。 受信側は送信側がどのタイミングでメ…

MAUI:XAML側でViewModelのインテリセンスを効かせる

XAML側でデータバインディング時にViewModelのパブリックメンバーがインテリセンスで表示されたり、タイポで存在しないメンバーを指定したときに指摘してくれると嬉しいです。 Xamain.Formsのときは以下のようにデザイン時支援機能を使って以下のように書く…

Arduino IDEを使ったM5Stack開発環境を整える

M5Stackの開発をしたいと思い立ち、開発環境を整えてみる 色々なサイトを参考にしながらすすめる。 基本はこちらから。 Getting Started: M5Stack の開発環境を準備する | プロトタイプ向けマイコンモジュール M5Stack と 3G 拡張ボードをセットアップする |…

ASP.NET MVCプロジェクトにIdentityユーザー認証機能を追加する

とりあえずチュートリアルに従ってアプリを作る。 そうだ、ユーザー認証機能を追加しよう。 というときのためのメモです。 また、Identityユーザー認証機能を後付するとプロジェクト内にIdentityで使われるクラスやページのソースコードが作成されるので、い…

OpenCvSharpでHSVで特定の色を取り出すときの簡易確認ツール

OpenCVで特定の色だけにしぼり込むときに、HSV(Hue,Saturation,Value)で範囲を指定するとします。 ある画像をサンプルとして、自分が絞り込みたい色の範囲はHSVでどの値の範囲なのかを確認したいです。 そんなちょっとした確認に便利なツールがあると便利で…

OpenCvSharp4で特定の色だけを抜き出す

以下の記事をOpenCvSharpを使ってやった内容になります。 tecsingularity.com RGBで指定 RGBで色の範囲を指定して抜き出すには以下のようにします。 using OpenCvSharp; using System; namespace OpenCVColorExtraction { class Program { //抽出したい色の…

C#でOpenCVを使うOpenCVSharp

OpenCVのC#ラッパーとしてOpenCvSharpというNugetパッケージがあります。 github.com これを使うとC#でOpenCVによる画像処理や色々ができます。 例えば、画像を読み込んで表示させたり、画像の色空間を変更したりというのは以下のようなコードを書きます。 u…

Dell Latitude 7300でFnキーロック

Latitude 7300ではファンクションキーを使う場合にはFnキーをあわせて押す必要があります。 例えば、Visual Studioでデバッグを実行したいとき(F5)などですね。 Fnキーを一緒に押さない場合は、画面の明るさや音量を変更する機能が割り当てられています。 Su…

正規表現でマッチした部分を同じ文字数の記号で置換する

C#

実装の一例としてメモ 例えば,連続する半角スペースに対して2文字目以降をnbspで置き換える場合は以下のようにする. public static string ConsecutiveBlanksToNBSP(string sentense) { Regex re = new Regex(@"(?<= )( )+"); MatchCollection matches = re.…

Gitでrefusing to merge unrelated historiesエラーの対処

www.educative.io remoteとlocalでcommit履歴が一致していない場合にpullやmergeを行うと以下のエラーが発生する. refusing to merge unrelated histories 上のリンク先で使用されている画像がわかりやすいので引用するが,こんな感じ. どういう状況かという…

privateフィールドの値を取得したりprivateメソッドを実行したり

C#

フィールドの場合はBindingFlags.GetField, メソッドの場合はBindingFlags.InvokeMethodを指定している. GetField()メソッドやGetMethod()メソッドを使う場合は上記のフラグはそもそも必要ない. ClassHoge hoge = new ClassHoge(); Type hogeType = hoge.Get…

C#のDisposeパターン

クラスを作成するときに,クラス内で使用するリソースを適切に開放するために,IDisposableインターフェイスを実装します. IDisposableを実装するときに,以下のように「Disposeパターンを使って明示的にインターフェイスを実装します」という項目があるのでそれ…

C# 非管理リソースの開放 (一時ファイル作成後の後始末について)

C#

リソースの開放はIDisposableインターフェースを実装して,開放処理を記述します. これについては以下の記事がとてもわかり易いです. ufcpp.net さて,この記事では「非管理リソースの開放」について書きます. 例えば,Path.GetTempFileName()メソッドで一時ファ…

iTextSharpでPDFを回転,選択する

使用するライブラリ iTextSharp.LGPLv2.Core 公式ではありません. NuGetからインストールします. PDFファイルの読み込み まずはPDFファイルを読み込みます. PdfReader reader = PdfReader(filePath); PDF情報の取得 このPdfReaderオブジェクトからはいろいろ…

Flutter開発環境のアップグレード

Flutterの開発環境に新しいバージョンが出たらアップグレードしたいですよね. こちらの記事でも書きましたが,Flutterの開発環境構築はとても簡単に行えます. shuhelohelo.hatenablog.com この記事では上記記事の方法でFlutter開発環境を整えたものとして,開…

Xamarin.FormsのShellの項目の見た目を変更する

Shellを使うと最近のモバイルアプリケーションでよく使われている,ドロワーメニューというのでしょうか,画面端からにゅっと出てくるメニューを簡単に用意できます. Xamarin.FormsではこれをFlyoutと呼びますが,これについて詳しくは以下の公式ドキュメントを…

Azure Client SDKでリソースを作成する準備

docs.microsoft.com Azureのリソースを作成する選択肢は,Azure Portal, Azure CLI, Azure PowerShell, Azure REST API, Azure Client SDKなど様々あり, 目的や状況に適したものを使うことができます. ここではAzure Client SDKを使って,C#プログラムからAzur…

「The reference assemblies for .NETFramework,Version=v5.0 were not found. 」への対処

Visual Studioで現在プレビュー版の.NET5を使ってトップレベルステートメントを試したときに以下のようなエラーメッセージが表示されました. The reference assemblies for .NETFramework,Version=v5.0 were not found. Tools > OptionsでOptionsウィンドウ…

コマンドラインでSDKを指定して.NETアプリケーションを作成する.

dotnetコマンドでプロジェクトを作成すると,一番新しいSDKが使用される. 現時点だとpreview版の.NET5をインストールしてあるので,dotnet new console -o Hogeとすると自動的にdotnet5のプロジェクトになる. そこで-f|--framework <FRAMEWORK>オプションを使う. <FRAMWORK> には以</framwork></framework>…

スマートホームを構築する際のRM Mini3とGoogle Homeの設定 初期設定~エアコン登録(2018年11月24日時点)[引越記事]

こちらがとても参考になります. simple-was-best.com はじめに スマートホームを構築する手段はいろいろとありますが、今回は中でもとりわけ安価で有名な「RM Mini3(通称:黒豆)」と「Google Home」の組み合わせについて、その設定方法を説明したいと思い…

Visual Studioの設定の移行 : インストール構成, Visual Studioの設定

docs.microsoft.com 複数のPCでVisual Studioを使っている場合,もしくは1つのPCで複数のバージョンのVisual Studioを使用する場合,それぞれのVisual Studioでワークロードを選択するのは手間ですし,インストール漏れがあったりしたら嫌です.(私の場合は複数…