๐ฌ ์๋ค๋ง ๋ฌด๋น๋ก๊ทธ - ์ํ ๊ฐ์ ๊ธฐ๋ก & ๋ณ์ ๋ค์ด์ด๋ฆฌ
cinema-movie-diary-laravel
๋ฌธ์ ์ค๋ช
๐ฌ ํ๋ก์ ํธ ๊ฐ์
์ํ๋ฅผ ์ข์ํ๋ ์ฌ๋๋ค์ ์ํ ๊ฐ์ธ ์ํ ๊ฐ์ ๊ธฐ๋ก ํ๋ซํผ์ ๋๋ค. ๋ณธ ์ํ๋ฅผ ๋ฑ๋กํ๊ณ , ๋ณ์ ๊ณผ ํ ์ค ํ์ ๋จ๊ธฐ๋ฉฐ, ์ฅ๋ฅด๋ณ๋ก ๋ถ๋ฅํ์ฌ ๋๋ง์ ์ํ ์์นด์ด๋ธ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
Laravel 13.x + Blade ํ ํ๋ฆฟ + Tailwind CSS๋ก ๊ตฌํํ๋ฉฐ, SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ๊ฒ ์์ํ ์ ์์ต๋๋ค. ํ๋ก๊ทธ๋๋ฐ ์ ๋ฌธ์๋ AI ๋๊ตฌ์ ๋์์ ๋ฐ์ ์ถฉ๋ถํ ์์ฑํ ์ ์๋ ์์ค์ ๋๋ค.
โจ ํต์ฌ ๊ธฐ๋ฅ
ํ์ ๊ธฐ๋ฅ
- ์ํ ๋ฑ๋ก ํผ (์ ๋ชฉ, ๊ฐ๋ , ์ฅ๋ฅด, ๊ด๋์ผ, ๋ณ์ , ํ ์ค ํ)
- ์ํ ๋ชฉ๋ก ํ์ด์ง (์นด๋ ํํ ๊ทธ๋ฆฌ๋ ๋ ์ด์์)
- ๋ณ์ ์๊ฐํ (๋ณ ์์ด์ฝ 5๊ฐ๋ก ํํ)
- ์ฅ๋ฅด๋ณ ํํฐ๋ง (์ก์ , ๋๋ผ๋ง, SF, ์ฝ๋ฏธ๋, ๋ก๋งจ์ค ๋ฑ)
- ์ํ ์์ธ ํ์ด์ง
- ์ํ ์์ /์ญ์ ๊ธฐ๋ฅ
- ๋ฐ์ํ ๋์์ธ (๋ชจ๋ฐ์ผ/ํ๋ธ๋ฆฟ/๋ฐ์คํฌํฑ)
์ ํ ์ถ๊ฐ ๊ธฐ๋ฅ (๋ณด๋์ค)
- ํฌ์คํฐ ์ด๋ฏธ์ง URL ์ ๋ ฅ ๋ฐ ํ์
- ๊ด๋ ์ฐ๋๋ณ ํต๊ณ (์ฌํด ๋ณธ ์ํ ์)
- ํ๊ท ๋ณ์ ๊ณ์ฐ ๋ฐ ํ์
- ๊ฒ์ ๊ธฐ๋ฅ (์ ๋ชฉ/๊ฐ๋ ๋ช )
- ์ข์ํ๋ ์ํ ์ฆ๊ฒจ์ฐพ๊ธฐ ํ ๊ธ
- ๋คํฌ๋ชจ๋ ์ง์
๐ฏ ํ์ต ๋ชฉํ
- Laravel ๊ธฐ๋ณธ ๊ตฌ์กฐ ์ดํด (๋ผ์ฐํธ, ์ปจํธ๋กค๋ฌ, ๋ทฐ)
- Blade ํ ํ๋ฆฟ ๋ฌธ๋ฒ ์ตํ๊ธฐ
- Eloquent ORM์ ํ์ฉํ CRUD ๊ตฌํ
- Tailwind CSS๋ก UI ๊ตฌ์ฑ
- ํผ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฐ ์๋ฌ ์ฒ๋ฆฌ
- ์ปดํฌ๋ํธ ๊ธฐ๋ฐ UI ์ค๊ณ
์ ์ฝ ์กฐ๊ฑด
- โข Laravel 13.x ์ฌ์ฉ ํ์
- โข Blade ํ ํ๋ฆฟ ์์ง๋ง ์ฌ์ฉ (React/Vue ๊ธ์ง)
- โข SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ
- โข Tailwind CSS๋ก ์คํ์ผ๋ง
- โข ๋ณ์ ์ 1~5์ ์ฌ์ด ์ ์
- โข ์ฅ๋ฅด๋ ์ฌ์ ์ ์๋ ๋ชฉ๋ก์์ ์ ํ (๋๋กญ๋ค์ด)
- โข ๊ด๋์ผ์ ๊ณผ๊ฑฐ ๋ ์ง๋ง ์ ํ ๊ฐ๋ฅ
- โข ํ ์ค ํ์ ์ต๋ 200์
- โข ํฌ์คํฐ ์ด๋ฏธ์ง๋ URL ํํ๋ก ์ ์ฅ (์ ๋ก๋ ๊ธฐ๋ฅ ์ ์ธ)
ํ๋กฌํํธ ๋ ์ํผ
์๋ ํ๋กฌํํธ๋ฅผ ์์๋๋ก AI์๊ฒ ๋ณด๋ด๋ฉด ๋ฉ๋๋ค. ๋ณต์ฌ ๋ฒํผ์ ๋๋ฌ ๋ฐ๋ก ์ฌ์ฉํ์ธ์.
mkdir cinema-movie-diary-laravel && cd cinema-movie-diary-laravel ์ด ํด๋์์ Laravel 13.x ํ๋ก์ ํธ๋ฅผ ์์ํฉ๋๋ค. # ํ๋ก์ ํธ ์ด๊ธฐ ์ค์ ๋ค์ ์๊ตฌ์ฌํญ์ผ๋ก Laravel ํ๋ก์ ํธ๋ฅผ ์์ฑํด์ฃผ์ธ์: 1. Laravel 13.x ์ต์ ๋ฒ์ ์ผ๋ก ํ๋ก์ ํธ ์์ฑ 2. SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ (database/database.sqlite ํ์ผ ์์ฑ) 3. Tailwind CSS ์ค์น ๋ฐ ์ค์ (Vite ์ฌ์ฉ) 4. .env ํ์ผ์์ DB_CONNECTION์ sqlite๋ก ๋ณ๊ฒฝ 5. ๊ธฐ๋ณธ ์ธ์ฆ ์ค์บํด๋ฉ ์ ๊ฑฐ (์ด ํ๋ก์ ํธ๋ ์ธ์ฆ ๋ถํ์) ํ๋ก์ ํธ ๊ตฌ์กฐ๊ฐ ์์ฑ๋๋ฉด `php artisan serve`๋ก ์๋ฒ๋ฅผ ์คํํ์ ๋ Laravel ์ฐ์ปด ํ์ด์ง๊ฐ ํ์๋์ด์ผ ํฉ๋๋ค. ๋ํ Tailwind CSS๊ฐ ์ ๋๋ก ์๋ํ๋์ง ํ์ธํ๊ธฐ ์ํด ๊ฐ๋จํ ํ ์คํธ ์คํ์ผ์ ์ ์ฉํด์ฃผ์ธ์.
๊ธฐ๋ ๊ฒฐ๊ณผ: Laravel 13.x ํ๋ก์ ํธ๊ฐ ์์ฑ๋๊ณ , SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ์ด ์์ฑ๋๋ฉฐ, Tailwind CSS๊ฐ ์ค์น๋ฉ๋๋ค. `npm run dev`์ `php artisan serve`๋ฅผ ์คํํ๋ฉด ๊ธฐ๋ณธ ์ฐ์ปด ํ์ด์ง๊ฐ ํ์๋๊ณ Tailwind ์คํ์ผ์ด ์ ์ฉ๋ฉ๋๋ค.
# ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์ ์์ฑ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ `movies` ํ ์ด๋ธ์ ์์ฑํด์ฃผ์ธ์. ## ํ ์ด๋ธ ๊ตฌ์กฐ - id: ์๋ ์ฆ๊ฐ ๊ธฐ๋ณธํค - title: ์ํ ์ ๋ชฉ (string, ํ์) - director: ๊ฐ๋ ์ด๋ฆ (string, ํ์) - genre: ์ฅ๋ฅด (string, ํ์) - watched_at: ๊ด๋์ผ (date, ํ์) - rating: ๋ณ์ (integer, 1~5, ํ์) - review: ํ ์ค ํ (text, ์ ํ, ์ต๋ 200์) - poster_url: ํฌ์คํฐ ์ด๋ฏธ์ง URL (string, ์ ํ, nullable) - is_favorite: ์ฆ๊ฒจ์ฐพ๊ธฐ ์ฌ๋ถ (boolean, ๊ธฐ๋ณธ๊ฐ false) - timestamps: created_at, updated_at ๋ง์ด๊ทธ๋ ์ด์ ํ์ผ์ ์์ฑํ๊ณ ์คํํด์ฃผ์ธ์. ๋ํ Movie ๋ชจ๋ธ๋ ํจ๊ป ์์ฑํ๊ณ , $fillable ์์ฑ์ ์ค์ ํด์ฃผ์ธ์.
๊ธฐ๋ ๊ฒฐ๊ณผ: movies ํ ์ด๋ธ ๋ง์ด๊ทธ๋ ์ด์ ์ด ์์ฑ๋๊ณ ์คํ๋ฉ๋๋ค. Movie ๋ชจ๋ธ์ด ์์ฑ๋๋ฉฐ, ๋ชจ๋ ํ๋๊ฐ $fillable์ ํฌํจ๋ฉ๋๋ค. `php artisan migrate`๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ฉ๋๋ค.
# ๋ฉ์ธ ๋ ์ด์์ ๋ฐ ๋ค๋น๊ฒ์ด์
์์ฑ
`resources/views/layouts/app.blade.php` ๋ ์ด์์ ํ์ผ์ ๋ง๋ค์ด์ฃผ์ธ์.
## ๋ ์ด์์ ์๊ตฌ์ฌํญ
- Tailwind CSS ์คํ์ผ ์ ์ฉ
- ์๋จ ๋ค๋น๊ฒ์ด์
๋ฐ:
- ๋ก๊ณ /์ ๋ชฉ: "๐ฌ ์๋ค๋ง ๋ฌด๋น๋ก๊ทธ"
- ๋ฉ๋ด: ํ, ์ํ ์ถ๊ฐ, ์ ์ฒด ์ํ
- ๋ฐ์ํ ๋์์ธ (๋ชจ๋ฐ์ผ์์๋ ํ๋ฒ๊ฑฐ ๋ฉ๋ด)
- ๋ฉ์ธ ์ฝํ
์ธ ์์ญ (@yield('content'))
- ํธํฐ: ์ ์๊ถ ์ ๋ณด
- ๋คํฌ ๊ทธ๋ ์ด/๋ธ๋ฃจ ๊ณ์ด ์์ ํ
๋ง
- ๋ถ๋๋ฌ์ด ๊ทธ๋ฆผ์ ํจ๊ณผ
๋ํ ํํ์ด์ง ๋ผ์ฐํธ(/)์ ์ปจํธ๋กค๋ฌ๋ฅผ ์์ฑํ๊ณ , ๊ฐ๋จํ ์ฐ์ปด ํ์ด์ง๋ฅผ ๋ง๋ค์ด์ฃผ์ธ์. ์ฐ์ปด ํ์ด์ง์๋:
- ํฐ ์ ๋ชฉ๊ณผ ์ค๋ช
- "์ํ ์ถ๊ฐํ๊ธฐ" CTA ๋ฒํผ
- ์ต๊ทผ ์ถ๊ฐ๋ ์ํ 3๊ฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ (์์ง ๋ฐ์ดํฐ ์์ผ๋ฉด "์์ง ๋ฑ๋ก๋ ์ํ๊ฐ ์์ต๋๋ค" ๋ฉ์์ง)
๊ธฐ๋ ๊ฒฐ๊ณผ: app.blade.php ๋ ์ด์์์ด ์์ฑ๋๊ณ , ๋ค๋น๊ฒ์ด์ ๋ฐ์ ํธํฐ๊ฐ ํฌํจ๋ฉ๋๋ค. ํํ์ด์ง๊ฐ ํ์๋๋ฉฐ, Tailwind CSS๋ก ์คํ์ผ๋ง๋ ์๋ฆ๋ค์ด UI๊ฐ ๋ํ๋ฉ๋๋ค.
# ์ํ ๋ฑ๋ก ํผ ๊ตฌํ ์ํ๋ฅผ ์ถ๊ฐํ ์ ์๋ ํ์ด์ง๋ฅผ ๋ง๋ค์ด์ฃผ์ธ์. ## ๋ผ์ฐํธ - GET /movies/create: ๋ฑ๋ก ํผ ํ์ - POST /movies: ์ํ ์ ์ฅ ## ํผ ํ๋ 1. ์ ๋ชฉ (text input, ํ์) 2. ๊ฐ๋ (text input, ํ์) 3. ์ฅ๋ฅด (select dropdown, ํ์) - ์ต์ : ์ก์ , ๋๋ผ๋ง, SF, ์ฝ๋ฏธ๋, ๋ก๋งจ์ค, ์ค๋ฆด๋ฌ, ํธ๋ฌ, ์ ๋๋ฉ์ด์ , ๋คํ๋ฉํฐ๋ฆฌ, ๊ธฐํ 4. ๊ด๋์ผ (date input, ํ์, max=์ค๋) 5. ๋ณ์ (๋ณ ์์ด์ฝ 5๊ฐ๋ฅผ ํด๋ฆญํ์ฌ ์ ํ, 1~5) 6. ํ ์ค ํ (textarea, ์ ํ, ์ต๋ 200์) 7. ํฌ์คํฐ URL (text input, ์ ํ, placeholder="์ด๋ฏธ์ง URL ์ ๋ ฅ") ## ์ ํจ์ฑ ๊ฒ์ฌ - ์ ๋ชฉ, ๊ฐ๋ , ์ฅ๋ฅด, ๊ด๋์ผ, ๋ณ์ ์ ํ์ - ๋ณ์ ์ 1~5 ์ฌ์ด ์ ์ - ํ ์ค ํ์ ์ต๋ 200์ - ๊ด๋์ผ์ ์ค๋ ์ด์ ๋ ์ง๋ง ๊ฐ๋ฅ - ์๋ฌ ๋ฉ์์ง๋ ๊ฐ ํ๋ ์๋์ ๋นจ๊ฐ์์ผ๋ก ํ์ ## ๋์์ธ - ์นด๋ ํํ์ ํผ (์ค์ ์ ๋ ฌ, ์ต๋ ๋๋น 600px) - ๋ณ์ ์ ํ UI๋ ์ธํฐ๋ํฐ๋ธํ๊ฒ (ํธ๋ฒ ์ ์์ ๋ณ๊ฒฝ) - ์ ์ถ ๋ฒํผ: "์ํ ์ถ๊ฐํ๊ธฐ" (ํ๋์ ๋ฐฐ๊ฒฝ) - ์ทจ์ ๋ฒํผ: "๋ชฉ๋ก์ผ๋ก" (ํ์ ๋ฐฐ๊ฒฝ) MovieController๋ฅผ ์์ฑํ๊ณ create, store ๋ฉ์๋๋ฅผ ๊ตฌํํด์ฃผ์ธ์.
๊ธฐ๋ ๊ฒฐ๊ณผ: ์ํ ๋ฑ๋ก ํผ์ด ํ์๋๊ณ , ๋ชจ๋ ํ๋๊ฐ ์ ๋๋ก ์๋ํฉ๋๋ค. ๋ณ์ ์ ํ UI๊ฐ ์ธํฐ๋ํฐ๋ธํ๊ฒ ๋์ํ๋ฉฐ, ์ ํจ์ฑ ๊ฒ์ฌ๊ฐ ์๋ํ๊ณ , ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ฉด ์ํ ๋ชฉ๋ก ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ๋ฉ๋๋ค.
# ์ํ ๋ชฉ๋ก ํ์ด์ง ๊ตฌํ ๋ฑ๋ก๋ ๋ชจ๋ ์ํ๋ฅผ ํ์ํ๋ ๋ชฉ๋ก ํ์ด์ง๋ฅผ ๋ง๋ค์ด์ฃผ์ธ์. ## ๋ผ์ฐํธ - GET /movies: ์ ์ฒด ์ํ ๋ชฉ๋ก ## ๊ธฐ๋ฅ 1. ์ํ ์นด๋ ๊ทธ๋ฆฌ๋ ๋ ์ด์์ (๋ฐ์ํ: ๋ชจ๋ฐ์ผ 1์ด, ํ๋ธ๋ฆฟ 2์ด, ๋ฐ์คํฌํฑ 3์ด) 2. ๊ฐ ์นด๋์ ํ์ํ ์ ๋ณด: - ํฌ์คํฐ ์ด๋ฏธ์ง (์์ผ๋ฉด ๊ธฐ๋ณธ ์ํ ์์ด์ฝ) - ์ ๋ชฉ (๋ณผ๋์ฒด) - ๊ฐ๋ - ์ฅ๋ฅด ๋ฐฐ์ง (์์์ผ๋ก ๊ตฌ๋ถ) - ๋ณ์ (๋ณ ์์ด์ฝ์ผ๋ก ์๊ฐํ) - ๊ด๋์ผ - ํ ์ค ํ (์ต๋ 2์ค, ๋์ผ๋ฉด "...") 3. ์๋จ์ ํํฐ ๋ฒํผ: - ์ ์ฒด, ์ก์ , ๋๋ผ๋ง, SF, ์ฝ๋ฏธ๋, ๋ก๋งจ์ค ๋ฑ - ์ ํ๋ ์ฅ๋ฅด๋ง ํ์ 4. ์ ๋ ฌ ์ต์ : - ์ต์ ์ (๊ธฐ๋ณธ๊ฐ) - ๋ณ์ ๋์์ - ์ ๋ชฉ ๊ฐ๋๋ค์ 5. ์นด๋ ํธ๋ฒ ์ ์ด์ง ํ๋ ์ ๋๋ฉ์ด์ 6. ๊ฐ ์นด๋ ํด๋ฆญ ์ ์์ธ ํ์ด์ง๋ก ์ด๋ ## ๋น ์ํ - ๋ฑ๋ก๋ ์ํ๊ฐ ์์ ๋: "์์ง ๋ฑ๋ก๋ ์ํ๊ฐ ์์ต๋๋ค. ์ฒซ ์ํ๋ฅผ ์ถ๊ฐํด๋ณด์ธ์!" ๋ฉ์์ง์ "์ํ ์ถ๊ฐํ๊ธฐ" ๋ฒํผ MovieController์ index ๋ฉ์๋๋ฅผ ๊ตฌํํด์ฃผ์ธ์.
๊ธฐ๋ ๊ฒฐ๊ณผ: ์ํ ๋ชฉ๋ก์ด ๊ทธ๋ฆฌ๋ ํํ๋ก ํ์๋๊ณ , ์ฅ๋ฅด๋ณ ํํฐ์ ์ ๋ ฌ ๊ธฐ๋ฅ์ด ์๋ํฉ๋๋ค. ๋ฐ์ํ ๋์์ธ์ด ์ ์ฉ๋์ด ๋ชจ๋ฐ์ผ์์๋ ์ ๋ณด์ ๋๋ค. ์นด๋ ํธ๋ฒ ํจ๊ณผ๊ฐ ๋ถ๋๋ฝ๊ฒ ๋์ํฉ๋๋ค.
# ์ํ ์์ธ ํ์ด์ง ๋ฐ ์์ /์ญ์ ๊ธฐ๋ฅ
๊ฐ๋ณ ์ํ์ ์์ธ ์ ๋ณด๋ฅผ ๋ณด๊ณ ์์ /์ญ์ ํ ์ ์๋ ํ์ด์ง๋ฅผ ๋ง๋ค์ด์ฃผ์ธ์.
## ๋ผ์ฐํธ
- GET /movies/{id}: ์์ธ ํ์ด์ง
- GET /movies/{id}/edit: ์์ ํผ
- PUT /movies/{id}: ์ํ ์ ๋ณด ์
๋ฐ์ดํธ
- DELETE /movies/{id}: ์ํ ์ญ์
## ์์ธ ํ์ด์ง ๊ตฌ์ฑ
- ์ผ์ชฝ: ํฌ์คํฐ ์ด๋ฏธ์ง (ํฌ๊ฒ)
- ์ค๋ฅธ์ชฝ:
- ์ ๋ชฉ (ํฐ ํฐํธ)
- ๊ฐ๋
- ์ฅ๋ฅด ๋ฐฐ์ง
- ๋ณ์ (๋ณ ์์ด์ฝ + ์ซ์)
- ๊ด๋์ผ
- ํ ์ค ํ (์ ์ฒด ํ
์คํธ)
- ํ๋จ ์ก์
๋ฒํผ:
- ์์ ํ๊ธฐ (๋
ธ๋์)
- ์ญ์ ํ๊ธฐ (๋นจ๊ฐ์, ํ์ธ ๋ค์ด์ผ๋ก๊ทธ)
- ๋ชฉ๋ก์ผ๋ก (ํ์)
## ์์ ํผ
- ๋ฑ๋ก ํผ๊ณผ ๋์ผํ ๊ตฌ์กฐ
- ๊ธฐ์กด ๋ฐ์ดํฐ๊ฐ ๋ฏธ๋ฆฌ ์ฑ์์ ธ ์์
- "์์ ์๋ฃ" ๋ฒํผ
## ์ญ์ ๊ธฐ๋ฅ
- ์ญ์ ๋ฒํผ ํด๋ฆญ ์ JavaScript ํ์ธ ๋ค์ด์ผ๋ก๊ทธ
- "์ ๋ง๋ก ์ด ์ํ๋ฅผ ์ญ์ ํ์๊ฒ ์ต๋๊น?" ๋ฉ์์ง
- ํ์ธ ์ DELETE ์์ฒญ ์ ์ก (form method spoofing ์ฌ์ฉ)
- ์ญ์ ํ ๋ชฉ๋ก ํ์ด์ง๋ก ๋ฆฌ๋ค์ด๋ ํธ + ์ฑ๊ณต ๋ฉ์์ง
MovieController์ show, edit, update, destroy ๋ฉ์๋๋ฅผ ๊ตฌํํด์ฃผ์ธ์.
## ์ถ๊ฐ ์๊ตฌ์ฌํญ
- ์กด์ฌํ์ง ์๋ ์ํ ID ์ ๊ทผ ์ 404 ํ์ด์ง ํ์
- ์์ /์ญ์ ์ฑ๊ณต ์ flash ๋ฉ์์ง ํ์ (์ด๋ก์ ์๋ฆผ)
- ๋ชจ๋ ํ์ด์ง์์ ๋ค๋ก๊ฐ๊ธฐ ๋ค๋น๊ฒ์ด์
์ ๊ณต
๊ธฐ๋ ๊ฒฐ๊ณผ: ์ํ ์์ธ ํ์ด์ง๊ฐ ๊น๋ํ๊ฒ ํ์๋๊ณ , ์์ ํผ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์์ผ๋ฉฐ, ์ญ์ ์ ํ์ธ ๋ค์ด์ผ๋ก๊ทธ๊ฐ ๋ํ๋ฉ๋๋ค. CRUD ๋ชจ๋ ๊ธฐ๋ฅ์ด ์ ์ ์๋ํ๊ณ , ์ ์ ํ ํผ๋๋ฐฑ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
์ ์ถ๋ ์ํ (0)
๋ก๊ทธ์ธ ํ ์ ์ถ์์ง ์ ์ถ๋ ์ํ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๋์ ์๊ฐ ๋์ด๋ณด์ธ์!