๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

โ—๏ธfirebase store์—์„œ๋Š” ๋ถ€๋ถ„ ํ…์ŠคํŠธ ๊ฒ€์ƒ‰์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ex) ๊ท€์—ฌ์šด ํ˜ธ๋‘๋ผ๋Š” ์œ ์ €๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ, ํ˜ธ๋‘๋ผ๊ณ  ๊ฒ€์ƒ‰ํ•˜๋ฉด ์ฟผ๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ ‘๋‘์–ด๊ฐ€ ์ผ์น˜ํ•˜๋„๋ก ์ž…๋ ฅํ•ด์•ผ ์ฐพ๊ณ ์žํ•˜๋Š” ์œ ์ €๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค ์ด์™€ ๊ฐ™์€ ์ƒํ™ฉ์ด๋ผ๋ฉด, ๊ฒ€์ƒ‰๊ธฐ๋Šฅ์— ํฐ ์˜๋ฏธ๊ฐ€ ์—†๋Š”๊ฒƒ ๊ฐ™์•„ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด๋กœ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•ด๊ฒฐํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.  export const cleaningText = (text: string): string => { // ํŠน์ˆ˜๋ฌธ์ž ๋ฐ ๊ณต๋ฐฑ ์ œ๊ฑฐ, ๋‹ค์–‘ํ•œ ์–ธ์–ด ์ง€์› const regEx = /[`~!@#$%^&*()_|+\-=?;:'",.\{\}\[\]\\\/ ]/gim; const cleanText = text.replace(regEx, "").toLowerCase(); return ..
CSR์˜ ๋Œ€ํ‘œ์ ์ธ ์ดˆ๊ธฐ ๋กœ๋”ฉ์†๋„๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—…๋“ค์„ ์ˆ˜ํ–‰ํ•ด๋ณด์•˜๋‹ค. 1. React.lazy์™€ Suspense ์ ์šฉํ•˜๊ธฐ SPA์˜ ๋Œ€ํ‘œ์ ์ธ ๋‹จ์ ์œผ๋กœ, ์ตœ์ดˆ ๋กœ๋“œ์‹œ ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›๊ธฐ ๋•Œ๋ฌธ์—, ์ดˆ๊ธฐ ๋กœ๋”ฉ์†๋„๊ฐ€ ๊ธธ์–ด์ง„๋‹ค๋Š” ์ ์ด ์žˆ๋‹ค. ์ด๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋Œ€ํ‘œ์ ์ธ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์ค‘ ํ•˜๋‚˜๊ฐ€ lazy Loading์ด๋‹ค. ๋™์  load  ํ•ด๋‹น ๋ชจ๋“ˆ์ด ํ•„์š”ํ•  ๋•Œ๋งŒ ๋กœ๋“œ → ์ฝ”๋“œ ์Šคํ”Œ๋ฆฌํŒ…(code splitting)๊ณผ ์ง€์—ฐ ๋กœ๋”ฉ(lazy loading)์„ ๊ฐ€๋Šฅ → ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ํŽ˜์ด์ง€๋‚˜ ๊ธฐ๋Šฅ์— ์ ‘๊ทผํ•  ๋•Œ ํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค๋งŒ ๋‹ค์šด๋กœ๋“œ๋ฉ๋ƒฅ์ƒํ™œ ์„œ๋น„์Šค์˜ ๋ผ์šฐํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋˜์–ด ์žˆ๋‹ค.const PATHS = { main: "/main", logIn: "/", signUp: "/signup", f..
์ข‹์•„์š”๋Š” ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋Šฅ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์„ฑ๋Šฅ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๋Š”๊ฒƒ์ด ๋” ํšจ์œจ์ ์ด๋ผ๊ณ  ํŒ๋‹จํ•˜์—ฌ ์ด์— ๋Œ€ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์˜€๋‹ค. ๊ฒŒ์‹œ๊ธ€๊ณผ ๋Œ“๊ธ€, ๋Œ€๋Œ“๊ธ€์— ์ข‹์•„์š”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ตฌํ˜„๋˜์–ด ์žˆ๊ณ , ์ข‹์•„์š”์— ๋Œ€ํ•œ collection ๋˜ํ•œ ๋ถ„๋ฆฌํ•ด๋‘๊ณ , post์™€ comment๋Š” likeCount ํ•„๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ, ์ข‹์•„์š”๊ฐ€ ๋ณ€๊ฒฝ๋ ๋•Œ๋งˆ๋‹ค ์ฟผ๋ฆฌ๋ฅผ ํ•˜์ง€ ์•Š๋„๋ก ํ•˜์˜€๋‹ค.  ๐Ÿ“Ž DB collection ์ฐธ๊ณ https://s-organization-335.gitbook.io/meongnang Firebase DB ์„ค๊ณ„ | ์„ฑ๋Šฅ ์ตœ์ ํ™” & ๊ธฐ์ˆ ์  ์˜์‚ฌ๊ฒฐ์ •๐Ÿ‘ค User Users FieldType ใ„ด Following FieldType ใ„ด Follower FieldType Follow ์ •๋ณด๋ฅผ User ํ…Œ์ด๋ธ”์—์„œ ํ•œ๋ฒˆ..
์ด๋ฒˆ ์ฃผ ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ?์ด๋ฒˆ์ฃผ์ฐจ๋™์•ˆ์—, ๋งŽ์€ ๊ธฐ๋Šฅ๋“ค์„ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.์œ ์ € ํ”„๋กœํ•„ ์ •๋ณด ์ƒ์„ฑ, ์ˆ˜์ •๊ณผ ์œ ์ € ํŒ”๋กœ์ž‰, ํŒ”๋กœ์›Œ , ํฌ์ŠคํŠธ CRUD์— ๋Œ€ํ•ด ๊ตฌํ˜„์„ ํ•˜์˜€๋‹ค. ํ•ด๋‹น ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด, ์–ด๋–ค ๊ธฐ์ˆ ์  ์˜์‚ฌ๊ฒฐ์ •์„ ๊ฑฐ์ณค๋Š”์ง€?ํŒ”๋กœ์ž‰, ํŒ”๋กœ์›Œ์™€ ์ดํ›„ ๊ตฌํ˜„ํ•  ์ข‹์•„์š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ๋ชจ๋‘ ์œ ์ €์™€ ๊ด€๋ จ์ด ์žˆ๊ณ   ์–ด๋–ป๊ฒŒ ํ•ด์•ผ db๋ฅผ ์ข€ ๋” ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผํ• ์ง€ ์ƒ๊ฐํ•˜๋ฉด์„œ collection์„ ์„ค๊ณ„ํ•ด๋ณด์•˜๋˜๊ฒƒ๊ฐ™๋‹ค. ์ฒ˜์Œ์— ๋‹จ์ˆœํ•˜๊ฒŒ, ํŒ”๋กœ์ž‰, ํŒ”๋กœ์›Œ๋ฅผ ํ• ๋•Œ ์–‘์ธก์˜ db์— ์ €์žฅํ•˜๋ฉด ๋‚ด์ž…์žฅ์—์„  ๋‹จ์ˆœํ•œ ๋กœ์ง์œผ๋กœ ํŽธ๋ฆฌํ•˜์ง€๋งŒ ์„œ๋ฒ„ ์ž…์žฅ์—์„œ ๊ตณ์ด ์–‘์ชฝ์„ ์ €์žฅํ•ด์•ผํ•˜๋‚˜? ์„œ๋ฒ„์ชฝ๋„ ์ƒ๊ฐํ•ด๋ณด๋Š” ์‹œ๊ฐ„์„ ๋งŽ์ด ๊ฐ€์ง€๋ ค๊ณ  ํ–ˆ๋˜๊ฒƒ ๊ฐ™๋‹ค. ์–ด์ฐจํ”ผ ๊ทธ๋Ÿผ ๋ชจ๋“  ์ฟผ๋ฆฌ๋ฅผ ํ•ด์•ผํ•˜๋Š”๊ฒƒ์— ๊ทธ๊ฒŒ ๋” ๋น„ํšจ์œจ์ ์ด๊ธฐ์— ๊ฒฐ๊ตญ์€ ์–‘์ชฝ์— ์ €์žฅํ•˜๊ธฐ๋กœ ํ•˜์˜€๋‹ค. ๊ทธ๋ฆฌ๊ณ , lik..
๋กœ๊ทธ์ธ ์ƒํƒœ ์œ ์ง€ ๋กœ๊ทธ์ธ ์ƒํƒœ ์ „์—ญ ๊ด€๋ฆฌfirebase๋Š” ๋กœ๊ทธ์ธ์ด๋‚˜ ํšŒ์›๊ฐ€์ž…์„ ํ•˜๋ฉด, ์ด์™€ ๊ฐ™์ด user์ •๋ณด๋ฅผ ๋ฆฌํ„ดํ•ด์ค€๋‹ค.์ด ์œ ์ € ์ •๋ณด๋ฅผ ํ†ตํ•ด ๋กœ๊ทธ์ธ ์ƒํƒœ์™€, ํ”„๋กœํ•„, ๋ณธ์ธ์˜ ๊ฒŒ์‹œ๊ธ€/๋Œ“๊ธ€ ์—ฌ๋ถ€๊ฐ™์€ ์ž‘์—…๋“ค์„ ํ• ๊ฒƒ์ด๋ฏ€๋กœ ์ „์—ญ(zustand)์œผ๋กœ user์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.์ฒ˜์Œ์—” ์ƒˆ๋กœ๊ณ ์นจ์ด ๋ฐœ์ƒํ•ด๋„ ์ „์—ญ ์ƒํƒœ ์ดˆ๊ธฐํ™”๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก, zustand์˜ persist ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ localStorage์— ๋‹ด์•„ ์ด ๋กœ๊ทธ์ธ ์ƒํƒœ(์œ ์ € ์ •๋ณด ์กด์žฌ ์—ฌ๋ถ€)๋ฅผ ์œ ์ง€๊ฐ€ ๋˜๋„๋ก ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.ํ•˜์ง€๋งŒ, ์ฐพ์•„๋ณด๋‹ˆ firebase ์ธ์ฆ ์‹œ์Šคํ…œ์ด ์‚ฌ์šฉ์ž์˜ ๋กœ๊ทธ์ธ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด, ์ธ์ฆ ํ† ํฐ์„ ์‚ฌ์šฉํ•˜๊ณ  ์ด ์ธ์ฆํ† ํฐ์˜ ์‹œ๊ฐ„์ด ์•ฝ 1์‹œ๊ฐ„ ์ •๋„์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ด ํ† ํฐ์ด ๋งŒ๋ฃŒ๋˜๊ฑฐ๋‚˜ ๊ฐฑ์‹ ์— ์‹คํŒจํ•˜๋ฉด ๋กœ์ปฌ์Šคํ† ๋ฆฌ์ง€์—๋Š” ๋กœ๊ทธ์ธ์ƒํƒœ์ด์ง€๋งŒ..
์ด๋ฒˆ ์ฃผ  ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ์€ ?์ด๋ฒˆ์ฃผ์— ๋“œ๋””์–ด ํ”„๋กœ์ ํŠธ์ฃผ์ฐจ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ๋‹ค.์ด๋ฒˆ์ฃผ์— ํ•ด์•ผํ•  ์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.1์ฃผ์ฐจํ™˜๊ฒฝ ์„ธํŒ… ๋ฐ ์™€์ด์–ด ํ”„๋ ˆ์ž„, ์œ ์ € ํ”Œ๋กœ์šฐ ์ž‘์—…ํŽ˜์ด์ง€ ๋ผ์šฐํŒ… ์„ค๊ณ„๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž…/์†Œ์…œ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„์ปดํฌ๋„ŒํŠธ ๋ฐ ๋ผ์šฐํŠธ์˜ ์ง€์—ฐ ๋กœ๋”ฉ ์•ฝ 2.5์ผ์ •๋„๊ฐ„ ์™€์ด์–ดํ”„๋ ˆ์ž„๊ณผ ์œ ์ €ํ”Œ๋กœ์šฐ๋ฅผ ๋งŒ๋“ค๊ณ , github commit, issue, PR ์„ธํŒ… ๋ฐ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์™€ ๋ผ์šฐํŒ…์„ ์„ค๊ณ„ํ•˜๋Š”๋ฐ ์•ฝ 3์ผ์ •๋„ ๊ฑธ๋ฆฐ๊ฒƒ ๊ฐ™๋‹ค. 4์ผ์ฐจ๋ถ€ํ„ฐ firebase๋ฅผ ์ด์šฉํ•œ ์ด๋ฉ”์ผ ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ•˜์˜€๋‹ค. ์ผ๋‹จ ๋ฉ˜ํ† ๋‹˜๊ป˜ ์งˆ๋ฌธ๋„ ๋“œ๋ฆฌ๊ธฐ ์œ„ํ•ด ๊ธฐ๋Šฅ์„ ๋จผ์ € ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, ์•„์ง ์ต์ˆ™์น˜ ์•Š๊ธฐ๋„ ํ•˜๊ณ , firebase๋ฅผ ์ฒ˜์Œ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋‹ˆ ๋ฌธ์„œ๋ณด๋ฉด์„œ ํ…Œ์ŠคํŠธํ•ด๋ณด๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ์งœ๋‹ค๋ณด๋‹ˆ api๋“ค์„ ๋‹ค ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ ์ž‘์„ฑํ–ˆ..
ํŒ€ ์Šคํ„ฐ๋””์—์„œ ์–ป์€ ์ธ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ฌด์—‡์ธ๊ฐ€์š”?์–ด๋Š๋ง ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฃผ์ฐจ๊ฐ€ ๋๋‚˜๊ฒŒ๋˜์—ˆ๋‹ค.์ดˆ๋ฐ˜์—” ๋ฌธ์ œ ๋‚œ์ด๋„๋„ ์–ด๋ ต์ง€ ์•Š์•˜๊ณ , ์‹œ๊ฐ„๋„ ์—ฌ์œ ๋กญ๊ณ , ์•„์ง ์˜์š•๋„ ๋„˜์ณ์„œ ํ•œ ๋ฌธ์ œ๋ฅผ ๋‹ค์–‘ํ•œ ์ ‘๊ทผ๋ฐฉ์‹์œผ๋กœ ํ’€์–ด๋ณด๋ ค๊ณ  ํ•˜๊ธฐ๋„ ํ–ˆ๊ณ ,ํŒ€์›๋“ค์—๊ฒŒ ๋ณด์—ฌ์ค„ ์ฝ”๋“œ๋‹ค ๋ณด๋‹ˆ ์ฝ”๋“œ๊ฐ€๋…์„ฑ์ด๋‚˜ ๋„ค์ด๋ฐ, ์ฃผ์„์— ์‹ ๊ฒฝ์„ ๋งŽ์ด์ผ๋Š”๋ฐ์ ์ฐจ ๊ฐˆ์ˆ˜๋ก ์ง€์น˜๊ณ ...์–ด๋ ต๊ณ .. ํ•˜๋ฃจ 8๋ฌธ์ œ๋ฅผ ๋ชฉํ‘œ๋กœ ๋ฌธ์ œ ํ’€๊ธฐ์— ๊ธ‰๊ธ‰ํ•˜๋‹ค๋ณด๋‹ˆ, ์ •๋‹ต ๋งž์ถ”๊ธฐ์—๋งŒ ์ดˆ์ ์„ ๋งž์ท„๋˜๊ฒƒ ๊ฐ™๋‹ค...๊ทธ๋ž˜๋„ 3์ฃผ๋ผ๋Š” ์งง์€ ์‹œ๊ฐ„๋‚ด์— ๋งŽ์€ ์„ฑ์žฅ์„ ํ•ด๋‚ธ๊ฒƒ ๊ฐ™์•„ ๋ฟŒ๋“ฏํ•˜๋‹ค. ํ•˜์ง€๋งŒ,  ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„๋‚ด์— ๋‚ด๊ฐ€ ๊ณผ์—ฐ ๋ช‡๋ฌธ์ œ๋‚˜ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณผ ์ˆ˜ ์žˆ์„๊นŒ ์‹ถ์€๋ฐ.. ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„ ํ•œ๋‹ฌ๋‚ด์—  ๊ธˆ์„ธ ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ‘๊ทผ์ด๋‚˜ ๊ฐ์„ ์žƒ์–ด๋ฒ„๋ฆด๊นŒ๋ด ์ข€ ๊ฑฑ์ •๋˜๊ธฐ๋„ ํ•œ๋‹ค...๊ทธ๋ž˜๋„ ์ผ๋‹จ ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„์—” ์ทจ์—… ์ €๋„ˆ ๋งˆ์ง€๋ง‰ ํ”„๋กœ์ ํŠธ๋ฅผ..
๐Ÿ“Œ  ์˜ค๋Š˜ ์ง„ํ–‰๋œ ๊ฐ•์˜์—์„œ ํ•™์Šตํ•œ ๋‚ด์šฉ์€ ๋ฌด์—‡์ธ๊ฐ€์š”? ์–ด๋Š๋ง ์ €๋ฒˆ์ฃผ์— ๋ชจ๋“  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜์—…์ด ๋๋‚˜๊ณ , ์˜ค๋Š˜์€ ์—ฌํƒœ ๋ฐฐ์šด๊ฒƒ๋“ค์„ ํ† ๋Œ€๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด์•˜๋‹ค.์˜ค๋Š˜์˜ ๋ฌธ์ œ๋“ค์€ ์–ด๋ ค์›Œํ–ˆ๋˜ ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰์ด๋‚˜, ๋‹ค์ต์ŠคํŠธ๋ผ, DP๊ฐ™์€ ๋ฌธ์ œ๋Š” ์—†์–ด์„œ ์–ด๋ ต์ง€ ์•Š๊ฒŒ ํ’€ ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.์ •ํ˜•ํ™”๋œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋“ค์€ ๋‚œ์ด๋„๊ฐ€ ์ข€ ์žˆ์–ด๋„ ์–ด๋Š์ •๋„ ํ’€๋ฆฌ๋Š”๊ฒƒ ๊ฐ™์€๋ฐ,๊ฐœ์ธ์ ์œผ๋กœ ํŒจํ„ด์„ ์ฐพ์•„์•ผํ•˜๋Š” ๊ทธ๋Ÿฐ ๋ฌธ์ œ๋“ค์ด ๊ฐ€์žฅ ์–ด๋ ค์šด๊ฒƒ ๊ฐ™๋‹ค. ๋งˆ์น˜ ๋ณด๋“œ๊ฒŒ์ž„ํ• ๋•Œ๋„ ์ด๋Ÿฐ๊ฑฐ ๋ชปํ•˜๊ณ  ์‹ซ์–ดํ•˜๋Š” ๋‚˜ ....ใ…œใ…œ๊ทธ๋ฆฌ๊ณ  ์•„์ง 2์ฐจ์› ๋ฆฌ์ŠคํŠธ๋‚˜ ์ข€ ๋ณต์žกํ•œ ๊ตฌํ˜„๋ฌธ์ œ๋“ค์„ ๋ณด๋ฉด ์ฝ”๋“œ๋กœ ์˜ฎ๊ธฐ๋Š”๊ฒŒ ์‰ฝ์ง€ ์•Š์€๊ฒƒ ๊ฐ™๋‹ค.์ด๋Ÿฐ ๊ตฌํ˜„์˜์—ญ์€ ๊ทธ๋ž˜๋„ ๋ฌธ์ œ๋ฅผ ๊พธ์ค€ํžˆ ํ’€๋‹ค๋ณด๋ฉด ๊ทน๋ณต๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.   ๐Ÿ“Œ ์ด๋ฒˆ ์ฃผ ์ง„ํ–‰๋œ ํŒ€ ์Šคํ„ฐ๋””์—์„œ ์–ป์€ ์ธ์‚ฌ์ดํŠธ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?์˜ค๋Š˜ ๋ฉ˜ํ† ๋ง์€ ๋‚ด์ผ๋กœ ..
Yuuuki
'๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (3 Page)