[C#] 名前空間の指定 (C# 10)

名前空間の宣言はnamespaceキーワードを使って以下のように行う。

それが、C# 10以降では以下のように指定できるようになった。コードの可読性が上がったか。

参考ページ

名前空間で型を整理する | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/csharp/fundamentals/types/namespaces

[C#] 最上位レベルのステートメント (C# 9)

自分のC#の知識が古いバージョンで止まっているので、新しい仕様をキャッチアップしていく。

C# 9以前では、C#プログラムのエントリポイントを以下のように記述する必要があった。

C# 9以降では、以下のようにMainメソッドを省略し、Mainメソッド内にあるかのようにC#ステートメントを記述することができる。これを最上位のステートメントと呼ぶらしい。

以下、留意点。

最上位レベルのファイルは1つだけ

アプリケーションに含めるエントリポイントは1つだけなので、プロジェクト内には最上位のステートメントを含むファイルは1つだけにすること。複数存在するとコンパイルエラーになる。

エントリポイントは他に用意しない

最上位レベルのステートメントとMainメソッドを混在させないこと。混在させるとコンパイルエラーになる。

usingディレクティブ

以下のようにファイルの先頭に指定する。

グローバル名前空間

最上位レベルのステートメントは暗黙的にグローバル名前空間に属する。

コマンドライン引数 (args)

コマンドライン引数が入力された場合、args 変数を参照してそれにアクセスできる。

await

await を使用して非同期メソッドを呼び出すことができる。

プロセスの終了コード

アプリケーションの終了時に int 値を返すには、int を返す Main メソッドの場合と同じように、return ステートメントを使用する。

参考ページ

最上位レベルのステートメント – Main メソッドを使用しないプログラム | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/csharp/fundamentals/program-structure/top-level-statements

[Docker] チュートリアルのインストール

Dockerデスクトップを初回起動したときにはチュートリアルへ案内されるので、[Start]ボタンを押してチュートリアルをインストールする。

OPEN IN BROWSER アイコンをクリックすると、ブラウザが開いてチュートリアルのページが表示される。
http://localhost/tutorial/

チュートリアルをなぞって知識を入れていこう。

[Docker] Dockerデスクトップのインストール

公式サイトからダウンロード。

Get Started with Docker | Docker
https://www.docker.com/get-started

Windows版をダウンロード: Docker Desktop Installer.exe

ダウンロードしたインストーラを起動して画面の指示に従う。

[Close and log out]をクリックするとWindowsからログアウトされる。

再びログインすると、Docker Desktopが自動起動されて以下のメッセージが表示される。

自分はpersonal useなので無料利用が可能ということか。I accept the termsをチェックして[Accept]をクリック。

[AWS] Route 53/TXTレコードを複数作成するには

既にSPFを定義するTXTレコードが存在する状態で、外部サービスのベリフィケーションのためにもう1つTXTレコードを追加しようとしたら以下エラー。

TXTレコードを複数登録したいケースは少なからずあるはずだ、何か方法があるに違いない、そう思ってググってみたら以下の記事がヒット。

Route 53のTXTレコードに複数値を登録できますか?への対処法 | DevelopersIO
https://dev.classmethod.jp/articles/route53-txt-multiple/

解決する方法
解決策としては既存のレコードに改行をして複数行入力する方法で解決ができます。
この場合1点の注意が必要です。
* レコード(値)を識別するためダブルクォーテーション(“)で囲む
* レコード(値)は1行毎に改行して入力する

記事に倣って設定し、念のためnslookupにてレコードを確認。

できた。

[C#] Image.FromFile()はファイルをロックするので要注意

画像ファイルをロードしてImageオブジェクトを作成するために以下のようなコードを書いた。

すると問題が。ロード完了しても画像ファイルを削除することができないのだ。どうやらファイルがロック(占有)されているみたい。

ネットを調べても「これだ」といった情報はなかなか見つからず。しばらく探したら参考サイトの記事がヒットした。Image.FromFile()メソッドの仕様ということなのかなぁ。

回避するには、以下のようにファイルストリームから読み取るなどして、Image.FromFile()メソッドを使わないこと。

参考サイト

表示中の画像ファイルが削除できない問題の解決法 – .NET Tips (VB.NET,C#…)
https://dobon.net/vb/dotnet/graphics/drawpicture2.html

[インフラ] 家庭用インターネットでスタティックIPを取得する費用 (米国)

先日我が家のインターネット回線をCATV会社のケーブルモデムから電話会社のファイバーに替えた。その会社は商魂たくましく、テクニシャンと営業が組んで客先を訪れるルールのようで、テクニシャンが作業している間に営業が携帯電話まで売り込んでくる。うざいのでこちらの興味に話を振って「家庭用の回線でもスタティックIPって取得できるのか」尋ねたところ、できるけど費用とか細かいことわからないのでサポートに電話して聞いてくれとのこと。

回線は無事に開通して何日か経ってからそのことをふと思い出して、サポートページを検索したら内容と費用が出てきたので、いつか必要となるときのために覚え書き。

– スタティックIPアドレス 5個 (ブロックサイズ8の場合)
– 初期費用 (ゲートウェイの設定) $99
– 月額 $15

参考サイト

About Static IP Addresses – Internet Customer Support
https://www.att.com/support/article/u-verse-high-speed-internet/KM1002300

Cost and availability of Static IPs | AT&T Community Forums
https://forums.att.com/conversations/att-fiber-ordering/cost-and-availability-of-static-ips/6027058acc9b580936b84e28

[AWS] Amazon Linux のサポート期限

現在EC2インスタンスを作成するときに選択できるAmazon Linuxは「Amazon Linux 2」である。だけど、ちょっと前(?)まではAmazon Linuxだったので、運用しているEC2インスタンスの中にはAmazon Linuxベースのインスタンスもある。

Amazon Linuxはいつまでサポートされるんだっけ?と、たまに心配になるので以下覚え書き。

Update on Amazon Linux AMI end-of-life | AWS News Blog
https://aws.amazon.com/jp/blogs/aws/update-on-amazon-linux-ami-end-of-life/

End-of-life Extension
The end-of-life for Amazon Linux AMI is now extended to December 31, 2020: until then, we will continue to provide security updates and refreshed versions of packages as needed.

Maintenance Support
Update Feb 19, 2021 – Beginning January 1, 2021, the Amazon Linux AMI entered a new maintenance support period that extends to June 30, 2023.

[AWS] EC2-Classicの利用状況を確認する

予てから案内されているが、EC2-Classicのサービスが2022年8月15日を以って終了するとのこと。

EC2-Classic Networking は販売終了になります — 準備方法はこちら | Amazon Web Services ブログ
https://aws.amazon.com/jp/blogs/news/ec2-classic-is-retiring-heres-how-to-prepare/

現在主流となっているAmazon VPC (Virtual Private Cloud) がスタートしたのが2009年。それ以前は、2006年のAWSサービス開始当初から、1つのフラットなネットワークを他のユーザと共用する形のサービスが提供されていた。VPCに対してEC2-Classicと呼ばれるそれがほどなく終了するということで、EC2-Classicが有効なアカウントに向けて、まだEC2-Classicのサービスを使っているならお急ぎVPCへ移行してくださいね、といった感じのアナウンスが熱心に行われている。

EC2-Classicのリソースを使っているか確認する方法

自分はEC2-Classicのリソースを使っていないはずだと思っていても、もしかして見落としているかもしれない。それを確かめるためのシェルスクリプトが公開されているので、実行して確認してみるのが間違いないだろう。

GitHub – aws-samples/ec2-classic-resource-finder
https://github.com/aws-samples/ec2-classic-resource-finder

実行したディレクトリ直下にいくつかのCSVファイルが作成される。それぞれのCSVファイルには、サービスごとに使われているEC2-Classicリソースがリストされたり、EC2-Classicリソースの実行が可能なリージョンがリストされたりするので、ファイルを1つずつ開いて内容を確認すること。

[WordPress] wlwmanifest.xmlは何のため?

最近、WordPressサイトを訪れるcrawlerの中に、wlwmanifest.xmlというファイルを探すものがちらほら見受けられるようになった。

wlwmanifest.xmlってなんだ?

Windows Live Writerマニフェストファイルだそうだ。Windows Live Writerを使ってWordPressサイトが更新できるようになるらしいが、自分にとっては必要が無い。このファイルがあるおかげで無駄なアクセスが増えるので、いっそのこと消してしまおうかと思わないでもない。

参考サイト

wlwmanifest_link() | Function | WordPress Developer Resources
https://developer.wordpress.org/reference/functions/wlwmanifest_link/

wlwmanifest.xml file | WordPress.org
https://wordpress.org/support/topic/wlwmanifest-xml-file/