๐ฐ ๋ก๋ ๋ฒํธ ์์ฑ๊ธฐ - ํ์ด์ ์ซ์ ์กฐํฉ ๋ฝ๊ธฐ
lotto-number-generator
๋ฌธ์ ์ค๋ช
๐ฏ ํ๋ก์ ํธ ๊ฐ์
๋งค์ฃผ ๋ก๋๋ฅผ ์ฌ๋ฌ ๊ฐ๊ธฐ ์ , ์ด๋ค ๋ฒํธ๋ฅผ ์ ํํ ์ง ๊ณ ๋ฏผ๋์๋์? ์ด ํ๋ก์ ํธ๋ ๋๋ค ๋ก๋ ๋ฒํธ ์์ฑ๊ธฐ๋ฅผ ๋ง๋ญ๋๋ค. ๋ฒํผ ํด๋ฆญ ํ ๋ฒ์ผ๋ก 1~45 ์ฌ์ด์ ์ค๋ณต ์๋ 6๊ฐ ์ซ์๋ฅผ ์๋์ผ๋ก ๋ฝ์์ฃผ๊ณ , ์์ฑ๋ ๋ฒํธ ์กฐํฉ์ ์ ์ฅํ์ฌ ๋์ค์ ๋ค์ ๋ณผ ์ ์์ต๋๋ค.
๊ทธ๋๋ณด๋5 SE์ modern shell์ ํ์ฉํ์ฌ ์ฌ์ดํธ ์ ์ฒด์ ํต์ผ๋ ๋์์ธ์ ์ ์งํ๊ณ , ๋คํฌ๋ชจ๋์์๋ ๊น๋ํ๊ฒ ๋ณด์ด๋๋ก ๊ตฌํํฉ๋๋ค. SQLite DB์ ์์ฑ ์ด๋ ฅ์ ์ ์ฅํ์ฌ "๋ด๊ฐ ๋ฝ์๋ ๋ฒํธ๋ค"์ ํ์ธํ ์ ์์ต๋๋ค.
โจ ํ์ ๊ธฐ๋ฅ
- ๋ฒํธ ์์ฑ ๋ฒํผ: ํด๋ฆญ ์ 1~45 ์ฌ์ด ์ค๋ณต ์๋ 6๊ฐ ์ซ์๋ฅผ ๋๋ค์ผ๋ก ์์ฑ
- ๋ฒํธ ์๊ฐํ: ์์ฑ๋ 6๊ฐ ์ซ์๋ฅผ ํฐ ์ํ ๋ฐฐ์ง๋ก ํ์ (์ค๋ฆ์ฐจ์ ์ ๋ ฌ)
- ์์ฑ ์ด๋ ฅ ์ ์ฅ: ์์ฑ๋ ๋ฒํธ ์กฐํฉ์ DB์ ์๋ ์ ์ฅ (ํ์์คํฌํ ํฌํจ)
- ์ด๋ ฅ ๋ชฉ๋ก: ๊ณผ๊ฑฐ์ ์์ฑํ ๋ฒํธ ์กฐํฉ์ ์ต์ ์์ผ๋ก ํ์ (์ต๋ 10๊ฐ)
- ์ด๋ ฅ ์ญ์ : ๊ฐ ๋ฒํธ ์กฐํฉ ์์ ์ญ์ ๋ฒํผ (๊ฐ๋ณ ์ญ์ )
- Modern shell ํตํฉ: g5se์ nav/footer/๋คํฌ๋ชจ๋ ํ ๊ธ ์๋ ์ ์ฉ
- ๋ฐ์ํ ๋์์ธ: ๋ชจ๋ฐ์ผ์์๋ ๊น๋ํ๊ฒ ๋ณด์ด๋๋ก
๐ ์ ํ ์ถ๊ฐ ๊ธฐ๋ฅ (๋ณด๋์ค)
- ๋ฒํธ ์์ ๊ตฌ๋ถ: 1
10(๋ ธ๋), 1120(ํ๋), 2130(๋นจ๊ฐ), 3140(ํ์), 41~45(์ด๋ก) ๋ฑ ๋ฒ์๋ณ ์์ ์ ์ฉ - "์๋ 5๊ฒ์" ๋ฒํผ: ํ ๋ฒ์ 5๊ฐ ์กฐํฉ์ ์์ฑํ์ฌ ๋ฆฌ์คํธ๋ก ํ์
- ๋ฒํธ ์กฐํฉ ๊ณต์ : ์์ฑ๋ ๋ฒํธ๋ฅผ ํด๋ฆฝ๋ณด๋์ ๋ณต์ฌํ๋ ๋ฒํผ
- ํต๊ณ ๊ธฐ๋ฅ: ์ง๊ธ๊น์ง ์์ฑ๋ ๋ฒํธ ์ค ๊ฐ์ฅ ๋ง์ด ๋์จ ์ซ์ TOP 5 ํ์
- ์ ๋๋ฉ์ด์ : ๋ฒํธ๊ฐ ์์ฑ๋ ๋ ์ฌ๋กฏ๋จธ์ ํจ๊ณผ (์ซ์๊ฐ ๋น ๋ฅด๊ฒ ๋๋ค๊ฐ ๋ฉ์ถค)
๐ ๊ธฐ์ ์คํ
- ํ๋ ์์ํฌ: ๊ทธ๋๋ณด๋5 SE (g5se) โ PHP ๊ธฐ๋ฐ ์คํ์์ค CMS
- ํ ํ๋ฆฟ: Modern shell (์ฌ์ดํธ chrome ํต์ผ)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค: SQLite (๋ชจ๋ ์ ์ฉ DB ํ์ผ)
- ํ๋ก ํธ์๋: ์์ HTML/CSS/JavaScript (๋น๋ ๋๊ตฌ ์์)
- ์คํ์ผ: CSS ๋ณ์ ๊ธฐ๋ฐ ๋คํฌ๋ชจ๋ ๋์
๐ ๊ตฌํ ์๊ตฌ์ฌํญ
app/modules/lotto-number-generator/index.phpํ์ผ๋ก ํ์ด์ง ์์ฑ- URL์ ์๋์ผ๋ก
/lotto-number-generator๊ฐ ๋จ (๋ผ์ฐํธ ๋ฑ๋ก ๋ถํ์) - Modern shell ๊ณจ๊ฒฉ ์ ์ฉ (nav + main container + footer)
- SQLite DB๋
G5_DATA_PATH.'/modules/lotto.sqlite'์์น์ ์์ฑ - ํ
์ด๋ธ:
draws(id, numbers_json, created_at) - ๋ฒํธ ์์ฑ ๋ก์ง: PHP
range(1,45)โshuffle()โarray_slice(0,6)โsort() - AJAX ์์ด ํผ ์ ์ถ ๋ฐฉ์์ผ๋ก ๊ตฌํ (์ ๋ฌธ ๋ ๋ฒจ)
- XSS ๋ฐฉ์ง: ๋ชจ๋ ์ถ๋ ฅ ๋ฐ์ดํฐ๋
htmlspecialchars()์ฒ๋ฆฌ
๐จ ๋์์ธ ๊ฐ์ด๋
- ๋ฒํธ ๋ฐฐ์ง: ์ํ, ํฐ ํฐํธ(24px), ๊ทธ๋ฆผ์ ํจ๊ณผ
- ์์ฑ ๋ฒํผ: ๋์ ๋๋ primary ์์, ํธ๋ฒ ์ ์ฝ๊ฐ ์ด๋์์ง
- ์ด๋ ฅ ์นด๋:
var(--m-surface)๋ฐฐ๊ฒฝ,var(--m-shadow)๊ทธ๋ฆผ์ - ๋คํฌ๋ชจ๋: ํ
์คํธ๋
var(--m-text), ํ๋ฆฐ ํ ์คํธ๋var(--m-text-muted) - ๋ชจ๋ฐ์ผ: ๋ฒํธ ๋ฐฐ์ง๊ฐ 2์ค๋ก ๋ฐฐ์น๋์ด๋ OK
์ ์ฝ ์กฐ๊ฑด
- โข ๊ทธ๋๋ณด๋5 SE (g5se) ํ๋ ์์ํฌ ์ฌ์ฉ (Laravel/React/Vue/SPA ์ ๋ ๊ธ์ง)
- โข ์์ PHP + g5se ์ปจ๋ฒค์ ๋ง ์ฌ์ฉ (Composer/npm/Vite ๋ฑ ๋น๋ ๋๊ตฌ ๊ธ์ง)
- โข ํด๋ ๊ธฐ๋ฐ ์๋ ๋ผ์ฐํ : app/modules/lotto-number-generator/index.php โ /lotto-number-generator
- โข Modern shell ํ์ ์ ์ฉ (_head.inc.php + m-shell + _nav.inc.php + m-container + _footer.inc.php + tail.sub.php)
- โข CSS ๋ณ์ ์ฌ์ฉํ์ฌ ๋คํฌ๋ชจ๋ ์๋ ๋์ (var(--m-surface), var(--m-text) ๋ฑ)
- โข ์์ฒด SQLite DB ์ฌ์ฉ (G5_DATA_PATH/modules/lotto.sqlite), g5se ๋ฉ์ธ DB ์ ๋ ๊ฑด๋๋ฆฌ์ง ๋ง ๊ฒ
- โข ๋ชจ๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ htmlspecialchars()๋ก ์ด์ค์ผ์ดํ
- โข CDN ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฐ๊ธ์ ์ฌ์ฉํ์ง ๋ง๊ณ ์์ HTML/CSS/JS๋ก ๊ตฌํ
- โข AJAX ์์ด ํผ ์ ์ถ ๋ฐฉ์์ผ๋ก ๊ตฌํ (์ ๋ฌธ ๋ ๋ฒจ)
- โข ๋ชจ๋ฐ์ผ ๋ฐ์ํ ๋์์ธ ํ์
ํ๋กฌํํธ ๋ ์ํผ
์๋ ํ๋กฌํํธ๋ฅผ ์์๋๋ก AI์๊ฒ ๋ณด๋ด๋ฉด ๋ฉ๋๋ค. ๋ณต์ฌ ๋ฒํผ์ ๋๋ฌ ๋ฐ๋ก ์ฌ์ฉํ์ธ์.
g5se๊ฐ ์ค์น๋ ๋๋ ํฐ๋ฆฌ(๋ฃจํธ์ `index.php`ยท`app/`์ด ์๋ ๊ณณ)์์ ์์ ์ ์์ํฉ๋๋ค. (g5se ์ค์น๋ https://github.com/gnuboard/g5se ์ฐธ๊ณ ) ## Step 1: ํ๋ก์ ํธ ๊ธฐ๋ณธ ๊ณจ๊ฒฉ ์์ฑ `app/modules/lotto-number-generator/index.php` ํ์ผ์ ๋ง๋ค๊ณ modern shell ๊ณจ๊ฒฉ์ ์ ์ฉํฉ๋๋ค. ### ์๊ตฌ์ฌํญ: 1. **ํด๋ ์์ฑ**: `app/modules/lotto-number-generator/` ํด๋๋ฅผ ๋ง๋ญ๋๋ค 2. **Modern shell ๊ณจ๊ฒฉ ์ ์ฉ**: - `_common.php` ์ธํด๋ฃจ๋ (g5se ์ด๊ธฐํ) - `G5_THEME_PATH.'/modern/_head.inc.php'` ์ธํด๋ฃจ๋ (HTML head + CSS ๋ณ์) - `./head.sub.php` ์ธํด๋ฃจ๋ - `<div class="m-shell">` ๋ํผ - `G5_THEME_PATH.'/modern/_nav.inc.php'` ์ธํด๋ฃจ๋ (์๋จ ๋ค๋น๊ฒ์ด์ ) - `<main class="m-container">` (๋ณธ๋ฌธ ์์ญ) - `G5_THEME_PATH.'/modern/_footer.inc.php'` ์ธํด๋ฃจ๋ (ํ๋จ ํธํฐ) - `./tail.sub.php` ์ธํด๋ฃจ๋ 3. **ํ์ด์ง ์ ๋ชฉ**: "๐ฐ ๋ก๋ ๋ฒํธ ์์ฑ๊ธฐ" 4. **๊ฐ๋จํ ์๋ด ๋ฌธ๊ตฌ**: "ํ์ด์ ์ซ์ ์กฐํฉ์ ๋ฝ์๋ณด์ธ์!" 5. **์์ฑ ๋ฒํผ**: "๋ฒํธ ์์ฑํ๊ธฐ" ๋ฒํผ ํ๋๋ง ํ์ (์์ง ๋์ ์ ํจ) ### ์ฃผ์์ฌํญ: - ๋ชจ๋ ๊ฒฝ๋ก๋ ์๋๊ฒฝ๋ก (`./`, `G5_THEME_PATH`) ์ฌ์ฉ - `_common.php` ์ธํด๋ฃจ๋ ํ `G5_THEME_PATH` ์์๊ฐ ์ ์๋จ - ๋ผ์ฐํธ ๋ฑ๋ก์ **ํ์ง ๋ง ๊ฒ** (ํด๋ ์๋ ๋งคํ) - ์์ง DB ์ฐ๋ ์์, ๋ฒํผ๋ ๋์ํ์ง ์์ (๊ณจ๊ฒฉ๋ง) ์ด ๋จ๊ณ์์๋ ํ์ด์ง๊ฐ `/lotto-number-generator`๋ก ์ ์๋๊ณ , ์๋จ nav/ํ๋จ footer๊ฐ ์๋์ผ๋ก ํ์๋๋ฉฐ, ๋คํฌ๋ชจ๋ ํ ๊ธ์ด ์๋ํ๋์ง ํ์ธํฉ๋๋ค.
๊ธฐ๋ ๊ฒฐ๊ณผ: - `/lotto-number-generator` URL๋ก ์ ์ ๊ฐ๋ฅ - ์๋จ์ g5se ๊ธฐ๋ณธ ๋ค๋น๊ฒ์ด์ ํ์ - ํ์ด์ง ์ ๋ชฉ "๐ฐ ๋ก๋ ๋ฒํธ ์์ฑ๊ธฐ" ํ์ - ์๋ด ๋ฌธ๊ตฌ์ "๋ฒํธ ์์ฑํ๊ธฐ" ๋ฒํผ ํ์ (์์ง ๋์ ์ ํจ) - ํ๋จ์ g5se ๊ธฐ๋ณธ ํธํฐ ํ์ - ๋คํฌ๋ชจ๋ ํ ๊ธ ๋ฒํผ ํด๋ฆญ ์ ๋ฐฐ๊ฒฝ/ํ ์คํธ ์์ ์ ํ ํ์ธ
## Step 2: ๋ก๋ ๋ฒํธ ์์ฑ ๋ก์ง ๊ตฌํ
๋ฒํผ ํด๋ฆญ ์ 1~45 ์ฌ์ด์ ์ค๋ณต ์๋ 6๊ฐ ์ซ์๋ฅผ ๋๋ค์ผ๋ก ์์ฑํ์ฌ ํ๋ฉด์ ํ์ํฉ๋๋ค.
### ์๊ตฌ์ฌํญ:
1. **ํผ ์ ์ถ ์ฒ๋ฆฌ**:
- `<form method="post">` ํํ๋ก ๋ฒํผ์ ๊ฐ์๋๋ค
- `<input type="hidden" name="action" value="generate">`๋ก ์ก์
๊ตฌ๋ถ
- PHP์์ `$_POST['action'] === 'generate'` ์ฒดํฌ
2. **๋ฒํธ ์์ฑ ๋ก์ง**:
```php
$numbers = range(1, 45);
shuffle($numbers);
$selected = array_slice($numbers, 0, 6);
sort($selected); // ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
```
3. **๋ฒํธ ์๊ฐํ**:
- ์์ฑ๋ 6๊ฐ ์ซ์๋ฅผ ํฐ ์ํ ๋ฐฐ์ง๋ก ํ์
- ๋ฐฐ์ง ์คํ์ผ:
- `width: 60px; height: 60px;`
- `border-radius: 50%;`
- `background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);` (๊ทธ๋ผ๋ฐ์ด์
)
- `color: white;`
- `font-size: 24px; font-weight: bold;`
- `display: inline-flex; align-items: center; justify-content: center;`
- `box-shadow: var(--m-shadow);`
- `margin: 8px;`
- 6๊ฐ ๋ฐฐ์ง๋ฅผ ๊ฐ๋ก๋ก ๋์ด (flexbox ์ฌ์ฉ)
4. **์กฐ๊ฑด๋ถ ๋ ๋๋ง**:
- ๋ฒํธ๊ฐ ์์ฑ๋์ง ์์์ ๋: ์๋ด ๋ฌธ๊ตฌ๋ง ํ์
- ๋ฒํธ๊ฐ ์์ฑ๋์์ ๋: ๋ฐฐ์ง 6๊ฐ ํ์ + "๋ค์ ๋ฝ๊ธฐ" ๋ฒํผ
5. **CSS ๋ณ์ ํ์ฉ**:
- ์นด๋ ๋ฐฐ๊ฒฝ: `background: var(--m-surface);`
- ํ
์คํธ: `color: var(--m-text);`
- ํ๋ฆฐ ํ
์คํธ: `color: var(--m-text-muted);`
### ์ฃผ์์ฌํญ:
- AJAX ์ฌ์ฉํ์ง ๋ง ๊ฒ (ํผ ์ ์ถ ๋ฐฉ์)
- ๋ฒํธ๋ ๋ณ์์ ์ ์ฅ๋ง ํ๊ณ ์์ง DB์ ์ ์ฅํ์ง ์์
- XSS ๋ฐฉ์ง๋ฅผ ์ํด ์ซ์ ์ถ๋ ฅ ์ `htmlspecialchars()` ์ฌ์ฉ (์ซ์์ง๋ง ์ต๊ดํ)
์ด ๋จ๊ณ์์๋ ๋ฒํผ ํด๋ฆญ ์ ํ์ด์ง๊ฐ ์๋ก๊ณ ์นจ๋๋ฉฐ 6๊ฐ์ ๋๋ค ๋ฒํธ๊ฐ ์์ ์ํ ๋ฐฐ์ง๋ก ํ์๋ฉ๋๋ค.
๊ธฐ๋ ๊ฒฐ๊ณผ: - "๋ฒํธ ์์ฑํ๊ธฐ" ๋ฒํผ ํด๋ฆญ ์ ํ์ด์ง ์๋ก๊ณ ์นจ - 1~45 ์ฌ์ด์ ์ค๋ณต ์๋ 6๊ฐ ์ซ์๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ํ์ - ์ซ์๊ฐ ํฐ ์ํ ๋ฐฐ์ง(๊ทธ๋ผ๋ฐ์ด์ ๋ฐฐ๊ฒฝ, ํฐ ๊ธ์จ)๋ก ํ์ - ๋คํฌ๋ชจ๋์์๋ ๋ฐฐ์ง๊ฐ ์ ๋ณด์ - "๋ค์ ๋ฝ๊ธฐ" ๋ฒํผ ํด๋ฆญ ์ ์๋ก์ด ๋ฒํธ ์กฐํฉ ์์ฑ
## Step 3: SQLite DB ์ฐ๋ ๋ฐ ์์ฑ ์ด๋ ฅ ์ ์ฅ
์์ฑ๋ ๋ฒํธ ์กฐํฉ์ SQLite DB์ ์ ์ฅํ๊ณ , ๊ณผ๊ฑฐ ์ด๋ ฅ์ ๋ชฉ๋ก์ผ๋ก ํ์ํฉ๋๋ค.
### ์๊ตฌ์ฌํญ:
1. **SQLite DB ์ด๊ธฐํ**:
- DB ํ์ผ ๊ฒฝ๋ก: `G5_DATA_PATH.'/modules/lotto.sqlite'`
- ํด๋๊ฐ ์์ผ๋ฉด ์์ฑ: `@mkdir(G5_DATA_PATH.'/modules', 0707, true);`
- PDO ์ฐ๊ฒฐ: `new PDO('sqlite:'.G5_DATA_PATH.'/modules/lotto.sqlite')`
- ์๋ฌ ๋ชจ๋ ์ค์ : `$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);`
2. **ํ
์ด๋ธ ์์ฑ** (์ฒซ ์ ๊ทผ ์ ์๋):
```sql
CREATE TABLE IF NOT EXISTS draws (
id INTEGER PRIMARY KEY AUTOINCREMENT,
numbers_json TEXT NOT NULL,
created_at TEXT NOT NULL
)
```
- `numbers_json`: JSON ํํ๋ก 6๊ฐ ์ซ์ ๋ฐฐ์ด ์ ์ฅ (์: `[3,12,25,33,38,45]`)
- `created_at`: ์์ฑ ์๊ฐ (ISO 8601 ํ์, ์: `2025-01-15 14:30:22`)
3. **๋ฒํธ ์์ฑ ์ DB ์ ์ฅ**:
- ๋ฒํธ ์์ฑ ํ ์ฆ์ DB์ INSERT
- Prepared statement ์ฌ์ฉ:
```php
$stmt = $pdo->prepare('INSERT INTO draws (numbers_json, created_at) VALUES (?, ?)');
$stmt->execute([json_encode($selected), date('Y-m-d H:i:s')]);
```
4. **์ด๋ ฅ ๋ชฉ๋ก ์กฐํ**:
- ์ต์ ์์ผ๋ก ์ต๋ 10๊ฐ ์กฐํ:
```php
$stmt = $pdo->query('SELECT * FROM draws ORDER BY id DESC LIMIT 10');
$history = $stmt->fetchAll(PDO::FETCH_ASSOC);
```
- ๊ฐ ์ด๋ ฅ์ ์นด๋ ํํ๋ก ํ์:
- ์นด๋ ๋ฐฐ๊ฒฝ: `var(--m-surface)`
- ๊ทธ๋ฆผ์: `var(--m-shadow)`
- ๋ผ์ด๋ ๋ชจ์๋ฆฌ: `var(--m-radius-lg)`
- ์นด๋ ์์ 6๊ฐ ์์ ๋ฐฐ์ง (30px x 30px) + ์์ฑ ์๊ฐ
5. **์ด๋ ฅ ์ญ์ ๊ธฐ๋ฅ**:
- ๊ฐ ์นด๋ ์์ "์ญ์ " ๋ฒํผ
- `<form method="post">` + `<input type="hidden" name="action" value="delete">` + `<input type="hidden" name="id" value="<?= $row['id'] ?>">`
- PHP์์ `$_POST['action'] === 'delete'` ์ฒดํฌ ํ ํด๋น id ์ญ์ :
```php
$stmt = $pdo->prepare('DELETE FROM draws WHERE id = ?');
$stmt->execute([$_POST['id']]);
```
6. **๋ ์ด์์**:
- ์๋จ: ๋ฒํธ ์์ฑ ์น์
(ํฐ ๋ฐฐ์ง)
- ํ๋จ: ์ด๋ ฅ ๋ชฉ๋ก ์น์
("์ง๋ ๋ฒํธ๋ค" ์ ๋ชฉ + ์นด๋ ๋ฆฌ์คํธ)
### ์ฃผ์์ฌํญ:
- g5se ๋ฉ์ธ DB์๋ ์ ๋ ํ
์ด๋ธ์ ๋ง๋ค์ง ๋ง ๊ฒ
- Prepared statement๋ก SQL ์ธ์ ์
๋ฐฉ์ง
- JSON ์ธ์ฝ๋ฉ/๋์ฝ๋ฉ ์ ์๋ฌ ์ฒ๋ฆฌ
- XSS ๋ฐฉ์ง: ์๊ฐ ์ถ๋ ฅ ์ `htmlspecialchars()`
์ด ๋จ๊ณ์์๋ ๋ฒํธ ์์ฑ ์ ์๋์ผ๋ก DB์ ์ ์ฅ๋๊ณ , ํ์ด์ง ํ๋จ์ ๊ณผ๊ฑฐ ์ด๋ ฅ์ด ์ต์ ์์ผ๋ก ํ์๋ฉ๋๋ค. ๊ฐ ์ด๋ ฅ์ ์ญ์ ๋ฒํผ์ผ๋ก ๊ฐ๋ณ ์ญ์ ๊ฐ๋ฅํฉ๋๋ค.
๊ธฐ๋ ๊ฒฐ๊ณผ: - ๋ฒํธ ์์ฑ ์ ์๋์ผ๋ก DB์ ์ ์ฅ๋จ - ํ์ด์ง ํ๋จ์ "์ง๋ ๋ฒํธ๋ค" ์น์ ํ์ - ์ต์ ์์ผ๋ก ์ต๋ 10๊ฐ ์ด๋ ฅ์ด ์นด๋ ํํ๋ก ํ์ - ๊ฐ ์นด๋์ 6๊ฐ ์์ ๋ฐฐ์ง + ์์ฑ ์๊ฐ ํ์ - "์ญ์ " ๋ฒํผ ํด๋ฆญ ์ ํด๋น ์ด๋ ฅ์ด DB์์ ์ญ์ ๋๊ณ ๋ชฉ๋ก์์ ์ฌ๋ผ์ง - ๋คํฌ๋ชจ๋์์๋ ์นด๋๊ฐ ์ ๋ณด์ - ํ์ด์ง ์๋ก๊ณ ์นจํด๋ ์ด๋ ฅ์ด ์ ์ง๋จ
์ ์ถ๋ ์ํ (0)
๋ก๊ทธ์ธ ํ ์ ์ถ์์ง ์ ์ถ๋ ์ํ์ด ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๋์ ์๊ฐ ๋์ด๋ณด์ธ์!