海辺にて

備忘録

No.26, No.25, No.24, No.23, No.22, No.206件]

黒松(左)と赤松(右)の盆栽栽培キットを買った。種はそれぞれ5つ封入されていた。
(キャプション自動取得対象外)
左が赤松、右が黒松の種。黒松の種の方がやや大きい
お金と手間を考えるとホームセンターで小さめの盆栽を1,000円くらいのものを買った方がいいのだろうけど、それなりの年数をかけて育ったものを初心者が失敗してすぐに枯らせてしまうのも申し訳ないのと種から育てるのが好きなので。

2024/6/20
どちらの松も発芽の適正温度は20度。室内の気温は、朝方は20度そこそこになる日もあるけれども日中は27,8度になる。あまり種まきに適した季節とは言えないので、どちらも1つずつ種をまくことにした。
(キャプション自動取得対象外)
水に沈んだら発芽しやすい、というので1日半くらい水につけた。

2024/6/21
(キャプション自動取得対象外)
どちらの種も水に沈んだので種まきをする。近場で種まきポットが売っていなかったのでダイソーで素焼き鉢×4セットを買い、家にあった鹿沼土と排水性が良さそうな謎の土を適当に混ぜたものを用土として使った。乾燥しないようにラップをかけ、室内の比較的涼しそうなところに置いて発芽を待つ。キットの説明書には発芽までは1か月ほどとのこと。

2024/6/29
(キャプション自動取得対象外)
赤松から発芽の兆しが見えた!

2024/7/1
朝の赤松
夜の赤松
芽が伸びてきて朝と夜で目に見えて""生命""を感じられるのが楽しい。種まきからこの間、松を種から育てるブログなどを読んでいたけどどれも新芽が緑色だったので、緑が全く見えず茶色い芽に「これはだめなのでは…?」と不安を覚える。

2024/7/2
朝の赤松
夕方の赤松
種が白っぽくなってるのはカビでは…と思い、室内で様子を見ていた鉢を外に出した。土の表面が乾かないようにラップをかけていたのだが、通気穴を空けないと湿気でカビてしまうこともあるらしい。朝、外に出したものを夕方に見たら、少し芽が緑っぽくなった…と思う(写真ではとても分かりにくい)。

2024/7/4
赤松は外に出したからか、それともそういう芽なのかは分からないけどすっかり緑色が濃くなってきた。
すっかり緑になった赤松
一方黒松も芽が出てきたので、こちらも室内から外に鉢を出した。
赤松から少し遅れて発芽

2024/7/6
(キャプション自動取得対象外)
赤松と黒松の違いは、黒松に比べると赤松の方が葉の色が濃くて細くしなやからしい。この鉢も成長が早いのは赤松だけど、茎は黒松の方が太くしっかりしている。個体差なのか種類差なのかは分からないけど、この段階でも違いが目に見えてあるんだな~と思った。

2024/7/8
(キャプション自動取得対象外)
赤松の種がとれて開く!

2024/7/9
左:赤松、右:黒松
元気そうな赤松、葉が見えてきた黒松。

2024/7/16
ついに黒松も種が取れる。
(キャプション自動取得対象外)
赤松は2番目の芽が見えてきた。
(キャプション自動取得対象外)

2024/7/22
赤松
黒松
種まきから1か月後の様子。

これから
・まずは今夏を無事に越すことを目標
・暑さが落ち着いたら油粕を置く
・黒松はもう少し大きめの鉢に植え替えたい
・赤松は文人にしたい
・秋になったらもう1つずつ種をまいて軸切り挿し芽をやってみる

参考にしてるYouTubeチャンネル
As Channel -アズチャンネル-盆栽と山とカメラ
4代目の盆栽枯らさない塾
盆栽Q

#園芸
マイクロブログとしてはすっかりFediverseをメインで使うようになったものの、フォロワーの大半はXにいるのでしばらくはXにも投稿はしている。AkkomaとXに同時投稿するやり方にたどり着くのに時間はかかったが、やってみると思いのほか手軽にできた。ただし対応状況は「PCからの投稿:〇、iOSからの投稿:△、Androidからの投稿:×」で、1番よく使っているAndroidからはいまだに良い方法が思いつかないのだが…。以下、やり方のメモ。

PCからAkkoma(Mastodon)とXに投稿する
Misskey用のスクリプトがあったので見てみたらMastodon APIにも適用できそうな感じだったのでやってみた。
TwitterとMisskey、同時投稿したくない?
やってることは簡単で、Twitter本来のツイートボタンにonclickリスナーをつけ、押されたらMisskeyに対してHTTPリクエストを送ってるだけです

ただし以下のような注意点もあるため、使用は完全自己責任。
https://github.com/ZOI-dayo/Twiskey
Misskeyのトークンを文字列として保存しているため、流出に気をつけてください。

手順通りにTempermonkeyを入れ、文章投稿が出来ればいいやと思って修正したのは以下のみ。

console.log(misskey_api_key)
GM_xmlhttpRequest({
method: "POST",
url: `https://${misskey_server}/api/notes/create`,
headers: {
"Content-Type": "application/json"
},
data: JSON.stringify({
"i": misskey_api_key,
"text": text,
"fileIds": media_ids.length > 0 ? media_ids : undefined,
}),
onload: function(response) {
console.log(response.responseText);
}
});


console.log(misskey_api_key)
GM_xmlhttpRequest({
method: "POST",
url: `https://${misskey_server}/api/v1/statuses`,
headers: {
"Authorization": `Bearer ${misskey_api_key}`,
"Content-Type": "application/json"
},
data: JSON.stringify({
"i": misskey_api_key,
"status": text,
"visibility": `private`, //公開範囲をフォロワー限定にしたいため追加。デフォルトだとグローバル公開になる
"fileIds": media_ids.length > 0 ? media_ids : undefined,
}),
onload: function(response) {
console.log(response.responseText);
}
});


${misskey_api_key}や${misskey_server}は変数なのでそのまま残していても支障はない。これでXの投稿画面にMisskeyボタン(画像ソースを修正していないため)が表示されるようになり、Xへの投稿と同時にMastodonにも投稿されるようになった。

iOSからMastodonとXに投稿する
iOS13(!)から搭載されたショートカット機能だが全然使っていなかった。名前で誤解していたがRPAに近い機能のよう。
ショートカット ユーザガイド

こちらもMisskey用にショートカットを作成・配布している方がいてありがたく使わせてもらった。投稿サーバーや公開範囲は決まっているので、直接入力してなるべく選択肢は消去していく。
作成したショートカットとか

基本的な修正個所は上記と一緒だが、認証が上手くいかない部分があったのでMastodonAPI用の修正はこちらの記事を参考にした。
Mastodon API を使って iOS ショートカットからトゥートできるようにしてみる
MastodonAPIの仕様は公式ドキュメントを確認。
statuses API methods

ショートカットを呼び出すと「テキスト入力→Mastodonに投稿→テキストが入力されたXアプリの投稿フォームに飛ぶ」という流れ。Twiskeyのように完全な同時投稿ではないが、使ってみるとアプリを立ち上げていないときでも投稿画面を呼び出せるのでかなり便利。

X騒動のおかげで変に技術への理解は上がった気はするが、早くThreadsがActivityPub対応になり公式アカウントも人(ファン)も移動してくれれば、と思うばかりである。
ActivityPubとBluesky(AT protocol)を繋ぐBridgy Fed が試験的に使えるようになったみたいなので現時点(2024/5/5)でのメモ。現在はベータ版であることに注意!
24/6/15時点の状況を追記

公式ドキュメント(英語): https://fed.brid.gy/docs も確認してね。
自分はActivityPubを使いたいけど公式系アカウントやXのフォロワーはBlueskyに流れそう…面倒だからActivityPubアカウントからフォローさせてくれないかな~~と思っているので、Bridgy Fedは以前から気になっていたプロジェクトだった。ブリッジされる投稿は完全に公開されているもののみで、Mastodonでいうところの未収載/フォロワー限定/ダイレクトといった公開範囲にしている投稿はBlueskyには流れない。逆にBlueskyは現段階では投稿範囲そのものがないので「ログアウトしたユーザーに自分のアカウントを非公開にする」設定にしていなければ、すべての投稿がActivityPubに流れる。

BlueskyからActivityPubアカウントをフォローする=ActivityPubアカウントの投稿をBlueskyに流す
やり方は以下の2ステップ。
1. ActivityPubアカウントから @bsky.brid.gy@bsky.brid.gy をフォローする
フォローするとBluesky側に[ユーザー名].[所属サーバーのドメイン].ap.brid.gyというブリッジアカウントが作成される。
のだが、一部ActivityPubサービスでは @bsky.brid.gy@bsky.brid.gy アカウントがフォローできない。自サーバー(Akkoma)もフォローできないので、この件はしばらくウォッチしようと思う。
Many fediverse servers can't discover @bsky.brid.gy@bsky.brid.gy #995

24/6/15追記 この件は修正され、Akkomaからも @bsky.brid.gy@bsky.brid.gy アカウントがフォローできた…ように見えたが、ずっとフォローが処理中になっている。Blueskyにブリッジアカウントが作成されたものの、@bsky.brid.gy@bsky.brid.gy アカウント のフォローが完了しないので投稿してもBlueskyには何も反映されない。Akkoma側でIssueが上がっていたが、原因解明までは至っていないようだ。
500 internal server error when federating Like activity from Bridgy Fed #438
あとアカウントを登録しているとあるMisskeyサーバーも @bsky.brid.gy@bsky.brid.gy アカウントのフォローが完了しない。こちらはAkkomaと違い、Blueskyにもブリッジアカウントが作成されていない。当然ながらそのサーバーの事情は分からないが、CloudflareでBot Fight Modeをオンにしている場合にフォローできないケースがあるようだ。たぶん。
Can't follow @bsky.brid.gy@bsky.brid.gy from my misskey instance #1093
===>追記終わり
2.Blueskyアカウントから1.で作成したブリッジアカウント([ユーザー名].[所属サーバーのドメイン].ap.brid.gy)をフォローする
現在はBlueskyの誰かからフォローされない限り配送が開始されないが、この仕様はそのうち変更されそう。
AP => Bluesky: don't wait for follow before sending posts #999
Blueskyから見るとすぐフォローができたように見えるが、ActivityPub側にフォロー通知が飛ぶまで配送は開始されないようだ。今はこのフォロー通知が届くまでが結構時間がかかる。自分が承認制アカウントでしか試していないだけで、フォローフリーのアカウントはすぐにフォローされるかもしれないが。

最初の配送=フォロー承認までは時間がかかるけど、以降はそこまで遅延がなくBlueskyに投稿が流れている。今のところは。Blueskyにはブリッジ前の投稿は配送されない。
以下、個人的に気になって試したこと。
・元サーバー(ActivityPub)で削除した投稿はBlueskyでも削除されるか
削除される。
・Blueskyアカウントからのアクション(リポスト、いいね、メンション)は受け取れるか
リポストやいいねの通知はActivityPubアカウントで受け取ることができるが、Bluesky→ActivityPubの配送は遅延しているためラグがある。BlueskyからのメンションはActivityPubではテキストとして扱われてしまい、通知は届かない。ただこれはブリッジ済みのBlueskyアカウントから試したので、ブリッジしてないBlueskyアカウントからのアクションがどうなるかは確認できていない。Blueskyにはアカウントをあんまり作っていないので…。
24/6/15追記 現在は遅延は解消されており、ほぼリアルタイムに通知が届く。通知が来るのはActivityPubにブリッジ済みのBlueskyアカウントからのみで、ブリッジしていない(@ap.brid.gyをフォローしていない)アカウントからのリアクションは通知されない。ブリッジ済みのBlueskyアカウントからのメンションは届くようになった。
===>追記終わり

・CWの投稿はBlueskyではどう表示されるか
警告文の一文は表示されるが、隠している部分は配送されない。
24/6/15追記 警告文も本文もどちらも配送される。つまりBlueskyでは丸見えになる。
===>追記終わり
・ハッシュタグやリンクアドレスはBlueskyではどう表示されるか
テキストとして扱われてしまうため機能しない。
24/6/15追記 これはハッシュタグとして完全の機能するようになった。と思う。
===>追記終わり

・画像は配送されるか
配送される。4枚以上の画像は表示されないようだ。
・ブリッジを止めるにはどうすればいいか
@bsky.brid.gy@bsky.brid.gy のフォローを外してもBlueskyへの配送が止まるわけではない。止めるには bsky.brid.gy をドメインブロックしなければならない。今のところはドメインブロックしてもBluesky上にはブリッジ用の [ユーザー名].[所属サーバーのドメイン].ap.brid.gy アカウントが残るのは気になる。Blueskyに配送された投稿もそのまま残る。
24/6/15追記 @bsky.brid.gy@bsky.brid.gy アカウントをブロックすることでブリッジは解除され、Blueskyにあるブリッジアカウントは消える。ただしブリッジアカウントをフォローしていたBlueskyアカウント側から見ると、フォローリストからは消えているがフォロー数は変わっていない。また、対応中ではあるが現在はブリッジ解除後に再度ブリッジをすることはできないようだ(未検証)。
How do I opt out and remove my site or account?
===>追記終わり
24/6/15追記
・300字を超える投稿はどう表示されるか
Mastodonブリッジでは「…」で本文が切られた後に、オリジナルポストへのリンクが貼られるようになった。Firefishブリッジではオリジナルポストへのリンクは貼られない。おそらくMisskeyも同じだと思う。あと長めの投稿だと文頭のほんの数文字以降は「…」で省略されてしまう。
・リンクは機能するか
Mastodonブリッジではきちんとリンクとして機能するのだが、Firefishブリッジではリンクアドレスの前後に「<」「>」が挿入されてしまい、機能しない(これもMisskeyは一緒ではないかと思う)。

CWは気になるが、Mastodonブリッジはおおむね問題なく動いているように思う。Misskey系ブリッジはまだ課題は多そう。
===>追記終わり

ActivityPubからBlueskyアカウントをフォローする=Blueskyアカウントの投稿をActivityPubに流す
こちらもやり方は大体一緒なのだが、いかんせん1時間2時間の遅延が発生するためなかなか動作確認ができていないでいる。
24/6/15追記仕様変更により、現在はほぼリアルタイムで投稿が配送されるようになった。===>追記終わり

1. Blueskyアカウントから@ap.brid.gy をフォローする
こちらもフォローすると同様にActivityPub側に@[ユーザー名]@bsky.brid.gyというブリッジアカウントが作成される。
ActivityPubアカウントから1. の @[ユーザー名]@bsky.brid.gy をフォローすればBlueskyアカウントの投稿が流れてくる。ActivityPubアカウントのブリッジとの違いは、Blueskyはブリッジする前の投稿も流れてくる。配送のたびに最新の投稿とあわせて過去の投稿が5件くらいずつ流れてくる。もしかして全部の投稿を配送するまで終わらないのか…?
24/6/15追記ActivityPubにブリッジしてから毎日ちびちびとBlueskyの過去の投稿が流れてきていたのだが、現在ではそれもなくなったのでおそらくブリッジ開始時のこの挙動も修正されたと思う。===>追記終わり
今は@ap.brid.gyアカウントをフォローしないとブリッジできないが、この仕様も今後変更がありそう。正直、このアカウントフォロー方式では公式系アカウントのブリッジは期待薄いかな…と思っていたので、自動でブリッジされるようになるとかなり嬉しい。

こちらも気になっていることを確認した。
・Blueskyで削除した投稿は配送先のActivityPubでも削除されるか
現段階では削除されない。対応が進められているようだ。
Bluesky: bridge deletes (blocked on switching from notifs to firehose) #987

24/6/15追記BlueSkyで削除した投稿はActivityPubのブリッジアカウントでもすぐに削除されるようになった。この点は「Blueskyにだけアカウントを持っているブリッジ済みの人」は確認しようがないので、削除が正常に動作するまではなかなかBlueskyユーザーにブリッジを勧めにくかったので実装されてよかった。===>追記終わり

・ActivityPubアカウントからのアクション(リポスト、いいね、絵文字リアクション、メンション)は受け取れるか
Blueskyにブリッジ済みのActivityPubアカウントからの各種アクションは通知が来る。絵文字リアクションは「いいね」に変換されて通知される。BlueskyにブリッジしていないActivityPubアカウントからのアクションはBlueskyには届かない。ActivityPubでBT/RN/RPされたBlueskyのブリッジ投稿はどのActivityPubアカウントでも見たり各種アクションをしたりはできるが、BlueskyにブリッジしていないアカウントがBlueskyのブリッジアカウント( @[ユーザー名]@bsky.brid.gy)をフォローしても投稿は配送されない。フォローして投稿を見たいならあなたもBlueskyにブリッジしてくださいね、という仕様。
・ActivityPubでブリッジ済みのBlueskyアカウントを探したい
「@bsky.brid.gy」でユーザー検索をすれば出てくる。またはBlueskyの@ap.brid.gyアカウントのフォロワー欄から探す。@ap.brid.gyアカウントをフォローしているアカウントは基本的にはブリッジされているはず。
・画像は配送されるか
私が試した限りActivityPubには本文のみ配送されて画像は表示されないが機能的には実装されているようだ(バグか何かで表示されていない?)。
ATProto -> ActivityPub images are not transmitted. #1000

24/6/15追記ALTあり/なしどちらの画像もActivityPubに配送されるようになった。===>追記終わり

・ハッシュタグやリンクアドレスはBlueskyではどう表示されるか
自分では試せていないが、Mastodonではすべてテキスト扱いになり機能しないが、Misskey系ではハッシュタグやリンクとして機能するようだ。
24/6/15追記MastodonでもMisskey系でもハッシュタグやリンクとして機能する。===>追記終わり

・ブリッジを止めるにはどうすればいいか
これも自分では試していないがドキュメントの記載を読む限り、こちらも@ap.brid.gyアカウントのフォローを外すだけでは止められず「ログアウトしたユーザーに自分のアカウントを非公開にする」設定にしないと投稿の配送を止められないようだ。ActivityPubへのブリッジは止めたいけど、ログアウトユーザーにはアカウントを表示させたい人には不便そう(そんなユーザーいるのか?)。
24/6/15追記動作未確認だが、ActivityPubと同様に@ap.brid.gyアカウントをブロックすることでブリッジを中止し、ActivityPubのブリッジアカウントも削除されるようだ。ただしブリッジを解除後に再度ブリッジをすることはできない。ActivityPubの仕様上、アカウントの再利用はできないので、一度削除したものをどう戻すのは大変そうな気がする。
How do I opt out and remove my site or account?
===>追記終わり

全体的にActivityPub→Blueskyは、BlueskyアカウントからのフォローがActivityPubに届けば、遅延なく基本的な動作はするようなのである程度の完成度にはある印象。反対にBluesky→ActivityPubはまだまだ発展途上で実用まではいかないなあという印象。
24/6/15追記MastodonやらMisskeyやらAkkomaやら対応するソフトウェアが多いActivityPubに比べて、配送する分には機能が少ないBlueskyの方が今のところ上手く動いていると思う。===>追記終わり
Blueskyは今後鍵アカ機能の実装予定はあるらしいが、現段階ではかなりオープン志向なプラットフォームであることを念頭に置いて使わないといけないなあと思う。

#BridgyFed
20240309183411-mizuiro.jpg
M-1スペシャルツアーin青森 1回目に行ってきた。最大収容人数2000人くらいの会場だけれども2階席には余裕があり、私は前の方の席だったので分からなかったけど階下の席も結構空いていたのかも。

トップバッターは意外にもシシガシラ。シシガシラを見る場合のS席は2階席。なんたって脇田が""よく見える""からね!浜中のいじわるの嫌らしさってちょうどいい。ちょっとニヤニヤするいじわるが似合う。

高校時代、野球部の秋季東北大会で聖愛相手に延長戦でスリーバント失敗で戦犯になったとき以来に青森にきたエバース佐々木。佐々木の「スリーバントのサインを出したときの監督の顔…」という話に「スリーバントのサインなんかねぇだろ」という町田のツッコミが冴えていた。佐々木の屁理屈にいつも町田は劣勢で面白い。

ドーナツ・ピーナツはうんこもらしとボブ・サップのコンビ。

エバースの正統派しゃべくり漫才、ドーナツ・ピーナツの漫才コントときれいな漫才を見たあとにフースーヤは全てを破壊する。敗者復活を見て「生でフースーヤを見たら楽しすぎるかも!」と思ったのだけど、生のフースーヤはやっぱり楽しすぎた。お笑いドラッグ。センターマイク前の最前列2席くらいが空いていていたけど、きっとでっかいうんこをしている!ということになった。

タイムオーバー音の使い方がいつかのインポッシブルくらい合いすぎていた去年の敗者復活のニッポンの社長。知らなかったのだがM-1ツアーの舞台スタッフはM-1本戦のスタッフ陣らしい。「同じスタッフだから、あの音(爆発音)出せるんちゃうか?」と敗者復活のネタの最後のくだりをやったら音どころか照明も切り替える有能スタッフ。ケツに変わって辻もやってみたり、タイミング変えてやってみたりなどニッポンの社長のコントにありそうだと思った。客席からの参加もあったがステージに昇れる階段が見当たらず、辻とケツが参加女性に壇上から手を差し伸べる。選ばれたのは辻でした。

オズワルドに会場から今日一番の拍手。腎臓がんの手術を終え、退院したばかりの畠中に客席から「おかえりー!」という野太く温かい声。初期とはいえ腎臓を1つ摘出したらしい。畠中「皆さんも1つ取りましょう!」じゃないんだよ。摘出した腎臓の写真をスマホの画面に写して見せてくれた。前の方の席だったので見えました。赤かったです。「腎臓を見たい人!」で手を上げたのが小学生の男の子でお母さんの承認を得て壇上に上がり、畠中の腎臓の写真を見た。初めて見る腎臓の感想は「グロい」。

ロングコートダディのネタの中で堂前が兎にビンタする場面があったが、突然のことに兎が痛みに耐えられない時間があった。

ダンビラムーチョ・フニャオが再び一人にされ、くらげ渡辺のアロハシャツがスベっていた。名曲は20字を台本でなく、その場で考えていることを示すために客席からリクエストを募る大原。レミオロメンの「3月9日」をリクエストする観客のセンスが良い。2曲連続でサビ20字に成功するも最後の「天城越え」で失敗したのが面白として完璧だった。そのあとのネタで今日一番笑った。

たまたま数日前にくらげゲスト回のニューヨークジャックを見ていたため、既婚子持ちの杉が「分かんねぇから」のネタを守るために結婚を隠していたことを知ってから見るネタは別の面白さがあった。

大トリはカベポスター!昨年のR-1ファイナリストでもある永見。この時期のM-1ツアーでは毎回R-1の宣伝をしており、まさに決勝当日の今日も宣伝するつもりだったのに青森にはフジ系列のテレビ局がないためR-1の放送がないことに気付いてしまう。永見がR-1でやったネタちょっとやります!と言ったら、さっとイスが準備されBGMが流れる。M-1ツアースタッフはR-1の永見のピンネタにも対応できる。TVerで見てくださいね〜!と宣伝してたのでR-1は永見にもR-1(飲料)を送ってあげてください。
カベポスターのネタが終わったらアナウンスもなく緞帳が降りてきてちょっとびっくりした。隙間から浜田が手を振ってくれていい人だな〜と思った。私は単純なので。 

出演芸人が全組吉本のためM-1というよりは吉本スペシャルライブという感じもしなくはないけど(そこだけ若干残念)、全組面白くていろんな面白さがあって良かったな〜〜〜!

#お笑い
2/25にサーバーをイメージから書き換えた後に、ものすごくサーバー負荷が上がりTLが読み込めない・アクセスできないなどのエラーが発生していた。
その原因と修正方法についてメモ。

[症状]
https://minazukey.uk/notes/9q74lznca9m24...
>②①と直接の関連があるか不明だがその上でフォロー関係の有無に関わらず更に一部pleroma/akkoma系サーバーから大量のリクエストが飛んできてお互いの鯖の負荷が地獄になる
症状は夜坂さんのこの投稿にまとまっている。皆尽村が一時HTTP通信状態になったときの投稿が自サーバーにいくつか配送されており、そのときにデータベースに新しくリモートユーザーが作成された。こちらのデーターベース上は1つのアカウントに対して
①ID.アカウント名@ドメイン(HTTP通信以前に作成されていたユーザー) ②アカウント名@ドメイン(HTTP通信時に作成されたユーザー)」のデータが存在する状態になった。①のデータは2/18までの投稿が確認できたが、②のデータはHTTP通信時と思われる2/12分しかなかったことから「①ID.アカウント名@ドメイン」が正しいアカウントだと思う。

[原因]
症状発生時のPostgresqlのエラーは以下。
ERROR:  duplicate key value violates unique constraint "users_nickname_index"
DETAIL:  Key (nickname)=(***@domain.com) already exists.
ERROR:  current transaction is aborted, commands ignored until end of transaction block

ChatGPT先生に聞いたところ、ユーザーのニックネーム(***@domain.com)が重複しているためトランザクション内でエラーが発生し、ロールバックを行ったとのこと。このエラーが1秒間にエグイ数発生しており、相手先(皆尽村)にDDoS攻撃をしているようなものである…本当に申し訳ない。この重複したニックネームのアカウントがデータベース上に2つのユーザーデータがあったアカウントだったので、原因が「分裂したアカウントと自サーバーが何らかの通信を行うとき」ということが分かった。一時的な処置としてこのエラーを止めるにはAkkomaを止めて接続を遮断するしかなさそう。

重複ユーザーはAdmin-FEから目視で探した(もっといい方法があるかもしれないが…)。「①ID.アカウント名@ドメイン」というNameがあれば重複ユーザーだ。私のサーバーでは3人いた。
20240228132130-mizuiro.png
内部のデータベースを見たら以下のような構造になっていた。
20240228135723-mizuiro.png
①ID.アカウント名@ドメイン:名前の更新(updated_at)はされないがステータスの更新(last_status_at)はされる
②アカウント名@ドメイン:名前の更新(updated_at)はされるがステータスの更新(last_status_at)はされない
1つの投稿を取得するたびに2つのユーザーデータが更新されるのがエラーの原因のようだ。②のユーザーデータを消去しただけでは①のnicknameが書き換えられるものか分からないので、以下の手順で直接データを修正することを試みた。
(1)②のユーザーデータを消す
(2) ①のnicknameを元の「アカウント名@ドメイン」に書き換える

[修正]
3/2 追記
ユーザー削除だけだと不十分とのご指摘をいただきました。②アカウント名@ドメインに紐づいていたap_id(http://〜)のデータがactivitiesなどに残ってしまうため、そのあたりまで手を入れないと危なそうなようです。
https://pl.kpherox.dev/notice/AfR8ZLix9U...
https://pl.kpherox.dev/notice/AfR8gA1J48...

試してないのですが、こちらで書かれているnickname入れ替えの方がリスクが少なく、かつ手間もかからなくて良さそうです。
https://pl.kpherox.dev/notice/AfRA8InO8E...

!!データベースを操作するので必ずバックアップを取ってから行ってください!!
(1)Akkomaを止める
sudo service akkoma stop
(2)Postgresqlにログインし、正規ユーザーの内部IDを調べる
sudo -Hu postgres psql -d データベース名
select * from users where nickname='ID.アカウント名@ドメイン';
usersテーブル内のID.アカウント名@ドメインに紐づくデータを取得
idは「001,002...」のようなものではなくもっと複雑で長いです
※アカウント名@ドメインのidを調べるにはもっと良さげな条件式とかありそう
(3)userテーブルから重複ユーザー(アカウント名@ドメイン)を削除する
delete from users where nickname='アカウント名@ドメイン';
(4)正規ユーザーのnicknameを書き換える
update users set nickname='アカウント名@ドメイン' where id='(2)で取得したID';
usersテーブルのidが「(2)で取得したID」のデータのnicknameを「アカウント名@ドメイン」に更新します の意。(2)~(4)を重複したユーザー分行う。
(5)一応Postgresqlを再起動する
sudo systemctl restart postgresql.service
(6)Akkomaを起動する
sudo systemctl start akkoma.service
Admin-FEで該当ユーザーの②アカウント名@ドメインのデータが消えている、①ID.アカウント名@ドメインのNameがアカウント名@ドメインに変わっていればOK。この後、該当ユーザーの投稿の照会や投稿の配送がきちんとされ、自サーバーも皆尽村にもエラーが発生していないことを確認した。
このエラーに対していろいろとご対応していただいた夜坂さん、本当にありがとうございました!

ログを調べたら2/25のイメージ書き換え以前にもデータベースエラーによる大量アクセスが発生していたのだが、自サーバーでの動作には全く影響が出ていなかったので気づいていなかった。今回、いろいろなログの見方や調べ方が分かったのでこれからはこまめにチェックしようと思いました(初心者感)

参考:
データを更新する(UPDATE)
データを削除する(DELETE)
#akkoma
Bluesky、Mastodon、Nostrに同時投稿するiOSアプリ「nootti」を使ってみた。
https://nootti.com

アカウント追加
  • Blueskyアカウントの前にMastodon アカウントを追加するとBlueskyの認証が通らない。Bluesky→Mastodonの順番で追加すること(Nostrも多分同じ)
  • Blueskyのアカウント名は「bsky.social」まで入れること(Mastodonはサーバーのドメインは不要)
  • AkkomaはMastodonとして認証が通ったがfirefishはエラーになってアカウントを追加できなかった →MastodonAPIに完全対応しているIceShrimpならもしかして通るかも?(未検証。来月、アカウントを登録しているサーバーがIceShrimpに移行予定なので試してみる予定)
  • Mastodonはデフォルトの公開範囲を設定できる

投稿
  • Mastodonは投稿時に公開範囲を変更できる
  • Blueskyへはたまに空白で投稿される

希望
  • Androidアプリも欲しい(メインで使ってる端末のため)
  • Misskeyも登録できるようになってほしい(期待薄)→しばしばAPIやらなんやら変わるようなので大変そう…

自分のActivityPubアカウントの中でBlueskyに投げたい内容をつぶやいているのがFirefishアカウントだったので、その目的を果たせなかったのは残念。Firefish要因かnootti要因かは素人には分からないので、noottiがアップデートされたらまた試す。Mastodonの投稿範囲を指定できるのはありがたかったので、とりあえず全体公開できそうな投稿をFedibirdからnootti経由で投げている。

どうしてBlueskyとMastodonに同時投稿するのかというと「Blueskyの方が人が多く同好の人の目に投稿が止まる可能性が高いかもしれないが、自分が文章を書き残すSNSとしてはMastodon系の方がいい」という微妙な気持ちのため。単純に今のところBlueskyに欲しい機能が実装されていないというのもあるし、根本的にオープン思考の設計が自分には合わなかった。鍵アカにはできないし(実装予定はあるよ勢と技術的に難しいので無理勢がいて実際のところは分からん)、やろうと思えば他人のブロックリストすら見ることができる。全てをオープンにすることで健全なSNSを目指しているのだと思うし、そういう考えもあるのは理解する。Webで全世界に発信してるのだから責任を持ての精神も分かるのだが、末期Twitterでは話題になっていること(特に炎上案件)について呟くだけで手斧は飛んでくるし、インプレッションも跳ね上がりすぎて怖かった(今は鍵アカ以外削除している)。自分には少し窮屈で、静かにひっそり暮らしたい勢にはTwitterは広く開けすぎていた。Blueskyも私にとっては広く開けすぎている。

Mastodonの投稿毎に公開範囲を指定できるところやCW機能は「この投稿は表に出してもいいけど、この話題にはあまり表立って触れないようにしよう」というのに本当に助かる。自分の考えを文字に乗せてインターネットの海に流す上で心理的な安全性が保たれる。「書き残す」という意味ではTwilog的なnotestockがあるのも助かる。現在進行形で続いているスパム荒らしについても表立ってはあまり投稿をしていない。荒らしなんて反応があるほど喜ぶものだから粛々と処すのが1番いい。
振り返るとSNSを使うのはコミュニケーションツールではなく、マイクロブログとしての用途が強いと気付く。私の場合、SNSに求めるものは「誰かの投稿を見たい」よりも「自分の思ったことを書きたい」方が比重が大きいので「人が多くて投稿の多いBluesky」よりも「書き残すために欲しい機能があるMastodon」の方がメリットを大きく感じるのかなと思う。

自分の関心のある話題に関してはFedibirdのキーワード購読や注目のハッシュタグで拾うようにしているが、Blueskyが登録開放してからはBlueskyフィードの方が投稿が見つかるようになった。自分は現在進行形で放送大学の学生なので、勉強モチベーションを保つために同窓アカウントを探しているのだが、放送大学生がMastodon/MisskeyではなくBlueskyに集まるのは何となく納得するところはある。なんか、すごくそれっぽい。クロスポストしたかったFirefishアカウントは勉強記録用アカウントなのだけど、しばらくは青い空を眺めながらFediverseの片隅で勉強を頑張ろうと思う。

(FirefishアカウントのRSSからBlueskyに投稿するのが一番簡単そうだが(リアルタイムで投稿しなくてもいい内容だし)、私の技術力では結構な勉強が必要そう)