日常雑感

その時々のできごとや思ったことはリアルタイムWEBのSNS(フェディバース)に放流。
あとから参照することもありそうなことは蓄積型のこのブログに積み上げ。
という大雑把な棲み分けをするようにしてるつもり(SNSのなかった昔はともかく)
…なんだけど、ここ最近みたニュースがもうほんと未来に来ちゃってスゲー! ので、こっちに。
「核融合 小さな太陽を造る壮大な実験「ITER」は人類のエネルギー危機を救えるか?」
https://natgeo.nikkeibp.co.jp/atcl/news/25/102100578/
「核融合発電の技術開発で日本がリード、最終実証装置の建設に着手」
https://monoist.itmedia.co.jp/mn/articles/2510/29/news037.html
核融合なんて、太陽を手に入れるようなもので、人類には無理、と言われてたと思う。
まさかその太陽が手の届くところまできてた。びっくりするしかない。
イカロスになりませんように、だなあ。
核融合が実現すると、核廃棄物、地球温暖化CO2問題なんかが解決する、らしい…生きてるうちに知りたい世界だよなあ。
「HTV-X1号機、軌道制御マヌーバを完了し、油井宇宙飛行士によって把持(キャプチャ)されました」
https://humans-in-space.jaxa.jp/htv/mission/htv-x1/news/detail/005078.html
宇宙ステーションが地球の周回軌道にいて、そこに滞在する宇宙飛行士がいるだけで、それいつのSF?という世界で改めて胸熱なのに、地上から打ち上げた貨物宇宙船で荷物を届ける世界だ。
計算通りということだろうけど、いったいどれだけの距離がある? どんなスピードで地球上を周回してる? それをピンポイントでドッキングとか。
JAXAやNASAの動画を見るといま自分はどんな世界にいるのかくらくらしてくる。
いやまじで未来。
先日上げたエントリの続きも少し。
「ブログのアクセス制限」
たぶんA.I.のクローラー。その連続アクセスがちょっと行儀が悪くてアクセス制限をかけた。
かなり雑にやっちゃったもんで、クローラーじゃない「ひと」も巻き込んでしまった。
ということで少しずつ様子を見ながら制限することに。
↑クローラーと思しきアクセスはこのページに案内するようにした。
A.I.も未来なんだけど、なんか不幸な生い立ちになりそうだなぁ
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
テキトーフェッチメール

プロバイダのメールを取得表示するperlスクリプトをでっちあげた。
今まではgoogleのGmailでプロバイダのメールを取得して、WEBやアプリのGmailでメールを確認してたんだけど、GmailがPOPのサポートを終了という話。
「Gmail、POPのサポートを2026年1月に終了へ」
となると、迷惑メール=SPAMメールが面倒くさくなる。
Gmailを使ってる一番のメリットは迷惑メールの振り分け。迷惑メールフォルダは中を確認することもなくそのまま全削除してた。
これが使えなくなる。
WEBサービスを公開してたり、ブログで仕事受注していたこともあって、プロバイダのメールアドレスはオープンにしてた…なもんで、お問い合わせやプロモーションなどのメール以外、残り95%ぐらいは迷惑メール。
GmailのPOPサポートが終了となってから慌てても、空白期間が生じるんで、今のうちに対応しておこうというところ。
やることは単純で。
・pop3でプロバイダのメールサーバーにログイン
・届いてるメールを取得してログアウト
・メールの中身を確認、解析
・迷惑メールは削除
・迷惑メール以外は表示
これだけ。
Net::POP3を使ってメールサーバーにログイン、取得。
MIME::Base64とMIME::QuotedPrintを使ってメールのエンコードされている部分(本文やSubject、From)をデコード。
メールのヘッダーを解析するためにMIME::Emailというモジュールがあるんだけど、レンサバのロリポップにはインストールされていないので、ここは自作実装。
問答無用のスパムリスト
sub list_spam{
my $self = shift;
my $args = shift;
my @list = (
'[spam]','bizocean','visa','JACCS','ETC',
'日本郵便','楽天会員','楽天カード','東京電力','セゾンカード','宝くじ公式','メルカリ','マネックス',
'大和証券','クロネコ','ソースネクスト',
'マイル','マイレージ','お客様サービスセンター','入金','分割・リボ','統計調査','即日',
'裏ワザ','サービス停止','セキュリティ警告','無料でもらえる','ガス料金'
);
map {$_= quotemeta($_)} @list;
return join('|', @list);
}
プロバイダのメールで登録していない銀行やサービスは明らかにスパムだし、それ以外の「裏ワザ」「即日」といった文言を使うようなもの、「サービス停止」だのプロバイダのメールアドレス宛に飛んできそうにないものを列挙羅列して、SubjectやFromに含まれていたら削除。
このほか、ワードの組合せや本文中に含まれるリンクなんかでも判定を入れたので迷惑メールはほぼほぼシャットアウトできたと思う。
また、これらの判定の前にホワイトリストを通すようにしてるんで、必要なメールを削除するようなことはないだろう。
gmailをありがたく便利に使わせてもらってるんだけど、いつかのSPFレコードうんぬんの時も、gmailの仕様変更(?)は、影響が大きいんだよなあ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
ActivityPubサーバーで投稿の編集

フェディバースのタイムラインに定期的に流れてくる「投稿を編集したい」「編集できるの?」
これは
「サーバーが対応していれば」投稿の編集更新はできます。
ということになる。
自分のいるサーバーが
「投稿の編集」に対応しているなら「編集」して書き直した投稿はホームタイムライン、ローカルタイムラインに反映される。
「投稿の編集」に対応していなければ「編集」するリンクがなかったり「破棄して下書きに戻す」になってたりする、はず。
さらには、投稿の編集に対応している自分のいるサーバーで「編集」しても、フォロワーさんのいるサーバーが対応しているとは限らない。
自分は編集して、ホームタイムラインを見たら誤字も直ってるのに、編集更新未対応のサーバーにいるフォロワーさんのタイムラインでは誤字のまま、ということが起こる。
で、どうしてサーバーごとで対応が違うのかということになるんだけど。
(また、なんか前置きが長くなりそうな…)
ActivityPubの仕様に「Update」というActivityがある。
https://argrath.github.io/activitypub/#update-activity-inbox
これを使ってリクエストを投げれば、文字通り、投稿だけじゃなくてプロフィールなども「アップデート」=「編集更新」することができる。
仕様上できるとはいえ、投稿(Note)の編集更新(Update)はちょっと考えなきゃいけないこともある。
1)1つの投稿には1つのIDが振られる。
2)IDが(No.123)の投稿「タヌキそばとキツネうどん?そりゃタヌキそばに決まってるよ!」がタイムラインに流れてきたのを読んで「おれもだ!」と賛同の「イイネ」
3)後日、ID(No.123)の投稿を見てみたら「タヌキそば?ぷぷぷ、キツネうどんに決まってんじゃん」
4)え?なんで?おれの「イイネ」はたぬきそばにつけたんだが?
投稿の編集更新は、同じIDなのに、中身が全然違ってしまう、ということが起こるかもしれない。
なもんで、Update、投稿の編集の実装には慎重になるということもあるんじゃないかな。
「編集する」ではなくて「破棄して下書きに戻す」(改めて新規投稿する)
という方法で、別IDを振ることで上記の問題は回避できる。
投稿を編集したい・書き直したい、という要求の一番は「誤字脱字の修正」ぐらいだろうし、そんな神経質にならんでも?
とはいえ、不特定多数の参加するコミュニティだし、リスク回避最優先、てことかなあ。
とか、是非の分かれるところがあったりなかったり。
わたしは、ひとつのIDの中身が変わるのは気持ち悪いんで、削除&新規投稿の方がいいかなあ(誤字なんかは後からいくらでも湧いてきてキリがないので放置)
編集更新と違って、削除はだいたいすべてのサーバーが対応してるし。
とはいえ、NoteのUpdate実装は手間もないので実装済(送信)
(受信については、ウチはそもそも投稿の保存数が上限20個なので、Updateが流れてきた時にはすでに元の投稿は流れた後、ということもあるんで未実装)
UpdateのActivityが以下
{
"@context": [
"https://www.w3.org/ns/activitystreams",
{
"Hashtag": "as:Hashtag",
"toot": "https://joinmastodon.org/ns#",
"Emoji": "toot:Emoji",
"sensitive": "as:sensitive",
},
"https://w3id.org/security/v1"
],
"type": "Update",
"id": "https://tokoroten.doncha.net/t2aki/d378b480-a8b3-11f0-a5cb-d391bfe3cb70",
"url": "https://tokoroten.doncha.net/t2aki/d378b480-a8b3-11f0-a5cb-d391bfe3cb70",
"published": "2025-10-14T04:11:14Z",
"actor": "https://tokoroten.doncha.net/t2aki",
"to": ["https://www.w3.org/ns/activitystreams#Public"],
"cc": ["https://tokoroten.doncha.net/t2aki/followers"],
"object": {
"type": "Note",
"id": "https://tokoroten.doncha.net/t2aki/items/05976-20251014",
"url": "https://tokoroten.doncha.net/t2aki/items/05976-20251014",
"published": "2025-10-14T04:04:32Z",
"to": ["https://www.w3.org/ns/activitystreams#Public"],
"cc": ["https://tokoroten.doncha.net/t2aki/followers"],
"attributedTo": "https://tokoroten.doncha.net/t2aki",
"content": "編集更新対応の確認\u003cbr /\u003e→ここは対応している",
"updated": "2025-10-14T04:11:14Z",
}
}
Updateのオブジェクトに、編集したNoteのJSONに「updated」を追加して、リクエストを投げると受け取ったサーバーがUpdateに対応してれば、編集更新を反映してくれる。
↑mstdn.socialで受け取って編集が反映してるところを確認。
ちなみに「updated」の追加が必要なのはMastodonで、Misskey系iceshrimpは「updated」は不要だった。
サーバーごとで微妙に違うことが多いので、やっぱり現物合わせになる…
これもホームページの 「おひとり様ActivityPubサーバーの自作実装」 に追加しておこう。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
元WINDOWS10のノパソにlinux mint

先日、Mac miniをlinux mintにしたのに続いて、今回は元WINDOWS10のノートパソコン、ASUSのvivobookにlinux mintを入れた。
Mac miniはすんなり特に問題もなかったんだけど、元WINDWOS10のノパソはハマりどころがあったのでメモ。
インストールに準備するものは前回と同じ
「10年以上前のMac miniをlinuxで復活」
前回と違うのはインストールに使ったlinuxのバージョンがlinux mint Xfce22.1から22.2にひとつ新しくなったところ。
インストール用に作ったUSBメモリを挿して、F2を押しながら電源をONして、Bios画面を開く(Bios画面を開くやり方はメーカーごとで違う、かな)
BOOTでUSBを選んでlinux mint起動。
Macの時は画面の案内どおりに進めていけばOKだったけど、進めていくと今回はメディアコーデックを利用するにはセキュアなんちゃらが必要で、と言うところで固まった。確かMac miniの時にこんなことは起こらなかった。
ふりだしに戻る
まだ何もしてないんで、気楽に電源を落してやりなおし。
USBメモリを挿して再び電源ONしたらエラーメッセージを吐いて起動しなくなった。
ふりだしに戻る
エラーメッセージをうろ覚えでとりあえず検索したら同じ現象を解決したひとのサイトが見つかった。
「Linux mintインストール時に起こったエラーを解決」
めちゃくちゃ感謝するしかない。
エラーメッセージ:
Failed to open \EFI\BOOT\mmx64.efi - Not Found
Failed to load image : Not Found
Failed to start MokManager : Not Found
Something has gone seriously wrong : import_mok_state() failed: Not Found
解決方法:
インストール用USBメモリの中に「/EFI/boot/」にある「grubx64.efi」を「mmx64.efi」にリネーム
エラーメッセージ:
error: shim_lock protocol not found.
error: you need to load the kernel first.
Press any key to continue...
解決方法:
BIOSメニューでSecure BootをDisableにする
以上でインストール時のエラーは解決して無事linux mintが立ち上がった。
その後の設定でもハマりどころがあったのでメモ。
【その1】起動時にUSBメモリをマウントする
今回インストールしたノパソ
「22980円のノートパソコンvivobook購入」
ストレージが32Gしかない。
WINDOWS10の大型アップデートに追随できず、8ヶ月ぐらいしか使えず、その後、CloudreadyというOSを入れて、さらにChromeOS Flexにして使ってきたもの。
ストレージが少ないので、外付けSDカードメモリやUSBメモリが必須。
linux mintでも当たり前に外付けのストレージを認識して使える。
んだけど、ちょっとクセがあった。
起動時にすでに挿さってるUSBやSDのメモリは
「認識するけどマウントしていない」
という状態。マウントしないとメモリの中のファイルにアクセスできない=使えない。
Thunarというファイラー(エクセスプローラー?)を開いて、認識されているメモリをクリックして開こうとして初めて、マウントされるようだ。
マウントするためだけにファイラーをいちいち開くのは面倒くさい。
「/media/username/」にマウントポイントのディレクトリを作成してコマンドラインでマウントできれば手っ取り早い。
sudo mount /dev/sda1 /media/username/usb
マウントはできてUSBの中を読むことはできる。でも、所有者もグループもrootで、書きこむにはroot権限が必要。
↑[10/08 16:38:31]追記
sudo mount -o defaults,uid=1000,gid=1000 /dev/sda1 /media/username/usb
手動でマウントする時にオプションを指定すればユーザー権限のファイルとしてマウントできるので問題はない。
検索しまくって
「/etc/fstab」にUSBメモリの情報を追加編集することでパソコン起動時にUSBメモリを認識&マウントできるようになった。
1)マウントポイントのディレクトリ
→「/media/username/usb」
2)認識されているデバイスを調べる
→ lsblk

(すでにマウント済みの表示だけど)認識されている外付けメモリは「/dev/sda」と「/dev/sdb」。
「/dev/sda」にある「/dev/sda1」というパーティションを自動マウントの対象にする。
3)メモリのUUIDなどを調べる
→ blkid /dev/sda1
/dev/sda1:
LABEL="USBDrive1" UUID="1880-4B4F"
BLOCK_SIZE="512" TYPE="exfat"
PARTUUID="21a0e8cc-01"
必要なのは「UUID」と「TYPE」
4)「/etc/fstab」に追加編集
→ sudo vim /etc/fstab
※「/etc」以下にあるファイルは間違うとシステム全体にかかわるので取り扱い要注意。バックアップを取ってから作業するのが吉
UUID=1880-4B4F /media/t2akii/USBDrive1 exfat defaults,nofail,uid=1000,gid=1000 0 2
「UUID」「マウントポイント」「ファイルタイプ」「オプション」「ダンプ」「パス」をfstabの末尾に設定する。
マウントポイントは(1)、UUIDとファイルタイプは(2)で調べたもの。
オプションは「defaults」(だいたいデフォルト)「nofail」(マウントに失敗しても無視して起動)
uid(ユーザーID)gid(グループID)は一般ユーザーは1000ということでOKっぽい。
ダンプやパスは呪文でOK。
5)fstabにエラーがないか確認
→ sudo findmnt --verify --verbose
エラーがあると最悪の場合、システムが起動しなくなるのでエラーのないことを必ず確認
sudo mount -a
さらにとりあえず手動でマウントしてみて問題がなれば、再起動。
以上で、起動時にマウントされて、USBメモリにフルアクセスできるようになっている、はず。
【その2】CapsキーとControlキーを入れかえる
HOMEディレクトリにふたつファイルを作ればOK
・「.Xmodmap」
clear lock
clear control
keycode 66 = Control_L
add control = Control_L Control_R
・「.xinitrc」
#!/bin/sh
usermodmap=$HOME/.Xmodmap
if [ -f $usermodmap ]; then
xmodmap "$usermodmap"
fi
「設定マネージャー」に「キーボード」というのがあって「レイアウト」変更もできるっぽいんだけど、試行錯誤してもうまくいかなかったんで、上記のファイルを作って解決しておいた。
その後の設定でハマったのは
ChromeOS Flexで使ってた時はマウントもキーの入れ替えもChromeOSでの設定で、ほぼ何も気にせず使えてたから。LinuxにしたMacはHDDもそこそこ大きいので外付けストレージは滅多に使わないし、キーボードはHHKBなのでそのまま使えたから。
自分で調べてゴソゴソやる必要もなかったんで、今回改めてハマってしまった。
仕事でMSやAdobeを要求されることも少なくなったし、パソコンまわりはlinuxで十分だなあ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
GBLシーズン「変わりゆく物語」でACE到達

今日、GOバトルリーグでACEに到達。
9/16に初期レート1812でレート戦に入って、レート1700台の沼に沈んだりしつつ、今日レート2024でACE。
今回はレート戦になって1700台に沈んでからパーティを固定してやってみた。
110戦66勝、勝率6割で2024まで上げられたので、パーティ構築はそれなりだったと思う。
どんなパーティを使ったところで苦手なポケモンはいるもんで、上手いひとなら劣勢を立ち回り(プレイング)でひっくり返したりできるんだけど、わたし程度だと無理。
わたしが取ることのできる対策はひとつだけ
「そのポケモンが出てきたら試合は諦める」
運が悪かった、マッチングに嫌われたということで、切りかえる。
そして、そのうち美味しいマッチングの波がくるに違いない、だ。
にしても、パーティを固定すると「覚えゲー」「作業ゲー」っぽくてマンネリ感。
…なもんで、5セット(フルセット)は飽きちゃって気力も続かない。一日3セットを目処にやるようにした。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」
ブログのアクセス制限

去年あたりから、たぶんAIがらみでのコンテンツ収集と思うんだけど、クローラーやBOT=人間以外のアクセスが増えている。
当ブログのエントリを秒刻みで地引き網してるんで、さすがにそれどうなの?ということで今月からアクセス制限することにした。
今日時点でブログのエントリ数は3000ちょっとで、さらに個別、年月日別、カテゴリ別等々、リンク数はエントリ数の何倍かは多い。同じエントリなのに、リンクが違うといちいちアクセスすることになる。
この程度のボリュームで負荷どうこうはないはずだけど、レンタルサーバーに間借りしてる立場だし、ちょっと意識したほうがいいよなあ、と。
てことで。
アクセスのremote addrからhostnameを引いて、ドメインが取得できないもの、ccTLD(国別のドメイン)で日本語話者ではなさそうな国のドメインなど、かなりがっつり制限をかけた。
それらのアクセスはすべてホームページ 「On Golden Pond」 へ、301リダイレクト。
ホームページの方は、各ページが全部ペラ一枚の静的ページだし、アクセスが集中したところで表示速度に影響が出るようなこともないだろうし。
AIにコンテンツを収集されることに対して、特に問題とは思ってなくて、むしろ、ウチのイイ加減なデタラメをどっさり食べて、元気に育っておくれ、なんだけど!
アクセス頻度というかアクセスのやりかたを考えていただけませんかねえ。
» ローカル環境で電子書籍を作る、Macアプリ・Windows版ツール 「かんたんEPUB3作成easy_epub」

