Deview๋ ๊ฐ๋ฐ์, ์ทจ์ค์๋ค์ ์ํ ์ฝ๋๋ฆฌ๋ทฐ ์น์ฌ์ดํธ๋ก, React์ TypeScript๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋ ๋ฐ์ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค.
- ๋ฐฐํฌ URL : https://nfe-1-1-3-deview.vercel.app/
- Test ID : test1234
- Test PW : test1234
ํ๋ก ํธ์๋
๋ฐฑ์๋
GitHub - shlee9999/deview-backend: deview ํ๋ก์ ํธ์ backend ๋ ํฌ์งํ ๋ฆฌ
๋ฐฐํฌ ํ๊ฒฝ
๋์์ธ ํ์
-
์ปค๋ฐ ์ปจ๋ฒค์
- Feat: ์๋ก์ด ๊ธฐ๋ฅ ์ถ๊ฐ
- Fix: ๋ฒ๊ทธ ์์
- Docs: ๋ฌธ์ ์์
- Refactor: ์ฝ๋ ๋ฆฌํํ ๋ง
- Chore: ๋น๋ ์ ๋ฌด ์์ , ํจํค์ง ๋งค๋์ ์์
- Style : ์ฝ๋ ํฌ๋งทํ , ์ธ๋ฏธ์ฝ๋ก ๋๋ฝ, ๊ธฐ๋ฅ ์ฝ๋ ๋ณ๊ฒฝ์ด ์๋ ๊ฒฝ์ฐ
-
์ฝ๋ ์ปจ๋ฒค์
-
์ปดํฌ๋ํธ
- rfc
- rfcn
type ComponentProps = { name: string; }; export const Component = ({ name }: ComponentProps) => { return <div>Component</div>; };
-
hook
export function useHook(){ ... }
-
ESLint, Prettier ์ฌ์ฉ
-
์์, ๋ณ์ ๋ช ๋ช ๊ท์น
- ๋ฒํผ
- buttonโbtn
- ๋ฐฐ์ด
- users (s)
- user + List(๋จ์๋ช + List)
- ๋ฒํผ
-
์ฝ๋ฐฑํจ์ โ ํ์ดํ
-
์ฃผ์
-
anchor?
-
Better Comments vscode ํ์ฅ
-
๊ธฐ๋ณธ ์ฃผ์ ์์ ๋ฐ๊พธ๊ธฐ - settings.json์ ๋ค์ ์ถ๊ฐ
"editor.tokenColorCustomizations": { "textMateRules": [ { "scope": ["comment", "comment punctuation.definition.comment"], "settings": { "foreground": "#EFDC05", "fontStyle": "" } } ] },
-
-
ํด๋ ๋ค์ด๋ฐ
- ์ปดํฌ๋ํธ ํ์ผ ๋ช ๋ช ๊ท์น
- ์ปดํฌ๋ํธ ์ด์ธ์ ํ์ผ ๋ช ๋ช ๊ท์น
- ์ปดํฌ๋ํธ ํด๋ - ํ์ค์นผ
- ์ต์์ ํด๋ - ์นด๋ฉ
-
์ด๋ฒคํธํธ๋ค๋ฌ ๋ค์ด๋ฐ
๋ฆฌ์ ๋ฒํผ
-
TailwindCSS
- ์ง๊ด์ ์ธ ์ ํธ๋ฆฌํฐ ํด๋์ค๋ก ๋น ๋ฅธ UI ๊ฐ๋ฐ ๊ฐ๋ฅ
- ์ปค์คํฐ๋ง์ด์ง์ด ์ฉ์ดํ๊ณ ๋ฒ๋ค ์ฌ์ด์ฆ ์ต์ ํ
- ๋ฐ์ํ ๋์์ธ ๊ตฌํ์ด ํธ๋ฆฌ
- ์ปดํฌ๋ํธ ๋จ์์ ์คํ์ผ๋ง์ผ๋ก ์ฌ์ฌ์ฉ์ฑ ํฅ์
Zustand
- ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ ์ํ ๊ด๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- Redux๋ณด๋ค ์ ์ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋
- Flux ํจํด์ ๋ฐ๋ฅด๋ ์์ธก ๊ฐ๋ฅํ ์ํ ํ๋ฆ
- TypeScript ์ง์์ด ์ฐ์ํ๋ฉฐ ๋ฌ๋์ปค๋ธ๊ฐ ๋ฎ์
React Query
- ์๋ฒ ์ํ ๊ด๋ฆฌ์ ํจ์จ์ ์ฒ๋ฆฌ
- ์ฃผ์ ๊ธฐ๋ฅ:
- ๋ฐ์ดํฐ ์บ์ฑ ๋ฐ ์๋ ๊ฐฑ์
- ์ ์ ํ ๋ฐ์ดํฐ ์ ์ง(Fresh & Stale)
- ์ตํฐ๋ฏธ์คํฑ ์ ๋ฐ์ดํธ ์ง์
- ๋ฌดํ ์คํฌ๋กค/ํ์ด์ง๋ค์ด์ ๊ตฌํ ์ฉ์ด
- ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ
- ESLint & Prettier: ์ผ๊ด๋ ์ฝ๋ ์คํ์ผ ์ ์ง
- TypeScript: ํ์ ์์ ์ฑ ํ๋ณด
- Vite: ๋น ๋ฅธ ๊ฐ๋ฐ ์๋ฒ ๋ฐ ๋น๋ ์ฑ๋ฅ
GitHub Flow๋ฅผ ์ฑํํ ์ฃผ์ ์ด์ ์ ํน์ง์ ์ฒด๊ณ์ ์ผ๋ก ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์ ํ ์ด์
- ์งง์ ๊ฐ๋ฐ ๊ธฐ๊ฐ์ ์ต์ ํ๋ ๋จ์ํ๊ณ ์ง๊ด์ ์ธ ์ํฌํ๋ก์ฐ
- ์ ์ํ ๋ฐฐํฌ์ ํจ์จ์ ์ธ ํ์
๋ธ๋์น ๊ตฌ์กฐ
- ๋จ์ผ ๋ฉ์ธ ๋ธ๋์น(main)๋ฅผ ์ค์ฌ์ผ๋ก ์ด์
- ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ํ ํผ์ฒ ๋ธ๋์น ์์ฑ ๋ฐ ๋น ๋ฅธ ๋ณํฉ
- ๋ธ๋์น ์ ๋ต์ด ๋จ์ํ์ฌ ์ด๊ธฐ ํ์ต ๊ณก์ ์ด ๋ฎ์
ํ์ ํ๋ก์ธ์ค
- Pull Request๋ฅผ ํตํ ์ฝ๋ ๋ฆฌ๋ทฐ ์์คํ
- ์๋ํ๋ ํ ์คํธ์ ๋ฐฐํฌ ํ๋ก์ธ์ค ์ง์
- ์ง์์ ์ธ ํผ๋๋ฐฑ๊ณผ ๊ฐ์ ์ด ๊ฐ๋ฅํ ๊ตฌ์กฐ
- ์ ์ฐํ๊ณ ๊ฐ๋ฒผ์ด ์ํฌํ๋ก์ฐ
- ๋น ๋ฅธ ํผ๋๋ฐฑ๊ณผ ์ง์์ ์ธ ๊ฐ์
- Front-End
๐ฆsrc โฃ ๐assets # ์ ์ ์์ โฃ ๐components # ์ปดํฌ๋ํธ โ โฃ ๐Common # ๊ณตํต ์ปดํฌ๋ํธ โ โฃ ๐LoginPage # ๋ก๊ทธ์ธ ํ์ด์ง ๊ด๋ จ โ โฃ ๐MainPage # ๋ฉ์ธ ํ์ด์ง ๊ด๋ จ โ โฃ ๐MyPage # ๋ง์ด ํ์ด์ง ๊ด๋ จ โ โฃ ๐PostCreatePage # ํฌ์คํธ ์์ฑ ๊ด๋ จ โ โฃ ๐PostDetailPage # ํฌ์คํธ ์์ธ ๊ด๋ จ โ โฃ ๐PostPage # ํฌ์คํธ ๋ชฉ๋ก ๊ด๋ จ โ โฃ ๐RankPage # ๋ญํน ํ์ด์ง ๊ด๋ จ โ โ ๐RegisterPage # ํ์๊ฐ์ ๊ด๋ จ โฃ ๐constants # ์์ โฃ ๐customTypes # ํ์ ์ ์ โฃ ๐hooks # ์ปค์คํ ํ โฃ ๐pages # ํ์ด์ง ์ปดํฌ๋ํธ โฃ ๐services # API ์๋น์ค โ โฃ ๐auth # ์ธ์ฆ ๊ด๋ จ โ โฃ ๐comment # ๋๊ธ ๊ด๋ จ โ โฃ ๐notification # ์๋ฆผ ๊ด๋ จ โ โฃ ๐post # ๊ฒ์๊ธ ๊ด๋ จ โ โฃ ๐report # ์ ๊ณ ๊ด๋ จ โ โ ๐user # ์ฌ์ฉ์ ๊ด๋ จ โฃ ๐stores # ์ํ ๊ด๋ฆฌ โฃ ๐utils # ์ ํธ๋ฆฌํฐ โ ๐App.tsx # ์ฑ ์ง์ ์
- Back-End
๐ฆsrc โฃ ๐.vscode โ โ ๐settings.json โฃ ๐config โ โฃ ๐database.js โ โฃ ๐server.js โ โ ๐socket.js โฃ ๐controllers โ โฃ ๐authController.js โ โฃ ๐commentController.js โ โฃ ๐notificationController.js โ โฃ ๐postController.js โ โฃ ๐reportController.js โ โ ๐userController.js โฃ ๐middleware โ โฃ ๐authMiddleware.js โ โฃ ๐commentMiddleware.js โ โฃ ๐corsMiddleware.js โ โฃ ๐index.js โ โ ๐postMiddleware.js โฃ ๐models โ โฃ ๐Comment.js โ โฃ ๐Like.js โ โฃ ๐Notification.js โ โฃ ๐Post.js โ โฃ ๐Report.js โ โฃ ๐Scrap.js โ โฃ ๐Thumb.js โ โฃ ๐User.js โ โ ๐View.js โฃ ๐routes โ โฃ ๐authRoutes.js โ โฃ ๐commentRoutes.js โ โฃ ๐index.js โ โฃ ๐notificationRoutes.js โ โฃ ๐postRoutes.js โ โฃ ๐reportRoutes.js โ โ ๐userRoutes.js โฃ ๐utils โ โ ๐getPaginated.js โฃ ๐.env โฃ ๐.gitignore โฃ ๐app.js โฃ ๐package-lock.json โ ๐package.json
- ์ ์ฒด ๊ฐ๋ฐ ๊ธฐ๊ฐ : 24/10/22 ~ 24/11/06
- UI ๊ตฌํ : 24/10/22~24/10/25
- ๊ธฐ๋ฅ ๊ตฌํ : 24/10/25 ~ 24/11/06
- GitHub Projects์ Issues๋ฅผ ์ฌ์ฉํ์ฌ ์งํ ์ํฉ์ ๊ณต์
- ๋ฒ๊ทธ ๋ฆฌํฌํธ, ๊ธฐ๋ฅ ์์ฒญ ๋ฑ ๋ชฉ์ ์ ๋ฐ๋ฅธ ์ด์ ํ ํ๋ฆฟ ๊ตฌ์ฑ
optimistic update
- ๊ฒ์๋ฌผ ์กฐํ
- ๋ฐฐ๋
- ๊ฐ์ฅ ์กฐํ์๊ฐ ๋ง์ ๊ฒ์๋ฌผ
- ์ค๋ ์ฌ๋ฆฐ ๊ฒ์๋ฌผ ์ค ์กฐํ์๊ฐ ๊ฐ์ฅ ๋ง์ ๊ฒ์๋ฌผ
- ๋ต๋ณ์ ์ข์์๊ฐ ๊ฐ์ฅ ๋ง์ด ๋ฌ๋ฆฐ ๋ฆฌ๋ทฐ์ด
- ๊ฐ์ฅ ์ข์์๊ฐ ๋ง์ด ๋ฌ๋ฆฐ ์ธ๊ธฐ ๊ฒ์๊ธ 3๊ฐ
- ๋ต๋ณ์ด ๋ฌ๋ฆฌ์ง ์์ ์ง๋ฌธ 2๊ฐ
- ์ต์ ๊ฒ์๊ธ
- ์๋ฌ/๋ก๋ฉ ๋์ฒด UI
- ๋ฐฐ๋
- ๊ฒ์๋ฌผ ๋ฆฌ์คํธ ์กฐํ
- ์ ๋ ฌ ํ ๊ธ๋ฒํผ์ ํตํ ์ธ๊ธฐ/์ต์ ๊ฒ์๊ธ ๋ณ๊ฒฝ
- ๋ฌดํ์คํฌ๋กค
- ์๋ฌ/์ด๊ธฐ ๋ก๋ฉ ๋์ฒด UI
- ์ ์ ๋ญํน
- ํด๋น ์ ์ ๊ฐ ๋จ ๋๊ธ์ ์ถ์ฒ์๊ฐ ๋ง์ ์์ผ๋ก ์์ ๊ฒฐ์
- ์ ์ ID, ์ํ ๊ทธ๋ฃน, ์ถ์ฒ์, ๊ฒ์๊ธ ๋ณด๊ธฐ
- ๊ฒ์๊ธ ๋ณด๊ธฐ๋ ํด๋น ์ ์ ๊ฐ ์์ฑํ ๊ฒ์๊ธ์ ๋ณผ ์ ์์
- ๊ฒ์ ๊ธฐ๋ฅ
- ๊ฒ์์ด๋ฅผ ์ ๋ ฅํ๊ฑฐ๋ ํํฐ๋ฅผ ์ ํํด ๊ฒ์ํ ์ ์์
- ํํฐ๋ง ์ ํ ๊ฐ๋ฅํ๊ณ ์ต๋ 3๊ฐ ์ ํํ ์ ์์
- ๊ฒ์ ๋ชฉ๋ก ํด๋ฆญํ๋ฉด ํด๋น PostDetailPage๋ก ์ด๋
- ๋ก๊ทธ์ธ ๊ธฐ๋ฅ
- ์์ด๋
- ๋น๋ฐ๋ฒํธ
- ํ์๊ฐ์
๊ธฐ๋ฅ
- ์์ด๋
- ๋น๋ฐ๋ฒํธ
- ์ด๋ฆ
- ๊ทธ๋ฃน
- ๊ฒ์๊ธ ์์ฑ
- ๊ฒ์๊ธ ์ ๋ชฉ
- ๊ฒ์๊ธ ๋ด์ฉ
- ๊ด๋ จ ๋ด์ฉ์ ๋ํ ์ธ์ด ๋ฐ ๋ฒ์ ์ ๋ณด
-
-
- ๋ฒํผ์ผ๋ก ์ถ๊ฐ, ์ญ์
-
-
- ์ง๋ฌธํ๊ณ ์ถ์ ์ฝ๋ ์์ฑ
- Quill ์๋ํฐ๋ฅผ ์ด์ฉํด ์ฝ๋์ ๊ฒฝ์ฐ ํ์ด๋ผ์ดํ
- ๊ฒ์๊ธ ์ธ๋ถ
- ๊ฒ์๊ธ ์ ๋ชฉ
- ์์ฑ์ผ, ์์ฑ์, ์ธ์ด ๋ฐ ๋ฒ์ ์ ๋ณด
- ๋ด์ฉ ๋ฐ ์ฝ๋
- ๋ณธ์ธ์ด ์์ฑํ ๊ฒ์๊ธ์ ์์ ๋ฐ ์ญ์
- ๊ฒ์๊ธ์ ์ข์์, ์คํฌ๋ฉ, ์ ๊ณ
- ๋๊ธ ๊ธฐ๋ฅ
- ๋๊ธ ์ถ์ฒ ๊ฐ๋ฅ
- ๋ณธ์ธ์ด ์์ฑํ ๋๊ธ ์์ ๋ฐ ์ญ์
- ๊ฒ์๊ธ ์์
- ๊ฒ์๊ธ ์ ๋ชฉ, ๋ด์ฉ, ์ธ์ด ๋ฐ ๋ฒ์ , ์ฝ๋ ์์
- ๋ง์ดํ์ด์ง
- ํ๋กํ (ํ์๊ฐ์ ํ๋ฉด ๋๋ค ์ง์ )
- ์ด๋ฆ(๊ทธ๋ฃน)
- ๋ด ๊ฒ์๊ธ - ๋ด๊ฐ ์์ฑํ ๊ฒ์๊ธ
- ๋ด ๋๊ธ - ๋ด๊ฐ ์์ฑํ ๋๊ธ
- ์คํฌ๋ฉ - ๋ด๊ฐ ์คํฌ๋ฉํ ๊ธ
- ๋ด ์ ๋ณด - ๋น๋ฐ๋ฒํธ ์ ๋ ฅ ์ ๋ด ์ ๋ณด ์ด๋ ๋ฐ ์์
- ๋ด ๊ฒ์๋ฌผ์ ๋๊ธ ๋ฌ๋ฆด ๊ฒฝ์ฐ
- ๋ด ๊ฒ์๋ฌผ์ ์ถ์ฒ
- ์ ๊ณ 5ํ ์ด์
- ์ญ์ ๊ฐ๋ฅ, ์ ์ฒด ํ์ธ ๊ฐ๋ฅ
- ์๋ฌ ํ์ด์ง
-
React Quill
- ์ ์ฅํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ๊ณผ์ ์์, ๋ฐ์ดํฐ ์์ค
- ์๋ํฐ๊ฐ ๋ฐ์ดํฐ ํ์ ๋ณํ ๊ณผ์ ์์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ฐ๊พธ๋ฉด์ ๊ธฐ์กด ๋ฐ์ดํฐ์ ์์ค์ด ์ผ์ด๋จ
- CodeViewer์์ react quill์ read only ๋ก ๋ณด์ฌ์คฌ์ผ๋, ์ด๋ฌํ ๋ฌธ์ ๋ก react-quill์์ด ๊ทธ๋ฅ html ํ๊ทธ๋ก ๋ถ๋ฌ์ค๋ ๋ฐฉ์์ผ๋ก ๋ณํ
- ์ด๋ highlight.js๋ฅผ ์ฌ์ฉํด์ highlighter ์ ์ฉ
-
์กด์ฌํ์ง ์๋ ์์ฑ์ ์ ๊ทผํ๊ฑฐ๋ API๊ฐ ์๋ฌ๋ฅผ ๋ฐํํ ๊ฒฝ์ฐ ํ์ด์ง ์ ์ฒด๊ฐ ๋ค์ด๋๋ ๋ฌธ์
- ์ต์ ๋ ์ฒด์ธ์ ํตํด ์กด์ฌํ์ง ์กด์ฌ์ฌ๋ถ๋ฅผ ๋ฏธ๋ฆฌ ๊ฒ์ฌ
- react-error-boundary๋ฅผ ๋์ ํด ์๋ฌ๋ฐ์ ์ fallback ์ปดํฌ๋ํธ๋ก ๋์ฒด๋๋๋ก ๋ณ๊ฒฝ
- MongoDB ์ฉ๋ ์ ํ โ ์ด๋ฏธ์ง ์
๋ก๋ ์ ํ โ
boring-avatar
์ฌ์ฉํ์ฌ DB ์ฐจ์ง X - ์ข์์, ์คํฌ๋ฉ๋ง ํด๋ updatedAt ๋ณ๊ฒฝ๋จ โ
timestamp: false
- MongoDB timestamp๊ฐ UTC ์๊ฐ์ผ๋ก๋ง ์ ์ฅ๋จ โ ๋ชจ๋ ์คํค๋ง์ createdAt, updatedAt์ getter์ moment ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉํ์ฌ ํด๊ฒฐ
- ์์ ๊ธฐ๋ฅ์ ํ๋ ๋ฐ ์ธ๋ถํ
- ์์ ์ง๋จ ๋ฟ ์๋๋ผ ์์ ํ์ฌ/ํ๊ต๋ฅผ ์ถ๊ฐ
- โ๋ธ๋ผ์ธ๋โ์ ์ ์ฌํ ์ธ์ฆ์ ๋ก ๋ณ๊ฒฝ
- ๊ฒ์ฆ๋ ์ ๋ช ํ ํ์ฌ์ ๊ฐ๋ฐ์์๊ฒ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์ ์ ์๋ ๊ธฐํ
- ํน์ ์ ์ ์๊ฒ ์ฝ๋๋ฆฌ๋ทฐ ์ ์ฒญ
- ์ ๋ช ํ์ฌ์ ์์ํ ๊ฐ๋ฐ์์๊ฒ ์ง์ ๋ฆฌ๋ทฐ๋ฅผ ์ ์ฒญํ ์ ์๋ ๋ฐฉ์
- ๋ฆฌ๋ทฐ์ด ์ง์ ์ ์ ์ฒญ๋น๊ฐ ๋ฐ์ : ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฆฌ๋ทฐ์ด์๊ฒ ์ ๋ฌ๋๋ฉฐ ์ฝ๊ฐ์ ์์๋ฃ๋ฅผ ํตํ ์์ต๊ตฌ์กฐ
- ์
์ ์์คํ
- ๋ฆฌ๋ทฐ์ด์ ํ๋์ ๋ฐ๋ฅธ ์ ์ (๋ฏธ์ ) ์ง์ฒ๋ ์์น
- ์ผ์ ์์น ๋ฌ์ฑ ์ ๋ณด์์ ํตํด ๊ฒ์๊ธ/๋๊ธ์์ ์์ ์ ํ๋กํ์ ์ฅ์ํ ์ ์๋ ๋ฑ์ง,์นญํธ๋ฅผ ํ๋๊ฐ๋ฅ
- ๋ฑ์ง๋ฅผ ํตํด ๊ฐ์ ์ ์ผ๋ก ๋ฆฌ๋ทฐ์ด์ ๋ต๋ณ ํ๋ฆฌํฐ์ ์ ๋ขฐ๋๋ฅผ ์ ์ ์์
- ๋ ์ธ๋ถํ๋ ์ ๋ ฌ ๋ฐ ํํฐ๋ง
- ๋ ์ธ๋ถํ๋ ๊ฒ์๊ธ/๋๊ธ ํ๊ฐ ๊ธฐ๋ฅ
- ๊ฒ์๊ธ ์์ ์ ์ฅ
- ๋๋๊ธ ๊ธฐ๋ฅ
- ์ค๋ซ๋์ ๋ต๋ณ์ ๋ชป ๋ฐ์ ๊ฒ์๊ธ์ ์ํ AI ๋ต๋ณ
- ๊นํ๋ธ ํ์ผ๋งํฌ๋ฅผ ๋ณธ๋ฌธ์ ์ฒจ๋ถํ๋ฉด ํด๋น ๋ด์ฉ์ด ์ฝ๋๋ฐ์ค๋ก ๋ณด์ฌ์ง๋ ๊ธฐ๋ฅ
React Query ํ์ฉ์ ๋ํด ๋ ๊น์ด ์ดํดํ ์ ์์๊ณ , ์ฆ๊ฑฐ์ ์ต๋๋ค!
ํ์ ๊ฒฝํ์ ์์ ์ ์๋ ์ข์ ํ๋ก์ ํธ์์ต๋๋ค. ์ง๊ธ๊น์ง ํ๋ก์ ํธ ์ค ๊ฐ์ฅ ๋ง์ ๋์์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ฐ์ด ๊ฐ๋ฐํ๋ ๋์ ๋๋ฌด ์ฌ๋ฐ์๊ณ ๋ง์ด ๋ฐฐ์ ์ต๋๋ค! ๐
ํ์๋ถ๋ค ๋๋ถ์ ํฌ๊ฒ ๋งํ๋ ๋ถ๋ถ ์์ด ์ ๋ง๋ฌด๋ฆฌํ ์ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค!
์ฃผ๋ก ๋ฐฑ์๋๋ฅผ ๋งก๊ฒ ๋์ด ๋ชจ๋ฅด๋ ๋ถ๋ถ์ด ๋ง์์ง๋ง ๊ทธ๋งํผ ๋ง์ด ๊ณต๋ถํ ์ ์์๋ ๊ฒ ๊ฐ๊ณ ,
ํ๋ก ํธ๋ ํ์๋ถ๋ค ๋ชจ๋ ์ด์ฌํ ํด์ฃผ์ ์ ์งง์ ์๊ฐ ๋ด์ ์์ฑํ ์ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค!
ํ์๋ค ๋๋ถ์ ์งง์ ๊ธฐ๊ฐ์์๋ ์์ฑํ ์ ์์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ถ์๊ธฐ๋ ๋๋ฌด ์ข์๊ณ ์ฆ๊ฒ๊ฒ ๊ฐ๋ฐํ๋ค๋ ๊ฒ์ด ์ด๋ค ๊ฑด์ง ์๊ฒ๋ ์๊ฐ์ด์์ต๋๋ค!