萎草の茂るブログ

暇人も多忙の方も。

はてなブログのエントリやコメントの投稿時刻を絶対時刻表示にする

goo blog からはてなブログに移ってきて、はてなブログの「好きじゃないな」と思った点が、記事やコメントの投稿時刻が「○時間前」「○年前」のように相対時間表示になっているところ。
相対時間表示の優位性は理解するが、とは言え好きじゃないものは好きじゃない。
という訣で、投稿時刻を絶対時刻表示にしてみました。

どうやるの?

HTML の読込完了後に JavaScript で置換してしまいましょう。
はてなブログに表示される投稿時刻は幸い <time> タグで表現されており、その datetime 属性に絶対時刻が ISO 8601 形式で記録されているので、それを拾って表示してやれば OK です。

JavaScript のコードは、ブログの管理画面の [設定] - [詳細設定] - [head内タグ] - [<head>要素にメタデータを追加] に以下のように書いてやれば読み込まれます。

<script>
ここにコードを書く
</script>

対象は?

はてなブログで <time> タグが使用されているのは以下4種類。(だと思う。他にもあったら教えてください。)

  1. トップページ記事ページにおける記事上部の日付欄
    • 既定では記事の投稿日(絶対日付)が YYYY-MM-DD 形式で表示されている。
    • datetime 属性は YYYY-MM-DDThh:mm:ssZ 形式で絶対日時 (UTC) が記録されている。
    • <time> 要素が <a> 要素に包含されている。リンク先は同日の日別アーカイブページ。
  2. トップページや記事ページにおける記事下部の投稿時刻欄
    • 既定では記事の投稿時刻が相対時間で表示されている。
    • datetime 属性は YYYY-MM-DDThh:mm:ssZ 形式で絶対日時 (UTC) が記録されている。
    • <time> 要素が <a> 要素に包含されている。リンク先は記事ページ。
  3. トップページや記事ページにおけるコメントの投稿時刻欄
    • 既定ではコメントの投稿時刻が相対時間で表示されている。
    • datetime 属性は YYYY-MM-DDThh:mm:ssZ 形式で絶対日時 (UTC) が記録されている。
    • リンクは設定されていない。
  4. 年別/月別/日別アーカイブ、カテゴリー検索結果における記事上部の日付欄
    • 既定では記事の投稿日(絶対日付)が YYYY-MM-DD 形式で表示されている。
    • datetime 属性は YYYY-MM-DD 形式で絶対日付のみが記録されている。時刻を拾うのは困難。
      • すぐ下にある記事タイトルのリンク先から時刻を拾うことは可能だが、本稿では扱わない。
    • <time> 要素が <a> 要素に包含されている。リンク先は同日の日別アーカイブページ。

取り敢えずこれらを対象にする。

置換していく

1. トップページや記事ページにおける記事上部の日付欄

以下のコードで日付欄に datetime 属性の値(YYYY-MM-DDThh:mm:ssZ 形式の絶対日時)を表示させることができます。

// HTML 読込完了時に発火させる
window.addEventListener('DOMContentLoaded', function (){
	// <time> 要素を走査する
	document.querySelectorAll(".entry-date > a > time").forEach(function (time){
		// innerHTML を datetime 属性の値で上書きする
		time.innerHTML = time.getAttribute('datetime');
	});
});

「流石に YYYY-MM-DDThh:mm:ssZ では読みづらい」ということであれば、Date#toLocaleString メソッドを用いて以下のようにすれば、既定のロケールとタイムゾーンでの表示になります。
他の表示形式がお望みでしたら、この部分をお好みに応じて弄ってください。

// HTML 読込完了時に発火させる
window.addEventListener('DOMContentLoaded', function (){
	// <time> 要素を走査する
	document.querySelectorAll(".entry-date > a > time").forEach(function (time){
		// innerHTML を datetime 属性の値で上書きする
		time.innerHTML = (new Date(time.getAttribute('datetime'))).toLocaleString();
	});
});

……尤も、トップページや記事ページにおける記事上部の日付欄は、リンク先が日別アーカイブページですので、時刻を表示しない方が混乱が無いかもしれません。

2. トップページや記事ページにおける記事下部の投稿時刻欄

1. と殆ど同じです。Document#querySelectorAll での拾い方が異なるだけ。

// HTML 読込完了時に発火させる
window.addEventListener('DOMContentLoaded', function (){
	// <time> 要素を走査する
	document.querySelectorAll("time.updated").forEach(function (time){
		// innerHTML を datetime 属性の値で上書きする
		time.innerHTML = (new Date(time.getAttribute('datetime'))).toLocaleString();
	});
});

3. トップページや記事ページにおけるコメントの投稿時刻欄

厄介なのがコメントです。

コメント欄は HTML の読込が一旦完了した後に非同期に読み込んでいるらしく、1. や 2. と同じように DOMContentLoaded のリスナで置換処理を行ったのでは早すぎるようです。
また、コメントが多い記事には「もっと読む」ボタンが表示されますので、「もっと読む」ボタンの押下時にも改めて置換処理を行わねばなりません。

そこで、アドホックではありますが、HTML 読込完了と「もっと読む」ボタン押下を契機として置換処理を200ミリ秒毎に10回繰り返すという実装にします。
(「200ミリ秒」「10回」というのは特に根拠のある値ではないので、適当に調整してください)

// コメントの投稿時刻欄を retry 回置換する
function commentTimeToLocaleString(retry){
	// リトライ残回数が 0 以下ならば終了
	if (retry <= 0){
		return;
	}

	// 200ミリ秒後にリトライ
	setTimeout(commentTimeToLocaleString, 200, retry - 1);

	// <time> 要素を走査する
	document.querySelectorAll(".comment-metadata > time"), function (time){
		// innerHTML を datetime 属性の値で上書きする
		time.innerHTML = (new Date(time.getAttribute('datetime'))).toLocaleString();
	});
}

// HTML 読込完了時に発火させる
window.addEventListener('DOMContentLoaded', function (){
	// 初期表示時点でまず実行
	commentTimeToLocaleString(10);

	// 「もっと読む」ボタンのリスナに追加
	document.querySelectorAll(".read-more-comments > a").forEach(function (button){
		button.addEventListener('click', function (){
			commentTimeToLocaleString(10);
		});
	});
});

4. 年別/月別/日別アーカイブ、カテゴリー、検索結果における記事上部の日付欄

最後のこれは 1. や 2. とほぼ同じ。
但し、日付だけで時刻が拾える訣ではないので、あまり面白くはありません。
日付の表示形式を弄りたい場合にどうぞ。(以下のコード例では表示形式を Date#toLocaleDateString にしています)

// HTML 読込完了時に発火させる
window.addEventListener('DOMContentLoaded', function (){
	// <time> 要素を走査する
	document.querySelectorAll(".archive-date > a > time").forEach(function (time){
		// innerHTML を datetime 属性の値で上書きする
		time.innerHTML = (new Date(time.getAttribute('datetime'))).toLocaleDateString();
	});
});

「年別/月別/日別アーカイブ」「カテゴリー」「検索結果」をそれぞれ個別に設定したい場合は Document#querySelectorAll の引数を以下のようにしてください。

年別/月別/日別アーカイブ

document.querySelectorAll(".archive-heading + .archive-entries .archive-date > a > time")

カテゴリー

document.querySelectorAll(".archive-header-category + .archive-entries .archive-date > a > time")

検索結果

document.querySelectorAll(".search-result + .archive-entries .archive-date > a > time")

まとめ

以上を全部纏めると以下のようになります。

// コメントの投稿時刻欄を retry 回置換する
function commentTimeToLocaleString(retry){
	// リトライ残回数が 0 以下ならば終了
	if (retry <= 0){
		return;
	}

	// 200ミリ秒後にリトライ
	setTimeout(commentTimeToLocaleString, 200, retry - 1);

	// <time> 要素を走査する
	document.querySelectorAll(".comment-metadata > time"), function (time){
		// innerHTML を datetime 属性の値で上書きする
		time.innerHTML = (new Date(time.getAttribute('datetime'))).toLocaleString();
	});
}

// HTML 読込完了時に発火させる
window.addEventListener('DOMContentLoaded', function (){
	// 1. トップページや記事ページにおける記事上部の日付欄
	document.querySelectorAll(".entry-date > a > time").forEach(function (time){
		time.innerHTML = (new Date(time.getAttribute('datetime'))).toLocaleString();
	});

	// 2. トップページや記事ページにおける記事下部の投稿時刻欄
	document.querySelectorAll("time.updated").forEach(function (time){
		time.innerHTML = (new Date(time.getAttribute('datetime'))).toLocaleString();
	});

	// 3. トップページや記事ページにおけるコメントの投稿時刻欄
	commentTimeToLocaleString(10);
	document.querySelectorAll(".read-more-comments > a").forEach(function (button){
		button.addEventListener('click', function (){
			commentTimeToLocaleString(10);
		});
	});

	// 4. 年別/月別/日別アーカイブ、カテゴリー、検索結果における記事上部の日付欄
	document.querySelectorAll(".archive-date > a > time").forEach(function (time){
		time.innerHTML = (new Date(time.getAttribute('datetime'))).toLocaleDateString();
	});
});

実際このブログではどのように設定しているのか?

このページのソースコードを読んでください。
(このブログでは、クライアントのロケールに依らず UTC+9 で表示させるために若干面倒なことをしています)

参考資料

コメントの投稿時刻欄については以下リンク先を参考にしました。
リンク先のコードでは、ページ初期表示時において「コメント欄が表示されるまで試行を繰り返す」という実装になっています。
ただ、残念乍ら「もっと読む」ボタン押下時については対応していません。

q.hatena.ne.jp

はてなブログ導入

2004年12月18日より利用してきた goo blog が2025年11月18日にサービス終了を迎えることになったので、ブログをはてなブログに移しました。
ついでに昔 mixi で書いていた日記も可能な範囲でここに集約しました。

ブログ移転について

2025年4月14日に Twitter の goo blog 公式アカウントから【goo blog サービス終了のお知らせ】という告知が出たのが事の発端。

正直この時点では「また昔のように HTML ベタ打ちで日記を書けば良いかな」とも思っていたのですが、やはり

  • 外出先等からでも気軽に日記を投稿できる
  • 全文検索ができる
  • コメント機能がある

といったブログの良さは捨て難く、また goo blog も他社ブログへのエクスポート機能を準備中(4月16日提供開始)とのことだったので、他社ブログへ移転する方向で考えることにしました。

何故「はてなブログ」?

goo blog が移転先として推奨しているブログサービスは以下2つ。

これら2者なら、goo blog の過去記事を Movable Type 形式でエクスポートしてその侭インポートできるし、11月までは goo blog の跡地から移転先へリダイレクトしてくれるとのこと。
goo blog 側が一方的に推奨している訣ではなく、2者もちゃんと受入を表明している(Ameba Blog, はてなブログ)。


20年前のブログ全盛期はブログサービスってもっと色々あったよな……(エキサイトブログ、ライブドアブログ、FC2 ブログ、etc.)
いやまあ今もあるのですが、嘗て有力ブログサービスの1つであった goo blog が潰れるこのご時世、他のサービスだって今後どうなるかわかったもんじゃありません(失礼

そんな中、現在でも多くのアクティヴユーザを抱える「Ameba Blog」と「はてなブログ」は、謂わばブログサービス界の
流石にこの2者は当面安泰でしょう。

では、「Ameba Blog」「はてなブログ」のうちどちらを選ぶのか? ですが、この両者の比較となると「はてなブログ」の圧勝です。理由は以下2点。

(周囲のユーザに関しては、IT エンジニア界隈に身を置いていることに因る偏りはありそうな気はせんでもない)

という訣で移転先は「はてなブログ」に決定。

何故「はてなブログPro」?

ブログの移転だけであれば無料版の「はてなブログ」でも十分だったのですが、折角なので有料プランの「はてなブログPro」にしてみました。
理由は以下3点。

「HTML 編集モード」を使用できる
無料版の「見たまま編集モード」(WYSIWYG エディタ)にも HTML 編集機能はあるのだが、WYSIWYG エディタにより HTML が破壊されてしまい、筆者の意図する HTML にならない。有料版の「HTML 編集モード」であれば意図通りの HTML の編集/保存が可能。
独自ドメインを使用できる
この日記はウェブサイト総合雑学 鵺帝国の更新日記として書き始めたのが始まりであり、他の外部サービスと異なりウェブサイトとの結びつきが強い。同じドメイン nue2004.info で運用できると嬉しい。
広告を非表示にできる
単純に広告は鬱陶しく、美しくない。カネなら払うので、消えてもらいたい。


そんな訣で新生萎草の茂るブログが始まりました。
今後ともよろしくお願いします。

建国記念の日

今日は、建国記念の日ですね。

記紀神話によると、神武天皇が即位したとされる日です。
それから2684年。
対して鵺帝国の歴史は約20.6年。
およそ131倍。(比べちゃいけない)
これからも頑張らないと。

とまあ、毎度毎度似たようなことを書いている訳です。
2005年, 2006年, 2007年, 2009年, 2011年, 2012年, 2013年, 2014年, 2020年
↑何回同じネタを使い回すんだ


取り敢えず、「およそ○○倍」の値が2桁になる7年後までは頑張ってみましょうかね。

国歌の歌詞における国名

各国の国歌の歌詞に自国名が歌われているのかどうかが気になったので調べた。

調査対象

対象は以下の200ヶ国とした。

  • 国連加盟国(193ヶ国)
  • 国連総会オブザーバ(3ヶ国: バチカン, パレスチナ, マルタ騎士団)
  • 嘗て国連における代表権を有していた国(1ヶ国: 中華民国)
  • 日本国が承認している国(国連加盟国中192ヶ国の他、バチカン, クック諸島, ニウエ, コソボ)

調査方法

Wikipedia 日本語版及びWikipedia 英語版を適当に当たった。

調査結果

結果は以下の通りであった。

  • 国歌の歌詞に国名または国名と同源の民族名が含まれる国: 157ヶ国
    (「○○国民」と「○○民族」との区別は必ずしも判然としないため、これらは区別しないことにした)
  • 国歌の歌詞に国の異称・雅称に類するものが含まれる国: 4ヶ国
  • 国歌の歌詞に国名とは異なる民族名に類するものが含まれる国: 3ヶ国
  • 国歌の歌詞に国名と同源だが国や民族を表す語ではない語が含まれる国: 1ヶ国
  • 以上のいずれにも該当しない国: 35ヶ国

以下にそれぞれの分類に属する具体的な国の一覧を示す。

国歌の歌詞に国名または国名と同源の民族名が含まれる国

#国名歌詞に含まれる語ラテン文字転写備考
1🇮🇸アイスランドÍslandsÍslands
2🇮🇪アイルランドÉirinnÉirinn
3🇦🇿アゼルバイジャンAzərbaycanAzərbaycan
4🇦🇫アフガニスタンافغانستانAfǧānistānアフガニスタン・イスラム共和国の国歌
5🇩🇿アルジェリアالجزائرAl-Jazāʾir
6🇦🇷アルゼンチンArgentinoArgentino
7🇦🇱アルバニアShqipëriaShqipëria
8🇦🇲アルメニアՀայաստանHayastan
9🇦🇴アンゴラAngolaAngola
10🇦🇬アンティグア・バーブーダAntigua and BarbudaAntigua and Barbuda
11🇾🇪イエメンيمنياYamaniyâ
12🇬🇧イギリスBritainBritain
13🇮🇹イタリアItaliaItalia
14🇮🇷イランجمهوری اسلامی ایرانJomhuriye Eslāmiye Irān
15🇮🇳インドभारतBhārat
16🇮🇩インドネシアIndonesiaIndonesia
17🇺🇬ウガンダUgandaUganda
18🇺🇦ウクライナУкраїниUkrainy
19🇺🇿ウズベキスタンÓzbekistonÓzbekiston
20🇪🇬エジプトمصرMaṣr
21🇸🇿エスワティニtemaSwatitemaSwati
22🇪🇹エチオピアኢትዮጵያችንItyopp’yachen
23🇪🇷エリトリアኤርትራErtra
24🇸🇻エルサルバドルEl SalvadorEl Salvador
25🇦🇺オーストラリアAustraliaAustralia
26🇦🇹オーストリアÖsterreichÖsterreich
27🇴🇲オマーンعمانʿOmân
28🇳🇱オランダNeerlandNeerlandNeerlandNederland の古形
29🇬🇭ガーナGhanaGhana
30🇬🇾ガイアナGuyanaGuyana
31🇰🇿カザフスタンҚазақстанымQazaqstanym
32🇶🇦カタールقطرQaṭar
33🇨🇦カナダCanadaCanada
34🇬🇦ガボンGabonGabon
35🇨🇲カメルーンCamerounCameroun
36🇬🇲ガンビアGambiaGambia
37🇰🇭カンボジアខ្មែរKhmêr
38🇲🇰北マケドニアМакедонијаMakedonija
39🇬🇳ギニアGuinéeGuinée
40🇨🇺キューバCubaCuba
41🇬🇷ギリシャΕλλήνωνEllínon
42🇰🇮キリバスKiribatiKiribati
43🇰🇬キルギスКыргызKyrgyz
44🇬🇹グアテマラGuatemalaGuatemala
45🇰🇼クウェートالكويتAl-Kuwayta
46🇬🇩グレナダGrenadaGrenada
47🇭🇷クロアチアHrvatHrvat
48🇰🇪ケニアKenyaKenya
49🇨🇮コートジボワールCôte d'IvoireCôte d'Ivoire
50🇰🇲コモロKomoriyaKomoriya
51🇨🇬コンゴ共和国CongoCongo
52🇨🇩コンゴ民主共和国CongoCongo
53🇼🇸サモアSamoaSamoa
54🇸🇹サントメ・プリンシペSão Tomé e PríncipeSão Tomé e Príncipe
55🇿🇲ザンビアZambiaZambia
56🇸🇱シエラレオネSierra LeoneSierra Leone
57🇯🇲ジャマイカJamaicaJamaica
58🇸🇬シンガポールSingapuraSingapura
59🇿🇼ジンバブエweZimbabweweZimbabwe
60🇨🇭スイスSchweizer [de]
Suisse [fr]
Svizzer [rm]
Schweizer [de]
Suisse [fr]
Svizzer [rm]
イタリア語版の歌詞には対応する語は無い
61🇸🇩スーダンسودانناSūdānunā
62🇸🇷スリナムSurinameSuriname
63🇱🇰スリランカශ්‍රී ලංකාŚrī laṁkā
64🇸🇰スロバキアSlováciSlováci
65🇸🇮スロベニアSlovencevSlovencev
66🇸🇨セーシェルSesel Sesel
67🇬🇶赤道ギニアGuineaGuinea
68🇸🇳セネガルSénégalSénégal
69🇷🇸セルビアСрпскеSrpske
70🇰🇳セントクリストファー・ネイビスSt. Kitts and NevisSt. Kitts and Nevis
71🇻🇨セントビンセント・グレナディーンSaint VincentSaint Vincent
72🇱🇨セントルシアSaint LuciaSaint Lucia
73🇸🇧ソロモン諸島Solomon IslandsSolomon Islands
74🇹🇭タイไทยThai
75🇰🇷大韓民国대한Daehan
76🇹🇯タジキスタンТоҷикистониTojikistoni
77🇹🇿タンザニアTanzaniaTanzania
78🇨🇿チェコČeskáČeská
79🇹🇩チャドTchadienTchadien
80🇨🇫中央アフリカCentrafriqueCentrafrique
81🇨🇳中華人民共和国中华Zhōnghuá
82🇹🇳チュニジアتونسTūnis
83🇰🇵朝鮮民主主義人民共和国조선Chosŏn
84🇨🇱チリChileChile
85🇹🇻ツバルTuvaluTuvalu
86🇩🇰デンマークDanmarkDanmark
87🇩🇪ドイツDeutschlandDeutschland
88🇹🇬トーゴTogoTogo
89🇩🇲ドミニカ国DominicaDominica
90🇹🇲トルクメニスタンTürkmenistanymTürkmenistanym
91🇹🇴トンガTongaTonga
92🇳🇬ナイジェリアNigeriaNigeria
93🇳🇷ナウルNauruNauru
94🇳🇦ナミビアNamibiaNamibia
95🇳🇮ニカラグアNicaraguaNicaragua
96🇳🇪ニジェールNigerNiger
97🇳🇿ニュージーランドNew ZealandNew Zealand
98🇳🇵ネパールनेपालीNepālī
99🇳🇴ノルウェーNorskeNorske
100🇧🇭バーレーンبحرينناBaḥraynunā
101🇵🇰パキスタンپاکستانPaakistaan
102🇻🇺バヌアツVanuatuVanuatu
103🇧🇸バハマBahamalandBahamaland
104🇵🇬パプアニューギニアPapua New GuineaPapua New Guinea
105🇵🇼パラオBelauBelau
106🇵🇾パラグアイParaguayosParaguayos
107🇭🇺ハンガリーmagyartmagyart
108🇧🇩バングラデシュবাংলাBāṅlā
109🇹🇱東ティモールTimor-LesteTimor-Leste
110🇫🇯フィジーFijiFiji
111🇫🇮フィンランドSuomiSuomi
112🇧🇷ブラジルBrasilBrasil
113🇫🇷フランスFrançaisFrançais
114🇧🇬ブルガリアБългариBulgari
115🇧🇫ブルキナファソBurkinaBurkina
116🇧🇳ブルネイبروني دارالسلامBrunei Darussalam
117🇧🇮ブルンジBurundiBurundi
118🇻🇳ベトナムViệt NamViệt Nam
119🇧🇯ベナンBéninBénin
120🇧🇾ベラルーシБеларусыBiełarusy
121🇵🇪ペルーPeruanoPeruano
122🇧🇪ベルギーBelgique [fr]
België [nl]
Belgiens [de]
Belgique [fr]
België [nl]
Belgiens [de]
123🇵🇱ポーランドPolskaPolska
124🇧🇦ボスニア・ヘルツェゴビナBosnoBosno
125🇧🇼ボツワナBotswanaBotswana
126🇧🇴ボリビアBolivianosBolivianos
127🇵🇹ポルトガルPortugalPortugal
128🇭🇳ホンジュラスHondurasHonduras
129🇲🇭マーシャル諸島Marshall IslandsMarshall Islands
130🇲🇬マダガスカルMadagasikaraMadagasikara
131🇲🇼マラウイMalaŵiMalaŵi
132🇲🇱マリMaliMali
133🇲🇹マルタMaltinMaltin
134🇫🇲ミクロネシアMicronesiaMicronesia
135🇿🇦南アフリカ共和国South AfrikaSouth Afrika
136🇸🇸南スーダンSouth SudanSouth Sudan
137🇲🇲ミャンマーမြန်မာပြည်Mranma Prany
138🇲🇽メキシコMexicanosMexicanos
139🇲🇷モーリタニアموريتانMūrītāni
140🇲🇿モザンビークMoçambiqueMoçambique
141🇲🇻モルディブދިވެހިންގެDhiveheenge
142🇲🇳モンゴルМонголынMongolyn
143🇲🇪モンテネグロЦрна ГороCrna Goro
144🇱🇦ラオスຊາດລາວXatlao
145🇱🇻ラトビアLatvijuLatviju
146🇱🇹リトアニアLietuvaLietuva
147🇱🇾リビアلِيبِيَاLībiyā
148🇱🇮リヒテンシュタインLiechtensteinLiechtenstein
149🇱🇷リベリアLiberiaLiberia
150🇷🇴ルーマニアRomâneRomâne
151🇱🇺ルクセンブルクLëtzebuergerLëtzebuerger
152🇷🇼ルワンダRwandaRwanda
153🇱🇸レソトLesōthōLesōthō
154🇱🇧レバノンلبنانLubnān
155🇷🇺ロシア連邦РоссияRossija
156🇳🇺ニウエNiueNiue
157🇵🇸パレスチナفِلَسْطِينُFilasṭīn

国歌の歌詞に国の異称・雅称に類するものが含まれる国

#国名歌詞に含まれる語ラテン文字転写備考
1🇦🇪アラブ首長国連邦اتحاد إماراتناittiḥādu ʾimārātinā我々の首長国連邦
2🇸🇾シリアالشـآمAl-šaʾāmiシャーム
3🇩🇴ドミニカ共和国QuisqueyaQuisqueyaキスケージャ
4🇧🇹ブータンའབྲུགDruk雷竜

国歌の歌詞に国名とは異なる民族名に類するものが含まれる国

#国名歌詞に含まれる語ラテン文字転写備考
1🇮🇱イスラエルיְהוּדִיYehudiユダヤ人
2🇺🇾ウルグアイOrientalesOrientales東方人
3🇨🇾キプロスΕλλήνωνEllínonギリシャ人
※キプロスの国歌はギリシャの国歌と同一

国歌の歌詞に国名と同源だが国や民族を表す語ではない語が含まれる国

#国名歌詞に含まれる語ラテン文字転写備考
1🇨🇴コロンビアColónColónコロンブス

以上のいずれにも該当しない国

#国名備考
1🇺🇸アメリカ合衆国
2🇦🇩アンドラ
3🇮🇶イラクパレスチナの準国歌でもある
4🇪🇨エクアドル
5🇪🇪エストニア
6🇨🇻カーボベルデ
7🇬🇼ギニアビサウカーボベルデの旧国歌でもあった
8🇨🇷コスタリカ
9🇸🇦サウジアラビア
10🇸🇲サンマリノ
11🇩🇯ジブチ
12🇬🇪ジョージア
13🇸🇪スウェーデン
14🇪🇸スペイン歌詞の無い国歌
15🇸🇴ソマリア
16🇹🇹トリニダード・トバゴ西インド連邦の歌であった
17🇹🇷トルコ北キプロスの国歌でもある
18🇯🇵日本
19🇭🇹ハイチ
20🇵🇦パナマ
21🇧🇧バルバドス
22🇵🇭フィリピン
23🇻🇪ベネズエラ
24🇧🇿ベリーズ
25🇲🇾マレーシア
26🇲🇺モーリシャス
27🇲🇨モナコ
28🇲🇩モルドバ
29🇲🇦モロッコ
30🇯🇴ヨルダン
31🇻🇦バチカン
32🇨🇰クック諸島
33🇽🇰コソボ
34マルタ騎士団
35🇹🇼中華民国

日本や米国は国名を歌っておらず、英国も5番まで行かないと Britain が現れない(寧ろ調べてみるまで Britain が歌詞に現れることを知らなかった)ので、国名を歌っていない国の割合の少なさ (17.5%) は意外に思えた。

結果発表

初の人間ドックの結果が返ってきたので、何らかの異常が認められた点を晒します。

身体計測
4以来34年ぶりの BMI 18 kg/m² 超過を達成したとは言え、基準値 18.5 kg/m² には満たないということで一応「異常」という判定。

血液検査
平均赤血球ヘモグロビン量 (MCH) の値が基準値 28.1 pg に満たず。
過去の献血時の検査でも MCH が低かったことはあったな。
(尤も特にそれで何か問題があると言われたことは無い)

糖代謝
血糖値が 101 mg/dL で基準値 99 mg/dL をやや超過。
炭水化物の食べすぎだろうか……?

心電図
毎年「不完全右脚ブロック」か「rsrパターン」かどちらかが指摘される。
今年は「不完全右脚ブロック」であった。

胸部CT
右上葉胸膜下の索状影。
何ですかこれは?

腹部超音波検査
副脾。
脾臓の紛い物があるらしい。
(これも昨年からわかっていた)

歯科検診
歯石が溜まっているらしい。
思えば5年ぐらい歯石取りに行っていないな。

ピロリ菌
ヘリコバクター・ピロリ抗体、陽性。


異常だらけじゃないかorz


ピロリ菌がいたということで、「曙 vs. ボブ・サップボノサップ」とかいう強そうな名前の薬を飲んで退治することに。
除菌に成功したか否かがわかるのはまた来月。

人間ドック

2005年以来ほぼ毎年恒例の不健康診断速報も20年目となりました。

今年も昨年と同じ病院での受診。
うちの会社では35歳になる年度からは人間ドックを受けることになっているので、任意オプションもマシマシにして受けてきました。
という訣で(?)、今回は全検査項目についてコメントしていきます。

採血
はじめは採血。
これはいつも通りですね。
献血でも慣れてるし、どうということもありません。

頚動脈超音波検査
お次はお初。任意で追加したオプション項目です。
腹部超音波検査と同じ機械を頚部に当てて頚動脈を見るやつ。
何をどう見ているのかさっぱりわかりませんが、結果が出るのを楽しみにしておきます。

計測・視力検査・聴力検査
毎度お馴染み、いつものやつです。
それでは、今回も測定値を晒していきます。
・身長: 176.1 cm (+0.6 cm)
・体重: 56.2 kg (+2.0 kg)
・BMI: 18.1 kg/m2 (+0.5 kg/m2)
・腹囲: 65.5 cm (+1.8 cm)
・収縮期血圧: 109 mmHg (+8 mmHg)
・拡張期血圧: 73 mmHg (+9 mmHg)
・脈拍: 73 bpm (−1 bpm)
(括弧内は昨年との差)

身長も体重も増加して過去最高。
まだ成長しているのか……?
BMI が 18 kg/m2 を超えたのは、(把握している限り)4以来。
実に34年7ヶ月ぶり。

肺機能検査
こちらもお初。
大きく息を吸った後、機械に向かって息を吹き込むやつ。
取り敢えず問題は無かった模様。

問診・診察
いつも通り。
取り立てて何か引っ掛かる事項も無し。

MRI
オプション項目の脳ドック。
35歳の次は40歳以降受診可能らしい。

初めてのMRI。
看護師に「機械に入ったら動かないでください」と言われたので「ほーん、じゃあ寝てよう」と思っていたら、
未だ脳を診てもいないのに思考を読まれたか(冗談)「寝ないでいてください」と釘を刺されてしまいました。

「検査時間は15分ぐらい」と言われたので、機械に入ってからは頭の中で《ニコニコ動画流星群》(約14分)を再生していたのですが、
《God knows...》ぐらいまでしか辿り着かなかったので、実際の検査時間は8分半ぐらいです。たぶん。

機械の中の真っ白けな壁面以外何も見えません。
その状況で「ゴゴゴゴ」とか「ビービー」とか機械音が鳴り響いているので、なかなか怖い。
もうちょっと「今何をしているのか」を説明してくれ!

CTスキャン
本当なら今回が初CTスキャンになる筈だったのだが、昨年末に骨折をしてしまいましてな……
2回目のCTスキャンでした。

歯科検診
これは慣れたもの。
虫歯も無いし、特に何とも無い。

胃部内視鏡検査
大腸内視鏡検査はこれまでに4回経験しているのだが、胃部内視鏡検査は今回が初。
経鼻を希望したのだが、どうも鼻腔が狭いらしく、入らず。仕方無く経口で。
「鼻から息を吸って口から吐け」と言われるのだが、全然息を吸えず。
とても苦しかった。
バリウム造影剤の方が圧倒的に楽(と言うか造影検査は全く苦でなかった)。

胸部X線検査
これも慣れたもの。
上述の通り昨年末に骨折したこともあり、今年は何回レントゲン撮影を受けたことか……

心電図検査
これも毎年受けている。
毎回何らかの所見が出るんだよな……

眼底・眼圧検査
健診項目としては2020年にミニドックで受けたとき以来。
尤も近視の私にとってはそこそこ慣れたものである。

腹部超音波検査
34歳以下の定健Bでもオプションで追加できたので毎年受けている項目。
肝臓・胆嚢・膵臓・脾臓・腎臓を診ているらしいです。
肝臓を労らねばね。


基本検査項目とオプションの一部は会社の健保が負担してくれるので、個人負担は3万円ぐらいでした。
いよいよ明日は35歳の誕生日。だいぶ身体にガタが来ているので、もうちょっと健康に気を使わねば。

Ubuntu 24.04 LTS (Noble Numbat) インストール記

Ubuntu 24.04 LTS (Noble Numbat) がリリースされたので、Ubuntu 22.04 LTS (Jammy Jellyfish) からアップグレードしました。
本記事は、アップグレード時に嵌まったところの話。

1. Ubuntu 23.10 (Mantic Minotaur) へのアップグレード

Ubuntu 24.04 LTS にアップグレードできるかな? と思って

$ sudo do-release-upgrade -c

と打ってみたところ、残念乍ら

新しい Ubuntu のリリースをチェックしています
入手可能なLTSの開発版はありません。
最新の非LTS開発リリースにアップグレードする
/etc/update-manager/release-upgradesにPrompt=normalとセットしてください。

と出てきてアップグレードできませんでした。

これはもしや -d オプションが必要か? と思って

$ sudo do-release-upgrade -d -c

としてみたところ……

新しい Ubuntu のリリースをチェックしています
入手可能なLTSの開発版はありません。
最新の非LTS開発リリースにアップグレードする
/etc/update-manager/release-upgradesにPrompt=normalとセットしてください。

変わらず。

/etc/update-manager/release-upgrades を確認すると

Prompt=lts

と。

LTS へのアップグレードなので普通に考えたら Prompt=lts の侭で大丈夫そうなところですが、試しに

Prompt=normal

と書き換えて do-release-upgrade を実行してみると……

$ sudo do-release-upgrade -d -c
新しい Ubuntu のリリースをチェックしています
アップグレードできる開発版のリリースはこれだけです:
最新のサポートされているリリースから入手できます。

「これだけです」の「これ」って何なんだよ。

-d を外すと……

$ sudo do-release-upgrade -c
新しい Ubuntu のリリースをチェックしています
新しいリリース '23.10' が利用可能になっています。
'do-release-upgrade' を実行してアップグレードしてください

どうやら一旦 Ubuntu 23.10 (Mantic Minotaur) へアップグレードしてからでないと Ubuntu 24.04 LTS (Noble Numbat) へのアップグレードはできないようです。

なんでだよ。

$ sudo do-release-upgrade
新しい Ubuntu のリリースをチェックしています
= Welcome to Ubuntu 23.10 'Mantic Minotaur' =

The Ubuntu team is proud to announce Ubuntu 23.10 'Mantic Minotaur'.

To see what's new in this release, visit:
 https://wiki.ubuntu.com/ManticMinotaur/ReleaseNotes

Ubuntu is a Linux distribution for your desktop or server, with a fast
and easy install, regular releases, a tight selection of excellent
applications installed by default, and almost any other software you
can imagine available through the network.

We hope you enjoy Ubuntu.

ここまで来てしまえば、あとは対話的にインストールを進めれば完了。

……と思ったら、再起動後、インターネットへの接続を失ってしまいました。

確認したところ、IPアドレス等を設定していた /etc/netplan/01-network-manager-all.yaml が消滅していました。
同じディレクトリに 01-network-manager-all.yaml.dpkg-backup という名前でバックアップが残っていたので、これを復元し、

$ sudo netplan apply

で復旧。

2. Ubuntu 24.04 LTS (Noble Numbat) へのアップグレード

いよいよ本丸、Ubuntu 24.04 LTS (Noble Numbat) へのアップグレード。

/etc/update-manager/release-upgrades の記載を

Prompt=lts

に戻して

$ sudo do-release-upgrade -c

としてみると……

新しい Ubuntu のリリースをチェックしています
入手可能なLTSの開発版はありません。
最新の非LTS開発リリースにアップグレードする

やっぱり -d が要るっぽい。

$ sudo do-release-upgrade -c -d
新しい Ubuntu のリリースをチェックしています
新しいリリース '24.04 LTS' が利用可能になっています。
'do-release-upgrade' を実行してアップグレードしてください

お、来た来た!

$ sudo do-release-upgrade -d
新しい Ubuntu のリリースをチェックしています

= Welcome to Ubuntu 24.04 LTS 'Noble Numbat' =

The Ubuntu team is proud to announce Ubuntu 24.04 LTS 'Noble Numbat'.

To see what's new in this release, visit:
 https://wiki.ubuntu.com/NobleNumbat/ReleaseNotes

Ubuntu is a Linux distribution for your desktop or server, with a fast
and easy install, regular releases, a tight selection of excellent
applications installed by default, and almost any other software you
can imagine available through the network.

We hope you enjoy Ubuntu.

あとは Ubuntu 23.10 (Mantic Minotaur) のときと同様。

はい、Ubuntu 23.10 (Mantic Minotaur) のときと同様に、再起動後、インターネットへの接続を失ってしまいました。
なんでだよ!

最後の健康診断(Bコース)

毎年恒例、不健康診断速報です。

今年も昨年と同じ病院での受診。
それでは、今回も測定値を晒していきます。

(括弧内は昨年との差)
・身長: 175.5 cm (−0.3 cm)
・体重: 54.2 kg (±0.0 kg)
・BMI: 17.6 kg/m2 (+0.1 kg/m2)
・腹囲: 63.7 cm (−1.0 cm)
・収縮期血圧: 101 mmHg (−8 mmHg)
・拡張期血圧: 64 mmHg (−5 mmHg)
・脈拍: 74 bpm (+1 bpm)

2年続けて身長が減少。
体重は昨年と変わっていないので、相対的に重くなったということになるが、しかし腹囲は 1.0 cm の減。
体感的にはもうちょい太っている感があったので、若干拍子抜けする測定結果でした。

今日は34歳の誕生日。
35歳になる来年からは人間ドックを受診するので、「健康診断(Bコース)」と呼ばれる健康診断は今回で最後です。

リニューアル

お蔭様で鵺帝国は5月9日に 50,000 hits を迎えました!
皆様日頃のご愛顧本当にありがとうございます!

この度、50,000 hits を記念して(?)サイトをリニューアルしました。
主な変更点は2つ。

  • 主たるコンテンツの横幅を 1024 px に制限し、幅の広いディスプレイで表示した場合には左右にページ内リンク等を表示するようにした。
    スマホからのアクセスが主流となりつつある一方、PC での表示も崩したくないので、あまりデバイスに依存しないデザインにすることが目的。
  • コンテンツの階層構造を従前よりフラットにした。
    抑〻の階層構造が大部分において中高生の頃に作った当時のものを踏襲しているものなので、いい加減修正しないと立ち行かない。

取り敢えずそんなところです。
今後とも鵺帝国をよろしくお願いします。