From 80f0ab31aceec35c9fd04a6387b14349b806f713 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Fri, 4 Jul 2025 19:14:54 +0900 Subject: feat(blog/nuldoc): implement TOC --- .../support-for-communty-is-employee-benefits.dj | 1 + .../zip-function-like-command-paste-command.dj | 1 + .../blog/content/posts/2025-06-14/baba-is-you.dj | 8 +- .../blog/nuldoc-src/components/TableOfContents.tsx | 33 ++++++ services/blog/nuldoc-src/djot/document.ts | 15 +++ services/blog/nuldoc-src/djot/to_html.ts | 117 ++++++++++++++++++++- services/blog/nuldoc-src/pages/PostPage.tsx | 4 + services/blog/public/404.html | 2 +- services/blog/public/about/index.html | 2 +- services/blog/public/index.html | 2 +- services/blog/public/posts/2/index.html | 2 +- .../posts/2021-03-05/my-first-post/index.html | 33 +++++- .../posts/2021-03-30/phperkaigi-2021/index.html | 61 ++++++++++- .../index.html | 2 +- .../python-unbound-local-error/index.html | 2 +- .../ruby-detect-running-implementation/index.html | 2 +- .../ruby-then-keyword-and-case-in/index.html | 25 ++++- .../rust-where-are-primitive-types-from/index.html | 16 ++- .../index.html | 24 ++++- .../vim-swap-order-of-selected-lines/index.html | 33 +++++- .../2022-04-09/phperkaigi-2022-tokens/index.html | 83 ++++++++++++++- .../index.html | 22 +++- .../posts/2022-05-01/phperkaigi-2022/index.html | 30 +++++- .../php-conference-okinawa-code-golf/index.html | 33 +++++- .../index.html | 2 +- .../index.html | 45 +++++++- .../phperkaigi-2023-unused-token-quiz-1/index.html | 22 +++- .../setup-server-for-this-site/index.html | 88 +++++++++++++++- .../phperkaigi-2023-unused-token-quiz-2/index.html | 22 +++- .../phperkaigi-2023-unused-token-quiz-3/index.html | 33 +++++- .../rewrite-this-blog-generator/index.html | 19 +++- .../index.html | 47 ++++++++- .../2023-04-04/phperkaigi-2023-report/index.html | 33 +++++- .../2023-06-25/phpconfuk-2023-report/index.html | 24 ++++- .../compile-php-runtime-to-wasm/index.html | 36 ++++++- .../index.html | 2 +- .../public/posts/2023-12-03/isucon-13/index.html | 36 ++++++- .../posts/2023-12-31/2023-reflections/index.html | 25 ++++- .../index.html | 25 ++++- .../index.html | 28 ++++- .../2024-02-10/yapcjapan-2024-report/index.html | 16 ++- .../2024-02-22/phpkansai-2024-report/index.html | 16 ++- .../2024-03-17/phperkaigi-2024-report/index.html | 27 ++++- .../posts/2024-03-20/my-bucket-list/index.html | 2 +- .../phpcon-odawara-2024-report/index.html | 22 +++- .../pipefail-option-in-gitlab-ci-cd/index.html | 30 +++++- .../index.html | 25 ++++- .../2024-05-11/phpconkagawa-2024-report/index.html | 19 +++- .../2024-06-19/scalamatsuri-2024-report/index.html | 19 +++- .../reparojson-fix-only-json-formatter/index.html | 19 +++- .../index.html | 22 +++- .../posts/2024-09-28/mncore-challenge-1/index.html | 16 ++- .../posts/2024-12-04/cohackpp-report/index.html | 27 ++++- .../posts/2024-12-33/2024-reflections/index.html | 25 ++++- .../phperkaigi-2023-tokens-q1/index.html | 42 +++++++- .../index.html | 30 +++++- .../phpcon-nagoya-2025-report/index.html | 19 +++- .../index.html | 2 +- .../http-1-1-send-multiple-same-headers/index.html | 30 +++++- .../trick-2025-most-ruby-on-ruby-award/index.html | 30 +++++- .../index.html | 16 ++- .../make-tiny-self-hosted-c-compiler/index.html | 38 ++++++- .../public/posts/2025-06-14/baba-is-you/index.html | 55 +++++++++- services/blog/public/posts/3/index.html | 2 +- services/blog/public/posts/4/index.html | 2 +- services/blog/public/posts/5/index.html | 2 +- services/blog/public/posts/6/index.html | 2 +- services/blog/public/posts/index.html | 2 +- .../2023-01-18/phpstudy-tokyo-148/index.html | 2 +- .../2023-02-15/phpstudy-tokyo-149/index.html | 2 +- .../2023-03-15/phpstudy-tokyo-150/index.html | 2 +- .../slides/2023-03-24/phperkaigi-2023/index.html | 2 +- .../2023-03-25/phperkaigi-2023-tokens/index.html | 2 +- .../2023-04-12/phpstudy-tokyo-151/index.html | 2 +- .../2023-06-21/phpstudy-tokyo-153/index.html | 2 +- .../2023-06-23/phpconfuk-2023-eve/index.html | 2 +- .../2023-07-26/phpstudy-tokyo-154/index.html | 2 +- .../2023-08-24/phpstudy-tokyo-155/index.html | 2 +- .../2023-10-25/phpstudy-tokyo-157/index.html | 2 +- .../2024-01-24/phpstudy-tokyo-160/index.html | 2 +- .../slides/2024-03-08/phperkaigi-2024/index.html | 2 +- .../public/slides/2024-03-15/ya8-2024/index.html | 2 +- .../2024-04-13/phpcon-odawara-2024/index.html | 2 +- .../2024-04-25/phpstudy-tokyo-163/index.html | 2 +- .../2024-07-18/phpstudy-tokyo-166/index.html | 2 +- .../2024-10-30/phpstudy-tokyo-169/index.html | 2 +- .../public/slides/2024-11-30/cohackpp/index.html | 2 +- .../2025-02-22/phpcon-nagoya-2025/index.html | 2 +- .../slides/2025-03-23/phperkaigi-2025/index.html | 2 +- .../2025-04-12/phpcon-odawara-2025/index.html | 2 +- services/blog/public/slides/index.html | 2 +- services/blog/public/style.css | 50 ++++++++- services/blog/public/tags/c/index.html | 2 +- services/blog/public/tags/ci-cd/index.html | 2 +- services/blog/public/tags/cohackpp/index.html | 2 +- services/blog/public/tags/composer/index.html | 2 +- services/blog/public/tags/conference/index.html | 2 +- services/blog/public/tags/cpp/index.html | 2 +- services/blog/public/tags/cpp17/index.html | 2 +- services/blog/public/tags/game/index.html | 2 +- services/blog/public/tags/gitlab/index.html | 2 +- services/blog/public/tags/go/index.html | 2 +- services/blog/public/tags/http/index.html | 2 +- services/blog/public/tags/index.html | 2 +- services/blog/public/tags/isucon/index.html | 2 +- services/blog/public/tags/macos/index.html | 2 +- .../blog/public/tags/mncore-challenge/index.html | 2 +- services/blog/public/tags/neovim/index.html | 2 +- services/blog/public/tags/note-to-self/index.html | 2 +- services/blog/public/tags/ouj/index.html | 2 +- services/blog/public/tags/perl/index.html | 2 +- services/blog/public/tags/php/index.html | 2 +- services/blog/public/tags/phpcon-nagoya/index.html | 2 +- .../blog/public/tags/phpcon-odawara/index.html | 2 +- services/blog/public/tags/phpconfuk/index.html | 2 +- services/blog/public/tags/phpconkagawa/index.html | 2 +- services/blog/public/tags/phpconokinawa/index.html | 2 +- services/blog/public/tags/phperkaigi/index.html | 2 +- services/blog/public/tags/phpkansai/index.html | 2 +- .../blog/public/tags/phpstudy-tokyo/index.html | 2 +- services/blog/public/tags/piet/index.html | 2 +- services/blog/public/tags/python/index.html | 2 +- services/blog/public/tags/python3/index.html | 2 +- services/blog/public/tags/ruby/index.html | 2 +- services/blog/public/tags/ruby3/index.html | 2 +- services/blog/public/tags/rubykaigi/index.html | 2 +- services/blog/public/tags/rust/index.html | 2 +- services/blog/public/tags/scala/index.html | 2 +- services/blog/public/tags/scalamatsuri/index.html | 2 +- services/blog/public/tags/trick/index.html | 2 +- services/blog/public/tags/vim/index.html | 2 +- services/blog/public/tags/wasm/index.html | 2 +- services/blog/public/tags/wireguard/index.html | 2 +- services/blog/public/tags/ya8/index.html | 2 +- services/blog/public/tags/yaml/index.html | 2 +- services/blog/public/tags/yapc/index.html | 2 +- services/blog/public/tags/zsh/index.html | 2 +- services/blog/static/style.css | 50 ++++++++- 138 files changed, 1689 insertions(+), 144 deletions(-) create mode 100644 services/blog/nuldoc-src/components/TableOfContents.tsx 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 ( + + ); +} + +function TocEntryComponent({ entry }: { entry: TocEntry }) { + return ( +
  • + {entry.text} + {entry.children.length > 0 && ( + + )} +
  • + ); +} 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; +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 { 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( )} + {doc.toc && doc.toc.entries.length > 0 && ( + + )}

    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 @@ Page Not Found|REPL: Rest-Eat-Program Loop - +
    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 @@ About|REPL: Rest-Eat-Program Loop - +
    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 @@ REPL: Rest-Eat-Program Loop - +
    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 @@ 投稿一覧 (2ページ目)|REPL: Rest-Eat-Program Loop - +
    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 @@ My First Post|REPL: Rest-Eat-Program Loop - +
    @@ -43,6 +43,37 @@

    My First Post

    +

    更新履歴

    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 @@ PHPerKaigi 2021|REPL: Rest-Eat-Program Loop - +
    @@ -55,6 +55,65 @@
    +

    更新履歴

    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 @@ 【C++】 属性構文の属性名にはキーワードが使える|REPL: Rest-Eat-Program Loop - +
    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 @@ 【Python】 クロージャとUnboundLocalError: local variable 'x' referenced before assignment|REPL: Rest-Eat-Program Loop - +
    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 @@ 【Ruby】 自身を実行している処理系の種類を判定する|REPL: Rest-Eat-Program Loop - +
    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 @@ 【Ruby】 then キーワードと case in|REPL: Rest-Eat-Program Loop - +
    @@ -52,6 +52,29 @@
    +

    更新履歴

    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 @@ Rust のプリミティブ型はどこからやって来るか|REPL: Rest-Eat-Program Loop - +
    @@ -49,6 +49,20 @@
    +

    更新履歴

    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 @@ 【Vim】 autocmd events の BufWrite/BufWritePre の違い|REPL: Rest-Eat-Program Loop - +
    @@ -49,6 +49,28 @@
    +

    更新履歴

    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 @@ Vimで選択した行の順番を入れ替える|REPL: Rest-Eat-Program Loop - +
    @@ -49,6 +49,37 @@
    +

    更新履歴

    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 @@ PHPerKaigi 2022 トークン問題の解説|REPL: Rest-Eat-Program Loop - +
    @@ -55,6 +55,87 @@
    +

    更新履歴

    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 @@ term-banner: ターミナルにバナーを表示するツールを書いた|REPL: Rest-Eat-Program Loop - +
    @@ -43,6 +43,26 @@

    term-banner: ターミナルにバナーを表示するツールを書いた

    +

    更新履歴

    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 @@ PHPerKaigi 2022|REPL: Rest-Eat-Program Loop - +
    @@ -55,6 +55,34 @@
    +

    更新履歴

    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 @@ PHP カンファレンス沖縄で出題されたコードゴルフの問題を解いてみた|REPL: Rest-Eat-Program Loop - +
    @@ -55,6 +55,37 @@
    +

    更新履歴

    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 @@ 弊社の PHP Foundation への寄付に寄せて|REPL: Rest-Eat-Program Loop - +
    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 @@ 【PHP】 fizzbuzz を書く。1行あたり2文字で。|REPL: Rest-Eat-Program Loop - +
    @@ -49,6 +49,49 @@
    +

    更新履歴

    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 @@ PHPerKaigi 2023: ボツになったトークン問題 その 1|REPL: Rest-Eat-Program Loop - +
    @@ -52,6 +52,26 @@
    +

    更新履歴

    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 @@ 【備忘録】 このサイト用の VPS をセットアップしたときのメモ|REPL: Rest-Eat-Program Loop - +
    @@ -49,6 +49,92 @@
    +

    更新履歴

    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 @@ PHPerKaigi 2023: ボツになったトークン問題 その 2|REPL: Rest-Eat-Program Loop - +
    @@ -52,6 +52,26 @@
    +

    更新履歴

    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 @@ PHPerKaigi 2023: ボツになったトークン問題 その 3|REPL: Rest-Eat-Program Loop - +
    @@ -52,6 +52,37 @@
    +

    更新履歴

    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 @@ このブログのジェネレータを書き直した|REPL: Rest-Eat-Program Loop - +
    @@ -43,6 +43,23 @@

    このブログのジェネレータを書き直した

    +

    更新履歴

    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 @@ PNG 画像の最小構成エンコーダを実装する|REPL: Rest-Eat-Program Loop - +
    @@ -43,6 +43,51 @@

    PNG 画像の最小構成エンコーダを実装する

    +

    更新履歴

    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 @@ PHPerKaigi 2023 参加レポ|REPL: Rest-Eat-Program Loop - +
    @@ -55,6 +55,37 @@
    +

    更新履歴

    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 @@ PHP カンファレンス福岡 2023 参加レポ|REPL: Rest-Eat-Program Loop - +
    @@ -55,6 +55,28 @@
    +

    更新履歴

    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 @@ PHP の処理系を Emscripten で WebAssembly にコンパイルする|REPL: Rest-Eat-Program Loop - +
    @@ -52,6 +52,40 @@
    +

    更新履歴

    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 @@ 放送大学に入学しました|REPL: Rest-Eat-Program Loop - +
    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 @@ ISUCON 13 に参加した|REPL: Rest-Eat-Program Loop - +
    @@ -49,6 +49,40 @@
    +

    更新履歴

    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 @@ 2023年の振り返り|REPL: Rest-Eat-Program Loop - +
    @@ -43,6 +43,29 @@

    2023年の振り返り

    +

    更新履歴

    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 @@ 【Neovim】 空の PHP ファイルに namespace 宣言を挿入する|REPL: Rest-Eat-Program Loop - +
    @@ -52,6 +52,29 @@
    +

    更新履歴

    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 @@ 【備忘録】 個人用サーバに WireGuard を導入する|REPL: Rest-Eat-Program Loop - +
    @@ -52,6 +52,32 @@
    +

    更新履歴

    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 @@ YAPC::Hiroshima 2024 参加レポ|REPL: Rest-Eat-Program Loop - +
    @@ -55,6 +55,20 @@
    +

    更新履歴

    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 @@ PHPカンファレンス関西 2024 参加レポ|REPL: Rest-Eat-Program Loop - +
    @@ -55,6 +55,20 @@
    +

    更新履歴

    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 @@ PHPerKaigi 2024 参加レポ|REPL: Rest-Eat-Program Loop - +
    @@ -55,6 +55,31 @@
    +

    更新履歴

    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 @@ 死ぬまでに作る自作○○一覧あるいは人生の TODO リスト|REPL: Rest-Eat-Program Loop - +
    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 @@ PHP カンファレンス小田原 2024 参加レポ|REPL: Rest-Eat-Program Loop - +
    @@ -55,6 +55,26 @@
    +

    更新履歴

    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 @@ 【GitLab】 GitLab CI/CD 上での bash/sh は pipefail が有効になっている|REPL: Rest-Eat-Program Loop - +
    @@ -52,6 +52,34 @@
    +

    更新履歴

    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 @@ 【Zsh】 Composer のカスタムコマンドに対する Zsh 補完で引数にファイルを補完させる|REPL: Rest-Eat-Program Loop - +
    @@ -55,6 +55,29 @@
    +

    更新履歴

    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 @@ PHP カンファレンス香川 2024 参加レポ|REPL: Rest-Eat-Program Loop - +
    @@ -55,6 +55,23 @@
    +

    更新履歴

    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 @@ ScalaMatsuri 2024 参加レポ|REPL: Rest-Eat-Program Loop - +
    @@ -55,6 +55,23 @@
    +

    更新履歴

    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 @@ reparojson: 文法エラーを直すだけの JSON フォーマッタを作った|REPL: Rest-Eat-Program Loop - +
    @@ -52,6 +52,23 @@
    +

    更新履歴

    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 @@ 【Go】 text/template の with や range の内側から外側の "." にアクセスする|REPL: Rest-Eat-Program Loop - +
    @@ -49,6 +49,26 @@
    +

    更新履歴

    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 @@ MN-Core Challenge #1 参加レポ|REPL: Rest-Eat-Program Loop - +
    @@ -49,6 +49,20 @@
    +

    更新履歴

    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 @@ 紅白ぺぱ合戦に参加&LTしました|REPL: Rest-Eat-Program Loop - +
    @@ -52,6 +52,31 @@
    +

    更新履歴

    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 @@ 2024年の振り返り|REPL: Rest-Eat-Program Loop - +
    @@ -43,6 +43,29 @@

    2024年の振り返り

    +

    更新履歴

    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 @@ PHPerKaigi 2023 トークン問題解説 (1/5)|REPL: Rest-Eat-Program Loop - +
    @@ -58,6 +58,46 @@
    +

    更新履歴

    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 @@ 【YAML】YAML 1.1 と YAML 1.2 の主な破壊的変更|REPL: Rest-Eat-Program Loop - +
    @@ -49,6 +49,34 @@
    +

    更新履歴

    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 @@ PHP カンファレンス名古屋 2025 参加レポ|REPL: Rest-Eat-Program Loop - +
    @@ -55,6 +55,23 @@
    +

    更新履歴

    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 @@ zip 関数のようなコマンド paste|REPL: Rest-Eat-Program Loop - +
    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 @@ 【HTTP】HTTP/1.1 で同じヘッダを2回送るとどうなるか|REPL: Rest-Eat-Program Loop - +
    @@ -49,6 +49,34 @@
    +

    更新履歴

    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 @@ RubyKaigi 2025 の TRICK で入賞した|REPL: Rest-Eat-Program Loop - +
    @@ -58,6 +58,34 @@
    +

    更新履歴

    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 @@ 【Composer】 composer-patches v2 では macOS でも GNU patch のインストールが不要になる (予定)|REPL: Rest-Eat-Program Loop - +
    @@ -55,6 +55,20 @@
    +

    更新履歴

    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 @@ セルフホスト可能な C コンパイラを作った|REPL: Rest-Eat-Program Loop - +
    @@ -49,6 +49,42 @@
    +

    更新履歴

    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 @@ 最高のパズルゲーム Baba Is You をやれ|REPL: Rest-Eat-Program Loop - +
    @@ -49,6 +49,59 @@
    +

    更新履歴

    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 @@ 投稿一覧 (3ページ目)|REPL: Rest-Eat-Program Loop - +
    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 @@ 投稿一覧 (4ページ目)|REPL: Rest-Eat-Program Loop - +
    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 @@ 投稿一覧 (5ページ目)|REPL: Rest-Eat-Program Loop - +
    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 @@ 投稿一覧 (6ページ目)|REPL: Rest-Eat-Program Loop - +
    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 @@ 投稿一覧 (1ページ目)|REPL: Rest-Eat-Program Loop - +
    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 @@ PHP 勉強会@東京 第148 回 (LT)|REPL: Rest-Eat-Program Loop - +
    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 @@ PHP 勉強会@東京 第149 回 (LT)|REPL: Rest-Eat-Program Loop - +
    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 @@ PHP 勉強会@東京 第150 回 (LT)|REPL: Rest-Eat-Program Loop - +
    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 @@ PHPerKaigi 2023 (レギュラートーク)|REPL: Rest-Eat-Program Loop - +
    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 @@ PHPerKaigi 2023 (トークン解説セッション)|REPL: Rest-Eat-Program Loop - +
    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 @@ PHP 勉強会@東京 第151 回 (LT)|REPL: Rest-Eat-Program Loop - +
    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 @@ PHP 勉強会@東京 第153 回 (LT)|REPL: Rest-Eat-Program Loop - +
    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 @@ PHP カンファレンス福岡 2023 前夜祭 (非公式) (レギュラートーク)|REPL: Rest-Eat-Program Loop - +
    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 @@ PHP 勉強会@東京 第154 回 (レギュラートーク)|REPL: Rest-Eat-Program Loop - +
    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 @@ PHP 勉強会@東京 第155 回 (LT)|REPL: Rest-Eat-Program Loop - +
    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 @@ PHP 勉強会@東京 第157 回 (LT)|REPL: Rest-Eat-Program Loop - +
    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 @@ PHP 勉強会@東京 第160 回 (レギュラートーク)|REPL: Rest-Eat-Program Loop - +
    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 @@ PHPerKaigi 2024 (レギュラートーク (40分))|REPL: Rest-Eat-Program Loop - +
    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 @@ Ya8 2024 (レギュラートーク (60分))|REPL: Rest-Eat-Program Loop - +
    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 @@ PHP カンファレンス小田原 2024 (レギュラートーク (15分))|REPL: Rest-Eat-Program Loop - +
    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 @@ PHP 勉強会@東京 第163回 (LT)|REPL: Rest-Eat-Program Loop - +
    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 @@ PHP 勉強会@東京 第166回 (レギュラートーク (20分))|REPL: Rest-Eat-Program Loop - +
    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 @@ PHP 勉強会@東京 第169回 (レギュラートーク (20分))|REPL: Rest-Eat-Program Loop - +
    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 @@ 紅白ぺぱ合戦 (LT)|REPL: Rest-Eat-Program Loop - +
    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 @@ PHP カンファレンス名古屋 2025 (レギュラートーク (30分))|REPL: Rest-Eat-Program Loop - +
    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 @@ PHPerKaigi 2025 (レギュラートーク (40分))|REPL: Rest-Eat-Program Loop - +
    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 @@ PHP カンファレンス小田原 2025 (レギュラートーク (20分))|REPL: Rest-Eat-Program Loop - +
    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 @@ スライド一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「C」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「CI/CD」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「紅白ぺぱ合戦」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「Composer」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「カンファレンス」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「C++」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「C++ 17」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「ゲーム」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「GitLab」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「Go」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「HTTP」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「ISUCON」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「macOS」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「MN-Core Challenge」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「Neovim」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「備忘録」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「放送大学」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「Perl」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「PHP」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「PHP カンファレンス名古屋」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「PHP カンファレンス小田原」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「PHP カンファレンス福岡」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「PHP カンファレンス香川」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「PHP カンファレンス沖縄」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「PHPerKaigi」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「PHP カンファレンス関西」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「PHP 勉強会@東京」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「Piet」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「Python」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「Python 3」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「Ruby」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「Ruby 3」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「RubyKaigi」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「Rust」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「Scala」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「ScalaMatsuri」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「TRICK」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「Vim」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「WebAssembly」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「WireGuard」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「Ya8」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「YAML」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「YAPC」一覧|REPL: Rest-Eat-Program Loop - +
    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 @@ タグ「Zsh」一覧|REPL: Rest-Eat-Program Loop - +
    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; +} -- cgit v1.2.3-70-g09d2