๐จ ํ๋ฆฌ๋์ ํฌํธํด๋ฆฌ์ค ๋๋ฉํ์ด์ง - ์์ ๋ฌผ ๊ฐค๋ฌ๋ฆฌ & ๋ฌธ์ ํผ
freelancer-portfolio-landing
๋ฌธ์ ์ค๋ช
ํ๋ก์ ํธ ๊ฐ์
ํ๋ฆฌ๋์ ๋์์ด๋, ๊ฐ๋ฐ์, ์๊ฐ ๋ฑ ํฌ๋ฆฌ์์ดํฐ๋ฅผ ์ํ ์ํ์ด์ง ํฌํธํด๋ฆฌ์ค ๋๋ฉํ์ด์ง๋ฅผ ๋ง๋ญ๋๋ค. ์์ ์ ์์ ๋ฌผ์ ์๊ฐ์ ์ผ๋ก ๋ฉ์ง๊ฒ ๋ณด์ฌ์ฃผ๊ณ , ์ ์ฌ ๊ณ ๊ฐ์ด ๋ฐ๋ก ๋ฌธ์๋ฅผ ๋จ๊ธธ ์ ์๋ ์ค์ฉ์ ์ธ ์๋น์ค์ ๋๋ค.
ํ์ ๊ธฐ๋ฅ
- ํ์ด๋ก ์น์ : ํ๋กํ ์ฌ์ง, ์ด๋ฆ, ์ง์ , ์งง์ ์๊ฐ ๋ฌธ๊ตฌ
- ์์
๋ฌผ ๊ฐค๋ฌ๋ฆฌ: ํฌํธํด๋ฆฌ์ค ํ๋ก์ ํธ ๋ชฉ๋ก (์ด๋ฏธ์ง, ์ ๋ชฉ, ์ค๋ช
, ์ฌ์ฉ ๊ธฐ์ )
- ์นด๋ ํํ๋ก ๊ทธ๋ฆฌ๋ ๋ ์ด์์
- ํธ๋ฒ ์ ํ๋ ํจ๊ณผ ๋๋ ๊ทธ๋ฆผ์ ์ ๋๋ฉ์ด์
- ๊ธฐ์ ์คํ ์น์ : ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐ์ /๋๊ตฌ๋ฅผ ๋ฑ์ง๋ก ํ์
- ๋ฌธ์ํ๊ธฐ ํผ: ์ด๋ฆ, ์ด๋ฉ์ผ, ํ๋ก์ ํธ ๋ด์ฉ ์
๋ ฅ ํ DB์ ์ ์ฅ
- ํผ ์ ์ถ ์ ์ฑ๊ณต ๋ฉ์์ง ํ์
- ๋ฐ์ํ ๋์์ธ: ๋ชจ๋ฐ์ผ/ํ๋ธ๋ฆฟ/๋ฐ์คํฌํฑ ๋ชจ๋ ์ต์ ํ
์ ํ ์ถ๊ฐ ๊ธฐ๋ฅ (๋ณด๋์ค)
- ์์ ๋ฌผ ์นดํ ๊ณ ๋ฆฌ ํํฐ๋ง (์น, ๋ชจ๋ฐ์ผ, ๋์์ธ ๋ฑ)
- ๋คํฌ ๋ชจ๋ ํ ๊ธ ๋ฒํผ
- ์คํฌ๋กค ์ ๋ถ๋๋ฌ์ด ์ ๋๋ฉ์ด์ (fade-in, slide-up)
- SNS ๋งํฌ ์์ด์ฝ (GitHub, LinkedIn, Behance ๋ฑ)
- ์ด๋ฉ์ผ ์๋ ๋ฐ์ก (๋ฌธ์ ์ ์ ํ์ธ ๋ฉ์ผ)
๊ธฐ์ ์คํ
- ๋ฐฑ์๋: Laravel 13.x + Blade ํ ํ๋ฆฟ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค: SQLite (๊ฐ๋จํ ์ค์ )
- ์คํ์ผ๋ง: Tailwind CSS
- ์ ๋๋ฉ์ด์ : Alpine.js (์ ํ์ )
์ ์ด ํ๋ก์ ํธ์ธ๊ฐ?
- ์ค์ ๋ก ์์ ์ ํฌํธํด๋ฆฌ์ค๋ก ์ฌ์ฉํ ์ ์์
- ์๊ฐ์ ๊ฒฐ๊ณผ๋ฌผ์ด ์ฆ์ ํ์ธ ๊ฐ๋ฅ
- CRUD์ ๊ธฐ๋ณธ (Create: ๋ฌธ์ ๋ฑ๋ก, Read: ์์ ๋ฌผ ์กฐํ)
- Blade ์ปดํฌ๋ํธ์ Tailwind CSS ํ์ฉ๋ฒ ํ์ต
- ํ๋ฆฌ๋์/์ฐฝ์ ์๊ฐ ๋ฐ๋ก ์จ๋จน์ ์ ์๋ ์ค์ฉ์ ์๋น์ค
์ ์ฝ ์กฐ๊ฑด
- โข Laravel 13.x ์ฌ์ฉ (์ต์ ๋ฒ์ ํ์)
- โข Blade ํ ํ๋ฆฟ ์์ง ์ฌ์ฉ (React/Vue ๊ธ์ง)
- โข Tailwind CSS๋ก ์คํ์ผ๋ง
- โข SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค (์ค์ ๊ฐํธ)
- โข ๋ฌธ์ ํผ ๋ฐ์ดํฐ๋ DB์ ์ ์ฅ (์ด๋ฉ์ผ ๋ฐ์ก์ ์ ํ์ฌํญ)
- โข ๋ฐ์ํ ๋์์ธ ํ์ (๋ชจ๋ฐ์ผ ์ฐ์ )
- โข ์์ ๋ฌผ ๋ฐ์ดํฐ๋ ์๋(Seeder)๋ก ๋ฏธ๋ฆฌ ์์ฑ
- โข ๋จ์ผ ํ์ด์ง ๊ตฌ์กฐ (์คํฌ๋กค๋ก ์น์ ์ด๋)
ํ๋กฌํํธ ๋ ์ํผ
์๋ ํ๋กฌํํธ๋ฅผ ์์๋๋ก AI์๊ฒ ๋ณด๋ด๋ฉด ๋ฉ๋๋ค. ๋ณต์ฌ ๋ฒํผ์ ๋๋ฌ ๋ฐ๋ก ์ฌ์ฉํ์ธ์.
mkdir freelancer-portfolio-landing && cd freelancer-portfolio-landing
์ด ํด๋์์ Laravel 13.x ํ๋ก์ ํธ๋ฅผ ์์ํฉ๋๋ค.
**์๊ตฌ์ฌํญ:**
1. Laravel 13.x ํ๋ก์ ํธ๋ฅผ ์์ฑํ์ธ์.
- `composer create-project laravel/laravel .` ๋ช
๋ น ์ฌ์ฉ
- ํ์ฌ ํด๋(.)์ ์ง์ ์ค์น
2. Tailwind CSS ์ค์ :
- `npm install -D tailwindcss postcss autoprefixer` ์คํ
- `npx tailwindcss init -p`๋ก ์ค์ ํ์ผ ์์ฑ
- `tailwind.config.js`์์ content ๊ฒฝ๋ก๋ฅผ `['./resources/**/*.blade.php', './resources/**/*.js']`๋ก ์ค์
- `resources/css/app.css`์ Tailwind ๋๋ ํฐ๋ธ ์ถ๊ฐ:
```css
@tailwind base;
@tailwind components;
@tailwind utilities;
```
- `vite.config.js`์์ Tailwind CSS๊ฐ ๋น๋๋๋๋ก ์ค์
3. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ :
- `.env` ํ์ผ์์ `DB_CONNECTION=sqlite`๋ก ๋ณ๊ฒฝ
- `DB_DATABASE=database/database.sqlite` ์ค์
- `database/database.sqlite` ํ์ผ ์์ฑ (๋น ํ์ผ)
4. ๊ฐ๋ฐ ์๋ฒ ์คํ ์ค๋น:
- `php artisan serve` ๋ช
๋ น์ผ๋ก Laravel ์๋ฒ ์คํ ๊ฐ๋ฅํ๋๋ก
- `npm run dev` ๋ช
๋ น์ผ๋ก Vite ๊ฐ๋ฐ ์๋ฒ ์คํ ๊ฐ๋ฅํ๋๋ก
5. ํ์ธ:
- `http://localhost:8000` ์ ์ ์ Laravel ๊ธฐ๋ณธ ํ์ด์ง๊ฐ ๋ณด์ด๋ฉด ์ฑ๊ณต
- Tailwind CSS๊ฐ ์ ์์ ์ผ๋ก ๋ก๋๋๋์ง ํ์ธ (๊ฐ๋จํ ํด๋์ค ํ
์คํธ)
๊ธฐ๋ ๊ฒฐ๊ณผ: Laravel 13.x ํ๋ก์ ํธ๊ฐ ์์ฑ๋๊ณ , Tailwind CSS๊ฐ ์ค์ ๋๋ฉฐ, SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ค๋น๋ฉ๋๋ค. ๊ฐ๋ฐ ์๋ฒ ์คํ ์ ๊ธฐ๋ณธ Laravel ํ์ด์ง๊ฐ ์ ์์ ์ผ๋ก ํ์๋ฉ๋๋ค.
**๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์
๊ณผ ๋ชจ๋ธ์ ์์ฑํฉ๋๋ค.**
1. **Portfolio ๋ชจ๋ธ๊ณผ ๋ง์ด๊ทธ๋ ์ด์
์์ฑ:**
- `php artisan make:model Portfolio -m` ๋ช
๋ น ์คํ
- ๋ง์ด๊ทธ๋ ์ด์
ํ์ผ(`database/migrations/xxxx_create_portfolios_table.php`)์ ๋ค์ ์ปฌ๋ผ ์ถ๊ฐ:
- `title` (string, ์์
๋ฌผ ์ ๋ชฉ)
- `description` (text, ์์
๋ฌผ ์ค๋ช
)
- `image_url` (string, ์ด๋ฏธ์ง URL ๋๋ ๊ฒฝ๋ก)
- `tech_stack` (string, ์ฌ์ฉ ๊ธฐ์ - ์ผํ๋ก ๊ตฌ๋ถ)
- `category` (string, ์นดํ
๊ณ ๋ฆฌ ์: 'web', 'mobile', 'design')
- `project_url` (string, nullable, ํ๋ก์ ํธ ๋งํฌ)
- `timestamps`
2. **Inquiry ๋ชจ๋ธ๊ณผ ๋ง์ด๊ทธ๋ ์ด์
์์ฑ:**
- `php artisan make:model Inquiry -m` ๋ช
๋ น ์คํ
- ๋ง์ด๊ทธ๋ ์ด์
ํ์ผ์ ๋ค์ ์ปฌ๋ผ ์ถ๊ฐ:
- `name` (string, ๋ฌธ์์ ์ด๋ฆ)
- `email` (string, ๋ฌธ์์ ์ด๋ฉ์ผ)
- `message` (text, ๋ฌธ์ ๋ด์ฉ)
- `timestamps`
3. **๋ง์ด๊ทธ๋ ์ด์
์คํ:**
- `php artisan migrate` ์คํํ์ฌ ํ
์ด๋ธ ์์ฑ
4. **๋ชจ๋ธ ์ค์ :**
- `Portfolio` ๋ชจ๋ธ์ `$fillable` ์์ฑ ์ถ๊ฐ:
```php
protected $fillable = ['title', 'description', 'image_url', 'tech_stack', 'category', 'project_url'];
```
- `Inquiry` ๋ชจ๋ธ์ `$fillable` ์์ฑ ์ถ๊ฐ:
```php
protected $fillable = ['name', 'email', 'message'];
```
5. **ํ์ธ:**
- `php artisan tinker`๋ก ๋ชจ๋ธ ์ ๊ทผ ๊ฐ๋ฅ ์ฌ๋ถ ํ์ธ
- `Portfolio::count()`, `Inquiry::count()` ๋ช
๋ น์ด ์ ์ ์๋ํ๋ฉด ์ฑ๊ณต
๊ธฐ๋ ๊ฒฐ๊ณผ: portfolios์ inquiries ํ ์ด๋ธ์ด ์์ฑ๋๊ณ , Portfolio์ Inquiry ๋ชจ๋ธ์ด ์ค๋น๋ฉ๋๋ค. ๋ง์ด๊ทธ๋ ์ด์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์คํ๋ฉ๋๋ค.
**์๋(Seeder)๋ก ์ํ ํฌํธํด๋ฆฌ์ค ๋ฐ์ดํฐ๋ฅผ ์์ฑํฉ๋๋ค.**
1. **Portfolio Seeder ์์ฑ:**
- `php artisan make:seeder PortfolioSeeder` ๋ช
๋ น ์คํ
- `database/seeders/PortfolioSeeder.php` ํ์ผ์ ์ํ ๋ฐ์ดํฐ 5~8๊ฐ ์ถ๊ฐ:
```php
use App\Models\Portfolio;
use Illuminate\Database\Seeder;
class PortfolioSeeder extends Seeder
{
public function run()
{
Portfolio::create([
'title' => '์ด์ปค๋จธ์ค ์ผํ๋ชฐ ์น์ฌ์ดํธ',
'description' => '๋ฐ์ํ ์จ๋ผ์ธ ์ผํ๋ชฐ ํ๋ก ํธ์๋ ๊ตฌํ. ์ฅ๋ฐ๊ตฌ๋, ๊ฒฐ์ , ์ฃผ๋ฌธ ๊ด๋ฆฌ ๊ธฐ๋ฅ ํฌํจ.',
'image_url' => 'https://images.unsplash.com/photo-1557821552-17105176677c?w=800',
'tech_stack' => 'Laravel, Tailwind CSS, MySQL',
'category' => 'web',
'project_url' => 'https://example.com/ecommerce'
]);
Portfolio::create([
'title' => '๋ชจ๋ฐ์ผ ํฌ๋ ์ฑ UI',
'description' => 'iOS/Android ํฌ๋ ์ฑ ๋์์ธ ๋ฐ ํ๋กํ ํ์
. ๋คํฌ๋ชจ๋ ์ง์.',
'image_url' => 'https://images.unsplash.com/photo-1512941937669-90a1b58e7e9c?w=800',
'tech_stack' => 'Figma, React Native',
'category' => 'mobile',
'project_url' => null
]);
Portfolio::create([
'title' => '๋ธ๋๋ ์์ด๋ดํฐํฐ ๋์์ธ',
'description' => '์คํํธ์
๋ก๊ณ , ๋ช
ํจ, ๋ธ๋ก์์ด ๋์์ธ ํจํค์ง.',
'image_url' => 'https://images.unsplash.com/photo-1561070791-2526d30994b5?w=800',
'tech_stack' => 'Adobe Illustrator, Photoshop',
'category' => 'design',
'project_url' => 'https://behance.net/example'
]);
// ๋๋จธ์ง ์ํ ๋ฐ์ดํฐ ์ถ๊ฐ (์ด 5~8๊ฐ)
}
}
```
2. **DatabaseSeeder์ ๋ฑ๋ก:**
- `database/seeders/DatabaseSeeder.php` ํ์ผ์์ `run()` ๋ฉ์๋์ ์ถ๊ฐ:
```php
$this->call(PortfolioSeeder::class);
```
3. **์๋ ์คํ:**
- `php artisan db:seed` ๋ช
๋ น ์คํ
4. **ํ์ธ:**
- `php artisan tinker`์์ `Portfolio::all()`๋ก ๋ฐ์ดํฐ ํ์ธ
- 5~8๊ฐ์ ์ํ ํฌํธํด๋ฆฌ์ค๊ฐ ์กฐํ๋๋ฉด ์ฑ๊ณต
๊ธฐ๋ ๊ฒฐ๊ณผ: ์ํ ํฌํธํด๋ฆฌ์ค ๋ฐ์ดํฐ๊ฐ DB์ ์ ์ฅ๋ฉ๋๋ค. ๋ค์ํ ์นดํ ๊ณ ๋ฆฌ(web, mobile, design)์ ์์ ๋ฌผ์ด ์ค๋น๋ฉ๋๋ค.
**๋ฉ์ธ ํ์ด์ง ๋ผ์ฐํธ์ ์ปจํธ๋กค๋ฌ๋ฅผ ์์ฑํ๊ณ , Blade ๋ทฐ๋ฅผ ๋ง๋ญ๋๋ค.**
1. **HomeController ์์ฑ:**
- `php artisan make:controller HomeController` ๋ช
๋ น ์คํ
- `app/Http/Controllers/HomeController.php`์ `index()` ๋ฉ์๋ ์์ฑ:
```php
use App\Models\Portfolio;
public function index()
{
$portfolios = Portfolio::all();
return view('home', compact('portfolios'));
}
```
2. **๋ผ์ฐํธ ์ค์ :**
- `routes/web.php`์์ ๊ธฐ๋ณธ ๋ผ์ฐํธ๋ฅผ ๋ค์์ผ๋ก ๋ณ๊ฒฝ:
```php
use App\Http\Controllers\HomeController;
Route::get('/', [HomeController::class, 'index'])->name('home');
```
3. **Blade ๋ทฐ ์์ฑ:**
- `resources/views/home.blade.php` ํ์ผ ์์ฑ
- ๋ค์ ์น์
๊ตฌ์กฐ๋ก HTML ์์ฑ:
- **ํค๋**: ๋ค๋น๊ฒ์ด์
๋ฐ (๋ก๊ณ , ์น์
๋งํฌ)
- **ํ์ด๋ก ์น์
**: ํ๋กํ ์ฌ์ง, ์ด๋ฆ, ์ง์
, ์๊ฐ ๋ฌธ๊ตฌ
- ์: "์๋
ํ์ธ์, ํ๋ฆฌ๋์ ์น ๊ฐ๋ฐ์ ํ๊ธธ๋์
๋๋ค."
- Tailwind CSS๋ก ์ค์ ์ ๋ ฌ, ํฐ ํฐํธ, ๊ทธ๋ผ๋์ธํธ ๋ฐฐ๊ฒฝ
- **ํฌํธํด๋ฆฌ์ค ๊ฐค๋ฌ๋ฆฌ**: ์์
๋ฌผ ์นด๋ ๊ทธ๋ฆฌ๋ (3์ด ๋ ์ด์์)
- ๊ฐ ์นด๋: ์ด๋ฏธ์ง, ์ ๋ชฉ, ์ค๋ช
, ๊ธฐ์ ์คํ ๋ฑ์ง
- `@foreach($portfolios as $portfolio)` ๋ฐ๋ณต๋ฌธ ์ฌ์ฉ
- ํธ๋ฒ ์ ๊ทธ๋ฆผ์ ํจ๊ณผ (`hover:shadow-2xl transition`)
- **๊ธฐ์ ์คํ ์น์
**: ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐ์ ๋ฑ์ง ํ์
- ์: Laravel, React, Tailwind CSS, Figma ๋ฑ
- **๋ฌธ์ํ๊ธฐ ํผ ์น์
**: (๋ค์ ๋จ๊ณ์์ ๊ตฌํ)
4. **Tailwind CSS ์คํ์ผ๋ง:**
- ๋ฐ์ํ ๊ทธ๋ฆฌ๋: `grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6`
- ์นด๋ ์คํ์ผ: `bg-white rounded-lg shadow-lg overflow-hidden`
- ๋ฑ์ง ์คํ์ผ: `bg-blue-100 text-blue-800 px-3 py-1 rounded-full text-sm`
5. **ํ์ธ:**
- `http://localhost:8000` ์ ์ ์ ํฌํธํด๋ฆฌ์ค ๊ฐค๋ฌ๋ฆฌ๊ฐ ๋ณด์ด๋ฉด ์ฑ๊ณต
- ์ด๋ฏธ์ง, ์ ๋ชฉ, ์ค๋ช
์ด ์ ์์ ์ผ๋ก ๋ ๋๋ง๋๋์ง ํ์ธ
๊ธฐ๋ ๊ฒฐ๊ณผ: ๋ฉ์ธ ํ์ด์ง์ ํ์ด๋ก ์น์ ๊ณผ ํฌํธํด๋ฆฌ์ค ๊ฐค๋ฌ๋ฆฌ๊ฐ ํ์๋ฉ๋๋ค. Tailwind CSS๋ก ์คํ์ผ๋ง๋ ๋ฐ์ํ ๋ ์ด์์์ด ์ ์ฉ๋ฉ๋๋ค.
**๋ฌธ์ํ๊ธฐ ํผ์ ๊ตฌํํ๊ณ , DB์ ์ ์ฅํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํฉ๋๋ค.**
1. **InquiryController ์์ฑ:**
- `php artisan make:controller InquiryController` ๋ช
๋ น ์คํ
- `store()` ๋ฉ์๋ ์์ฑ:
```php
use App\Models\Inquiry;
use Illuminate\Http\Request;
public function store(Request $request)
{
$validated = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|max:255',
'message' => 'required|string|max:1000'
]);
Inquiry::create($validated);
return redirect()->back()->with('success', '๋ฌธ์๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ ์๋์์ต๋๋ค!');
}
```
2. **๋ผ์ฐํธ ์ถ๊ฐ:**
- `routes/web.php`์ POST ๋ผ์ฐํธ ์ถ๊ฐ:
```php
use App\Http\Controllers\InquiryController;
Route::post('/inquiry', [InquiryController::class, 'store'])->name('inquiry.store');
```
3. **home.blade.php์ ๋ฌธ์ ํผ ์ถ๊ฐ:**
- ๋ฌธ์ํ๊ธฐ ์น์
์ ํผ ์ถ๊ฐ:
```blade
<section id="contact" class="py-16 bg-gray-50">
<div class="container mx-auto px-4 max-w-2xl">
<h2 class="text-3xl font-bold text-center mb-8">๋ฌธ์ํ๊ธฐ</h2>
@if(session('success'))
<div class="bg-green-100 border border-green-400 text-green-700 px-4 py-3 rounded mb-4">
{{ session('success') }}
</div>
@endif
<form action="{{ route('inquiry.store') }}" method="POST" class="space-y-4">
@csrf
<div>
<label class="block text-sm font-medium mb-2">์ด๋ฆ</label>
<input type="text" name="name" required class="w-full px-4 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500">
@error('name')
<p class="text-red-500 text-sm mt-1">{{ $message }}</p>
@enderror
</div>
<div>
<label class="block text-sm font-medium mb-2">์ด๋ฉ์ผ</label>
<input type="email" name="email" required class="w-full px-4 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500">
@error('email')
<p class="text-red-500 text-sm mt-1">{{ $message }}</p>
@enderror
</div>
<div>
<label class="block text-sm font-medium mb-2">ํ๋ก์ ํธ ๋ด์ฉ</label>
<textarea name="message" rows="5" required class="w-full px-4 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500"></textarea>
@error('message')
<p class="text-red-500 text-sm mt-1">{{ $message }}</p>
@enderror
</div>
<button type="submit" class="w-full bg-blue-600 text-white py-3 rounded-lg hover:bg-blue-700 transition">
๋ฌธ์ํ๊ธฐ
</button>
</form>
</div>
</section>
```
4. **ํ์ธ:**
- ๋ฌธ์ ํผ์ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ๊ณ ์ ์ถ
- ์ฑ๊ณต ๋ฉ์์ง๊ฐ ํ์๋๊ณ , DB์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋์ง ํ์ธ
- `php artisan tinker`์์ `Inquiry::all()`๋ก ํ์ธ
๊ธฐ๋ ๊ฒฐ๊ณผ: ๋ฌธ์ํ๊ธฐ ํผ์ด ์๋ํ๊ณ , ์ ์ถ๋ ๋ฐ์ดํฐ๊ฐ DB์ ์ ์ฅ๋ฉ๋๋ค. ์ฑ๊ณต ๋ฉ์์ง์ ์ ํจ์ฑ ๊ฒ์ฌ ์ค๋ฅ ๋ฉ์์ง๊ฐ ์ ์์ ์ผ๋ก ํ์๋ฉ๋๋ค.
์ ์ถ๋ ์ํ (0)
๋ก๊ทธ์ธ ํ ์ ์ถ์์ง ์ ์ถ๋ ์ํ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๋์ ์๊ฐ ๋์ด๋ณด์ธ์!