BEACHSIDE BLOG

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

.NET Core

OpenAI: 文章のトークン数を数える (C#, Python, Node)

OpenAI / Azure OpenAI でとりあえずトークン数を数えることってちょいちょいありますよね。今回は C#, TypeScript のついでに Python もメモしておこうかなという話です。 はじめに: トークンとは Python: tiktoken C# Tokenizer Semantic Kernel: GPT3Tok…

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

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

Azure Functions のローカルデバッグ時に LogLevel を変えたい

Azure Functions で、本番環境でのログレベルと、ローカルの PC でデバッグでログレベルは変えたいときにどう設定するかのお話です。 2021年7月時点で C# の Azure Functions v3.x (バージョンに関する詳しいことはここ)での話です。 ログレベルの設定は、…

ASP.NET Core 5 のルーティングの基本

ASP.NET Core のルーティングについての簡単な自分用メモです。ようは Endpoint Routing についてです。 タイトルでは ASP.NET Core 5 と書きましたが Endpoint Routing は v2.2 で追加されて以前の Routing 機能よりパフォーマンスの向上もしているので使わ…

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 の追加 出力ディレクトリに常にコピー…

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 基本的な使い方 準備 …

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

自分のアプリから Slack への通知を、Azure Functions の Custom Bindings を使って作ります。 Slack の Incoming Webhook を使うことで簡単に Slack へ送信できるため、Logic Apps ...いやそれより Functions で HTTP Request 投げた方が早いですが、時間を…

MS Teams 通知用の Azure Functions の Custom Bindings を作る

Azure Functions には、バインディング ( bindings ) という仕組みがあります。これを使うことでいちいち細かいコードを書かなくても設定と少量のコードで、Queue トリガーを指定したり、Cosmos DB からデータを取得したり登録したりできます。 bindings の…

Durable Functions: Human interaction pattern ( 人による操作 pattern )

Azure Functions の拡張機能である Durable Functions にはいくつかの実装パターンがありますが、ここでは Human interaction pattern を取り上げます。 今年の1月頃に書きかけてから、書くほどのことでもないなーと放置してたブログを更新しました...あの頃…

Speech Service の Speech To Text で音声をコンソールに表示する ( Azure Cognitive Services )

Microsoft Inspire で HoloLends 使った翻訳デモがあったりして盛り上がりを感じたので久々に触ってみようと思いました。 今回は、話した音声を Speech to Text でテキスト化して表示するコンソールアプリを作ります。 プロジェクト作成と Nuget のインスト…

TensowFlow の学習モデルを C# で読み込む( ASP.NET Core 編)

犬種の画像分類の学習モデルを ASP.NET Core に組み込みんで画像分類できるようにします。 Azure の Custom Vision で画像の分類器を秒殺で作成することで(盛りました、作成に数分くらいです)、TensorFlow の画像分類のモデル作成のターンでは、機械学習の…

TensowFlow の学習モデルを C# で読み込む(コンソールアプリ編)

犬種の画像分類の学習モデルを C# のコンソールアプリに組み込みんで画像分類できるようにします。 Azure の Custom Vision で画像の分類器を秒殺で作成することで(盛りました、作成に数分くらいです)、TensorFlow の画像分類のモデル作成のターンでは、機…

ASP.NET Core の インメモリー キャッシュ 機能を使う ( in-memory cache )

ASP.NET Core 2.2 で In-Memory にデータをキャッシュしておくための専用の機能のひとつ、System.Runtime.Caching/MemoryCache の使い方について軽く整理してみました。 In-Memory キャッシュの利用ガイドライン コーディング Nuget Package のインストール …

csproj のバージョン 管理 について

.NET Core のプロジェクトでなんか作っててもバージョン情報は、csproj でちょいちょいーっとしか管理してなかったので多少なりとも知っておきたいなーと感じました。 とゆーことで最近(NuGet 4.0 以降、MSBuild 15.1 以降)の.NET Core でのバージョン管理…

Azure Functions V2 の Startup.cs で appsettings.json を読み込む(2019年5月バージョン)

前回書いた Azure Functions の DI の方法だと、ASP.NET Core ではよく使う appsettings.json の読み込みがデフォルトで設定されていません。 local.setting.json ローカルデバッグ用の環境変数の設定はできるけど、 で困るのは Array とか object に対応し…

Azure Functions V2 での DI ( Dependency Injection ) : 2019年5月編

気づけば Azure Functions V2 のC#で DI ( Dependency Injection )が正式にサポートされましたね。依存性の注入とか依存関係の注入とか、MSのドキュメントだと依存関係の挿入とかってやつです。 実装のざっくりな要点は以下だと思ってます。 Startup.cs で D…

Azure Bot Service で作成した Echo Bot (SDK V4.3.2)のソースをローカルでデバッグしたら 500 エラー

最近(2019/4ごろ) Azure Bot Service でチャットボットを作成してソースをダウンロードし、デバッグしても動かないということがあったのでちょっと調べてみました。 このエラーの対処もまた色々な変更ですぐに対処方法が変わるでしょうけど、メモしておきま…

Bot Channel のコールドスタート対策( Azure Bot Service )

Azure Bot Service では、WebChat とか外からの接続は Bot Channel 経由でなります。 WebChatとかだとここが Cold Start するので、たまーにアクセスすると初回のみ遅くて残念(一昔前よりはだいぶ早くなったけど!)。 ならば定期的にヘルスチェックして Co…

Azure Cosmos DB の一意キー制約(Unique Key Constraints)

Cosmos DB の一意キー制約(Unique Key Constraints)について、実装方法やエラー時の挙動を調べたメモです。 いきなり余談ですが、 一昔前に Cosmos DB で Collection と呼ばれていたものは、Azure の Portal だとまだ "Collection" と表現されていますが、…

Azure Cosmos DB Emulator を使ってみた(2019年2月編)

ローカル環境だけで開発が進めれるよう Azure Cosmos DB Emulator があります。 接続文字列は固定なので、ASP.NET Core で使うなら appsettings.Development.json とかに直接接続文字列書いたりも許容範囲化と思いますし、便利に使えそうだと思っています。 …

Azure Function V2 (C#) で Run From Package の CICD と Azure DevOps (4/4)

Azure Functions V2 の Release pipeline の作成その2です。前回はローカルにデプロイしましたが、今回は Blob にデプロイするバージョンです。前回より実践的な方法となります。 ただ、2018年12月時点だと Azure DevOps で Azure Functions V2 の Run From …

Azure Function V2 (C#) で Run From Package の CICD と Azure DevOps (3/4)

今回は、Zip デプロイ・Run From Package の CI/CD パイプラインを作ります。具体的には、Azure DevOps 上で Build Pipelines と Release Pipelines を構築します。 以前の回で作成した Azure Functions V2 のプロジェクトを使ってやります。

Azure Function V2 (C#) で Run From Package の CICD と Azure DevOps (2/4)

今回は Azure Function Core Tools の CLI を使って Blob Storage へ Zip デプロイ、Run From Package する方法のメモです。前回作成したプロジェクトを使って進めていきます。