おひとり様ActivityPubサーバーの自作実装

2024/10/27 [11:03:08] (日) 天気

ホームページに「おひとり様ActivityPubサーバーの自作実装」ページを追加した。元ネタはこのブログに書いてきたエントリ。


ブログは便利なんだけど、ひとつのテーマのエントリを追いかけるのが面倒くさい。タグづけしたところで、わかりやすい体裁にはならない。なもんで、個人ホームページの静的ページで再構成してみようとちょっとずつ。


おひとり様ActivityPubサーバーの自作実装

https://www.doncha.net/activitypub.html


ていうか、2023年8月頃にActivityPubサーバーを実装…たかだか去年のことなのに、もはやいろいろ忘れていて、自分にビックリ、だ。機能追加のたびに、自分で自分のブログのエントリを辿って確認するのが怠い。

それと、この自作ブログは日常雑記を対象に作ったもので、スクリプトやHTMLなんかのコードの記述・掲載は後からつけたし。めちゃくちゃ見にくい。


ホームページでペラ1枚の静的ページにしてしまえば、問題はすべて解決。

エディタで直接html、cssを書くだけなので、タグやコードなんかもやりたい放題。


webfingerなどFediverseからアカウントとして認識されるのに必要なファイル

https://www.doncha.net/activitypub/activitypub001.html

公開鍵・秘密鍵を使って署名の生成と認証

https://www.doncha.net/activitypub/activitypub002.html

↑xmlなんかの不等号記号だけは変換する必要があるけど、それ以外は全部OKなのが気楽。


そもそもブログは動的なので、入力されたものはリスク回避もろもろのために入力内容を確認してよろしくない記述、文字は別のものに置き換えたり削除したりしている。

ので、書き込む時にどうしても不自然で不便になってしまいがち。


静的ページの自由度には敵わない。



image

松戸市立博物館の特別展で変な土器をたくさん見てきた!

展示の数も内容もはんぱなく充実していて驚いた。ハコモノ行政の正しい使い方だなあ。

On Golden Pond

2024/10/20 [09:22:14] (日) 天気
image

昭和還暦の黄昏箱庭ホームページもそろそろ見せびらかしてもいいかな、というところまで仕上がったので、お知らせエントリ。


『On Golden Pond』

https://www.doncha.net


今日時点のメニューは

・ひまつぶし雑記帖(当ブログ)の更新情報

・ため池::ところてん(おひとり様ActivityPub)の更新情報

このふたつは各々のURL、ページへの外部リンク。


・掌編雑文の書き散らかしページ

・ダウンロードフリーの電子書籍ページ

・リンク集ページ

・運営者ページ

これらは内部ページ。随時更新予定。

ActivityPub自作実装ページやEPUB電子書籍制作ページなんかも作る予定。


javascriptなんかは使わない、htmlとcssだけのホームページ。

アクセスログの取得もしないし、シェアボタンやアフィリエイトボタンも設置しない。

すべて静的ページで、ほんとただの「ペラ1枚」のホームページ。

内部ページについてはエディタでHTMLとCSSを手作業で直接書いてFTPでアップロード。という80年代そのままの作業フローだ。


いやもう、アクセスして表示するまでの「超っ早さ」には改めてびっくりした。

うちのサイトはほとんどがperlで動的表示させていて、アクセスだのデータベースだのいろいろ動くのでアクセスして表示が完了するまで、少しくるくるすることが多い。


「on golden pond」はただの静的ページだけ。

80年代のホームページみたいなもんだ。当時と違って格段に早くなってる回線状況ということもあって、ほんと「超っ早」


ただ、ヘッダーやフッター、メニューなんかは各ページで共通なので、そのあたりまでいちいち手作業でHTMLを書いたところにコピペするのはタイプミスの元。

本文部分を作ったら静的ページ生成はperlにまかせることにした。

オレオレMovableTypeだ


ブログやおひとり様ActivityPubの更新情報は各々、ブログが吐くRSS、ActivityPubが吐くoutboxをcronで1日2度スクリプトを実行して自動収集。

自動収集したら静的ページを生成。


各ページは本文を手作業でHTMLとCSSを書いてFTPでアップロード。

アップロードしたら、既存のページとタイムスタンプを比較して新規ページの方が新しかったら静的ページを生成。

これも1日2度のcronで実行するスクリプトに仕込んだ。


手作業、エディタでhtmlを書くのは久しぶり。

何であれ、カタチにする作業は楽しいものだなあ。

ホームページを作った

2024/10/15 [22:17:47] (火) 天気

タイトルまんま。ホームページを作った!

ブログだのSNSだの、インターネットで承認欲求とか小銭稼ぎとか、面倒くさいというかしんどい。いや、五月蝿い。


デザインもオサレでゴージャス、それでなおかつ、きちんと情報が整理されたシンプルな構成で、動線設計なんかもユーザーフレンドリーで、とか、そういうのももういい。

アクセスがたくさんあって、いいねされたり言及されたり、そんなのももうどうでもいい。


ということになった(自分協議の結果)

で、アクセスログも取らない、シェアボタンも設置しない、情報も乱雑で、デザインなんかテキトー、たぶん誰にも見られないものを作って自己満足してしまおうと。


それって今どきのブログやSNS、「WEBサイト」じゃなくって、80年代の「ホームページ」

初めてbiglobeでホームページを作った時のことを思い出しながら、改めて「ホームページ」を作った。

当時はそれこそわけもわからず、何になるのかもわからず、とりあえず参考書を見ながらエディタでHTMLを書いてFTPでアップロード。ブラウザで自分の作ったものが表示されるだけで嬉しかった。いやマジでめっちゃ嬉しくて、ディスプレイを見ながらにやにやしてた。


今どきのインターネッツだとそれだけじゃダメで、拡散してたくさん見てもらってこそ、とか。ぶっちゃけ、それに踊らされて躍起になったこともあった。仕事でSEOなんてのを担当してたこともあったしなぁ。


ホームページのタイトルは「On Golden Pond」

これはヘンリー・フォンダ、ジェーン・フォンダ親子共演の映画『黄昏』の原題。

デイブ・グルーシンの音楽と、めちゃくちゃ綺麗な絵が印象的で大好きな映画。biglobeに作った初めての「ホームページ」のタイトルに使わせてもらった。

今回もそのタイトルにした。


回帰、というか。

還暦を過ぎて、もういい加減、かなり歳を食ったことを自覚実感したなあ、ということかもしれない。

image

サブルーチンの確認

2024/10/7 [09:36:50] (月) 天気

perlで自作したおひとり様ActivityPubサーバーはその後も増築改築をちまちま続けていて、例によってその場での思いつき、やっつけ仕事の現物合わせ仕様で、わけわかめ状態となっている。


Activityを約束事どおりに対応するモジュール(pmファイル)で、いったい何をしてるのか。

もうすでに忘れてる自分がいるので、サブルーチンの洗い出し用にテキトーなスクリプトをでっちあげた。という覚え書きが今回のエントリ。


#!/usr/bin/perl
use strict;
use utf8;
use Encode;
my $f = shift(@ARGV);
if(! -e $f ){
    printf qq{Not Found pm %s\n}, $f;
    exit;
}
open(IN, $f) || die;
my $name; my @buf=<IN>; close(IN);
foreach (@buf){
    if( m!^sub (.+) *\{! ){
        $name->{$1}++;
    }
}
printf qq{sum : %s\n}, scalar( keys %{$name} );
foreach my $sub (sort keys %{$name}){
    my $pm = join(’’, @buf);
    my $cnt = $pm =~ s!$sub!!g; 
    printf qq{%s :\n}, $sub;
    my @called; my $zzz;
    if( $cnt > 1 ){
        my $subname;
        foreach (@buf){
            if(m!^sub (.+) *\{!){
                $subname = $1;
                next;
            }
            if( m!\$self\-\>$sub! && !$zzz->{$subname}++ ){
                push(@called, $subname);
            }
        }
    }
    printf qq{\t%s\n}, join("\t", sort @called);
}

・サブルーチンの総数

・サブルーチンの名前

・サブルーチンを呼び出しているサブルーチン

ぐらい見えれば、そこそこ役に立つかなあ、と。


文字列検索でひっかけてるだけで、signなんかはサブルーチン呼び出しじゃない部分にもヒットする。本当は動かしながらcaller()でチェックするのが確実…だけど、ざっくり見るだけのためにあちこちにcaller()を仕込むのはうっとーしいんで却下。


使い捨てのつもりで書いたスクリプトだけど、思ったよりちゃんと見えるようにしてくれたので自画自賛&エントリとして書き起こし



10/4、ポケモンGOの対人戦GBLでACEに到達。

初期レートが1984で、ACE到達時のレートは2007。GBLで遊んでいて、ずっと継続してACEにたどり着いてたんだけど、前期初めてACEに到達できず、今期もやべえかなあ、と思ってたので、ほっとひと息。

image

まる6年続いているゲームで、まだ全然飽きないのがすげーす。

<<2024/10>>
  12345
6789101112
13141516171819
20212223242526
2728293031

【最近の10件】

日常読書映画アニメゲーム健康料理グルメカメラ写真ネタ仕事パソコンインターネットperlEPUB3電子書籍ActivityPub
検索: