Giter Club home page Giter Club logo

2019-07's People

Contributors

2ssue avatar changicho avatar connectfoundation avatar leecoders avatar ocy1011 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

2019-07's Issues

๋ฐฐํฌ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์ถ•

๋ฐฐํฌ ์„œ๋ฒ„์— ์„ค๊ณ„ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•œ๋‹ค.

ํ˜„์žฌ๋Š” ์ž„์‹œ๋กœ ๋ฐฐํฌํ•œ ๋‹จ์ผ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์ถ•, ์ถ”ํ›„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Œ.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ์ด๋ฏธ์ง€
image

ํ€ด์ฆˆ ์ง„ํ–‰ ํŽ˜์ด์ง€๋ฅผ ๋ฒ—์–ด๋‚œ ์ดํ›„์— ์ƒˆ๋กœ๊ณ ์นจ ์‹œ์—๋„ ๊ฒฝ๊ณ ์ฐฝ์ด ๋œจ๋Š” ํ˜„์ƒ

ํ€ด์ฆˆ ์ง„ํ–‰ ํŽ˜์ด์ง€๋ฅผ ๋’ค๋กœ๊ฐ€๊ธฐ ๋“ฑ์„ ํ†ตํ•ด ๋ฒ—์–ด๋‚œ ๋’ค ๊ธฐ์กด์— ๋“ฑ๋ก๋˜์–ด์žˆ๋˜ window ์ด๋ฒคํŠธ๊ฐ€ ํ•ด์ œ๋˜์ง€ ์•Š์•„ ํ€ด์ฆˆ ์ง„ํ–‰ ํŽ˜์ด์ง€๊ฐ€ ์•„๋‹ˆ์–ด๋„ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ–ˆ์„ ๋•Œ ๊ฒฝ๊ณ ์ฐฝ์ด ๋œจ๋Š” ํ˜„์ƒ์ด ์žˆ์Œ.

๋ฒ„๊ทธ ๋ฐœ์ƒ ๊ณผ์ •

  1. ํ€ด์ฆˆ ์ง„ํ–‰ ํŽ˜์ด์ง€๋ฅผ ๋’ค๋กœ๊ฐ€๊ธฐ๋กœ ๋ฒ—์–ด๋‚œ๋‹ค.
  2. ํ€ด์ฆˆ ์ง„ํ–‰ ํŽ˜์ด์ง€๊ฐ€ ์•„๋‹Œ ํŽ˜์ด์ง€์—์„œ ์ƒˆ๋กœ๊ณ ์นจ์„ ํ•œ๋‹ค.
  3. ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์ €์žฅ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ๊ฒฝ๊ณ ์ฐฝ ๋ฐœ์ƒ

์˜ˆ์ƒ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

ํŽ˜์ด์ง€๊ฐ€ unload๋  ๋•Œ ๋“ฑ๋กํ•ด๋‘์—ˆ๋˜ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์‚ญ์ œํ•ด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒ๋จ.

window.addEventListner('unload', () => removeEventListner~);

์ ์ˆ˜ ์ถœ๋ ฅ ํ™”๋ฉด ํŽ˜์ด์ง€ ์ œ์ž‘

Host์™€ Player๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ํŽ˜์ด์ง€๋ฅผ ์ œ์ž‘ํ•œ๋‹ค.

Host

  • ํŽ˜์ด์ง€ ์ƒ๋‹จ์— ์ ์ˆ˜ ์ถœ๋ ฅ ํ…์ŠคํŠธ ์ถœ๋ ฅ
  • ํŽ˜์ด์ง€ ํ•˜๋‹จ์— ์ƒ์œ„ 10๋ช…์˜ ๋Œ€์‹œ๋ณด๋“œ ์ถœ๋ ฅ

Player

  • ํŽ˜์ด์ง€ ์ƒ๋‹จ์— ํ”Œ๋ ˆ์ด์–ด ๊ฐœ์ธ์ˆœ์œ„ ์ถœ๋ ฅ
  • ํ•˜๋‹จ์— ์ƒ์œ„ 10๋ช…์˜ ๋Œ€์‹œ๋ณด๋“œ ์ถœ๋ ฅ

ํ•˜๋‹จ์— ์ถœ๋ ฅ๋˜๋Š” ๋Œ€์‹œ๋ณด๋“œ๋Š” ๋™์ผํ•œ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•จ

ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ ์„ธํŒ…

์›ํ™œํ•œ ํ”„๋กœ์ ํŠธ ์ž‘์—…์„ ์œ„ํ•ด ์ดˆ๊ธฐ ํด๋” ๊ตฌ์กฐ๋ฅผ ์„ธํŒ…ํ•˜๊ณ , ์ฝ”๋“œ ์Šคํƒ€์ผ์„ ๋งž์ถ”๊ธฐ ์œ„ํ•œ lint ์„ค์ • ๋“ฑ์˜ ์ž‘์—….

  • ํด๋”๊ตฌ์กฐ ์„ธํŒ…
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•„์š”ํ•œ ๋ชจ๋“ˆ ์„ค์น˜
  • ๋ฆฐํŠธ ์„ค์ •

ํ€ด์ฆˆ์ง„ํ–‰/host ๊ฒฐ๊ณผ ํŽ˜์ด์ง€ ๋ฐ์ดํ„ฐ ์ตœ์ข… ๊ฒฐ๊ณผ์™€ ์—ฐ๋™

host์˜ dashboard์— ํ•˜๋“œ์ฝ”๋”ฉ๋˜์–ด์žˆ๋˜ ์ˆœ์œ„๋ฅผ,
์†Œ์ผ“์—์„œ ๋ฐ›์•„์˜จ ์‹ค์ œ ์ˆœ์œ„๋กœ ๋ณ€๊ฒฝ.

  • HostGameRoom์˜ GameResult์ปดํฌ๋„ŒํŠธ์—์„œ ๊ฒŒ์ž„ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ prop์œผ๋กœ ๋„˜๊น€
  • ํŒŒํŽธํ™” ๋˜์–ด์žˆ๋Š” dashBorad ํ•˜๋‚˜๋กœ ํ•ฉ์น˜๊ธฐ

HTTP request method ๋ชฉ์ ์— ๋งž๋„๋ก API ๋ฆฌํŒฉํ† ๋ง

๋‹ค์Œ API๋ฅผ post ํ˜•ํƒœ์—์„œ get ํ˜•ํƒœ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์œ : post๋Š” ์„œ๋ฒ„์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์žˆ์„ ๋•Œ, ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉํ•˜๋‚˜ ์•„๋ž˜ api๋“ค์€ ์—ฌ๊ธฐ์— ํ•ด๋‹น๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ˜•ํƒœ๋ฅผ get์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

  • ์œ ํšจํ•œ ๋ฐฉ์˜ ์ด๋ฆ„์„ ์ฒดํฌํ•˜๋Š” /checkRoomNumber
  • Player์˜ ์œ ํšจํ•œ ๋‹‰๋„ค์ž„์„ ์ฒดํฌํ•˜๋Š” /setNickname
  • ๋„ค์ด๋ฒ„ ์•„์ด๋””๋กœ ๋กœ๊ทธ์ธํ•˜๋Š” ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” /setJWT

๋กœ๊ทธ์ธ API ์ œ์ž‘

  • ๋„ค์ด๋ฒ„ oauth ๋กœ๊ทธ์ธ์‹œ ๋ฐ›์•„์˜จ access_token ๋ถ„๋ฆฌ.
  • ํ† ํฐ์œผ๋กœ ๋„ค์ด๋ฒ„ ํ”„๋กœํ•„ API์—์„œ ์ •๋ณด ์š”์ฒญ
  • ๋ฐ›์•„์˜จ ์ •๋ณด๋กœ JWT ์ƒ์„ฑ. ์ฟ ํ‚ค์— ์„ค์ •
  • ๋กœ๊ทธ์ธ ์™„๋ฃŒ ํ›„ ์ด๋™ํ•  ํŽ˜์ด์ง€๋กœ redirect

FlexibleInput ์ œ์ž‘

FlexibleInput.defaultProps = {
  placeholder: 'placeholder',
  mobileFontSize: '1.5rem',
  callback: undefined,
};

FlexibleInput.propTypes = {
  maxLength: PropTypes.number.isRequired,
  mobileFontSize: PropTypes.string,
  placeholder: PropTypes.string,
  callback: PropTypes.func,
};
  • maxLength๋ณด๋‹ค ๋งŽ์ด ์ž…๋ ฅํ•  ๊ฒฝ์šฐ ์ž…๋ ฅ์„ ๋ง‰์Œ
  • ๊ธ€์ž๋ฅผ ์ž…๋ ฅํ•  ๋•Œ๋งˆ๋‹ค ๋‚จ์€ ๊ธ€์ž ์ˆ˜ ์ถœ๋ ฅ
  • callback์„ ๋„˜๊ฒจ์ฃผ๋ฉด ์ธ์ž๋กœ value๋ฅผ ๋„˜๊ฒจ callback ์‹คํ–‰
  • mobileFontSize์— ๋”ฐ๋ผ ๊ธ€์ž ์š”์†Œ๋“ค ์ „๋ถ€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
  • placeholder ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
  • focus์‹œ placeholder ์•ˆ ๋ณด์ด๊ฒŒ ๋งŒ๋“ค๊ธฐ
  • blur(focusOut)์‹œ ๋‚จ์€ ๊ธ€์ž ์ˆ˜ ์•ˆ๋ณด์ด๊ฒŒ ๋งŒ๋“ค๊ธฐ
  • Enter ํ‚ค ๋ง‰๊ธฐ

Player ๋Œ€๊ธฐ์‹ค์—์„œ ๊ฒŒ์ž„ ์นด์šดํŠธ ๋‹ค์šด ํ™”๋ฉด์ด ๋จผ์ € ๋œจ๋Š” ํ˜„์ƒ

Player ๋Œ€๊ธฐ์‹ค์—์„œ ๊ฒŒ์ž„ ๋Œ€๊ธฐ ์ค‘ ํ™”๋ฉด์ด ์•„๋‹ˆ๋ผ, ๊ฒŒ์ž„์ด ์‹œ์ž‘๋˜๋Š” ์นด์šดํŠธ๋‹ค์šด ํ™”๋ฉด์ด ๋จผ์ € ๋ Œ๋”๋ง ๋˜๋Š” ํ˜„์ƒ์ด ์žˆ์Œ

๋ฐฉ list ํŽ˜์ด์ง€ API ๊ตฌํ˜„

๋ฐฉ ์ƒ์„ฑ API ์ฒดํฌ ์‚ฌํ•ญ

  • post ํ˜•ํƒœ
  • ๋ฐฉ ์ด๋ฆ„์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์‹ค์‹œํ•œ๋‹ค.
    • ์ตœ๋Œ€ 26์ž๊นŒ์ง€ ๊ฐ€๋Šฅ
    • ํ•œ Host๋Š” ๋™์ผํ•œ ๋ฐฉ์˜ ์ด๋ฆ„์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Œ

      DB์—์„œ userid + title์— ๋Œ€ํ•ด unique ์„ค์ •์„ ํ•ด์ค˜์•ผํ•จ. client์—์„œ๋Š” ๋ง‰์•˜์Šต๋‹ˆ๋‹ค.

  • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ•  ๊ฒฝ์šฐ ์š”์ฒญ์— ๋”ฐ๋ฅธ ์ƒˆ๋กœ์šด ๋ฐฉ์„ DB์— ์ถ”๊ฐ€ํ•œ๋‹ค.
  • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•  ๊ฒฝ์šฐ ์—๋Ÿฌ๋ฉ”์‹œ์ง€๋ฅผ ์ „์†กํ•œ๋‹ค.

6์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„

  • ๊ธฐ์กด์— ์กด์žฌํ•˜๋˜ ๋ฐฉ์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐฉ ์ด๋ฆ„์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ถ”๊ฐ€
    • ์ตœ์†Œ 1์ž ์ด์ƒ, ์ตœ๋Œ€ 26์ž ์ดํ•˜

๊ด€๋ จ ์ด์Šˆ: #162

EditPage ๋ฆฌํŒฉํ† ๋ง ๋ฐ api ๊ตฌํ˜„

EditPage๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•ฉ๋‹ˆ๋‹ค.

  • ํ•ด์ƒ๋„๊ฐ€ ๋ณ€ํ•ด๋„ ๋ ˆ์ด์•„์›ƒ์ด ๊นจ์ง€์ง€ ์•Š๊ฒŒ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  • state ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ˜์˜ํ•˜์—ฌ ๋ฆฌํŒฉํ† ๋งํ•ฉ๋‹ˆ๋‹ค.(๋ถˆํ•„์š”ํ•œ ๋ฆฌ๋ Œ๋”๋ง ๋ฐฉ์ง€)

์ƒ์œ„ Issue #38

Dashboard(Top 10) ์ œ์ž‘

Dashboard ์ œ์ž‘

๊ตฌ์„ฑ

  • ๋“ฑ์ˆ˜
  • ๋‹‰๋„ค์ž„
  • ์ ์ˆ˜

๋“ฑ์ˆ˜

  • 1๋“ฑ์€ ๊ธˆ๋ฉ”๋‹ฌ, 2๋“ฑ์€ ์€๋ฉ”๋‹ฌ, 3๋“ฑ์€ ๋™๋ฉ”๋‹ฌ ์ด๋ฏธ์ง€ ์ถœ๋ ฅ
  • 4๋“ฑ๋ถ€ํ„ฐ 10๋“ฑ๊นŒ์ง€๋Š” ํ…์ŠคํŠธ๋กœ ๋“ฑ์ˆ˜ ์ถœ๋ ฅ
  • ๋™์ ์ž์— ๋Œ€ํ•ด์„œ ๊ณต๋™ ๋“ฑ์ˆ˜ ์ ์šฉ

๋‹‰๋„ค์ž„

  • ์ง€์ •๋œ ์˜์—ญ์„ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ text-overflow ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ...์œผ๋กœ ํ‘œ์‹œ

์ ์ˆ˜

๊ณตํ†ต

  • ํ•˜์œ„ ๋“ฑ์ˆ˜๋กœ ๊ฐˆ์ˆ˜๋ก ๊ทธ๋ž˜ํ”„ ์˜์—ญ์ด ๊ทธ๋ผ๋ฐ์ด์…˜ ํšจ๊ณผ๋กœ ์ ์  ์–ด๋‘์›Œ์ง.
  • ์ง€์ •๋œ ์˜์—ญ์„ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ text-overflow ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ...์œผ๋กœ ํ‘œ์‹œ

๋ชจ๋ฐ”์ผ

  • ๊ทธ๋ž˜ํ”„ ์˜์—ญ๊ณผ ์ ์ˆ˜ ์˜์—ญ ํ•ฉ์ณ์„œ ํ‘œ์‹œ

๋ฐ์Šคํฌํƒ‘

  • ์ตœ๊ณ ์ ์ˆ˜๋ฅผ 100% ๊ธฐ์ค€์œผ๋กœ ํ”Œ๋ ˆ์ด์–ด๋“ค์˜ ์ ์ˆ˜๋ฅผ %๋กœ ๊ณ„์‚ฐํ•˜์—ฌ ๊ทธ๋ž˜ํ”„ ์˜์—ญ์„ ์ฑ„์›€
  • ์ ์ˆ˜ ๊ทธ๋ž˜ํ”„ ์•ˆ์— ์ ์ˆ˜ ํ…์ŠคํŠธ ์ถœ๋ ฅ
  • ์ ์ˆ˜ ๊ทธ๋ž˜ํ”„์— ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ ์ ์šฉ(์™ผ์ชฝ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ๊ทธ๋ž˜ํ”„์˜ ์˜์—ญ์ด ๋„“์–ด์ง)

๋ฌธํ•ญ๋ณ„ ์„ ํƒ ์ˆ˜ ๊ทธ๋ž˜ํ”„ ์ œ์ž‘

ํ€ด์ฆˆ ํ•œ ๋ฌธ์ œ๊ฐ€ ๋๋‚  ๋•Œ ๋งˆ๋‹ค ๋‚˜์˜ค๋Š” ๊ทธ๋ž˜ํ”„๋ฅผ ์ œ์ž‘

  • 4๊ฐœ ์ด์ƒ ๊ทธ๋ž˜ํ”„๋„ ์ถœ๋ ฅ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๊ตฌํ˜„
  • colors.ITEM_COLOR์˜ ๊ธธ์ด๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ์•„์ดํ…œ์ด ๋“ค์–ด๊ฐˆ ๊ฒฝ์šฐ 'salmon' ์ƒ‰์œผ๋กœ ๊ทธ๋ž˜ํ”„ ์ถœ๋ ฅ
  • ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ ์ ์šฉ(2์ดˆ)

README ๋ฌธ์„œ ๊ฐœ์„ 

README์— ํ‹ฐํƒ€์ž„ ๋•Œ ์–˜๊ธฐํ–ˆ๋˜ ๋ถ€๋ถ„ ์ถ”๊ฐ€

  • ํ”„๋กœ์ ํŠธ์—์„œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์„ ์ž์„ธํ•˜๊ฒŒ ๊ธฐ์ˆ 
    • ํ”„๋กœ์ ํŠธ ํ•œ์ค„ ์š”์•ฝ
    • ํ”„๋กœ์ ํŠธ ์‚ฌ์šฉ ์˜ˆ์‹œ
  • ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์ •๋ฆฌ
  • ๊ฐ์ž ๋‹ด๋‹นํ•˜๊ณ ์žˆ๋Š”(๋‹ด๋‹นํ–ˆ๋˜) ๊ธฐ๋Šฅ๋“ค LIST ์—ฐ๊ฒฐ

์‹ค์‹œ๊ฐ„ ํ€ด์ฆˆ ์ง„ํ–‰ Player ํŽ˜์ด์ง€ ๊ตฌํ˜„

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๋ฐ”๋€ ์ž‘์—… ๋ชฉ๋ก์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

ํ”Œ๋ ˆ์ด์–ด ์ž…์žฅ์—์„œ ๋ฌธ์ œ์˜ ๋‚จ์€์‹œ๊ฐ„ ํ‘œ์‹œํ•˜๋Š” ๋ถ€๋ถ„ ์‚ญ์ œ.
๊ฒŒ์ž„ ์ค‘๊ฐ„์— ๋“ค์–ด์˜ค๋Š” ๋ถ€๋ถ„ ์‚ญ์ œ

front

  • ๋ฌธ์ œ ์ง„ํ–‰ view ๊ตฌํ˜„
  • ๋ฌธ์ œ ๋‚ด์šฉ ๋ฐ ๋ฒ„ํŠผ ๋‚ด์šฉ์„ ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜จ ๋Œ€๋กœ ์ถœ๋ ฅ

back

  • ๊ฒŒ์ž„ ์ง„ํ–‰์ค‘์ธ ๋ฐฉ์˜ ํ€ด์ฆˆ ๋ฌธ์ œ ์„ธํŠธ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” API ๊ตฌํ˜„
    • get ์š”์ฒญ์œผ๋กœ ๊ตฌํ˜„

์‹ค์‹œ๊ฐ„ ํ€ด์ฆˆ ์ง„ํ–‰ Host Page ๊ตฌํ˜„

์‹ค์‹œ๊ฐ„ ํ€ด์ฆˆ ์ง„ํ–‰ Host Page๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์˜ค์ฐฝ์˜(@ocy1011)๋‹˜์ด Host์™€ Player ์ธ๊ฒŒ์ž„ ํŽ˜์ด์ง€์˜ ํ†ต์ผ์„ฑ์„ ์œ„ํ•ด ๋ ˆ์ด์•„์›ƒ ๋””์ž์ธ ์ž‘์—…์„ ๋‹ค์‹œ ๋งก์•„ ์ง„ํ–‰ํ•˜์…จ์Šต๋‹ˆ๋‹ค.

์ฒดํฌ์‚ฌํ•ญ

  • ์†Œ์ผ“ ํ†ต์‹ 
    • Host๊ฐ€ ๋‹ค์Œ ๋ฌธ์ œ๋ฅผ ํด๋ฆญํ•˜๋ฉด Player๋„ ๋‹ค์Œ ๋ฌธ์ œ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.
    • ๊ฐ ๋ฌธ์ œ์˜ ๋ฌธํ•ญ์— ๋งž๋Š” ์ œ๋ชฉ๊ณผ ๋‚ด์šฉ์ด Player์™€ ๋™์ผํ•˜๊ฒŒ ์ถœ๋ ฅ๋œ๋‹ค.

      ๊ฐ ๋ฌธ์ œ๋ณ„ ๋‚จ์€ ์ œํ•œ ์‹œ๊ฐ„์ด Player์™€ ๋™์ผํ•˜๊ฒŒ ์ถœ๋ ฅ๋˜๋Š” ๊ธฐ๋Šฅ์€ #74 ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ํŽ˜์ด์ง€ View
    • ์ƒ๋‹จ์—๋Š” ์ด ๋ฌธ์ œ์˜ ๊ฐœ์ˆ˜์™€ ํ˜„์žฌ ๋ฌธ์ œ์˜ ๋ฒˆํ˜ธ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. (current/total)
    • ์ค‘์•™์— Host๊ฐ€ ์ €์žฅํ•œ ์ด๋ฏธ์ง€ ๋˜๋Š” ๊ธฐ๋ณธ ์ด๋ฏธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
    • ์ค‘์•™ ์ƒ๋‹จ ์šฐ์ธก์—๋Š” ๋‹ค์Œ ํ€ด์ฆˆ๋กœ ๊ฐ•์ œ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ์„ ์ถœ๋ ฅํ•œ๋‹ค.
    • ํ•˜๋‹จ์—๋Š” ๋ฌธ์ œ์— ๋งž๋Š” ๋ฌธํ•ญ์„ ์ถœ๋ ฅํ•œ๋‹ค.
    • ๊ฐ ๋ฌธ์ œ๋ณ„ ๋‚จ์€ ์ œํ•œ ์‹œ๊ฐ„์„ ์ค‘๊ฐ„ ์ขŒ์ธก์— ์ถœ๋ ฅํ•œ๋‹ค.
    • Host๋Š” ๋ฌธ์ œ๊ฐ€ ๋๋‚  ๋•Œ ๋งˆ๋‹ค ๋ฌธํ•ญ๋ณ„ Player์˜ ์„ ํƒ ํ˜„ํ™ฉ์„ ๋„์šด๋‹ค.
      • ํ•˜๋‹จ์—๋Š” ๋ฌธํ•ญ์— ๋งž๋Š” ๋ฒ„ํŠผ ๋ชจ์–‘์ด ์ถœ๋ ฅ๋œ๋‹ค.
      • ์ƒ๋‹จ์—๋Š” ๋ฌธ์ œ์— ๋งž๋Š” ์ œ๋ชฉ์ด ์ถœ๋ ฅ๋œ๋‹ค.
      • ์ค‘์•™์—๋Š” Player์˜ ํ•ญ๋ชฉ ์„ ํƒ ์ฐจํŠธ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.
      • ์ค‘์•™์˜ ์šฐ์ธก ์ƒ๋‹จ์—๋Š” ๋‹ค์Œ ํ€ด์ฆˆ๋กœ ๋„˜์–ด๊ฐ€๋Š” ๋ฒ„ํŠผ์„ ์ถœ๋ ฅํ•œ๋‹ค.
        image

๋ฒ„๊ทธ/URL๋กœ ์ง์ ‘์ ‘๊ทผ์‹œ ์œ ํšจํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ

  1. 404 ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ
  2. url๋กœ ์ง์ ‘ ์ ‘๊ทผ ์‹œ prop๊ฐ€ ์—†์–ด์„œ ์ƒ๊ธฐ๋Š” ์˜ค๋ฅ˜
  • 404 ํŽ˜์ด์ง€ ๊ตฌํ˜„
  • cannot find property ์—๋Ÿฌ ํ•ด๊ฒฐ
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๋ชจ๋“  ํŽ˜์ด์ง€์— ์ ์šฉ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งค๋‹ˆ์ € ๊ฐ์ฒด ์„ค๊ณ„

์ „์ฒด ํ…Œ์ด๋ธ”์„ ๊ด€๋ฆฌํ•˜๋Š” Manager ๊ฐ์ฒด ์ƒ์„ฑ

  • connection pool์„ ๊ด€๋ฆฌ
  • ์ฟผ๋ฆฌ(๋ฌธ์ž์—ด)์„ ์ž…๋ ฅ๋ฐ›์•„ ์ˆ˜ํ–‰ํ•ด์ฃผ๋Š” ๊ณตํ†ต ๋ฉ”์†Œ๋“œ
    • query(query, params)

๊ฐ ํ…Œ์ด๋ธ”์˜ CRUD๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๊ฐ์ฒด ์ƒ์„ฑ (๋ฉ”์†Œ๋“œ ์—†์ด ๊ตฌ์กฐ๋งŒ)

  • 1. user
  • 2. room
  • 3. quizSet
  • 4. quiz
  • 5. item
  • 6. analysis

ํŒ€์—์„œ ๊ฒ€ํ† 

  • ๊ฒ€ํ†  ํ›„ ์ด์ƒ ์—†์Œ

๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ์ œ์ž‘

  • ๋„ค์ด๋ฒ„ ์•„์ด๋””๋กœ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ ์ƒ์„ฑ
  • ํ† ํฐ ๊ฒ€์‚ฌ ํ›„ ๋กœ๊ทธ์ธ ๋˜์–ด์žˆ์œผ๋ฉด(ํ† ํฐ์ด ์žˆ์Œ) ๋ฐฉ ์„ ํƒ ํŽ˜์ด์ง€๋กœ ์ด๋™)

๊ฒŒ์ž„ ๋Œ€๊ธฐ์‹ค ์†Œ์ผ“ ํ†ต์‹  ๊ธฐ๋Šฅ ์—…๋ฐ์ดํŠธ

์ด์ „ ๋ฒ„์ „์—์„œ๋Š” ๊ฒŒ์ž„ ๋Œ€๊ธฐ์‹ค์ด ์–ด๋Š ๋ฐฉ์œผ๋กœ ๋“ค์–ด๊ฐ€๋“  ๋˜‘๊ฐ™์ด ๋“ค์–ด๊ฐ”์ง€๋งŒ,
์ด๋ฒˆ ๋ฒ„์ „๋Œ€์—์„œ๋Š” Host๊ฐ€ ์—ฐ ๋ฐฉ์— ๋งž๊ฒŒ ๋“ค์–ด๊ฐ€๋„๋ก ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค.

์ฒดํฌ ์‚ฌํ•ญ

  • ๊ฐ™์€ ๋ฐฉ์— ๋“ค์–ด์˜จ Player๋งŒ Host ํŽ˜์ด์ง€์— ์ถœ๋ ฅ
  • Host๊ฐ€ ๋ฐฉ์„ ์—ด์—ˆ์„ ๋•Œ ์ธ๋ฉ”๋ชจ๋ฆฌ ๋‚ด์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ฐฉ์„ ์ƒ์„ฑ, ๋ฐฉ ๋ฒˆํ˜ธ Return
  • Host๊ฐ€ ๋ฐฉ์˜ ํ€ด์ฆˆ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ํ•ด๋‹น ๋ฐฉ์˜ Player ๊ฒŒ์ž„๋งŒ ์‹œ์ž‘
  • Player๊ฐ€ ๋ฐฉ์„ ๋‚˜๊ฐ”์„ ๋•Œ player list์—์„œ ํ•ด๋‹น player ์‚ญ์ œ
  • Host๊ฐ€ ๋ฐฉ์„ ๋‚˜๊ฐ”์„ ๋•Œ ํ•ด๋‹น ๋ฐฉ์— ์—ฐ๊ฒฐ๋œ player ์—ฐ๊ฒฐ ์ข…๋ฃŒ

์ƒ์„ธ ๋ฐฉ ํŽ˜์ด์ง€ ๋ฐฑ์—”๋“œ ๊ตฌํ˜„

ver 1.1

๋‹จ์ผ ๋ฐฉ ์ƒ์„ธ ํŽ˜์ด์ง€์˜ ๋™์ž‘์— ๋”ฐ๋ฅธ ๋ฐฉ ์ •๋ณด์™€ ๊ด€๋ จ๋œ ๋ฐฑ์—”๋“œ ๋™์ž‘์„ ๊ตฌํ˜„ํ•œ๋‹ค.

์ฒดํฌ ์‚ฌํ•ญ

  • ๋ฐฉ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์š”์ฒญํ•˜๋ฉด ์š”์ฒญ์— ๋”ฐ๋ฅธ ๊ฐ’(ํ€ด์ฆˆ ๊พธ๋Ÿฌ๋ฏธ)์„ ์ „์†กํ•œ๋‹ค.
  • ๋ฐฉ ์ด๋ฆ„์„ ์ˆ˜์ •ํ•˜๋ฉด ์ˆ˜์ •์‚ฌํ•ญ์ด ๋ฐ˜์˜๋œ๋‹ค.

๋ฐฐํฌ ์„œ๋ฒ„์— ์ ‘์†์‹œ ๊ด€๋ฆฌ์ž ๋Œ€๊ธฐ์‹ค ๋ฆฌ์ŠคํŠธ์— ์œ ์ €๊ฐ€ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Œ

์ƒํ™ฉ 1

  1. PC ๋ฐฉ ๋งŒ๋“ค๊ธฐ ์‹คํ–‰
  2. ๋ชจ๋ฐ”์ผ๋กœ ๋ฒˆํ˜ธ, ๋‹‰๋„ค์ž„ ์ž…๋ ฅ ํ›„ ์ž…์žฅ

PC ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€์— ๋ชจ๋ฐ”์ผ ์œ ์ €๊ฐ€ ์ ‘์†ํ•œ ๊ฒƒ์ด ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Œ.
๊ด€๋ฆฌ์ž๊ฐ€ ๊ฒŒ์ž„ ์‹œ์ž‘์„ ๋ˆŒ๋Ÿฌ๋„ ๋ชจ๋ฐ”์ผ ํŽ˜์ด์ง€์—์„œ ๋ฐ˜์‘ ์—†์Œ

์ƒํ™ฉ 2

  1. ๋ชจ๋ฐ”์ผ ๋ฐฉ ๋งŒ๋“ค๊ธฐ ์‹คํ–‰
  2. ๊ฐ™์€ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ, ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฒˆํ˜ธ, ๋‹‰๋„ค์ž„ ์ž…๋ ฅ ํ›„ ์ž…์žฅ

๋ชจ๋ฐ”์ผ ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€์— ๋ชจ๋ฐ”์ผ ์œ ์ €๊ฐ€ ์ ‘์†ํ•œ ๊ฒƒ์ด ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Œ.
๊ด€๋ฆฌ์ž๊ฐ€ ๊ฒŒ์ž„ ์‹œ์ž‘์„ ๋ˆŒ๋Ÿฌ๋„ ๋ชจ๋ฐ”์ผ ํŽ˜์ด์ง€์—์„œ ๋ฐ˜์‘ ์—†์Œ

์ด์œ  ๋ถ„์„

์†Œ์ผ“์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์„ localhost๋กœ ๋ณด๋‚ด์„œ ๋ฌธ์ œ ๋ฐœ์ƒ

Player ํ€ด์ฆˆ์ง„ํ–‰/๋ฌธ์ œ ์„ ํƒ๊ธฐ๋Šฅ ์ถ”๊ฐ€

player๊ฐ€ ์„ ํƒํ•œ ํ•ญ๋ชฉ์„ ์„œ๋ฒ„๋กœ ์ „์†กํ•˜๊ณ  ์ด ์Šค์ฝ”์–ด์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ›๋Š” post ๋ฐฉ์‹ API

์ค‘๊ฐ„ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€

  1. ํ•˜๋‹จ์— ์ง€๊ธˆ๊นŒ์ง€ ์ ์ˆ˜์˜ ํ•ฉ๊ณ„ ํ‘œ์‹œ
  2. ์ง์ „ ๊ฒฐ๊ณผ๋ฅผ ์ ์šฉํ•ด ์ •๋‹ต, ์˜ค๋‹ต์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํŽ˜์ด์ง€ ์ถœ๋ ฅ.
  3. ์ •๋‹ต์ธ ๊ฒฝ์šฐ ์ถ”๊ฐ€๋˜๋Š” ์ ์ˆ˜ ๋ณด์ž„
  • API ๊ตฌํ˜„.
  • ๊ฒฐ๊ณผ ๊ฐ’์— ๋”ฐ๋ผ ํƒ€์ด๋จธ ์ข…๋ฃŒ ํ›„ ์ค‘๊ฐ„ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€ ์ถœ๋ ฅ.

Related : #74 #75

์‹ค์‹œ๊ฐ„ ํ€ด์ฆˆ ์ง„ํ–‰ SPA๋กœ ๊ตฌํ˜„

๊ธฐ์กด์— ๋Œ€๊ธฐ์‹ค, ๋กœ๋”ฉ์ค‘, ๊ฒŒ์ž„ ์ง„ํ–‰์œผ๋กœ ๋‚˜๋‰œ ํŽ˜์ด์ง€ ๋ฅผ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉ.
ํ†ตํ•ฉ ํ›„ ๊ฐ๊ฐ ์ปดํฌ๋„ŒํŠธ๋ฅผ render ํ•˜๋Š” ๊ตฌ์กฐ๋กœ ๋ณ€๊ฒฝ

  • ์ง„ํ–‰ ๋Œ€๊ธฐ ํŽ˜์ด์ง€
  • ๋กœ๋”ฉ์ค‘ ํŽ˜์ด์ง€
  • ํ€ด์ฆˆ ํŽ˜์ด์ง€
  • ํ€ด์ฆˆ ํ›„ ์ค‘๊ฐ„๊ฒฐ๊ณผ ํŽ˜์ด์ง€

ํ€ด์ฆˆ์ง„ํ–‰/ํ€ด์ฆˆ ์‹œ์ž‘์‹œ DB์—์„œ quizset ๋ฐ›์•„์˜ค๊ธฐ

socket.js์˜ handleOpenRoom์—์„œ inMemory์˜ getQuizset ๊ด€๋ จ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ

inMemory์˜ getQuizset ๋ฉ”์†Œ๋“œ์—์„œ dbManager์—์„œ ๊ฐ€์ ธ์˜จ raw ์ฟผ๋ฆฌ๋ฅผ ๊ฐ€๊ณตํ•ด JSON์œผ๋กœ ๋„˜๊ฒจ์คŒ
(ํ˜•ํƒœ๋Š” ๊ธฐ์กด roomTemplate์— ์žˆ๋˜ ๋ชจ์–‘๊ณผ ๋™์ผํ•˜๊ฒŒ ๊ฐ€๊ณต)

async await์— ์ฃผ์˜.

  • rooms.getQuizset ๋ฉ”์†Œ๋“œ ๊ตฌ์กฐ ๋งŒ๋“ค๊ธฐ
  • ๋”๋ฏธ ๋ฐ์ดํ„ฐ db์— ์ถ”๊ฐ€ํ•˜๊ธฐ.
  • dbManager.quizset์˜ getQuizset ๋ฉ”์†Œ๋“œ ๋งŒ๋“ค๊ธฐ.
  • dbManager์˜ ๋ฉ”์†Œ๋“œ๋ฅผ rooms์˜ ๋ฉ”์†Œ๋“œ์—์„œ ํ˜ธ์ถœ
  • ๋ฐฉ ๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€์™€ ์—ฐ๋™ํ•ด์„œ quizset์„ ๊ฐ€์ ธ์˜ด

๊ฒŒ์ž„ ๋Œ€๊ธฐ์‹ค Host ํŽ˜์ด์ง€ ๊ตฌํ˜„

ver 1.1

  • ํŽ˜์ด์ง€ ์ถœ๋ ฅ
    • ์ƒ๋‹จ ์ค‘์•™ ๊ฒŒ์ž„ ๋กœ๊ณ , ์ƒ๋‹จ ์ขŒ์ธก ๋ฐฉ๋ฒˆํ˜ธ ์ถœ๋ ฅ
    • ์ƒ๋‹จ ์šฐ์ธก ๊ฒŒ์ž„ ์‹œ์ž‘ ๋ฒ„ํŠผ ์ถœ๋ ฅ
    • ํ•˜๋‹จ ๋ฐฉ๋ฒˆํ˜ธ ๋ฐ ํŽ˜์ด์ง€ ์ฃผ์†Œ ์ถœ๋ ฅ
  • ์†Œ์ผ“ ํ†ต์‹ 
    • ์ƒ๋‹จ ๊ฒŒ์ž„ ์‹œ์ž‘ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ Player ๋Œ€๊ธฐ์‹ค์˜ ํ™”๋ฉด์—์„œ ๊ฒŒ์ž„ ์นด์šดํŠธ๋‹ค์šด ํ”„๋กœ๊ทธ๋ž˜์Šค๋ฐ”๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.
    • Player๊ฐ€ ์ ‘์†ํ•˜๋ฉด ์œ ์ €์˜ ๋‹‰๋„ค์ž„์ด ์ถ”๊ฐ€๋œ๋‹ค.
    • Player์˜ ์ „์ฒด ์ ‘์† ์ธ์›์ด ์ถœ๋ ฅ๋œ๋‹ค.

๋ฉ”์ธํŽ˜์ด์ง€ ๋ฐฉ ๋ฒˆํ˜ธ ์ž…๋ ฅํŽ˜์ด์ง€ ๊ตฌ์„ฑ

front

  • ํŽ˜์ด์ง€ ๊ตฌ์„ฑ

    • ๋ฐฉ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋Š” input tag
    • ์ž…์žฅ button
    • copyright footer
  • ์ž…์žฅํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ (์˜ค๋ฅ˜) ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ

    • snack bar๋กœ ๊ตฌํ˜„

back

  • ๋ฐฉ ๋ฒˆํ˜ธ ๊ฒ€์‚ฌ API

    • ๋ฐฉ ๋ฒˆํ˜ธ input Validation์„ ์‹คํ–‰ํ•œ๋‹ค.
    • ๋ฒˆํ˜ธ์˜ ๋ฐฉ์ด ์—ด๋ ค์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ boolean ํ˜•ํƒœ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.
    • ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ•˜๋ฉด ๋‹‰๋„ค์ž„ ์„ค์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค.
    • ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•˜๋ฉด front์— ์—๋Ÿฌ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • ๋ฐฉ ๋ฒˆํ˜ธ ๊ฒ€์‚ฌ

    • 6์ž๋ฆฌ, ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ
  • ํŠน์ • ๋ฒˆํ˜ธ์˜ ๋ฐฉ์˜ ์—ด๋ ค์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ

์ƒ์„ธ ๋ฐฉ ํŽ˜์ด์ง€ ํ€ด์ฆˆ ํƒญ ํ”„๋ก ํŠธ์—”๋“œ ๊ตฌํ˜„

์ƒ์„ธ ๋ฐฉ ํŽ˜์ด์ง€ ๋‚ด ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ” ์ค‘ ํ€ด์ฆˆ ํƒญ ๋ฉ”๋‰ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

  • ๋ฐฉ์— ์†Œ์†๋œ ์ „์ฒด ํ€ด์ฆˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.
  • ์šฐ์ธก ์ƒ๋‹จ์—๋Š” ํ€ด์ฆˆ ํŽธ์ง‘ ๋ฒ„ํŠผ์ด ์žˆ์œผ๋ฉฐ, ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ํ€ด์ฆˆ ํŽธ์ง‘ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค.
  • ํ€ด์ฆˆ๋Š” ์ €์žฅ๋œ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅ๋œ๋‹ค.
    • ํ€ด์ฆˆ list ์ถœ๋ ฅ ๊ฐ’
      • ๊ฐ ํ€ด์ฆˆ์˜ title
      • ๊ฐ ํ€ด์ฆˆ์˜ ํ•ญ๋ชฉ ์ˆ˜
      • ๊ฐ ํ€ด์ฆˆ์˜ ์ œํ•œ ์‹œ๊ฐ„
      • ๊ฐ ํ€ด์ฆˆ์˜ ์ ์ˆ˜

์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ: #35

๋‹‰๋„ค์ž„ ์ž…๋ ฅ ํŽ˜์ด์ง€ ๊ตฌ์„ฑ

front

  • ํŽ˜์ด์ง€ ๊ตฌ์„ฑ

    • ๋‹‰๋„ค์ž„์„ ์ž…๋ ฅํ•˜๋Š” input tag
    • ์ž…์žฅ button
    • copyright footer
  • ๋‹‰๋„ค์ž„ validation ์‹คํŒจ์‹œ (์˜ค๋ฅ˜) ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ

    • snack bar๋กœ ๊ตฌํ˜„

back

  • ๋ฐฉ ์ž…์žฅ API

    • ๋‹‰๋„ค์ž„ input Validation์š”์ฒญ์„ ์‹คํ–‰ํ•œ๋‹ค.
    • ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•˜๋ฉด front์— ์—๋Ÿฌ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
    • ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ๊ฒฝ์šฐ ๊ฒŒ์ž„ ๋Œ€๊ธฐ์‹ค ํŽ˜์ด์ง€๋กœ ์ด๋™
  • ๋‹‰๋„ค์ž„ ๊ฒ€์‚ฌ

    • 20byte ๋กœ ์ด๋ฃจ์–ด์ ธ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ (ํ•œ๊ธ€ 10์ž, ์˜์–ด 20์ž)
    • ์ž…์žฅํ•˜๋ ค๊ณ  ํ•˜๋Š” ๋ฐฉ์— ๊ทธ ๋‹‰๋„ค์ž„์ด ์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์ธ์ง€ ๊ฒ€์‚ฌ

์œ ์ €์—๊ฒŒ ๋„์›Œ์ค„ Modal ์ฐฝ ์ปดํฌ๋„ŒํŠธํ™”

์œ ์ €์—๊ฒŒ ๊ฒฝ๊ณ  ๋ฐ ์•ˆ๋‚ด ์‹œ ์ถœ๋ ฅํ•  Modal์ฐฝ์˜ ์ปดํฌ๋„ŒํŠธํ™”๋ฅผ ์ง„ํ–‰ํ•ด ๋ชจ๋“  Modal ์ฐฝ์ด ๋™์ผํ•œ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ จ ์ด์Šˆ

์•„๋ž˜ ์ด์Šˆ๋“ค์€ Modal ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์ถ”๊ฐ€๋˜์–ด์•ผํ•˜๋Š” ์ด์Šˆ์ž…๋‹ˆ๋‹ค.

#35 #33 #38

๋ฒ„๊ทธ/ํŽ˜์ด์ง€ ์ด๋™์‹œ 404ํŽ˜์ด์ง€๊ฐ€ ์ž ๊น ๋‚˜ํƒ€๋‚ฌ๋‹ค๊ฐ€ ์ด๋™๋˜๋Š” ์˜ค๋ฅ˜

์ƒํ™ฉ

๋„ค์ด๋ฒ„ ์•„์ด๋””๋กœ ๋กœ๊ทธ์ธ ํ›„, ๋ฐฉ ๋ฆฌ์ŠคํŠธ ํŽ˜์ด์ง€๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ธฐ ์ „ 404ํŽ˜์ด์ง€๊ฐ€ ์ž ๊น ๋‚˜ํƒ€๋‚จ.

ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

  1. 404 ํŽ˜์ด์ง€์—์„œ ๋ฉ”์‹œ์ง€๊ฐ€ ์ž ์‹œ ๋Šฆ๊ฒŒ ๋‚˜ํƒ€๋‚˜๋„๋ก ๋ณ€๊ฒฝ

์ƒ์„ธ ๋ฐฉ ํŽ˜์ด์ง€ ํ”„๋ก ํŠธ ๊ตฌํ˜„

ver 1.1

๋ฐฉ ์„ ํƒ ํŽ˜์ด์ง€์—์„œ ๋ฐฉ์„ ๋ˆ„๋ฅด๋ฉด ๋‚˜ํƒ€๋‚˜๋Š” ๋ฐฉ ์ƒ์„ธ ํŽ˜์ด์ง€์˜ ํ”„๋ก ํŠธ์—”๋“œ ๋™์ž‘์„ ๊ตฌํ˜„ํ•œ๋‹ค.

์ฒดํฌ ์‚ฌํ•ญ

  • ์‹œ์ž‘ํ•˜๊ธฐ ๋ฒ„ํŠผ ํด๋ฆญ
    • ํ€ด์ฆˆ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๋„๋ก ํ•œ๋‹ค.
    • [ ] ์‹œ์ž‘ํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ํ€ด์ฆˆ๋ฅผ ์‹œ์ž‘ํ•  ๊ฒƒ์ธ์ง€ ํ™•์ธํ•˜๋Š” Modal ์ฐฝ์ด ์ถœ๋ ฅ๋œ๋‹ค.

      ํ˜„์žฌ ๊ตฌํ˜„๋œ Modal ์ปดํฌ๋„ŒํŠธ๊ฐ€ ํ•œ ํŽ˜์ด์ง€์— ๋ชจ๋‹ฌ์ด ์—ฌ๋Ÿฌ ๊ฐœ ์ผ ๋•Œ ๋™์‹œ์— ์ถœ๋ ฅ๋˜๋Š” ์ด์Šˆ๊ฐ€ ์žˆ์–ด ํ•ด๋‹น Modal ๊ธฐ๋Šฅ์€ ํ•„์ˆ˜์ ์ธ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๊ณ  ํŒ๋‹จํ•ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    • ์œ ์ €๊ฐ€ ์‹œ์ž‘ํ•˜๊ธฐ๋ฅผ ์„ ํƒํ•˜๋ฉด Host์˜ ํ€ด์ฆˆ ๋Œ€๊ธฐ์‹ค์„ ๋„์šด๋‹ค.
  • ์ƒ๋‹จ Navigation bar ํด๋ฆญ
    • ํ€ด์ฆˆ ํƒญ์„ ํด๋ฆญํ•˜๋ฉด ํ€ด์ฆˆ ๊พธ๋Ÿฌ๋ฏธ ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋œ๋‹ค.
    • ๋ถ„์„ ํƒญ์„ ํด๋ฆญํ•˜๋ฉด ํ€ด์ฆˆ ๊พธ๋Ÿฌ๋ฏธ์˜ ๋ถ„์„ ๋‚ด์šฉ์ด ๋ Œ๋”๋ง ๋œ๋‹ค.
  • ์ƒ๋‹จ ํ—ค๋” ์ถœ๋ ฅ
    • ์ƒ๋‹จ ์ขŒ์ธก์—๋Š” ๋ฐฉ ์ด๋ฆ„์ด ์ถœ๋ ฅ๋œ๋‹ค.
    • ์ƒ๋‹จ ์ขŒ์ธก์˜ ๋ฐฉ ์ด๋ฆ„์€ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.
      • ์šฐ์ธก์— ํŽธ์ง‘์ด ๊ฐ€๋Šฅํ•œ ๋ฒ„ํŠผ ์ถ”๊ฐ€
      • ํด๋ฆญํ•˜๋ฉด ํŽธ์ง‘ Modal ์ถœ๋ ฅ

ํ€ด์ฆˆ ํŽธ์ง‘ ํŽ˜์ด์ง€ ํ”„๋ก ํŠธ์—”๋“œ ๊ตฌํ˜„

  • ํ—ค๋”
    • ์ทจ์†Œ ๋ฒ„ํŠผ ํด๋ฆญ
    • ์ €์žฅ ๋ฒ„ํŠผ ํด๋ฆญ
      • ๋ฏธ์™„์„ฑ๋œ ํ…œํ”Œ๋ฆฟ์ด ์žˆ๋‹ค๋ฉด "๋ฏธ์™„์„ฑ๋œ ํ€ด์ฆˆ๊ฐ€ ์žˆ์œผ๋ฉด ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Œ€๋กœ ์ €์žฅํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?" ๋ชจ๋‹ฌ -> ์ทจ์†Œ/์ €์žฅ
      • ์ „์ฒด ํ€ด์ฆˆ ๋“ฑ๋ก(์„œ๋ฒ„๋กœ ์ „์†ก)
  • ๋„ค๋น„๊ฒŒ์ด์…˜(์ž‘์—… ๋ชฉ๋ก)
    • ๋“ฑ๋ก๋œ ํ€ด์ฆˆ ๋Œ€ํ‘œ ์ด๋ฏธ์ง€ ์ถœ๋ ฅ
    • ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋ž์œผ๋กœ ์ˆœ์„œ ๋ณ€๊ฒฝ
    • ์ด๋ฏธ์ง€ ํด๋ฆญ ์‹œ ํ•ด๋‹น ํ€ด์ฆˆ ์ƒ์„ธ ํŽธ์ง‘ ํ™”๋ฉด ์˜ค๋ฅธ์ชฝ ์„น์…˜์— ์ถœ๋ ฅ
    • ์ด๋ฏธ์ง€ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ ์ทจ์†Œ ๋ฒ„ํŠผ ํด๋ฆญํ•˜์—ฌ ๋“ฑ๋ก๋œ ํ€ด์ฆˆ ์‚ญ์ œ
    • ํ…œํ”Œ๋ฆฟ ์ถ”๊ฐ€ ๋ฒ„ํŠผ ํด๋ฆญ
      • ํด๋ฆญ ์‹œ ํ…œํ”Œ๋ฆฟ ์„ ํƒ ๋ชจ๋‹ฌ
      • ์ทจ์†Œ/์ €์žฅ ๋ฒ„ํŠผ ํด๋ฆญ
  • ์„น์…˜
    • N์ง€ ์„ ๋‹ค ํ•ญ๋ชฉ ์„ค์ •
      • ์ฑ„์›Œ์ง€์ง€ ์•Š์€ ํ•ญ๋ชฉ์€ ๋‹ค๋ฅด๊ฒŒ ํ‘œํ˜„(์ƒ‰x, ์ฒดํฌ๋ฐ•์Šคx)
      • ๊ฐ ํ•ญ๋ชฉ์˜ ์˜ค๋ฅธ์ชฝ์— ์ฒดํฌ ๋ฐ•์Šค(์ •๋‹ต ์ฒดํฌ - ๋‹ค์ค‘ ์ฒดํฌ ๊ฐ€๋Šฅ)
    • ๋ฌธ์ œ ์„ค๋ช…, ๋‚ด์šฉ ์ถ”๊ฐ€
      • ํƒ€์ดํ‹€ ์ž…๋ ฅ
      • ์ œํ•œ ์‹œ๊ฐ„ ์ž…๋ ฅ
      • ์ด๋ฏธ์ง€ ๋“ฑ๋ก
      • ์ ์ˆ˜ ์ž…๋ ฅ

๋ฐฉ list ํŽ˜์ด์ง€ ์ œ์ž‘

  • ํŽ˜์ด์ง€ ๊ตฌ์„ฑ

    • ๋ฐฉ ๋งŒ๋“ค๊ธฐ ๋ฒ„ํŠผ
    • ๋ฐฉ ๋ฆฌ์ŠคํŠธ
    • ๋ฐฉ ๋งŒ๋“ค๊ธฐ ๋ชจ๋‹ฌ
  • ๋ฐฉ ๋งŒ๋“ค๊ธฐ ๋กœ์ง

    • ๋ฐฉ ๋งŒ๋“ค๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋ฐฉ ๋งŒ๋“ค๊ธฐ ๋ชจ๋‹ฌ ๋“ฑ์žฅ
    • ๋ฐฉ ๋งŒ๋“ค๊ธฐ ๋ชจ๋‹ฌ์—์„œ ๋ฐฉ ์ด๋ฆ„ ์ž…๋ ฅ
    • ๋ฐฉ ์ด๋ฆ„ ์ž…๋ ฅ ํ›„ ํ™•์ธ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ๋ฐฉ ์ƒ์„ฑ
    • ์ƒ์„ฑ๋œ ๋ฐฉ์ด ๋ฐฉ ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€

6์ฃผ์ฐจ ์Šคํ”„๋ฆฐํŠธ ๊ธฐ๋Šฅ ์ถ”๊ฐ€

  • ๋ฐฉ ์ด๋ฆ„์— ๊ณต๋ฐฑ์„ ์ž…๋ ฅํ–ˆ์„ ๋•Œ, ์ถ”๊ฐ€๋˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.
  • ๋ฐฉ ์‚ญ์ œ ๋ฒ„ํŠผ์„ ๋งŒ๋“ค๊ณ , ํ•ด๋‹น ๋ฐฉ์„ ์‚ญ์ œํ–ˆ์„ ๋•Œ ์‚ญ์ œ๋˜๋„๋ก ํ•œ๋‹ค.

๊ด€๋ จ ์ด์Šˆ: #162

Toast Message(PopUp) ๊ตฌํ˜„

  • ๋ฉ”์ธํŽ˜์ด์ง€ ํ•˜๋‹จ์—์„œ ์• ๋‹ˆ๋ฉ”์ด์…˜์œผ๋กœ ๋“ฑ์žฅ
    • 3์ดˆ ๋™์•ˆ ๋“ฑ์žฅํ•˜์˜€๋‹ค๊ฐ€ ์‚ฌ๋ผ์ง
  • onToast ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์žฌ์‹œ์ž‘.

์ ์ˆ˜ ์ถœ๋ ฅ ํ™”๋ฉด API

  • ์ ์ˆ˜์— ๋”ฐ๋ฅธ ์ˆœ์œ„ ์ •๋ ฌ

    • ์ ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
    • ๋™์ ์ž๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๊ธ€์ž๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
    • ๋™์ ์ž๋Š” ๊ณต๋™ ์ˆœ์œ„ ์ ์šฉ
  • ํ”Œ๋ ˆ์ด์–ด ๊ฐœ์ธ ์ ์ˆ˜, ์ˆœ์œ„ ์ „์†ก

    • ํ”Œ๋ ˆ์ด์–ด์—๊ฒ ๊ฐœ์ธ ์ ์ˆ˜ ์ˆœ์œ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•œ๋‹ค.

Player๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจ, ๋‚˜๊ฐ€๊ธฐ๋ฅผ ํ–ˆ์„ ๋•Œ Host์— ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š” ํ˜„์ƒ

  • Player๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจ ํ–ˆ์„ ๋•Œ ์—ฐ๊ฒฐ์€ ๋Š๊ธฐ์ง€๋งŒ inMemory ๋‚ด์—์„œ ๊ทธ๋Œ€๋กœ ์ €์žฅ๋˜์–ด์žˆ์Œ
  • Player๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋‚˜๊ฐ”์„ ๋•Œ ์—ฐ๊ฒฐ์€ ๋Š๊ธฐ์ง€๋งŒ unmount ์ด๋ฒคํŠธ๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— inMemory์— ๊ทธ๋Œ€๋กœ ์ €์žฅ๋˜์–ด ์žˆ์Œ.

์˜ˆ์ƒ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

  • ์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจ ๋˜๋Š” ๋‚˜๊ฐ€๊ธฐ๋ฅผ ํ•˜๋Š” ๊ฒฝ์šฐ, ์•ˆ๋‚ด ํ›„ ์†Œ์ผ“ ํ†ต์‹ ์„ ๋Š๊ณ  /(๋ฉ”์ธํŽ˜์ด์ง€)๋กœ ๋„˜์–ด๊ฐ€์•ผํ•จ (beforeunload ์ด๋ฒคํŠธ ํ™œ์šฉ)
  • ์†Œ์ผ“์—์„œ๋Š” ์—ฐ๊ฒฐ์ด ๋Š๊ธฐ๋Š” ์œ ์ €์— ๋Œ€ํ•œ ๊ฒ€์‚ฌ๊ฐ€ ์ด๋ค„์ ธ์•ผ ํ•จ.
//์—ฐ๊ฒฐ์‹œ 
this.roomNumber = ?
this.nickname = ?

//์—ฐ๊ฒฐ ํ•ด์ œ์‹œ
removePlayer(this.roomNumber, this.nickname)

๋‹‰๋„ค์ž„ ์ž…๋ ฅ ํŽ˜์ด์ง€ url ํ†ตํ•ด ๋“ค์–ด๊ฐ”์„ ๋•Œ ์ƒ๊ธฐ๋Š” error ์ฒ˜๋ฆฌ ํ•„์š”

Issue

  • ์ •์ƒ์ ์ธ ๋กœ์ง์œผ๋กœ๋Š” ๋ฐฉ ๋ฒˆํ˜ธ ์ž…๋ ฅ -> ๋‹‰๋„ค์ž„ ์ž…๋ ฅ ์ˆœ์„œ๋กœ ์ž…์žฅํ•ด์•ผ ํ•˜์ง€๋งŒ url์„ ํ†ตํ•ด ์‹œ๋„ํ•  ์ˆ˜ ์žˆ๋‹ค.

To do

  • ๋‹‰๋„ค์ž„ ํŽ˜์ด์ง€ url์„ ํ†ตํ•ด ๋“ค์–ด๊ฐ€๋ฉด ์ฒซ ํŽ˜์ด์ง€๋กœ redirect

ํ€ด์ฆˆ์ง„ํ–‰/์ตœ์ข… ๊ฒฐ๊ณผ ํ™•์ธ

์ž์‹ ์˜ ๋“ฑ์ˆ˜์™€ ์ตœ์ข… ์ ์ˆ˜๋ฅผ ๋ฐ›์•„์˜ค๋Š” get๋ฐฉ์‹์˜ API

Top 10์— ๋Œ€ํ•œ ์ •๋ณด๋Š” ์†Œ์ผ“์—์„œ ์ „์†กํ•จ. (end์‹ ํ˜ธ)

  • get๋ฐฉ์‹ API ์ œ์ž‘
  • ์ž์‹ ์˜ ๋“ฑ์ˆ˜, ์ ์ˆ˜๋ฅผ ํ‘œ์‹œํ•˜๊ณ  1~3๋“ฑ์˜ ๊ฒฝ์šฐ ๋ฉ”๋‹ฌ์„ ํ‘œ์‹œํ•จ
  • ์†Œ์ผ“์œผ๋กœ ๋ฐ›์•„์˜จ top 10์˜ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•จ

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.