Browser Playground Explore Avalonia UI entirely in the browser
![Avalonia UI - Cross-Platform UI Framework for .NET](https://cdn-ak-scissors.b.st-hatena.com/image/square/c948b59d6959a8e1c53ab3a4256c1318bef82a6f/height=288;version=1;width=512/https%3A%2F%2Fwww.avaloniaui.net%2Fimg%2Fphotos%2Fbanner.png)
Browser Playground Explore Avalonia UI entirely in the browser
前書き この記事は、2023のUnityアドカレの12/12の記事です。 今年は、完走賞に挑戦してみたいと思います。Qiita君ぬい欲しい! はじめに C++を触ったことがある方ならBoostというライブラリをご存知かと思います。Boostは、C++の新しい機能が、標準化された組み込みライブラリに組み込まれる前の試験段階のようなものです。ベータ版みたいな。(厳密にはBoostにあるものが必ず標準になるわけではないです) C#にも、実はそのようなライブラリがあります。 その名もDotNext! このライブラリもBoostと同じように、BCL(C#の標準組み込みライブラリ)の発展版として存在しています。また、これはdotnetの公式リポジトリで管理されており、NuGetから利用することもできます。 本記事では、このDotNextに含まれる機能の一部をご紹介しましょう! ゼロアロケーションLis
Noda Time is an alternative date and time API for .NET. It helps you to think about your data more clearly, and express operations on that data more precisely. // Instant represents time from epoch Instant now = SystemClock.Instance.GetCurrentInstant(); // Convert an instant to a ZonedDateTime ZonedDateTime nowInIsoUtc = now.InUtc(); // Create a duration Duration duration = Duration.FromMinutes(3)
WPF での MVVM Model/View/ViewModel の話などありますが、きちんと理解するのに数年を要した概念なので改めて概念をまとめてみます。 この記事でまとめたいこと Model/View/ViewModel の書き方 View と ViewModel の分離について ダイアログの出し方 .NET Community Toolkit, Microsoft.Extensions.DependencyInjection, Microsoft.Xaml.Behaviors.Wpf の使用を前提とします。 作ったアプリのサンプルは に設置します。 作るアプリ ・Web APIから現在時刻を取得して、その結果を表示 ・ダイアログで確認後、選択内容をクリップボードにコピーする MVVM の実装 Model MVVM における Model は「View に関わらないこと全般」です。 AP
2022/12/14 「WeakとStrong」の節に少し追記 はじめに .NET Community Toolkit の v8.0.0 が8月にリリースされました。 これは雑に言うと、Windows開発用のWindows Community ToolkitからWindows 固有でないAPIが独立して作成された最初のバージョンです。 上記Toolkitに、CommunityToolkit.Mvvmが含まれています。 .NET 6 で Incremental Source Generator(ISG)が登場し、多くのボイラープレートコードが高速に生成できるようになりました。 CommunityToolkit.Mvvmでも同様にISGを活用し、多くのコード生成を実現しています。 ※ちなみにコード生成機能自体は7.1.0でもあったようです。 本稿ではv8のうち、特にコード生成に関連する部分(の
概要 C# 9.0 で、レコード型(records)という新しい種類の型が追加されました。 (また、C# 10.0 では構造体版レコード型(record structs)が追加されました。) record (記録)という名前通り、データの読み書きに使うことを意図した型です。 例えば以下のような書き方で、「Name という文字列と Birthday という日付」を読み書きできます。 using System; record Person(string Name, DateTime Birthday); データが主役のプログラミング プログラミングをしていると、データが主役・データが中心になる場面がちらほらあります。 「データが主役」(data centric)というのは、例えば以下のように、「Name という文字列と、Birthday という日付を持っている」というような「何の型がどういうデ
概要 WebブラウザからUnityへ(そしてビルドしたアプリにも)データを送信したいことがあったのでWebSocketをUnityで利用する方法およびWebブラウザからデータを送信する方法を試してみたのでそのメモです。 Unity側のWebSocketの利用は以下のライブラリを利用させていただきました。 github.com ちなみにサーバ側はNode.jsとwsモジュールを利用しています。 今回のサンプルはGitHubにアップしてあるので実際の動作を確認した人はこちらを参照ください。 github.com 概要 ライブラリをビルドする 不要なプロジェクトの削除 ソリューションをビルド DLLをプロジェクトに配置 C#でWebSocketを扱う WebSocketサーバに接続する サーバを立てる Webブラウザからデータを送信する WebSocketを利用してバイナリデータを送る カラー情
async/awaitの鬼門の一つとして、適切なキャンセル処理が挙げられます。別に基本的にはそんな難しいことではなく、CancellationTokenSourceを作る、CanellationTokenを渡す、OperationCanceledExceptionをハンドリングする。というだけの話です。けれど、Tokenに手動でコールバックをRegisterしたときとか、渡す口が空いてないものに無理やりなんとかするときとか、タイムアウトに使った場合の始末とか、ちょっと気の利いた処理をしたいような場面もあり、そうした時にどうすれば良いのか悩むこともあります。 こういうのはパターンと対応さえ覚えてしまえばいい話でもあるので、今回はAlterNatsの実装時に直面したパターンから、「外部キャンセル・タイムアウト・大元のDispose」が複合された状況での処理の記述方法と、適切な例外処理、そして最
Moqとは? .NET環境の単体テストで使用する、外部モジュールのMock化(Stub化)パッケージです。 例えば、テスト対象のクラスがHTTPやシリアルポートで外部と通信していると、そのままでは単体テストを組むのは容易ではありません。(テスト用のサーバーを用意するなど) そういった、HTTP通信やシリアルポート通信をする部分をダミーのテスト用モジュールに置き換えるのがMoqです。 環境 Windows 10 Pro 2014 Visual Studio 2019 Version 16.6.3 言語:C# (.NET Framework 4.7.2) 単体テスト プロジェクト (.NET Framework) Moq 4.14.5 (NuGetからインストール) テスト対象クラス テスト対象クラスを、内部でシリアルポートで通信するクラスとします。 名前は、Communication として
Moq は、テストダブル(=単体テスト用の代役オブジェクト)を簡単に作るためのライブラリです。 テストダブル 単体テストにおける問題のひとつとして、以下のようなことがあります。 テスト対象の依存オブジェクトが・・・ ネットワーク通信が必要 データベースアクセスが必要 など、外部に依存する場合、そのままでは単体テストを作りにくいです。 これを解決するために、実際のオブジェクトの代わりを用意します。 テスト用の代役オブジェクトをテストダブルと呼びます。テストダブルはその役割に応じて、スタブ、モック、フェイク、などと呼称されます(それらの違いについては、本記事の主題と直接は関係がないので割愛します)。 典型的なテストダブルの実装 テストダブルはあくまで代役なので、本物と同じ振る舞いはしません。単体テストが動けば良いと割り切ります。 本物と同じ I/F を持つ。 通信などの振る舞いはしない。 特定
.NET Coreの汎用ホストでMicrosoft.Extensions.DependencyInjectionを使ったDI ContainerにAssembly Scanしてサービスを自動登録する簡易的な仕組みを作ったのでその備忘録です。 目次 目次 成果物 DI Containerに登録したいSericeの実装 基本的な仕組み 指定したAssembly内のInterface, Classを全て登録する関数 指定したInterfaceを継承しているClassのみを登録する関数 指定したGenericなInterfaceを継承したClassのみを登録する関数 使い方 問題点 おわり 成果物 Gistに上げています。 DI Containerに登録したいSericeの実装 例えば以下のCQRSっぽいコードがあったとします。 CQRSっぽいコード Microsoft.Extensions.De
公式ページはこちら ASP.NET Core での依存関係の挿入 aspnet/DependencyInjection 実際に私はASP.NET というより、Azure Functions で使うことを想定していますので生の基本的な挙動を理解したいと思っています。 オブジェクトの注入 次のようなクライアントとそのインターフェイスがあるとします。 public interface ISomeClient { string Id { get; set; } } public class SomeClient : ISomeClient { public string Id {get; set;} public SomeClient() { this.Id = Guid.NewGuid().ToString(); } public SomeOption SomeOptions {get; set
Autofac is an addictive Inversion of Control container for .NET Core, ASP.NET Core, .NET 4.5.1+, Universal Windows apps, and more. Register Components Build up containers with lambdas, types, or pre-built instances of components. You can also scan assemblies for registrations. var builder = new ContainerBuilder(); // Register individual components builder.RegisterInstance(new TaskRepository()) .As
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く