From 4f617178c28c1e7daeda3c0bcad8cb5b4b7898a4 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Thu, 30 Apr 2026 22:08:56 +0900 Subject: add files --- slides.typ | 387 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 387 insertions(+) create mode 100644 slides.typ (limited to 'slides.typ') diff --git a/slides.typ b/slides.typ new file mode 100644 index 0000000..0f7149f --- /dev/null +++ b/slides.typ @@ -0,0 +1,387 @@ +#import "@preview/touying:0.6.3": * +#import "@preview/codly:1.3.0": * +#import "@preview/cjk-unbreak:0.2.0": remove-cjk-break-space, transform-childs +#import "@preview/fletcher:0.5.8" as fletcher: diagram, node, edge +#import "setoka.typ": * + +#show: codly-init.with() + +#show: remove-cjk-break-space + +#show: setoka-theme.with( + aspect-ratio: "16-9", + config-info( + title: [ + Deep Dive into Xdebug + ], + subtitle: [PHP カンファレンス小田原 2026], + author: [nsfisis (いまむら)], + date: datetime(year: 2026, month: 4, day: 11), + ), + config-common(preamble: { + codly( + fill: rgb("#eee"), + lang-format: none, + number-format: none, + zebra-fill: none, + ) + }) +) + +#set text(font: "BIZ UDPGothic", lang: "ja") +#show raw: set text(font: "UDEV Gothic 35") + +#let box-color-highlight = rgb("#ffa500").lighten(60%) +#let box-color-highlight2 = rgb("#ffa500") +#let box-color-normal = rgb("#eee") + +#title-slide() + +#about-slide() + +#[ + #set align(center + horizon) + #set text(size: 40pt) + Xdebug のステップ実行は\ + どう実現されているのか +] + +--- + +#[ + #set text(size: 30pt) + + Xdebug + + - PHP の拡張 (extension) + - ステップ実行 + - トレース + - プロファイリング + - コードカバレッジ計測 +] + +--- + +#[ + #set align(center + horizon) + + 今回はステップ実行の話 +] + +--- + +#[ + #set align(center + horizon) + + ステップ実行 + + #figure( + image("./ss1.png", width: 60%) + ) +] + +--- + +#[ + #set align(center + horizon) + + ステップ実行 + + #figure( + image("./ss2.png", width: 60%) + ) +] + +--- + +#[ + #set align(center + horizon) + #set text(size: 32pt) + + ステップ実行は \ + どのように実装されているのか? +] + +--- + +#[ + #set align(center + horizon) + #set text(size: 28pt) + + #diagram( + spacing: 8em, + node-stroke: 0.5pt, + node((0, 0), [IDE], shape: rect, fill: box-color-normal, inset: 1em, corner-radius: 4pt), + node((1, 0), [PHP + Xdebug], shape: rect, fill: box-color-normal, inset: 1em, corner-radius: 4pt), + edge((0, 0), (1, 0), "->", shift: 8pt), + edge((1, 0), (0, 0), "->", shift: 8pt), + ) +] + +--- + +#[ + #set align(center + horizon) + #set text(size: 28pt) + + #diagram( + spacing: 8em, + node-stroke: 0.5pt, + node((0, 0), [IDE], shape: rect, fill: box-color-highlight, inset: 1em, corner-radius: 4pt), + node((1, 0), [PHP + Xdebug], shape: rect, fill: box-color-normal, inset: 1em, corner-radius: 4pt), + edge((0, 0), (1, 0), "->", shift: 8pt), + edge((1, 0), (0, 0), "->", shift: 8pt), + ) +] + +--- + +#[ + #set align(center + horizon) + #set text(size: 28pt) + + #diagram( + spacing: 8em, + node-stroke: 0.5pt, + node((0, 0), [IDE], shape: rect, fill: box-color-normal, inset: 1em, corner-radius: 4pt), + node((1, 0), [PHP + Xdebug], shape: rect, fill: box-color-highlight, inset: 1em, corner-radius: 4pt), + edge((0, 0), (1, 0), "->", shift: 8pt), + edge((1, 0), (0, 0), "->", shift: 8pt), + ) +] + +--- + +#[ + #set align(center + horizon) + + #figure( + image("./d78b28e5-0358-4e7e-a32b-fc20106f7547.png", width: 80%) + ) +] + +--- + +#[ + #set align(center + horizon) + #set text(size: 28pt) + + #diagram( + spacing: (0em, 1.5em), + node-stroke: 0.5pt, + node((0, 0), [ソースコード], shape: rect, fill: box-color-normal, inset: 0.5em, corner-radius: 4pt), + node((0, 1), [AST], shape: rect, fill: box-color-normal, inset: 0.5em, corner-radius: 4pt), + node((0, 2), [opcode], shape: rect, fill: box-color-normal, inset: 0.5em, corner-radius: 4pt), + node((0, 3), [実行結果], shape: rect, fill: box-color-normal, inset: 0.5em, corner-radius: 4pt), + edge((0, 0), (0, 1), "->"), + edge((0, 1), (0, 2), "->"), + edge((0, 2), (0, 3), "->"), + ) +] + +--- + +#[ + #set page(margin: (x: 96pt, y: 48pt)) + #set align(center + horizon) + + #set text(size: 24pt) + + #codly-range(2) + ```php +