🐥note.

小鳥とMicrosoft <3 なエンジニアの技術Blog📚

ElementReferenceと@refを使用しBlazorからJavaScript側へHTML要素の参照を渡す話

BlazorでJavaScriptのライブラリをラップしたい場合なんかに有用なRazorのElementReferenceと@refの小話です。

属性スプラッティングで自作Razor ComponentへHTML属性(id, classなど)を設定する方法

自作Razor ComponentにHTML属性を割り当てたいケースは多々あるかと思います。 例えばid, classなんかはその最たるものではないでしょうか。

Blazor WebAssemblyでgRPC-Webを使用する - Standalone編 -

前回のHosted編はBlazor WebAssemblyとgRPCサーバーが一体となった構成でした。 今回はStandalone編ということで、Blazor WebAssemblyとgRPCサーバーを分けて作ります。 お互いを分離することでBlazor Assemblyは静的なWebサイトとして置いて、gRPCサーバはP…

Blazor WebAssemblyでgRPC-Webを使用する - Hosted編

先月の話ですが、Blazor WebAssemblyからgRPC-Webを使用する実験的サポートの発表がありました。 blog.stevensanderson.com devblogs.microsoft.com 本エントリはBlazor WebAssemblyプロジェクトのREST通信をgRPC-Webに置き換える手順を追ってみたいと思いま…

dotnet watchコマンドでファイル変更をトリガーに任意のコマンドを実行する

dotnet watchを使用してファイルの変更をトリガーに任意のbat/shellコマンドを実行する方法のメモです。今回は例としてファイル変更時に単体テストを実行し、テストが全件OKの場合アプリを起動するといった動作を実現します。

Mobile Blazor Bindingsでマインスイーパーを作る

先週末ちょっと時間があったので、Mobile Blazor Bindingsを触ってみる目的でマインスイーパーを作りました。 こんな感じです。 Demo - Android Android版 Demo - iOS iOS版 コード ザっと書き殴りしただけの汚いコードなので一部だけ…。 ContentPage メイン…

EntityFrameworkCoreのThrowIdentityConflictでハマったメモ

EFCoreでこんな感じの例外が出た。 Unhandled exception. System.InvalidOperationException: The instance of entity type 'Person' cannot be tracked because another instance with the same key value for {'Id'} is already being tracked. When attac…

Blazor WebAssembly Ver3.2.0 Preview1の変更点とPreview2のアイテムについて

先日.NETを使用したgRPC-Webの実験的サポートが発表されたばかりですが、今日はBlazor WebAssembly Ver 3.2.0 Preview1がリリースされたようです。 それに伴いdevblogsが更新されてました。 devblogs.microsoft.com なお、GitHubのRepositoryとBranchはこち…

Azure Cognitive Services + WPFで画面キャプチャしてOCRと翻訳するツールを作った話

画像中の英語の長文を読むのがチョットつらい!英語ならまだしも中国語とか無理! そんな思いから、画面中の任意の場所をキャプチャして、キャプチャ範囲内の文字列をOCRして、OCR結果を機械翻訳するツールを作りました。 OCRはAzure Cognitive ServicesのComput…

EntityFrameworkCoreでValueObjectをDBに永続化する

Microsoft Docsのこちらの記事を読んでいたところ… docs.microsoft.com ValueObjectをEntity Framework Coreで永続化することができる…だと!全然知らなかった! 調べてみたら2.0の時代から対応してるっぽいですね。 devblogs.microsoft.com ということでDoc…

BlazorでNative Mobileアプリを開発できるMobile Blazor Bindingsを試してみる

現在開催されている.NET Conf: Focus on BlazorのEilon Lipton氏のセッション Mobile Blazor Bindings – Using Blazor to build mobile appsでMobile Blazor Bindindsという名の実験的ライブラリが発表されました。 devblogs的には以下の記事です。 ※実はセ…

.NET Core Project TemplateとNuget Packageの作り方

ちょっとしたWPFアプリを複数個作る機会があり、同じような構成のWPFプロジェクトを何個も作るのが大変面倒だったので、Project Templateを作りました。 忘れないうちにProject Templateの作成と、そのProject TemplateをNuget Package化する方法について残…

2019年12月のMicrosoft DocsのUpdateについて

Redditに2019年12月のMicrosoft Docsの更新状況について投稿がありました。 www.reddit.com なお、11月の更新状況は以下の通りです。 blog.piyosi.com 更新したドキュメントの一覧 毎月Redditに投稿しているMaximRouiller氏ですが、今回は 今月のみんなが読…

.NET CoreでEnvironmentを起動引数で与える方法

--environmentを与えるだけ。 dotnet run --environment <Environment名> Development, Production, Stagingだけじゃなくて好きな値で設定できる。 参考にしたのは以下のstack overflowの質問 stackoverflow.com おわり 環境変数を書き換える手間が省ける。</environment名>

EntityFrameworkCoreでCode First/Reverse Engineeringする

EFCore 3.1でCode First/Reverse Engineering(scaffold)するだけの記事です。

.NET CoreのGeneric Host(汎用ホスト)でEntityFramework Coreを使用する際にService生成に失敗する件の解決方法

きじのしっぽさん作成の逆引きEntity Framework Core 3.1ハンドブックが届いたのでEntityFramework Coreに再入門してみました。 booth.pm その過程でちょっと見慣れないエラーに遭遇したので、記録しておきます。 環境は.NET Core 3.1 LTSのMicrosoft.Entity…

.NET CoreのGeneric Host(汎用ホスト)のStart/Run/RunConsoleAsyncの違い

.NET Core 3.1 LTSのGeneric Host(汎用ホスト)にはStart/Run/RunConsoleAsyncなど複数の起動方法がある。 static async Task Main(string[] args) { // パターン 1. - RunConsoleAsync await CreateHostBuilder(args).RunConsoleAsync(); // パターン 2. - S…

2019年振り返り

2019年の振り返りエントリーです。 2019年に学んだ技術・始めた取り組み・出来事は以下の通りです。 子供👶が産まれた Azure, Azure DevOps .NET Core(Blazor, ASP.NET Core) TDD, Clean Architecture, SOLID, DDDの復習 技術ブログの開始 朝活 勉強会への参加

Server side BlazorをAzure Web AppsにDeployする

以前Azure Blob Storage上に静的サイトとしてClient side Blazorをデプロイする記事を書きました。 blog.piyosi.com Azure CLIに慣れる目的で、今回はServer side BlazorをAzure上にデプロイしたいと思います。 使うサービスはAzureのWeb Apps, Key Vault, S…

Azure CLIでAppServiceとWebAppのcreate/deployで色々ハマった話

お勉強のためAzure CLIでAzureのリソースを弄っていたら色々ハマったので記録に残しておきます。 下記お話はWindows環境下のAzure CLI Version 2.0.78のお話です。

Assembly Scanして自動的にMicrosoft.Extensions.DependencyInjectionのDI ContainerにService登録する仕組み

.NET Coreの汎用ホストでMicrosoft.Extensions.DependencyInjectionを使ったDI ContainerにAssembly Scanしてサービスを自動登録する簡易的な仕組みを作ったのでその備忘録です。

Blazorの未来

本エントリはBlazor Advent Calender 2019の25日目の記事です。 Blazorのことをつい最近知った方々を対象に、「Blazorは今後どのような方向へ進化していくのか」という点を簡単にまとめてみました。 ※12/22(日)の時点でAdvent Calenderの開いてる記事が残り…

MediatRのIPipelineBehaviorとFluentValidationでCQRSのQueryをValidationする

先日の記事の続きです。 MediatRのIPipelineBehavior<,>とFluentValidationというライブラリを使用してQueryのValidationを行う方法です。

CQRSで実装したときDI Containerに登録するInterface/Serviceが大量すぎて辛かった話

趣味アプリのコアロジック部分をCQRSで作った結果、DI Containerに登録するInterface/Serviceの数が増えすぎてしまい辛くなってしまいました。 DI Containerへ登録する大量のCommand/QueryのInterfaceやService 次にCQRSでアプリを作る際はもっと楽に開発し…

Blazorチョット(だけ快適に開発)デキルようになる(かもしれない)小技

本エントリはBlazor Advent Calender 2019の16日目の記事です Blazorの開発を行う上でチョット(だけ快適に開発)デキルようになる(かもしれない)小技を紹介します。

BlazorでPrismのEvent Aggregatorを使用しViewModel間通信を試した備忘録

本エントリはBlazor Advent Calender 2019の15日目の記事です

BlazorのComponent間のデータのやり取りや状態管理ライブラリのメモ

Observer, EventAggregator, Fluxパターンとかそこら辺のメモです。

2019年11月のMicrosoft DocsのUpdateについて

Redditに2019年11月のMicrosoft Docsの更新状況について投稿がありました。 対象期間は2019/11/01 ~ 2019/12/04の間です。 www.reddit.com なお、先月の更新状況は以下の通りです。 blog.piyosi.com 今月のテーマ 今月のテーマとしては以下の点が挙げられる…

.NET Core 3.1からRuntimeのインストールを勧めるメッセージが表示されるようになった

.NET Core 3.1からは.NET Core Runtimeが未インストールのPCでWPF/WinForm/Consoleアプリを起動すると「Runtimeをダウンロードしてね」って感じのメッセージが表示されるようになりました。 ※.NET Core 3.0では何も表示されなかった リリースノートには記載…

ASP.NET Core 3.1の変更点について

ついに.NET Core 3.1 LTSがリリースされましたね! あわせてASP.NET Core 3.1もリリースされました。 devblogs.microsoft.com Microsoft Docsの特設ページはこちらです。 docs.microsoft.com 変更点は以下の通りです。 Here’s what’s new in this release fo…