์ฝ์ค
: ์ฐ์ํํ
ํฌ์ฝ์ค๋ ํ๋ก ํธ์๋ ์ฝ์ค์ ๋ฐฑ์๋ ์ฝ์ค๋ก ๊ตฌ์ฑ๋์ด์๋ค.
ํฌ๋ฃจ
: ํ์๋ค์ ํฌ๋ฃจ๋ผ๊ณ ํธ์นญํ๋ค.
๋ฏธ์
: ๊ฐ ์ฝ์ค ๋ณ๋ก ํฌ๋ฃจ๋ค์ด ์งํํ ๋ฏธ์
์ด ์๋ค.
ํ
: ๋ฏธ์
๋ง๋ค ๊ฐ ์ฝ์ค๋ณ ํฌ๋ฃจ๋ค๋ก๋ง ๊ตฌ์ฑ๋ ํ์ ๋งค์นญํ ์ ์๋ค.
์ด ์ฑ์ ์ฝ์ค๋ณ๋ก ํฌ๋ฃจ๋ค์ ๊ด๋ฆฌํ๊ณ , ์ฝ์ค๋ณ ๋ฏธ์ ๋ง๋ค ํ์ ๋งค์นญํ๋ค.
์๋จ์ ํญ
๋ฉ๋ด๊ฐ ์กด์ฌํ๋ฉฐ ๊ฐ ํญ์ ๋ฐ๋ผ ์ ์ ํ ๊ธฐ๋ฅ์ ์ํํ๋ค.
ํฌ๋ฃจ ๊ด๋ฆฌ
ํญ์ ํฌ๋ฃจ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๊ธฐ ์ํ ๊ธฐ๋ฅ์ ์ํํ๋ค.ํ ๋งค์นญ ๊ด๋ฆฌ
ํญ์ ํ ๋งค์นญ์ ํ๊ธฐ ์ํ ๊ธฐ๋ฅ์ ์ํํ๋ค.- ๋ค๋ฅธ ํญ์ผ๋ก ์ด๋ํ๋ค ๋์์๋ ๊ธฐ์กด ํญ์ ์ํ๊ฐ ์ ์ง๋์ด์ผ ํ๋ค.
- localStorage๋ฅผ ์ด์ฉํ์ฌ, ์๋ก๊ณ ์นจํ๋๋ผ๋ ๊ฐ์ฅ ์ต๊ทผ์ ์์ ํ ์ ๋ณด๋ค์ ๋ถ๋ฌ์ฌ ์ ์๋๋ก ํ๋ค.
ํฌ๋ฃจ ๊ด๋ฆฌ
ํญ์์, ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ผ๋ก ํฌ๋ฃจ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ ์ ์๋ค.
- ์ฝ์ค๋ณ๋ก ํฌ๋ฃจ๋ฅผ ์ถ๊ฐํ ์ ์๋ค.
- ๋์ผํ ์ด๋ฆ์ ํฌ๋ฃจ๋ ์ถ๊ฐํ ์ ์๋ค.
- ํฌ๋ฃจ ์ด๋ฆ์ ์ต๋ 5๊ธ์๊น์ง ๊ฐ๋ฅํ๋ค.
- ์ฝ์ค๋ณ๋ก ํฌ๋ฃจ๋ฅผ ์ญ์ ํ ์ ์๋ค.
- ์ญ์ ํ ๋๋ confirm์ ์ฌ์ฉํ์ฌ, ์ฌ์ฉ์๊ฐ ํ๋ฒ ๋ ํ์ธํ ์ ์๊ฒ ํ๋ค.
- ํฌ๋ฃจ table์ ์ฒซ๋ฒ์งธ ์ด์๋ index๋ฅผ ๋ฃ์ด ์์๋ฅผ ํ์ํ๋ค. index๋ '1'๋ถํฐ ์์ํ๋ค.
ํ ๋งค์นญ ๊ด๋ฆฌ
ย ํญ์์, ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ผ๋ก ํ์ ๋งค์นญํ ์ ์๋ค.
- '์ฝ์ค๋ณ' '๋ฏธ์
'๋ง๋ค '๋ฌด์์๋ก' ํ์ ๋งค์นญํ ์ ์๋ค.
- ์๋ฅผ ๋ค์ด ํ๋ก ํธ์๋์ ์ซ์ ์ผ๊ตฌ ๊ฒ์ ๋ฏธ์ ์ ํ๋ก ํธ์๋ ํฌ๋ฃจ๋ค๋ก๋ง ๋ฌด์์๋ก ํ์ด ๋งค์นญ๋๊ณ , ๋ฐฑ์๋์ ์ซ์ ์ผ๊ตฌ ๊ฒ์ ๋ฏธ์ ์ ๋ฐฑ์๋ ํฌ๋ฃจ๋ค๋ก๋ง ๋ฌด์์๋ก ํ์ด ๋งค์นญ๋๋ค.
- ํ ๋งค์นญ ์
1ํ๋น ์ธ์ ์
์ ์ ๋ ฅํ ๊ฐ ๋ณด๋ค ๋ ์ ์ ์์ ํฌ๋ฃจ๋ค๋ก ๊ตฌ์ฑ๋ ํ์ด ์์ด์ผ ํ๋ค. ๋จ์ ์ธ์์ ์ ํ๋ถํฐ ์์๋๋ก ๋ฐฐ์ ํ๋ค.- ์๋ฅผ ๋ค์ด, ํฌ๋ฃจ๊ฐ 11๋ช
์ผ ๋
1ํ๋น ์ธ์ ์
๋ก 3๋ช ์ ์ ๋ ฅ ํ๋ฉด, 4 4 3์ผ๋ก ํ์ด ๊ตฌ์ฑ๋์ด์ผ ํ๋ค. - ํ์ ์ฌ๋งค์นญํ ์ ์๋ค.
- ์๋ฅผ ๋ค์ด, ํฌ๋ฃจ๊ฐ 11๋ช
์ผ ๋
- ํ ๋งค์นญ ๊ฒฐ๊ณผ๋ ํ๋ก๊ทธ๋จ ์คํ ๊ฒฐ๊ณผ ์์์ ๊ฐ์ด ์ผํ๋ก ๊ตฌ๋ถํ๋ค.
- ์ ๊ณตํ๋ ์๋์ ๋งํฌ์ ์ ํ์ฉํ์ฌ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋ค.
<div id="app">
<header>
<h1>์ฐํ
์ฝ ํฌ๋ฃจ์ ํ ๋งค์นญ ๊ด๋ฆฌ ๋ณด๋</h1>
<nav>
<ul>
<li>
<button id="crew-tab">ํฌ๋ฃจ ๊ด๋ฆฌ</button>
</li>
<li>
<button id="team-tab">ํ ๋งค์นญ ๊ด๋ฆฌ</button>
</li>
</ul>
</nav>
</header>
<main>
<section>
<h3>ํฌ๋ฃจ๋ฅผ ๊ด๋ฆฌํ ์ฝ์ค๋ฅผ ์ ํํด์ฃผ์ธ์</h3>
<div>
<input id="frontend-course" type="radio" name="course" value="frontend" />
<label for="frontend">ํ๋ก ํธ์๋</label>
<input id="backend-course" type="radio" name="course" value="backend" />
<label for="backend">๋ฐฑ์๋</label>
</div>
</section>
<section>
<h3>ํ๋ก ํธ์๋ ํฌ๋ฃจ ๊ด๋ฆฌ</h3>
<form>
<label>ํฌ๋ฃจ ์ด๋ฆ</label>
<input id="crew-name-input" type="text" />
<button id="add-crew-button">ํ์ธ</button>
</form>
</section>
<section>
<h3>ํ๋ก ํธ์๋ ํฌ๋ฃจ ๋ชฉ๋ก</h3>
<table id="crew-table" border="1">
<thead>
<tr>
<th></th>
<th>ํฌ๋ฃจ</th>
<th>๊ด๋ฆฌ</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>์ค</td>
<td>
<button class="delete-crew-button">์ญ์ </button>
</td>
</tr>
</tbody>
</table>
</section>
</main>
</div>
<div id="app">
<header>
<h1>์ฐํ
์ฝ ํฌ๋ฃจ์ ํ ๋งค์นญ ๊ด๋ฆฌ ๋ณด๋</h1>
<nav>
<ul>
<li>
<button id="crew-tab">ํฌ๋ฃจ ๊ด๋ฆฌ</button>
</li>
<li>
<button id="team-tab">ํ ๋งค์นญ ๊ด๋ฆฌ</button>
</li>
</ul>
</nav>
</header>
<main>
<section>
<h3>ํ ๋งค์นญ์ ๊ด๋ฆฌํ ์ฝ์ค, ๋ฏธ์
์ ์ ํํ์ธ์.</h3>
<form>
<select id="course-select">
<option value="frontend">ํ๋ก ํธ์๋</option>
<option value="backend">๋ฐฑ์๋</option>
</select>
<select id="mission-select">
<option value="baseball">์ซ์์ผ๊ตฌ๊ฒ์</option>
<option value="racingcar">์๋์ฐจ๊ฒฝ์ฃผ</option>
<option value="lotto">๋ก๋</option>
<option value="shopping-cart">์ฅ๋ฐ๊ตฌ๋</option>
<option value="payments">๊ฒฐ์ </option>
<option value="subway">์งํ์ฒ ๋
ธ์ ๋</option>
<option value="performance">์ฑ๋ฅ๊ฐ์ </option>
<option value="deploy">๋ฐฐํฌ</option>
</select>
<button id="show-team-matcher-button">ํ์ธ</button>
</form>
</section>
<section>
<h3>ํ๋ก ํธ์๋ ์ซ์์ผ๊ตฌ๊ฒ์ ๋ฏธ์
์ ํ ๋งค์นญ</h3>
<div>
<div>
<p>์์ง ๋งค์นญ๋ ํ์ด ์์ต๋๋ค. ํ์ ๋งค์นญํ๊ฒ ์ต๋๊น?</p>
<form>
<label>1ํ๋น ์ธ์ ์</label>
<input id="team-member-count-input" type="number" />
<button id="match-team-button">ํ ๋งค์นญ</button>
</form>
</div>
<h4>ํฌ๋ฃจ ๋ชฉ๋ก</h4>
<ul>
<li>์ค</li>
<li>ํฌ์ฝ</li>
</ul>
</div>
</section>
<!-- ํ ๋งค์นญ์ด ๋ ๊ฒฝ์ฐ -->
<section>
<h3>ํ๋ก ํธ์๋ ์ซ์์ผ๊ตฌ๊ฒ์ ์กฐํ</h3>
<p>ํ์ด ๋งค์นญ๋์์ต๋๋ค.</p>
<ul id="team-match-result">
<li>์ค,ํฌ์ฝ</li>
</ul>
<p>
ํ์ ์ฌ๋งค์นญ ํ์๊ฒ ์ต๋๊น?
<button id="rematch-team-button">์ฌ๋งค์นญ</button>
</p>
</section>
</main>
</div>
- ํ์ ๋๋คํ๊ฒ ๋งค์นญํ๋ ๊ธฐ๋ฅ์
MissionUtils
๋ผ์ด๋ธ๋ฌ๋ฆฌ์Random.shuffle
์ ์ฌ์ฉํด ๊ตฌํํ๋ค.MissionUtils
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์คํฌ๋ฆฝํธ๋index.html
์ ์ด๋ฏธ ํฌํจ๋์ด ์ ์ญ ๊ฐ์ฒด์ ์ถ๊ฐ๋์ด ์์ผ๋ฏ๋ก, ๋ฐ๋กimport
ํ์ง ์์๋ ๊ตฌํ ์ฝ๋ ์ด๋์์๋ ์ฌ์ฉํ ์ ์๋ค.
- ์คํฌ๋ฆฝํธ ์ถ๊ฐ ์ธ์ ์ฃผ์ด์งย
index.html
ํ์ผ์ ์์ ํ ์ ์๋ค.- ์คํ์ผ(css)์ ์ฑ์ ์์๊ฐ ์๋๋ค.
- ๋ชจ๋ ์์ธ ๋ฐ์ ์ํฉ์
alert
๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ์ฒ๋ฆฌํ๋ค. - ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(jQuery, Lodash ๋ฑ)๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ์์ Vanilla JS๋ก๋ง ๊ตฌํํ๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ ์ปจ๋ฒค์ ์ ์งํค๋ฉด์ ํ๋ก๊ทธ๋๋ฐ ํ๋ค.
- indent(์ธ๋ดํธ, ๋ค์ฌ์ฐ๊ธฐ) depth๋ฅผ 3์ด ๋์ง ์๋๋ก ๊ตฌํํ๋ค. 2๊น์ง๋ง ํ์ฉํ๋ค.
- ์๋ฅผ ๋ค์ด while๋ฌธ ์์ if๋ฌธ์ด ์์ผ๋ฉด ๋ค์ฌ์ฐ๊ธฐ๋ 2์ด๋ค.
- ํํธ: indent(์ธ๋ดํธ, ๋ค์ฌ์ฐ๊ธฐ) depth๋ฅผ ์ค์ด๋ ์ข์ ๋ฐฉ๋ฒ์ ํจ์(๋๋ ๋ฉ์๋)๋ฅผ ๋ถ๋ฆฌํ๋ฉด ๋๋ค.
- ํจ์(๋๋ ๋ฉ์๋)๊ฐ ํ ๊ฐ์ง ์ผ๋ง ํ๋๋ก ์ต๋ํ ์๊ฒ ๋ง๋ค์ด๋ผ.
- ๋ณ์ ์ ์ธ์
var
๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค.const
์let
์ ์ฌ์ฉํ๋ค. import
๋ฌธ์ ์ด์ฉํด ์คํฌ๋ฆฝํธ๋ฅผ ๋ชจ๋ํํ๊ณ ๋ถ๋ฌ์ฌ ์ ์๊ฒ ๋ง๋ ๋ค.- ํจ์(๋๋ ๋ฉ์๋)์ ๊ธธ์ด๊ฐ 15๋ผ์ธ์ ๋์ด๊ฐ์ง ์๋๋ก ๊ตฌํํ๋ค.
- ํจ์(๋๋ ๋ฉ์๋)๊ฐ ํ ๊ฐ์ง ์ผ๋ง ์ ํ๋๋ก ๊ตฌํํ๋ค.
- ๋ฏธ์ ์ javascript-teammatching-precourse ์ ์ฅ์๋ฅผ Fork/Cloneํด ์์ํ๋ค.
- ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ ์ javascript-teammatching-precourse/docs/README.md ํ์ผ์ ๊ตฌํํ ๊ธฐ๋ฅ ๋ชฉ๋ก์ ์ ๋ฆฌํด ์ถ๊ฐํ๋ค.
- Git์ ์ปค๋ฐ ๋จ์๋ ์ ๋จ๊ณ์์ README.md ํ์ผ์ ์ ๋ฆฌํ ๊ธฐ๋ฅ ๋ชฉ๋ก ๋จ์๋ก ์ถ๊ฐํ๋ค.
- AngularJS Commit Message Conventions ์ฐธ๊ณ ํด commit log๋ฅผ ๋จ๊ธด๋ค.
- ๊ณผ์ ์งํ ๋ฐ ์ ์ถ ๋ฐฉ๋ฒ์ ํ๋ฆฌ์ฝ์ค ๊ณผ์ ์ ์ถ ๋ฌธ์ ๋ฅผ ์ฐธ๊ณ ํ๋ค.
- ๋ฏธ์
๊ตฌํ์ ์๋ฃํ ํ GitHub์ ํตํด ์ ์ถํด์ผ ํ๋ค.
- GitHub์ ํ์ฉํ ์ ์ถ ๋ฐฉ๋ฒ์ ํ๋ฆฌ์ฝ์ค ๊ณผ์ ์ ์ถ ๋ฌธ์ ๋ฅผ ์ฐธ๊ณ ํด ์ ์ถํ๋ค.
- GitHub์ ๋ฏธ์
์ ์ ์ถํ ํ ์ฐ์ํํ
ํฌ์ฝ์ค ์ง์ ํ๋ซํผ ์ ์ ์ํ์ฌ ํ๋ฆฌ์ฝ์ค ๊ณผ์ ๋ฅผ ์ ์ถํ๋ค.
- ์์ธํ ๋ฐฉ๋ฒ์ ๋งํฌ ๋ฅผ ์ฐธ๊ณ ํ๋ค.
- Pull Request๋ง ๋ณด๋ด๊ณ , ์ง์ ํ๋ซํผ์์ ๊ณผ์ ๋ฅผ ์ ์ถํ์ง ์์ผ๋ฉด ์ต์ข ์ ์ถํ์ง ์์ ๊ฒ์ผ๋ก ์ฒ๋ฆฌ๋๋ ์ฃผ์ํ๋ค.
- ์๊ตฌ์ฌํญ์ ๋ช ์๋ ์ถ๋ ฅ๊ฐ ํ์์ ์งํค์ง ์์ ๊ฒฝ์ฐ ๊ธฐ๋ฅ ๊ตฌํ์ ๋ชจ๋ ์ ์์ ์ผ๋ก ํ๋๋ผ๋ 0์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ค.
- ๊ธฐ๋ฅ ๊ตฌํ์ ์๋ฃํ ๋ค ์๋ ๊ฐ์ด๋์ ๋ฐ๋ผ ํ ์คํธ๋ฅผ ์คํํ์ ๋ ๋ชจ๋ ํ ์คํธ๊ฐ ์ฑ๊ณตํ๋ ์ง ํ์ธํ๋ค. ํ ์คํธ๊ฐ ์คํจํ ๊ฒฝ์ฐ 0์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ฏ๋ก, ๋ฐ๋์ ํ์ธ ํ ์ ์ถํ๋ค.
- ํ
์คํธ ์คํ์ ํ์ํ ํจํค์ง ์ค์น๋ฅผ ์ํด
Node.js
๋ฒ์ 14
์ด์์ด ํ์ํ๋ค. - ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด ํจํค์ง๋ฅผ ์ค์นํ๋ค.
// {ํด๋ ๊ฒฝ๋ก}/javascript-teammatching-precourse/ ์์
npm install
- ์ค์น๊ฐ ์๋ฃ๋์๋ค๋ฉด, ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํด ํ ์คํธ๋ฅผ ์คํํ๋ค.
// {ํด๋ ๊ฒฝ๋ก}/javascript-teammatching-precourse/ ์์
npm run test
- ์๋์ ๊ฐ์ ํ๋ฉด์ด ๋์ค๋ฉฐ ๋ชจ๋ ํ ์คํธ๊ฐ passํ๋ค๋ฉด ์ฑ๊ณต!