Category Archives: Memo

Windows 10 Insider Preview Build 18999(20H1) リリース

Hello Windows Insiders, today we’re releasing Windows 10 Insider Preview Build 18999 (20H1) to Windows Insiders in the Fast ring. IMPORTANT: As is normal with pre-release builds, these builds may contain bugs that might be painful for some. If you take this flight, you won’t be able to switch Slow or Release Preview rings without […]

情報源: Announcing Windows 10 Insider Preview Build 18999 | Windows Experience Blog

Memo.

Your Phone Appの改良。

.NET Coreでのハードウェア最適化命令の話

Several years ago, we decided that it was time to support SIMD code in .NET. We introduced the System.Numerics namespace with Vector2, Vector3, Vector4, Vector, and related types. These types expose a general-purpose API for creating, accessing, and operating on them using hardware vector instructions (when available).

情報源: Hardware Intrinsics in .NET Core | .NET Blog

.NET Core 3.0よりハードウェア最適化とその為のVector2, Vector3, Vector4, VectorというSIMD演算用のクラスが追加されます。

そもそも、.NETがC/C++やnumpyと数学的な演算(特に行列演算)のベンチマークで遅くなる理由が、プロセッサの持つSIMD演算命令のような計算最適化機能を有効に活用できていないためです。これは今流行の深層学習やその結果のモデル演算においても不利に働く場合が多いです。画像・音声・映像関係のライブラリについても同様です。このため、.NETのプラットフォームとしての魅力を維持するためにも、バイナリのより強力なプロセッサ最適化とSIMD命令など(Intelで言えばSSEやAVX, FMA)への対応が急務でした。このため、.NET Core 3.0はよりプロセッサ固定の最適化を行うほか、それを前提としたSIMD演算の為のライブラリが追加されます。(ML.NETなど、これが実現されなければ意味が無い。)

で、この記事はそれらの使用方法の簡単な説明と、現状でのベンチマーク結果です。

Windows 10 Insider Preview Build 18970 (20H1)

Hello Windows Insiders, today we’re releasing Windows 10 Insider Preview Build 18970 (20H1) to Windows Insiders in the Fast ring. Insiders will see a Cumulative Update Build 18970.1005 (KB4518974) offered at the same time as well. We are testing our ability to service a build at the same time it is released. The result for […]

情報源: Announcing Windows 10 Insider Preview Build 18970 | Windows Experience Blog

Fast Ring向け。

Memo: gRPC + ASP.NET Core as a Migration Path for WCFs in .NET Core 

App Dev Manager Keith Anderson and Field Engineer Patricio Belardo explore gRPC + ASP.NET Core as a migration path for WCF. Overview A recent statement from Microsoft’s Director of Program Management for .NET, Scott Hunter, regarding roadmap for .NET Core clarified the direction of Windows Communication Foundation (WCF) Services.

情報源: gRPC + ASP.NET Core as a Migration Path for WCFs in .NET Core | Premier Developer

ま、早い話が作り直しです。ちゃんと設計されていれば、サービス、コンシューマともインタフェース周りだけの修正で済みますが、特にコンシューマー側はなかなかそうなっていないと思います。

.NET Core and systemd 

In preview7 a new package was added to the Microsoft.Extensions set of packages that enables integration with systemd. For the Windows focused, systemd allows similar functionality to Windows Services, there is a post on how to do what we discuss here for Windows Services in this post.

情報源: .NET Core and systemd | .NET Blog

Memo. .NET CoreでLinuxのデーモンを作りたくなったらこれを読むとsystemdに対応したデーモンを作れるかもしれない。そんな気になればな!

Memo: Git switch / restore

Git Version 2.23.0よりswitchコマンドとrestoreコマンドが追加されました。両コマンドはこれまでcheckoutコマンドが担ってきた機能を整理し、コマンドとして理解しやすくする目的で追加されています。

switch

switchはブランチの切り替えと新規作成の機能を担います。今までのbranchコマンドとcheckout -bを置き換えます(それぞれのコマンドは今でも有効)。

https://git-scm.com/docs/git-switch/2.23.0

masterブランチへの切り替え

$ git switch master

ブランチの切り替えで、ローカルで変更したファイルに問題が起きた場合には次のようにエラーになります。

$ git switch mytopic
error: You have local changes to 'frotz'; not switching branches.

この場合には、-mオプションで3者間マージにする事ができます。

$ git switch -m mytopic
Auto-merging frotz

-cオプションを使用することで新しいブランチを作成できます(-c--createの短縮形です)。

$ git switch -c good-surprises

任意のコミットから新しいブランチを成長させることができます。たとえば、「HEAD〜3」に切り替えて、ブランチ「fixup」を作成します。

$ git switch -c fixup HEAD~3
Switched to a new branch 'fixup'

restore

復元ソースからの内容を使用して、作業ツリーの指定されたパスを復元します。パスが追跡されているが、復元ソースに存在しない場合は、ソースに一致するように削除されます。

https://git-scm.com/docs/git-restore/2.23.0

インデックス内のバージョンと一致するようにすべてのCソースファイルを復元する場合、次のようにできます。

$ git restore '*.c'

現在のディレクトリ内のすべてのファイルをインデックスの内容で復元するには

$ git restore .

インデックスのファイルを復元して、HEADのバージョンと一致させる

$ git restore --staged hello.c

または、インデックスと作業ツリーの両方を復元できます

$ git restore --source=HEAD --staged --worktree hello.c

感想

どこまでわかりやすくなったのかは疑問だが、今までよりは良いと思う。

32bitのCOMを64bit環境から使うためのDLLサロゲートの設定

How to use 32-bit COMponents of Intelligent Converters in 64-bit environment

情報源: How to use 32bit COMponents in 64bit environment

古の呪文。

  1. 目的のCOMをHKey_Classes_Root\Wow6432Node\CLSID[GUID]から見つける
  2. 見つかったら、新しいREG_SZ(文字列)値を追加します。名前はAppIDでなければならず、データは検索したCOMオブジェクトGUIDと同じでなければなりません
  3. HKey_Classes_Root\Wow6432Node\AppID\の下に新しいキーを追加します。新しいキーは、COMオブジェクトのGUIDと同じ名前で呼び出す必要があります。
  4. 追加した新しいキーの下に、新しいREG_SZ(文字列)値を追加し、DllSurrogateと呼びます。値を空のままにします。
  5. HKey_Local_Machine\Software\Classes\AppID\の下に新しいキーを作成します。この場合も、新しいキーはCOMオブジェクトのGUIDと同じ名前で呼び出す必要があります。このキーの下に値を追加する必要はありません。

このレジストリ設定だけでCOM(COM+)のサービスがよろしくやってくれる。

 .NET Core 3.0 Preview 7 

Announcing .NET Core 3.0 Preview 7 | .NET Blog

本PreviewもGo Liveとなります。

Try out Nullable Reference Types 

Try out Nullable Reference Types With the release of .NET Core 3.0 Preview 7, C# 8.0 is considered “feature complete”. That means that the biggest feature of them all, Nullable Reference Types, is also locked down behavior-wise for the .NET Core release.

情報源: Try out Nullable Reference Types | .NET Blog

.NET Core 3.0 Preview 7からC# 8.0でNULL許容参照型がサポートされるようです。

また、今後1年掛けて(つまり.NET 5)CoreFxのライブラリにたいして、#nullableのアノテーションを付けていく、つまりライブラリ内はNULLがデフォルトで不可となるようにしていくようです。つまりボクらのコードも今後#nullable化していく必要があるって言うことです。とりあえず「■━⊂( ・∀・) 彡 ガッ☆`Д´)ノ」