2026-03-31 の日記
RSS つけた。ひょいとお願いするだけなんだから、楽なもんだなぁ…。
セキュリティ監査して、ってお願いして出てくるリスト、本当にわけがわからん。
RSS つけた。ひょいとお願いするだけなんだから、楽なもんだなぁ…。
セキュリティ監査して、ってお願いして出てくるリスト、本当にわけがわからん。
adlog というサービスを作った。 というか、作ってもらった。コンセプトだけ一生懸命教えて、あとはお任せ。
もともと pastebin 的なサービスを何度か作っていて(cgiで)、それの現代版。とにかくログの検索がやりたかった。大手のやつはちょっと高すぎて無理。
手元で claude code のログがたくさんたまってるけど、なかなか便利。「消えちゃうかも」という不安がないのが良い。
今日が3月末と勘違いして、保育園にご迷惑をかけてしまった。
claude code のログとかを雑多に集めるサービスを作った。検索がしたくて。しかし、偉い時間かかっちゃったな。
ligarb で翻訳文書をまとめられるようになった。 ソフトウェアの解説は、もうだいたいうまくいくようになったので凄いもんだなぁ。
koblog、うっかり cache じゃなくてそのまま返していたので(レンダリング結果をメモリに載せて返していた、まぁそれでいいといえばいいんだけど)、apache の rule を修正してもらった。というか、普通に間違えるのな。[L] -> [PT] の変更。だけど、聞いてもよくわからなかった。
25年前くらいに日記を作ったときは、
みたいな構成だった。あれはあれでなかなか良かったんだけど、まぁ管理はできていたかというと。
今回は、
という構成だけど、結局 Claude Code に全部書いてもらったので、どれくらい他のフレームワークと同じだったかは不明。kamal で deploy を体験したけど、なるほど良くできてるねぇ。
front に apache2 を置いていて(なんと 2000 年くらいから構成が変わっていない)、なるべく static な file はそこから配信できるようにしている。キャッシュを積極的にファイルにしてもらって、cache/ に落とす。site の設定はこんな感じ。
# HTTP → HTTPS redirect
<VirtualHost *:80>
ServerName blog.atdot.net
RewriteEngine On
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
<VirtualHost *:443>
ServerName blog.atdot.net
# SSL
...
# Global security headers (applies to ALL responses including static cache)
Header always set X-Frame-Options "DENY"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=(), payment=()"
# -------------------------
# 1. uploads は Apache が直接配信
# -------------------------
Alias /uploads/ /srv/koblog/uploads/
<Directory /srv/koblog/uploads>
AllowOverride None
Require all granted
Options FollowSymLinks
</Directory>
RewriteEngine On
# uploads はここで止める
RewriteRule ^/uploads/ - [L]
# -------------------------
# 2. 静的キャッシュ: 内部専用 URL にマップ
# /__cache__/foo → /srv/koblog/cache/foo
# -------------------------
Alias /__cache__/ /srv/koblog/cache/
<Directory /srv/koblog/cache>
AllowOverride None
Require all granted
AddDefaultCharset UTF-8
ForceType text/html
</Directory>
# 外部からの /__cache__/ 直接アクセスをブロック
RewriteCond %{THE_REQUEST} \s/__cache__/ [NC]
RewriteRule ^ - [F]
# -------------------------
# 3. GET のみキャッシュから返す
# -------------------------
# Auth-dependent UI is handled client-side via /me endpoint.
# No cookie check needed ? all users get cached pages.
# / → /srv/koblog/cache/index.html
RewriteCond %{REQUEST_METHOD} GET
RewriteCond /srv/koblog/cache%{REQUEST_URI}/index.html -f
RewriteRule ^(.*)$ /__cache__%{REQUEST_URI}/index.html [L]
# /entries/slug → /srv/koblog/cache/entries/slug.html
# /2026/03 → /srv/koblog/cache/2026/03.html
RewriteCond %{REQUEST_METHOD} GET
RewriteCond /srv/koblog/cache%{REQUEST_URI}.html -f
RewriteRule ^(.*)$ /__cache__%{REQUEST_URI}.html [L]
# -------------------------
# 4. キャッシュにないリクエストは kamal-proxy へ
# -------------------------
ProxyPreserveHost On
RewriteRule ^(.*)$ http://127.0.0.1:3080%{REQUEST_URI} [P,L]
ProxyPassReverse / http://127.0.0.1:3080/
# Pass SSL info to Rails
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Ssl "on"
</VirtualHost>
# Required modules:
# a2enmod rewrite proxy proxy_http headers ssl
昔は暗号だなぁ、と思って理解しようと思わなかった RewriteRule を、令和の今になって触るとは。AI は聞くと気軽に教えてくれるのがいいよね。ようやっと意味が分かった気がする。今後使う機会がありそうな気はしない。
意外と Claude Code 氏に頼んだ設定はうまくいかず、ChatGPT 氏に聞いてサンプル構成を書いてもらって、それを Claude Code 氏に清書してもらう、という感じだった。
トップページや記事などを static 配信に front で配信してもらうために、ちょっとレールから外れたことをしている感じがしている。
blog というものを書いたことがないけど、結局日記みたいな仕組みを作っているね。
いやしかし、以前の cgi の後、Rails でブログ作りたいなーと思って何度かやってみたけど、裏側はさすがにすぐできるが、見てくれを整理するところですぐに挫折していたので、本当に Claude Code 氏がありがたいね。
久々に日記を作った。 いや、作ってもらった。
どこにも公開していないのに、GPTBot がクローリングしていて怖い。
久しぶりだなぁ、この感じ。
💬 comment