๋ค์ด๊ฐ๋ฉฐ ๋ฐํ ์ํธ๋ฅผ ๋ง๋ค๋ค๊ฐ, ์ํธ๋ ์ฌ๋ผ์๋๋ฐ ๋ค ๋ฐฐ๊ฒฝ์ด ๊ฐ์ด ์คํฌ๋กค๋๋ ๊ฑธ ๋ดค๋ค. ์ฒ์์ "๊ทธ๋ฅ body ์ overflow:hidden ํ๋ฉด ๋๊ฒ ์ง" ์ถ์๋๋ฐ, ๋ง์ ํด๋ณด๋ ํ๋ฉด์ด ๋งจ ์๋ก ํ๊ฒจ๋ฒ๋ ธ๋ค. ๊ทธ๋ผ body ๋ฅผ fixed ๋ก ๋ฐ๊พธ๋ฉด ๋๊ฒ ๋ค ์ถ์ด ํด๋ดค๋
ํ ์คํธ(์ค๋ต๋ฐ) ์ง์ ๋ง๋ค๊ธฐ ๋ค์ด๊ฐ๋ฉฐ ์ด๋ค ํ๋ฉด์ ๋ง๋๋๋ฐ ๋์์ธ ์์์ 'snackbar(์ค๋ต๋ฐ)'๋ผ๋ ๊ฒ ๊ณ์ ๋์๋ค. ํ๋ฉด ์๋์ ์ ๊น ๋ด๋ค ์ฌ๋ผ์ง๋ ์๋ด ๋ ์ธ๋ฐ, ์์งํ ์ฒ์ ๋ณด๋ ๋จ์ด์๋ค. 'ํ ์คํธ'๋ ๋ค์ด๋ดค์ด๋ ์ง์ ๋ง๋ค์ด๋ณธ ์ ์ ์์๊ณ , "ํ ์คํธ๋ ์ค๋ต
๋ชฉ๋ก์์ ํญ๋ชฉ์ ํ๋ ์ญ์ ํ๋๋, ์๋ก๊ณ ์นจ๋ ํ๋ฉด์์ ๋จ์์๋ ๋ค๋ฅธ ํญ๋ชฉ์์ฒดํฌ๊ฐ ๋ค์ด๊ฐ ์์๋ค. "์ด ์ด๋ฏธ ์ ํ๋ผ ์๋ค?" ํ๊ณ ๊ทธ๋๋ก ์ญ์ ๋ฒํผ์ ๋๋ ๋๋์คํ๋ ค "์ญ์ ํ ํญ๋ชฉ์ ์ ํํด ์ฃผ์ธ์"๋ผ๋ ์๋ด๊ฐ ๋ด๋ค.๋ถ๋ช ์ฒดํฌ๋ ๋ณด์ด๋๋ฐ, ์์คํ ์ ์๋ฌด๊ฒ๋ ์ ํ ์ ๋๋ค๊ณ
label๊ณผ input์ ์ฐ๊ฒฐํ๋ ๋ฐฉ์์ ๋ ๊ฐ์ง๊ฐ ์๋ค. ๋ ๋ค ์๊ณ ์์์ง๋ง ์ ํํ ์ด๋ค ์ฐจ์ด๊ฐ ์๋์ง ๋ชฐ๋ผ์ ์ด๋ฒ์ ์ ๋๋ก ์ ๋ฆฌํด๋ณด์๋ค. ๋๋ ์ฃผ๋ก ๋ช ์์ ์ฐ๊ฒฐ๋ก๋ง ์ฌ์ฉํด์์๋๋ฐ, ์ํฉ์ ๋ฐ๋ผ ๊ณจ๋ผ์ฐ๋ฉด ๋ ๊ฑฐ ๊ฐ๋ค. ๋ ๊ฐ์ง ๋ฐฉ์ ์๋ฌต์ ์ฐ๊ฒฐ (Implicit
์๋ ์ a ์์ button ๋ฃ๊ณ JS ๋ก stopPropagation ํ๋๋ฐ, HTML ํ์ค ์๋ฐ์ด๋ผ๋ ๊ฑธ ์๊ฒ ๋๊ณ ๋ชจ๋ ํ์ค (Stretched Link) ์ผ๋ก ์ ๋ฆฌํด ๋ . ์นด๋๋ ์์ญ ์ ์ฒด๋ฅผ ํด๋ฆญ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค ๋, a/button ์ผ๋ก ์ปจํ ์ธ ๋ฅผ ๊ฐ์ธ์ง ์๊ณ
ํผ๋ธ๋ฆฌ์ ๋ก ์ผํ๋ค๊ฐ ์ฒ์์ผ๋ก ๋ฐฑ์๋ ์ฝ๋๋ฅผ ๋ค์ฌ๋ค๋ณผ ์ผ์ด ์๊ฒผ๋๋ฐ, URL ์์ ๊ฐ ๋ฐ๋ ํจํด์ด ๊ณ์ ๋์์ ์ด๋ฒ์ ์ ๋๋ก ์ ๋ฆฌํด๋ดค๋ค.PHP ๊ฐ URL ์ ์ ๋ณด๋ฅผ ๋ฐ์์ ๋ณ์์ ๋ด๋ ํจํด ์ ๋ฆฌ? ๋ค๋ถํฐ = ์ฟผ๋ฆฌ์คํธ๋ง (query string)& ๋ก ์ฌ๋ฌ ํ๋ผ๋ฏธํฐ ๊ตฌ๋ถํ
ํ ๊ธ ์ค์์น ๊ตฌํ ๋ฐฉ๋ฒ ์ฐพ๋ค๊ฐ :checked ํดํน์ ์๊ฒ ๋๋๋ฐ, ํ ๊ธ๋ฟ ์๋๋ผ ํญยท๋ชจ๋ฌยท์์ฝ๋์ธ๊น์ง ๊ฐ์ ์๋ฆฌ๋ก ๋ง๋ค ์ ์๊ธธ๋ ์ ๋ฆฌํด๋ณด์๋ค.input์ :checked ์ํ๋ CSS ํ์ ์ ํ์(+, ~)๋ง์ผ๋ก JS ์์ด ํ ๊ธ, ํญ, ๋ชจ๋ฌ, ์์ฝ๋์ธ์ ๋ง๋ค ์ ์
ํ์ผ๋ช ์ ๋์๋ฌธ์๋ง ๋ณ๊ฒฝํ์ ๋ Git์ด ๋ณ๊ฒฝ์ฌํญ์ ๊ฐ์งํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ์์ธ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ๋ค. ๋ฌธ์ ์ํฉ CSS ํ์ผ๋ช ์ด Main.css๋ก ๋์ด ์์ด ์๋ฌธ์ main.css๋ก ๋ฐ๊พธ๋ ค๊ณ ํ๋ค. ์๋ํฐ๋ ํ์๊ธฐ์์ ์ด๋ฆ๋ง ๋ฐ๊พผ ๋ค Git ์ํ๋ฅผ ํ์ธํ
์ฌ์ค ํ์์ <form> ํ๊ทธ๋ฅผ ์ ์ ์ผ๋ค. ๋ก๊ทธ์ธ์ด๋ ๊ฒ์์ด๋ ๊ทธ๋ฅ <div>๋ก ๊ฐ์ธ๊ณ ๋ฒํผ์ ์ด๋ฒคํธ ๊ฑธ์ด์ JS๋ก ๊ฐ ๊ธ์ด ๋ณด๋ด๋ ์์ด์๊ณ , ๋์์ ์ ๋๋๊น ๊ตณ์ด form์ ์จ์ผ ํ ์ด์ ๋ฅผ ๋ชป ๋๊ผ๋ค.๊ทธ๋ฌ๋ค ์ต๊ทผ์ ๋ ๊ฑฐ์ ํ์ด์ง ๋ฆฌ๋ด์ผ ์์ ์ ํ๋ฉด์
๋๊ธ, ์ฑํ , ๋ฆฌ๋ทฐ์ฒ๋ผ ์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ํ ์คํธ๋ฅผ ๊ณ ์ ํญ ๋ฐ์ค ์์ ๋ณด์ฌ์ค์ผ ํ ๋, ๋์ด์ฐ๊ธฐ ์์ด ๊ธธ๊ฒ ๋ถ์ฌ ์ด ๋ฌธ์์ด(์: URL, ์ฐ์๋ ์๋ฌธ/์ซ์)์ด ๋ ์ด์์์ ๋ฐ์ด๋ด๋ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.์ด๊ฑธ ํด๊ฒฐํ๋ ค๊ณ ๊ฒ์ํ๋ฉด word-break, overflow-wrap, wor
Laravel์์ HTML์ ๋ง๋ค์ด์ฃผ๋ ํ ํ๋ฆฟ ์์ง.ํ์ผ ํ์ฅ์๋ .blade.phpHTML ์์์ @๋ฌธ๋ฒ, {{ }}๋ฅผ ์ฌ์ฉํด ์๋ฒ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ์ถ๋ ฅํ๋ค. ํผ๋ธ๋ฆฌ์ ์ ์ฅ์์๋"ํ๋์ฝ๋ฉ HTML โ ๋ฐ์ดํฐ ๊ธฐ๋ฐ UI๋ก ๋ฐ๊พธ๋ ๊ณผ์ "์ด๋ผ๊ณ ๋ณด๋ฉด ์ดํด๊ฐ ์ฝ๋ค.์์:
iframe์ ์๊ฐ๋ณด๋ค ์์ฃผ ๋ณด์ด์ง๋ง,๋ง์ ์ง์ ๋ค๋ฃจ๋ ค๊ณ ํ๋ฉด ๋์ด ๋ฌธ์ ๋ ๋๋ฉ์ธ ์ ์ฝ ๋๋ฌธ์ ๊ฝค ๊น๋ค๋ก์ด ํ๊ทธ๋ค.ํนํ ๊ทธ๋ฅ ๋ถ์ฌ ๋ฃ๊ธฐ๋ง ํ๋ฉด ๋๋ ์ค ์์๋ค๊ฐ๋์ด๊ฐ ์ ๋ง๊ฑฐ๋, ๋ด๋ถ ํ์ด์ง์ ์ ๊ทผ์ด ์ ๋๊ฑฐ๋, ๋ฐ์ํ ๋์์ด ๊ผฌ์ด๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.์ด๋ฒ ๊ธ์ ์ค๋ฌด์์ i
๋ชจ๋ฐ์ผ ๊ฒ์ ํ์ด์ง์์ ๊ฒ์์ฐฝ์ด ์๋ ๋ค๋ฅธ ์์ญ(์ค์์ดํผ, ๋น ๊ณต๊ฐ ๋ฑ)์ ํฐ์นํด๋ ํค๋ณด๋๊ฐ ์ฌ๋ผ์๋ค.document ์ ์ฒด์ touchstart ์ด๋ฒคํธ๋ฅผ ๊ฑธ์ด์ ๊ฒ์์ฐฝ์ .focus()๋ฅผ ์ฃผ๊ณ ์์๋ค.์๋๋ iOS ๋์์ด์๋ค. iOS์์๋ ์ฌ์ฉ์ ์ ์ค์ฒ ์์ด ํธ์ถํ .
๋ชฉ๋ก UI๋ฅผ ๊ตฌํํ๋ค ๋ณด๋ฉด ๋ฐ์ดํฐ ๋ก๋ฉ ๋์ ํ๋ฉด์ด ๋น๊ฑฐ๋ ๋ ์ด์์์ด ๋ฐ๋ฆฌ๋ ์ํฉ์ ์์ฃผ ๋ง์ฃผ์น๋ค.์ค์ผ๋ ํค UI(Skeleton UI)๋ ๊ทธ ์๊ฐ์ ์ฑ์ฐ๊ธฐ ์ํ ๋ก๋ฉ ํจํด์ผ๋ก, ์ค์ ์ฝํ ์ธ ์ ๋น์ทํ ํํ์ ํ์ ๋ธ๋ก์ ๋จผ์ ๋ณด์ฌ์ค๋ค.๋ผ๋(skeleton)๋ง ๋จผ์ ๊ทธ๋ ค๋
์ค๋ ๊ณต๋ถํ๊ฒ & ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ typescript์ next.js๋ฅผ ์ ๋ชฉ์์ผ์ ์ฝ๋๋ฅผ ์ง๊ณ ์๋๋ฐ, ๊ฐ๋์ฉ ๋๋ํ๊ฐ ๋์๋ค. ๋ด๊ฐ ์๋ ๋๋ํ๋ ๋ถ๋ฑํธ์ ํจ๊ป ์์ ์ฌ์ฉํ๋ not์ ์๋ฏธ๋ฐ์ ๋ชฐ๋๋๋ฐ, ๋๋ฌธ๋๋ฌธ ๋ค์ ๋๋ํ๊ฐ ์ฐํ๋ ๊ฒ์ด๋ค. ์ ๊ฒ ๋ญ๊น ์ ๊ฒ ๋ญ
์ค๋ ๊ณต๋ถํ๊ฒ & ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ createObjectURL URL.createObjectURL์ ๋ธ๋ผ์ฐ์ ์์ ๋ก์ปฌ ํ์ผ์ ๋ก๋ํ์ฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์ ๊ณตํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด๋ค. ๋ธ๋ผ์ฐ์ ์์ ๋ก์ปฌ ํ์ผ์ ๊ฐ๋จํ ๋ก๋ ๊ฐ๋ฅ ์ด๋ฏธ์ง ํ์ผ์ ์ ๋ก๋ํ๊ธฐ ์ ์ ์ฌ์ฉ์์๊ฒ
์ค๋ ๊ณต๋ถํ๊ฒ & ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ .superRefine ctx.addIssue๋ฅผ ํตํด ์ํ๋ ๋งํผ ์ด์๋ฅผ ์ถ๊ฐํ ์ ์๋ค. ํจ์ ์คํ ์ค์ ctx.addIssue๊ฐ ํธ์ถ๋์ง ์์ผ๋ฉด ์ ํจ์ฑ ๊ฒ์ฌ๊ฐ ํต๊ณผ fatal: true ์ค์ ์, ๊ทธ ๋ค์ refine์ด ์คํ
์ค๋ ๊ณต๋ถํ๊ฒ & ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ Image ์ปดํฌ๋ํธ ๊ธฐ๋ณธ jsx img๊ฐ ์ง์ํ์ง ์๋ ์ฌ๋ฌ๊ฐ์ง ๊ฐ๋ ฅํ๊ธฐ๋ฅ์ ์ง์ํ๋ค. ๋ก๋ฉ ์ ํ๋ก ์ปดํฌ๋ํธ ์์น๊ฐ ๋ฐ๋ฆฌ๋ content shift๋ฅผ ๋ฐฉ์งํ๋ค. ์์ถ๋ฅ ์ด๋, ํ๋ฉด ํฌ๊ธฐ๋ณ ์์ถ ์ต์ ์ ์ ๊ณตํ๋ค. ํ์ prop์ผ๋ก
๋ง ๊ทธ๋๋ก ์ค๊ฐ์์ ๋์ํ๋ ์ผ์ข ์ ์ํธํ์จ์ด๋ฅผ ๋ปํ๋ค. ์ด๋ค ๊ฒ๊ณผ ๋ค๋ฅธ๊ฒ ์ฌ์ด์์ ์คํ๋๋ ์ฝ๋.๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํ๋ฉด request๊ฐ ์๋ฃ๋๊ธฐ ์ ์ ์ฝ๋๋ฅผ ์คํํ ์ ์๋ค.์ด๋ฏธ์ง, CSS, JS, Favicon ์์ฒญ ๋ฑ ์น ์ฌ์ดํธ์ ๋ชจ๋ ๋จ์ผ request ํ๋ํ๋ ๋ง
์ค๋ ๊ณต๋ถํ๊ฒ & ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ bcrypt ๋น๋ฐ๋ฒํธ๋ฅผ ํด์ํ ๋ ์ฌ์ฉํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํด์ํจ์๋ ๋จ๋ฐฉํฅ ๋ฉฑ๋ฑ์ฑ ํจ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ทธ๋๋ก ์ ์ฅํ์ง ์๋๋ค.(ํดํน์ ์ํ์ฑ) ์ ํด์ง ์ ๋ ฅ์ ๋ฐ๋ผ ์ ํด์ง ๋์๋ฅผ ์ถ๋ ฅํจ bcryptํ๋ ์ด์ ๋ณด์์ ๋ฐ์ดํฐ๊ฐ