実行環境 .NET 8 Visual Studio 17.8.3 xUnit 2.4.2 準備 ASP .NET Core WebAPIのプロジェクトとユニットテストのプロジェクトを作成し、ユニットテストのプロジェクトからWebAPIのプロジェクトを参照するように設定しておきます。 また、Program.csはトップ…
パルワールドの専用サーバを建ててみたかったのでDockerコンテナを使ってやってみました。 実行環境 Docker Desktop for Windows 専用サーバの準備 docker composeで簡単に専用サーバのコンテナを作ってくれるRepositoryがあったのでありがたく使わせてもら…
ASP.NET Coreでリクエストパラメータにrecordを使った場合に出力されるswagger.jsonにRequired等の属性が反映されない問題があったのでまとめました。 問題になっているのはだいたい次のIssueと同じ内容です。 github.com 最近はエンドポイントのリクエスト…
実行環境 VS2022 17.8.3 .NET 8 httpファイルを用意する 適当なhttpファイルを用意します。HostAddressとParameterは後述の別ファイルで定義します。 GET {{HostAddress}}?q={{Parameter}} httpenv.jsonを用意する httpenv.jsonを作成してhttpファイルと同じ…
.NET 8からDateTimeに依存した処理のテストに役立つTimeProviderとFakeTimeProviderという仕組みが追加されたので試していきます。 実行環境 VS2022 17.8.1 .NET 8 準備 NuGetパッケージをインストールします。これでFakeTimeProviderが使えるようになります…
C#でASP.NET Coreを使ったWeb開発をメインでやっている私がコードを書くためにサブスクライブしているものをあげていきます。 ReSharper 言わずと知れたVisual Studioの拡張機能です。本家よりも強力なIntelliSence、括弧の自動補完などなどいろんな機能に助…
CI/CDでswagger.jsonを出力したかったのでやってみました。 実行環境 VS2022 17.7.4 .NET 7 Swashbuckle.AspNetCore.Cli 6.5.0 Swashbuckle.AspNetCore.Cliをインストールする プロジェクトのルートで.NET ツールをインストールします。 dotnet new tool-man…
EFCoreのTimestampを使って楽観的排他制御をやってみます。 実行環境 VS2022 17.6.5 EFCore 7.0.10 SQL Server 2022 Entityを用意する 次のようなEntityを用意しました。 public record Todo { public int Id { get; set; } public string? Content { get; s…
DBなどの永続化層のデータを更新する際に作成日や更新日などの日付を更新したいことがよくあります。そのあたりの処理を共通化してみたいと思います。 実行環境 VS 2022 17.6.5 .NET 7 EF Core 7.0.4 Entityを用意する ITimeStampというインタフェースを持つ…
EFCoreのChangeTrackerについて今まで雰囲気で分かった気になっていたので、理解を深めるためにDbContextのデータをいろいろ操作しながらChangeTrackerの内容を確認してみます。 実行環境 VSCode + C# Dev Kit .NET 7 Microsoft.EntityFrameworkCore.InMemor…
Azureでメールが送れるサービスが使えるようになったとのことで試してみました。 Azureでリソースを作成する Azure Portalから以下3つのリソースを作成します。 Communication Services Email Communication Services ドメイン Communication Servicesの作成…
ChatGPTが非常に流行っているので試してみることにしました。 ここではC#のコンソールアプリケーションでChatGPTと会話ができるように実装し、その過程と結果を紹介します。 実行環境 Visual Studio 2022 17.5.3 .NET 7 OpenAIのAPIはこちらのライブラリを使…
久しぶりにEFCoreを触ってみたら 一括更新・一括削除( ExecuteUpdate / ExecuteDelete ) という良さげな機能が追加されていたので試してみました。 今までは一度SELECTした後にUPDATEなりDELETEしていたのがSELECTしなくても良くなりました。 実行環境 Visua…
Visual Studio 2022のバージョン17.5から、VSCodeの拡張機能REST Clientと同じようなHTTPリクエストを実行できる機能が追加されたそうなので試してみました。 marketplace.visualstudio.com 実行環境 Visual Studio 2022 17.5 WebAPIを準備する MinimalAPIで…
CSSでサイン、コサイン、タンジェントが使えるようになると聞いたので試してみました。 現時点ではまだ一部のブラウザしか対応していないようです。今回はFireFoxを使います。 caniuse.com 次のようなHTMLを書いてみました。ボックスの中にボールが3つ縦に並…
ASP.NET Core 7から使えるようになったIParsableを使ってモデルバインドをしてみます。 やること コントローラのアクションで、"2022/12/31,2023/01/01"のような文字列をDateRangeという日付の区間を表すクラスにバインドして受け取れるようにしてみます。 /…
xUnit.netのTheoryDataを使ってテストコードを書いてみます。 実行環境 Visual Studio 2022 17.2.0 .NET 6 xUnit 2.4.1 このような名前と年齢を結合した文字列を返すメソッドのテストコードを書いてみます。 public string GetFullNameWithAge(string lastNa…
国税庁になりすまして税金の支払いをさせようとするSMSが届いたのでURLを開いてサイトのソースコードを読んでみました。 www.ipa.go.jp とりあえずサイトにアクセスしてみる PCからGoogle Chromeのシークレットモードでサイトにアクセスしてみます。 PCでア…
.NET7のRC版がリリースされてC#11を試せるようになったみたいなので新しく使えるようになったrequiredメンバーを触ってみます。 準備 .NET 7をインストールしておきます。この記事を書いてる時点では7.0.100-rc.1というバージョンでした。 dotnet.microsoft.…
C#でマイクラがアツイという噂を聞いたので試してみます。 準備 サーバー マインクラフトのサーバーをあらかじめ用意しておきます。 Dockerで動かすのが一番ラクそうだったのでこちらのDockerイメージを使ってサーバーを動かしました。 hub.docker.com docke…
AWS SDKのAPIを使ってAWSのサービスを使う際、ユーザーのホームディレクトリにある.aws/credentialsを使って認証されますが、ローカルのDockerで実行時にはこれが無いためAPIの呼び出しに失敗します。 docker-compose.ymlで認証情報を共有できるようにします…
TypeScriptでAzure Functionsを作ってみます。 準備 VSCodeで開発します。拡張機能でAzure Functionsをインストールしておきます。 プロジェクトの作成 コマンドパレットからAzure FunctionsのCreate Projectを実行します。 対話形式でプロジェクトの設定を…
Azure Static Web App CLI (SWA CLI)が正式にリリースされたので試してみます。 インストール npmでグローバルインストールします。 npm install -g @azure/static-web-apps-cli 静的サイトの作成 SWAに乗っける静的サイトを作成します。 今回はAngularでSPA…
準備 p5.jsをダウンロードしておきます。 公式サイトからComplete Libraryをダウンロードし、zipファイルを解凍して出来るファイル群の中にあるp5.jsとp5.sound.jsを使います。 p5js.org HTMLで先ほどのファイルを読み込むようにしておきます。 <html> <head> <script src="libs/p5.js"></script> <script src="libs/p5.sound.js"></script> <script src="app.js"></script> </head> <body> <main> <h1>p5 d</h1></main></body></html>…
Azureのリソースを作るときはわりとAzure PortalからGUIをぽちぽちしながらやっています。が、AppService名を間違えるなどでリソースの作り直しが必要になることがわりとあって、その度にGUIからリソースの設定をポチポチするのが面倒なのでARMテンプレート…
先日こちらのイベントで出題された問題を自分でもやってみました。 togetter.com 次のようなあいうえおの文字列を加工して、 const string aiueo = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもや ゆ よらりるれろわ をん"; 最…
小田急である広告の前でだけ学生数人がノート出してて何事かと思ったらこの広告が原因だった。解いたらスッキリする答えが出てきて、答え合わせできないけど確実に正解なのが分かった pic.twitter.com/bszZ0QQQJ5— 電電猫猫|高橋直希@CoeFont (@nya3_neko2) …
ViGEm.NETというライブラリを使ってC#で簡単な仮想ゲームコントローラを作ってみます。 ViGEmはVirtual Gamepad Emulator Frameworkの略だそうです。読み方は謎です。C#用のライブラリが公開されているので使っていきます。 github.com 実行環境 Windows 10…
VSCodeでC#のコンソールアプリをデバッグ実行したとき、dllを読み込むメッセージがたくさん表示されます。 設定前のデバッグコンソール アプリから出力したメッセージが埋もれてしまって見にくいので、これを表示しないようにしてみます。 .vscode/launch.js…
CySharpから出ているProcessXが良いらしいぞという噂を聞いたので試してみました。 ProcessXはcmdやPowerShellで実行するコマンドたちをC#から呼びやすくするライブラリのようです。 github.com やってみる 試しにdotnetコマンドを実行してバージョン情報を…