From 6dedddc545e2f1930bdc2256784eb1551bd4231d Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 1 Feb 2026 00:49:15 +0900 Subject: feat(nuldoc): rewrite nuldoc in Ruby --- .../archive-dynamic-site-with-wget/index.html | 92 +++++++++++----------- 1 file changed, 47 insertions(+), 45 deletions(-) (limited to 'services/nuldoc/public/blog/posts/2025-12-06/archive-dynamic-site-with-wget/index.html') diff --git a/services/nuldoc/public/blog/posts/2025-12-06/archive-dynamic-site-with-wget/index.html b/services/nuldoc/public/blog/posts/2025-12-06/archive-dynamic-site-with-wget/index.html index f3c04fc0..27bf970e 100644 --- a/services/nuldoc/public/blog/posts/2025-12-06/archive-dynamic-site-with-wget/index.html +++ b/services/nuldoc/public/blog/posts/2025-12-06/archive-dynamic-site-with-wget/index.html @@ -101,41 +101,42 @@ 今回使用したスクリプトはこちら: https://github.com/nsfisis/phperkaigi-2024-albatross-archive/blob/cc837f6d2109555e2392016e8f6820fb5fd46dd6/archive.sh

-
# 指定した URL からスタートしてリンクを辿りながら全ファイルをファイルに書き出す
-#
-# --mirror  リンクを再帰的に辿ってダウンロードする
-# --page-requisites  CSS や画像等も含めて HTML から参照されている全ファイルをダウンロードする
-# --convert-links  リンクを相対リンクへ変換する
-# --adjust-extension  URL に拡張子が無くてもいい感じに推測する
-# --no-parent  親ディレクトリは見に行かない
-# --no-wait=1  リクエスト間で 1 秒待機する
-# -P ./archive/  指定したディレクトリに保存する
-wget \
-    --mirror \
-    --page-requisites \
-    --convert-links \
-    --adjust-extension \
-    --no-parent \
-    --wait=1 \
-    -P ./archive/ \
-    https://t.nil.ninja/phperkaigi/2024/golf/
-
-# ディレクトリ構造を調整する
-mv ./archive/t.nil.ninja/phperkaigi/2024/golf/* ./archive
-rmdir ./archive/t.nil.ninja/phperkaigi/2024/golf/
-rmdir ./archive/t.nil.ninja/phperkaigi/2024/
-rmdir ./archive/t.nil.ninja/phperkaigi/
-rmdir ./archive/t.nil.ninja/
-
-mkdir -p ./archive/api/quizzes/{1,2,3}
-
-# 動的な API エンドポイントを叩いて結果を JSON ファイルとして保存する
-wget -O ./archive/api/quizzes/1/chart.json https://t.nil.ninja/phperkaigi/2024/golf/api/quizzes/1/chart
-wget -O ./archive/api/quizzes/2/chart.json https://t.nil.ninja/phperkaigi/2024/golf/api/quizzes/2/chart
-wget -O ./archive/api/quizzes/3/chart.json https://t.nil.ninja/phperkaigi/2024/golf/api/quizzes/3/chart
-
-# 上記 API を叩いている箇所を、落としてきた静的ファイルを参照するように変更する
-sed -i -e 's#/chart`#/chart.json`#' ./archive/assets/chart.js
+
# 指定した URL からスタートしてリンクを辿りながら全ファイルをファイルに書き出す
+#
+# --mirror  リンクを再帰的に辿ってダウンロードする
+# --page-requisites  CSS や画像等も含めて HTML から参照されている全ファイルをダウンロードする
+# --convert-links  リンクを相対リンクへ変換する
+# --adjust-extension  URL に拡張子が無くてもいい感じに推測する
+# --no-parent  親ディレクトリは見に行かない
+# --no-wait=1  リクエスト間で 1 秒待機する
+# -P ./archive/  指定したディレクトリに保存する
+wget \
+    --mirror \
+    --page-requisites \
+    --convert-links \
+    --adjust-extension \
+    --no-parent \
+    --wait=1 \
+    -P ./archive/ \
+    https://t.nil.ninja/phperkaigi/2024/golf/
+
+# ディレクトリ構造を調整する
+mv ./archive/t.nil.ninja/phperkaigi/2024/golf/* ./archive
+rmdir ./archive/t.nil.ninja/phperkaigi/2024/golf/
+rmdir ./archive/t.nil.ninja/phperkaigi/2024/
+rmdir ./archive/t.nil.ninja/phperkaigi/
+rmdir ./archive/t.nil.ninja/
+
+mkdir -p ./archive/api/quizzes/{1,2,3}
+
+# 動的な API エンドポイントを叩いて結果を JSON ファイルとして保存する
+wget -O ./archive/api/quizzes/1/chart.json https://t.nil.ninja/phperkaigi/2024/golf/api/quizzes/1/chart
+wget -O ./archive/api/quizzes/2/chart.json https://t.nil.ninja/phperkaigi/2024/golf/api/quizzes/2/chart
+wget -O ./archive/api/quizzes/3/chart.json https://t.nil.ninja/phperkaigi/2024/golf/api/quizzes/3/chart
+
+# 上記 API を叩いている箇所を、落としてきた静的ファイルを参照するように変更する
+sed -i -e 's#/chart`#/chart.json`#' ./archive/assets/chart.js
+

このように wget に適切なオプションを渡すことで、指定したページから遷移可能なページを再帰的に辿っていき、サイト内の全ページをファイルへ落とすことができる。今回のサイトにはページ遷移では辿り着けないページがあったが (管理画面など)、運用が停止している今そういったページはアーカイブしなくてもよい。 @@ -144,16 +145,17 @@ あとはこのファイルを適当にサーブしてやればよい。

-
server {
-    listen 80 default;
-    listen [::]:80;
-
-    charset UTF-8;
-
-    location /phperkaigi/2024/golf/ {
-        alias /archive/;
-    }
-}
+
server {
+    listen 80 default;
+    listen [::]:80;
+
+    charset UTF-8;
+
+    location /phperkaigi/2024/golf/ {
+        alias /archive/;
+    }
+}
+
-- cgit v1.3-1-g0d28