C# Tokyo LT 大会 2020/02 - connpass で話したやつです。
リモートデスクトップホストとなっているマシンが RDP セッションを切断された場合、dwm.exe が CPU を異常に消費するようになる問題があるらしい。
報告によると Intel, NVIDIA の GPU で発生しているようだが、私の再現環境は AMD(Radeon HD7750) なので、GPU メーカーには依存しない模様。
参照: Graphics Forum - Intel® Community Forum
以下のグループポリシーを 無効 にすることで回避できる。
グループポリシー
-> コンピューターの構成
-> 管理用テンプレート
-> Windows コンポーネント
-> リモート デスクトップ サービス
-> リモート デスクトップ セッション ホスト
-> リモート セッション環境
-> リモート デスクトップ接続に WDDM グラフィック ディスプレイ ドライバーを使用する
1903 からリモートデスクトップに WDDM ベースのドライバーが用いられるようになったが、そこにバグがあることが原因ではないかと推測されている。
このリリース以降、リモートデスクトップサービスでは、1つのセッションリモートデスクトップに Windows ディスプレイドライバーモデル (WDDM) ベースの間接ディスプレイドライバー (IDD) が使用されます。 Windows 2000 のディスプレイドライバーモデル (XDDM) ベースのリモートディスプレイドライバーのサポートは、今後のリリースで削除される予定です。 XDDM ベースのリモートディスプレイドライバーを使う独立系ソフトウェアベンダーは、WDDM ドライバーモデルへの移行を計画する必要があります。
Windows 10 バージョン 1903-削除された機能 | Microsoft Docs
追記 (2019/10/25)
オプションパッチながら KB4522355 で修正された模様。
Addresses an issue with high CPU usage in Desktop Window Manager (dwm.exe) when you disconnect from a Remote Desktop Protocol (RDP) session.
October 24, 2019—KB4522355 (OS Build 18362.449)
ストレージのインターフェースは、物理的形状の規格、電気的接続の規格、論理的なコントローラーの規格の 3 層に分かれていると解釈できます。
これらを正しく認識することによって、製品の特性を判別できるようになるでしょう。
規格によって複数の範囲をカバーしていたりして非常にややこしくはあるのですが。
層 | 規格の例 |
---|---|
物理的 | SATA, mSATA, SATA-Express, PCI-Express, M.2, U.2, USB Type-C |
電気的 | SATA, PCI-Express, USB |
論理的 | IDE/ATAPI, SCSI, AHCI, NVMe |
SCSI を SATA 上に乗せれば SAS になったり、USB に乗せれば UAS になったり、TCP/IP に乗せれば iSCSI になったりするのもこれで納得ですよね?
SSD が M.2 なのに中身 SATA 接続だったり、PCI-Express 接続なのに AHCI だったりするケースがあることも理解できるでしょう。
他にも M.2 NVMe → USB ブリッジする製品などは、PCIe & NVMe を USB & UAS(SCSI) に変換しているため、シーケンシャル速度はともかく NVMe の最大のメリットである並列性の高いコマンドキューイングなどがどの程度維持されるのか心配といったことも見えてきます。
古い規格ほど全域をカバーしていることが多いように感じます。
古い規格がパフォーマンス上の都合により電気的規格を乗り換える際も、互換性を維持するためか論理的規格は残されたりして、SCSI なんかはしぶとく生き残っているわけです。
.NET Core 3.0 Preview 4 で HttpClient
の HTTP/2 サポートが追加されたようですね。
Announcing .NET Core 3 Preview 4 | .NET Blog
今までの .NET Standard では SslStream 自体が HTTP/2 の事実上必須な機能(ALPN)に対応しておらず、.NET Standard 2.1 でようやくサポートされる見込みだったため、どうやらちゃんとくるようで一安心というところです。
(HttpClient
についてはこれのせいかは不明ですが…… SocketsHttpHandler
が HTTP/2 対応していなかったのは確か)
しかしながら .NET Framework 4.8 の方は .NET Standard 2.0 止まりになることになっているので、HTTP/2 サポートは今後あるのかどうかすら怪しいですね……
Given many of the API additions in .NET Standard 2.1 require runtime changes in order to be meaningful, .NET Framework 4.8 will remain on .NET Standard 2.0 rather than implement .NET Standard 2.1.
Announcing .NET Standard 2.1 | .NET Blog
とはいえ .NET Standard はあくまでも API 標準を定めただけで実装は各プラットフォーム依存ですから、動くようになる可能性はあるかも?
とりあえず .NET Framework は 4.8 の時点では HttpClient
+ HttpClientHandler
では動作しそうにありません。
BCL 以外でなら WinHttpHandler を使い、HttpRequestMessage
のバージョンを明示的に指定することで、利用できます(Win10 1607↑ + .NET FW 4.6↑ に限る)。
参考: How to make the .net HttpClient use http 2.0?
実は Core 2.0 までも Windows 環境に限れば WinHttpHandler に丸投げしていたようで、HttpClient
で HTTP/2 が動作します。
Core 2.1 以降 SocketsHttpHandler に移行し、環境依存を減らした為、HTTP/2 に一時的に非対応となっていたようです。
HttpClient の HTTP/2 対応
- .NET Framework
- HttpClientHandler では利用不可
- WinHttpHandler (要NuGet & Win10 1607)を利用すれば利用可
- .NET Core
- ~2.0 : Win10 1607~のみ利用可?
- WinHttpHandler を使ってる模様
- 2.1~2.2 : 利用不可
- SocketsHttpHandler に移行したため
- ただし WinHttpHandler を利用するよう構成すれば Windows では利用可
- 3.0~ : 利用可
- SocketsHttpHandler の HTTP/2 対応?
- ~2.0 : Win10 1607~のみ利用可?
環境
- Windows 10 Pro 1709 x64
- Slack for Windows ベータ版 3.0.3 64-bit
- 英字キーボード
- Alt + ` で IME 入力モード切替
問題
Slack for Windows へ文字入力時に Alt + ` で IME 入力モード切替を行う際、Alt キーを先に離すようキー入力するとマウスカーソルの位置にメニューが表示され、文字入力ができなくなる問題がある。
どうやら Electron の問題らしく、他アプリでも発生する。
回避策
メニューバーが表示されている状態ならば、この問題を回避できる。
※ 例えば Vivalid でも同様の問題が発生するが、メニューバーを表示させることで回避可能。
結論
VSProjectSystem/automatic_DependentUpon_wireup.md at master · Microsoft/VSProjectSystem · GitHub
これ参照。
地味にめんどい。
Static dependency
地道に指定する方法の例。
[xml title=”StaticDependency.csproj”]
[/xml]
Dynamic file dependency
ルールを作って動的に解析されるようにする方法の例。
[/xml]
[xml title=”ProjectItemsSchema.xaml”]
[/xml]
WPF/WinRT の事はこちらへ:
カラーマネジメントシステムの概要 と カラマネプログラミング初歩 – CAT EARS
結論
- 出来なくはないがちょいと面倒
- WinRT の頃とさほど変わってない
- モバイルでも動くようになったのが大きな違い
UWP で使えるコンポーネントのカラマネ対応状況
UWP API | C++/CX | Win2D | SharpDX | |
---|---|---|---|---|
モニタプロファイルの取得 | ○ | ○ | ○ | ○ |
埋め込みプロファイルの取得 | ✕ | ○ | ✕ | ○ |
プロファイルを使った画像の色変換 | ✕ | ○ | ○ | ○ |
変換結果の描写 | ○ | ○ | ○ | ○ |
概要
一般的に、private setter を持つプロパティを TwoWay Binding すると、InvalidOperationException が発生して死ぬ。
しかし、ターゲットフレームワークが 4.5 の時のみ、何事もなかったかのように動作する。なにそれ……
※ OneWayToSource の場合も同様。
Metro.cs #1 でぐらばくセッションの後半として喋ったやつです。
実装と言いつつ概要レベルですが。
時間が短かったのもあって雰囲気くらいしか分からなかったのではないかという予感がしているので、詳しいことはソースコードを見つつテストコードをデバッグ実行しながら確かめてみてください。。
※ 1809 以降は、設定->アプリ->アプリと機能->オプション機能の管理 でインストールできるようになりました。
→ Windows 10 October 2018 Updateで変わった、サーバ管理ツールRSATのインストール方法:Tech TIPS - @IT
出てたので。