aboutsummaryrefslogtreecommitdiffhomepage
path: root/services/nuldoc/content/posts/2022-11-19
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-11-27 05:05:04 +0900
committernsfisis <nsfisis@gmail.com>2025-11-27 06:07:46 +0900
commitc754d24b162ecd504f3c4bdd8632045dd0398768 (patch)
tree362323710bb329ad609d379df4e4a429e4229fd2 /services/nuldoc/content/posts/2022-11-19
parentd1014de68415df8f0a5dc3389332e086119c6198 (diff)
downloadnsfisis.dev-c754d24b162ecd504f3c4bdd8632045dd0398768.tar.gz
nsfisis.dev-c754d24b162ecd504f3c4bdd8632045dd0398768.tar.zst
nsfisis.dev-c754d24b162ecd504f3c4bdd8632045dd0398768.zip
feat(nuldoc): Djot to Markdown
Diffstat (limited to 'services/nuldoc/content/posts/2022-11-19')
-rw-r--r--services/nuldoc/content/posts/2022-11-19/phperkaigi-2023-unused-token-quiz-2.md (renamed from services/nuldoc/content/posts/2022-11-19/phperkaigi-2023-unused-token-quiz-2.dj)17
1 files changed, 6 insertions, 11 deletions
diff --git a/services/nuldoc/content/posts/2022-11-19/phperkaigi-2023-unused-token-quiz-2.dj b/services/nuldoc/content/posts/2022-11-19/phperkaigi-2023-unused-token-quiz-2.md
index bd752c2..9502489 100644
--- a/services/nuldoc/content/posts/2022-11-19/phperkaigi-2023-unused-token-quiz-2.dj
+++ b/services/nuldoc/content/posts/2022-11-19/phperkaigi-2023-unused-token-quiz-2.md
@@ -12,8 +12,7 @@ tags = [
date = "2022-11-19"
remark = "公開"
---
-{#intro}
-# はじめに
+# はじめに {#intro}
2023 年 3 月 23 日から 25 日にかけて開催予定 (記事執筆時点) の [PHPerKaigi 2023](https://phperkaigi.jp/2023/) において、
昨年と同様に、弊社 [デジタルサーカス株式会社](https://www.dgcircus.com/) からトークン問題を出題予定である。
@@ -26,8 +25,7 @@ remark = "公開"
その 1 はこちら: [PHPerKaigi 2023: ボツになったトークン問題 その 1](/posts/2022-10-23/phperkaigi-2023-unused-token-quiz-1/)
-{#quiz}
-# 問題
+# 問題 {#quiz}
注意: これはボツ問なので、得られたトークンを PHPerKaigi で入力してもポイントにはならない。
@@ -46,8 +44,7 @@ remark = "公開"
"And Then There Were None" (そして誰もいなくなった) と名付けた作品。変則 quine (自分自身と同じソースコードを出力するプログラム) になっている。
-{#how-to-obtain-token}
-# トークン入手方法
+# トークン入手方法 {#how-to-obtain-token}
実行してみると、次のような出力が得られる。
@@ -96,8 +93,7 @@ P
トークン「#WELOVEPHP」が手に入った。
-{#commentary}
-# 解説
+# 解説 {#commentary}
一見すると同じ行が 10 行並んでいるだけなのにも関わらず、なぜそれぞれの行で出力が変わるのか。ソースコードをコピーして、適当なエディタに貼り付けるとわかりやすい。
@@ -109,7 +105,7 @@ Vim で開くと次のようになる (1 行目を抜粋)。
`&lt;200b&gt;` と表示されているのは、Unicode の U+200b で、ゼロ幅スペースである。
-::: note
+:::note
エディタによっては、ゼロ幅スペースが見えないことがある。VSCode ではブラウザと同様に不可視だった。
:::
@@ -131,8 +127,7 @@ $s='<200b><?php printf((isset($s)?fn($s)=>trim($s,"<200b>"):fn($s)=>chr(strlen($
デコード部以外の部分は、quine のための記述である。
-{#outro}
-# おわりに
+# おわりに {#outro}
[CVE-2021-42574](https://blog.rust-lang.org/2021/11/01/cve-2021-42574.html) に着想を得た作品。この脆弱性は、Unicode の制御文字である left-to-right mark と right-to-left mark を利用し、ソースコードの実際の内容を欺く、というもの。簡単のためゼロ幅スペースを用いることとし、ついでに quine にもするとこうなった。