C# .NET6 macOS 時間の「分・秒」以降を0にする

C# DateTime Ticks計算

Windows 時代からPCを使っているひとは 流行りのスクリプト言語よりC#で書いたほうが楽もしくは安心だと思います。わたしもmacOSを使うようになって簡単なプログラムならPythonNode.jsで書いていましたが.NET6が安定して動くので最近はC#言語macOSで使うようになりました。

C#のDateTime型で「分・秒・㍉秒」などを0にしたい場合、方法はいろいろあると思いますがわたしの場合下記2つの方法を使っています。

新しくDateTimeを作る

DateTimeのコンストラクタの中に「DateTime(int year, int month, int day, int hour, int minute, int second)」があるのでそれを使います。下のコード例では年月日時以降は0に設定しています。

var d1 = DateTime.Now;
d1 = new DateTime(d1.Year, d1.Month, d1.Day, d1.Hour, 0,0);
Console.WriteLine(d1);

DateTimeのTicksで計算

TimeSpanで、1時間出してその後 Ticksを 剰余演算(%) します。

その後、AddTicksしています。

var ts1 = TimeSpan.FromHours(1);
var d1 = DateTime.Now;
var tt1 = d1.Ticks % ts1.Ticks;
d1 = d1.AddTicks(- tt1);
Console.WriteLine(d1);

Ticksが 637 791 516 000 000 000 計算されました。

内部では GetTickCount64() が使われているのかな?よくわからない

秘密鍵 pemからppkファイル変換

ppkファイルテスト

AWS EC2で Linuxサーバーを構築したときなど、パスワードのような短いキーフレーズではなくpemという拡張子のファイルを秘密鍵としてダウンロードしてからsshでログインすることが一般的になっています。pemファイル(Privacy Enhanced Mail)は、Base64で符号化された文字列が入ったテキストファイルです。最初の行には「—–BEGIN RSA PRIVATE KEY—–」が入っています。このファイルを利用して作成したEC2サーバーへsshログインが出来ます。下記がmacOSを使ったsshでのログイン時のコマンドです。

ssh -i "***.pem" ユーザー@*.ap-northeast-1.compute.amazonaws.com

pemファイルがあればmacOSでは不自由なく作成したEC2へログインできるのですがWindowsの場合このpemファイルをppkファイル(PuTTY Private Key files)に変換する必要があるようです。このppkファイルへの変換ツールはPuTTYというツールでインターネットからダウンロードできます。PuTTYのダウンロードは下記URLです

https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

64ビット版インストーラー 2020年9月現在putty-64bit-0.74-installer.msiファイルをダウンロードしダブルクリックでインストールすると「C:\Program Files\PuTTY」にいくつかのexe実行ファイルがインストールされていることが確認できます。Windows 10のアプリ一覧からPuTTYgenを実行します。

PuTTYgen起動
PuTTYgen起動

実行すると下のような[PuTTYgen Key Generator]画面が出てきます。その画面の中央少ししたに[Load]と書かれたボタンがあるのでクリックします。

PuTTYgen Key Generator画面
PuTTYgen Key Generator画面

オープンダイアログが出てきてpemファイルを選択しますがオープンダイアログは拡張子ppkしか選択できない状態なので画面下の[ファイル名]を「*.pem」に変更しエンターキーを押します。(エンターキーはパンパン叩かない)

ファイル名テキスト入力項目を「*.pem」に変更
ファイル名テキスト入力項目を「*.pem」に変更

ファイル一覧に目的のpemファイルが表示されたら「開く」ボタンをクリックします。成功した場合Successfullyダイアログが表示されいます。

Successfullyダイアログが
Successfullyダイアログ

[Save Private Key]ボタンをクリックしppkファイルを保存します。

ppkファイルを保存
ppkファイルを保存

ppkファイルの作成が出来たらコマンドプロンプトから下記のように「C:\Program Files\PuTTY\plink.exe」を用いテストを行います。

"C:\Program Files\PuTTY\plink.exe" -ssh ユーザー名@EC2サーバーIP -P 22 -i "ファイル名.ppk" -N -L 3307:127.0.0.1:3306

下のように「Access granted. Press Return to begin session.」と表示されればOKです。

Access granted. Press Return to begin session.
Access granted. Press Return to begin session.

2022 MJELD TECHNOLOGIES. ALL RIGHTS RESERVED