log 2019/10/10
Update SPONSORS.md · IdentityServer/IdentityServer4@660f515 · GitHub Update README.md · IdentityServer/IdentityServer4@4bd439f · GitHub
sponsors に追加。 https://udelt.no/ って聞いたことないけど、ドメイン通りノルウェーの会社っぽい。プラチナってすごいな。MS より先に並んでるし。
Add xml docs for IHtmlGenerator · aspnet/AspNetCore@0859105 · GitHub
IHtmlGenerator
のコメント追加。
この interface は Tab Helper を作る時に主に使われるものなんだろうか。
- Extend Built In Label Tag Helper In ASP.NET Core Application
- ASP.NET Core MVC を使ってドロップダウンリストをいい感じに実装する - しばやん雑記
Apply code fencing to Router element in example (#14954) · aspnet/AspNetCore.Docs@438b739 · GitHub
code fencing
っていう用語を覚えた。
そして Router
っていうから何かと思ったら、Blazor の Router か。react-router 意識ってわけじゃないかもだけど、ほへーってなった。
Performance best practice update with davidfowl samples (#14734) · aspnet/AspNetCore.Docs@1e14273 · GitHub Performance best practice update with davidfowl samples (#14734) · aspnet/AspNetCore.Docs@1e14273 · GitHub
以下のドキュメントの更新。 ASP.NET Core Performance Best Practices | Microsoft Docs
サンプルコードも結構勉強になる。
IHttpContextAccessor
を保存するのは Good だが HttpContext
は Bad とか気づかないなぁ。でもこういうドキュメントがきちっと出てくるのはいいなぁ。
以下の Logging のドキュメントの更新。 Logging in .NET Core and ASP.NET Core | Microsoft Docs
以下の Issue の修正。 dotnet ef migrations remove throws `System.NullReferenceException` · Issue #18178 · aspnet/EntityFrameworkCore · GitHub
ef migration remove
をしたときに落ちるらしい。snapshot の更新時に落ちているんだろうか。 Model#FinalizeModel
の呼び出しに変更している部分が少し気になる。
log 2019/10/09
more migrations details (#14835) · aspnet/AspNetCore.Docs@c7520da · GitHub
2.2 から 3.0 への migration に関するドキュメントの拡充
project file に関してや Startup
の部分で修正を検討すべき部分が追加されている。
IHostingEnvironment
から IWebHostEnvironment
への変更なんかも。
ここでの直接の内容ではないが 「Analyzer support」が気になった。
Web API アナライザーを使用する - MSDN
Visual Studio を使っている場合に限るとかかな。
AdditionalFields
のサンプルが無いので追加したということらしい。
実際にこの属性が付いているのは以下のコード
AspNetCore.Docs/User.cs at 74de68cff0d0d736850c40fad9358aed506378ff · aspnet/AspNetCore.Docs · GitHub
asp-for
や asp-validation-for
がなにか良くわからなかったが jQuery validate plugin のマークアップに展開してくれるらしい。確かに自前で書くよりはちょっと見やすいか。
クライアント側の検証 - MSDN
jQuery plugin のコードは以下を読み込むようになっている。
AspNetCore.Docs/_ValidationScriptsPartial.cshtml at 74de68cff0d0d736850c40fad9358aed506378ff · aspnet/AspNetCore.Docs · GitHub
Add SocketConnectionFactory and http2cat (#14582) · aspnet/AspNetCore@ff8363a · GitHub
Kestrel の部分に SocketConnectionFactory
が追加されたのと http2 のサンプルが追加。
内容はまだ理解できないが、いくつか知らなかった部分が。
await using
using var
DefaultNetCoreTargetFramework
に TFM が置き換わっていっているIPEndPoint
class
上2つに関しては C# 8 からの構文らしい。
await using
に関しては IAsyncDisposable
を実装していなくても DisposeAsync
メソッドをもっていればいいという部分が面白い。最近の C# はこういうの多いのかな。Ruby から来た人間としては楽しい。
using var
に関しては Golang の defer
文のように使えて良さそうに見える。使い所を探してみたいな。
log 2019/09/09
不要な参照
key management samples (#3606) · IdentityServer/IdentityServer4@a401ec2 · GitHub
IdentiyServer4 の Key Management のサンプル。FileSystem と EF を使ったサンプルが入っている。
Logging は Serilog を使っている。
Switch to ASP.NET Core 3 (#3609) · IdentityServer/IdentityServer4@41f83cd · GitHub
IdentiyServer4 の ASP.NET Core 3 移行
samples だけでなく、src / test も直されている。差分が大きくて全然見きれない。
いくつか気になったライブラリ
- GitHub - adamralph/simple-exec: 🏃 A .NET library that runs external commands.
- GitHub - adamralph/bullseye: ⊙ A .NET library for describing and running targets and their dependencies.
- GitHub - natemcmaster/CommandLineUtils: Command line parsing and utilities for .NET Core and .NET Framework.
加えて AddNewtonsoftJson
というのが追加されていて、JSON ライブラリはこれで決まったのかという発見。
bump version · IdentityServer/IdentityServer4@347bbc5 · GitHub
3.0.1 に bump。以下細かい修正。
- Update index.rst · IdentityServer/IdentityServer4@6446463 · GitHub
- Update README.md · IdentityServer/IdentityServer4@be1a21a · GitHub
- Update README.md · IdentityServer/IdentityServer4@a8f4373 · GitHub
- Update README.md · IdentityServer/IdentityServer4@29279d3 · GitHub
Fix xUnit analyzers errors · aspnet/EntityFrameworkCore@6cd2b45 · GitHub
xUnit analyzer のエラー結果を修正している。
EF Core のテストコードには ConditionalFact
や ConditionalTheory
があるが、その辺は以下にある。
log 2019/09/01 続き
Deflake Kestrel low response rate tests (#13532) · aspnet/AspNetCore@725fa34 · GitHub
このテストのコンテクストがわからないので少し見てく。
TestServer
は以下。Kestrel 用のテストヘルパーらしい。こいつが TestConnection
を作る。
AspNetCore/TestServer.cs at master · aspnet/AspNetCore · GitHub
TestConnection
は以下。主要なメソッドは StreamBackedTestConnection
が持ってる。
AspNetCore/TestConnection.cs at master · aspnet/AspNetCore · GitHub
StreamBackedTestConnection
は以下。このクラスのメソッドが若干厄介で、内部で Assert
してるやつがいる。例えば #Receive
なんかがそう。
つまり PR での以下の部分は、引数が expected value でそれを受けられるかというもの。
Deflake Kestrel low response rate tests (#13532) · aspnet/AspNetCore@725fa34 · GitHub
このコミットでの主要な修正では DateHeaderValueManager
という IHeartbeatHandler 実装のクラスが出てきている。internal な class だが興味深い。
AspNetCore/DateHeaderValueManager.cs at master · aspnet/AspNetCore · GitHub
BufferSegment use ArrayPool for over-sized allocs (#13495) · aspnet/AspNetCore@9399f09 · GitHub
Kestrel の PipeWriter のケースでは new byte[]
より ArrayPool
を使う方が良いということらしい。
ArrayPool は利用したことがなかったが、調べてみるとパフォーマンス関連でいくつか記事が見つかる。メモリの使い方の効率を上げるためのもののよう。一方で、Rent したら Return することも必要のように見える。
- neue cc - LitJWTに見るモダンなC#のbyte[]とSpan操作法
- Learning .NET from the experts (Part 2)
- C#で確保済みbyte配列でmallocモドキ - enrike3のブログ
- Pooling large arrays with ArrayPool – Adam Sitnik – .NET Performance and Reliability
Update advancedRP.md (#14083) · aspnet/AspNetCore.Docs@79d84fd · GitHub
小さなドキュメントの修正
ValueGenerated
は PK 等で自動生成される値のための属性だが、以下の例だと誤ってついてしまうらしい。
OrderDetails.OrderId
は単なる外部キーのハズだが、これに ValueGenerated.OnAdd
が付いてしまうよう。
修正内容の詳しい部分は理解できていないが、ProcessEntityTypeAnnotationChanged
というイベント?を用意し、対処している。
生成された値 - EF Core | Microsoft Docs
Throw when deriving from an owned type. · aspnet/EntityFrameworkCore@c38ec37 · GitHub
以下の PR の通り、所有されている ( OwnsOne
等 ) モデルからの派生はできない。これまで一部できてしまっていたのを厳密にした。
挙動はよくわからないけど、 inverse
を複数つけたときに loop し続けてエラーになってしまうケースがあるらしい。
EF Core の場合は inverse は 同じ型で別名の 2 つ以上の navigation がある時に使うって感じなんかな。
log 2019/09/01
Remove duplicate section (#14081) · aspnet/AspNetCore.Docs@480e3a2 · GitHub
以下のドキュメントの修正。
Test web APIs with the HTTP REPL | Microsoft Docs
HTTP Repl の使い方の部分。
上記と同じドキュメントの修正。double quote が無い部分があった。
Update publish-to-azure-webapp-using-vs.md (#14066) · aspnet/AspNetCore.Docs@3b436bb · GitHub
moniker
の部分が追加されただけ。この moniker
っていったいなんなんだろう。COM の識別子とか出てくるが、このコンテクストだと違うよなぁ。
Add links to fluent api section (#14041) · aspnet/AspNetCore.Docs@c533823 · GitHub
fluent-api に関するリンクが追加されただけ。
:fire: Remove System.Threading.Tasks.Extensions · aspnet/EntityFrameworkCore@fdba4f7 · GitHub
System.Threading.Tasks.Extensions
がいらない部分がある。downlevel ValueTask ってことは ValueTask だけ使いたかったからなのか。
Update request-response.md (#14084) · aspnet/AspNetCore.Docs@b036a1d · GitHub
3.0 になったら系のドキュメントが消えた。
Request and Response operations in ASP.NET Core | Microsoft Docs
StartAsync
が増えてるのに気づいたけど、これは 「プログラミング ASP.NET Core 」の P379 あたりに書かれていた OnStarting
ハンドラと関連してる。
P380 の注釈で、 OnStarting
でレスポンスヘッダを追加する方法は工夫が必要で、すべてのミドルウェアが完了しないとどのヘッダを追加するか決められないケースもあるので、 Response.Body
用のバッファを作ったほうがいいケースもあるとなっているが、この辺りをうまく扱うためのものに見える。
詳しく見てみたい。
React 使うときに .env に BROWSER=none
を入れるらしいが、CRA server というのがよくわからん。 Create React App の略なのか。
Update layout.md (#14096) · aspnet/AspNetCore.Docs@5df3c11 · GitHub
以下のリンクがコメントアウトで挿入されたてるんだけど、これはドキュメントとしてどういう意味があるんだろう。
What is @RenderSection in asp.net MVC - Stack Overflow
Correct `sourcelink` validation errors (#1033) · aspnet/AspNetCore-Tooling@04b15ba · GitHub
なんか soucelink の bugfix 。
締め
一部飛ばしてしまった。。
log 2019/08/29
Remove extraneous endregion (#14059) · aspnet/AspNetCore.Docs@1e819e5 · GitHub
不要な endregion を削除
sln ファイルの追加、抜けですかね。
Razor Class Library のプロジェクトテンプレートの template.json
ファイルから余計なタグを削除。
template.json
というのがプロジェクトテンプレートを作るために必要らしい。
dotnet new のカスタム テンプレート - .NET Core CLI | Microsoft Docs
[mvc] Remove redundant checks (#9279) · aspnet/AspNetCore@7e10a98 · GitHub
PR の description によると、以下が理由らしい。
Overloaded constructor will throw exception before reaching this checks.
Delete migration index page (#14060) · aspnet/AspNetCore.Docs@6c38690 · GitHub
古い ASP.NET からの migraiton ページの index の削除。リダイレクトが書けるのいいな。
Add gRPC Kestrel configuration documentation (#14015) · aspnet/AspNetCore.Docs@37a490c · GitHub
以下のページの修正。
gRPC services with ASP.NET Core | Microsoft Docs
gRPC を利用する場合の Kestrel の設定が追加された。いい。
NGINX を proxy として使う場合どうするんだろうと思ったら、grpc_pass
ディレクティブとしてサポートされてるらしい。
Introducing gRPC Support with NGINX 1.13.10 - NGINX
Crankier: server docs (#13242) · aspnet/AspNetCore@35b5f09 · GitHub
Load testing 用のツールである Crankier の server
コマンドに関するドキュメントの追加。
このコミットをした人のものと思われるブログに詳しく書いてある。
stafford williams - Load testing ASP.NET Core SignalR
Remove annotations key when overriden explicitly · aspnet/EntityFrameworkCore@2a5c747 · GitHub
ちょっと、よくわからない。
Re-enable framework tests (#13043) · aspnet/AspNetCore@806fef3 · GitHub
<SkipTest>
なんてタグがあるのか。
Update link in Blazor Components topic (#14079) · aspnet/AspNetCore.Docs@f016834 · GitHub
Blazor 関連のドキュメントのリンク更新
Change description of health check result example (#14080) · aspnet/AspNetCore.Docs@45e645e · GitHub
HealthCheck に関するドキュメントの用語を一つ更新
log 2019/08/28
Added file path (#14026) · aspnet/AspNetCore.Docs@92d99bc · GitHub
以下のページの修正。
Razor Pages with EF Core in ASP.NET Core - Concurrency - 8 of 8 | Microsoft Docs
悲観的ロック、楽観ロックに関して書かれている。楽観ロックに関しては RowVersion
を利用するらしい。Rails だと lock_version
か。
Add note about omission of .AsNoTracking (#14031) · aspnet/AspNetCore.Docs@627664d · GitHub
以下のページの修正。
Tutorial: Read related data - ASP.NET MVC with EF Core | Microsoft Docs
チュートリアルの説明の修正ぽい。詳しく読んでないので、AsNoTracking
が消えている理由とかはよくわからない。
バグ修正。
以下のページの修正。
Razor Pages with EF Core in ASP.NET Core - Data Model - 5 of 8 | Microsoft Docs
チュートリアルはすごい充実してるな。ちゃんとやりたいな。
Convert web API jQuery doc to Fetch API (#13874) · aspnet/AspNetCore.Docs@c566f9f · GitHub
たぶん、以下のページを jQuery 版から fetch API 版に変えるのだと思う。まだ MSDN の方に見つからない。
Tutorial: Call a web API with jQuery using ASP.NET Core | Microsoft Docs
Add some more HandshakeRequest parsing tests (#13397) · aspnet/AspNetCore@af0a204 · GitHub
SignalR での Handshake のテスト追加らしいがよくわからん。
README から 1 行削除
以下のドキュメントに Call a gRPC service with an untrusted/invalid certificate
に関する節が追加。
Troubleshoot gRPC on .NET Core | Microsoft Docs
開発モードで TLS が必要な gRPC 開発をするためのあれこれ。
RequestLocalizationMiddleware
を利用した時に Content-Language
response header に culture をセットするオプションを付けていいのではという以下の Issue に対するもの。
Matching Content-Language with Culture · Issue #11923 · aspnet/AspNetCore · GitHub
上記の Middleware を使って、複数の言語サポートをしていても、サポート外の言語を Accept-Language
で指定された場合に、対象としている言語の一覧を返す。
Update AccountController.cs (#14054) · aspnet/AspNetCore.Docs@4b9e18d · GitHub
デモコードの修正