7月 082019
 

参照: 1903: dwm.exe goes to 100% CPU on remote host after disconnecting from RDP session... Can anyone reproduce? : Windows10

リモートデスクトップホストとなっているマシンが 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)

5月 212019
 

ストレージのインターフェースは、物理的形状の規格、電気的接続の規格、論理的なコントローラーの規格の 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 なんかはしぶとく生き残っているわけです。

4月 192019
 

.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 対応?

Continue reading »

1月 112018
 

環境

  • Windows 10 Pro 1709 x64
  • Slack for Windows ベータ版 3.0.3 64-bit
  • 英字キーボード
  • Alt + ` で IME 入力モード切替

問題

Slack for Windows へ文字入力時に Alt + ` で IME 入力モード切替を行う際、Alt キーを先に離すようキー入力するとマウスカーソルの位置にメニューが表示され、文字入力ができなくなる問題がある。

どうやら Electron の問題らしく、他アプリでも発生する。

回避策

メニューバーが表示されている状態ならば、この問題を回避できる。
※ 例えば Vivalid でも同様の問題が発生するが、メニューバーを表示させることで回避可能。

Continue reading »

6月 272017
 


新しい csproj でこれをやる話。

結論

VSProjectSystem/automatic_DependentUpon_wireup.md at master · Microsoft/VSProjectSystem · GitHub
これ参照。
地味にめんどい。

Static dependency

地道に指定する方法の例。

[xml title=”StaticDependency.csproj”]


netstandard1.4



Hoge.cs


Fuga\Fuga.cs


[/xml]

Dynamic file dependency

ルールを作って動的に解析されるようにする方法の例。

[xml title=”DynamicDependency.csproj”]


netstandard1.4





[/xml]

[xml title=”ProjectItemsSchema.xaml”]




[/xml]

5月 262016
 

WPF/WinRT の事はこちらへ:
カラーマネジメントシステムの概要 と カラマネプログラミング初歩 – CAT EARS

結論

  • 出来なくはないがちょいと面倒
  • WinRT の頃とさほど変わってない
  • モバイルでも動くようになったのが大きな違い

UWP で使えるコンポーネントのカラマネ対応状況

UWP API C++/CX Win2D SharpDX
モニタプロファイルの取得
埋め込みプロファイルの取得
プロファイルを使った画像の色変換
変換結果の描写

Continue reading »

12月 022015
 

概要

一般的に、private setter を持つプロパティを TwoWay Binding すると、InvalidOperationException が発生して死ぬ。
しかし、ターゲットフレームワークが 4.5 の時のみ、何事もなかったかのように動作する。なにそれ……

※ OneWayToSource の場合も同様。

Continue reading »

9月 162015
 

Metro.cs #1ぐらばくセッションの後半として喋ったやつです。
実装と言いつつ概要レベルですが。
時間が短かったのもあって雰囲気くらいしか分からなかったのではないかという予感がしているので、詳しいことはソースコードを見つつテストコードをデバッグ実行しながら確かめてみてください。。

Continue reading »

8月 252015
 

※ 1809 以降は、設定->アプリ->アプリと機能->オプション機能の管理 でインストールできるようになりました。
Windows 10 October 2018 Updateで変わった、サーバ管理ツールRSATのインストール方法:Tech TIPS - @IT

出てたので。

Remote Server Administration Tools for Windows 10

Continue reading »