yotiky Tech Blog

とあるエンジニアの備忘録

.NET Core

C# - ZIP を操作する

目次 目次 検証環境 ZIP を操作する 圧縮する 展開する ZIP 内のファイルを列挙する 一部だけ展開する ファイルを削除する ファイルを追加する 展開せずにテキストファイルの内容を取得する サンプルコード全文 ZipArchive 参考 検証環境 .NET Core 3.1 LINQ…

.NET Core で Shift-JIS エンコードを扱う

目次 目次 検証環境 実装 補足 Encoding.Default UTF-8 参考 検証環境 .NET Core 3.1 System.Text.Encoding.CodePages 5.0.0 実装 NuGet で System.Text.Encoding.CodePages をインストールする。 Encoding.RegisterProvider(CodePagesEncodingProvider.Inst…

Azure Functions で アップロードした ZIP ファイルの中身を列挙する

目次 目次 検証環境 実装 エンコード 参考 検証環境 Azure Functions v3 実装 using System.IO.Compression; foreach (var file in form.Files) { using (var stream = file.OpenReadStream()) using (var zip = new ZipArchive(stream, ZipArchiveMode.Read…

Azure Functions で 複数ファイルをアップロードする

目次 目次 検証環境 サーバーサイド クライアントサイド webkitdirectory 属性 Postman 検証環境 Azure Functions v3 Postman Chrome Edge (Chromium) サーバーサイド クライアントからは、multipart/form-data 形式で POST してもらう想定。 [FunctionName(…

Azure Functions で Swagger UI

NSwag は NSwag.SwaggerGeneration.AzureFunctionsV2 が更新されておらず、V3ではエラーが出て動かなかったため、Swashbuckle を使用する。 目次 目次 検証環境 実装 参考 検証環境 Azure Functions v3 AzureExtensions.Swashbuckle v3.2.2 古いライブラリに…

Azure Functions で Azure Cosmos DB (Table) を操作する

目次 目次 検証環境 実装 テーブル作成 挿入 取得 削除 補足 参考 関連記事 検証環境 Azure Functions v3 Microsoft.Azure.Cosmos.Table v1.0.8 古いライブラリに注意 WindowsAzure.Storage は非推奨 Microsoft.Azure.CosmosDB.Table はまもなく非推奨 実装 …

Azure Functions で Azure Queue Storage を操作する

目次 目次 検証環境 実装 キューの作成 メッセージの追加 メッセージの表示 メッセージの更新 メッセージの受信 メッセージの削除 キューの削除 その他 メッセージのエンコード 関連記事 検証環境 Azure Functions v3 Azure.Storage.Queues v12.6.0 実装 NuG…

Azure Functions で Azure Table Storage を操作する

目次 目次 検証環境 実装 挿入 取得 削除 参考 関連記事 検証環境 Azure Functions v3 Microsoft.Azure.Cosmos.Table v1.0.8 古いライブラリに注意 WindowsAzure.Storage は非推奨 Microsoft.Azure.CosmosDB.Table はまもなく非推奨 実装 NuGet でライブラリ…

Azure Functions で Azure Blob Storage にファイルを保存する

目次 目次 検証環境 実装 関連記事 検証環境 Azure Functions v3 Azure.Storage.Blobs v12.8.0 実装 Azure Functions のプロジェクトに NuGet で「Azure.Storage.Blobs」をインストールする。 using Azure.Storage.Blobs; using Azure.Storage.Blobs.Models;…

Azure Functions で Shared Access Signatures (SAS) を発行する

目次 目次 検証環境 概要 実装 コンテナの SAS トークン Blob の SAS トークン 参考 関連記事 検証環境 Azure Functions v3 Azure Storage Blobs v12.8.0 概要 Shared Access Signatures (SAS) は、リソースへのアクセス権に制限を付けてトークンを生成し、S…

Azure Functions で Azure App Configuration から設定を読み込む

Azure App Configuration は複数のアプリケーションで、アプリケーション設定と機能フラグを一元に管理し共有するサービス。 目次 目次 App Configuration を設定する App Configuration ストアに接続する 接続文字列 実装 エンドポイント Azure Functions …

Azure Functions で Startup クラスを定義して DI を利用する

Azure Functions は、v2 で DI を正式にサポート。 Startup クラスを(自分で)定義し、 DI を設定することで Azure Functions にインジェクションすることができるようになる。 目次 目次 検証環境 インストール 使い方 基本的な使い方 環境変数を設定する …

Azure Functions で Azure Storage への接続情報

目次 目次 検証環境 直書き 設定情報から取得 設定 実装 参考 関連記事 検証環境 Azure Functions v3 Azure Blob Storage Azure.Storage.Blobs v12.8.0 (ライブラリ) 直書き サンプルコード向けなら直書き。 var blobServiceClient = new BlobServiceClient(…

Azure Functions で Azure Blob Storage からファイルを取得する

目次 目次 検証環境 実装 関連記事 検証環境 Azure Functions v3 Azure.Storage.Blobs v12.8.0 実装 Azure Functions のプロジェクトに NuGet で「Azure.Storage.Blobs」をインストールする。 using Azure.Storage.Blobs; private static string connectionS…

Azure Functions で MeCab.DotNet を使って形態素解析

目次 目次 概要 インストール サンプル実装 プロジェクト設定 Azure Blob Storage にアップロード 実行 概要 Azure Functions で形態素解析を行うため MeCab.DotNet を使用します。こちらのライブラリはローカルディレクトリから辞書ファイルを読み込むため…

MeCab.DotNet にユーザー辞書を追加する

目次 目次 インストール 辞書の作成 実装 参考 関連記事 インストール 本家 MeCab より Windows 用のバイナリパッケージをダウンロードします。 ダウンロードしたインストーラーを実行します。 今回は辞書の文字コードは「SHIFT-JIS」を選択。 辞書の作成 以…

C# で MeCab.DotNet を使って形態素解析

目次 目次 インストール サンプル実装 関連記事 インストール NuGet で「MeCab.DotNet」をインストールします。 MeCab.DotNet は「MeCab」、「NMeCab」を .NET Core に移植したパッケージです。 github.com 以下パッケージサイトから抜粋。 "MeCab" は、日本…

C# 8.0 の主な新機能

目次 目次 リリース時期 null 許容参照型 機能 有効化/無効化 csproj ファイルにオプションを指定する #nullable enable|disable|restore [warnings|annotations] ! (null 免除) 演算子 フィールドやプロパティでの利用 null 許容値型との違い 建設中 コード…

C# の新機能

目次 C# 4.0 C# 5.0 C# 6.0 C# 7.0 C# 7.1 C# 7.2 C# 7.3 C# 8.0 C# 9.0 Unity の対応表 Unity Runtime version (Equivalent) C# version Compiler 2017 .NET 3.5 C# 4.0 mcs (Mono) .NET 4.6 C# 6.0 mcs (Mono) 2018.1 / 2018.2 .NET 3.5 C# 4.0 mcs (Mono)…

C# 9.0 の主な新機能

目次 目次 リリース時期 init 専用セッター Records トップ レベル ステートメント ターゲットからの new 型推論 ラムダ式の引数を破棄 ローカル関数への属性適用 パターンマッチングの拡張機能 コード置き場 リリース時期 .NET 5 init 専用セッター public …

WPF から Application Insights に Telemetry を送信する

目次 目次 Application Insights 非HTTPアプリケーション向け 検証環境 手順 パッケージのインストール 実装 実行結果 Application Insights Application Insights は Azure Monitor の機能であり、開発者や DevOps プロフェッショナル向けの拡張可能なアプ…

WPF - DesignerProperties

DesignerProperties はデザインモードか判定に使われるクラスですが、手元の環境で上手く機能しなくなっていたので簡単に調査した結果です。 目次 目次 検証環境 内容 使い方 動作確認 WPF (.NET Framework) WPF (.NET Core) 検証環境 Visual Studio 2019 (1…

WPF - CommandLocker

Button にバインディングしたコマンドを共通してロックする機構 CommandLocker。 github.com ロックの種類は、Guidをキーとしたシンプルなロックと、ロックする時に渡した値をアンロックする際にも渡す必要があるトリガーロックの2種類です。 トリガーロック…

C# - 固定サイズのキュー

ラッパークラス 最小限の実装。Queue がラップされるので Queue で必要な機能は全部中継する必要がある。 public class FixedSizeQueue<T> { private ConcurrentQueue<T> queue = new ConcurrentQueue<T>(); private object lockObject = new Object(); public int Si</t></t></t>…

HoloLens2 に FastEnum を導入する

追記 (2020/11/14) 検証環境 補足 導入 FastEnum MessagePack 追記 (2020/11/14) FastEnum 1.6.0 がリリースされました。 1.5.x では System.Runtime.CompilerServices.Unsafe は 4.7.1 以上が必要でしたが、1.6.0 では 4.5.0 以上になっており、要求される…

Unity Editor の MessagePack CodeGen が動かない原因と一時対処

原因 一時対処 参考 原因 最新の MessagePack for C# (執筆時のバージョンは 2.2.60 ) の MessagePack CodeGen ウィンドウでは、ジェネレートが動かなくなっています。中でdotnet tool コマンドを使っていますが、.NET Core ツールについては前回の記事を…

.NET Core ツール

.NET Core ツール インストール グローバルツール ローカルツール ツールを使用する コマンドを確認する グローバルツールを呼び出す ローカルツールを呼び出す プレフィックス dotnet- 参考 .NET Core ツール dotnet コマンドで、tool SDK コマンドを使うと…

HoloLens2 で MagicOnion v3 を動かす

目次 目次 構築環境 補足 Unity のベース構築 gRPC のコード修正・ビルド Grpc.Core.dll grpc_csharp_ext.dll grpc_csharp_ext_dummy_stubs.c 動作確認 構築環境 MagicOnion.Client.Unity.unitypackage 3.0.12 MessagePack 2.2.60 MagicOnion.Hosting 3.0.13…

HoloLens2 で入力方法として QRコード を使う

前回「HoloLens2 でQRコードのスキャンを実装する」では、QRコードスキャンの実装方法を紹介しました。 QRコードのスキャンが使えると、QRコードを介してアプリに文字列を流し込めるようになります。 試しに、入力フィールドの横にQRコードを読み込むボタン…

WPF - MahApps の覚書

目次 目次 前提 WindowCommands ListBox HamburgerMenu 参考 ボタンとして使用する ToolTipを表示する 前提 MahApps.Metro MahApps.Metro.IconPacks App.xaml でリソースを読み込む。 <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> </resourcedictionary.mergeddictionaries></resourcedictionary></application.resources>