[๐ Today I Learn ํ์ด์ง ๋ง๋ค๊ธฐ] ํฌ๋ ๋ฏธ์ ์ ์ถํฉ๋๋ค.#120
[๐ Today I Learn ํ์ด์ง ๋ง๋ค๊ธฐ] ํฌ๋ ๋ฏธ์
์ ์ถํฉ๋๋ค.#120goodsmell wants to merge 5 commits into
Conversation
๐ค ์๊ฐํด ๋ณด๊ธฐSQL ์ค์ต ๊ด๋ จ
๊ธฐ๋ณธํค๊ฐ ํ์ํ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
๋ง์ฝ ๊ธฐ๋ณธํค๊ฐ ์๋ค๋ฉด ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ ๊ฐ ์์ ๋ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฑฐ๋ ์ญ์ ํด์ผ ํ๋์ง ์ ์ ์๊ณ , ํ ์ด๋ธ ๊ฐ ๊ด๊ณ ์ค์ ๋ ๋ถ๊ฐ๋ฅํด์ง๋ค.
AUTO_INCREMENT๋ ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ์ฝ์ ๋ ๋๋ง๋ค ์๋์ผ๋ก ์ฆ๊ฐํ๋ ๊ฐ์ ์์ฑํ๋ ๊ธฐ๋ฅ์ด๋ค. ์ด ๊ธฐ๋ฅ์ด ํ์ํ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
์ฆ, ๋ฐ์ดํฐ์ ์๋ณ์๋ฅผ ์ฌ๋์ด ์๋๋ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋์ผ๋ก ๊ด๋ฆฌํ๋๋ก ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
NULL์ ๊ฐ์ด ์๋ ์ํ๋ฅผ ์๋ฏธํ๋ฉฐ, 0์ด๋ ๋น ๋ฌธ์์ด๊ณผ๋ ๋ค๋ฅด๋ค. ์ฃผ์ํ ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
๋ํ ํ๋ก ํธ์๋์์๋ NULL ๊ฐ์ ๊ทธ๋๋ก ๋ณด์ฌ์ฃผ๊ธฐ๋ณด๋ค๋ "๋ฏธํด์ค", "-", "๊ฐ ์์" ๋ฑ์ผ๋ก ๊ฐ๊ณตํด์ ๋ณด์ฌ์ฃผ๋ ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ค.
2026 ๊ณตํต๊ฐ์ - DB ๊ฐ๋ ์ฐ๊ฒฐ
๐ง ๋ ์๊ฐํด ๋ณด๊ธฐ (์ฌํ)
|
๋ฐฐํฌ ๋งํฌ
https://goodsmell.github.io/web-today-i-learn/
HTML
๋๋ง์ ๊ฐค๋ฌ๋ฆฌ ์ฌ์ง ์์: 9์ฅ์ ์ฌ์ง์
<div>์ปจํ ์ด๋ ์์ ๊ฐ๋ณ<img>ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ๊ฐ ์ด๋ฏธ์ง๊ฐ ๋ ๋ฆฝ์ ์ธ ์ฝํ ์ธ ๋ผ๊ธฐ๋ณด๋ค๋ ์๊ฐ์ ๋์ด์ ์ฑ๊ฒฉ์ด ๊ฐํด, Grid ๋ ์ด์์์ ์ ์ฉํ๊ธฐ ์ฉ์ดํ ๊ตฌ์กฐ๋ฅผ ์ ํํ์ต๋๋ค.์ด๋ฏธ์ง ๋ก๋ ๋ฐฉ์: ์ธ๋ถ URL(์ ๋ ๊ฒฝ๋ก)์ ํตํ ๋ก๋์ ๋ก์ปฌ ํ์ผ(์๋ ๊ฒฝ๋ก) ๋ก๋ ๋ฐฉ์์ด ์์ต๋๋ค. ํ์ฌ ํ๋ก์ ํธ์์๋ picsum.photos์ ๊ฐ์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ URL์ ์ฃผ๋ก ํ์ฉํ๊ณ ์์ต๋๋ค.
์๋งจํฑ ํ๊ทธ ์ฌ์ฉ ๊ธฐ์ค: ๋ฌธ์์ ๋๊ตฌ์กฐ๋
<nav>, <section>, <main>, <footer>๋ก ๋๋์์ผ๋ฉฐ, ๊ฐ ์น์ ์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌ๋ ์ฃผ์ (์๊ธฐ์๊ฐ, ๊ฐค๋ฌ๋ฆฌ, TIL ๋ฑ)๋ฅผ ๊ธฐ์ค์ผ๋ก ํ์ ํ์ต๋๋ค.alt ์์ฑ์ ํ์์ฑ: ์๊ฐ ์ฅ์ ์ธ์ ์ํ ์คํฌ๋ฆฐ ๋ฆฌ๋ ์ฝ๊ธฐ ์ง์ ๋ฐ ์ด๋ฏธ์ง ๋ก๋ฉ ์คํจ ์ ๋์ฒด ํ ์คํธ ์ ๊ณต์ ์ํด ํ์์ ์ ๋๋ค. ์ด๋ฏธ์ง์ ์๋ฏธ๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ๋ด์ ์์ฑํ์ต๋๋ค.
๊ฒฝ๋ก ํผ์ฉ ๋ฌธ์ : ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ๋ฐฐํฌ ํ๊ฒฝ(GitHub Pages ๋ฑ)์ ๋ฃจํธ ๋๋ ํ ๋ฆฌ๊ฐ ๋ค๋ฅผ ๊ฒฝ์ฐ ์ด๋ฏธ์ง ์๋ฐ(Broken link)์ด ๋ฐ์ํ ์ ์์ด ์ผ๊ด๋ ๊ฒฝ๋ก ๊ท์น์ด ์ค์ํฉ๋๋ค.
meta ํ๊ทธ์ ์ญํ : viewport๋ ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ์์์ ์ ์ ํ ํ๋ฉด ๋ฐฐ์จ์ ์ค์ ํ๋ฉฐ, Open Graph๋ ๋งํฌ ๊ณต์ ์ ์ ๋ชฉ, ์ค๋ช , ์ด๋ฏธ์ง๋ฅผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ก ๋ณด์ฌ์ฃผ๋ ๋ง์ผํ ์ ์ญํ ์ ํฉ๋๋ค.
CSS
Flexbox vs Grid: 9์ฅ์ ์ด๋ฏธ์ง๋ฅผ 3x3 ๊ฒฉ์ ํํ๋ก ๋ฐฐ์นํ๋ ๋ฐ๋ display: grid๊ฐ ๋ ์ ํฉํฉ๋๋ค. 2์ฐจ์ ๋ ์ด์์์ ์ง๊ด์ ์ผ๋ก ์ ์ดํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ ํ์ ์ฌ์ฉ: ๋ณดํธ์ ์ธ ์คํ์ผ์ ํ๊ทธ ์ ํ์, ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋์์ธ ๋จ์๋ ํด๋์ค(.) ์ ํ์๋ฅผ ์ฌ์ฉํ๋ฉฐ, ID ์ ํ์๋ ๋ฌธ์ ๋ด ์ ์ผํ ์์ ์๋ณ ์์๋ง ์ ํ์ ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
ํ์ผ ๋ถ๋ฆฌ ์ด์ : HTML์ ๊ตฌ์กฐ, CSS๋ ๋์์ธ์ผ๋ก ์ญํ ์ ๋ถ๋ฆฌํ์ฌ ์ ์ง๋ณด์์ฑ์ ๋์ด๊ณ , ๋ธ๋ผ์ฐ์ ์บ์ฑ์ ํตํด ๋ก๋ฉ ์๋๋ฅผ ๊ฐ์ ํ ์ ์์ต๋๋ค.
JavaScript
getElementById vs querySelector: getElementById๋ ID๋ก๋ง ์ ๊ทผํ์ฌ ์๋๊ฐ ๋ฏธ์ธํ๊ฒ ๋น ๋ฅด๋, querySelector๋ CSS ์ ํ์ ๋ฌธ๋ฒ์ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์์ด ํจ์ฌ ์ ์ฐํ๊ณ ๋ฒ์ฉ์ ์ ๋๋ค.
ํ์ฉ ๊ฐ๋ฅํ ์ด๋ฒคํธ: ๋ฒํผ ํด๋ฆญ(click), ํผ ์ ์ถ(submit), ์ ๋ ฅ์ฐฝ ํฌ์ปค์ค(focus), ๋ง์ฐ์ค ์ค๋ฒ(mouseover) ๋ฑ์ ํตํด ๋์ ์ธ ์ธํฐ๋์ ์ ์ค ์ ์์ต๋๋ค.
innerHTML ์ฃผ์์ : ์ฌ์ฉ์ ์ ๋ ฅ์ ๊ทธ๋๋ก innerHTML์ ์ฝ์ ํ ๊ฒฝ์ฐ XSS(ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ ) ๊ณต๊ฒฉ์ ์ทจ์ฝํด์ง ์ ์์ผ๋ฏ๋ก ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
๋ฐฐํฌ
๋ฐ์ดํฐ ์ ์ง ์ฌ๋ถ: ์ ์ง๋์ง ์์ต๋๋ค. ํ์ฌ ์ฝ๋๋ ๋ธ๋ผ์ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ DOM๋ง ์กฐ์ํ๋ฏ๋ก, ์๋ก๊ณ ์นจ ์ ์ด๊ธฐํ๋ฉ๋๋ค.
์๊ตฌ ์ ์ฅ ๋ฐฉ๋ฒ: ๋ธ๋ผ์ฐ์ ์ LocalStorage๋ IndexedDB๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ์๋ฒ API๋ฅผ ํตํด Database์ ์ ์ฅํด์ผ ํฉ๋๋ค.