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 (limited to 'services') 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 1ba5891..aae93d3 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 8c9417f..4497799 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 ecb7846..0484b66 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 0000000..29907d0 --- /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 be9c08d..3e8cd92 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 5ea9b57..5d461ad 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 97a2404..e625518 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 1f255ed..a09adb8 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 23aaf73..b27c6d3 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 504afa4..acaada6 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 39a0a96..a84c6c7 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 6e9c758..613df98 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 f36aa18..091840a 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 905cc23..c4f1304 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 c9f0ab4..1beb05c 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 00f707c..795fefa 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 4b563c2..2058568 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 49749eb..396e2dd 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 ae6b52c..e4496ea 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 96dc3b4..27eb273 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 0029bcc..caa6879 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 3de1d06..1b85e23 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 1ca85f7..81fb45b 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 6c961ac..0795b3a 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 51e571b..ccb924b 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 1670436..0530802 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 cec9e18..e42c63a 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 3fcdf96..98c8048 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 6b0e135..dc5ed8e 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 55a05c1..7c98dda 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 dd7ea83..a78c8a4 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 d90c0af..41ebb8d 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 87b0eae..936747c 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 bf7d249..47750f3 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 c551ccf..016951a 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 e4b9579..d0fbe55 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 220c725..9dd7a94 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 4fa0098..f7700d1 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 2e9c839..3cad45b 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 176be93..af260f0 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 bef9918..20c5a64 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 0b27e94..4653b2a 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 185aa14..b5af0e9 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 92161a3..4adbd10 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 a9f5344..f8178c2 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 5efcb1d..bf2f6d9 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 0855787..96f82be 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 8a314d7..da43afb 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 9abca4f..7d4dfc3 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 9a40d7c..e637a4d 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 ea58be6..40208a7 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 1c4b7f0..304078d 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 d5b8141..50c2312 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 686c9f6..615fea8 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 849154d..e7cd528 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 578868c..e869cd3 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 120074a..b24dfda 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 cc980b1..ad21dd1 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 6142f33..477f806 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 94056e1..94d3075 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 7074f7c..8ee9d64 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 0bb6968..77fcb1f 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 05d8e48..81bbd9e 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 85f7d92..bcd3a69 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 c44cbae..67ecd30 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 9554852..04dc89a 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 cac03b5..72ee696 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 b0e996b..a45da9f 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 b0b6b00..57a1a35 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 819a471..ba80593 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 6740303..1879a0d 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 6162708..35f9fb8 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 e224d69..a44d00e 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 8f494a7..dd1a51b 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 d2bbfa8..601e680 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 6b812c2..0d2b69f 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 370f14a..5cb3b05 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 fa2ad12..5c93299 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 76474aa..d52a2e6 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 47ef33a..d86a7de 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 079cfc2..0bdc6e7 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 32d4623..474ba40 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 b0a6371..02ac594 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 55ed5f1..ec53163 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 745fb65..ab9cad7 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 86c74b8..cea1939 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 2f1ebfb..ac9835e 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 eb91cd7..d821020 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 1cd8554..b5efd43 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 5c0035d..e391a46 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 05a9d01..5984f9b 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 a1f2370..ccbcb68 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 9b18dbf..c31a944 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 35dfb37..c6051a8 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 d32228c..c430c69 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 29e5769..9df7c2e 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 c99d208..21c3266 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 f43bca4..80c606d 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 074e13a..cceff50 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 90be161..14235d8 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 5238202..7ba2765 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 46845a4..be212b3 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 2405a3e..20c5ded 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 75c9c53..e138989 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 95c4102..3ffadd8 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 52db07d..fe27584 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 304e673..8312a5c 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 76baee8..25639e5 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 668f812..b3c07f1 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 7492dfe..c273d2e 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 bc03e80..3a18602 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 be4247a..2360ad3 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 03ed71b..24069ed 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 0f83da9..ca648e5 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 32eeed1..a7d4975 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 8767d6c..6eb2651 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 5fe4a37..c173a11 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 401da64..dde20b1 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 7ef3e30..3505d74 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 9d94037..fc56171 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 c18e0a7..39b045f 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 38b73bf..5ee1479 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 7eb4bbf..2c451f9 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 db3c08e..f99c318 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 f63c25e..249a75d 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 dec430a..e659813 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 b4bf6bc..8827824 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 d3bf19a..58731f3 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 98ff0b3..9dab71b 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 a48433d..e6eacd4 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 f354193..3cde14e 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 b00e89f..d6cfec7 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 b8bd03d..15cb874 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 3071af8..68d97a0 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 30c57ef..5c3d0a5 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 74d54ed..7173baa 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 ad9263d..4955863 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 a1f2370..ccbcb68 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