いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

dotnet build 時とかのロゴ表示を抑制 (--nologo -v q)

概要

以下、自分用メモです。

dotnet build を実行すると通常以下のようにロゴとかビルド対象のプロジェクトとかが出力されます。

gitpod /workspace/try-csharp $ dotnet build
Microsoft (R) Build Engine version 16.9.0+57a23d249 for .NET
Copyright (C) Microsoft Corporation. All rights reserved.

  Determining projects to restore...
  All projects are up-to-date for restore.
  TryCSharp.Common -> /workspace/try-csharp/TryCSharp.Common/bin/Debug/net5.0/TryCSharp.Common.dll
  TryCSharp.Samples -> /workspace/try-csharp/TryCSharp.Samples/bin/Debug/net5.0/TryCSharp.Samples.dll
  TryCSharp.Tools.Cui -> /workspace/try-csharp/TryCSharp.Tools.Cui/bin/Debug/net5.0/TryCSharp.Tools.Cui.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:05.43

こんなに出力イラネって場合は、 --nologo オプションをつけるとちょっとだけ少なくなります。

gitpod /workspace/try-csharp $ dotnet build --nologo
  Determining projects to restore...
  All projects are up-to-date for restore.
  TryCSharp.Common -> /workspace/try-csharp/TryCSharp.Common/bin/Debug/net5.0/TryCSharp.Common.dll
  TryCSharp.Samples -> /workspace/try-csharp/TryCSharp.Samples/bin/Debug/net5.0/TryCSharp.Samples.dll
  TryCSharp.Tools.Cui -> /workspace/try-csharp/TryCSharp.Tools.Cui/bin/Debug/net5.0/TryCSharp.Tools.Cui.dll

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:01.43

さらに、プロジェクトの出力もイラネって場合は -v q を追加するともう少し出力が少なくなります。

gitpod /workspace/try-csharp $ dotnet build --nologo -v q

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:01.13

参考資料

docs.microsoft.com

stackoverflow.com


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com

BinaryFormatterが非推奨として警告されるようになっていた (.NET 5)

概要

以下、自分用メモです。

久しぶりに、自分のC#サンプル リポジトリをコンパイルしてみたら

github.com

以下のような警告がブワーって出てびっくり。

gitpod /workspace/try-csharp $ make run
dotnet clean --nologo -v q

Welcome to .NET 5.0!
---------------------
SDK Version: 5.0.202

Telemetry
---------
The .NET tools collect usage data in order to help us improve your experience. It is collected by Microsoft and shared with the community. You can opt-out of telemetry by setting the DOTNET_CLI_TELEMETRY_OPTOUT environment variable to '1' or 'true' using your favorite shell.

Read more about .NET CLI Tools telemetry: https://aka.ms/dotnet-cli-telemetry

----------------
Installed an ASP.NET Core HTTPS development certificate.
To trust the certificate run 'dotnet dev-certs https --trust' (Windows and macOS only).
Learn about HTTPS: https://aka.ms/dotnet-https
----------------
Write your first app: https://aka.ms/dotnet-hello-world
Find out what's new: https://aka.ms/dotnet-whats-new
Explore documentation: https://aka.ms/dotnet-docs
Report issues and find source on GitHub: https://github.com/dotnet/core
Use 'dotnet --help' to see available commands or visit: https://aka.ms/dotnet-cli
--------------------------------------------------------------------------------------


dotnet restore -v q
dotnet run --project TryCSharp.Tools.Cui/TryCSharp.Tools.Cui.csproj --onetime
/workspace/try-csharp/TryCSharp.Samples/Advanced/RuntimeHelpersSamples02.cs(73,14): warning SYSLIB0004: 'ReliabilityContractAttribute' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [/workspace/try-csharp/TryCSharp.Samples/TryCSharp.Samples.csproj]
/workspace/try-csharp/TryCSharp.Samples/Advanced/RuntimeHelpersSamples02.cs(73,34): warning SYSLIB0004: 'Consistency' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [/workspace/try-csharp/TryCSharp.Samples/TryCSharp.Samples.csproj]
/workspace/try-csharp/TryCSharp.Samples/Advanced/RuntimeHelpersSamples02.cs(73,67): warning SYSLIB0004: 'Cer' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [/workspace/try-csharp/TryCSharp.Samples/TryCSharp.Samples.csproj]
/workspace/try-csharp/TryCSharp.Samples/Advanced/RuntimeHelpersSamples03.cs(61,14): warning SYSLIB0004: 'ReliabilityContractAttribute' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [/workspace/try-csharp/TryCSharp.Samples/TryCSharp.Samples.csproj]
/workspace/try-csharp/TryCSharp.Samples/Advanced/RuntimeHelpersSamples03.cs(61,34): warning SYSLIB0004: 'Consistency' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [/workspace/try-csharp/TryCSharp.Samples/TryCSharp.Samples.csproj]
/workspace/try-csharp/TryCSharp.Samples/Advanced/RuntimeHelpersSamples03.cs(61,67): warning SYSLIB0004: 'Cer' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [/workspace/try-csharp/TryCSharp.Samples/TryCSharp.Samples.csproj]
/workspace/try-csharp/TryCSharp.Samples/Advanced/SerializationSurrogateSamples01.cs(29,17): warning SYSLIB0011: 'BinaryFormatter.Serialize(Stream, object)' is obsolete: 'BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.' [/workspace/try-csharp/TryCSharp.Samples/TryCSharp.Samples.csproj]
/workspace/try-csharp/TryCSharp.Samples/Advanced/SerializationSurrogateSamples01.cs(32,34): warning SYSLIB0011: 'BinaryFormatter.Deserialize(Stream)' is obsolete: 'BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.' [/workspace/try-csharp/TryCSharp.Samples/TryCSharp.Samples.csproj]
/workspace/try-csharp/TryCSharp.Samples/Advanced/SerializationSurrogateSamples01.cs(47,21): warning SYSLIB0011: 'BinaryFormatter.Serialize(Stream, object)' is obsolete: 'BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.' [/workspace/try-csharp/TryCSharp.Samples/TryCSharp.Samples.csproj]
/workspace/try-csharp/TryCSharp.Samples/Advanced/SerializationSurrogateSamples01.cs(50,38): warning SYSLIB0011: 'BinaryFormatter.Deserialize(Stream)' is obsolete: 'BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.' [/workspace/try-csharp/TryCSharp.Samples/TryCSharp.Samples.csproj]
/workspace/try-csharp/TryCSharp.Samples/Advanced/SerializationSurrogateSamples01.cs(89,21): warning SYSLIB0011: 'BinaryFormatter.Serialize(Stream, object)' is obsolete: 'BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.' [/workspace/try-csharp/TryCSharp.Samples/TryCSharp.Samples.csproj]
/workspace/try-csharp/TryCSharp.Samples/Advanced/SerializationSurrogateSamples01.cs(92,38): warning SYSLIB0011: 'BinaryFormatter.Deserialize(Stream)' is obsolete: 'BinaryFormatter serialization is obsolete and should not be used. See https://aka.ms/binaryformatter for more information.' [/workspace/try-csharp/TryCSharp.Samples/TryCSharp.Samples.csproj]
/workspace/try-csharp/TryCSharp.Samples/Advanced/RuntimeHelpersSamples03.cs(30,13): warning SYSLIB0004: 'RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(RuntimeHelpers.TryCode, RuntimeHelpers.CleanupCode, object?)' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [/workspace/try-csharp/TryCSharp.Samples/TryCSharp.Samples.csproj]
/workspace/try-csharp/TryCSharp.Samples/Advanced/RuntimeHelpersSamples02.cs(30,13): warning SYSLIB0004: 'RuntimeHelpers.PrepareConstrainedRegions()' is obsolete: 'The Constrained Execution Region (CER) feature is not supported.' [/workspace/try-csharp/TryCSharp.Samples/TryCSharp.Samples.csproj]

表示されている内容を見てみると、昔に書いたサンプルでCERを使っているところと、BinaryFormatterを使っている部分で出ている模様。.NET 5 になる前はこんなに出てなかったんですけどね。。。

で、ドキュメント見てみると、.NET 5 から警告を出すように変わっていたんですね。

docs.microsoft.com

CERの部分で、出ている警告はこれ。(SYSLIB0004) まあ、いまさらCERを使うことなんてないですが。

docs.microsoft.com

BinaryFormatterの部分で、出ている警告はこれ。(SYSLIB0011) BinaryFormatterは、今時ほぼ利用しないと思いますが、古いソースとかでは結構まだ出てきたりします。オブジェクトを簡易deep-copyしたい場合とか。

docs.microsoft.com

BinaryFormatterに関しては、セキュリティガイドも出ていますね。

docs.microsoft.com

要は「使うな」ってことが記載されています。

警告を抑制する方法

とはいえ、事情により使用しないといけないので、警告を抑制したい場合などは現実世界ではちょこちょこあったりします。

その場合、2通りの方法がある模様。

コード上で pragma つけて制御

// 抑制
#pragma warning disable SYSLIB0011


// 抑制解除
#pragma warning restore SYSLIB0011

プロジェクトファイルで指定

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   <TargetFramework>net5.0</TargetFramework>
   <!-- プロジェクト全体で SYSLIB0004 と SYSLIB0011 を抑制 -->
   <NoWarn>$(NoWarn);SYSLIB0004;SYSLIB0011</NoWarn>
  </PropertyGroup>
</Project>

参考資料

docs.microsoft.com

docs.microsoft.com


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com

Gitpod で .NET 5 の環境を用意して遊んでみる (.NET 5.0, C# 9.0)

概要

先日、.NET 5 がリリースされましたので、Gitpodで使えるように調整してみました。

忘れないうちにメモメモ。

補足:2021-03-16 現在、最新の gitpod/workspace-dotnet では、.NET 5 がインストールされています。なので、以下の手順はもう必要ありません。

.NET 5.0 リリースに関しては、以下のメモもよかったら参照ください。

devlights.hatenablog.com

.gitpod.Dockerfile の調整

現状(2020-11-27現在)で、Gitpod 側が用意してくれている dotnet 向けの docker image は以下。

github.com

.NET Core 3.1 をインストールするようになっているので、このイメージをベースにして .NET 5.0 を入れるようにします。

以下のような感じで .gitpod.Dockerfile を用意

FROM gitpod/workspace-dotnet

RUN wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \
    && sudo dpkg -i packages-microsoft-prod.deb

RUN sudo apt-get update \
    && sudo apt-get install -y apt-transport-https \
    && sudo apt-get update \
    && sudo apt-get install -y dotnet-sdk-5.0 \
    && sudo rm -rf /var/lib/apt/lists/*

# installed the dotnet packages from apt command, so clear the DOTNET_ROOT environment variable. 
ENV DOTNET_ROOT=

Gitpod の ワークスペース で利用するOSは現在 Ubuntu 20.04 になっているので、

$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="20.04 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu Focal Fossa (development branch)"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

インストール方法は以下を見て調整しました。

docs.microsoft.com

注意点として、gitpod/workspace-dotnet 内で、dotnet のインストール先をデフォルトから変更しているので内部で DOTNET_ROOT 環境変数を設定しています。今回は、apt でパッケージインストールしているので、この環境変数をクリアします。そうしないと、dotnet run とかした時に内部で見に行くツールチェインの向きがDOTNET_ROOT の方を見てしまうので .NET 5.0 コンパチのプログラム書くとエラーになります。

以下の部分で環境変数をクリアしています。

# installed the dotnet packages from apt command, so clear the DOTNET_ROOT environment variable. 
ENV DOTNET_ROOT=

.gitpod.yml の調整

後は、.gitpod.yml にて上記の dockerfile を利用するよう調整して終わりです。

image: 
  file: .gitpod.Dockerfile

tasks:
  - init: dotnet restore
    command: dotnet clean && dotnet build

vscode:
  extensions:
    - ms-vscode.csharp@1.21.12:kw8SkO8+aVTSFug281WfQQ==

これでオケ。

ちゃんと入っているか確認。

$ dotnet --list-sdks
5.0.100 [/usr/share/dotnet/sdk]

$ dotnet --info
.NET SDK (reflecting any global.json):
 Version:   5.0.100
 Commit:    5044b93829

Runtime Environment:
 OS Name:     ubuntu
 OS Version:  20.04
 OS Platform: Linux
 RID:         ubuntu.20.04-x64
 Base Path:   /usr/share/dotnet/sdk/5.0.100/

Host (useful for support):
  Version: 5.0.0
  Commit:  cf258a14b7

.NET SDKs installed:
  5.0.100 [/usr/share/dotnet/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 5.0.0 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 5.0.0 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET runtimes or SDKs:
  https://aka.ms/dotnet-download

以下にサンプルリポジトリつくってあるので、よければご参照ください。

github.com

C# 9.0 の構文を使うとエディタで赤い波線が表示される

環境は上記で出来るのですが、Gitpod 上で利用する VSCode の C# 拡張機能 のバージョンが古い AND mono に付属している msbuild のバージョンが古いみたいで、コンパイル自体は出来るけど赤い破線は現状消えない状態です。

この件については、以下のように記載がありました。

marketplace.visualstudio.com

Note about using .NET 5 SDKs

The .NET 5 SDK requires version 16.8 of MSBuild.

For Windows users who have Visual Studio installed, this means you will need to be on the latest Visual Studio 16.8 Preview. For MacOS and Linux users who have Mono installed, this means you will need to set omnisharp.useGlobalMono to never until a version of Mono ships with MSBuild 16.8.

gitpod 上で msbuild のバージョンを見てみると

$ msbuild -version
msbuild -version
Microsoft (R) Build Engine version 16.6.0 for Mono
Copyright (C) Microsoft Corporation. All rights reserved.

16.6.0.32601

なので、ちょっとバージョンが足りていない状態ですね。まあ試すだけなので個人的には問題なしです。

参考情報

docs.microsoft.com

docs.microsoft.com

github.com

stackoverflow.com

marketplace.visualstudio.com

docs.microsoft.com

docs.microsoft.com


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com

.NET 5.0 リリース

概要

ついに .NET 5.0 がリリースされましたね。記念にメモメモ。。

devblogs.microsoft.com

www.publickey1.jp

news.mynavi.jp

devblogs.microsoft.com

今回のリリースの重要性

今回のリリースは、それまで別々に存在していた .NET Framework と .NET Core を統合するという意味でとても重要。

なので、.NET Framework は 4.8 が最後のバージョンになります。.NET Core は 3.1 が最新バージョンで LTS (.NET Coreがそのまま.NET 5.0 に続くイメージ)

docs.microsoft.com

www.publickey1.jp

注意点として、.NET 5.0 は LTS バージョンではないと言う点。LTSは、次にリリース予定の .NET 6.0 になるみたいです。

なので、現場で導入されることは少ないかなって感じですね。.NET 6.0 は、2021年の後半リリース予定。

そこから先は、2年おきにLTSバージョンが出てくる感じ。

C# は 9.0 に

C# も、もうバージョン 9 ですか。。最近全然ついていけてないです。

devblogs.microsoft.com

docs.microsoft.com

Top-level statements と Records は便利な機能ですね。

Pattern matching enhancements は、Pythonっぽい書き方ができるようになった感じ?

ついでにこれまでのバージョンの分も

docs.microsoft.com

docs.microsoft.com

docs.microsoft.com

docs.microsoft.com

その他の情報

その他の情報をとりあえずメモメモ。

gist.github.com

devblogs.microsoft.com

devblogs.microsoft.com

devblogs.microsoft.com

devblogs.microsoft.com

devblogs.microsoft.com

devblogs.microsoft.com

github.com

github.com

github.com

github.com


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com

TCPソケットがclose状態の時の挙動についての情報メモ (Writing to a closed, local TCP socket not failing)

概要

とても、有益な情報があったので、忘れないようにメモメモ。

この知識は、使っているプログラミング言語関係なく有用。

qiita.com

qiita.com

記事書いてくださった方に感謝です。

一つ目の記事の冒頭にある

サーバがコネクションをclose後しばらくして、クライアントがwriteしました。関数呼び出しの結果はエラーでしょうか? 上記の正解は「何事もなく、成功する」です。この挙動が理解できている方はこの記事を読む必要はないかもしれません。

これ、通信プログラム書いたことある人なら結構出会ったことある現象ではないでしょうか。私はあります。

その理由について書いてあるのですが、上記記事でリンクしてくださっている以下の stackoverflow のスレッド

stackoverflow.com

stackoverflow.com

これ、めっちゃ分かりやすかったです。知れてよかった。

追記

他にも参考になる記事をメモメモ。

zenn.dev

qiita.com

qiita.com

qiita.com

qiita.com

qiita.com

qiita.com

qiita.com


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com

Learn X in Y minutes (いろんなプログラミング言語の特徴とかを載せてくれているサイト)

概要

面白いサイト見つけたので、忘れないうちにメモメモ。

learnxinyminutes.com

各言語の特徴とか機能を1ページ分で一気に説明してくれています。

たいていの言語はあるので、ざっくり掴むのにちょうどいいかもしれません。


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com

.NET 5.0 RC1 がリリース

概要

.NET 5.0 のリリースが近づいてきましたね。RC1がリリースされたみたいなのでメモメモ。。。

devblogs.microsoft.com

上のページに各新機能へのリンクもあるので、ついでに以下にメモメモ。

また、上のページ自体もめっちゃ情報量多いです。

github.com

github.com

github.com

github.com

github.com

devblogs.microsoft.com

github.com

devblogs.microsoft.com

devblogs.microsoft.com

devblogs.microsoft.com

devblogs.microsoft.com

devblogs.microsoft.com

devblogs.microsoft.com

次のC#のバージョンは9.0か・・・もうそんなバージョンまで来たんですね。

devblogs.microsoft.com

C#9.0では、遂にレコード型が登場します。

pythonのdataclassesとかkotlinのData Classesに近い感じですね。


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com

JetBrainsの日本語技術サポートが開始されたとのこと

概要

ついにJetBrainsの日本語技術サポートが開始されたみたいですね。素晴らしい。

blog.jetbrains.com

以下、自分用のメモです。

日本語営業窓口

www.jetbrains.com

日本語ウェブページ

www.jetbrains.com

IDE日本語化パック (EAP)

plugins.jetbrains.com

個人的に長いこと使っていて、既に英語版で慣れているので、私自身はこのプラグインまだ入れたことないです。

新規でJetBrainsのIDEを利用される方にはとても有用なプラグインだと思います。

日本語技術サポートページ

www.jetbrains.com

JetBrainsテクニカルサポートの利用方法

blog.jetbrains.com


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com

Microsoft Build 2020 自分用メモ

概要

今年も Microsoft Build 始まってますね。毎回、大量の情報が出るのですが

おっさんになると理解するのも追いつくのにも時間がかかるので、一旦自分用にここにメモです。

後で頑張って読む。

基本、Publickeyさんのところで速報がすぐに出るのでとても助かっています。

いつもお世話になっております。

www.publickey1.jp

以下、順不同。

www.publickey1.jp

devblogs.microsoft.com

ついに windows にもパッケージマネージャが登場ですか。これは便利ですね。

www.publickey1.jp

WSL2は期待大。

www.publickey1.jp

Windows Terminal 大好きです。

www.publickey1.jp

devblogs.microsoft.com

Blazor、全然追いかけてなかったのですが、いつのまにか凄いことになってますね。。

www.publickey1.jp

devblogs.microsoft.com

期待大。ちゃんとしたリリースが出るのは、.NET 6 みたいなので、まだ先ですね。

devblogs.microsoft.com

あとで読む。

追記

news.mynavi.jp


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com

Socket エラーコードについての詳細記事 (JetBrains, How Socket Error Codes Depend on Runtime and Operating System)

概要

Rider を開発している JetBrains さんのブログにて以下の記事が投稿されました。

めっちゃ素晴らしい内容なので、忘れないうちにメモメモ。

blog.jetbrains.com

ソケットの ErrorCode って、とにかくややこしいんですよね。。。

C#で通信系の処理書いてる場合、必ずって言っていいほど SocketException は意識しないといけないので、毎回エラーコード調べたりよくしてます。

上記の記事、そのエラーコード周りの情報が書かれています。コードリストもあるので、めっちゃ助かります。

上記の記事読んで、今後はポータブルな実装作るときは SocketException.SocketErrorCode 使うべきと分かりました。

んで、必ず数値を直で比較するのではなくて、SocketError 列挙型を使って判定するべき。

感謝 m( )m


過去の記事については、以下のページからご参照下さい。

  • いろいろ備忘録日記まとめ

devlights.github.io

サンプルコードは、以下の場所で公開しています。

  • いろいろ備忘録日記サンプルソース置き場

github.com

github.com

github.com