Blueskyアカウント作成

Blueskyアカウントを作りました。

Hello world!Blueskyにアカウントを作りました。

GiantRodent (@giantrodent.bsky.social) 2024-11-23T03:56:09.593Z

これから当ブログに投稿したら自動でBluesky にポストする予定です。
Jetpack プラグインのJetpack ソーシャル機能にBluesky が追加されたのでそれを使います

アカウント登録のメモ

アカウント作成時の登録情報

  • ホスティングプロバイダー ※Bluesky Social(default)
  • メールアドレス
  • パスワード
  • 生年月日
  • ユーザーハンドル ※先頭@
  • メールアドレスにアカウント登録の通知メールが送信されないので設定のページを見ると、メール送信ボタンがあったのでそれをクリックしたらメールが届き認証された
  • 設定のプライバシーとセキュリティで2要素認証を有効にしたらメールでの2要素認証が有効になった。この時メールが送られてこなかったのは、メールアドレスの認証をしていたからなのかも?

ハンドルを所有しているドメインに変更

アカウント作成時はハンドルを @giantrodent.bsky.social で登録しましたが、所有しているドメイン madoverload.com のDNS のTXT レコードにBluesky 側から指定された情報を埋め込み、アカウントをドメインと紐づけて認証させることで、ハンドルを @madoverload.com に変更します。

設定の アカウント > ハンドル で”ハンドルを変更” のページを開き、[自分のドメインを持っています→] をクリックすると、TXT レコードに登録する情報が表示されます。

DNS サーバーの管理画面で表示された情報を登録します。
このブログのドメインで使っている権威DNS サーバーはCloudflare を使っているので、以下の画面はClooudflare のDNS リソースレコードの登録画面です。

※ Contentの値を”(ダブルクオテーション)で囲み忘れたので、この後”で囲みました
※ Contentの値はパスワードのようなランダムな感じの値なので秘匿する必要がありそうですが、DNS レコードは公開される情報なのでマスキングせずに掲載しています

DNS の登録が反映されているか下記のコマンドで確認します。

% dig _atproto.madoverload.com txt +short
"did=did:plc:myx4t5vr2twkfmf7fabpkkcl"

Bluesky の設定画面に戻ります。

使用するドメインを入力すると、ボタンが[DNSレコードを確認] に変わるのでクリックします。

ドメインを確認しました!” と表示され、ボタンが[madoverload.comに更新] に変わるのでクリックします。

プロフィールページを見ると、ハンドルが@madoverload.com に変わっていました。

あとがき

TXTレコードに設定した値「did=did:plc:myx4t5vr2twkfmf7fabpkkcl」の正体は?
そして、Bluesky アカウントのID、名称 はどんなもの?

  • did
    • Blueskyのアカウントに対して一意に付与されたID
    • 先頭の”did=” を除いた部分がdidの値
    • アカウントを削除しても使い回されることはない
  • ハンドル
    • 基本的にドメイン名を使った、didを示す表示用の名称
    • 自身が所有・管理するドメイン名を使うことができ、変更が可能
    • プロフィールページのURLに使われる
  • 表示名
    • アカウントの表示用の名称で別のアカウントと重複が可能
    • 絵文字も使うことができ、容易に変更が可能

参照

PukiWikiのアップデート(1.5.3→1.5.4)

PukiWiki のバージョンを1.5.3から1.5.4にアップデートします。
※2024/11/23時点の最新は1.5.4でした。

PukiWiki 公式サイトに掲載されている手順に従って行います。
稼働中の環境からPukiWiki のファイルをローカル環境にダウンロードし、ローカル環境でpatch コマンドでアップデートして更新されたファイルをサーバーにアップロードする手順となります。
※ローカル環境はmacOS で行いました

手順

1. アップデート前のバックアップ

稼働中のPukiWiki のアーカイブを作成します。
PukiWiki を格納しているディレクトリはwiki にしているので、以下のコマンドを実行します。

tar -zcvf wiki_20241122.gz ./wiki

gzファイルをダウンロードしたら削除します。
※FileZilla を使ってダウンロードしました

rm wiki_20241122.gz

2. アップデートパッチをダウンロード

アップデートパッチはエンコードがUTF-8EUC-JP の2種類が用意されています。

稼働中のPukiWiki のエンコードが UTF-8 、EUC_JP のどちらかを確認します。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

ページのソースを見ると”charset=UTF-8” となっていたので、UTF-8 のアップデートパッチをダウンロードします。

ダウンロードしたファイル
update_pukiwiki_153to154_utf8.patch.zip

稼働中のPukiWikiのバージョンが1.5.3 であることを確認します。
ページの一番下にPukiWiki 1.5.3 と表示されています。

3. アップデートするファイル・ディレクトリをダウンロード

稼働中のPukiWikiのディレクトリから以下のファイル・ディレクトリをダウンロードします。

  • ルートの全ファイル
  • skin/ ディレクトリ
  • lib/ ディレクトリ
  • plugin/ ディレクトリ
  • wiki/ ディレクトリ

※ アップデートパッチをダウンロードしたディレクトリにpukiwiki というディレクトリを作ってその中にダウンロードします

4. ローカル環境でアップデートを実行

アップデートパッチの中身を以下のコマンドで展開します。

unzip update_pukiwiki_153to154_utf8.patch.zip

pukiwiki ディレクトリに移動して、patch コマンドでアップデートを実行します。
※実行結果も一緒に貼り付けておきます。

% cd pukiwiki
% patch -p1 < ../update_pukiwiki_153to154_utf8.patch
patching file INSTALL.txt
patching file README.txt
patching file UPDATING.txt
patching file default.ini.php
patching file en.lng.php
patching file ja.lng.php
patching file keitai.ini.php
patching file 'lib/auth.php'
patching file 'lib/config.php'
patching file 'lib/convert_html.php'
patching file 'lib/file.php'
patching file 'lib/func.php'
patching file 'lib/html.php'
patching file 'lib/init.php'
patching file 'lib/link.php'
patching file 'lib/make_link.php'
patching file 'lib/plugin.php'
patching file 'lib/proxy.php'
patching file 'lib/pukiwiki.php'
patching file 'plugin/attach.inc.php'
patching file 'plugin/backup.inc.php'
patching file 'plugin/calendar_viewer.inc.php'
patching file 'plugin/color.inc.php'
patching file 'plugin/counter.inc.php'
patching file 'plugin/dump.inc.php'
patching file 'plugin/edit.inc.php'
patching file 'plugin/img.inc.php'
patching file 'plugin/loginform.inc.php'
patching file 'plugin/navi.inc.php'
patching file 'plugin/pageaction.inc.php'
patching file 'plugin/ref.inc.php'
patching file 'plugin/rss.inc.php'
patching file 'plugin/search2.inc.php'
patching file 'plugin/touchgraph.inc.php'
patching file 'plugin/tracker.inc.php'
patching file pukiwiki.ini.php
patching file 'skin/keitai.skin.php'
patching file 'skin/main.js'
patching file 'skin/pukiwiki.css'
patching file 'skin/pukiwiki.skin.php'
patching file 'skin/tdiary.css'
patching file 'wiki/466F726D617474696E6752756C6573.txt'
patching file 'wiki/50756B6957696B692F312E342F4D616E75616C2F506C7567696E2F412D44.txt'
patching file 'wiki/50756B6957696B692F312E342F4D616E75616C2F506C7567696E2F452D47.txt'
patching file 'wiki/50756B6957696B692F312E342F4D616E75616C2F506C7567696E2F482D4B.txt'
1 out of 4 hunks failed--saving rejects to 'wiki/50756B6957696B692F312E342F4D616E75616C2F506C7567696E2F482D4B.txt.rej'
patching file 'wiki/50756B6957696B692F312E342F4D616E75616C2F506C7567696E2F4C2D4E.txt'
patching file 'wiki/50756B6957696B692F312E342F4D616E75616C2F506C7567696E2F4F2D52.txt'
patching file 'wiki/50756B6957696B692F312E342F4D616E75616C2F506C7567696E2F532D55.txt'
patching file 'wiki/50756B6957696B692F312E342F4D616E75616C2F506C7567696E2F562D5A.txt'

1つ失敗しました。(48行目)

% echo "50756B6957696B692F312E342F4D616E75616C2F506C7567696E2F482D4B" | xxd -r -p
PukiWiki/1.4/Manual/Plugin/H-K

失敗したファイルは”wiki/PukiWiki/1.4/Manual/Plugin/H-K” でした。
とりあえず、このまま作業を進めます。

5. 稼働環境のファイルを更新

アップデートしたファイルを稼働中の環境にアップロードして上書きします。
PukiWiki 公式サイトに以下のように書かれていたので、wiki/ ディレクトリはタイムスタンプがアップデートパッチを実行した時刻に変わっているファイルのみアップロードしました。(.rej を除く)

6. 動作確認

アップデートしたPukiWiki のページが正常に表示されるか確認します。
PHP 8.1 の環境で正常に動作しました。
ページの一番下にPukiWiki 1.5.4 と表示されています。

アップデート失敗した”/?PukiWiki/1.4/Manual/Plugin/H-K” のページも表示はできました。

その後、PHP のバージョンをPHP 8.3 に上げても正常に動作しました。
大丈夫そうなので、以上で完了となります。

参照

VMware Fusion(M1 Mac)にUbuntu 22.04.3 LTSをインストール

VMware Fusion にUbuntu Server をインストールする手順の解説です。

VMware Fusion のインストールは「M1 MacにVMware Fusionをインストール」をご参照ください。

環境

  • MacBook Pro / M1 Pro チップ (Apple Silicon)
  • macOS Monterey (12.6.7)
  • VMware Fusion Player (13.5.0)
  • Ubuntu Server (22.04.3 LTS) – Apple Silicon (ARM64)

Ubuntu Serverのダウンロード

Ubuntu のサイトのダウンロードページにアクセスします。

下にスクロールします。
(”Alternative architectures” のクリックでもよいです)

Alternative architecturesUbuntu Server for ARM のリンク”Get Ubuntu Server for ARM” をクリックします。

緑のボタン”Download Ubuntu 22.04.3 LTS” をクリックしてISOファイルをダウンロードします。

ARM64 向けのイメージファイル ubuntu-22.04.3-live-server-arm64.iso がダウンロードされました。

ダウンロードしたファイルに破損などがないか、チェックサムを確認します。

ARM64 向けのチェックサムは、ダウンロードしたファイルの検証方法が記載されたチュートリアル(以下のリンク)から辿ったページにありました。

辿る順番は、3. Download checksums and signatures の本文中のURL(http://releases.ubuntu.com) > Ports, Unsupported, and Experimental Images for Ubuntu > 22.04.3/ > release/ の順で以下のページが表示されます。

下にスクロールすると、チェックサムSHA256SUM のリンクがあります。

SHA256SUMS” をクリックすると複数のチェックサムがプレーンテキストで表示されました。

ARM64 向けイメージファイルのチェックサムは1行目にありました。

5702372d25111e24d59596de62ae24daef873018cbf63c9dd9ff12292a57aca9 *ubuntu-22.04.3-live-server-arm64.iso

このプレーンテキストのページはチェックサムの検証で使える形式になっているので、イメージファイルと同じ場所に保存します。

ターミナルで保存したフォルダにcd してから、下記コマンドを実行して検証します。

% shasum -c SHA256SUMS
ubuntu-22.04.3-live-server-arm64.iso: OK

2行目のようにOK と表示されていれば問題なしです。

Ubuntu Serverのインストール

1. VMware Fusion を起動

VMware Fusion アイコン

Launchpad のVMware Fusion アイコンをダブルクリックします。

2. 新しい仮想マシンの作成

VMware Fusion のウィンドウが表示されました。

左上の[+] をクリックして表示されるメニューの中から[新規…] をクリックします。

ディスクまたはイメージからインストール” の枠内に、ダウンロードしたISO ファイルをドラッグ&ドロップします。

インストールディスクとしてドラッグ&ドロップしたISO ファイルのファイル名が表示され選択されているので、[続ける] をクリックします。

仮想マシンの概要が表示されています。
今回はこの構成のままでよいので[終了] をクリックします。

ここで、仮想マシンをファイルで保存するため、ファイル名の入力を求められます。

任意のファイル名を入力して[保存] をクリックします。

3. 仮想マシンの起動

作成した仮想マシンのウィンドウが既に開いています。

大きい再生ボタンをクリックすると、Ubuntu ServerISO ファイルを使ったインストールが開始します。

ブートローダーが起動しました。

Try or Install Ubuntu Server” を選択してEnter キーを押下します。

  • Enter せずに放置すると、ハイライトされているエントリで処理が開始されます
  • キーボードとマウス操作がゲストOS 側(仮想マシン内)にある状態になるので、ホストOS 側(macOS)に戻したい場合は[control]+[command] を押下します

4. 言語 – select your language

インストーラとインストールするOS のデフォルトの言語を選択します。

English” を選択してEnter キーを押下します。

5. インストーラの更新 – Installer update available

最新版のインストーラーに更新するか選択します。

今回は更新するので、下の[Update to the new installer] を選択してEnter キーを押下します。

6. キーボード – Keyboard configuration

使用している環境に合わせたキーボードを選択します。

今回は”Japanese” を選択します。
Layout で”Japanese” を選択すると、Variant も”Japanese” に変わりました。
下の[Done] を選択してEnter キーを押下します。

7. インストールの種類 – Choose type of install

インストールの種類を選択します。

今回は”Ubuntu Server” を選択して、[Done] でEnter キーを押下します。

  • Ubuntu Server
    • デフォルトの構成。快適に使えるよう厳選されたパッケージが含まれている
  • Ubuntu Server (minimized)
    • 最小の構成

8. ネットワーク – Network connections

ネットワークの設定をします。

VMware 上のDHCP により割り当てられたIPv4 アドレスが表示されています。
今回はこのままの状態で[Done] でEnter キーを押下します。

9. プロキシサーバ – Configure proxy

プロキシサーバの設定をします。

今回はプロキシサーバを設定しないので、このままの状態で[Done] でEnter キーを押下します。

10. ミラーサーバの設定 – Configure Ubuntu archive mirror

Ubuntu のミラーサーバの設定をします。

GeoIP で取得した位置情報を使って選ばれたミラーサーバが自動で入力されています。
今回はこのままの状態で[Done] でEnter キーを押下します。

11. ストレージ – Storage configuration

ストレージの設定をします。

今回は記憶領域全体を使うので、”Use an entire disk” が選択された状態で[Done] でEnter キーを押下します。

  • LVM (論理ボリューム) を設定しない場合は、”Set up this disk as an LVM group” のチェックをOFF にします

ディスクのパーティショニングの設定をします。

パーティションのデフォルトの構成が表示されています。
今回はこのままの状態で[Done] でEnter キーを押下します。

12. インストール実行の確認 – Confirmation destructive action

インストール作業の続行でフォーマットされるのでデータが削除されてもよいのかの確認です。

[Continue] を選択してEnter キーを押下します。

13. プロファイル – Profile setup

sudo が利用できるadministrator 権限のユーザーを作成します。

  • Your name
    • フルネームなど (任意)
  • Your servers name
    • ホスト名 (hostname)
  • Pick a username
    • ログイン時にユーザーの識別子として入力するユーザー名
  • Choose a password / Confirm your password
    • ユーザーのパスワード

任意の値を入力して、[Done] でEnter キーを押下します。

14. アップグレード – Upgrade to Ubuntu Pro

Ubuntu Pro にアップグレードするかの確認です。

今回はアップグレードしないので、”Skip for now” が選択された状態で[Continue] でEnter キーを押下します。

15. SSHサーバ – SSH Setup

OpenSSH サーバの設定をします。

今回はOpenSSH サーバをインストールするので、”Install SSH server” のチェックをON にして、[Done] でEnter キーを押下します。

  • “Import SSH identity” で、プロファイルの設定で作成したユーザーのSSH 公開鍵認証に使う公開鍵をGitHub やLaunchpad から取得して登録することができるようです(今回はやりませんでした)

16. Snapパッケージ – Featured Server Snaps

追加するパッケージを選択します。

今回は追加しないので、何も選択しないで[Done] でEnter キーを押下します。

ここで、Ubuntu Server のインストールが開始されます。
インストールが完了するまで、そのまま待機します。

17. インストール完了 – Install Complete!

“Install complete!” と表示され、下に[Reboot Now] のボタンが表示されたらインストール完了です。

続けて、Ubuntu Server をインストールした仮想マシンを起動します。
[Reboot Now] を選択してEnter キーを押下します。

18. Ubuntu Server 起動・ログイン

Ubuntu Server の仮想マシンが起動します。

“Failed unmounting /cdrom” と表示されました。インストールメディアのマウント解除に失敗したようです。
とりあえずEnter キーを押下します。

“ubuntu login:” と表示されましたが、続けてログが表示されてしまいました。SSH ホスト鍵の情報があるので、初回起動時のみ表示される内容のようです。

この状態でEnter キーを押下します。

末尾に”ubuntu login:” が表示されるので、登録したユーザー名を入力しEnter キーを押下し、続けて”Password:” と表示されたらパスワードを入力してEnter キーを押下します。

Ubuntu のプロンプトの入力ができる状態になりました。ログイン成功です。

正常にインストールできているようです。

インストール直後の状態の確認

ターミナルで確認します。

$ uname -a
Linux ubuntu 5.15.0-91-generic #101-Ubuntu SMP Tue Nov 14 13:29:11 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
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"
UBUNTU_CODENAME=jammy

$ cat /etc/default/locale
LANG=en_US.UTF-8

$ cat /etc/timezone
Etc/UTC

$ cat /etc/default/keyboard
XKBMODEL="pc105"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""
BACKSPACE="guess"

$ hostname
ubuntu

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:7b:b2:4c brd ff:ff:ff:ff:ff:ff
    altname enp2s0
    inet 192.168.156.134/24 metric 100 brd 192.168.156.255 scope global dynamic ens160
       valid_lft 1636sec preferred_lft 1636sec
    inet6 fe80::20c:29ff:fe7b:b24c/64 scope link
       valid_lft forever preferred_lft forever

$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=13.2 ms

$ cat /etc/passwd | grep ubuntu
ubuntu:x:1000:1000:ubuntu:/home/ubuntu:/bin/bash

初期設定

タイムゾーン

UTC から日本のタイムゾーンに変更します。

$ cat /etc/timezone
Etc/UTC

$ timedatectl list-timezones | grep Tokyo
Asia/Tokyo

$ sudo timedatectl set-timezone Asia/Tokyo

$ cat /etc/timezone
Asia/Tokyo

ネットワーク:ホスト名

インストール時に仮で登録していたホスト名を変更します。

$ hostname
ubuntu

$ sudo hostnamectl set-hostname d.test

$ hostname
d.test

ネットワーク:IP アドレス (IPv4)

ホストOS 側の設定ファイルでDHCP で固定アドレスが割り当てられるようにします。

ホストOS 側の作業をする為に、ゲストOS をシャットアウトします。

$ sudo shutdown -h now

ここから、ホストOS 側の作業です。

DHCP サーバの割り当て範囲を確認すると、192.168.156.128 〜 192.168.156.254 でした。

% cat /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf
 〜 省略 〜
subnet 192.168.156.0 netmask 255.255.255.0 {
	range 192.168.156.128 192.168.156.254;
 〜 省略 〜

ゲストOS に192.168.156.135 が割れ当てられるよう設定します。
MAC アドレスはip a で確認したアドレスを指定します。

% sudo vi /Library/Preferences/VMware\ Fusion/vmnet8/dhcpd.conf
 〜 省略 〜
####### VMNET DHCP Configuration. End of "DO NOT MODIFY SECTION" #######
 〜 末尾に下記の4行を追記する 〜
host d.test {
    hardware ethernet 00:0c:29:7b:b2:4c;
    fixed-address  192.168.156.135;
}

VMware Fusionのネットワークサービスを再起動します。

% cd /Applications/VMware\ Fusion.app/Contents/Library/

% sudo ./vmnet-cli --stop
Stopped DHCP service on vmnet1
Stopped DHCP service on vmnet8
Stopped NAT service on vmnet8
Stopped all configured services on all networks

% sudo ./vmnet-cli --start
Enabled hostonly virtual adapter on vmnet1
Started DHCP service on vmnet1
Started NAT service on vmnet8
Enabled hostonly virtual adapter on vmnet8
Started DHCP service on vmnet8
Started all configured services on all networks

% sudo ./vmnet-cli --status
DHCP service on vmnet1 is running
Hostonly virtual adapter on vmnet1 is disabled
DHCP service on vmnet8 is running
NAT service on vmnet8 is running
Hostonly virtual adapter on vmnet8 is disabled
Some/All of the configured services are not running

hosts に登録してホストOS からドメイン名で名前解決されるようにします。

% sudo vi /etc/hosts
 〜 末尾に下記の1行を追記する 〜
192.168.156.135 d.test

ここで、ゲストOS を起動します。
設定したIP アドレスが割り当てられているか確認するため、ゲストOS でip a で確認すると、設定したアドレスが割り当てられていました。

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:7b:b2:4c brd ff:ff:ff:ff:ff:ff
    altname enp2s0
    inet 192.168.156.135/24 metric 100 brd 192.168.156.255 scope global dynamic ens160
       valid_lft 1030sec preferred_lft 1030sec
    inet6 fe80::20c:29ff:fe7b:b24c/64 scope link
       valid_lft forever preferred_lft forever

SSH

SSH サーバの状態と、ゲストOS のローカル環境でSSH 接続できることを確認します。

$ systemctl is-enabled ssh
enabled

$ systemctl is-active ssh
active

$ ssh ubuntu@localhost

$ exit

ホストOS 側からSSH 接続できることを確認します。

% ssh [email protected]

% exit

ファイアウォール の状態を確認し、SSH 向けポート番号22 をアクセス許可する設定を登録します。
登録したらファイアウォールを有効にします。

$ sudo ufw status verbose
Status: inactive

$ sudo ufw app list
Available applications:
  OpenSSH

$ sudo ufw allow 'OpenSSH'
Rules updated
Rules updated (v6)

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp (OpenSSH)           ALLOW IN    Anywhere
22/tcp (OpenSSH (v6))      ALLOW IN    Anywhere (v6)

ホストOS 側からSSH 接続できることを確認します。

ネットワーク:ソケット

接続待ちのソケットの状態を確認します。

$ ss -lnt
State       Recv-Q      Send-Q           Local Address:Port           Peer Address:Port     Process
LISTEN      0           4096             127.0.0.53%lo:53                  0.0.0.0:*
LISTEN      0           128                    0.0.0.0:22                  0.0.0.0:*
LISTEN      0           128                       [::]:22                     [::]:*

$ ss -lnu
State     Recv-Q     Send-Q                  Local Address:Port         Peer Address:Port    Process
UNCONN    0          0                       127.0.0.53%lo:53                0.0.0.0:*
UNCONN    0          0              192.168.156.135%ens160:68                0.0.0.0:*

パッケージの更新

最後にパッケージを最新に更新します。

$ sudo apt update

$ sudo apt upgrade

あとがき

一通りの作業が終わり、やり残した感があることを書いておきます。

  • Ubuntu Server、今度は最小構成でインストールしてみよう
  • SSH サーバの設定で公開鍵をGitHub から登録する手順をやってみたい
  • ファイアウォールを有効にした後、アクセス許可していないポートがきちんとアクセス拒否できているか確認する方法をきちんと整理できていない(telnet d.test 80、nmap -p 80 d.test)

参照

Excelの時刻の12時間表記

Excel の時刻の12時間表記に違和感を感じたという話です。
結論を先に書くと、英語圏の時刻の表現はこうなのだそうです。

Excel の書式設定の仕様

時刻の書式設定 h:mm(24時間表記)とh:mm AM/PM(12時間表記)の表示のされ方を比較してみます。

  • C列とD列の比較です
  • B列に値を入れ、C列とD列はB列を参照しています
Excel time 1

違和感を感じたのは、12:00 AM12:00 PM です。
感覚的に24時間表記の0時と12時のどちらに該当するのか分からないです。その理由は具体的に以下によるものだと思われます。

  • 12:00 AM の1分前は11:59 AM ではなく11:59 PM
  • 12:00 PM の1分前は11:59 PM ではなく11:59 AM

ついでに確認したこと

書式設定のhAM/PM の関係が気になったので、書式設定がhh AM/PM だけのパターンも追加してみました。

  • E列とF列を追加しました(B列を参照しています)
Excel time 2

特に変わったことは起きなかったのですが、これで分かったことは、hAM/PM の有無で表現が変わるということです。
F列のAM とPM が表示されないだけの状態にはならないようです。

Microsoft のサイトにもこの辺のことが仕様として書かれていました。

AM と PM     形式に AM または PM が含まれている場合、時間は 12 時間のクロックに基づいており、”AM” または “A” は午前 0 時から正午までの時刻を示し、”PM” または “P” は正午から午前 0 時までの時刻を示します。 含まれていない場合、24 時間表示に基づきます。

Microsoft サポート

ちなみに、h AM/PM は「このセルに適用されている数値の書式は誤解を招く可能性があります」という警告を表示してくれます。
その通りだと思います。

午前と午後の定義、時刻の表現のされ方

時刻表記には何かしらの規格がありそうだったので、この仕様の根拠となる情報がないか検索して調べてたのですが、結論としては冒頭で述べた英語圏の時刻の表現のようです。規格は見つかりませんでした。

調べる過程で時刻の扱いについて興味深い話がいろいろあったので、記録として記載しておきます。

  • 午前と午後の定義
    • 正午(太陽が地平線より上で子午線を通過する時刻)より前が午前(AM)、後が午後(PM)
    • 0時から12時間後までが午前、12時から12時間後までが午後ではない
  • 23時間表記の0時と12時の表現
    • 0時は「午前0時」、「午後12時」のどちらで表現してもよい
    • 12時は「午後0時」、「午前12時」のどちらで表現してもよい
  • アナログ時計の影響
    • アナログ時計が時刻を1から12の数字で表現されていることから、以下のような表現が慣習的に使われている
      • 0:30 を「午前12時30分」と表現
      • 12:30 を「午後12時30分」と表現
  • 英語圏の時刻の表現
    • 0:00 を「12:00 AM」
    • 12:00 を「12:00 PM」

あとがき

時刻を正確に伝えるのであれば、24時間表記(0時〜23時)で表現すれば間違えなさそうです。

ただ、19:00 であれば「午後7時」と表現した方が、相手に19時-12時=7時(午後)のような計算をさせずに済むので、日常会話では午前/午後を付けた12時間表記で表現した方がよさそうです。
問題の0時台と12時台ですが、これは午前/午後ではなく昼/夜を付けた12時間表記で表現すれば間違えて伝わることを避けることができそうです。

Excel 以外はどうなのだろうと思い、Google スプレッドシートとLibre Ofiice を確認してみるとExcel と同じでした。Excel だけの独自仕様ではないようです。

英語圏では、システムで時刻をAM/PMで表現したデータを正しく時系列順で表示できているのだろうか?ということが気になったので、とある米国企業が提供する運用監視ツールを見てみました。
一覧上の日時を表示する項目がデフォルトで英語圏の時刻の表現になっていましたが、データの並び順は正しい状態になっていました。「2023/9/14 11:59 PM」の1分後が「2023/9/15 12:00 AM」、「2023/9/15 12:59 AM」の1分後が「2023/9/15 1:00 AM」です。違和感ありまくりです。

参考

VMware Fusion(M1 Mac)にKali Linuxをインストール

VMware FusionKali Linux をインストールする手順の解説です。

前回の「M1 MacにVMware Fusionをインストール」の続きです。

環境

  • MacBook Pro / M1 Pro チップ (Apple Silicon)
  • macOS Monterey (12.6.6)
  • VMware Fusion Player (13.0.2)
  • Kali Linux (2023.2) – Apple Silicon (ARM64)

Kali Linux のダウンロード

Kali Linux のサイトのダウンロードページにアクセスします。

Kali Linux > download 1

左の”Installer Images” をクリックします。

  • Installer Images
    • インストーラーのイメージファイル(ISO ファイル
  • Virtual Machines
    • 仮想マシンのパッケージファイル(.vmwarevm ファイル)
    • こちらにはApple Silicon 対応版はありませんでした(2023.6.17時点)
Kali Linux > download 2

“Kali Linux 2023.2 Changelog” の”Apple Silicon (ARM64)” を選択し、Recommended となっている”Installer” をクリックしてISO ファイルをダウンロードします。

2023.6.17の時点ではkali-linux-2023.2a-installer-arm64.iso というファイルがダウンロードされました。

ダウンロードしたファイルに破損などがないか、チェックサムを確認します。

Kali Linux > download 3

“Installer” の枠内の”sum” をクリックするとSHA256 のチェックサムが表示されます。

% shasum -a 256 kali-linux-2023.2a-installer-arm64.iso
94ce3f6b81be33e2f80de157d69222efbfe6c404491b25292a8058a62096c594 kali-linux-2023.2a-installer-arm64.iso

ターミナルで上記コマンドを実行して出力された文字列と、画面に表示されているSHA256sum の文字列が一致しているか確認します。

Kali Linux のインストール

1. VMware Fusion を起動

VMware Fusion アイコン

Launchpad のVMware Fusion アイコンをダブルクリックします。

2. 新しい仮想マシンの作成

VMware Fusion のウィンドウが表示されました。

VMware Fusion 起動

左上の[+] をクリックして表示されるメニューの中から[新規…] をクリックします。

VMware Fusion > インストール方法を選択

ディスクまたはイメージからインストール” の枠内に、ダウンロードしたISO ファイルをドラッグ&ドロップします。

VMware Fusion > 新しい仮想マシンを作成

インストールディスクとしてドラッグ&ドロップしたISO ファイルのファイル名が表示され選択されているので、[続ける] をクリックします。

VMware Fusion > オペレーティングシステムの選択

Linx > Debian 12.x 64ビット ARM を選択し、[続ける] をクリックします。

VMware Fusion > 仮想マシンの構成が完了

仮想マシンの概要が表示されています。
今回は構成の一部を変えるので[設定のカスタマイズ] をクリックします。

ここで、仮想マシンをファイルで保存するため、ファイル名の入力を求められます。

VMware Fusion > 仮想マシンのファイル保存

任意のファイル名を入力して[保存] をクリックします。

今回は、インストールで使ったISO ファイルが後で分かるように、ISO ファイルのファイル名の一部をファイル名に指定しました。

  • ファイルの拡張子は .vmwarevm です
  • 保存先のデフォルトはユーザーの仮想マシン フォルダです

3. 仮想マシンの構成の設定変更

VMware Fusion > 仮想マシンの設定変更

仮想マシンの構成を設定するウィンドウが表示されました。
今回はメモリのサイズを増やすので、”プロセッサとメモリ” をクリックします。

VMware Fusion > 仮想マシンの設定変更(プロセッサとメモリ)

メモリを2048 MB から4096 MB に変更して、上の”すべてを表示” をクリックします。
元のウィンドウに戻るので、他の設定も必要に応じて変更し、すべての変更が終わったらウィンドウを閉じます。

4. 仮想マシンの起動

作成した仮想マシンのウィンドウが既に開いています。

VMware Fusion > 仮想マシンの起動

大きい再生ボタンをクリックすると、Kali LinuxISO ファイルを使ったインストールが開始します。

インストーラのウィザードが表示されました。

Kali Linux > インストール > Graphical install

ここでは、インストールするモードを選択します。

今回は、”Graphical install” を選択してEnter を押下します。

  • Install” を選択すると青黒画面のUI になるので、マウス操作したい場合は”Graphical install” の方がよさそうです
  • Graphical install” では、青黒ではないグラフィカルなUI 上で操作することができ、マウスの操作も可能です
  • この青黒の画面ではキーボードでの操作しかできないので、上下で選択してEnter 押下で確定します
  • キーボードとマウス操作がゲストOS 側(仮想マシン内)にある状態になるので、ホストOS 側(macOS)に戻したい場合は[control]+[command] を押下します

5. 言語を選択 – Select a language

インストール手順で表示される言語を選択します。ここで選択した言語はインストールするOS のデフォルト言語として設定されます。

Kali Linux > インストール > Select a language

今回は”English” を選択して[Continue] をクリックします。

選択肢に”Japanese – 日本語” もありますが、Kali Linuxに関する情報はウェブ上では英語の方が日本語よりも多く存在するので、調査や検索で都合の良い英語を選択しました。

6. 所在地を選択 – Select your location

タイムゾーンとして設定する場所を選択します。

Kali Linux > インストール > Select your location 1

今回は日本を設定するので、”other” を選択して[Continue] をクリックします。

Kali Linux > インストール > Select your location 2

Asia” を選択して[Continue] をクリックします。

Kali Linux > インストール > Select your location 3

Japan” を選択して[Continue] をクリックします。

7. ロケールを選択 – Configure locales

ロケールを選択します。

Kali Linux > インストール > Configure locales

United States – en_US.UTF-8” を選択して[Continue] をクリックします。

8. キーボードの設定 – Configure the keyboard

キーボードレイアウトを選択します。

Kali Linux > インストール > Configure the keyboard

日本語配列キーボードを使っているので”Japanese” を選択して[Continue] をクリックします。

英語配列はたぶん”American English” です。

9. ネットワークの設定 – Configure the network

仮想マシンのホスト名とドメイン名を設定します。

Kali Linux > インストール > Configure the network 1
Hostname:

まずはホスト名を入力します。
ホスト名はネットワーク上で仮想マシンを識別する名前として使われます。
任意の名前(今回は”m1-kali”)を入力し、[Continue] をクリックします。

Kali Linux > インストール > Configure the network 2
Domain name:

次はドメイン名を入力します。
ドメイン名はインターネット上の識別子となるドメイン名を指定します。
公開しないので何も入力せず[Continue] をクリックします。

10. ユーザとパスワードの設定 – Setup users and passwords

rootユーザの代わりに使うroot 権限のないユーザを作成します。
インストールしたKali Linux に初回ログインする際に使うユーザです。

Kali Linux > インストール > Set up users and passwords 1
Full name for the new user:

まずは、ユーザのフルネームを入力します。
フルネームはユーザの名称として画面に表示される際に使われます。
任意の名称(今回は”capybara”)を入力し、[Continue] をクリックします。

Kali Linux > インストール > Set up users and passwords 2
Username for your account:

次に、ユーザのユーザ名を入力します。
ユーザ名はログイン画面でパスワードと組み合わせて入力する際に使うものです。
先頭文字(半角英小文字)+ 2文字目以降(半角英小文字、数字)にする必要があります。
任意の名称(今回は”capybara”)を入力し、[Continue] をクリックします。

Kali Linux > インストール > Set up users and passwords 3

パスワードを2箇所に入力し、[Continue] をクリックします。

11. ディスクのパーティショニング – Partition disks

ディスクのパーティショニングを行います。

Kali Linux > インストール > Partition disks 1
Partitioning method:

パーティショニングは、案内に従って行う方法と、手動で行う方法を選択することができます。

  • Guided – use entire disk
  • Guided – use entire disk and set up LVM
  • Guided – use entire disk and set up encrypted LVM
  • Manual

今回は”Guided – use entire disk” を選択して[Continue] をクリックします。

Kali Linux > インストール > Partition disks 2
Select disk to partition:

パーティショニングするディスクを選択します。
/dev/nvme0n1 – 21.5GB VMware Virtual NVMe Disk” のみ表示され選択されているので、[Continue] をクリックします。

Kali Linux > インストール > Partition disks 3
Partitioning scheme:

パーティショニングのスキームを選択します。

  • All files in one partition
  • Separate /home partition
  • Separate /home, /var, and /tmp partitions

今回は、初心者に推奨となっている”All files in one partition” を選択して[Continue] をクリックします。

Kali Linux > インストール > Partition disks 4

これまで設定してきたパーティションとマウントポイントの概要が表示されます。
このまま進めるので、”Finish partitioning and write changes to disk” を選択して[Continue] をクリックします。

Kali Linux > インストール > Partition disks 5

ディスクに書き込んでよいか確認が求められています。
[Yes] を選択して[Continue] をクリックします。

12. ソフトウェアを選択 – Software selection

Kali Linux にインストールするソフトウェアを選択します。
デフォルトで標準的なデスクトップ環境とツール類が選択された状態になっている、とのことです。

Kali Linux > インストール > Software selection

今回はデフォルトの状態で[Continue] をクリックします。

Kali Linux のインストールが開始されます。
インストールが完了するまで、そのまま待機します。

13. インストール完了 – Finish the installation

Kali Linux > インストール > Finish the Installation

Kali Linux のインストールが完了しました。

続けて、Kali Linux をインストールした仮想マシンを起動します。
インストールメディアを外すように求められていますが、VMware が自動でやってくれるようなので、このまま[Continue] をクリックします。

14. Kali Linux 起動・ログイン

Kali Linux の仮想マシンが起動します。

Kali Linux > 起動

Kali Linux の起動画面が表示され、”Kali GNU/Linux” が選択されています。
そのままで数秒後に自動で進みますが、Enter を押下して進めることもできます。

Kali Linux > ログイン

ログイン画面が表示されるので、登録したユーザ名パスワードを入力して[Log in] をクリックします。

Kali Linux > デスクトップ

Kali Linux のデスクトップが表示されました。

とりあえず正常にインストールできているようです。

インストール直後の状態の確認

ターミナルで確認します。

$ cat /etc/default/locale
LANG="en_US.UTF-8"
LANGUAGE="en_US:en"

$ cat /etc/timezone
Asia/Tokyo

$ cat /etc/default/keyboard
XKBMODEL="pc105"
XKBLAYOUT="jp"

$ cat /etc/hosts           
127.0.1.1       m1-kali

$ hostname
m1-kali

$ domainname -d


$ cat /etc/passwd | grep capybara
capybara:x:1000:1000:capybara,,,:/home/capybara:/usr/bin/zsh

$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=13.7 ms

あとがき

OS の初期設定

インストールが完了したので、このあと以下のような作業をする予定です。(解説する予定なし)

  • パッケージの更新
    • sudo apt update
    • sudo apt upgrade
  • SSH Server の自動起動設定
  • 日本語のローマ字入力の設定

失敗談

最初、間違えて”Apple Silicon (ARM64)” のイメージファイルではなく、”Pre-built Virtual Machines” の方にあるVMware 向けの仮想マシンのパッケージファイルをダウンロードして、仮想マシンを作り起動するとStart PXE over IPv4 というエラーになり原因を調べても分からず時間を浪費するという状況に陥ってしまいました。

同じ状況に陥った人がStart PXE over IPv4 をキーワードで検索し、このページに辿り着いて早期解決ができたら幸いです。

VirtualBox(M1 Mac)にKali Linuxのインストールを試みた結果

VirtualBox のApple Silicon 対応は、VirtualBox 7.0.8 BETA (Developer preview for macOS / Arm64 (M1/M2) hosts) が2023.6.18時点で提供されていますが、”Apple Silicon (ARM64)” のイメージファイルを使ったインストールを試したところ失敗しました。(”Linux 2.6/3.x/4.x/5.x/(64-bit)”、”Debian 11 Bullseye(64-bit)”)

VirtualBox > Kali Linux > Installation failed
VirtualBox でKali Linux のISOファイルを起動するとすぐ表示されるメッセージ

参照

M1 MacにVMware Fusionをインストール

M1 Mac にVMware 社が提供するMac 用デスクトップ ハイパーバイザーのVMware Fusion をインストールする手順の解説です。

VMware Fusion について

VMware Fusion はVMware 社が提供するソフトウェアで、macOS にインストールすることで、macOS 上でWindows やLinux などのOS を仮想マシンとして起動させることができるようになります。

仮想化ソフトウェアは、ホスト型、ハイパーバイザ型、コンテナ型の3つに分類分けされますが、VMware Fusion はホストOS(macOS)上で動作し、その上で仮想マシンを作成・実行するのでホスト型に分類されます。

現在の最新のバージョンであるFusion 13 のシステム要件は以下のようになっています。

  • プロセッサ(Intel プロセッサー、Apple Silicon
  • OS(macOS 12 Monterey、13 Ventura)

VMware Fusion は、Fusion Pro とFusion Player の2種類があります。
Pro はビジネル利用、Player はゲームや学習目的での利用を想定していて、備えている機能が異なっています。

Pro とPlayer はともに有償の商用利用ライセンスとして提供されていますが、Player は非商用目的の個人利用ライセンスに登録することで無償で使用することが可能となっています。

手順

今回解説する手順は、VMware Fusion Player の個人利用ライセンスの登録からインストール、初回起動までの手順になります。

なお、使ったMac はM1 Pro チップMacBook Pro 、OSはmacOS Monterey です。

1. アカウント登録

VMware のサイトにアクセスします。

VMware ダウンロード 1

上のメニューの[製品] をクリックし、”デスクトップハイパーバイザー” の[Mac 用のFusion] をクリックします。

VMware ダウンロード 2

[無償評価] をクリックします。

VMware ダウンロード 3

“Fusion 13 Player (macOS 12 以降)” の[個人利用ライセンスの登録 >] をクリックします。

VMware ダウンロード 4

Customer Connect のページが表示されます。
“Installation & Configuration” というタブが選択された状態になっています。

右上の[Create an Account] をクリックします。

VMware ダウンロード 5

アカウントの情報を登録するRegister のページが表示されます。
以下の情報を入力し、利用規約のチェックをON 、商品・サービスの案内を受け取るかどうかのチェックを希望する場合はON にして、[Register] をクリックします。

  • 登録するアカウントのログイン情報(Email address, Password)
  • ユーザー情報(First name, Last name)
  • 所属企業の情報(社名、役職、住所、郵便番号、国、電話番号)
VMware ダウンロード 6

登録したメールアドレスに6桁のワンタイムパスワードが届くので、画面に入力して[Verify Code] をクリックします。

VMware ダウンロード 4

アクティベートされたと表示された後、自動で元のページ(Customer Connect の最初のページ)に戻るので、右上の[I Have an Account] をクリックします。

VMware ダウンロード 7

ログイン画面が表示されるので、メールアドレスとパスワードを入力し、[Sign In] をクリックします。

2. ダウンロード

ログインが成功すると、Customer Connect のページが表示されます。
“License & Download” タブが選択された状態になっています。

VMware ダウンロード 8

“License Information” に、VMware Fusion Player 13 – Personal Useライセンスキーが表示されています。後でVMware Fusion の初回起動時に入力するので控えておきます。

“Download Packages” に、VMware Fusion Player – Personal Use License – Binaries の[Manually Download] ボタンがあるのでクリックしてdmg ファイルをダウンロードします。

5月15日の時点では「VMware-Fusion-13.0.2-21581413_universal.dmg」というファイルがダウンロードされました。

ダウンロードしたファイルに破損などがないか、チェックサムを確認します。

% shasum -a 256 VMware-Fusion-13.0.2-21581413_universal.dmg
c86b40823b97334f20b4e6b475b488ec23faf06c986e291965b9e56f7b44c042 VMware-Fusion-13.0.2-21581413_universal.dmg

ターミナルで上記コマンドを実行して出力された文字列と、画面に表示されているSHA256SUM の文字列が一致しているか確認します。

3. VMware Fusion のインストール

ダウンロードしたdmg ファイルをダブルクリックします。
以下のウィンドウが表示されます。

VMware Fusion インストール 1

“VMware Fusion.app” のアイコンをダブルクリックします。

VMware Fusion インストール 2

エンドユーザー使用許諾書を確認し、[同意する] をクリックします。

VMware Fusion インストール 3

VMware Fusion 13 のライセンスキーを持っています” が選択された状態で、前述の手順で控えておいたライセンスキーを入力して[続ける] をクリックします。

VMware Fusion インストール 4

ご利用ありがとうございます” の画面が表示されたら[完了] をクリックします。

VMware Fusion のインストールはこれで完了です。

4. VMware Fusion の初回起動

続けて、インストールしたVMware Fusion を起動します。

VMware Fusion アイコン

Launchpad のVMware Fusion アイコンをダブルクリックします。

VMware Fusion 初回起動 5

アクセシビリティにアクセスできません” というメッセージが表示されるので[OK] をクリックします。

システム環境設定を開き、プライバシーのアクセシビリティを開きます。

VMware Fusion 初回起動 2
VMware Fusion 初回起動 3

VMware Fusion.app” のチェックがOFF になっているのでON にします。

VMware Fusion 初回起動 4

VMware Fusion.app が SystemEvents.app を制御するアクセスを要求しています” というメッセージが表示されていたら、[OK] をクリックします。

VMware Fusion 初回起動 5

“インストール方法を選択” という画面が表示されました。
VMware Fusion の初回起動はこれで完了です。

この画面から、ISO ファイルを使ったOS のインストールや、仮想ディスクのファイル(.vmdk)を使った仮想マシンの作成をすることができます。

あとがき

あとでライセンスキーを確認したくなった時に、VMware Customer Connect のライセンスキーが表示されているページを見つけづらそうだったので記載しておきます。

  1. VMware Customer Connect にログインする
    • https://customerconnect.vmware.com/home
  2. 右上の9点リーダーから”Trial and Free Products” をクリック
  3. “VMWare Fusion” の”Get Fusion Player for Free” をクリック
  4. “VMware Fusion Player – Personal Use License” のページが表示される

次回、VMware FusionKali Linux の仮想マシンをインストールする手順を解説する予定です。
2023.6.18 に投稿しました(↓)

参照

Excelで10進数→16進数の変換

はじめに

Excelで10進数を16進数に変換する方法を整理してみました。

3つの方法がありましたが、使い方や変換できる10進数の範囲が異なっていたので、意識して使い分けするとよさそうです。

関数名10進数(最小)10進数(最大)
ExcelDec2Hex-549,755,813,888549,755,813,887
VBAhex-2,147,483,6482,147,483,647
PowerShell[convert]::ToString-9,223,372,036,854,775,8089,223,372,036,854,775,807

3つ目のConvert クラスのToString メソッドは、Excel VBA のPowerShell コマンドを使って呼び出して使います。
指定する10進数はInt64(64ビット符号付き整数)で、3つの中で一番大きい数値を変換することができます。

使い方

Excel のDec2Hex 関数

Dec2Hex 関数に10進数の値を指定します。例えば、10進数の値が1234567890 の場合、セルに以下のように入力します。

=Dec2Hex(1234567890)

Excel VBA のhex 関数

Excel VBA のエディタ上で以下のようにコードを記述して使います。

Dim lngDec As Long
Dim strHex As String
lngDec = 1234567890
strHex = hex(lngDec)

PowerShell のConvert クラスのToString メソッド

Excel VBA のエディタ上で以下の関数を作り、呼び出して使います。

Function Dec2HexCustom(pDec As Currency) As String
  Dim objShell As Object
  Dim strCmd As String
  Dim strHex As String

  strCmd = "[convert]::ToString(" & pDec & ",16)"
  Set objShell = CreateObject("WScript.Shell").Exec("powershell -Command " & strCmd)
  strHex = objShell.StdOut.ReadAll
  Dec2HexCustom = Left(strHex, Len(strHex) - 2)
End Function
  • (6行目) PowerShell のコマンドは [convert]::ToString(1234567890, 16)
  • (7行目) PowerShell のコマンドを呼び出して変換している
  • (9行目) PowerShell のコマンドの実行結果を標準出力で受け取ると末尾に改行(CRLF)が付加されるので、改行(CRLF)に該当する右2文字を除去している

あとがき

Excel VBA でPowerShell のコマンドを実行すると、処理がもたついてあまりパフォーマンスがよくなかったです。
Excel の表から複数行を読み込んで繰り返し実行する場合は、小さい数値はhex 関数にやらせて、大きい数値のみPowerShell のConvert クラスのToString メソッドを使うように実装した方がよさそうです。

その他、注意事項として、変換後の16進数の値をセルに貼り付ける場合、変換後の16進数の値が「数字 + “E” + 数字」だと、値が指数表記と誤認されて正しくセットされなかったりします。
例えば、「12345678E90」の場合は「1.2345678E+97」に変換され、「1234567E890」の場合は変換されずそのままセットされるなど、何かと厄介です。
貼り付け先のセルの書式を文字列にすれば解消できるので、元から文字列にしておくか、値を貼り付ける直前に文字列にする処理「.Cells(x, y).NumberFormatLocal = “@”」を入れてから貼り付けるようにすればよさそうです。

参考

M1のmacOSにJDKをインストール

はじめに

久しぶりにJava を触ることになり、M1macOSJDK をインストールしたのでその記録です。

JDK は種類が色々あり、どれを入れようか悩んだ結果、AzulOpenJDK をインストールすることにしました。

選定理由は、M1 のmacOS で動作すればよく、あまりガッツリ調べずに決めたので書かないでおきます。
とはいえ、振り返りができるように参考になったサイトのリンクを貼っておきます。

Azul のOpenJDK は、Homebrew にパッケージがありましたが、最新のJava 20 しかなかったので、Azul の公式サイトから最新のLTS であるJava 17 をダウンロードしてインストールすることにしました。

  • zulu – Homebrew Formulae

ダウンロード

Azul の公式サイトのダウンロードページにアクセスします。

左のAzul Zulu Builds of OpenJDK のDownload ボタンをクリックして、希望のJava 17 (最新のLTS)、macOS M1/M2 のdmg ファイルをダウンロードできます。

また、下にスクロールすると、各バージョン、OS環境、CPUアーキテクチャを選ぶことができるようになっています。

ここでは、Download ボタンをクリックすると、macOS 向けでは.dmg / .tar.gz / .zip のいずれかを選んでダウンロードできるようになっています。

今回はmacOS、ARM 64-bit v8.dmg を選択して、下記のファイルをダウンロードしました。

  • zulu17.42.19-ca-jdk17.0.7-macosx_aarch64.dmg

ダウンロードが完了すると表示される画面にSha-256 checksum のリンクがあるのでクリックして、SHA256 のチェックサムを表示します。

ダウンロードしたdmg ファイルに対して下記のコマンドでSHA256 チェックサムを算出し、表示されていたチェックサムと一致していることを確認します。

% openssl sha256 zulu17.42.19-ca-jdk17.0.7-macosx_aarch64.dmg
SHA256(zulu17.42.19-ca-jdk17.0.7-macosx_aarch64.dmg)= 984face81db25020ace7f68fbf4d2c1ec950b46f34c1d40adc36983e545205c5

インストール

dmg ファイルをダブルクリックしてインストールします。

右のダンボールをダブルクリックします。

指示に従えばインストールは完了します。(特筆することがないので省略)

簡単な動作確認だけしておきます。
バージョンを確認します。

% java -version
openjdk version "17.0.7" 2023-04-18 LTS
OpenJDK Runtime Environment Zulu17.42+19-CA (build 17.0.7+7-LTS)
OpenJDK 64-Bit Server VM Zulu17.42+19-CA (build 17.0.7+7-LTS, mixed mode, sharing)

Azul OpenJDK のインストール先を確認します。

% ls -l /Library/Java/JavaVirtualMachines/
total 0
drwxr-xr-x  3 root  wheel  96  5 26 21:54 zulu-17.jdk

あとがき

IDE は最近使っているVisual Studio Code のExtension Pack for Java がよさそうなのでチャレンジしてみようと思います。
Eclipse が一番よく使っていましたが、あまりにも長く使っていないので、思い出すのに苦労するくらいなら新しいものを使ってみようという感じです。

久しぶりの投稿でしたので、とてもシンプルなものになりました。
リハビリとして単なる作業記録を書いた感じです。

参照

nostr.directoryのTwitter認証バッジ

はじめに

前回の投稿「Nostrアカウントの認証(NIP-05)」の続きです。
今回はnostr.directoryTwitter 認証バッチを有効にした際の作業記録です。

最初に感想を述べると、なんかよく分からないけれどできたという感じです。

なので、ここで書かれている通りにやっても上手くいかない可能性があります
同じように困っている方がここで書かれていることを参考にして解決できるかもしれない、という程度の内容なので軽い気持ちでご覧いただければと思います。

とはいえ、もし間違えや誤解を招く記載があれば後で訂正しようと思っています。

作業記録

1. Twitter 上で指定された文言をツイート

nostr.directory のサイトを開くと[Tweet your nostr pubkey] と[Verify your pubkey on nostr] という2つのボタンがあります。

nostr.directory

[Tweet your nostr pubkey] ボタンをクリックしてTwitter 上で指定された内容のツイートをします。

詳しい手順は、前々回の投稿「Nostrアカウントの作成(Damus, Amethyst, snort.social)」のあとがき「nostr.directory」に記載してあります。

このツイートをした後にnostr.directory で自身のアカウントを検索してみると、検索結果にアカウントの情報が表示されるようになりました。(検索条件はTwitter のユーザー名かNostr アカウントの公開鍵を指定します)

nostr.directory > Account

この時はまだ、Twitter の認証バッジは灰色です。
このツイートは、この検索でアカウントを表示できるようにするためだけのもののようです。

Twitter アイコンの右上の(?)をクリックすると、認証バッジを有効する方法と思われる内容が表示されます。

nostr.directory > Twitter Verification ヘルプ

Twitter の検証

ユーザーは下記をする必要がある:

1. nostr.directoryのHPで示されたフォーマットに従って、自身のnostr公開鍵をツイートする

2. nostr.directoryのHPで示されたフォーマットに従って、nostrの公開鍵(1のような)を送信する

上記1. は当項目で実施したこと。2. は後述「3. Nostrアカウントで指定された文言をPost」でやることの認識です。

2. Nostrアカウントにリレーサーバを追加

Nostr のnostr.directory のアカウントが登録しているリレーサーバと自分のアカウントが登録しているリレーサーバを比較して、nostr.directory のアカウントの方にしか登録されていなかったwss://nostr-pub.wellorder.net を追加します。

これが本当に必要かは公式サイトに掲載されている訳ではないので実は必要ないかもしれませんが、何度か試しても上手くいかず、成功した時にこれを追加していたので書いておきます。

Damus > Relays (Before)
追加する前
Damus > Relays (Add)
追加
Damus > Relays (Added)
追加した後

Damus を使ってリレーサーバを追加しました。
画面はDamus の画面です。

3. Nostrアカウントで指定された文言をPost

Damus でPost

iPhone のDamus アプリを使ってPost します。

まず、ブラウザでnostr.directory のサイトを開きます。

nostr.directory > Verify

[Verify your pubkey on nostr] ボタンをクリックします。

nostr.directory > Verify (1)
nostr.directory > Verify (2)

iPhone が初代SE なので画面のレイアウトが窮屈で見づらいですが、”Twitter screen name” という入力欄にTwitter アカウントのユーザー名(先頭の@ を除く)を入力する(左の画像)と、右の画像のようにPublic Key の箇所が入力した内容に自動で置き換わるので、[Copy Verifrication Text] をタップしてクリップボードにコピーします。

Damus アプリを開いて、コピーを貼り付けてPost します。

Damus > Post
Damus > Posted

これで認証バッジにチェックが付くはずが暫く待っても灰色のまま。
どうしてよいか分からぬまま続けてブラウザ向けのNostr クライアントIris を使ってPost してみることにしました。

Iris でPost

ブラムザ向けのNostr クライアント Iris を使ってPost します。

ブラウザを使ってPost する文言を作る手順は同じなので省略します。
Iris でPost しました。

Iris > Posted
iris

上がIris のPost、下がDamus のPost。約1時間後にPost していました。

nostr.directory > Twitter (verified)
nostr.directory

Iris でPost してすぐにnostr.directory を見ると、緑色のチェックが付いていました。
DamusIris のPost のどちらが反映されたのか、Nostr クライアントの違いが影響しているのかなどよく分からないですが、とにかくTwitter 認証バッジが有効になりました。

あとがき

Nostr 関連の最初の投稿「Nostrアカウントの作成(Damus, Amethyst, snort.social)」の際に同じVerify のPost をしていたのですが反映されず、その時は諦めたのですが気になって再度チャレンジして何とかなりました。

これが有効になると、nostr.directory でTwitter のアカウントとnostr アカウントが紐づいていることを確認できることになるので、Twitter でつながっている知人のnostr アカウントを安心して特定できるようになる、という感じでしょうか。

とりあえず、認証バッジが全部灰色よりは見た目がいい感じになれてよかったです。

参照

Nostrアカウントの認証(NIP-05)

はじめに

前回の投稿「Nostrアカウントの作成(Damus, Amethyst, snort.social)」の続きです。
今回はNIP-05 の認証をします。

自身で管理するWeb サーバのドメイン名とNostr アカウントを紐づけることで、Nostr アカウントのプロフィール欄にドメイン名を認証バッジ付きで表示させることができます。
Nostr アカウントがそのドメインの所有者であることを証明することになるので、第三者がそのNostr アカウントがなりすましでないことを確認できるようになります。

1. Web サーバに認証用のファイルを配置

自身で管理するWeb サーバの<domain>/.well-known/nostr.json で参照できる場所に下記のファイルを配置します。

{
  "names": {
    "<name>": "<pubkey>"
  }
}

3行目は自身のNostr アカウントの情報に書き換えます。

  • name
    • Nostr アカウントのUsername(先頭の@ を除く)
  • pubkey
    • Nostr アカウントの公開鍵(HEX 形式

今回、下記のように書き換えました。

{
  "names": {
    "GiantRodent": "94e3a1c166f4fea85b94870219e6461de923296f3fe4736b24c3e23b4c0c43e4"
  }
}

公開鍵(HEX形式)

nostr.directory にアカウントを登録している場合は、NIP-09 のhexPubKey にHEX 形式の公開鍵が表示されているので、ここからコピーして使えます。

nostr.directory > NIP19
nostr.directory > @RodentGiant

Damus のKey Converter というページで、npub で始まる公開鍵を入力してHEX 形式に変換することもできます。

Damus > Key Converter

ファイルを配置(CLI)

Web サーバの公開ディレクトリに認証用のファイルを配置します。
サーバにSSH 接続して下記のコマンドでファイルを配置しました。

mkdir .well-known
cd .well-known
touch nostr.json
chmod 644 nostr.json
vi nostr.json
→ 前述のJSON を貼り付け

2. Web サーバの設定でCORS を許可する

Web サーバの設定ファイルに、CORS を許可する設定を追記します。

Apache

Header set Access-Control-Allow-Origin "*"

nginx

add_header 'Access-Control-Allow-Origin' '*';

3. Nostr アカウントにNIP-05 の識別子を登録

Nostr アカウントにNIP-05 の識別子を登録します。

今回はDamus を使って登録します。
アカウントのプロフィールを編集するページで、<name>@<domain> という形式でNIP-05 の識別子を登録します。

  • name
    • Nostr アカウントのUsername(先頭の@ を除く)
  • domain
    • Webサーバのドメイン名
Damus > Account > Profile > Edit (NIP-05)
Damus > Profile > NIP-05 Verification

今回は [email protected] を登録しました。

登録してプロフィール画面に戻ると、認証バッジ付きのドメイン名が表示されるようになっていました。
細かいですが、実際には画面が表示されてから2〜3秒後に表示されました。

Damus > Account > Profile
NIP-05 認証前
Damus > Account > Profile (NIP-05認証済)
NIP-05 認証後

nost.directory のページを見ると、NIP-05 の認証バッジにチェックが入っていました。

nostr.directory > NIP-05 (認証済)
nostr.directory > @RodentGiant (NIP-05認証済)

あとがき

NIP-05 の認証はスムーズにできました。

nostr.directory にTwitter の認証バッジがあるので、これにもチェックを入れたいのですが上手くできず。
また時間がある時に試してみようと思います。

参照