From 069ea120e5dda665b39c42db53be6f718454c1ab Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 17 Jun 2023 14:38:30 +0900 Subject: スライドを追加 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 16 +++++++- slide.pdf | Bin 134949 -> 178050 bytes slide.saty | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 136 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 5bb5b4d..6524eb6 100644 --- a/README.md +++ b/README.md @@ -1 +1,15 @@ -https://phpstudy.connpass.com/event/TODO/ +https://phpstudy.connpass.com/event/286669/ + +# Spec + +https://pubs.opengroup.org/onlinepubs/9699919799 + +> ### 3.403 Text File +> +> A file that contains characters organized into zero or more lines. (略) + +--- + +> ### 3.206 Line +> +> A sequence of zero or more non- \ characters plus a terminating \ character. diff --git a/slide.pdf b/slide.pdf index f566ab7..c29095b 100644 Binary files a/slide.pdf and b/slide.pdf differ diff --git a/slide.saty b/slide.saty index dbed3ff..553b6c0 100644 --- a/slide.saty +++ b/slide.saty @@ -24,10 +24,11 @@ document '< +make-title(| title = { - |TODO + |テキストファイルの末尾には + |改行コードを入れよう |}; author = {|nsfisis (いまむら)|}; - date = {|第TODO回PHP勉強会@東京|}; + date = {|第153回PHP勉強会@東京|}; |); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -47,8 +48,125 @@ document '< %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +frame{なぜ末尾に改行を入れるべきか: その1}< + +fig-center(vconcat [ + gap 75pt; + textbox?:(set-font-size 24pt){A: そういう定義だから}; + ]); + > + + +frame{なぜ末尾に改行を入れるべきか: その1}< + +fig-center(gap 25pt); + +p{ + POSIX による\emph{「テキストファイル」の定義}: + } + +p{ + A file that contains characters organized into zero or more lines. ... + } + +p{ + \emph{0個以上の「行」で構成されたファイル} + } + > + + +frame{なぜ末尾に改行を入れるべきか: その1}< + +fig-center(gap 25pt); + +p{ + POSIX による\emph{「テキストファイル」の定義}: + } + +p{ + A file that contains characters organized into zero or more lines. ... + } + +p{ + \emph{0個以上の「行」で構成されたファイル} + } + +fig-center(gap 25pt); + +p{ + POSIX による\emph{「行」の定義}: + } + +p{ + A sequence of zero or more non-\ characters plus a terminating \ character. + } + +p{ + \emph{改行でない文字が0個以上並んだもの + 改行文字} + } + > + + +frame{なぜ末尾に改行を入れるべきか: その1}< + +fig-center(vconcat [ + gap 75pt; + textbox{POSIX の定義では}; + gap 10pt; + textbox?:(set-font-size 24pt){末尾に改行のないファイルは}; + gap 10pt; + textbox?:(set-font-size 24pt){テキストファイルに非ず}; + ]); + > + + +frame{なぜ末尾に改行を入れるべきか: その1}< + +fig-center(gap 25pt); + +p{ + POSIX の定義に従わないと何が困るのか? + } + +fig-center(gap 25pt); + +p{ + 一部のコマンドの一部の実装が期待どおりに動作しない + } + +p{ + 例: \code(`wc`); + } + > + + +frame{なぜ末尾に改行を入れるべきか: その2}< + +fig-center(vconcat [ + gap 75pt; + textbox?:(set-font-size 24pt){A: バージョン管理システムと}; + gap 10pt; + textbox?:(set-font-size 24pt){相性が悪いから}; + ]); + > + + +frame{なぜ末尾に改行を入れるべきか: その2}< + +fig-center(gap 25pt); + +p{a[改行]} + +p{b[改行]} + +p{c} + > + + +frame{なぜ末尾に改行を入れるべきか: その2}< + +fig-center(gap 25pt); + +p{a[改行]} + +p{a[改行]} + +p{c} + +fig-center(gap 25pt); + +p{ + 新しく「d」を追加すると、 + } + +p{a[改行]} + +p{b[改行]} + +p{c[改行]} + +p{d} + +fig-center(gap 25pt); + +p{ + 変更に無関係な「c」にまで差分が生じる + } + > + + +frame{なぜ末尾に改行を入れるべきか: その1}< + +fig-center(vconcat [ + gap 75pt; + textbox?:(set-font-size 24pt){レビューの負担を軽くするため、}; + gap 10pt; + textbox?:(set-font-size 24pt){無意味な差分は無くすべき}; + ]); + > + +frame{まとめ}< - +p{TODO} + +fig-center(vconcat [ + gap 75pt; + textbox?:(set-font-size 24pt){テキストファイルの末尾には改行コードを入れよう}; + gap 30pt; + textbox?:(set-font-size 24pt){定義上の理由、実用上の理由から}; + ]); > > -- cgit v1.2.3-70-g09d2