ひまつぶし雑記帖

ActivityPubサーバーのバグ修正メモ

2025/3/29 [10:02:19] (土) 天気

ここんとこ時間もあるので、おひとり様サーバーの機能追加やバグ修正。
忘れないようにメモしておこう。

・仏語アクサンや独語ウムラウトまじりの投稿で文字化けを起こしてJSONのdecodeで失敗していた。

JSON.pmは文字コードというかutf8フラグの扱いにクセがあって。
decode_jsonに渡すJSONはutf8フラグがついていてはいけない/事前にutf8フラグを外す必要がある。

なので、事前にEncode::is_utf8でutf8フラグの有無を調べて、utf8フラグがついてたらEncode::encode('utf8',JSON)などと、utf8フラグを外して渡してた。

アクサンやウムラウトは見た目1文字
「â」「ë」
だけど、コードポイントは2バイト使う(日本語などは3バイト)ので、スクリプトではutf8フラグをつけて扱う(検索などにそのまま使えるから)
これをEncode::is_utf8でうまく検知できてなかったっぽい…「ぽい」というのは、まだしっかり特定できてないから。
evalでdecode_jsonを括って$@でエラーを捕捉してるところ、エラーが出たらもう一度同じ処理を入れることにした。原因追求をさぼって結果オーライ、というのは昔からの得意技(技?


・お相手サーバーの生存確認を追加した。

応答の確認に時間がかかるサーバーがあった。セッション切れを起こしてしまうのは致命的。

「LWPでtimeout指定が効かない」
https://t2aki.doncha.net/?id=1731205503
↑この対応で解決したはずなのに、このtimeoutの処理が効いていないサーバーがあった。
同じ500番代なのになんでだろ…。

てことで、投稿を配送する前にお相手サーバーが応答してるかどうかの確認することにした。
lwpでリクエストを投げてもたぶん同じことだろうし、Net::Pingを使うことにした。
今のところ意図通りに捕捉できてる。


・アナウンスした時にフォロワーさん以外に通知が飛ばない。

Activityの配送先は自分のフォロワーさん。なので「自分のフォロワーさんじゃないアカウント」の投稿をAnnounce(ブースト、リポスト、リノート)したら、そのアカウントにも配送する必要がある、ということをすっかり忘れてた。

AnnounceするActivityの投稿者をフォロワーリストで確認。
フォロワーリストに入ってなかったら、配送先に追加。


細々というか、2年近く使ってるというのに、いろいろ出てくるもんだ。

image
けっこうなスピードで疾走感があった。楽しそうでいいよねえ。

»電子書籍制作代行についてはこちら

【電子書籍発売中】

doncha.net制作・発行:KindleやiBooks、楽天kobo、BOOK☆WALKERで読む電子書籍

profile

profile

 
doncha.net
contact:
»運営者
@t2aki@tokoroten.doncha.net

ため池

[2025/04/27 19:55]
youtubeの無料配信を観てあらためて、映画の途中にCMが挟まるのはやっぱキツい。
アマプラは今のところ、ハリウッドのヒット作には入るけど、それ以外は映画が始まる前、冒頭にひとつかふたつCMが入るぐらい。それでもうっとー ...

[2025/04/27 16:10]
あ。でもYoutube配信でCMがしょっちゅう挟まるのがめちゃくちゃうっとーしかった。やっぱCMは悪だわ。

[2025/04/27 16:09]
【🎬期間限定無料公開🎬】インファナル・アフェア
https://www.youtube.com/watch?v=RO14Hg0nxeE

うひゃあああ。なんじゃこの傑作。
アマプラで2以降しかなくて、最初のタイトルはたぶん権利関係だかなんだかで配信がないのか、と思ってたら公式がYou ...

@t2aki@tokoroten.doncha.net

検索
<<2025/4>>
  12345
6789101112
13141516171819
20212223242526
27282930

リンク

WINDOWS版サウンドノベル
おかえりください PC WINDOWS版サウンドノベル
『おかえりください』体験版