🐥note.

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

Sample

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…

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

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

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…

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…

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

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

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パターンとかそこら辺のメモです。

ASP.NET Core MVCにServer side Blazorのコンポーネントを共存させる話

本エントリはBlazor Advent Calender 2019の4日目の記事です はじめに .NET Core 3.0がリリースされてから3か月近く経過しました。 ※追記(12/04):本日.NET Core 3.1 LTSがリリースされました! 皆さんはお仕事でBlazor書いてますでしょうか?勿論私は書けて…

Client side Blazor on WPF WebViewを実験的に作って挫折した話

WPF(.NET Core)のWebView上に、publishしたClient side Blazorを表示するDesktop Appを実験的に作って挫折したのでその備忘録です。 ※挫折した、という点がポイントです。 Demo 最低限動くところまでは作ったので、その様子だけ載せておきます。 demo きっか…

.NET CoreのWPFでWindowを表示するClass Libraryを作成した

実行するとWPFのWindowを表示するClass Libraryを作成しました。 これはClient side Blazorをいい感じにWPFのWebViewで表示できないか試行錯誤してた最中の副産物です。結局ボツ案で使うことは無いとは思いますが、せっかく作ったのでここで供養させてもらい…

Client side BlazorとAzure Blob Storageで作る簡単PWA

Client side BlazorをPWA対応させてみました。 PWAのServiceWorkerの機能にはHTTPSが必要なので手っ取り早くAzure Blob Storageを使用します。 ちなみに環境は以下の通り .NET Core 3.1 Preview2 Microsoft.AspNetCore.Blazor.Templates 0.7.0 Blazor Templa…

BlazorでChartを描画する

個人アプリで折れ線グラフやドーナッツチャートを描画したくなったので、Blazoriseを使用して描画してみました。 本エントリはその記録です。 Library探しの旅 JavaScriptならいっぱいLibraryがありますが、歴史の短いBlazorではそうはいきません。 いい感じ…

.NET CoreのDiagnostics CLI Toolを触ってみた

2019年10月のMicorosoft Docsの更新内容を見ていて.NET Core Diagnostics CLI Toolというものがあることに気が付きました。 それぞれdotnet-counters, dotnet-dump, dotnet-traceなるものっぽいです。 それぞれちょっとずつ試してみました。 dotnet-counters…

ASP.NET Core Update in .NET Core 3.1 Preview2の新機能について

Microsoft Igniteで盛り上がるIT界の裏では.NET Core 3.1 Preview2がリリースされました。 devblogs.microsoft.com それに合わせてASP.NET CoreとEntityFramework CoreもPreviewが公開されています。 devblogs.microsoft.com 本エントリではASP.NET Coreに追…

自作RazorClassLibraryの静的ファイルのロードができずに困った話

BlazorのComponentを別プロジェクト(RazorClassLibrary)へ切り分けた際、 Blazorから別プロジェクトの静的リソースへアクセスすることが出来ずにハマったので、それの件について記録します。 SolutionとProjectの作成 以下のコマンドでBlazorAppと、Componen…

Azure DevOpsでClient Side BlazorをCI/CDしてみる

こちらの記事の続きです。 blog.piyosi.com 本エントリでは 「GitHubに作ったClient Side BlazorのPrivate Repositoryのmaster branchへのコミットをトリガーにして、Azure DevOpsでBuild, UnitTest, Publishした後、Azure Storageの静的サイトへ自動デプロ…

Client Side BlazorをAzureの静的サイトにデプロイする

Azure StorageにClient Side Blazorをデプロイします。 Client Side Blazorの作成 Blazorのプロジェクトを作成し、Publish(発行)しておきます。 dotnet new blazorwasm -o ClientSideBlazorSample cd ClientSideBlazorSample dotnet publish -c Release -o o…

az storage blob upload-batchでErrorCode: InvalidUriが出た時の原因

Azure StorageのBlob Containerにファイルをアップロードしようとした際に以下のエラーが表示されました。 error: The requested URI does not represent any resource on the server. ErrorCode: InvalidUri 原因 原因は-dで指定したContainer NameのEscape…

.NET Core 3.0の新機能Roll Forwardオプションを試してみる

.NET Core 3.0 リリース記念 C# Tokyoで登壇された@nuits_jpさんの.NET Core 3.0のPublish Single File概要を見て、そういえば.NET Core 3.0の新機能でRuntimeのバージョンをコントロールする機能あったなぁ…と思い、ちょっと調べてみました。 Microsoft Doc…

BlazorでDrag and Dropを実装する

Blazorで簡単なDrag and Dropを実装してみます。 デモ こんな感じです。 デモ コード 作ったコードはこちらにUpしてあります。 github.com

BlazorのDataBindingで発火イベントを変更する

@bindによる双方向 DataBinding は以下の通りです。 <input @bind="CurrentValue" /> @code { private string CurrentValue { get; set; } } Microsoft Docsによると、@bind するタイミング(イベント)は変更できるようです。 docs.microsoft.com @bind 構文を使用して onchange イベントを…

Blazor - TodoAppにValidationとNotifyServiceを追加する

こちらの記事の続きです。 blog.piyosi.com Todoアプリに以下の機能の改造を加えます。 新しいTodoを追加したら画面に通知を表示する(NotifyServiceで別Componentの関数をKick) Todoの内容が空っぽの時は登録できないようValidationを追加する ※子コンポーネ…

Blazor - TodoAppで学ぶComponentへのParameter Binding

BlazorのComponentへのParameter Bindingについて学ぶため簡単なTodoアプリを作りました。 今後暫くはこのアプリに手を加える形でBlazorのお勉強をしたいと思います。 github.com Microsoft Docsで言うとこのあたり docs.microsoft.com Demo こんな感じです…

EntityFrameworkCore.SQLiteのInMemoryDatabase + Repository Patternを書いた備忘録

ローカル環境にDBが必要なアプリの場合、大抵はLiteDbを使ってきました。 今回は趣向を変えてEntityFrameworkCoreを使ってみようかなと思い、Repository Patternな感じで実装してみました。 AdapterはSQLiteを使います。 本エントリはその備忘録です。 作成…