noxi雑記

.NET、Angularまわりの小ネタブログ

Azure PipelinesのビルドキャッシュでAngular Ivyのビルドを高速化する

Azure Pipelines にはまだプレビューではありますが、 Pipeline caching というキャッシュ機能があります。 Angular 8 時代の Ivy を使用すると Angular Material を組み込んだアプリのビルドが爆遅になったことがあるので、この機能を使用して Angular のビ…

AngularのHTTPインターセプターで同時HTTPリクエスト数を制限する

AngularのHTTPインターセプターと非同期ロック処理を組み合わせると、とても無駄な感じもしますが、AJAXリクエストの同時リクエスト数を制限することができます。ブラウザが同時に6本までしか送らないのでぶっちゃけ無駄な気もしますが、有用なこともあるで…

JasmineのテストでMoment.jsをイイ感じに比較する

JavaScriptの日付ライブラリといえばMoment.js。標準のDateと比較するととても便利です。ただMoment.jsは内部のデータの持ち方が複雑で、ユニットテストで度々問題になります(私はなりました)。 Jasmineでユニットテストを記述するときにイイ感じに比較す…

Angular Material 8のためのImport Blacklist

Angular Materialはバージョン8で @angular/material からのインポートを非推奨にしました。またバージョン9からは @angular/material でのエクスポートがされなくなります。 github.com Importing directly from the root @angular/material entry-point is…

Angular HttpClientのテストコードを書いてみる

AngularのHttpClientを使用するサービスのテスト方法メモです。サービスからHttpClientを使用してAPIコールをしつつ、接続先のベースURLはHttpInterceptorから設定している状況を想定しています。

Angular Materialのテーマカラーをカスタマイズする

Angular MaterialはAngular公式のマテリアルデザインコンポーネントライブラリです。このライブラリのテーマカスタマイズ方法は公式ドキュメントにも記載がされています。 material.angular.io ドキュメントにはマテリアルデザイン標準?のテーマパレットを…

Microsoft TeamsにシンプルなWebhookを送信する

Microsoft TeamsはMicrosoftが開発しているチームコラボレーションツールです。SlackのMicrosoft版です。 Teamsにはいくつかの拡張機能(コネクタ)が存在し、Webhook機能もコネクタとして提供されています。みんな大好きWebhook。Webhookを利用してTeamsに…

Angular + Wijmoの環境でクライアントExcelエクスポートに失敗する

先日 Angular と JSZip の相性問題を倒したと思ったら次は Wijmo の Excel エクスポートが死ぬ問題に当たりました。

ng-content、ContentChild、ContentChildrenはネストしたコンポーネントの中身まで見てくれない

Angularでは @ContentChild や @ContentChildren を使用して <ng-content> の中で入れ子にした子要素を取得することができます。また <ng-content> もセレクターを使用して個別の子要素を取得できます。しかしこれには制約があり、 自分の子要素として直接設置された要素 のみが対象</ng-content></ng-content>…

Angular CLIでJSZipを使用する

JavaScript で ZIP ファイルを動的に生成できる JSZip というライブラリがあります。とても便利なのですが Angular CLI プロジェクトで使用するとコンパイルエラーになるので、その解消方法のメモです。

ASP.NET Coreアプリで特定のURLのみApplicationInsightsにログを送信しない

ASP.NET Core アプリでは NuGet からパッケージを導入することでサクッと ApplicationInsights にアクセスログを連携することができます。ただそのまま導入すると全てのアクセスデータを送信するため、例えば死活監視のエンドポイントに対するアクセスが全て…

Firefoxのfor速度比較が遅すぎると思ったので試してみた(2019/05版)

以前試したJSのループ実行結果、まだちょこちょこアクセスがあったようなので少し条件を変更して最新ブラウザバージョンで再実行してみました。

ビルドや発行時に.NET Core、 .NET Standardのアセンブリのバージョンを指定する

C#

CI のパイプラインで dotnet コマンドを使用して .NET Core や .NET Standard のアセンブリを生成する時に、生成されるアセンブリのバージョンを差し込みたい場合があります。 csproj ファイルで指定する方法とコマンドの引数の2つの方法で指定することがで…

ApplicationInsightsに.NETアプリのログを出力する

C#

MicroBatchFramework でバッチアプリを開発しているときにそのままログを ApplicationInsights に送信してみたので、その防備録です。

Angular MaterialとWijmoの入力コントロールを組み合わせる

Angularを使用するときにデザインとして何を組み込むかは重要な要素です。私は主に Angular Material を使用してマテリアルデザインな Web アプリを開発しますが、 Wijmo の入力コントロールをそのまま組み込もうとすると機能面、デザイン面共に不都合が発生…

MicroBatchFrameworkを試す 3 - バッチ終了のハンドル

C#

前回の記事では MicroBatchFramework で設定ファイルを読み込む方法を書いてみました。この記事は MicroBatchFramework を使用した際の、バッチアプリ終了をハンドルして何か処理を挟み込む方法です。

MicroBatchFrameworkを試す 2 - アプリケーション設定

C#

前回の記事では MicroBatchFramework を使用したバッチアプリの作成と実行、発行を試してみました。この記事は MicroBatchFramework を使用するバッチアプリで設定ファイルを読み込んでみます。

MicroBatchFrameworkを試す 1 - バッチの作成と実行、発行

C#

業務で .NET の簡単なバッチを作る機会があり、どう作ろうかな、、、と悩んでいたときにふと思い出したので使ってみました。 ASP.NET Core で開発している資産を流用したいので CommandLineUtils と Microsoft Extensions 系( DI や Configurations 、 Logg…

Angular の Guard で別のページに遷移させる

Angular の Guard といえば、ページ遷移前に認証情報を取得したり、ページを表示出来るかの権限チェックをしたり、、、ページを表示する前の前処理を色々行う機能です。 Angular 6 までは、 Guard はページを表示できるできないの boolean の値を返すことし…

ASP\.NET Core 2.2でMVCルーティングの条件指定が効かなくなる場合がある

ASP .NET Core 2.2 では MVC ルーティングが Endpoint Routing となり、 特定の場合では破壊的変更になるそうです。この破壊的変更を見事に踏み抜いてしまったので書き置いておきます。 blog.shibayan.jp

EntityFrameworkCoreのValueConverterを試す

ASP.NET Core の All やら App のパッケージを利用すると漏れなく付いてくるという噂の EntityFrameworkCore ですが、2.1からデータベースとやりとりする型とマッピングされるエンティティモデル上のプロパティの型とを変換する ValueConverter が追加されて…

Angularの入力バリデーションをディレクティブとして実装する

Angularで入力バリデーションを実装する際、ReactiveFormではFormControlに対して様々なバリデーションを設定できますが、テンプレート駆動型だと設定することはできません。またReactiveFormもバリデーションを設定できるとは言え、事細かに全てをコードで…

Azure ArtifactsのNuGet認証を手動で追加する

Azure Artifacts は Azure DevOps のパッケージ管理サービスです。自分で作ったライブラリをパブリック、プライベート問わず公開することができます。 Azure Artifacts をプライベートの NuGet サーバーとして使用するには NuGet.Config に認証情報を持たせ…

ASP.NET CoreのWebAPI規約を使用する

ASP.NET Core では WebAPI を実装する際に、どの HTTP ステータスが返るのかを [ProducesResponseType] 属性を使用して設定することができます。しかしながらこの機能、一つ一つの アクションメソッドに対して設定しなければならないため大変面倒でした。 AS…

Angular CDK の Portal で部分的に要素を差し込む

Angular のコンポーネントに対して外のコンポーネントから表示する要素を指定したい場合、 ng-content を使用すると自身の子要素として指定された要素を展開することができます。子要素を展開したい箇所が1つだけであれば ng-content を使用すれば十分ですが…

Angular CDK を使用して全画面ローディングを表示する

Angular Material をインストールすると必須の依存に含まれている Angular CDK (Component Dev Kit) 。 CDK に実装されている Overlay と Portal 、そして Angular Material の Progress spinner を使用して全画面ローディングを作ってみます。

ASP.NET Coreのバリデーションエラー自動応答

ASP.NET Core にはモデルをバリデーションする機能があります。 ASP.NET Core 2.1 では毎回記述していて面倒だったバリデーションエラーのレスポンスを返す処理を自動で返せるようになりました。 ASP.NET Core 2.2 ではこのレスポンス形式に変更が入ったよう…

Xamarinで .NET Extensionsを使ってみる

最近全くと言って良いほどXamarinを触っていなかったnoxiです。 この記事は Xamarin Advent Calendar 2018 の16日目です。15日目は tan-y さんのXamarin.Forms for Windows Forms で特殊な PageRenderer の実装をしようとしてはまった話でした。明日は moonm…

ASP.NET Core で SPA の HTTP ヘッダーを変更する

ASP.NET Core には Angular や React といった SPA を組み込んだテンプレートがあります。これらのテンプレートを使用した際に、 SPA のファイルを返す時の HTTP ヘッダー付与方法について解説します。 TL;DR Startup の Configure で UseSpaStaticFiles や …

ASP.NET と ASP.NET Core のパフォーマンスを比較する(2018年10月版)

もうすぐ.NET Core 2.2が出るという時期ではありますが、ASP.NET Core 2.1のパフォーマンスを見ていなかったため、改めてASP.NETとASP.NET Core + EntityFrameworkのパフォーマンスチェックをしてみました。 何故EntityFrameworkを含めるかというと、私が仕…