CySharpから出ているProcessXが良いらしいぞという噂を聞いたので試してみました。 ProcessXはcmdやPowerShellで実行するコマンドたちをC#から呼びやすくするライブラリのようです。 github.com やってみる 試しにdotnetコマンドを実行してバージョン情報を…
ステージング機能が気になった&良さそうだったので試してみました。 そもそもステージング機能とは Azure Static Web Appsを使ったWebアプリケーションは、GitHubのリポジトリに変更があるとCI/CDが走って本番環境が更新されるようになっています。 例えばd…
サードパーティ製のFF14のランチャーにFFXIVQuickLauncherというものがあります。 公式のランチャーよりもシンプルで、クライアントの起動が速い、Discordとの連携機能があるとかいろいろと便利らしいです。 FFXIVQuickLauncherを起動した直後の画面 公式の…
文字列の整形をするときにRange構文を使ってみたらかなり体験が良かったのでまとめました。 C#8.0から配列などに対してarray[x..n]のような書き方ができるようになりました。配列のxからnの範囲を取得するような感じです。 ハイフンなしの郵便番号をアタマ3…
つい先日、「Kakuge Lounge Finder」というBlazor WebAssemblyで作ったWebアプリを公開しました。 www.kakuge-lounge.com 格ゲーでオンラインの対戦相手を募集する際に、希望の対戦相手の条件などをツイートしてTwitter上で募集するという文化があるのですが…
Azure Static Web Appsが正式にリリースされたので試してみました。 準備 まずTerraformのインストールから。 公式サイトからzipをDLし、解凍して出てきたexeを適当なフォルダに置いてPATHを通しました。 www.terraform.io 次にAzure CLIをインストール。 Po…
JavaScriptで配列の先頭の要素を取得したいとき、shiftを使うと先頭の要素を取得できますが、取得した配列からその要素が消えてしまいます。 const items = ["回復薬", "回復薬グレート", "こんがり肉", "解毒薬"]; // shiftだと配列から先頭が消える const …
BlazorとAzure Static Web Appsが気になってたのでやってみました。 GitHubにリポジトリ作成 Azure Static Web Appsにデプロイする際のソースとしてGitHubのリポジトリを使うので、Blazorで作った WebアプリのソースをGitHubに上げておきます。 今回はBlazor…
ValueTupleを使うと一時変数を使わずに変数のスワップができるというのを聞いたので試してみました。 とりあえずやってみる 言われるがままにintの変数を2つ用意してスワップしてみました。 var a = 1; var b = 3; // スワップ前 // a = 1, b = 3 Console.Wr…
FFXIVで戦闘系エンドコンテンツを攻略する人にとってはおなじみのAdvanced Combat Tracker(以下ACT)という便利ツールがあります。 advancedcombattracker.com C#でプラグインを自分で作ってインポートできるようになっているのですが、 プラグインを作る際…
C#9から登場したrecordで型が定義できるようになって、record、class、structなどよく分からなくなってきたので、いろいろ比較しつつ整理してみました。 class struct record 参照型 or 値型 参照型 値型 参照型 継承 できる できない できる Equals() 参照…
.NET 5がリリースされてC# 9.0モチベが高まったのでやってみました。 Init Only Setterを使うとImmutableな型を定義するのがラクになります。 C# 9.0以前の書き方 プロパティをget onlyにしてコンストラクタで各プロパティを初期化しないとダメでした。 clas…
VS2017はスタートページに開発者向け情報というMS関係の最新技術情報が表示されていました。 地味に好きな機能で、技術の動向をキャッチする貴重なソースだったのですがVS2019では無くなってしまいました。 VS2019でも表示できないかなと調べてみたら有志の…
コンストラクタで受け取った引数をフィールドに代入する時、Visual Studioのクイックアクション(電球ボタン)を使うとフィールドを定義して初期化するコードを自動で生成してくれます。 コンストラクタの引数にカーソルを当ててクイックアクションを押すと…
ブラウザを閉じたときに消えるクッキーとそうじゃないクッキーの違いがよく分かっていなかったので調べました。 ブラウザを閉じたときに消えるクッキー セッションクッキーと呼ばれます。 クッキーはHTTPレスポンスヘッダーのSet-Cookieでサーバーからクライ…
Azure DevOpsでGitのブランチとProduct Backlog Itemを紐づけて良い感じにタスク管理できたのでやり方をまとめました。 プロジェクトの作成 Azure DevOpsでプロジェクトを作成します。ソース管理はGit、プロジェクトのテンプレート(Work Item Process)は個人…
この記事を見かけて、Rxでコマンド判定やるの面白そうやんけ…!と思ってやってみました。 ただ、コマンド判定を作る以前に斜め入力やらを画面に表示する部分の実装だけでそこそこのボリュームになったので、この投稿では格ゲーのトレーニングモードでよくあ…
あるテーブルに対して、レコードがあればUPDATEし、なければINSERTするというのをMERGEを使ってやってみました。 UPSERTと呼ばれたりするやつですね。 準備 とりあえず適当なテーブルを作ります。本のタイトル、値段を管理するBookテーブルを作りました。初…
ASP.NET CoreでWebAPIのデバッグをしていてSwaggerUIがすごい便利だったので適当なプロジェクトを作ってSwaggerUIを表示するところまでをやってみます。 nugetパッケージの準備 ASP.NET Core 3.1で適当なWebAPIのプロジェクトを作成します。nugetパッケージ…
仕事でちょっとしたコンソールアプリを作るときにDIやConfigurationの仕組みが欲しかったので試しに使ってみました。 github.com まずコンソールアプリケーションのプロジェクトを作成して、nugetパッケージの管理からConsoleAppFrameworkをインストールしま…
なんとなくC#8のnull許容参照型を試したくなったのでコードを書いてみました。 手っ取り早く試したいのでcsprojを編集してプロジェクト丸ごとnull許容参照型を有効にしました。 <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>netcoreapp3.1</TargetFramework> <Nullable>enable</Nullable> </PropertyGroup> </Project> いつもどおり適当なクラスを作ってみたのですが…
ASP.NET CoreでWebAPIを作り、XML形式のRequestを受け取れるかを試してみました。 .NET Core 3.1、ASP.NET CoreでWebAPIのプロジェクトを作成します。 まずControllerとActionを用意します。 [Route("api/[controller]/[action]")] [ApiController] public c…
C#でexplicitというキーワードを使うと()を使った明示的なキャストを定義できることを知ったので試してみました。 class Program { static void Main(string[] args) { var book = new Book { Id = 1, Name = "はじめてのC#", Price = 1200 }; var bookViewM…