์ ์ฒด ๊ธ103 [React] React Hook๊ณผ Custom Hook ๋ชฉ์ฐจ1. React Hook2. custom Hook 1. React Hook๐กHook์ด๋? Hook์ React์ ํจ์ ์ปดํฌ๋ํธ์์ ์ํ๊ด๋ฆฌ์ ์๋ช ์ฃผ๊ธฐ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋๋ก ํด์ฃผ๋ ํจ์.๊ธฐ์กด์๋ ํด๋์คํ ์ปดํฌ๋ํธ์์๋ง ๊ฐ๋ฅํ๋ ๊ธฐ๋ฅ๋ค์ ํจ์ํ์์๋ ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ค์ด์ค ๋ฆฌ์กํธ์ ํต์ฌ ๊ธฐ๋ฅ์ด๋ค. Hook์ React 16.8์ ์๋ก ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ด๋ฉฐ,Hook์ class๋ฅผ ์์ฑํ์ง ์๊ณ ๋ state์ ๋ค๋ฅธ React์ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋ค๊ณ ํ๋ค. โ๏ธ ๋ํ์ ์ธ Hook ์ข ๋ฅuseState: ์ปดํฌ๋ํธ์ ์ํ๊ฐ(state)์ ์ ์ฅํ๊ณ ๋ณ๊ฒฝuseEffect: ์ปดํฌ๋ํธ์ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ (๋ง์ดํธ, ์ ๋ฐ์ดํธ, ์ธ๋ง์ดํธ ๋ฑ) useRef, useContext, useReducer, us.. 2025. 5. 14. [React] useState์ useRef ๋ชฉ์ฐจ1. useState์ setํจ์2. ๊ฐ๋จํ ํ์๊ฐ์ ํผ์ผ๋ก ํ๋ฆ ์ดํด๋ณด๊ธฐ3. useRef React๋ฅผ ์ฒ์ ๋ฐฐ์ฐ๋ฉด์ ๊ฐ์ฅ ๋จผ์ ์ ํ๋ Hook์ด ๋ฐ๋ก useState์ด๋ค. useState๋ ํจ์ํ ์ปดํฌ๋ํธ์์ ์ํ(state)๋ฅผ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ํต์ฌ์ ์ธ ๊ธฐ๋ฅ์ด๋ค. ์ด๋ฒ ๊ธ์์๋ ๊ฐ๋จํ ํ์๊ฐ์ ํผ ์์ ๋ฅผ ํตํด useState์ ํจ๊ป ์ฌ์ฉํ๋ set ํจ์๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง๋ฅผ ์์ธํ ์ค๋ช ํด๋ณด๊ณ ์ ํ๋ค. 1. useState์ setํจ์ โ๏ธuseState- ์ปดํฌ๋ํธ์ state ๋ณ์๋ฅผ ์ถ๊ฐํ ์ ์๋ React Hook.- ์ํ๊ฐ์ ๋ง๋ค๊ณ , ์ด๋ฅผ ์ ์ดํ ์ ์๋ ํจ์๋ฅผ ํจ๊ป ์ ๊ณตํ๋ค. ๐ก์ฌ์ฉ๋ฒ: ์ปดํฌ๋ํธ์ state ์ถ๊ฐํ๊ธฐ ์ปดํฌ๋ํธ์ ์ต์์ ๋ ๋ฒจ์์ useState๋ฅผ ํธ.. 2025. 5. 10. [React] JSX ๋? (ํน์ง, CSS์ ์ฉ, className) ๋ชฉ์ฐจ1. JSX ๋?2. JSX ํน์ง ๋ฐ ์ฃผ์์ฌํญ3. JSX์ CSS ์ ์ฉ4. JSX ์์ฑ ์ฌ์ฉ๋ฐฉ์ 1. JSX ๋? JSX๋ JavaScript์ XML/HTML ํํ์ ๋งํฌ์ ์ ์์ฑํ ์ ์๊ฒ ํด์ฃผ๋ JavaScript ํ์ฅ ๋ฌธ๋ฒ Javascript์ XML ํ์์ ๋ฌธ๋ฒ์ ๊ฒฐํฉํ ํํReact์์๋ ๋ ๋๋ง ๋ก์ง๊ณผ UI ๋ก์ง์ด ์ฐ๊ฒฐ๋์ด ์๋ค๊ณ ๋ณด๊ธฐ ๋๋ฌธ์, ๋์ ํจ๊ป ๊ตฌ์ฑํ๋ ์ปดํฌ๋ํธ ๋จ์๋ก ๊ด์ฌ์ฌ๋ฅผ ๋ถ๋ฆฌํจ. 2. JSX ํน์ง ๋ฐ ์ฃผ์์ฌํญ ๐ก JSX์ ํน์ง JS ํํ์ ํฌํจ ๊ฐ๋ฅ์ค๊ดํธ {} ์์ JavaScript ํํ์ ์ฌ์ฉ ๊ฐ๋ฅ์: Hello, {name}JSX๋ ํํ์์ด๋ค!JSX๋ JavaScript ์ฝ๋์ฒ๋ผ ๋ณ์์ ํ ๋นํ๊ฑฐ๋, ์ธ์๋ก ์ ๋ฌํ๊ฑฐ๋, ํจ์์์ ๋ฐํ ๊ฐ๋ฅ์์ฑ ์ ์๋ฌธ.. 2025. 5. 8. [Node.js] Node.js ๋ชจ๋์์คํ / Common JS(CJS) & ES Module(ESM) ๋ชฉ์ฐจ1. Node.js์ npm2. Common JS (CJS) ์ ES module (ESM) 1. Node.js ์ npm ๐ก Node.js ๋? : ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฐํ์ ํ๊ฒฝ๋ธ๋ผ์ฐ์ ์ ๋ฐ(์๋ฒ, ๋ก์ปฌ ์ปดํจํฐ ๋ฑ)์์๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ ์๊ฒ ํด์ฃผ๋ ํ๋ซํผ์ด๋ค. ex) app.js๋ผ๋ ํ์ผ์ node app.js๋ก ์คํํ๋ฉด Node.js๊ฐ ๊ทธ JSํ์ผ์ ์คํํด์ค๋ค. ๐กNode.js๋ฅผ ์น๊ฐ๋ฐ์์ ์ฐ๋ ์ด์ ๐น ๋ฐฑ์๋ ๊ฐ๋ฐExpress.js ๊ฐ์ ํ๋ ์์ํฌ๋ฅผ ํตํด REST API ์๋ฒ๋ฅผ ๋น ๋ฅด๊ฒ ๊ตฌ์ถํ ์ ์๋ค.๋น๋๊ธฐ ์ฒ๋ฆฌ์ ๊ฐํด, ๋ง์ ์์ฒญ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค.์ค์๊ฐ ๊ธฐ๋ฅ (ex. ์ฑํ , ์๋ฆผ) ๊ตฌํ์ ์ต์ !๐น ํ๋ก ํธ์๋ ๊ฐ๋ฐ ํ๊ฒฝ ๊ตฌ์ถnpm (Node Package M.. 2025. 4. 30. [JS] ์๋ฐ์คํฌ๋ฆฝํธ async ์ await (ft. ๋น๋๊ธฐ์ฒ๋ฆฌ) ์๋ฐ์คํฌ๋ฆฝํธ async์ await ; ๋น๋๊ธฐ ์ฒ๋ฆฌ๋ฅผ ๋ ์ฝ๊ฒ ! ๋น๋๊ธฐ ์์ ์ ๋ค๋ฃจ๊ธฐ ์ํด ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ค์ํ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค. promise ๊ฐ๋ ๊ณผ ๋๋ถ์ด async์ await ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋น๋๊ธฐ ์ฝ๋๋ฅผ ๊น๋ํ๊ณ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ค ์ ์๋ค. 1. async ํค์๋๋?async๋ ํจ์๋ฅผ ๋น๋๊ธฐ ํจ์๋ก ๋ง๋ค์ด์ฃผ๋ ํค์๋์ด๋ค.async๋ฅผ ํจ์ ์์ ๋ถ์ด๋ฉด, ํด๋น ํจ์๋ ํญ์ Promise๋ฅผ ๋ฐํํ๋ค.๋ฐํ๊ฐ์ด Promise๊ฐ ์๋๋๋ผ๋ ์๋์ผ๋ก Promise๋ก ๊ฐ์ธ์ ๋ฐํ๋๋ค.async function getData() { return { name: "David", id: "d0228", };}console.log(getData()); ์ ์ฝ๋์getDa.. 2025. 4. 29. [JS] ์๋ฐ์คํฌ๋ฆฝํธ ๋น๋๊ธฐ์ Promise ์๋ฐ์คํฌ๋ฆฝํธ ๋น๋๊ธฐ์ Promise ์๋ฐ์คํฌ๋ฆฝํธ ๋น๋๊ธฐ ์ฒ๋ฆฌ์ Promise์ ๋ํด ์ฝ๊ฒ ์ ๋ฆฌํด๋ณด์!1. ์๋ฐ์คํฌ๋ฆฝํธ ๋น๋๊ธฐ ์ฒ๋ฆฌ ; ์ฝ๋ฐฑ ํจ์(Callback)์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๊ธ ์ค๋ ๋๋ก ์๋ํ๋ค.๊ทธ๋์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ (์: ์๋ฒ ์์ฒญ, ํ์ผ ์ฝ๊ธฐ ๋ฑ)์ ๊ทธ๋ฅ ์คํํ๋ฉด ํ๋ก๊ทธ๋จ์ด ๋ฉ์ถฐ๋ฒ๋ฆด ์ ์๋ค.์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋น๋๊ธฐ ์ฒ๋ฆฌ๊ฐ ๋ฑ์ฅํ๋ค. ๋ํ์ ์ธ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ ์ค ํ๋๊ฐ ๋ฐ๋ก ์ฝ๋ฐฑ ํจ์// ์ฝ๋ฐฑํจ์๋ฅผ ์ฌ์ฉํด์, ๋น๋๊ธฐํจ์ ์์์ ์ฝ๋ฐฑ์ ํธ์ถfunction add(a, b, callback) { setTimeout(() => { const sum = a + b; callback(sum); }, 3000);}add(1, 2, (value) .. 2025. 4. 26. [Git] VS Code ์์ git์ ๋ฐ์ํ๊ธฐ (GUI ๋ฐฉ์/ ํฐ๋ฏธ๋ ๋ฐฉ์) VS Code์์ ์์ ์ ๋คํ๊ณ git์ ๋ฐ์ํ๊ณ ์ถ๋ค.GUI๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ๊ณผ ํฐ๋ฏธ๋์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.โบ๏ธ ๐กํฐ๋ฏธ๋์ ์ฌ์ฉํ๋๋ฐฉ๋ฒ1. ํฐ๋ฏธ๋์ ์ด์ด์ค๋ค. 2. git add .๋ค์ . ์ ๋ณ๊ฒฝ์ฌํญ์ด ์๋ ํ์ผ ์ ๋ถ๋ฅผ ๋์์ผ๋ก ํ๊ฒ ๋ค๋ ๋ป์ด๋ค. ํน์ ํ์ผ๋ง ํ๊ณ ์ถ๋ค๋ฉด ํน์ ํ์ผ์ด๋ฆ์ ์ฐ๋ฉด๋๋ค.git add .3. git commit -m "์ปค๋ฐ ๋ฉ์์ง"git commit -m "markdown" 4. git push git push ์๊ฒฉ์ ์ฅ์๋ช ๋ธ๋์น๋ช ๋ง์ฝ git clone์ ํตํด ์ ์ฅ์๋ฅผ ๋ณต์ ํ๋ค๋ฉด ์ผ๋ฐ์ ์ผ๋ก ์๊ฒฉ์ ์ฅ์๋ช ์ origin์ด๋ฉฐ git remote๋ช ๋ น์ด๋ฅผ ํตํด ์ ํํ ์ ์ฅ์๋ช ์ ์์๋ผ ์ ์๋ค.git remote๋ธ๋์น๋ฅผ ๋ฐ๋ก ์๋ง๋ ์ํ๋ผ๋ฉด ๊ทธ๋ฅ git remote origin๋ง ํ๋ฉด๋๋ค.. 2025. 4. 22. [React] ๋ฆฌ์กํธ์ ๊ฐ์๋(virtualDOM) / ํฐ๋ฏธ๋ ์ด๊ธฐ ์ค์ ๋ชฉ์ฐจ1. ๋ฆฌ์กํธ(React)2. ๋ฆฌ์กํธ ์ฌ์ฉ์ด์ ์ VitrualDOM(๊ฐ์๋)3. terminal์์ ์ด๊ธฐ ์ค์ ํ๊ธฐ 1. ๋ฆฌ์กํธ(React) ๐ก์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฆฌ์กํธ๋ ์๋ฐ์คํธ๋ฆฝํธ UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ๐ก SPA(Single Page Application) SPA๋ ์๋ง์ ์น ํ์ด์ง๋ฅผ ๋ก๋ฉํ ๋ ์ต์ ์ ๋ฐ์ดํธ๋ฅผ ์ ์ํ๊ฒ ๋ฐ์ํ๋ฉฐ, ํ์ด์ง ๋ก๋ฉ ์๋๋ฅผ ํฅ์์ํค๊ณ ํธ๋ํฝ์ ์ค์ธ๋ค.๋ฐ๋ผ์ ํ์ด์ง๊ฐ ๋ถ๋๋ฝ๊ฒ ์ ํ๋๋๋ก ํ๊ณ , ์ ๋ฐ์ดํธ๊ฐ ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ ๋จ์ถ์ํจ๋ค. ft. MetaMeta๊ฐ ๋ง๋ ์คํ ์์ค ๊ธฐ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ.๋ ๋ ํ ์ง์๊ตฐ์ธ Meta๋์ ์น ๊ฐ๋ฐ ์์ฅ์์ ์ฝ๊ฒ ๋ฌด๋์ง(?) ์ผ์ ์๋ค๋ ๊ฒ,! https://github.com/facebook/react GitHub -.. 2025. 3. 23. [Github] ๊นํ๋ธ Readme์ ์ด๋ฏธ์ง ๋ฃ๊ธฐ/ ํฌ๊ธฐ ์กฐ์ ํ๊ธฐ ๋ชฉ์ฐจ1. Readme์ ๋ฃ์ ์ด๋ฏธ์ง ์ฃผ์ ์์ฑํ๊ธฐ2. ํฌ๊ธฐ ์กฐ์ ๋ฐฉ๋ฒ ๊นํ๋ธ Readme์ ์ด๋ฏธ์ง ๋ฃ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณด์ โบ๏ธ 1. Readme์ ๋ ํฌ์งํ ๋ฆฌ์์ ์ด์ ์์ฑ์ฐฝ ์ด๊ธฐ 2. ์ฝ์ ํ๊ณ ์ ํ๋ ์ด๋ฏธ์ง๋ฅผ ๋์ด ๋ฃ์ด์ค๋ค 3. 'Uploading.....' ์ด๋ผ๋ ๋ฌธ๊ตฌ๊ฐ ๋จ๊ณ ๊ธฐ๋ค๋ฆฌ๋ฉด ๋๋ค 4. ์๋์ ๊ฐ์ ์ด๋ฏธ์ง ์ฃผ์๊ฐ ๋ด๊ธด ์ฝ๋๋ฅผ ์์ฑํด์ค๋ค ๋ง์ฝ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๊ฑฐ๋ align๋ฑ์ ์์ฑ์ ์ฃผ๊ณ ์ถ๋ค๋ฉด, ํ๊ทธ์ src ๋ถ๋ถ์ ์์ ์ด๋ฏธ์ง ์ฃผ์ ๋ถ๋ถ์ ์ฝ์ ํ์ฌ ์ฌ์ฉํ๋ฉด ๋๋ค. โบ๏ธ 2025. 3. 17. [JS] ๋ก์ปฌ์คํ ๋ฆฌ์ง(LocalStorage) / JSON - Object ํ์ ๋ณํ ๋ชฉ์ฐจ1. localStorage2. localStorage์ JSON 1. ๋ก์ปฌ์คํ ๋ฆฌ์ง ๊ฐ๋ localStorage๋ ํฌ๋กฌ๊ณผ ๊ฐ์ ์น ๋ธ๋ผ์ฐ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ๊ธฐ๋ฅ์ด๋ค.์ฆ ์น ์์ ์ฐ๋ฆฌ์ ๋ฐ์ดํฐ๋ค์ ์ ์ฅํ๋ ๊ฒ์ด๋ค. ๐ก ๋ก์ปฌ์คํ ๋ฆฌ์ง๋ฅผ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ๋ฅผ ๋ซ์๋ ์ ์ฅ๋์๋ ๋ฐ์ดํฐ๋ฅผ ๊ณ์ํด์ ์ ์งํ ์ ์๋ค. ๋ณดํต์ ์ฌ์ฉ์์ ๋ก๊ทธ์ธ์ ๋ณด๋ ์ค์ ๋ฑ์ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉํ๋๋ฐ,Key- Value ๊ฐ์ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค.localStorage.setItem("ํค", "๊ฐ"); ํค์๋ ๋ด๊ฐ ์ ์ฅํ๊ณ ์ถ์ DB ๋คํฑ์ด์ ์ด๋ฆ์ ์ ํด์ฃผ๋ ๊ฒ์ด๊ณ , ๊ฐ ๊ฐ์ ๊ฐ๊ฐ์ ๋ฐ์ดํฐ ๊ฐ์ ์๋ฏธํ๋ค. ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ์์ local Storage ๊ฐ ํ์ธํ๊ธฐํฌ๋กฌ ๋ธ๋ผ์ฐ์ ์์ localStorage๋ฅผ ํ์ธํ.. 2025. 3. 7. [DB] ๋กํน(Locking) ๋จ์ , ๋กํน๊ณผ ๋ณํ์ฑ, DB ๋กํน ๊ธฐ๋ฒ ๋กํน ๋จ์๋?๋กํน(locking) ๋จ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ง๊ทธ๋๋ก ‘์ ๊ทธ๋ ๋จ์’๋ฅผ ๋ํ๋ธ๋ค. ๋กํน ๊ธฐ๋ฒ์ด๋ ํ๋์ ํธ๋์ญ์ ์ด ๋ฐ์ดํฐ๋ฅผ ์์ธ์คํ๋ ๋์, ๋ค๋ฅธ ํธ๋์ญ์ ์ด ํด๋น ๋ฐ์ดํฐ ํญ๋ชฉ์ ์์ธ์ค ํ ์ ์๋๋ก ํ๋ ๋ณํ ์ ์ด ๊ธฐ๋ฒ์ด๋ค. ‘๋์์ฑ ์ ์ด ๊ธฐ๋ฒ’ ์ด๋ผ๊ณ ๋ ํ๋ค.์ฌ๊ธฐ์์ ๋ก(lock)์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๋จ์๋ผ๊ณ ๋ณผ ์ ์๋ค.๋ง์น ์ด์์ฒด์ ์ ์ค๋ ๋ ์ค์ผ์ค๋ง์ฒ๋ผ, ํ ๋ฒ์ ํ๋๋ง ์ฌ์ฉํ๋๋ก ํ๋ ๋จ์๋ฅผ ‘๋กํน ๋จ์’๋ผ๊ณ ํ๋ค.์ค์ง์ ์ธ ์์๋ฅผ ๋ค์ด๋ณด์๋ฉด,ํ๋ก์ ํธ๋ฅผ ์งํํ ๋ ํ์๊ณผ DB๋ฅผ ๊ด๋ฆฌํด์ผํ๋ ์ผ์ ๋น๋ฒํ๋ค. ๋ง์ฝ ๋ด๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์์ ํ๋ ๋์ ๋ค๋ฅธ ํ์๋ ๋์์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฑด๋ค๊ฒ ๋ ๊ฒฝ์ฐ, ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์ฌ๋ฐ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. โ๏ธ์ด ๊ฒฝ์ฐ, ๋กํน.. 2025. 2. 26. [GUTS world tour] 24.09.20 ์ฌ๋ฆฌ๋น์ ๋ก๋๋ฆฌ๊ณ ๋ดํ ..๐ซง๐งโ๏ธ ์ฌ์ง์ผ๋ก ๋์ฒดํ๋ ํ๊ธฐ.. (*ห๏ธถห*).๏ฝก.:*โก 24.09.30 ํ๋์ ๊ตฌ๋ฉ์ด ๋ซ๋ฆฐ๋ฏ ์์์ง๋ ๋น๋ฅผ ๋ซ๊ณ ์ ์ค ๋์ฐฉ ! ๐จ# ์ ์ผ ๋จ๋ฆฌ๋ ์๊ฐใ ๊ณต์ฐ ์์ ์ ์๊ฐ๋ณด๋ค ์ค์์ ๊ฐ๊น์์ ์ข์๋ค์ค๋น ๋ ๋๋ฌด ์ ๋ ๋ถ๋ฌ . . ♥ # ์์ ๋ฑ์ฅ์ด์ ๐ซง ๐ซถ๐ป ๋๊ตฐ๊ฐ ๋ ๊ฐ ๊ฑฐ๋ ๋ฌป๋๋ค๋ฉด๋น์ฅ yes. vampire enough for you ๋ฃ๊ณ ์ถ์๋ ํ๋ฆฌ ๋ค ๋ถ๋ฌ์คฌ๋ค ํํ์ฝ์ํธ์์ ๊ฝํ ๋ ธ๋๋ ๋ช ๊ณก ์ป์ด ์ง์ผ๋ก๐ชฝ• get him back !• all-american bitch• enough for you• bad idea right?• teenage dream♥ 2025. 2. 20. ์ด์ 1 2 3 4 ยทยทยท 9 ๋ค์