BEACHSIDE BLOG

Azure と GitHub と C# が好きなエンジニアの個人メモ ( ・ㅂ・)و ̑̑

C#

Visual Studioで File Scoped Namespaces をデフォルトに設定して無駄なネストをひとつ減らす (C#)

Visual Studio で file scoped namespaces の設定って今日の今まで毎回手作業で直してたんですが、VS の設定であるんじゃねーのかと思いついて気づいて調べたらありましたのでメモしておきます。 File Scoped Namespaces とは Visual Studio 2022 で File Sc…

プロンプトエンジニアリングの基礎: 2/3 (C# +Azure.OpenAI SDK)

前回から引き続きで、DeepLearning.AIというサイトの無償コンテンツのひとつで OpenAI + Python の「ChatGPT Prompt Engineering for Developers」を受講して学んだことのまとめメモの2回目です。 プロンプトエンジニアリングの基礎: 1/3 (C# +Azure.OpenAI …

プロンプトエンジニアリングの基礎: 1/3 (C# +Azure.OpenAI SDK)

DeepLearning.AIというサイトでは、アカウントを登録するだけで AI に関する学習コンテンツがあります。 その中の無償コンテンツのひとつで OpenAI + Python の「ChatGPT Prompt Engineering for Developers」を受講してみました。 そこで学んだことを Azure…

Azure OpenAI で C# のSDK を使うとき最初に知っておきたい入門知識

今回は C# で OpenAI の SDK で ChatCompletion API を使ってチャットのサンプルコードを書きつつ、SDK を使うとき最初に知っておきたいいくつかの Tips を書きます。今回はざっくり以下を環境で話を進めます。 Azure OpenAI でモデルは GPT-3.5 以降のモデ…

Graph API で Azure AD B2C のユーザーを次回サインイン時にパスワードを強制変更させたいときの注意点 ( C# )

Azure AD B2C のユーザーが次回サインインするときにパスワードの変更を強制させるのを Graph API でセットしたいときの話です。 以下のドキュメントで、ドキュメントの先頭に必要な permission が書かれており、Permission type が Application の場合は Us…

Durable Functions で instanceId を確認したい (C# / Typescript / Python)

Durable Functions でたまに instanceId を取得したいときがあります。例えば Activity function で external Event の URL を作りたいときとか。私的にはあまり使わない Durable functions の Python ではどうだっけって気になったので、C# と Typescript …

HttpTrigger の Azure Functions でパスやリクエストヘッダーの値を使って DI する (C#)

今回は C# の Http Trigger の Azure Functions の DI する際の Tips です。 例えば、こんなパス /api/costomers/abc123/order にアクセスする際、abc123 が顧客の ID でその値を使って DI したいときとかの話です。後述しますがなんでも DI した方がいいっ…

Cosmos DB Change Feed の Azure Functions (C#) 実装入門 2023 年編 (Function App / Cosmos DB Trriger)

2022年の後半に Microsoft.Azure.WebJobs.Extensions.CosmosDB の v4 が GA して実装方法も改良されたので、ここで改めて Cosmos DB の Change Feed の開発方法 ≒ Cosmos DB Trigger の Function App の実装の基礎や Tips を書いていきます。 なお、Change F…

GitHub Actions で ASP.NET MVC ( .NET Framework 4.8 ) を Azure App Service (Web App) へデプロイ

ASP.NET MVC ( .NET Framework 4.8 ) のアプリを GitHub Actions での CI/CD して Azure の App Service (Web Apps) へのデプロイするまでの方法を書いていきます。 ここら辺のドキュメントとか情報は少ないのが書こうと思ったモチベーションでした...と思っ…

C#: ビルドした exe や dll が AnyCPU / x86 / x64 かを確認する

ビルドして出力された exe や dll が AnyCPU / x86 / x64 を確認する方法はいくつかあります。 私は今回 Windows で Visual Studio が入ったローカル環境で試すので、手軽に確認できる corflags.exe を使っていきます。 実際に知りたいのは、諸条件下で msub…

Cosmos DB の Bulk Executor を使った一括インポート

概要: learn.microsoft.com チュートリアル: learn.microsoft.com ざっくりまとめ: サポートしてる API は、Azure Cosmos DB SQL API と Gremlin API 一括インポート API と一括更新 API SDK v2 だと外部 SDK が必要だが、SDK v3 ではサポートされているので…

GitHub Actions で Azure API Management の CI/CD (ASP.NET Core 6)

Azure API Management の裏に Web API があると、Web API の CI/CD と一緒に API Management の APIs も更新したいですよね。 公式ドキュメント ではめんどくさそうな実現方法が書かれていますが、APIs だけ更新したいなら Azure CLI で実現するのがシンプル…

ASP.NET Core 6 で Open API (Swagger) の定義ファイルを CLI で出力する (ローカル環境で実行編)

今回は ASP.NET Core 6 で Swashbuckle.AspNetCore の CLI を使って json または YAML で定義ファイルを出力するポイントを書いていきます。 ASP.NET Core 6 と書きましたが 3系や5系も基本的には一緒です。2系だと多少異なりますがもう使ってないと思うので…

Graph API で Azure AD B2C のコンシューマーユーザーを作成する (C#)

C# で B2C のユーザーを登録する方法を書いていきます。C# の話というよりは、Azure AD B2C の設定がほとんどって感じです。 事前に知っておきたい知識 ユーザーアカウントの種類 ユーザーアカウントの違い B2C でサービスプリンシパルの作成 Application の…

enum に任意の文字列を割り当てる (C#)

過去に何度もやってると思うけど調べる機会があったので自分でメモしておこうと思います。 ここではパフォーマンスを気にしないケース (ざっくりなイメージですが 1000 回実行で 3~7 ミリ秒くらいが許容されるくらい) を想定しています。一般的なエンタープ…

複数プロジェクトあるソリューションの C# の Language Version (言語バージョン)をいい感じに統一する

C# でひとつのソリューションの中に複数のプロジェクトがあるのはよくあると思います。そしてTarget framework のデフォルトの言語のバージョンを上位バージョンにあげることってよくありますよね。 今回は「Directory.Build.props で指定することでソリュー…

Cosmos DB で RBAC を構成して接続文字列の管理を不要にする ( Azure, PowerShell )

2月ごろに Azure Cosmos DBの RBAC のアナウンスされて気になってたけど放置してたのをついに書く時がきました(←気まぐれですが)。実装に関することはいつも通り C# の話になります。 書いてたら思った以上に長くなってしまいました... Cosmos DB の RBAC …

Microsoft Graph API で グループ 情報を操作する ( C#, .NET SDK )

前回のブログでは、C# の SDK を使ってユーザーの操作について触れましたが、今回はグループの操作をしていきましょう。 事前準備 グループの作成 グループの作成(ユーザー追加無し) グループの作成(ユーザー追加もする) グループにメンバーを追加する …

Microsoft Graph API で ユーザー 情報を操作する ( C#, .NET SDK )

Microsoft Graph API を使って Azure Active Directory (略して Azure AD とか AAD) からユーザーの情報を操作するのってかなり昔から使ってるんですがブログにしたことがなかったので改めて書いてみようと思いました。 今回は C# の SDK を使ったユーザーの…

Azure Cognitive Search - 検索のインデックス更新の基礎 ( C#, SDK v11 )

Azure Cognitive Search でインデックスを更新する際 C# でサクッと更新できるのですが、それに関するメモです。 インデックスの更新は大きく2パターン Pull model Push model SDK v11 (C#) の基礎知識 パッケージ名 Json の Serializer 実装してみる Azure …

Cognitive Services: Read API 3.x - OCR の API を試す (2020/10月)

2020 年は1月から9月の間で Cognitive Services の Vision カテゴリーの中の OCR の機能がちょろちょろとアップデートしてました。 OCR の今までのアップデートを振り返りつつ、最新の Read API v3.1 Preview2 を試してみます。 Cogbot #29でもお話しした内…

アダプティブダイアログ を使って Echo Bot を作ってみる (Bot Framework, C#)

先日 Cogbot でお話しした際にコーディングだけですましてしまったので、そのフォローアップとして話した内容やコードをまとめました。 はじめに Echo Bot の作成 EchoBot の Adaptive dialog を書いてみる root.dialog の追加 出力ディレクトリに常にコピー…

ASP.NET Core でセキュアな レスポンスヘッダー を設定する

Web を扱ってると「レスポンスヘッダー"ちゃんと"しましょう」ってやつはいつの時代でもあるものですが、それ系をあまりアウトプットしてなかったので書いておこうと思います。 ちなみに ASP.NET Core 3.1、動作確認した環境は個人的な興味のある Azure の W…

Azure AD B2C のカスタム属性を Graph API で管理する (後編)

前回は AAD B2C の設定をするだけで力尽きました。今回は Console App を使って、前回設定した Azure AD B2C のユーザーの情報やカスタム属性を取得・変更してみましょう。 カスタム属性は、前回 Tenant という名前の属性を追加したってことを前提に、Tenant…

Azure AD B2C のカスタム属性を Graph API で管理する (前編)

Azure AD B2C では、ユーザーの情報として Email や表示名、姓、名といったの一般的な Claim があります。それに加えて独自の Claim を追加することができます。 それがカスタム属性です。 Azure Portal からでは、カスタム属性を作成することがはきますが、…

EF Core の Global Query Filters 機能で論理削除フラグをいい感じに扱う ( Entity Framework Core )

Entity Framework Core では、はるか昔 (v2.0) に Global Query Filters (グローバルクエリフィルター)という Cool な機能が追加されました。 わかりやすそうなユースケースとして 論理削除されたデータはデフォルトで除外して、データを取得する マルチテ…

Cosmos DB の Change Feed 機能と使い方 ( Azure )

Azure Cosmos DB の Change Feed は、データの変更を検知してイベントを発火できる超便利な機能です。Azure Functions の Cosmos DB Trigger を使うことで超簡単に利用できます。 個人的には近年 RDB はほぼ使ってなくて Cosmos DB ばっか使ってるわりに Cha…

Jupyter Notebook で C# や PowerShell を実行する

.NET Interactive で C# が Jupyter Notebook 上で動くのは結構前からありましたが、PowerShell も使えるようになったらしいので試してみました。 (ちなみに普段 PowerShell は滅多に使いまてん...) 準備 conda update .NET Core 3.1 SDK のインストール d…

Slack 通知用の Azure Functions の Custom Bindings を作る (2)

前回 Slack 側の準備と送信したいメッセージの json フォーマットを作りました。 blog.beachside.dev 今回は本題の Azure Functions の Custom Bindings を実装します。 作った順にコードを解説していきますが、コード全部は下の方にリンク張ってます。 Azur…

C# で System.Text.Json 使って Json を操作するときに気になったポイント( .NET Core 3 ~)

C# では .NET Core 3系にて Json のシリアライザーとして System.Text.Json が生まれました。 長らくお世話になった Json.NET - Newtonsoft とのお別れです。 多少お作法が異なるので、個人的に気になった点を整理してみました。 TL;DR 基本的な使い方 準備 …