Category Archives: Memo

PRP: Parallel Redundancy Protocol

メモ。

Parallel Redundancy Protocol – Wikipedia

PRP – The Wireshark Wiki

https://web.archive.org/web/20150924073019/https://www.zhaw.ch/storage/engineering/institute-zentren/ines/forschung-und-entwicklung/time-synchronisation/tutorial-on-prp.pdf

PRPはイーサネット冗長化のネットワークプロトコル。PRPはHSRと共にIEC 62439-3:2016により標準化されている。また、IEC 61850の枠組みで変電所の自動化に採用されている。

PRPは高可用性と従来のRSTPの切り替え時間では必要十分ではない短い切り替え時間を必要とするアプリケーションに適している。

PRPは専用のハードウェア(FPGAなどで作られる)が必要となるHSPと違い、すべてソフトウェアで実現される。実際には、カーネルモードもしくはユーザーモードで動作するネットワークドライバーとして動作し、アプリケーションからは単一のネットワークインターフェースに見える(WindowsではNDISドライバーとして実装されることが多い)。プリンタなどの単一接続点しか持たない機器については、二重接続ノードのように動作するRedBoxを使用して接続することができる。

また、古いIEC 62439:2010規格は、一部の制御システムではまだ使用されているためPRP-0と呼ばれ、PRP 2012は “PRP”と呼ばれている。

Create Interactive .NET Documentation with Try .NET

Try .NET is an interactive documentation generator for .NET Core. Use the Try .NET global tool to create interactive markdown experiences.

情報源: Create Interactive .NET Documentation with Try .NET | .NET Blog

Memo.

Exploring new frontiers for Git push performance 

In previous posts I’ve talked about performance improvements that our team contributed to the Git community. At Microsoft, we’ve been pushing Git to its limits with the largest and busiest Git repositories on the planet, improving core Git as we go and sending these improvements back upstream.

情報源: Exploring new frontiers for Git push performance | Azure DevOps Blog

Memo.

C# 8のinterfaceのデフォルト実装

Default implementations in interfaces With last week’s posts Announcing .NET Core 3.0 Preview 5 and Visual Studio 2019 version 16.1 Preview 3, the last major feature of C# 8.0 is now available in preview. A big impediment to software evolution has been the fact that you couldn’t add new members to a public interface.

情報源: Default implementations in interfaces | .NET Blog

C# 8から導入されるinterfaceのデフォルト実装についての記事。

以下はテキトー訳

インタフェースに、そのメンバーの実装を記述できるようになります。実装したクラスもしくは構造体がそのメンバの実装を提供しなくてもエラーにはならず、interfaceで記述されたそのメンバのコードが実行されます。公開済みライブラリのインタフェースにメンバを追加する必要が出てきたときに、既存のそのインタフェースを実装した型に影響を与えることなく、追加することができます。

次のようなインタフェースがあるとします。

interface ILogger
{
    void Log(LogLevel level, string message);
}

既存のクラスは、恐らく所有者が異なる別のコードベースにあり、次のようにILoggerを実装しています。

class ConsoleLogger : ILogger
{
    public void Log(LogLevel level, string message) { ... }
}

次のようにILoggerインタフェースにLogメソッドのオーバーロードを追加したいと思います。デフォルトの実装、つまりメソッド本体を提供することで、既存の実装を壊すことなく実行できます。

interface ILogger
{
    void Log(LogLevel level, string message);
    void Log(Exception ex) => Log(LogLevel.Error, ex.ToString());
}

これは、ConsoleLoggerが必要とするインタフェース規約を満たしています。そのインスタンスが、インタフェースに変換されて、新しいLogのオーバーロードが呼ばれた場合には、インタフェースで記述したデフォルト実装が呼び出されます。

public static void LogException(ConsoleLogger logger, Exception ex)
{
    ILogger ilogger = logger; // Converting to interface
    ilogger.Log(ex);          // Calling new Log overload
}

もちろん、新しいメンバーについて知っている実装クラスは、デフォルト実装が存在するインタフェースメンバーに対しても、独自の方法でそれを実装する事ができます。

以下にチュートリアルが用意されています。

Safely update interfaces using default interface members in C# | Microsoft Docs

Windowsサービスの遅延実行と遅延時間の変更

HKLM\SYSTEM\CurrentControlSet\services\(service name)\DelayedAutostart の値が1なら自動起動(遅延実行)の設定となっている。

HKLM\SYSTEM\CurrentControlSet\services\(service name)\AutoStartDelay キーを追加し秒数を設定する事で遅延時間を変更できる。このキーが設定されていなければデフォルトの240秒

以上はMSの正式ドキュメントにはない。C++ via Windows(邦題Inside Windows)には記述がある模様(確認していない)

参考:

Adjusting the Autostart (Delayed) start time

MicrosoftがEdgeを諦めたわけ

Microsoft and Google engineers are now working closely together.

情報源: Inside Microsoft’s surprise decision to work with Google on its Edge browser – The Verge

Memo.

MS社内で検討された結果、Edgeには3つの逆風があったとしています。

  1. Windows 10のユーザーにすら使われていないこと。また、Windows 10のアップデートタイミングでのアップデートになるので、機能改善をしても、主に企業での導入が半年先になってしまい、この事で導入を遅らせ、よりユーザーエクスペリエンスを下げてしまっていること。
  2. オリジナルのレンダリングエンジンを使用することによる表示の乱れ(違い)。
  3. EdgeがUWPであったことによる機能不全。

この逆風に対し、Windowsの標準ブラウザを魅力的にし、Windows自体のプラットフォームとしての競争力を維持するためにChromiumベースにし、UWPではないデスクトップアプリにすることを決定したと記事ではされています。

2019年にわざわざ学ばなくてもいいプログラミング言語 ってQiitaの記事を見て、ハイ解散。

情報源: 2019年にわざわざ学ばなくてもいいプログラミング言語 – Qiita

原文: Study of Programming Languages Not to Learn in 2019

1位はElm。最下位20位はC#でした。逆に言えば、今一番学ぶべきプログラミング言語はC#となります。一部では死んだと言われているRubyは18位にランクインされていて無事息を吹き返している感じです。そして、調査対象にPythonもBasic(Visual Basic)も無いってところで、はい、解散。

Entity Framework Core 3.0 Preview 4 

Today, we are making the fourth preview of Entity Framework Core 3.0 available on NuGet, alongside .NET Core 3.0 Preview 4 and ASP.NET Core 3.0 Preview 4. We encourage you to install this preview to test the new functionality and assess the impact of the included breaking changes.

情報源: Announcing Entity Framework Core 3.0 Preview 4 | .NET Blog

Memo.

Windows 10 May 2019 Updateでの開発を今日からはじめる。

The Windows 10 SDK for the May 2019 Update is now available as well with a go-live license!  Windows 10 May 2019 Update (build 18362) is now in the Release Preview Windows Insider ring. You may also know this as Windows 10, version 1903. New APIs and Features for developers Every update of Windows 10 […]

情報源: Start developing on Windows 10 May 2019 Update today – Windows Developer Blog

MEMO:

19H1向けの開発情報