ひでぼ~blog

C#ときどきゲーム

ProcessXを使ってシェルスクリプトを実行してみる

C#

CySharpから出ているProcessXが良いらしいぞという噂を聞いたので試してみました。 ProcessXはcmdやPowerShellで実行するコマンドたちをC#から呼びやすくするライブラリのようです。 github.com やってみる 試しにdotnetコマンドを実行してバージョン情報を…

Azure Static Web Appsのステージング機能を試す

ステージング機能が気になった&良さそうだったので試してみました。 そもそもステージング機能とは Azure Static Web Appsを使ったWebアプリケーションは、GitHubのリポジトリに変更があるとCI/CDが走って本番環境が更新されるようになっています。 例えばd…

FFXIVQuickLauncherのソースを読んでみる

C#

サードパーティ製のFF14のランチャーにFFXIVQuickLauncherというものがあります。 公式のランチャーよりもシンプルで、クライアントの起動が速い、Discordとの連携機能があるとかいろいろと便利らしいです。 FFXIVQuickLauncherを起動した直後の画面 公式の…

C#8.0のRange構文を試す

文字列の整形をするときにRange構文を使ってみたらかなり体験が良かったのでまとめました。 C#8.0から配列などに対してarray[x..n]のような書き方ができるようになりました。配列のxからnの範囲を取得するような感じです。 ハイフンなしの郵便番号をアタマ3…

BlazorでlocalStorageを使ってデータを保存する

つい先日、「Kakuge Lounge Finder」というBlazor WebAssemblyで作ったWebアプリを公開しました。 www.kakuge-lounge.com 格ゲーでオンラインの対戦相手を募集する際に、希望の対戦相手の条件などをツイートしてTwitter上で募集するという文化があるのですが…

TerraformでAzure Static Web Appsのリソースを作ってみる

Azure Static Web Appsが正式にリリースされたので試してみました。 準備 まずTerraformのインストールから。 公式サイトからzipをDLし、解凍して出てきたexeを適当なフォルダに置いてPATHを通しました。 www.terraform.io 次にAzure CLIをインストール。 Po…

ES6のスプレッド構文で配列の先頭を取得する

JavaScriptで配列の先頭の要素を取得したいとき、shiftを使うと先頭の要素を取得できますが、取得した配列からその要素が消えてしまいます。 const items = ["回復薬", "回復薬グレート", "こんがり肉", "解毒薬"]; // shiftだと配列から先頭が消える const …

Blazorで作ったWebアプリをAzure Static Web Appsにデプロイしてみる

BlazorとAzure Static Web Appsが気になってたのでやってみました。 GitHubにリポジトリ作成 Azure Static Web Appsにデプロイする際のソースとしてGitHubのリポジトリを使うので、Blazorで作った WebアプリのソースをGitHubに上げておきます。 今回はBlazor…

ValueTupleで変数をスワップする

C#

ValueTupleを使うと一時変数を使わずに変数のスワップができるというのを聞いたので試してみました。 とりあえずやってみる 言われるがままにintの変数を2つ用意してスワップしてみました。 var a = 1; var b = 3; // スワップ前 // a = 1, b = 3 Console.Wr…

FFXIVACTプラグインのサンプルを作った

C#

FFXIVで戦闘系エンドコンテンツを攻略する人にとってはおなじみのAdvanced Combat Tracker(以下ACT)という便利ツールがあります。 advancedcombattracker.com C#でプラグインを自分で作ってインポートできるようになっているのですが、 プラグインを作る際…

C#のrecordとclassとstructを比較した

C#

C#9から登場したrecordで型が定義できるようになって、record、class、structなどよく分からなくなってきたので、いろいろ比較しつつ整理してみました。 class struct record 参照型 or 値型 参照型 値型 参照型 継承 できる できない できる Equals() 参照…

C#9.0のInit Only Setterを試す

C#

.NET 5がリリースされてC# 9.0モチベが高まったのでやってみました。 Init Only Setterを使うとImmutableな型を定義するのがラクになります。 C# 9.0以前の書き方 プロパティをget onlyにしてコンストラクタで各プロパティを初期化しないとダメでした。 clas…

VS2019のスタートページに開発者向けNewsを表示したい

VS2017はスタートページに開発者向け情報というMS関係の最新技術情報が表示されていました。 地味に好きな機能で、技術の動向をキャッチする貴重なソースだったのですがVS2019では無くなってしまいました。 VS2019でも表示できないかなと調べてみたら有志の…

Visual Studioのクイックアクションで生成されるフィールドの命名規則を変更する

コンストラクタで受け取った引数をフィールドに代入する時、Visual Studioのクイックアクション(電球ボタン)を使うとフィールドを定義して初期化するコードを自動で生成してくれます。 コンストラクタの引数にカーソルを当ててクイックアクションを押すと…

HTTPクッキーの有効期限について調べた

Web

ブラウザを閉じたときに消えるクッキーとそうじゃないクッキーの違いがよく分かっていなかったので調べました。 ブラウザを閉じたときに消えるクッキー セッションクッキーと呼ばれます。 クッキーはHTTPレスポンスヘッダーのSet-Cookieでサーバーからクライ…

Azure DevOpsのBoardsと開発作業を紐づけられるようにした

Azure DevOpsでGitのブランチとProduct Backlog Itemを紐づけて良い感じにタスク管理できたのでやり方をまとめました。 プロジェクトの作成 Azure DevOpsでプロジェクトを作成します。ソース管理はGit、プロジェクトのテンプレート(Work Item Process)は個人…

RxJSで格ゲーのキーディスプレイ的なものを作った

この記事を見かけて、Rxでコマンド判定やるの面白そうやんけ…!と思ってやってみました。 ただ、コマンド判定を作る以前に斜め入力やらを画面に表示する部分の実装だけでそこそこのボリュームになったので、この投稿では格ゲーのトレーニングモードでよくあ…

T-SQLのMERGEを試した

あるテーブルに対して、レコードがあればUPDATEし、なければINSERTするというのをMERGEを使ってやってみました。 UPSERTと呼ばれたりするやつですね。 準備 とりあえず適当なテーブルを作ります。本のタイトル、値段を管理するBookテーブルを作りました。初…

ASP.NET CoreでSwaggerUIを使ってみる

ASP.NET CoreでWebAPIのデバッグをしていてSwaggerUIがすごい便利だったので適当なプロジェクトを作ってSwaggerUIを表示するところまでをやってみます。 nugetパッケージの準備 ASP.NET Core 3.1で適当なWebAPIのプロジェクトを作成します。nugetパッケージ…

ConsoleAppFrameworkを試した

C#

仕事でちょっとしたコンソールアプリを作るときにDIやConfigurationの仕組みが欲しかったので試しに使ってみました。 github.com まずコンソールアプリケーションのプロジェクトを作成して、nugetパッケージの管理からConsoleAppFrameworkをインストールしま…

null許容参照型を試した

C#

なんとなく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 APIでXML形式のRequestを受け取る

ASP.NET CoreでWebAPIを作り、XML形式のRequestを受け取れるかを試してみました。 .NET Core 3.1、ASP.NET CoreでWebAPIのプロジェクトを作成します。 まずControllerとActionを用意します。 [Route("api/[controller]/[action]")] [ApiController] public c…

explicit演算子を試した

C#

C#でexplicitというキーワードを使うと()を使った明示的なキャストを定義できることを知ったので試してみました。 class Program { static void Main(string[] args) { var book = new Book { Id = 1, Name = "はじめてのC#", Price = 1200 }; var bookViewM…