[๐ ] GitHub Pages ๋ธ๋ก๊ทธ ๊ฐ์ฃผ๋ฅผ ํ์ ์ผ๋ก ๋ฐ๊พธ๊ธฐ
โจ GPT-5.5์ ์์ฝ ใ
Kramdown ๊ธฐ๋ณธ ๊ฐ์ฃผ๊ฐ ๋ณธ๋ฌธ์์ ๋งจ ์๋ ์ฐธ๊ณ ์๋ฃ๋ก ์ด๋ํ๋ ๋ถํธํจ์ ์ค์ด๊ธฐ ์ํด, ๊ธฐ์กด ๊ฐ์ฃผ ๊ตฌ์กฐ๋ ์ ์งํ๋ฉด์ ๋ณธ๋ฌธ ๊ฐ์ฃผ ๋งํฌ๋ฅผ [1] ํํ์ ํ์ UI๋ก ๋ฐ๊พผ ๊ธฐ๋ก.
๊ฐ์ฃผ๋ฅผ ์ ๋๋ก ์ฐ๊ธฐ ์์ํ๋ ๋ฐ๋ก ๋ถํธํจ์ด ๋ณด์๋ค.
๋ธ๋ก๊ทธ ๊ธ์์ ์ธ๋ถ ๊ธฐ์ฌ๋ ์๋ฃ๋ฅผ ๋ค๋ฃฐ ๋๋ ์ด์ ๋ณธ๋ฌธ ์์ Kramdown footnote๋ฅผ ๋ถ์ธ๋ค. ํนํ ํฌํ์ฉ์ง ๋ถ์กฑ์ด๋ผ๋ ์ด์ ์ ์ฌ๊ฑด, ๋ถ๋ ธ, ๊ทน๋จ์ฃผ์์์ ํํด ๊ฐ์ ๊ธ์ ์ฌ์ค๊ด๊ณ๊ฐ ๋ง์์ ๊ฐ์ฃผ๊ฐ ๊ฝค ๋ง์๋ค.
๊ทธ๋ฐ๋ฐ ๋ง์ ์ฝ์ด๋ณด๋ ํ๋ฆ์ด ๋ณ๋ก์๋ค.
๋ณธ๋ฌธ์์ ๊ฐ์ฃผ ๋ฒํธ๋ฅผ ๋๋ฅด๋ฉด ํ์
์ด ๋จ๋ ๊ฒ ์๋๋ผ, ํ์ด์ง ๋งจ ์๋ ์ฐธ๊ณ ์๋ฃ ์์ญ์ผ๋ก ๋ด๋ ค๊ฐ๋ค. ๊ธฐ๋ณธ ๋์์ผ๋ก๋ ๋ง๋ค. Kramdown์ด ์๋ ๊ทธ๋ ๊ฒ ๊ฐ์ฃผ๋ฅผ ๋ง๋ ๋ค. ํ์ง๋ง ๊ธด ๊ธ์์๋ ์ฝ๋ ์์น๋ฅผ ์๊ธฐ ์ฝ๋ค.
๊ฐ์ฃผ ๋ฒํธ ๋ชจ์๋ ์ ๋งคํ๋ค.
1 2 3 4์ฒ๋ผ ์์ ์ซ์๋ง ๋ถ์ด ์์ผ๋ฉด ๋๋ฅด๊ธฐ ์ด๋ ต๋ค. ํนํ ๋ชจ๋ฐ์ผ์์๋ ๋ ๊ทธ๋ ๋ค. ๋ณธ๋ฌธ ์ค๊ฐ์ ๋ ์๋ ์์ ์ซ์๋ฅผ ์ ํํ ๋๋ฅด๋ ์ผ์ ์๊ฐ๋ณด๋ค ์ ๊ฒฝ ์ฐ์ธ๋ค.
๊ทธ๋์ ์ด๋ฒ์๋ ๊ฐ์ฃผ ์์คํ ์ ์กฐ๊ธ ๋ฐ๊ฟจ๋ค.
๋ณธ๋ฌธ์์๋ [1], [2], [3]์ฒ๋ผ ๋ณด์ด๊ณ , ๋๋ฅด๋ฉด ๋งจ ์๋๋ก ์ด๋ํ์ง ์๊ณ ์์ ํ์
์ด ๋จ๊ฒ ๋ง๋ค์๋ค.
Kramdown ๊ตฌ์กฐ๋ ๊ฑด๋๋ฆฌ์ง ์์๋ค
์ฒ์๋ถํฐ Markdown ๋ฌธ๋ฒ์ด๋ footnote ์์ฑ ๋ฐฉ์์ ๋ฐ๊พธ๊ณ ์ถ์ง๋ ์์๋ค.
์ง๊ธ ๊ธ๋ค์ ์ด๋ฐ ์์ผ๋ก ์ด๋ค.
๋ณธ๋ฌธ ๋ฌธ์ฅ.[^source]
[^source]: ์๋ฃ ์ค๋ช
๊ณผ ๋งํฌ
์ด ๋ฐฉ์์ ๊ณ์ ์ ์งํ๋ ๊ฒ ๋ง๋ค.
๊ธ์ ์ฐ๋ ์
์ฅ์์๋ Markdown ํ์ค์ ๊ฐ๊น์ด ๋ฌธ๋ฒ์ ์ฐ๊ณ , Jekyll์ด ๋น๋ํ ๋ Kramdown์ด ๊ฐ์ฃผ HTML์ ๋ง๋ ๋ค. ํ๋จ ์ฐธ๊ณ ์๋ฃ ์์ญ๋ ๊ทธ๋๋ก ๋จ๋๋ค. ์ด ๊ตฌ์กฐ๊น์ง ๊ฐ์์์ผ๋ฉด ๊ธฐ์กด ๊ธ ์ ์ฒด์ ๋ฒ์ญ ๊ธ๊น์ง ๊ฑด๋๋ ค์ผ ํ๋ค.
๊ธฐ์ค์ ๋จ์ํ๋ค.
๊ธ ์์ฑ ๋ฐฉ์์ ๊ทธ๋๋ก ๋๋ค.
Kramdown์ด ๋ง๋ ํ๋จ ๊ฐ์ฃผ๋ ๊ทธ๋๋ก ๋๋ค.
๋ณธ๋ฌธ ๊ฐ์ฃผ ๋งํฌ์ ํ์์ ํด๋ฆญ ๋์๋ง ๋ฐ๊พผ๋ค.
์ฆ, ์๋ณธ ๋ฐ์ดํฐ์ fallback์ ์ ์งํ๊ณ , ์ฝ๋ ๊ฒฝํ๋ง ๊ฐ์ ํ๋ ์ชฝ์ด๋ค.
๊ฐ์ฃผ ๋ฒํธ๋ฅผ [1]์ฒ๋ผ ๋ณด์ด๊ฒ ํ๋ค
๋จผ์ CSS๋ฅผ ๋ฐ๊ฟจ๋ค.
Kramdown์ ๋ณธ๋ฌธ ๊ฐ์ฃผ ๋งํฌ์ a.footnote ํด๋์ค๋ฅผ ๋ถ์ธ๋ค. ์ด ๋งํฌ๋ฅผ ์์ inline-flex ๋ฒํผ์ฒ๋ผ ๋ง๋ค๊ณ , ::before, ::after๋ก ๋๊ดํธ๋ฅผ ๋ถ์๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๋ณธ๋ฌธ์์๋ ์ซ์ ํ๋๊ฐ ์๋๋ผ ์ด๋ฐ ๋ชจ์์ผ๋ก ๋ณด์ธ๋ค.
[1] [2] [3]
์๊ฐ๋ฝ์ผ๋ก ๋๋ฅผ ์์ญ๋ ์กฐ๊ธ ๋ํ๋ค.
ํฌ๊ฒ ํ๋ ๋ฒํผ์ด๋ฉด ๋ณธ๋ฌธ ๋ฆฌ๋ฌ์ด ๊นจ์ง๋ค. ๊ทธ๋ ๋ค๊ณ ์์ ์ฒ๋ผ ์์ ์ซ์๋ง ๋๋ฉด ํด๋ฆญํ๊ธฐ ์ด๋ ต๋ค. ๊ทธ๋์ ํ ๋๋ฆฌ์ ๋ฐฐ๊ฒฝ์ ์์ฃผ ์๊ฒ ๋ฃ๊ณ , ๊ธ์ ํฌ๊ธฐ๋ ๋ณธ๋ฌธ๋ณด๋ค ์๊ฒ ์ ์งํ๋ค.
๋ฐ์ ๋ชจ๋์ ์ด๋์ด ๋ชจ๋๊ฐ ๋ ๋ค ์์ผ๋ฏ๋ก ์์ ํ๋์ฝ๋ฉํ์ง ์๊ณ ๊ธฐ์กด Sass ๋ณ์์ ๋ง์ท๋ค.
$primary-color
$background-color
$border-color
$text-color
์ด ๋ธ๋ก๊ทธ๋ ์ด๋ฏธ customOverride.scss๋ฅผ ๋ฐ์ ์คํจ๊ณผ ์ด๋์ด ์คํจ ๋ค์์ ๊ณตํต์ผ๋ก ๋ถ๋ฌ์จ๋ค. ๊ทธ๋์ ํ
๋ง ์๋ณธ ํ์ผ์ ์ง์ ๊ณ ์น์ง ์๊ณ _sass/custom/customOverride.scss์ ๊ฐ์ฃผ ์คํ์ผ์ ์ถ๊ฐํ๋ค.
ํด๋ฆญํ๋ฉด ํ์ ์ ๋ง๋ ๋ค
๋ค์์ JavaScript๋ค.
๊ธฐ์กด์๋ ๋ชจ๋ #hash ๋งํฌ์ SmoothScroll์ด ๊ฑธ๋ ค ์์๋ค. ๊ฐ์ฃผ ๋งํฌ๋ ๊ฒฐ๊ตญ #fn:...์ผ๋ก ๊ฐ๋ ๋ด๋ถ ๋งํฌ๋ผ์, ๋๋ฅด๋ฉด ํ์ด์ง ์๋์ชฝ์ผ๋ก ๋ถ๋๋ฝ๊ฒ ์ด๋ํ๋ค.
์ด๋ฒ์๋ ๋ณธ๋ฌธ ์์ ๊ฐ์ฃผ ๋งํฌ๋ง ๋จผ์ ๊ฐ๋ก์ฑ๋ค.
๋์์ ์ด๋ ๋ค.
.page__content a.footnote[href^="#fn"]
ํด๋ฆญํ๋ฉด ์๋ ํด์ ์ด๋์ ๋ง๊ณ , ํ๋จ ๊ฐ์ฃผ ๋ชฉ๋ก์ ์ด๋ฏธ ๋ ๋๋ง๋ ๋ด์ฉ์ ์ฐพ์์ ๋ณต์ ํ๋ค. ํ๋จ ๊ฐ์ฃผ ์์๋ ๋ณธ๋ฌธ์ผ๋ก ๋์๊ฐ๋ reversefootnote ๋งํฌ๊ฐ ๋ค์ด ์๋๋ฐ, ํ์
์์์๋ ํ์ ์์ผ๋ ์ ๊ฑฐํ๋ค.
ํ๋ฆ์ ์ด๋ ๋ค.
๋ณธ๋ฌธ ๊ฐ์ฃผ ํด๋ฆญ
-> href์์ target id ์ฝ๊ธฐ
-> ํ๋จ footnote li๋ฅผ ์ฐพ๊ธฐ
-> ๋ด์ฉ์ clone
-> reversefootnote ์ ๊ฑฐ
-> ํ์
์ ์ฝ์
-> ๊ฐ์ฃผ ๋งํฌ ๊ทผ์ฒ์ ์์น ๊ณ์ฐ
ํด์๋ฅผ ๋ฐ๊พธ์ง ์๊ธฐ ๋๋ฌธ์ URL๋ ์ง์ ๋ถํด์ง์ง ์๋๋ค. ํ์ด์ง ๋งจ ์๋๋ก ๋ด๋ ค๊ฐ์ง๋ ์๋๋ค.
๋ซ๋ ๋ฐฉ๋ฒ์ ์ธ ๊ฐ์ง๋ก ํ๋ค.
๊ฐ์ ๊ฐ์ฃผ ๋ค์ ํด๋ฆญ
ํ์
๋ฐ ํด๋ฆญ
Esc ๋๋ ๋ซ๊ธฐ ๋ฒํผ
ํค๋ณด๋ ์ฌ์ฉ์ ์ํด aria-haspopup="dialog"์ aria-expanded๋ ๋ถ์๋ค. ํ์
์์ฒด์๋ role="dialog"๋ฅผ ๋ฃ์๋ค. ์ด๊ฒ ์๋ฒฝํ ์ ๊ทผ์ฑ ์ปดํฌ๋ํธ๋ผ๊ณ ๋งํ ์ ๋๋ ์๋์ง๋ง, ์ต์ํ ๊ทธ๋ฅ ๋ ์๋ div๋ณด๋ค๋ ๋ซ๋ค.
๋ชจ๋ฐ์ผ์์ ํ๋ฉด ๋ฐ์ผ๋ก ๋๊ฐ์ง ์๊ฒ ํ๋ค
๊ฐ์ฃผ ํ์ ์ ์์น ๊ณ์ฐ์ด ์ค์ํ๋ค.
๋ณธ๋ฌธ ๋งํฌ ๋ฐ๋ก ์๋์ ๋์ฐ๋ฉด ์์ฐ์ค๋ฝ์ง๋ง, ํ๋ฉด ์ค๋ฅธ์ชฝ ๋์ด๋ ๋ชจ๋ฐ์ผ ํญ์์๋ ์ฝ๊ฒ ์์ ธ๋๊ฐ๋ค.
๊ทธ๋์ ์์น๋ฅผ ์ก์ ๋ viewport ์์ชฝ margin์ ๊ฐ์ ๋ก ๋๋ค.
์ผ์ชฝ์ ์ต์ 12px
์ค๋ฅธ์ชฝ๋ ์ต์ 12px
์๋ ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ฉด ์์ชฝ์ผ๋ก ๋์ฐ๊ธฐ
๊ทธ๋๋ ๋ถ์กฑํ๋ฉด viewport ์์ชฝ์ผ๋ก clamp
ํ์ ํญ๋ ๊ณ ์ ํญ์ด ์๋๋ผ ์ด๋ ๊ฒ ์ก์๋ค.
width: min(30rem, calc(100vw - 1.5rem));
๋ฐ์คํฌํฑ์์๋ ๋๋ฌด ๋์ด์ง์ง ์๊ณ , ๋ชจ๋ฐ์ผ์์๋ ํ๋ฉด๋ณด๋ค ์ปค์ง์ง ์๋๋ค.
๊ธด ๊ฐ์ฃผ๋ฅผ ๋๋นํด max-height์ overflow: auto๋ ๋ฃ์๋ค. ์ธ๋ถ ๊ธฐ์ฌ ์ ๋ชฉ์ด ๊ธธ๊ฑฐ๋ ๋งํฌ๊ฐ ๋ถ์ด๋ ํ์
์ด ํ๋ฉด์ ๋ค ๋ฎ์ง ์๊ฒ ํ๋ ค๋ ์๋๋ค.
์์ถ ํ์ผ๋ ๊ฐ์ด ๊ฐฑ์ ํ๋ค
์ด ๋ธ๋ก๊ทธ๋ assets/js/_main.js๊ฐ ์์ค์ด๊ณ , ์ค์ ๋ฐฐํฌ์์๋ assets/js/main.min.js๋ฅผ ์ฝ๋๋ค.
๊ทธ๋์ JS๋ฅผ ๊ณ ์น ๋ค์๋ Rake ํ์คํฌ๋ก ์์ถ ํ์ผ๊ณผ source map์ ๋ค์ ๋ง๋ค์๋ค.
bundle exec rake js
์ด๊ฑธ ๋นผ๋จน์ผ๋ฉด ๋ก์ปฌ ์์ค๋ง ์ข์์ง๊ณ ์ค์ ์ฌ์ดํธ์์๋ ์์ JS๊ฐ ๊ณ์ ๋๊ฐ ์ ์๋ค. ๊ทธ๋์ ์์ค ํ์ผ๊ณผ ๋ฐฐํฌ ํ์ผ์ ๊ฐ์ด ๋ด์ผ ํ๋ค.
๊ฐ์ฃผ ํ์ ๋์๊ณผ ๋ชจ๋ฐ์ผ ์์น๋ฅผ ํ์ธํ๋ค
๋ช ๋ น์ ์ด๋ ๊ฒ ๋๋ ธ๋ค.
node --check assets/js/_main.js
bundle exec rake js
bundle exec jekyll build
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฃผ๊ฐ ๋ง์ ์ค์ ๊ธ์ ๋ก์ปฌ ์ ์ ์๋ฒ๋ก ์ด์ด ํ์ธํ๋ค.
๋ธ๋ผ์ฐ์ ์์๋ ์ด ๊ธฐ์ค์ ๋ดค๋ค.
๊ฐ์ฃผ ๋งํฌ๊ฐ [1] ํํ๋ก ๋ณด์ด๋๊ฐ
ํด๋ฆญ ํ URL hash๊ฐ ๋ฐ๋์ง ์๋๊ฐ
๋งจ ์๋ ์ฐธ๊ณ ์๋ฃ ์์ญ์ผ๋ก ์ด๋ํ์ง ์๋๊ฐ
ํ์
์ด ๋จ๋๊ฐ
ํ์
์์ ํ๋จ ๊ฐ์ฃผ ๋ด์ฉ์ด ๋ค์ด์ค๋๊ฐ
๋ชจ๋ฐ์ผ ํญ์์๋ ํ์
์ด ํ๋ฉด ์์ ๋ค์ด์ค๋๊ฐ
๋ฐ์คํฌํฑ์์๋ ํ๋จ ๊ฐ์ฃผ ์์น๊ฐ ๋ฌธ์ ์๋์ชฝ์ ์์์ง๋ง, ๊ฐ์ฃผ ํด๋ฆญ ํ ์คํฌ๋กค์ ๋ณธ๋ฌธ ๊ทผ์ฒ์ ๋จธ๋ฌผ๋ ๋ค. ๋ชจ๋ฐ์ผ ํญ์์๋ ํ์ ์ ํ๋ฉด ์์ ๋ค์ด์๋ค.
๊ฐ์ฃผ ๋งํฌ๋ฅผ ๋ณธ๋ฌธ ์ ํ์ ์ผ๋ก ์ฝ๊ฒ ๋ง๋ค์๋ค
ํนํ ์ฌ์ค๊ด๊ณ๊ฐ ๋ง์ ๊ธ์์๋ ๊ฐ์ฃผ๊ฐ ์ฅ์์ด ์๋๋ค. ๋ ์๊ฐ โ์ด ๋ง ์ด๋์ ๋์จ ๊ฑฐ์ง?โ ์ถ์ ๋ ๋ฐ๋ก ํ์ธํ ์ ์์ด์ผ ํ๋ค. ๊ทธ๋ฐ๋ฐ ํ์ธํ๋ฌ ๊ฐ๋ค๊ฐ ๊ธ ๋งจ ์๋๋ก ๋จ์ด์ง๊ณ , ๋ค์ ๋ณธ๋ฌธ์ผ๋ก ๋์์์ผ ํ๋ค๋ฉด ๊ฐ์ฃผ๋ ๊ธ๋ฐฉ ๊ท์ฐฎ์ ๋ฌผ๊ฑด์ด ๋๋ค.
์ด์ ๋ ๋ณธ๋ฌธ์ ์ฝ๋ค๊ฐ [1]์ ๋๋ฅด๋ฉด ๋ฐ๋ก ํ์ธํ๊ณ ๋ซ์ ์ ์๋ค.
ํ๋จ ์ฐธ๊ณ ์๋ฃ๋ ๊ทธ๋๋ก ๋จ์ ์๋ค. ๊ธ ๋์์ ์๋ฃ๋ฅผ ํ ๋ฒ์ ํ๊ณ ์ถ์ ์ฌ๋์ ์ฌ์ ํ ๋งจ ์๋๋ฅผ ๋ณด๋ฉด ๋๋ค.
Markdown ์์ฑ ๋ฐฉ์๊ณผ Jekyll/Kramdown ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ ๊ทธ๋๋ก ๋๊ณ , ๋ณธ๋ฌธ์ ์ฝ๋ ๋์ค ๋งจ ์๋ ์ฐธ๊ณ ์๋ฃ๋ก ํ๋ ์ด๋๋ง ์ค์๋ค.
๋๊ธ ๋จ๊ธฐ๊ธฐ