summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-07-04 19:15:15 +0900
committernsfisis <nsfisis@gmail.com>2025-07-04 19:15:15 +0900
commit4b29e31a34357d4f4953fd0d277724852bf4418c (patch)
tree6d9c3e47fe988f211e8598cbedd2031c09ca54cb
parent98db243a59fb6a409b3677f2195e96da6fd39564 (diff)
parent80f0ab31aceec35c9fd04a6387b14349b806f713 (diff)
downloadnsfisis.dev-4b29e31a34357d4f4953fd0d277724852bf4418c.tar.gz
nsfisis.dev-4b29e31a34357d4f4953fd0d277724852bf4418c.tar.zst
nsfisis.dev-4b29e31a34357d4f4953fd0d277724852bf4418c.zip
Merge branch 'blog/toc'
-rw-r--r--services/blog/content/posts/2022-08-31/support-for-communty-is-employee-benefits.dj1
-rw-r--r--services/blog/content/posts/2025-03-27/zip-function-like-command-paste-command.dj1
-rw-r--r--services/blog/content/posts/2025-06-14/baba-is-you.dj8
-rw-r--r--services/blog/nuldoc-src/components/TableOfContents.tsx33
-rw-r--r--services/blog/nuldoc-src/djot/document.ts15
-rw-r--r--services/blog/nuldoc-src/djot/to_html.ts117
-rw-r--r--services/blog/nuldoc-src/pages/PostPage.tsx4
-rw-r--r--services/blog/public/404.html2
-rw-r--r--services/blog/public/about/index.html2
-rw-r--r--services/blog/public/index.html2
-rw-r--r--services/blog/public/posts/2/index.html2
-rw-r--r--services/blog/public/posts/2021-03-05/my-first-post/index.html33
-rw-r--r--services/blog/public/posts/2021-03-30/phperkaigi-2021/index.html61
-rw-r--r--services/blog/public/posts/2021-10-02/cpp-you-can-use-keywords-in-attributes/index.html2
-rw-r--r--services/blog/public/posts/2021-10-02/python-unbound-local-error/index.html2
-rw-r--r--services/blog/public/posts/2021-10-02/ruby-detect-running-implementation/index.html2
-rw-r--r--services/blog/public/posts/2021-10-02/ruby-then-keyword-and-case-in/index.html25
-rw-r--r--services/blog/public/posts/2021-10-02/rust-where-are-primitive-types-from/index.html16
-rw-r--r--services/blog/public/posts/2021-10-02/vim-difference-between-autocmd-bufwrite-and-bufwritepre/index.html24
-rw-r--r--services/blog/public/posts/2021-10-02/vim-swap-order-of-selected-lines/index.html33
-rw-r--r--services/blog/public/posts/2022-04-09/phperkaigi-2022-tokens/index.html83
-rw-r--r--services/blog/public/posts/2022-04-24/term-banner-write-tool-showing-banner-in-terminal/index.html22
-rw-r--r--services/blog/public/posts/2022-05-01/phperkaigi-2022/index.html30
-rw-r--r--services/blog/public/posts/2022-08-27/php-conference-okinawa-code-golf/index.html33
-rw-r--r--services/blog/public/posts/2022-08-31/support-for-communty-is-employee-benefits/index.html2
-rw-r--r--services/blog/public/posts/2022-09-29/write-fizzbuzz-in-php-2-letters-per-line/index.html45
-rw-r--r--services/blog/public/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1/index.html22
-rw-r--r--services/blog/public/posts/2022-10-28/setup-server-for-this-site/index.html88
-rw-r--r--services/blog/public/posts/2022-11-19/phperkaigi-2023-unused-token-quiz-2/index.html22
-rw-r--r--services/blog/public/posts/2023-01-10/phperkaigi-2023-unused-token-quiz-3/index.html33
-rw-r--r--services/blog/public/posts/2023-03-10/rewrite-this-blog-generator/index.html19
-rw-r--r--services/blog/public/posts/2023-04-01/implementation-of-minimal-png-image-encoder/index.html47
-rw-r--r--services/blog/public/posts/2023-04-04/phperkaigi-2023-report/index.html33
-rw-r--r--services/blog/public/posts/2023-06-25/phpconfuk-2023-report/index.html24
-rw-r--r--services/blog/public/posts/2023-10-02/compile-php-runtime-to-wasm/index.html36
-rw-r--r--services/blog/public/posts/2023-10-13/i-entered-the-open-university-of-japan/index.html2
-rw-r--r--services/blog/public/posts/2023-12-03/isucon-13/index.html36
-rw-r--r--services/blog/public/posts/2023-12-31/2023-reflections/index.html25
-rw-r--r--services/blog/public/posts/2024-01-10/neovim-insert-namespace-declaration-to-empty-php-file/index.html25
-rw-r--r--services/blog/public/posts/2024-02-03/install-wireguard-on-personal-server/index.html28
-rw-r--r--services/blog/public/posts/2024-02-10/yapcjapan-2024-report/index.html16
-rw-r--r--services/blog/public/posts/2024-02-22/phpkansai-2024-report/index.html16
-rw-r--r--services/blog/public/posts/2024-03-17/phperkaigi-2024-report/index.html27
-rw-r--r--services/blog/public/posts/2024-03-20/my-bucket-list/index.html2
-rw-r--r--services/blog/public/posts/2024-04-14/phpcon-odawara-2024-report/index.html22
-rw-r--r--services/blog/public/posts/2024-04-21/pipefail-option-in-gitlab-ci-cd/index.html30
-rw-r--r--services/blog/public/posts/2024-04-29/zsh-file-completion-for-composer-custom-commands/index.html25
-rw-r--r--services/blog/public/posts/2024-05-11/phpconkagawa-2024-report/index.html19
-rw-r--r--services/blog/public/posts/2024-06-19/scalamatsuri-2024-report/index.html19
-rw-r--r--services/blog/public/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html19
-rw-r--r--services/blog/public/posts/2024-08-19/go-template-access-outer-scope-pipeline-within-with-or-range/index.html22
-rw-r--r--services/blog/public/posts/2024-09-28/mncore-challenge-1/index.html16
-rw-r--r--services/blog/public/posts/2024-12-04/cohackpp-report/index.html27
-rw-r--r--services/blog/public/posts/2024-12-33/2024-reflections/index.html25
-rw-r--r--services/blog/public/posts/2025-01-08/phperkaigi-2023-tokens-q1/index.html42
-rw-r--r--services/blog/public/posts/2025-01-26/yaml-breaking-changes-between-v1-1-and-v1-2/index.html30
-rw-r--r--services/blog/public/posts/2025-02-24/phpcon-nagoya-2025-report/index.html19
-rw-r--r--services/blog/public/posts/2025-03-27/zip-function-like-command-paste-command/index.html2
-rw-r--r--services/blog/public/posts/2025-03-28/http-1-1-send-multiple-same-headers/index.html30
-rw-r--r--services/blog/public/posts/2025-04-20/trick-2025-most-ruby-on-ruby-award/index.html30
-rw-r--r--services/blog/public/posts/2025-04-24/composer-patches-v2-does-not-require-gnu-patch-even-on-macos/index.html16
-rw-r--r--services/blog/public/posts/2025-05-05/make-tiny-self-hosted-c-compiler/index.html38
-rw-r--r--services/blog/public/posts/2025-06-14/baba-is-you/index.html55
-rw-r--r--services/blog/public/posts/3/index.html2
-rw-r--r--services/blog/public/posts/4/index.html2
-rw-r--r--services/blog/public/posts/5/index.html2
-rw-r--r--services/blog/public/posts/6/index.html2
-rw-r--r--services/blog/public/posts/index.html2
-rw-r--r--services/blog/public/slides/2023-01-18/phpstudy-tokyo-148/index.html2
-rw-r--r--services/blog/public/slides/2023-02-15/phpstudy-tokyo-149/index.html2
-rw-r--r--services/blog/public/slides/2023-03-15/phpstudy-tokyo-150/index.html2
-rw-r--r--services/blog/public/slides/2023-03-24/phperkaigi-2023/index.html2
-rw-r--r--services/blog/public/slides/2023-03-25/phperkaigi-2023-tokens/index.html2
-rw-r--r--services/blog/public/slides/2023-04-12/phpstudy-tokyo-151/index.html2
-rw-r--r--services/blog/public/slides/2023-06-21/phpstudy-tokyo-153/index.html2
-rw-r--r--services/blog/public/slides/2023-06-23/phpconfuk-2023-eve/index.html2
-rw-r--r--services/blog/public/slides/2023-07-26/phpstudy-tokyo-154/index.html2
-rw-r--r--services/blog/public/slides/2023-08-24/phpstudy-tokyo-155/index.html2
-rw-r--r--services/blog/public/slides/2023-10-25/phpstudy-tokyo-157/index.html2
-rw-r--r--services/blog/public/slides/2024-01-24/phpstudy-tokyo-160/index.html2
-rw-r--r--services/blog/public/slides/2024-03-08/phperkaigi-2024/index.html2
-rw-r--r--services/blog/public/slides/2024-03-15/ya8-2024/index.html2
-rw-r--r--services/blog/public/slides/2024-04-13/phpcon-odawara-2024/index.html2
-rw-r--r--services/blog/public/slides/2024-04-25/phpstudy-tokyo-163/index.html2
-rw-r--r--services/blog/public/slides/2024-07-18/phpstudy-tokyo-166/index.html2
-rw-r--r--services/blog/public/slides/2024-10-30/phpstudy-tokyo-169/index.html2
-rw-r--r--services/blog/public/slides/2024-11-30/cohackpp/index.html2
-rw-r--r--services/blog/public/slides/2025-02-22/phpcon-nagoya-2025/index.html2
-rw-r--r--services/blog/public/slides/2025-03-23/phperkaigi-2025/index.html2
-rw-r--r--services/blog/public/slides/2025-04-12/phpcon-odawara-2025/index.html2
-rw-r--r--services/blog/public/slides/index.html2
-rw-r--r--services/blog/public/style.css50
-rw-r--r--services/blog/public/tags/c/index.html2
-rw-r--r--services/blog/public/tags/ci-cd/index.html2
-rw-r--r--services/blog/public/tags/cohackpp/index.html2
-rw-r--r--services/blog/public/tags/composer/index.html2
-rw-r--r--services/blog/public/tags/conference/index.html2
-rw-r--r--services/blog/public/tags/cpp/index.html2
-rw-r--r--services/blog/public/tags/cpp17/index.html2
-rw-r--r--services/blog/public/tags/game/index.html2
-rw-r--r--services/blog/public/tags/gitlab/index.html2
-rw-r--r--services/blog/public/tags/go/index.html2
-rw-r--r--services/blog/public/tags/http/index.html2
-rw-r--r--services/blog/public/tags/index.html2
-rw-r--r--services/blog/public/tags/isucon/index.html2
-rw-r--r--services/blog/public/tags/macos/index.html2
-rw-r--r--services/blog/public/tags/mncore-challenge/index.html2
-rw-r--r--services/blog/public/tags/neovim/index.html2
-rw-r--r--services/blog/public/tags/note-to-self/index.html2
-rw-r--r--services/blog/public/tags/ouj/index.html2
-rw-r--r--services/blog/public/tags/perl/index.html2
-rw-r--r--services/blog/public/tags/php/index.html2
-rw-r--r--services/blog/public/tags/phpcon-nagoya/index.html2
-rw-r--r--services/blog/public/tags/phpcon-odawara/index.html2
-rw-r--r--services/blog/public/tags/phpconfuk/index.html2
-rw-r--r--services/blog/public/tags/phpconkagawa/index.html2
-rw-r--r--services/blog/public/tags/phpconokinawa/index.html2
-rw-r--r--services/blog/public/tags/phperkaigi/index.html2
-rw-r--r--services/blog/public/tags/phpkansai/index.html2
-rw-r--r--services/blog/public/tags/phpstudy-tokyo/index.html2
-rw-r--r--services/blog/public/tags/piet/index.html2
-rw-r--r--services/blog/public/tags/python/index.html2
-rw-r--r--services/blog/public/tags/python3/index.html2
-rw-r--r--services/blog/public/tags/ruby/index.html2
-rw-r--r--services/blog/public/tags/ruby3/index.html2
-rw-r--r--services/blog/public/tags/rubykaigi/index.html2
-rw-r--r--services/blog/public/tags/rust/index.html2
-rw-r--r--services/blog/public/tags/scala/index.html2
-rw-r--r--services/blog/public/tags/scalamatsuri/index.html2
-rw-r--r--services/blog/public/tags/trick/index.html2
-rw-r--r--services/blog/public/tags/vim/index.html2
-rw-r--r--services/blog/public/tags/wasm/index.html2
-rw-r--r--services/blog/public/tags/wireguard/index.html2
-rw-r--r--services/blog/public/tags/ya8/index.html2
-rw-r--r--services/blog/public/tags/yaml/index.html2
-rw-r--r--services/blog/public/tags/yapc/index.html2
-rw-r--r--services/blog/public/tags/zsh/index.html2
-rw-r--r--services/blog/static/style.css50
138 files changed, 1689 insertions, 144 deletions
diff --git a/services/blog/content/posts/2022-08-31/support-for-communty-is-employee-benefits.dj b/services/blog/content/posts/2022-08-31/support-for-communty-is-employee-benefits.dj
index 1ba5891b..aae93d31 100644
--- a/services/blog/content/posts/2022-08-31/support-for-communty-is-employee-benefits.dj
+++ b/services/blog/content/posts/2022-08-31/support-for-communty-is-employee-benefits.dj
@@ -4,6 +4,7 @@ uuid = "cd16debe-8077-4edf-aec0-b1d45955a0e2"
title = "弊社の PHP Foundation への寄付に寄せて"
description = "先日、私の勤めるデジタルサーカス株式会社が、PHP Foundation へ寄付をおこないました。本件を社内でしつこく推進した1人として、推進の理由等を書き残しておきます。"
tags = []
+toc = false
[[article.revisions]]
date = "2022-08-31"
diff --git a/services/blog/content/posts/2025-03-27/zip-function-like-command-paste-command.dj b/services/blog/content/posts/2025-03-27/zip-function-like-command-paste-command.dj
index 8c9417fa..44977994 100644
--- a/services/blog/content/posts/2025-03-27/zip-function-like-command-paste-command.dj
+++ b/services/blog/content/posts/2025-03-27/zip-function-like-command-paste-command.dj
@@ -6,6 +6,7 @@ description = "zip 関数のような動きをする paste コマンドについ
tags = [
"note-to-self",
]
+toc = false
[[article.revisions]]
date = "2021-03-22"
diff --git a/services/blog/content/posts/2025-06-14/baba-is-you.dj b/services/blog/content/posts/2025-06-14/baba-is-you.dj
index ecb78467..0484b664 100644
--- a/services/blog/content/posts/2025-06-14/baba-is-you.dj
+++ b/services/blog/content/posts/2025-06-14/baba-is-you.dj
@@ -185,7 +185,7 @@ Steam の場合、全実績解除と読み替えてもよい。
ここからは印象的な面を語っていく。
-{#map}
+{#map toc="false"}
### MAP
{#submerged-ruins-and-sunken-temple}
@@ -316,7 +316,7 @@ MAP 自身。FRAGILE EXISTENCE でそれに気付いたなら当然 HOSTILE ENVI
??? でまたしても待ち構える `BABA` `IS` `YOU` と不穏な `LEVEL` のテキスト、そして GLITCH の `W` `E` `L` `C` `O` `M` `E`。
間違いなく最高のパズルゲームだと確信した。
-{#triple-question}
+{#triple-question toc="false"}
### ???
{#vip-area}
@@ -363,7 +363,7 @@ PRISON と DUNGEON で既出のテクニックが肝だが、ちと離れすぎ
初見のインパクト大にして難易度も相応に高い良作。
この頃はまだ `SHIFT` を「理解」していなかったので大変だったが、ここを越えたことでむしろこの後の難所が楽になったと言える。
-{#depths}
+{#depths toc="false"}
### DEPTHS
??? といういかにもクリア後のオマケっぽい名前のマップを攻略したらまだまだ深淵が待ち構えていた。
@@ -384,7 +384,7 @@ DEPTHS の序盤で道を塞いでいる必須面であるにもかかわらず
取れる行動が多いこと、もう少しで解けそうなルートが多いこと、そのどれもが一筋縄ではいかないこと、すべて揃った高難度面。
昔のバージョンでは ??? に置いてあったらしい。そんなバカな。
-{#meta}
+{#meta toc="false"}
### META
ここではもう覚悟していたので続きがあることには驚かなかったが、明らかに不穏な `CURSOR` に震えつつ先へ進むことになる。
diff --git a/services/blog/nuldoc-src/components/TableOfContents.tsx b/services/blog/nuldoc-src/components/TableOfContents.tsx
new file mode 100644
index 00000000..29907d08
--- /dev/null
+++ b/services/blog/nuldoc-src/components/TableOfContents.tsx
@@ -0,0 +1,33 @@
+import { TocEntry, TocRoot } from "../djot/document.ts";
+
+type Props = {
+ toc: TocRoot;
+};
+
+export default function TableOfContents({ toc }: Props) {
+ return (
+ <nav className="toc">
+ <h2>目次</h2>
+ <ul>
+ {toc.entries.map((entry, index) => (
+ <TocEntryComponent key={String(index)} entry={entry} />
+ ))}
+ </ul>
+ </nav>
+ );
+}
+
+function TocEntryComponent({ entry }: { entry: TocEntry }) {
+ return (
+ <li>
+ <a href={`#${entry.id}`}>{entry.text}</a>
+ {entry.children.length > 0 && (
+ <ul>
+ {entry.children.map((child, index) => (
+ <TocEntryComponent key={String(index)} entry={child} />
+ ))}
+ </ul>
+ )}
+ </li>
+ );
+}
diff --git a/services/blog/nuldoc-src/djot/document.ts b/services/blog/nuldoc-src/djot/document.ts
index be9c08d5..3e8cd92c 100644
--- a/services/blog/nuldoc-src/djot/document.ts
+++ b/services/blog/nuldoc-src/djot/document.ts
@@ -12,6 +12,7 @@ export const PostMetadataSchema = z.object({
title: z.string(),
description: z.string(),
tags: z.array(z.string()),
+ toc: z.boolean().optional(),
revisions: z.array(z.object({
date: z.string(),
remark: z.string(),
@@ -22,6 +23,17 @@ export const PostMetadataSchema = z.object({
export type PostMetadata = z.infer<typeof PostMetadataSchema>;
+export type TocEntry = {
+ id: string;
+ text: string;
+ level: number;
+ children: TocEntry[];
+};
+
+export type TocRoot = {
+ entries: TocEntry[];
+};
+
export type Document = {
root: Element;
sourceFilePath: string;
@@ -31,6 +43,8 @@ export type Document = {
description: string; // TODO: should it be markup text?
tags: string[];
revisions: Revision[];
+ toc?: TocRoot;
+ isTocEnabled: boolean;
};
export function createNewDocumentFromDjotDocument(
@@ -56,5 +70,6 @@ export function createNewDocumentFromDjotDocument(
remark: r.remark,
isInternal: !!r.isInternal,
})),
+ isTocEnabled: meta.article.toc !== false,
};
}
diff --git a/services/blog/nuldoc-src/djot/to_html.ts b/services/blog/nuldoc-src/djot/to_html.ts
index 5ea9b57d..5d461ad9 100644
--- a/services/blog/nuldoc-src/djot/to_html.ts
+++ b/services/blog/nuldoc-src/djot/to_html.ts
@@ -1,5 +1,5 @@
import { BundledLanguage, bundledLanguages, codeToHtml } from "shiki";
-import { Document } from "./document.ts";
+import { Document, TocEntry } from "./document.ts";
import { NuldocError } from "../errors.ts";
import {
addClass,
@@ -7,6 +7,7 @@ import {
forEachChild,
forEachChildRecursively,
forEachChildRecursivelyAsync,
+ innerText,
Node,
RawHTML,
Text,
@@ -25,6 +26,8 @@ export default async function toHtml(doc: Document): Promise<Document> {
removeUnnecessaryParagraphNode(doc);
await transformAndHighlightCodeBlockElement(doc);
mergeConsecutiveTextNodes(doc);
+ generateTableOfContents(doc);
+ removeTocAttributes(doc);
return doc;
}
@@ -447,3 +450,115 @@ async function transformAndHighlightCodeBlockElement(doc: Document) {
}
});
}
+
+function generateTableOfContents(doc: Document) {
+ if (!doc.isTocEnabled) {
+ return;
+ }
+ const tocEntries: TocEntry[] = [];
+ const stack: TocEntry[] = [];
+ const excludedLevels: number[] = []; // Track levels to exclude
+
+ const processNode = (node: Node) => {
+ if (node.kind !== "element") {
+ return;
+ }
+
+ const match = node.name.match(/^h(\d+)$/);
+ if (match) {
+ const level = parseInt(match[1]);
+
+ let parentSection: Element | null = null;
+ const findParentSection = (n: Node, target: Node): Element | null => {
+ if (n.kind !== "element") return null;
+
+ for (const child of n.children) {
+ if (child === target && n.name === "section") {
+ return n;
+ }
+ const result = findParentSection(child, target);
+ if (result) return result;
+ }
+ return null;
+ };
+
+ parentSection = findParentSection(doc.root, node);
+ if (!parentSection) return;
+
+ // Check if this section has toc=false attribute
+ const tocAttribute = parentSection.attributes.get("toc");
+ if (tocAttribute === "false") {
+ // Add this level to excluded levels and remove deeper levels
+ excludedLevels.length = 0;
+ excludedLevels.push(level);
+ return;
+ }
+
+ // Check if this header should be excluded based on parent exclusion
+ const shouldExclude = excludedLevels.some((excludedLevel) =>
+ level > excludedLevel
+ );
+ if (shouldExclude) {
+ return;
+ }
+
+ // Clean up excluded levels that are now at same or deeper level
+ while (
+ excludedLevels.length > 0 &&
+ excludedLevels[excludedLevels.length - 1] >= level
+ ) {
+ excludedLevels.pop();
+ }
+
+ const sectionId = parentSection.attributes.get("id");
+ if (!sectionId) return;
+
+ let headingText = "";
+ for (const child of node.children) {
+ if (child.kind === "element" && child.name === "a") {
+ headingText = innerText(child);
+ }
+ }
+
+ const entry: TocEntry = {
+ id: sectionId,
+ text: headingText,
+ level: level,
+ children: [],
+ };
+
+ while (stack.length > 0 && stack[stack.length - 1].level >= level) {
+ stack.pop();
+ }
+
+ if (stack.length === 0) {
+ tocEntries.push(entry);
+ } else {
+ stack[stack.length - 1].children.push(entry);
+ }
+
+ stack.push(entry);
+ }
+
+ forEachChild(node, processNode);
+ };
+
+ forEachChild(doc.root, processNode);
+
+ // Don't generate TOC if there's only one top-level section with no children
+ if (tocEntries.length === 1 && tocEntries[0].children.length === 0) {
+ return;
+ }
+
+ doc.toc = {
+ entries: tocEntries,
+ };
+}
+
+function removeTocAttributes(doc: Document) {
+ forEachChildRecursively(doc.root, (node) => {
+ if (node.kind === "element" && node.name === "section") {
+ node.attributes.delete("toc");
+ }
+ });
+}
diff --git a/services/blog/nuldoc-src/pages/PostPage.tsx b/services/blog/nuldoc-src/pages/PostPage.tsx
index 97a24048..e625518c 100644
--- a/services/blog/nuldoc-src/pages/PostPage.tsx
+++ b/services/blog/nuldoc-src/pages/PostPage.tsx
@@ -1,6 +1,7 @@
import GlobalFooter from "../components/GlobalFooter.tsx";
import GlobalHeader from "../components/GlobalHeader.tsx";
import PageLayout from "../components/PageLayout.tsx";
+import TableOfContents from "../components/TableOfContents.tsx";
import { Config, getTagLabel } from "../config.ts";
import { Element } from "../dom.ts";
import { Document } from "../djot/document.ts";
@@ -36,6 +37,9 @@ export default function PostPage(
</ul>
)}
</header>
+ {doc.toc && doc.toc.entries.length > 0 && (
+ <TableOfContents toc={doc.toc} />
+ )}
<div className="post-content">
<section id="changelog">
<h2>
diff --git a/services/blog/public/404.html b/services/blog/public/404.html
index 1f255ed8..a09adb82 100644
--- a/services/blog/public/404.html
+++ b/services/blog/public/404.html
@@ -14,7 +14,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>Page Not Found|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/about/index.html b/services/blog/public/about/index.html
index 23aaf73f..b27c6d33 100644
--- a/services/blog/public/about/index.html
+++ b/services/blog/public/about/index.html
@@ -14,7 +14,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>About|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/index.html b/services/blog/public/index.html
index 504afa4e..acaada64 100644
--- a/services/blog/public/index.html
+++ b/services/blog/public/index.html
@@ -15,7 +15,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/posts/2/index.html b/services/blog/public/posts/2/index.html
index 39a0a969..a84c6c74 100644
--- a/services/blog/public/posts/2/index.html
+++ b/services/blog/public/posts/2/index.html
@@ -15,7 +15,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/posts/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>投稿一覧 (2ページ目)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/posts/2021-03-05/my-first-post/index.html b/services/blog/public/posts/2021-03-05/my-first-post/index.html
index 6e9c758f..613df984 100644
--- a/services/blog/public/posts/2021-03-05/my-first-post/index.html
+++ b/services/blog/public/posts/2021-03-05/my-first-post/index.html
@@ -14,7 +14,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>My First Post|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -43,6 +43,37 @@
<header class="post-header">
<h1 class="post-title">My First Post</h1>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--test">Test</a>
+ </li>
+ <li>
+ <a href="#section--sec-1">Section level 1</a>
+ <ul>
+ <li>
+ <a href="#section--sec-1--sec-2">Section level 2</a>
+ <ul>
+ <li>
+ <a href="#section--sec-1--sec-2--sec-3">Section level 3</a>
+ <ul>
+ <li>
+ <a href="#section--sec-1--sec-2--sec-3--sec-4">Section level 4</a>
+ <ul>
+ <li>
+ <a href="#section--sec-1--sec-2--sec-3--sec-4--sec-5">Section level 5</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2021-03-30/phperkaigi-2021/index.html b/services/blog/public/posts/2021-03-30/phperkaigi-2021/index.html
index f36aa189..091840a1 100644
--- a/services/blog/public/posts/2021-03-30/phperkaigi-2021/index.html
+++ b/services/blog/public/posts/2021-03-30/phperkaigi-2021/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHPerKaigi 2021|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -55,6 +55,65 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--report">PHPerKaigi 2021 参加レポ</a>
+ <ul>
+ <li>
+ <a href="#section--report--day-0">Day 0 前夜祭 (2021/03/27)</a>
+ <ul>
+ <li>
+ <a href="#section--report--day-0--1730-a">17:30 [A] LAMPをこじらせてサーバーレスに乗り遅れたPHPerがLambdaに入門してみる</a>
+ </li>
+ <li>
+ <a href="#section--report--day-0--1810-a">18:10 [A] 大規模サイトにおけるSEO観点でのURL設計</a>
+ </li>
+ <li>
+ <a href="#section--report--day-0--1850-a">18:50 [A] PHPerでもわかる!実践Webアクセシビリティ</a>
+ </li>
+ <li>
+ <a href="#section--report--day-0--1930-a">19:30 [A] PHP でファイルシステムを作ろう</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--report--day-1">Day 1 (2021/03/27)</a>
+ <ul>
+ <li>
+ <a href="#section--report--day-1--1050-a">10:50 [A] 実践ATDD 〜TDDから更に歩みを進めたソフトウェア開発へ〜</a>
+ </li>
+ <li>
+ <a href="#section--report--day-1--1150-a">11:50 [A] 静的型解析を用いた大規模レガシーコードのリファクタリング計画</a>
+ </li>
+ <li>
+ <a href="#section--report--day-1--1310-a">13:10 [A] 目的に沿ったDocumentation as Codeをいかにして実現していくか</a>
+ </li>
+ <li>
+ <a href="#section--report--day-1--1410-a">14:10 [A] PHPで学ぶ、セッションの基本と応用</a>
+ </li>
+ <li>
+ <a href="#section--report--day-1--1450-a">14:50 [A] PHP8になった今の時代に、PHPの「エラー」「例外」そして「Error」をおさらいしておこう</a>
+ </li>
+ <li>
+ <a href="#section--report--day-1--1530-a">15:30 [A] Laravel のメール認証の内部実装を掘り下げる</a>
+ </li>
+ <li>
+ <a href="#section--report--day-1--1610-a">16:10 [A] ブラウザから始めるgRPC 〜 gRPC-WebにPHPを添えて</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--report--day-2">Day 2 (2021/03/28)</a>
+ </li>
+ <li>
+ <a href="#section--report--comments">全体の感想</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2021-10-02/cpp-you-can-use-keywords-in-attributes/index.html b/services/blog/public/posts/2021-10-02/cpp-you-can-use-keywords-in-attributes/index.html
index 905cc23f..c4f1304a 100644
--- a/services/blog/public/posts/2021-10-02/cpp-you-can-use-keywords-in-attributes/index.html
+++ b/services/blog/public/posts/2021-10-02/cpp-you-can-use-keywords-in-attributes/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>【C++】 属性構文の属性名にはキーワードが使える|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/posts/2021-10-02/python-unbound-local-error/index.html b/services/blog/public/posts/2021-10-02/python-unbound-local-error/index.html
index c9f0ab44..1beb05c2 100644
--- a/services/blog/public/posts/2021-10-02/python-unbound-local-error/index.html
+++ b/services/blog/public/posts/2021-10-02/python-unbound-local-error/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>【Python】 クロージャとUnboundLocalError: local variable &apos;x&apos; referenced before assignment|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/posts/2021-10-02/ruby-detect-running-implementation/index.html b/services/blog/public/posts/2021-10-02/ruby-detect-running-implementation/index.html
index 00f707c0..795fefa2 100644
--- a/services/blog/public/posts/2021-10-02/ruby-detect-running-implementation/index.html
+++ b/services/blog/public/posts/2021-10-02/ruby-detect-running-implementation/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>【Ruby】 自身を実行している処理系の種類を判定する|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/posts/2021-10-02/ruby-then-keyword-and-case-in/index.html b/services/blog/public/posts/2021-10-02/ruby-then-keyword-and-case-in/index.html
index 4b563c25..20585686 100644
--- a/services/blog/public/posts/2021-10-02/ruby-then-keyword-and-case-in/index.html
+++ b/services/blog/public/posts/2021-10-02/ruby-then-keyword-and-case-in/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>【Ruby】 then キーワードと case in|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -52,6 +52,29 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--tl-dr">TL; DR</a>
+ </li>
+ <li>
+ <a href="#section--what-is-then-keyword"> とは</a>
+ </li>
+ <li>
+ <a href="#section--why-then-is-usually-unnecessary">なぜ普段は書かなくてもよいのか</a>
+ </li>
+ <li>
+ <a href="#section--why-then-or-linebreak-is-needed">なぜ や や改行が必要か</a>
+ </li>
+ <li>
+ <a href="#section--then-in-case-in"> - における </a>
+ </li>
+ <li>
+ <a href="#section--outro">まとめ</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2021-10-02/rust-where-are-primitive-types-from/index.html b/services/blog/public/posts/2021-10-02/rust-where-are-primitive-types-from/index.html
index 49749ebc..396e2dde 100644
--- a/services/blog/public/posts/2021-10-02/rust-where-are-primitive-types-from/index.html
+++ b/services/blog/public/posts/2021-10-02/rust-where-are-primitive-types-from/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>Rust のプリミティブ型はどこからやって来るか|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -49,6 +49,20 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">前置き</a>
+ </li>
+ <li>
+ <a href="#section--code-reading">調査</a>
+ </li>
+ <li>
+ <a href="#section--outro">まとめ</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2021-10-02/vim-difference-between-autocmd-bufwrite-and-bufwritepre/index.html b/services/blog/public/posts/2021-10-02/vim-difference-between-autocmd-bufwrite-and-bufwritepre/index.html
index ae6b52cc..e4496ea1 100644
--- a/services/blog/public/posts/2021-10-02/vim-difference-between-autocmd-bufwrite-and-bufwritepre/index.html
+++ b/services/blog/public/posts/2021-10-02/vim-difference-between-autocmd-bufwrite-and-bufwritepre/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>【Vim】 autocmd events の BufWrite/BufWritePre の違い|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -49,6 +49,28 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--tl-dr">TL; DR</a>
+ </li>
+ <li>
+ <a href="#section--code-reading">調査記録</a>
+ <ul>
+ <li>
+ <a href="#section--code-reading--vim">vim のソースコード</a>
+ </li>
+ <li>
+ <a href="#section--code-reading--neovim">neovim のソースコード</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--outro">まとめ</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2021-10-02/vim-swap-order-of-selected-lines/index.html b/services/blog/public/posts/2021-10-02/vim-swap-order-of-selected-lines/index.html
index 96dc3b4e..27eb273e 100644
--- a/services/blog/public/posts/2021-10-02/vim-swap-order-of-selected-lines/index.html
+++ b/services/blog/public/posts/2021-10-02/vim-swap-order-of-selected-lines/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>Vimで選択した行の順番を入れ替える|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -49,6 +49,37 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--tl-dr">TL; DR</a>
+ </li>
+ <li>
+ <a href="#section--version">バージョン情報</a>
+ </li>
+ <li>
+ <a href="#section--existing-solution">よく紹介されている手法</a>
+ <ul>
+ <li>
+ <a href="#section--existing-solution--external-commands"> / </a>
+ </li>
+ <li>
+ <a href="#section--existing-solution--global-command"></a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--problem-of-global-command"> の問題点</a>
+ </li>
+ <li>
+ <a href="#section--solution">解決策</a>
+ </li>
+ <li>
+ <a href="#section--solution-revised">解決策 (改訂版)</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2022-04-09/phperkaigi-2022-tokens/index.html b/services/blog/public/posts/2022-04-09/phperkaigi-2022-tokens/index.html
index 0029bcc0..caa68793 100644
--- a/services/blog/public/posts/2022-04-09/phperkaigi-2022-tokens/index.html
+++ b/services/blog/public/posts/2022-04-09/phperkaigi-2022-tokens/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHPerKaigi 2022 トークン問題の解説|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -55,6 +55,87 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--q1-brainfuck">第1問 brainf_ck.php</a>
+ <ul>
+ <li>
+ <a href="#section--q1-brainfuck--commentary">解説</a>
+ <ul>
+ <li>
+ <a href="#section--q1-brainfuck--commentary--emoji">絵文字</a>
+ </li>
+ <li>
+ <a href="#section--q1-brainfuck--commentary--brainfuck">プログラム全体</a>
+ </li>
+ <li>
+ <a href="#section--q1-brainfuck--commentary--emoji-selection">絵文字の選択</a>
+ </li>
+ <li>
+ <a href="#section--q1-brainfuck--commentary--strict-types">strict_types</a>
+ </li>
+ <li>
+ <a href="#section--q1-brainfuck--commentary--url">URL</a>
+ </li>
+ <li>
+ <a href="#section--q1-brainfuck--commentary--numbers">リテラルなしで数値を生成する</a>
+ </li>
+ <li>
+ <a href="#section--q1-brainfuck--commentary--conditionals"> 文なしで条件分岐</a>
+ </li>
+ <li>
+ <a href="#section--q1-brainfuck--commentary--loops">、 文なしでループ</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--q2-riddle">第2問 riddle.php</a>
+ <ul>
+ <li>
+ <a href="#section--q2-riddle--code-reading">読解</a>
+ </li>
+ <li>
+ <a href="#section--q2-riddle--hint">ヒント</a>
+ </li>
+ <li>
+ <a href="#section--q2-riddle--solve">解く</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--q3-toquine">第3問 toquine.php</a>
+ <ul>
+ <li>
+ <a href="#section--q3-toquine--commentary">解説</a>
+ <ul>
+ <li>
+ <a href="#section--q3-toquine--commentary--quine">プログラム全体</a>
+ </li>
+ <li>
+ <a href="#section--q3-toquine--commentary--tokens">トークン</a>
+ </li>
+ <li>
+ <a href="#section--q3-toquine--commentary--states">状態保持</a>
+ </li>
+ <li>
+ <a href="#section--q3-toquine--commentary--rot-13">ROT 13</a>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2022-04-24/term-banner-write-tool-showing-banner-in-terminal/index.html b/services/blog/public/posts/2022-04-24/term-banner-write-tool-showing-banner-in-terminal/index.html
index 3de1d062..1b85e231 100644
--- a/services/blog/public/posts/2022-04-24/term-banner-write-tool-showing-banner-in-terminal/index.html
+++ b/services/blog/public/posts/2022-04-24/term-banner-write-tool-showing-banner-in-terminal/index.html
@@ -14,7 +14,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>term-banner: ターミナルにバナーを表示するツールを書いた|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -43,6 +43,26 @@
<header class="post-header">
<h1 class="post-title">term-banner: ターミナルにバナーを表示するツールを書いた</h1>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--motivation">Motivation</a>
+ </li>
+ <li>
+ <a href="#section--program">プログラム</a>
+ </li>
+ <li>
+ <a href="#section--font">フォント</a>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2022-05-01/phperkaigi-2022/index.html b/services/blog/public/posts/2022-05-01/phperkaigi-2022/index.html
index 1ca85f7e..81fb45b8 100644
--- a/services/blog/public/posts/2022-05-01/phperkaigi-2022/index.html
+++ b/services/blog/public/posts/2022-05-01/phperkaigi-2022/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHPerKaigi 2022|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -55,6 +55,34 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--comments">感想</a>
+ <ul>
+ <li>
+ <a href="#section--comments--great-sessions">厳選おすすめトーク</a>
+ </li>
+ <li>
+ <a href="#section--comments--token-quizzes">トークン問題の作成</a>
+ </li>
+ <li>
+ <a href="#section--comments--phper-challenge">PHPer チャレンジ</a>
+ </li>
+ <li>
+ <a href="#section--comments--conference">カンファレンス全体への感想</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--next-year">そして来年へ……?</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2022-08-27/php-conference-okinawa-code-golf/index.html b/services/blog/public/posts/2022-08-27/php-conference-okinawa-code-golf/index.html
index 6c961ace..0795b3a7 100644
--- a/services/blog/public/posts/2022-08-27/php-conference-okinawa-code-golf/index.html
+++ b/services/blog/public/posts/2022-08-27/php-conference-okinawa-code-golf/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP カンファレンス沖縄で出題されたコードゴルフの問題を解いてみた|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -55,6 +55,37 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--solution">解</a>
+ </li>
+ <li>
+ <a href="#section--techniques">使用したテクニック</a>
+ <ul>
+ <li>
+ <a href="#section--techniques--exponential-notation">指数表記</a>
+ </li>
+ <li>
+ <a href="#section--techniques--shorten-loop">foreach や for の中身を1つの文に</a>
+ </li>
+ <li>
+ <a href="#section--techniques--omit-initialization">$r に初期値を入れない</a>
+ </li>
+ <li>
+ <a href="#section--techniques--put-text-outside-php-tag">PHP タグの外に文字列を置く</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2022-08-31/support-for-communty-is-employee-benefits/index.html b/services/blog/public/posts/2022-08-31/support-for-communty-is-employee-benefits/index.html
index 51e571ba..ccb924b3 100644
--- a/services/blog/public/posts/2022-08-31/support-for-communty-is-employee-benefits/index.html
+++ b/services/blog/public/posts/2022-08-31/support-for-communty-is-employee-benefits/index.html
@@ -14,7 +14,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>弊社の PHP Foundation への寄付に寄せて|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/posts/2022-09-29/write-fizzbuzz-in-php-2-letters-per-line/index.html b/services/blog/public/posts/2022-09-29/write-fizzbuzz-in-php-2-letters-per-line/index.html
index 16704369..0530802b 100644
--- a/services/blog/public/posts/2022-09-29/write-fizzbuzz-in-php-2-letters-per-line/index.html
+++ b/services/blog/public/posts/2022-09-29/write-fizzbuzz-in-php-2-letters-per-line/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>【PHP】 fizzbuzz を書く。1行あたり2文字で。|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -49,6 +49,49 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">記事の構成について</a>
+ </li>
+ <li>
+ <a href="#section--regulations">レギュレーション</a>
+ </li>
+ <li>
+ <a href="#section--problems">主な障害</a>
+ </li>
+ <li>
+ <a href="#section--commentary">解説</a>
+ <ul>
+ <li>
+ <a href="#section--commentary--normal-fizzbuzz">普通の (?) fizzbuzz</a>
+ </li>
+ <li>
+ <a href="#section--commentary--remove-keywords"> の排除</a>
+ </li>
+ <li>
+ <a href="#section--commentary--shorten-function-invocation">関数呼び出しの短縮</a>
+ </li>
+ <li>
+ <a href="#section--commentary--incompatible-solution">余談: PHP 8.x で動作しなくてもいいなら</a>
+ </li>
+ <li>
+ <a href="#section--commentary--shorten-string-literals">文字列リテラルの短縮</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--stretched-fizzbuzz">完成系</a>
+ </li>
+ <li>
+ <a href="#section--outro">感想など</a>
+ </li>
+ <li>
+ <a href="#section--alternative-solution">余談2: 別解</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1/index.html b/services/blog/public/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1/index.html
index cec9e188..e42c63a3 100644
--- a/services/blog/public/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1/index.html
+++ b/services/blog/public/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHPerKaigi 2023: ボツになったトークン問題 その 1|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -52,6 +52,26 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--quiz">問題</a>
+ </li>
+ <li>
+ <a href="#section--how-to-obtain-token">トークン入手方法</a>
+ </li>
+ <li>
+ <a href="#section--commentary">解説</a>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2022-10-28/setup-server-for-this-site/index.html b/services/blog/public/posts/2022-10-28/setup-server-for-this-site/index.html
index 3fcdf961..98c8048c 100644
--- a/services/blog/public/posts/2022-10-28/setup-server-for-this-site/index.html
+++ b/services/blog/public/posts/2022-10-28/setup-server-for-this-site/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>【備忘録】 このサイト用の VPS をセットアップしたときのメモ|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -49,6 +49,92 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--vps">VPS</a>
+ </li>
+ <li>
+ <a href="#section--preparation">事前準備</a>
+ <ul>
+ <li>
+ <a href="#section--preparation--hostname">サーバのホスト名を決める</a>
+ </li>
+ <li>
+ <a href="#section--preparation--ssh-key">SSH の鍵生成</a>
+ </li>
+ <li>
+ <a href="#section--preparation--ssh-config">SSH の設定</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--basic-setup">基本のセットアップ</a>
+ <ul>
+ <li>
+ <a href="#section--basic-setup--login">SSH 接続</a>
+ </li>
+ <li>
+ <a href="#section--basic-setup--user">ユーザを作成する</a>
+ </li>
+ <li>
+ <a href="#section--basic-setup--hostname">ホスト名を変える</a>
+ </li>
+ <li>
+ <a href="#section--basic-setup--public-key">公開鍵を置く</a>
+ </li>
+ <li>
+ <a href="#section--basic-setup--ssh-config">SSH の設定</a>
+ </li>
+ <li>
+ <a href="#section--basic-setup--ssh-connect">SSH で接続確認</a>
+ </li>
+ <li>
+ <a href="#section--basic-setup--close-ports">ポートの遮断</a>
+ </li>
+ <li>
+ <a href="#section--basic-setup--ssh-key-for-github">GitHub 用の SSH 鍵</a>
+ </li>
+ <li>
+ <a href="#section--basic-setup--upgrade-packages">パッケージの更新</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--site-hosting-setup">サイトホスティング用のセットアップ</a>
+ <ul>
+ <li>
+ <a href="#section--site-hosting-setup--dns">DNS に IP アドレスを登録する</a>
+ </li>
+ <li>
+ <a href="#section--site-hosting-setup--install-softwares">使うソフトウェアのインストール</a>
+ </li>
+ <li>
+ <a href="#section--site-hosting-setup--docker">メインユーザが Docker を使えるように</a>
+ </li>
+ <li>
+ <a href="#section--site-hosting-setup--open-http-ports">HTTP/HTTPS を通す</a>
+ </li>
+ <li>
+ <a href="#section--site-hosting-setup--clone-repositories">リポジトリのクローン</a>
+ </li>
+ <li>
+ <a href="#section--site-hosting-setup--certbot">certbot で証明書取得</a>
+ </li>
+ <li>
+ <a href="#section--site-hosting-setup--run-server">サーバを稼動させる</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--outro">感想</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2022-11-19/phperkaigi-2023-unused-token-quiz-2/index.html b/services/blog/public/posts/2022-11-19/phperkaigi-2023-unused-token-quiz-2/index.html
index 6b0e135f..dc5ed8e8 100644
--- a/services/blog/public/posts/2022-11-19/phperkaigi-2023-unused-token-quiz-2/index.html
+++ b/services/blog/public/posts/2022-11-19/phperkaigi-2023-unused-token-quiz-2/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHPerKaigi 2023: ボツになったトークン問題 その 2|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -52,6 +52,26 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--quiz">問題</a>
+ </li>
+ <li>
+ <a href="#section--how-to-obtain-token">トークン入手方法</a>
+ </li>
+ <li>
+ <a href="#section--commentary">解説</a>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2023-01-10/phperkaigi-2023-unused-token-quiz-3/index.html b/services/blog/public/posts/2023-01-10/phperkaigi-2023-unused-token-quiz-3/index.html
index 55a05c16..7c98dda9 100644
--- a/services/blog/public/posts/2023-01-10/phperkaigi-2023-unused-token-quiz-3/index.html
+++ b/services/blog/public/posts/2023-01-10/phperkaigi-2023-unused-token-quiz-3/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHPerKaigi 2023: ボツになったトークン問題 その 3|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -52,6 +52,37 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--quiz">問題</a>
+ </li>
+ <li>
+ <a href="#section--commentary">解説</a>
+ <ul>
+ <li>
+ <a href="#section--commentary--summary">概要</a>
+ </li>
+ <li>
+ <a href="#section--commentary--chain-of-exceptions">例外オブジェクトの連鎖</a>
+ </li>
+ <li>
+ <a href="#section--commentary--output">出力部の解析</a>
+ </li>
+ <li>
+ <a href="#section--commentary--data-construction">データ構成部の解析</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2023-03-10/rewrite-this-blog-generator/index.html b/services/blog/public/posts/2023-03-10/rewrite-this-blog-generator/index.html
index dd7ea830..a78c8a4f 100644
--- a/services/blog/public/posts/2023-03-10/rewrite-this-blog-generator/index.html
+++ b/services/blog/public/posts/2023-03-10/rewrite-this-blog-generator/index.html
@@ -14,7 +14,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>このブログのジェネレータを書き直した|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -43,6 +43,23 @@
<header class="post-header">
<h1 class="post-title">このブログのジェネレータを書き直した</h1>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--from-hugo-to-asciidoctor">Hugo から Asciidoctor へ</a>
+ </li>
+ <li>
+ <a href="#section--from-asciidoctor-to-my-own-generator">Asciidoctor から自前のジェネレータへ</a>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2023-04-01/implementation-of-minimal-png-image-encoder/index.html b/services/blog/public/posts/2023-04-01/implementation-of-minimal-png-image-encoder/index.html
index d90c0af1..41ebb8dc 100644
--- a/services/blog/public/posts/2023-04-01/implementation-of-minimal-png-image-encoder/index.html
+++ b/services/blog/public/posts/2023-04-01/implementation-of-minimal-png-image-encoder/index.html
@@ -14,7 +14,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PNG 画像の最小構成エンコーダを実装する|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -43,6 +43,51 @@
<header class="post-header">
<h1 class="post-title">PNG 画像の最小構成エンコーダを実装する</h1>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--basic-structure-of-png">PNG ファイルの基本構造</a>
+ </li>
+ <li>
+ <a href="#section--implement-png-encoder">PNG のエンコーダを実装する</a>
+ <ul>
+ <li>
+ <a href="#section--implement-png-encoder--png-signature">PNG signature</a>
+ </li>
+ <li>
+ <a href="#section--implement-png-encoder--structure-of-chunk">Chunk の構造</a>
+ </li>
+ <li>
+ <a href="#section--implement-png-encoder--ihdr-chunk">IHDR chunk</a>
+ </li>
+ <li>
+ <a href="#section--implement-png-encoder--idat-chunk">IDAT chunk</a>
+ <ul>
+ <li>
+ <a href="#section--implement-png-encoder--idat-chunk--zlib">Zlib</a>
+ </li>
+ <li>
+ <a href="#section--implement-png-encoder--idat-chunk--image-data">画像データ</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--implement-png-encoder--iend-chunk">IEND chunk</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ <li>
+ <a href="#section--references">参考</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2023-04-04/phperkaigi-2023-report/index.html b/services/blog/public/posts/2023-04-04/phperkaigi-2023-report/index.html
index 87b0eae6..936747cf 100644
--- a/services/blog/public/posts/2023-04-04/phperkaigi-2023-report/index.html
+++ b/services/blog/public/posts/2023-04-04/phperkaigi-2023-report/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHPerKaigi 2023 参加レポ|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -55,6 +55,37 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--as-speaker">スピーカーとして</a>
+ </li>
+ <li>
+ <a href="#section--as-staff">当日スタッフとして</a>
+ </li>
+ <li>
+ <a href="#section--as-attendee">参加者として</a>
+ <ul>
+ <li>
+ <a href="#section--as-attendee--recommended-sessions">おすすめセッション</a>
+ </li>
+ <li>
+ <a href="#section--as-attendee--phper-challenge">PHPer チャレンジ</a>
+ </li>
+ <li>
+ <a href="#section--as-attendee--random-thoughts">雑多な感想</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2023-06-25/phpconfuk-2023-report/index.html b/services/blog/public/posts/2023-06-25/phpconfuk-2023-report/index.html
index bf7d2495..47750f3c 100644
--- a/services/blog/public/posts/2023-06-25/phpconfuk-2023-report/index.html
+++ b/services/blog/public/posts/2023-06-25/phpconfuk-2023-report/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP カンファレンス福岡 2023 参加レポ|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -55,6 +55,28 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--sessions-thoughts">セッションの感想</a>
+ <ul>
+ <li>
+ <a href="#section--sessions-thoughts--eve">前夜祭</a>
+ </li>
+ <li>
+ <a href="#section--sessions-thoughts--conference">カンファレンス</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2023-10-02/compile-php-runtime-to-wasm/index.html b/services/blog/public/posts/2023-10-02/compile-php-runtime-to-wasm/index.html
index c551ccf5..016951a2 100644
--- a/services/blog/public/posts/2023-10-02/compile-php-runtime-to-wasm/index.html
+++ b/services/blog/public/posts/2023-10-02/compile-php-runtime-to-wasm/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP の処理系を Emscripten で WebAssembly にコンパイルする|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -52,6 +52,40 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--version">バージョン情報</a>
+ </li>
+ <li>
+ <a href="#section--goal">本記事のゴール</a>
+ </li>
+ <li>
+ <a href="#section--build">ビルド</a>
+ <ul>
+ <li>
+ <a href="#section--build--write-c-entrypoint">C のエントリポイントを書く</a>
+ </li>
+ <li>
+ <a href="#section--build--compile-to-wasm">WebAssembly にコンパイルする</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--run">実行</a>
+ </li>
+ <li>
+ <a href="#section--outro">まとめ</a>
+ </li>
+ <li>
+ <a href="#section--references">参考リンク</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2023-10-13/i-entered-the-open-university-of-japan/index.html b/services/blog/public/posts/2023-10-13/i-entered-the-open-university-of-japan/index.html
index e4b95799..d0fbe550 100644
--- a/services/blog/public/posts/2023-10-13/i-entered-the-open-university-of-japan/index.html
+++ b/services/blog/public/posts/2023-10-13/i-entered-the-open-university-of-japan/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>放送大学に入学しました|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/posts/2023-12-03/isucon-13/index.html b/services/blog/public/posts/2023-12-03/isucon-13/index.html
index 220c725c..9dd7a94e 100644
--- a/services/blog/public/posts/2023-12-03/isucon-13/index.html
+++ b/services/blog/public/posts/2023-12-03/isucon-13/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>ISUCON 13 に参加した|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -49,6 +49,40 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--goals">目標</a>
+ </li>
+ <li>
+ <a href="#section--strategy">戦略</a>
+ <ul>
+ <li>
+ <a href="#section--strategy--do-not-destroy-environment">環境を破壊しない</a>
+ </li>
+ <li>
+ <a href="#section--strategy--revert-changes-immediately">すぐに変更を取り消す</a>
+ </li>
+ <li>
+ <a href="#section--strategy--do-small-deployment">小さくデプロイする</a>
+ </li>
+ <li>
+ <a href="#section--strategy--use-familiar-tools">使い慣れた道具を使う</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--performance-optimization">パフォーマンスの最適化</a>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2023-12-31/2023-reflections/index.html b/services/blog/public/posts/2023-12-31/2023-reflections/index.html
index 4fa00982..f7700d17 100644
--- a/services/blog/public/posts/2023-12-31/2023-reflections/index.html
+++ b/services/blog/public/posts/2023-12-31/2023-reflections/index.html
@@ -14,7 +14,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>2023年の振り返り|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -43,6 +43,29 @@
<header class="post-header">
<h1 class="post-title">2023年の振り返り</h1>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--conferences">登壇・カンファレンススタッフ</a>
+ </li>
+ <li>
+ <a href="#section--articles">書いた記事</a>
+ </li>
+ <li>
+ <a href="#section--coding">作ったもの</a>
+ </li>
+ <li>
+ <a href="#section--misc">その他</a>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2024-01-10/neovim-insert-namespace-declaration-to-empty-php-file/index.html b/services/blog/public/posts/2024-01-10/neovim-insert-namespace-declaration-to-empty-php-file/index.html
index 2e9c8396..3cad45bf 100644
--- a/services/blog/public/posts/2024-01-10/neovim-insert-namespace-declaration-to-empty-php-file/index.html
+++ b/services/blog/public/posts/2024-01-10/neovim-insert-namespace-declaration-to-empty-php-file/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>【Neovim】 空の PHP ファイルに namespace 宣言を挿入する|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -52,6 +52,29 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">やりたいこと</a>
+ </li>
+ <li>
+ <a href="#section--version">バージョン情報</a>
+ </li>
+ <li>
+ <a href="#section--ftplugin">ftplugin を用意する</a>
+ </li>
+ <li>
+ <a href="#section--did-ftplugin">二重読み込みを防ぐ</a>
+ </li>
+ <li>
+ <a href="#section--implement">実装する</a>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2024-02-03/install-wireguard-on-personal-server/index.html b/services/blog/public/posts/2024-02-03/install-wireguard-on-personal-server/index.html
index 176be938..af260f0a 100644
--- a/services/blog/public/posts/2024-02-03/install-wireguard-on-personal-server/index.html
+++ b/services/blog/public/posts/2024-02-03/install-wireguard-on-personal-server/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>【備忘録】 個人用サーバに WireGuard を導入する|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -52,6 +52,32 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--install-wireguard-server">WireGuard のインストール: サーバ</a>
+ </li>
+ <li>
+ <a href="#section--install-wireguard-client">WireGuard のインストール: クライアント</a>
+ </li>
+ <li>
+ <a href="#section--configure-wireguard">WireGuard の設定</a>
+ </li>
+ <li>
+ <a href="#section--configure-firewall">ファイアウォールの設定</a>
+ </li>
+ <li>
+ <a href="#section--connect-each-other">接続する</a>
+ </li>
+ <li>
+ <a href="#section--edit-80-port">追記: 80 番ポートについて</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2024-02-10/yapcjapan-2024-report/index.html b/services/blog/public/posts/2024-02-10/yapcjapan-2024-report/index.html
index bef99183..20c5a648 100644
--- a/services/blog/public/posts/2024-02-10/yapcjapan-2024-report/index.html
+++ b/services/blog/public/posts/2024-02-10/yapcjapan-2024-report/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>YAPC::Hiroshima 2024 参加レポ|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -55,6 +55,20 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--sessions-thoughts">セッションの感想</a>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2024-02-22/phpkansai-2024-report/index.html b/services/blog/public/posts/2024-02-22/phpkansai-2024-report/index.html
index 0b27e943..4653b2ad 100644
--- a/services/blog/public/posts/2024-02-22/phpkansai-2024-report/index.html
+++ b/services/blog/public/posts/2024-02-22/phpkansai-2024-report/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHPカンファレンス関西 2024 参加レポ|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -55,6 +55,20 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--sessions-thoughts">セッションの感想</a>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2024-03-17/phperkaigi-2024-report/index.html b/services/blog/public/posts/2024-03-17/phperkaigi-2024-report/index.html
index 185aa146..b5af0e91 100644
--- a/services/blog/public/posts/2024-03-17/phperkaigi-2024-report/index.html
+++ b/services/blog/public/posts/2024-03-17/phperkaigi-2024-report/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHPerKaigi 2024 参加レポ|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -55,6 +55,31 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--as-speaker">スピーカーとして</a>
+ </li>
+ <li>
+ <a href="#section--as-staff">コアスタッフとして</a>
+ </li>
+ <li>
+ <a href="#section--as-attendee">参加者として</a>
+ <ul>
+ <li>
+ <a href="#section--as-attendee--my-best-session">マイベストセッション</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2024-03-20/my-bucket-list/index.html b/services/blog/public/posts/2024-03-20/my-bucket-list/index.html
index 92161a33..4adbd10c 100644
--- a/services/blog/public/posts/2024-03-20/my-bucket-list/index.html
+++ b/services/blog/public/posts/2024-03-20/my-bucket-list/index.html
@@ -14,7 +14,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>死ぬまでに作る自作○○一覧あるいは人生の TODO リスト|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/posts/2024-04-14/phpcon-odawara-2024-report/index.html b/services/blog/public/posts/2024-04-14/phpcon-odawara-2024-report/index.html
index a9f5344f..f8178c26 100644
--- a/services/blog/public/posts/2024-04-14/phpcon-odawara-2024-report/index.html
+++ b/services/blog/public/posts/2024-04-14/phpcon-odawara-2024-report/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP カンファレンス小田原 2024 参加レポ|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -55,6 +55,26 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--as-speaker">スピーカーとして</a>
+ </li>
+ <li>
+ <a href="#section--as-staff">スタッフとして</a>
+ </li>
+ <li>
+ <a href="#section--as-attendee">参加者として</a>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2024-04-21/pipefail-option-in-gitlab-ci-cd/index.html b/services/blog/public/posts/2024-04-21/pipefail-option-in-gitlab-ci-cd/index.html
index 5efcb1db..bf2f6d93 100644
--- a/services/blog/public/posts/2024-04-21/pipefail-option-in-gitlab-ci-cd/index.html
+++ b/services/blog/public/posts/2024-04-21/pipefail-option-in-gitlab-ci-cd/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>【GitLab】 GitLab CI/CD 上での bash/sh は pipefail が有効になっている|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -52,6 +52,34 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--background">前提</a>
+ <ul>
+ <li>
+ <a href="#section--background--gitlab-ci-cd">GitLab CI/CD について</a>
+ </li>
+ <li>
+ <a href="#section--background--pipefail-option"> オプションについて</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--problem">発生した問題</a>
+ </li>
+ <li>
+ <a href="#section--where-pipefail-is-enabled">どこで が on になるか</a>
+ </li>
+ <li>
+ <a href="#section--how-to-solve">どのように解決するか</a>
+ </li>
+ <li>
+ <a href="#section--remarks">備考</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2024-04-29/zsh-file-completion-for-composer-custom-commands/index.html b/services/blog/public/posts/2024-04-29/zsh-file-completion-for-composer-custom-commands/index.html
index 08557879..96f82be8 100644
--- a/services/blog/public/posts/2024-04-29/zsh-file-completion-for-composer-custom-commands/index.html
+++ b/services/blog/public/posts/2024-04-29/zsh-file-completion-for-composer-custom-commands/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>【Zsh】 Composer のカスタムコマンドに対する Zsh 補完で引数にファイルを補完させる|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -55,6 +55,29 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--version-info">バージョン情報</a>
+ </li>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--problem">発生していた問題</a>
+ </li>
+ <li>
+ <a href="#section--what-i-want-to-achive">やりたいこと</a>
+ </li>
+ <li>
+ <a href="#section--solution">解決策</a>
+ </li>
+ <li>
+ <a href="#section--conclusion">まとめ</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2024-05-11/phpconkagawa-2024-report/index.html b/services/blog/public/posts/2024-05-11/phpconkagawa-2024-report/index.html
index 8a314d7f..da43afb6 100644
--- a/services/blog/public/posts/2024-05-11/phpconkagawa-2024-report/index.html
+++ b/services/blog/public/posts/2024-05-11/phpconkagawa-2024-report/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP カンファレンス香川 2024 参加レポ|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -55,6 +55,23 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--session-thoughts">セッション感想</a>
+ </li>
+ <li>
+ <a href="#section--lightning-talk">懇親会 LT</a>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2024-06-19/scalamatsuri-2024-report/index.html b/services/blog/public/posts/2024-06-19/scalamatsuri-2024-report/index.html
index 9abca4f0..7d4dfc35 100644
--- a/services/blog/public/posts/2024-06-19/scalamatsuri-2024-report/index.html
+++ b/services/blog/public/posts/2024-06-19/scalamatsuri-2024-report/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>ScalaMatsuri 2024 参加レポ|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -55,6 +55,23 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--sessions">セッション感想</a>
+ </li>
+ <li>
+ <a href="#section--others">その他感想</a>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html b/services/blog/public/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html
index 9a40d7c2..e637a4d7 100644
--- a/services/blog/public/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html
+++ b/services/blog/public/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>reparojson: 文法エラーを直すだけの JSON フォーマッタを作った|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -52,6 +52,23 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">欲しかったもの</a>
+ </li>
+ <li>
+ <a href="#section--reparojson">作ったもの</a>
+ </li>
+ <li>
+ <a href="#section--itegration-with-neovim">Neovim との連携</a>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2024-08-19/go-template-access-outer-scope-pipeline-within-with-or-range/index.html b/services/blog/public/posts/2024-08-19/go-template-access-outer-scope-pipeline-within-with-or-range/index.html
index ea58be69..40208a71 100644
--- a/services/blog/public/posts/2024-08-19/go-template-access-outer-scope-pipeline-within-with-or-range/index.html
+++ b/services/blog/public/posts/2024-08-19/go-template-access-outer-scope-pipeline-within-with-or-range/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>【Go】 text/template の with や range の内側から外側の &quot;.&quot; にアクセスする|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -49,6 +49,26 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--tldr">TL;DR</a>
+ </li>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--what-i-want-to-do">やりたいこと</a>
+ </li>
+ <li>
+ <a href="#section--solution">解決方法</a>
+ </li>
+ <li>
+ <a href="#section--reference">参考</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2024-09-28/mncore-challenge-1/index.html b/services/blog/public/posts/2024-09-28/mncore-challenge-1/index.html
index 1c4b7f05..304078de 100644
--- a/services/blog/public/posts/2024-09-28/mncore-challenge-1/index.html
+++ b/services/blog/public/posts/2024-09-28/mncore-challenge-1/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>MN-Core Challenge #1 参加レポ|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -49,6 +49,20 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--thought">感想</a>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2024-12-04/cohackpp-report/index.html b/services/blog/public/posts/2024-12-04/cohackpp-report/index.html
index d5b81411..50c2312a 100644
--- a/services/blog/public/posts/2024-12-04/cohackpp-report/index.html
+++ b/services/blog/public/posts/2024-12-04/cohackpp-report/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>紅白ぺぱ合戦に参加&amp;LTしました|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -52,6 +52,31 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--thoughts">感想</a>
+ </li>
+ <li>
+ <a href="#section--lt">LT</a>
+ <ul>
+ <li>
+ <a href="#section--lt--prepare">合戦準備</a>
+ </li>
+ <li>
+ <a href="#section--lt--battle">いざ尋常に勝負</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--congrats">ご結婚おめでとうございます</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2024-12-33/2024-reflections/index.html b/services/blog/public/posts/2024-12-33/2024-reflections/index.html
index 686c9f6a..615fea8c 100644
--- a/services/blog/public/posts/2024-12-33/2024-reflections/index.html
+++ b/services/blog/public/posts/2024-12-33/2024-reflections/index.html
@@ -14,7 +14,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>2024年の振り返り|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -43,6 +43,29 @@
<header class="post-header">
<h1 class="post-title">2024年の振り返り</h1>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--conference">登壇・カンファレンス参加</a>
+ </li>
+ <li>
+ <a href="#section--articles">書いた記事</a>
+ </li>
+ <li>
+ <a href="#section--coding">作ったもの</a>
+ </li>
+ <li>
+ <a href="#section--misc">その他</a>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2025-01-08/phperkaigi-2023-tokens-q1/index.html b/services/blog/public/posts/2025-01-08/phperkaigi-2023-tokens-q1/index.html
index 849154d8..e7cd5282 100644
--- a/services/blog/public/posts/2025-01-08/phperkaigi-2023-tokens-q1/index.html
+++ b/services/blog/public/posts/2025-01-08/phperkaigi-2023-tokens-q1/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHPerKaigi 2023 トークン問題解説 (1/5)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -58,6 +58,46 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--quiz">Q1: An Art of Computer Programming</a>
+ </li>
+ <li>
+ <a href="#section--how-to-solve">解き方</a>
+ </li>
+ <li>
+ <a href="#section--commentary">解説</a>
+ <ul>
+ <li>
+ <a href="#section--commentary--read-as-image">画像として解釈する</a>
+ </li>
+ <li>
+ <a href="#section--commentary--password">パスワード</a>
+ </li>
+ <li>
+ <a href="#section--commentary--png-steganography">PNG ステガノグラフィ</a>
+ </li>
+ <li>
+ <a href="#section--commentary--php-program">実行される PHP プログラム</a>
+ </li>
+ <li>
+ <a href="#section--commentary--piet-source-code">Piet のソースコード</a>
+ </li>
+ <li>
+ <a href="#section--commentary--misc">その他小ネタ</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2025-01-26/yaml-breaking-changes-between-v1-1-and-v1-2/index.html b/services/blog/public/posts/2025-01-26/yaml-breaking-changes-between-v1-1-and-v1-2/index.html
index 578868c1..e869cd3b 100644
--- a/services/blog/public/posts/2025-01-26/yaml-breaking-changes-between-v1-1-and-v1-2/index.html
+++ b/services/blog/public/posts/2025-01-26/yaml-breaking-changes-between-v1-1-and-v1-2/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>【YAML】YAML 1.1 と YAML 1.2 の主な破壊的変更|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -49,6 +49,34 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--breaking-changes">主な破壊的変更</a>
+ <ul>
+ <li>
+ <a href="#section--breaking-changes--boolean-literals">Boolean としてパースされるトークンが / とその亜種のみに</a>
+ </li>
+ <li>
+ <a href="#section--breaking-changes--octal-literals">八進数リテラルには が必須に</a>
+ </li>
+ <li>
+ <a href="#section--breaking-changes--merging"> によるマージが不可能に</a>
+ </li>
+ <li>
+ <a href="#section--breaking-changes--number-separator">数字を で区切るのが禁止に</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2025-02-24/phpcon-nagoya-2025-report/index.html b/services/blog/public/posts/2025-02-24/phpcon-nagoya-2025-report/index.html
index 120074a2..b24dfda2 100644
--- a/services/blog/public/posts/2025-02-24/phpcon-nagoya-2025-report/index.html
+++ b/services/blog/public/posts/2025-02-24/phpcon-nagoya-2025-report/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP カンファレンス名古屋 2025 参加レポ|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -55,6 +55,23 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--sessions">セッション感想</a>
+ </li>
+ <li>
+ <a href="#section--my-session">登壇したセッション</a>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2025-03-27/zip-function-like-command-paste-command/index.html b/services/blog/public/posts/2025-03-27/zip-function-like-command-paste-command/index.html
index cc980b1e..ad21dd19 100644
--- a/services/blog/public/posts/2025-03-27/zip-function-like-command-paste-command/index.html
+++ b/services/blog/public/posts/2025-03-27/zip-function-like-command-paste-command/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>zip 関数のようなコマンド paste|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/posts/2025-03-28/http-1-1-send-multiple-same-headers/index.html b/services/blog/public/posts/2025-03-28/http-1-1-send-multiple-same-headers/index.html
index 6142f333..477f8064 100644
--- a/services/blog/public/posts/2025-03-28/http-1-1-send-multiple-same-headers/index.html
+++ b/services/blog/public/posts/2025-03-28/http-1-1-send-multiple-same-headers/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>【HTTP】HTTP/1.1 で同じヘッダを2回送るとどうなるか|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -49,6 +49,34 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--specification">仕様</a>
+ <ul>
+ <li>
+ <a href="#section--specification--sender">送信側</a>
+ </li>
+ <li>
+ <a href="#section--specification--recipient">受信側</a>
+ </li>
+ <li>
+ <a href="#section--specification--exception">例外ケース: Set-Cookie</a>
+ </li>
+ <li>
+ <a href="#section--specification--comma-separated-list">どの header field がコンマ区切りのリストなのか</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--outro">まとめ</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2025-04-20/trick-2025-most-ruby-on-ruby-award/index.html b/services/blog/public/posts/2025-04-20/trick-2025-most-ruby-on-ruby-award/index.html
index 94056e10..94d30758 100644
--- a/services/blog/public/posts/2025-04-20/trick-2025-most-ruby-on-ruby-award/index.html
+++ b/services/blog/public/posts/2025-04-20/trick-2025-most-ruby-on-ruby-award/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>RubyKaigi 2025 の TRICK で入賞した|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -58,6 +58,34 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--trick">TRICK とは</a>
+ </li>
+ <li>
+ <a href="#section--my-work">作品紹介</a>
+ <ul>
+ <li>
+ <a href="#section--my-work--quine">Quine</a>
+ </li>
+ <li>
+ <a href="#section--my-work--syntax-highlight">シンタックスハイライト</a>
+ </li>
+ <li>
+ <a href="#section--my-work--ruby-text">振り仮名</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2025-04-24/composer-patches-v2-does-not-require-gnu-patch-even-on-macos/index.html b/services/blog/public/posts/2025-04-24/composer-patches-v2-does-not-require-gnu-patch-even-on-macos/index.html
index 7074f7cc..8ee9d64b 100644
--- a/services/blog/public/posts/2025-04-24/composer-patches-v2-does-not-require-gnu-patch-even-on-macos/index.html
+++ b/services/blog/public/posts/2025-04-24/composer-patches-v2-does-not-require-gnu-patch-even-on-macos/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>【Composer】 composer-patches v2 では macOS でも GNU patch のインストールが不要になる (予定)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -55,6 +55,20 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--on-macos">macOS での問題点</a>
+ </li>
+ <li>
+ <a href="#section--in-version-2">v2 では</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2025-05-05/make-tiny-self-hosted-c-compiler/index.html b/services/blog/public/posts/2025-05-05/make-tiny-self-hosted-c-compiler/index.html
index 0bb69686..77fcb1f7 100644
--- a/services/blog/public/posts/2025-05-05/make-tiny-self-hosted-c-compiler/index.html
+++ b/services/blog/public/posts/2025-05-05/make-tiny-self-hosted-c-compiler/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>セルフホスト可能な C コンパイラを作った|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -49,6 +49,42 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">はじめに</a>
+ </li>
+ <li>
+ <a href="#section--regulation">レギュレーション</a>
+ </li>
+ <li>
+ <a href="#section--design">設計</a>
+ <ul>
+ <li>
+ <a href="#section--design--language-features">言語機能</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--development">開発</a>
+ <ul>
+ <li>
+ <a href="#section--development--day1">1日目 (2025-05-03)</a>
+ </li>
+ <li>
+ <a href="#section--development--day2">2日目 (2025-05-03)</a>
+ </li>
+ <li>
+ <a href="#section--development--day3">3日目 (2025-05-03)</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/2025-06-14/baba-is-you/index.html b/services/blog/public/posts/2025-06-14/baba-is-you/index.html
index 05d8e48f..81bbd9e1 100644
--- a/services/blog/public/posts/2025-06-14/baba-is-you/index.html
+++ b/services/blog/public/posts/2025-06-14/baba-is-you/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>最高のパズルゲーム Baba Is You をやれ|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
@@ -49,6 +49,59 @@
</li>
</ul>
</header>
+ <nav class="toc">
+ <h2>目次</h2>
+ <ul>
+ <li>
+ <a href="#section--intro">Baba Is You とは</a>
+ </li>
+ <li>
+ <a href="#section--no-spoiler">前半 (ネタバレなし)</a>
+ <ul>
+ <li>
+ <a href="#section--no-spoiler--what-is-baba-is-you">どういうゲームか?</a>
+ </li>
+ <li>
+ <a href="#section--no-spoiler--play-time-and-difficulty">ゲームのボリューム・難易度</a>
+ </li>
+ <li>
+ <a href="#section--no-spoiler--appeal">魅力</a>
+ <ul>
+ <li>
+ <a href="#section--no-spoiler--appeal--very-difficult">高い難易度</a>
+ </li>
+ <li>
+ <a href="#section--no-spoiler--appeal--very-flexible">新しい単語との出会い</a>
+ </li>
+ <li>
+ <a href="#section--no-spoiler--appeal--very-beautiful">美しいパズル</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--no-spoiler--play-now">Baba Is You をやれ</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--spoiler">後半 (ネタバレあり)</a>
+ <ul>
+ <li>
+ <a href="#section--spoiler--notation">表記</a>
+ </li>
+ <li>
+ <a href="#section--spoiler--impressive-levels">印象的な面</a>
+ </li>
+ <li>
+ <a href="#section--spoiler--difficult-levels">初見時難易度ランキング</a>
+ </li>
+ </ul>
+ </li>
+ <li>
+ <a href="#section--outro">おわりに</a>
+ </li>
+ </ul>
+ </nav>
<div class="post-content">
<section id="changelog">
<h2><a href="#changelog">更新履歴</a></h2>
diff --git a/services/blog/public/posts/3/index.html b/services/blog/public/posts/3/index.html
index 85f7d92d..bcd3a694 100644
--- a/services/blog/public/posts/3/index.html
+++ b/services/blog/public/posts/3/index.html
@@ -15,7 +15,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/posts/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>投稿一覧 (3ページ目)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/posts/4/index.html b/services/blog/public/posts/4/index.html
index c44cbae8..67ecd304 100644
--- a/services/blog/public/posts/4/index.html
+++ b/services/blog/public/posts/4/index.html
@@ -15,7 +15,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/posts/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>投稿一覧 (4ページ目)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/posts/5/index.html b/services/blog/public/posts/5/index.html
index 95548528..04dc89a5 100644
--- a/services/blog/public/posts/5/index.html
+++ b/services/blog/public/posts/5/index.html
@@ -15,7 +15,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/posts/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>投稿一覧 (5ページ目)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/posts/6/index.html b/services/blog/public/posts/6/index.html
index cac03b51..72ee6969 100644
--- a/services/blog/public/posts/6/index.html
+++ b/services/blog/public/posts/6/index.html
@@ -15,7 +15,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/posts/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>投稿一覧 (6ページ目)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/posts/index.html b/services/blog/public/posts/index.html
index b0e996ba..a45da9f7 100644
--- a/services/blog/public/posts/index.html
+++ b/services/blog/public/posts/index.html
@@ -15,7 +15,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/posts/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>投稿一覧 (1ページ目)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/slides/2023-01-18/phpstudy-tokyo-148/index.html b/services/blog/public/slides/2023-01-18/phpstudy-tokyo-148/index.html
index b0b6b004..57a1a354 100644
--- a/services/blog/public/slides/2023-01-18/phpstudy-tokyo-148/index.html
+++ b/services/blog/public/slides/2023-01-18/phpstudy-tokyo-148/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP 勉強会@東京 第148 回 (LT)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2023-02-15/phpstudy-tokyo-149/index.html b/services/blog/public/slides/2023-02-15/phpstudy-tokyo-149/index.html
index 819a4717..ba80593c 100644
--- a/services/blog/public/slides/2023-02-15/phpstudy-tokyo-149/index.html
+++ b/services/blog/public/slides/2023-02-15/phpstudy-tokyo-149/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP 勉強会@東京 第149 回 (LT)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2023-03-15/phpstudy-tokyo-150/index.html b/services/blog/public/slides/2023-03-15/phpstudy-tokyo-150/index.html
index 67403036..1879a0d3 100644
--- a/services/blog/public/slides/2023-03-15/phpstudy-tokyo-150/index.html
+++ b/services/blog/public/slides/2023-03-15/phpstudy-tokyo-150/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP 勉強会@東京 第150 回 (LT)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2023-03-24/phperkaigi-2023/index.html b/services/blog/public/slides/2023-03-24/phperkaigi-2023/index.html
index 61627082..35f9fb81 100644
--- a/services/blog/public/slides/2023-03-24/phperkaigi-2023/index.html
+++ b/services/blog/public/slides/2023-03-24/phperkaigi-2023/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHPerKaigi 2023 (レギュラートーク)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2023-03-25/phperkaigi-2023-tokens/index.html b/services/blog/public/slides/2023-03-25/phperkaigi-2023-tokens/index.html
index e224d693..a44d00ee 100644
--- a/services/blog/public/slides/2023-03-25/phperkaigi-2023-tokens/index.html
+++ b/services/blog/public/slides/2023-03-25/phperkaigi-2023-tokens/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHPerKaigi 2023 (トークン解説セッション)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2023-04-12/phpstudy-tokyo-151/index.html b/services/blog/public/slides/2023-04-12/phpstudy-tokyo-151/index.html
index 8f494a7e..dd1a51bf 100644
--- a/services/blog/public/slides/2023-04-12/phpstudy-tokyo-151/index.html
+++ b/services/blog/public/slides/2023-04-12/phpstudy-tokyo-151/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP 勉強会@東京 第151 回 (LT)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2023-06-21/phpstudy-tokyo-153/index.html b/services/blog/public/slides/2023-06-21/phpstudy-tokyo-153/index.html
index d2bbfa8f..601e680a 100644
--- a/services/blog/public/slides/2023-06-21/phpstudy-tokyo-153/index.html
+++ b/services/blog/public/slides/2023-06-21/phpstudy-tokyo-153/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP 勉強会@東京 第153 回 (LT)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2023-06-23/phpconfuk-2023-eve/index.html b/services/blog/public/slides/2023-06-23/phpconfuk-2023-eve/index.html
index 6b812c2a..0d2b69f8 100644
--- a/services/blog/public/slides/2023-06-23/phpconfuk-2023-eve/index.html
+++ b/services/blog/public/slides/2023-06-23/phpconfuk-2023-eve/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP カンファレンス福岡 2023 前夜祭 (非公式) (レギュラートーク)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2023-07-26/phpstudy-tokyo-154/index.html b/services/blog/public/slides/2023-07-26/phpstudy-tokyo-154/index.html
index 370f14ae..5cb3b05f 100644
--- a/services/blog/public/slides/2023-07-26/phpstudy-tokyo-154/index.html
+++ b/services/blog/public/slides/2023-07-26/phpstudy-tokyo-154/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP 勉強会@東京 第154 回 (レギュラートーク)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2023-08-24/phpstudy-tokyo-155/index.html b/services/blog/public/slides/2023-08-24/phpstudy-tokyo-155/index.html
index fa2ad120..5c932998 100644
--- a/services/blog/public/slides/2023-08-24/phpstudy-tokyo-155/index.html
+++ b/services/blog/public/slides/2023-08-24/phpstudy-tokyo-155/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP 勉強会@東京 第155 回 (LT)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2023-10-25/phpstudy-tokyo-157/index.html b/services/blog/public/slides/2023-10-25/phpstudy-tokyo-157/index.html
index 76474aab..d52a2e6f 100644
--- a/services/blog/public/slides/2023-10-25/phpstudy-tokyo-157/index.html
+++ b/services/blog/public/slides/2023-10-25/phpstudy-tokyo-157/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP 勉強会@東京 第157 回 (LT)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2024-01-24/phpstudy-tokyo-160/index.html b/services/blog/public/slides/2024-01-24/phpstudy-tokyo-160/index.html
index 47ef33a7..d86a7def 100644
--- a/services/blog/public/slides/2024-01-24/phpstudy-tokyo-160/index.html
+++ b/services/blog/public/slides/2024-01-24/phpstudy-tokyo-160/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP 勉強会@東京 第160 回 (レギュラートーク)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2024-03-08/phperkaigi-2024/index.html b/services/blog/public/slides/2024-03-08/phperkaigi-2024/index.html
index 079cfc2c..0bdc6e77 100644
--- a/services/blog/public/slides/2024-03-08/phperkaigi-2024/index.html
+++ b/services/blog/public/slides/2024-03-08/phperkaigi-2024/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHPerKaigi 2024 (レギュラートーク (40分))|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2024-03-15/ya8-2024/index.html b/services/blog/public/slides/2024-03-15/ya8-2024/index.html
index 32d46232..474ba402 100644
--- a/services/blog/public/slides/2024-03-15/ya8-2024/index.html
+++ b/services/blog/public/slides/2024-03-15/ya8-2024/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>Ya8 2024 (レギュラートーク (60分))|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2024-04-13/phpcon-odawara-2024/index.html b/services/blog/public/slides/2024-04-13/phpcon-odawara-2024/index.html
index b0a63717..02ac5943 100644
--- a/services/blog/public/slides/2024-04-13/phpcon-odawara-2024/index.html
+++ b/services/blog/public/slides/2024-04-13/phpcon-odawara-2024/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP カンファレンス小田原 2024 (レギュラートーク (15分))|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2024-04-25/phpstudy-tokyo-163/index.html b/services/blog/public/slides/2024-04-25/phpstudy-tokyo-163/index.html
index 55ed5f16..ec53163d 100644
--- a/services/blog/public/slides/2024-04-25/phpstudy-tokyo-163/index.html
+++ b/services/blog/public/slides/2024-04-25/phpstudy-tokyo-163/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP 勉強会@東京 第163回 (LT)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2024-07-18/phpstudy-tokyo-166/index.html b/services/blog/public/slides/2024-07-18/phpstudy-tokyo-166/index.html
index 745fb653..ab9cad7c 100644
--- a/services/blog/public/slides/2024-07-18/phpstudy-tokyo-166/index.html
+++ b/services/blog/public/slides/2024-07-18/phpstudy-tokyo-166/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP 勉強会@東京 第166回 (レギュラートーク (20分))|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2024-10-30/phpstudy-tokyo-169/index.html b/services/blog/public/slides/2024-10-30/phpstudy-tokyo-169/index.html
index 86c74b87..cea1939e 100644
--- a/services/blog/public/slides/2024-10-30/phpstudy-tokyo-169/index.html
+++ b/services/blog/public/slides/2024-10-30/phpstudy-tokyo-169/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP 勉強会@東京 第169回 (レギュラートーク (20分))|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2024-11-30/cohackpp/index.html b/services/blog/public/slides/2024-11-30/cohackpp/index.html
index 2f1ebfb5..ac9835e3 100644
--- a/services/blog/public/slides/2024-11-30/cohackpp/index.html
+++ b/services/blog/public/slides/2024-11-30/cohackpp/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>紅白ぺぱ合戦 (LT)|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2025-02-22/phpcon-nagoya-2025/index.html b/services/blog/public/slides/2025-02-22/phpcon-nagoya-2025/index.html
index eb91cd73..d821020a 100644
--- a/services/blog/public/slides/2025-02-22/phpcon-nagoya-2025/index.html
+++ b/services/blog/public/slides/2025-02-22/phpcon-nagoya-2025/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP カンファレンス名古屋 2025 (レギュラートーク (30分))|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2025-03-23/phperkaigi-2025/index.html b/services/blog/public/slides/2025-03-23/phperkaigi-2025/index.html
index 1cd85544..b5efd43f 100644
--- a/services/blog/public/slides/2025-03-23/phperkaigi-2025/index.html
+++ b/services/blog/public/slides/2025-03-23/phperkaigi-2025/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHPerKaigi 2025 (レギュラートーク (40分))|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/2025-04-12/phpcon-odawara-2025/index.html b/services/blog/public/slides/2025-04-12/phpcon-odawara-2025/index.html
index 5c0035df..e391a463 100644
--- a/services/blog/public/slides/2025-04-12/phpcon-odawara-2025/index.html
+++ b/services/blog/public/slides/2025-04-12/phpcon-odawara-2025/index.html
@@ -15,7 +15,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>PHP カンファレンス小田原 2025 (レギュラートーク (20分))|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="single">
<header class="header">
diff --git a/services/blog/public/slides/index.html b/services/blog/public/slides/index.html
index 05a9d016..5984f9b4 100644
--- a/services/blog/public/slides/index.html
+++ b/services/blog/public/slides/index.html
@@ -15,7 +15,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/slides/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>スライド一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/style.css b/services/blog/public/style.css
index a1f2370b..ccbcb685 100644
--- a/services/blog/public/style.css
+++ b/services/blog/public/style.css
@@ -50,13 +50,13 @@ body > footer {
color: #fff;
}
-nav {
+.nav {
padding: 0;
margin: 0.5rem 0 0;
width: 100%;
}
-nav ul {
+.nav ul {
list-style-type: none;
padding: 0;
margin: 0;
@@ -65,7 +65,7 @@ nav ul {
justify-content: center;
}
-nav ul li {
+.nav ul li {
text-transform: uppercase;
font-size: 1.1rem;
margin: 0 1rem;
@@ -73,7 +73,7 @@ nav ul li {
align-items: center;
}
-nav ul li a {
+.nav ul li a {
border: none;
color: #fff;
}
@@ -305,7 +305,7 @@ img {
padding: 1rem 0;
}
- nav ul {
+ .nav ul {
display: none;
}
}
@@ -378,3 +378,43 @@ img {
min-width: 0;
}
}
+
+/* Table of Contents */
+.toc {
+ background-color: #f5f5f5;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ padding: 1.5rem;
+ margin: 2rem 0;
+}
+
+.toc h2 {
+ font-size: 1.2rem;
+ margin: 0 0 1rem 0;
+}
+
+.toc ul {
+ list-style: none;
+ padding-left: 0;
+ margin: 0;
+}
+
+.toc ul ul {
+ padding-left: 1.5rem;
+ margin-top: 0.25rem;
+}
+
+.toc li {
+ margin: 0.25rem 0;
+}
+
+.toc a {
+ color: #333;
+ text-decoration: none;
+ border-bottom: 1px dotted #999;
+}
+
+.toc a:hover {
+ color: #000;
+ border-bottom-color: #000;
+}
diff --git a/services/blog/public/tags/c/index.html b/services/blog/public/tags/c/index.html
index 9b18dbff..c31a9446 100644
--- a/services/blog/public/tags/c/index.html
+++ b/services/blog/public/tags/c/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/c/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「C」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/ci-cd/index.html b/services/blog/public/tags/ci-cd/index.html
index 35dfb375..c6051a89 100644
--- a/services/blog/public/tags/ci-cd/index.html
+++ b/services/blog/public/tags/ci-cd/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/ci-cd/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「CI/CD」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/cohackpp/index.html b/services/blog/public/tags/cohackpp/index.html
index d32228c0..c430c699 100644
--- a/services/blog/public/tags/cohackpp/index.html
+++ b/services/blog/public/tags/cohackpp/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/cohackpp/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「紅白ぺぱ合戦」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/composer/index.html b/services/blog/public/tags/composer/index.html
index 29e57695..9df7c2e1 100644
--- a/services/blog/public/tags/composer/index.html
+++ b/services/blog/public/tags/composer/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/composer/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「Composer」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/conference/index.html b/services/blog/public/tags/conference/index.html
index c99d2089..21c32666 100644
--- a/services/blog/public/tags/conference/index.html
+++ b/services/blog/public/tags/conference/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/conference/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「カンファレンス」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/cpp/index.html b/services/blog/public/tags/cpp/index.html
index f43bca4d..80c606d0 100644
--- a/services/blog/public/tags/cpp/index.html
+++ b/services/blog/public/tags/cpp/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/cpp/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「C++」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/cpp17/index.html b/services/blog/public/tags/cpp17/index.html
index 074e13a5..cceff501 100644
--- a/services/blog/public/tags/cpp17/index.html
+++ b/services/blog/public/tags/cpp17/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/cpp17/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「C++ 17」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/game/index.html b/services/blog/public/tags/game/index.html
index 90be161e..14235d8b 100644
--- a/services/blog/public/tags/game/index.html
+++ b/services/blog/public/tags/game/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/game/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「ゲーム」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/gitlab/index.html b/services/blog/public/tags/gitlab/index.html
index 52382026..7ba27653 100644
--- a/services/blog/public/tags/gitlab/index.html
+++ b/services/blog/public/tags/gitlab/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/gitlab/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「GitLab」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/go/index.html b/services/blog/public/tags/go/index.html
index 46845a4e..be212b3f 100644
--- a/services/blog/public/tags/go/index.html
+++ b/services/blog/public/tags/go/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/go/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「Go」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/http/index.html b/services/blog/public/tags/http/index.html
index 2405a3eb..20c5ded5 100644
--- a/services/blog/public/tags/http/index.html
+++ b/services/blog/public/tags/http/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/http/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「HTTP」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/index.html b/services/blog/public/tags/index.html
index 75c9c539..e138989e 100644
--- a/services/blog/public/tags/index.html
+++ b/services/blog/public/tags/index.html
@@ -14,7 +14,7 @@
<meta name="Hatena::Bookmark" content="nocomment">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/isucon/index.html b/services/blog/public/tags/isucon/index.html
index 95c41023..3ffadd85 100644
--- a/services/blog/public/tags/isucon/index.html
+++ b/services/blog/public/tags/isucon/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/isucon/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「ISUCON」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/macos/index.html b/services/blog/public/tags/macos/index.html
index 52db07de..fe275843 100644
--- a/services/blog/public/tags/macos/index.html
+++ b/services/blog/public/tags/macos/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/macos/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「macOS」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/mncore-challenge/index.html b/services/blog/public/tags/mncore-challenge/index.html
index 304e6737..8312a5cc 100644
--- a/services/blog/public/tags/mncore-challenge/index.html
+++ b/services/blog/public/tags/mncore-challenge/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/mncore-challenge/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「MN-Core Challenge」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/neovim/index.html b/services/blog/public/tags/neovim/index.html
index 76baee83..25639e5d 100644
--- a/services/blog/public/tags/neovim/index.html
+++ b/services/blog/public/tags/neovim/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/neovim/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「Neovim」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/note-to-self/index.html b/services/blog/public/tags/note-to-self/index.html
index 668f812c..b3c07f10 100644
--- a/services/blog/public/tags/note-to-self/index.html
+++ b/services/blog/public/tags/note-to-self/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/note-to-self/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「備忘録」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/ouj/index.html b/services/blog/public/tags/ouj/index.html
index 7492dfea..c273d2ef 100644
--- a/services/blog/public/tags/ouj/index.html
+++ b/services/blog/public/tags/ouj/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/ouj/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「放送大学」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/perl/index.html b/services/blog/public/tags/perl/index.html
index bc03e809..3a18602f 100644
--- a/services/blog/public/tags/perl/index.html
+++ b/services/blog/public/tags/perl/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/perl/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「Perl」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/php/index.html b/services/blog/public/tags/php/index.html
index be4247ad..2360ad3c 100644
--- a/services/blog/public/tags/php/index.html
+++ b/services/blog/public/tags/php/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/php/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「PHP」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/phpcon-nagoya/index.html b/services/blog/public/tags/phpcon-nagoya/index.html
index 03ed71bf..24069ed5 100644
--- a/services/blog/public/tags/phpcon-nagoya/index.html
+++ b/services/blog/public/tags/phpcon-nagoya/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/phpcon-nagoya/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「PHP カンファレンス名古屋」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/phpcon-odawara/index.html b/services/blog/public/tags/phpcon-odawara/index.html
index 0f83da9f..ca648e5b 100644
--- a/services/blog/public/tags/phpcon-odawara/index.html
+++ b/services/blog/public/tags/phpcon-odawara/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/phpcon-odawara/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「PHP カンファレンス小田原」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/phpconfuk/index.html b/services/blog/public/tags/phpconfuk/index.html
index 32eeed1f..a7d49759 100644
--- a/services/blog/public/tags/phpconfuk/index.html
+++ b/services/blog/public/tags/phpconfuk/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/phpconfuk/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「PHP カンファレンス福岡」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/phpconkagawa/index.html b/services/blog/public/tags/phpconkagawa/index.html
index 8767d6c0..6eb26512 100644
--- a/services/blog/public/tags/phpconkagawa/index.html
+++ b/services/blog/public/tags/phpconkagawa/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/phpconkagawa/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「PHP カンファレンス香川」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/phpconokinawa/index.html b/services/blog/public/tags/phpconokinawa/index.html
index 5fe4a379..c173a118 100644
--- a/services/blog/public/tags/phpconokinawa/index.html
+++ b/services/blog/public/tags/phpconokinawa/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/phpconokinawa/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「PHP カンファレンス沖縄」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/phperkaigi/index.html b/services/blog/public/tags/phperkaigi/index.html
index 401da642..dde20b1c 100644
--- a/services/blog/public/tags/phperkaigi/index.html
+++ b/services/blog/public/tags/phperkaigi/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/phperkaigi/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「PHPerKaigi」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/phpkansai/index.html b/services/blog/public/tags/phpkansai/index.html
index 7ef3e30b..3505d741 100644
--- a/services/blog/public/tags/phpkansai/index.html
+++ b/services/blog/public/tags/phpkansai/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/phpkansai/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「PHP カンファレンス関西」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/phpstudy-tokyo/index.html b/services/blog/public/tags/phpstudy-tokyo/index.html
index 9d94037e..fc56171b 100644
--- a/services/blog/public/tags/phpstudy-tokyo/index.html
+++ b/services/blog/public/tags/phpstudy-tokyo/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/phpstudy-tokyo/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「PHP 勉強会@東京」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/piet/index.html b/services/blog/public/tags/piet/index.html
index c18e0a7c..39b045fa 100644
--- a/services/blog/public/tags/piet/index.html
+++ b/services/blog/public/tags/piet/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/piet/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「Piet」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/python/index.html b/services/blog/public/tags/python/index.html
index 38b73bf4..5ee14793 100644
--- a/services/blog/public/tags/python/index.html
+++ b/services/blog/public/tags/python/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/python/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「Python」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/python3/index.html b/services/blog/public/tags/python3/index.html
index 7eb4bbf2..2c451f9c 100644
--- a/services/blog/public/tags/python3/index.html
+++ b/services/blog/public/tags/python3/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/python3/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「Python 3」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/ruby/index.html b/services/blog/public/tags/ruby/index.html
index db3c08ea..f99c3188 100644
--- a/services/blog/public/tags/ruby/index.html
+++ b/services/blog/public/tags/ruby/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/ruby/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「Ruby」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/ruby3/index.html b/services/blog/public/tags/ruby3/index.html
index f63c25e5..249a75d0 100644
--- a/services/blog/public/tags/ruby3/index.html
+++ b/services/blog/public/tags/ruby3/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/ruby3/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「Ruby 3」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/rubykaigi/index.html b/services/blog/public/tags/rubykaigi/index.html
index dec430ad..e6598135 100644
--- a/services/blog/public/tags/rubykaigi/index.html
+++ b/services/blog/public/tags/rubykaigi/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/rubykaigi/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「RubyKaigi」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/rust/index.html b/services/blog/public/tags/rust/index.html
index b4bf6bca..88278247 100644
--- a/services/blog/public/tags/rust/index.html
+++ b/services/blog/public/tags/rust/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/rust/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「Rust」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/scala/index.html b/services/blog/public/tags/scala/index.html
index d3bf19aa..58731f35 100644
--- a/services/blog/public/tags/scala/index.html
+++ b/services/blog/public/tags/scala/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/scala/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「Scala」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/scalamatsuri/index.html b/services/blog/public/tags/scalamatsuri/index.html
index 98ff0b32..9dab71b2 100644
--- a/services/blog/public/tags/scalamatsuri/index.html
+++ b/services/blog/public/tags/scalamatsuri/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/scalamatsuri/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「ScalaMatsuri」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/trick/index.html b/services/blog/public/tags/trick/index.html
index a48433d1..e6eacd44 100644
--- a/services/blog/public/tags/trick/index.html
+++ b/services/blog/public/tags/trick/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/trick/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「TRICK」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/vim/index.html b/services/blog/public/tags/vim/index.html
index f3541939..3cde14e5 100644
--- a/services/blog/public/tags/vim/index.html
+++ b/services/blog/public/tags/vim/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/vim/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「Vim」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/wasm/index.html b/services/blog/public/tags/wasm/index.html
index b00e89fc..d6cfec79 100644
--- a/services/blog/public/tags/wasm/index.html
+++ b/services/blog/public/tags/wasm/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/wasm/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「WebAssembly」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/wireguard/index.html b/services/blog/public/tags/wireguard/index.html
index b8bd03d2..15cb8749 100644
--- a/services/blog/public/tags/wireguard/index.html
+++ b/services/blog/public/tags/wireguard/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/wireguard/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「WireGuard」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/ya8/index.html b/services/blog/public/tags/ya8/index.html
index 3071af8f..68d97a06 100644
--- a/services/blog/public/tags/ya8/index.html
+++ b/services/blog/public/tags/ya8/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/ya8/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「Ya8」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/yaml/index.html b/services/blog/public/tags/yaml/index.html
index 30c57ef0..5c3d0a56 100644
--- a/services/blog/public/tags/yaml/index.html
+++ b/services/blog/public/tags/yaml/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/yaml/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「YAML」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/yapc/index.html b/services/blog/public/tags/yapc/index.html
index 74d54ed5..7173baa3 100644
--- a/services/blog/public/tags/yapc/index.html
+++ b/services/blog/public/tags/yapc/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/yapc/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「YAPC」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/public/tags/zsh/index.html b/services/blog/public/tags/zsh/index.html
index ad9263d3..49558634 100644
--- a/services/blog/public/tags/zsh/index.html
+++ b/services/blog/public/tags/zsh/index.html
@@ -16,7 +16,7 @@
<link rel="alternate" type="application/atom+xml" href="https://blog.nsfisis.dev/tags/zsh/atom.xml">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<title>タグ「Zsh」一覧|REPL: Rest-Eat-Program Loop</title>
- <link rel="stylesheet" href="/style.css?h=899271ae83285479ca025cc358975c53">
+ <link rel="stylesheet" href="/style.css?h=f4a12de8fc55ef1668e211e6c6db4ade">
</head>
<body class="list">
<header class="header">
diff --git a/services/blog/static/style.css b/services/blog/static/style.css
index a1f2370b..ccbcb685 100644
--- a/services/blog/static/style.css
+++ b/services/blog/static/style.css
@@ -50,13 +50,13 @@ body > footer {
color: #fff;
}
-nav {
+.nav {
padding: 0;
margin: 0.5rem 0 0;
width: 100%;
}
-nav ul {
+.nav ul {
list-style-type: none;
padding: 0;
margin: 0;
@@ -65,7 +65,7 @@ nav ul {
justify-content: center;
}
-nav ul li {
+.nav ul li {
text-transform: uppercase;
font-size: 1.1rem;
margin: 0 1rem;
@@ -73,7 +73,7 @@ nav ul li {
align-items: center;
}
-nav ul li a {
+.nav ul li a {
border: none;
color: #fff;
}
@@ -305,7 +305,7 @@ img {
padding: 1rem 0;
}
- nav ul {
+ .nav ul {
display: none;
}
}
@@ -378,3 +378,43 @@ img {
min-width: 0;
}
}
+
+/* Table of Contents */
+.toc {
+ background-color: #f5f5f5;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ padding: 1.5rem;
+ margin: 2rem 0;
+}
+
+.toc h2 {
+ font-size: 1.2rem;
+ margin: 0 0 1rem 0;
+}
+
+.toc ul {
+ list-style: none;
+ padding-left: 0;
+ margin: 0;
+}
+
+.toc ul ul {
+ padding-left: 1.5rem;
+ margin-top: 0.25rem;
+}
+
+.toc li {
+ margin: 0.25rem 0;
+}
+
+.toc a {
+ color: #333;
+ text-decoration: none;
+ border-bottom: 1px dotted #999;
+}
+
+.toc a:hover {
+ color: #000;
+ border-bottom-color: #000;
+}