noxi雑記

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

2019-01-01から1年間の記事一覧

デバッグで追いかけるAngularのViewレンダリング

この記事は Angular #2 Advent Calendar 2019 の12日目の記事です。11日目は @kawakami-kazuyoshi さんの Predictive Prefetching、PrefetchとGuess.js、時々、Angular でした。 この記事は普段利用している Angular がどのように View を表示・更新している…

ApplicationInsightsのアラートをTeamsに送信する(シンプルなWebhook)

ApplicationInsights には特定のログや Metrics を検知するとメールや SMS 、Webhook で通知するアラートの機能があります。Webhook 送信時の Body はカスタマイズ可能なので、 Teams のシンプルな方の Webhook に対してアラートを送信してみます。

C# 8.0のNull許容参照型を有効にする

C#

先日 .NET Core 3.0 がリリースされ、同時に C# 8.0 もリリースされました。色々と先行き不安なところはありつつも、C# 8.0 最大の変更点は参照型が null なり得るかどうかをコード上で明示できる Null許容参照型 の機能でしょう。 Kotlin や TypeScript な…

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…