2021-02-02(Tue)

ํ•ญ๋ชฉ

๋‚ด์šฉ

ํ•™์Šต ๋‚ ์งœ

2021-02-02(ํ™”)

ํ•™์Šต ์‹œ๊ฐ„

11:00~24:00

ํ•™์Šต ๋ฒ”์œ„ ๋ฐ ์ฃผ์ œ

project ๋ฏธํŒ…, backbone, ActionCable

ํ•™์Šต ๋ชฉํ‘œ

appearance ์œ ์ € ์ƒํƒœ๋ฐ”๋ฅผ ๋งŒ๋“ ๋‹ค.

๋™๋ฃŒ ํ•™์Šต ๋ฐฉ๋ฒ•

eunhkim, sanam, jujeong, yohlee๋‹˜๊ณผ ๋ฏธํŒ…์„ ์ง„ํ–‰ํ•˜์˜€๋‹ค. sanam, jujeong๋‹˜๊ณผ appearance_view๋ฅผ liveshare๋กœ ํ•จ๊ป˜ ๊ตฌํ˜„ํ•จ.

์ƒ์„ธ ํ•™์Šต ๋‚ด์šฉ

ํŒ€์›๋“ค๊ณผ ๋ฏธํŒ…์„ ์ง„ํ–‰ํ–ˆ๋‹ค. ์•„๋ž˜ ๋‚ด์šฉ์€ ๋ฏธํŒ…ํ•˜๋ฉฐ ๋…ธ์…˜์— ์ •๋ฆฌํ•œ ๊ฒƒ๋“ค[ํŠธ๋ Œ์  ๋˜์Šค] ๋ณธ ํ”„๋กœ์ ํŠธ ํ‚ฅ์˜คํ”„ 2์ฐจ ๋ฏธํŒ…

1. ๋ทฐ์— ๋Œ€ํ•œ ์ฃผ์š” ์šฉ์–ด ์ •๋ฆฌ

  • ์ปจํ…Œ์ด๋„ˆ๋ทฐ

    • ๊ธฐ์กด์˜ ๋ฉ”์ธ๋ทฐ(MainView) ๊ฐ์ฒด๊ฐ€ ์ปจํ…Œ์ด๋„ˆ๋ทฐ๋กœ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค.

    • ์ปจํ…Œ์ด๋„ˆ๋ทฐ(#container-view) ์•ˆ์—์„œ ๊ต์ฒด๋˜๋Š” ๋ทฐ๋“ค์„ ๋ฉ”์ธ ๋ทฐ๋ผ๊ณ  ๋ช…๋ช…ํ•œ๋‹ค.

    • ์ปจํ…Œ์ด๋„ˆ ๋ทฐ์—

      ์ปจํ…Œ์ด๋„ˆ ๋ทฐ๋Š” ๋ฉ”์ธ ๋ทฐ๋“ค์„ ๊ด€๋ฆฌํ•˜๋Š” ์˜์—ญ ๋ทฐ์ด๋‹ค. el์„ #container-view๋กœ ๊ฐ€์ง€๊ณ , ๋ฉ”์ธ ๋ทฐ๋“ค์„ ๋ Œ๋”๋ง์‹œ์ผœ์„œ ์ž์‹ ์˜ ์˜์—ญ ์•ˆ์— ํฌํ•จ์‹œํ‚จ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋ทฐ๊ฐ€ ์ปค๋ ŒํŠธ ๋ทฐ๊ฐ€ ๊ธธ๋“œ๋ทฐ์ธ ์ƒํƒœ์—์„œ NavView์˜ ํ† ๋„ˆ๋จผํŠธ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ปจํ…Œ์ด๋„ˆ๋ทฐ์˜ ์ปค๋ ŒํŠธ ๋ทฐ๊ฐ€ ํ† ๋„ˆ๋จผํŠธ ๋ทฐ ์ธ์Šคํ„ด์Šค๋กœ ๋Œ€์ฒด๋œ๋‹ค.

  • ๋ทฐ ์—˜๋ฆฌ๋จผํŠธ์™€ ๋ทฐ ๊ฐ์ฒด

    • new View๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฒƒ์€ ๋ทฐ ๊ฐ์ฒด์ด๋‹ค. ๋ทฐ ๊ฐ์ฒด๊ฐ€ ๋ Œ๋”๋งํ•˜๋Š” ์š”์†Œ๋Š” ๋ทฐ ์—˜๋ฆฌ๋จผํŠธ์ด๋‹ค. ๋ทฐ ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ DOM์— ์ถ”๊ฐ€๋˜๋ฉด DOM ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ๋œ๋‹ค.

  • ์˜๊ตฌ๋ทฐ

    • ์˜๊ตฌ๋ทฐ๋Š” ์œˆ๋„์šฐ ์ƒ์—์„œ ํ•œ๋ฒˆ ๋กœ๋”ฉ๋œ ํ›„ ์œˆ๋„์šฐ๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์‚ฌ๋ผ์ง€์ง€ ์•Š๋Š” ๋ทฐ ๊ฐ์ฒด๋ฅผ ์ผ์ปซ๋Š” ๋‚ด๋ถ€์†Œํ†ต์šฉ ์šฉ์–ด๋‹ค.

    • ์˜๊ตฌ๋ทฐ๋Š” AppView์˜ ๋ณ€์ˆ˜๋กœ ๊ด€๋ฆฌ๋œ๋‹ค.

    • ์˜๊ตฌ๋ทฐ์— ์†ํ•˜๋Š” ๊ฒƒ์€ ํ•˜๋‹จ ์™€์ด์–ดํ”„๋ ˆ์ž„ ์ขŒ์ธก์ƒ๋‹จ์— ๋…ธ๋ž€์ƒ‰ ํƒœ๊ทธ๊ฐ€ ๋ถ™์–ด์žˆ๋Š” ๋ทฐ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋ Œ๋”๋งํ•˜๋Š” ๋ทฐ ๊ฐ์ฒด์ด๋‹ค.

    • ์˜๊ตฌ๋ทฐ๋Š” ์ •์  el์„ ๊ฐ€์ง„๋‹ค. (์˜๊ตฌ๋ทฐ์˜ el์š”์†Œ๋Š” ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•ด์„œ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ธฐ์กด ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.)

    • default๋กœ hide๋˜์–ด ์žˆ๋‹ค๊ฐ€ ํ•„์š”ํ•œ ์ˆœ๊ฐ„์— render๋œ๋‹ค.

  • ๋ทฐ๊ฐ€ ์ •์ /๋™์  el์„ ๊ฐ€์ง„๋‹ค.

    • ๋ทฐ๊ฐ€ ์ •์  el์„ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ๋Š” ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ์ƒˆ๋กœ ์ƒ์„ฑํ•ด์„œ el๋กœ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ธฐ์กด์— ์ด๋ฏธ ์ƒ์„ฑ๋˜์–ด์žˆ๋Š” ์—˜๋ฆฌ๋จผํŠธ๋ฅผ el๋กœ ์ฐธ์กฐํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

    • ๋ทฐ๊ฐ€ ๋™์  el์„ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ๋Š” el์š”์†Œ ์—†์ด ์ƒˆ๋กœ์šด ์—˜๋ฆฌ๋จผํŠธ๋กœ ์ƒ์„ฑ๋˜์–ด์„œ DOM์— ์‚ฝ์ž…๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

  • ์‚ฌ์ด๋“œ๋ฐ” / ์ฑ—๋ฃธ์‚ฌ์ด๋“œ๋ฐ”

    • ์‚ฌ์ด๋“œ๋ฐ”๋Š” ๋ฌผ๋ฆฌ๋ช…์ด ์•„๋‹ˆ๋ผ ๋…ผ๋ฆฌ๋ช…์ด๋‹ค. AppearanceView์™€ MainButtonsView๊ฐ€ ๋ Œ๋”๋ง๋˜๋Š” ์˜์—ญ์„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ๋ณ€์ˆ˜๋ช…์œผ๋กœ ์“ฐ์ด์ง€๋Š” ์•Š๋Š”๋‹ค.

    • ์ฑ—๋ฃธ์˜ ์ขŒ์ธก์— ๋ Œ๋”๋ง๋˜๋Š” ์œ ์‚ฌ ์‚ฌ์ด๋“œ๋ฐ”๋Š” ์ฑ—๋ฃธ ์‚ฌ์ด๋“œ๋ฐ”๋กœ ๋ถ€๋ฅธ๋‹ค.

  • ์–ดํ”ผ์–ด๋Ÿฐ์Šค ๋ทฐ

    • ์–ดํ”ผ์–ด๋Ÿฐ์Šค ๋ทฐ๋Š” ์œ ์ €์˜ ๋ชฉ๋ก๊ณผ ์ ‘์† ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ํด๋ฆญ์‹œ ์œ ์ €์— ๋Œ€ํ•œ ๋ฉ”๋‰ด๋ฅผ ๋ Œ๋”๋งํ•œ๋‹ค.

  • ์‹ฑ๊ธ€๋ทฐ / ๋ฉ€ํ‹ฐ๋ทฐ

    • ๋ทฐ ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๋ทฐ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์„ ๋•Œ ์‹ฑ๊ธ€ ๋ทฐ๋ผ๊ณ  ํ•œ๋‹ค. ๋ฐ˜๋Œ€๋กœ ํ•˜๋‚˜์˜ ๋ทฐ ๊ฐ์ฒด๊ฐ€ ์—ฌ๋Ÿฌ ๋ทฐ ๊ฐ์ฒด๋ฅผ ํ•จ๊ป˜ ๋ Œ๋”๋งํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋ฉ€ํ‹ฐ๋ทฐ๋ผ๊ณ  ๋ช…๋ช…ํ•œ๋‹ค.

    • ex) SignInView = ์‹ฑ๊ธ€๋ฉ”์ธ๋ทฐ, DirectChatView = ๋ฉ€ํ‹ฐ์˜๊ตฌ๋ทฐ

  • ๋ฃจํŠธ ๋ทฐ์™€ ์ฐจ์ผ๋“œ ๋ทฐ

    • ๋ฉ”์ธ ๋ทฐ๋Š” ๋ฃจํŠธ ๋ทฐ์™€ ์ฐจ์ผ๋“œ ๋ทฐ๋กœ ๊ตฌ๋ถ„๋œ๋‹ค. ๋ฃจํŠธ ๋ทฐ๋ž€ ๋ฉ”์ธ ๋ทฐ๊ฐ€ ์ž๊ธฐ ์ž์‹ ์„ ๊ฐ€๋ฆฌํ‚ค๊ณ , ์ฐจ์ผ๋“œ ๋ทฐ๋Š” ๋ณ€์ˆ˜๋กœ์„œ ๋ฉ”์ธ ๋ทฐ์— ์†ํ•˜๋Š” ๋ทฐ๋“ค์„ ์˜๋ฏธํ•œ๋‹ค.

  • ์ข…์† ๋ทฐ์™€ ์‰์–ด ๋ทฐ

    ์ข…์†๋ทฐ๋Š” ํŠน์ • ๋ฉ”์ธ ๋ทฐ์—๋งŒ ์†ํ•˜๋Š” ์ฐจ์ผ๋“œ๋ทฐ์ด๊ณ , ์‰์–ด๋ทฐ๋Š” ์—ฌ๋Ÿฌ ๋ฉ”์ธ ๋ทฐ์—์„œ ์“ฐ์ด๋Š” ์ฐจ์ผ๋“œ๋ทฐ์ด๋‹ค.

  • ํ”„๋ก ํŠธ ๋ชจ๋ธ๊ณผ ๋ฐฑ ๋ชจ๋ธ

    • ๋ชจ๋ธ์ด๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ๋ฐฑ๋ณธ๊ณผ ๋ ˆ์ผ์ฆˆ์—์„œ ํ˜ผ์šฉ๋˜๋ฏ€๋กœ ํ˜ผ๋ž€์„ ๋ง‰๊ธฐ์œ„ํ•ด ์šฉ์–ด๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค.

    • ๋ฐฑ๋ณธ ๋ชจ๋ธ์€ ํ”„๋ก ํŠธ ๋ชจ๋ธ, ๋ ˆ์ผ์ฆˆ ๋ชจ๋ธ์€ ๋ฐฑ ๋ชจ๋ธ

  1. sign : ์ •์ƒ์ ์œผ๋กœ ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  2. appearance : ์นœ๊ตฌ์ถ”๊ฐ€๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ , ์นœ๊ตฌ ๋ฐ online ์ƒํƒœ์ธ ์œ ์ €๋“ค์˜ ์ ‘์†์ƒํƒœ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งˆ์šฐ์Šค๋ฅผ ์œ ์ € ์œ„์— ์˜ฌ๋ ธ์„ ๋•Œ ํ”„๋กœํ•„ ๋ทฐ๊ฐ€ ํ˜ธ๋ฒ„๋ง๋˜์–ด์•ผ ํ•œ๋‹ค. ํด๋ฆญํ–ˆ์„ ๋•Œ ์„œ๋ธŒ ๋ฉ”๋‰ด๊ฐ€ ๋– ์•ผ ํ•œ๋‹ค. ์œ ์ € ๋ฉ”๋‰ด๋“ค ์ค‘ ์œ ์ €์ •๋ณด ๋ฒ„ํŠผ์€ ์œ ์ € ์ธ๋ฑ์Šค ๋ฉ”์ธ ๋ทฐ๋กœ ๋ผ์šฐํŒ…๋˜์–ด์•ผ ํ•˜๊ณ , ์œ ์ € ์ฐจ๋‹จํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ์—๋Š” ์„œ๋ฒ„์ƒ์— Ban ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค. ํ•„์š”ํ•˜๋‹ค๋ฉด front์—์„œ Ban ์ •๋ณด๋ฅผ ๋ณด๊ด€ํ•ด์•ผ ํ•œ๋‹ค.

  3. user_index : ์œ ์ € ์ธ๋ฑ์Šค ๋ทฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๊ณ , ์ž์‹ ์˜ ์ธ๋ฑ์Šค ๋ทฐ(ํ™ˆ ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ทฐ)์—์„œ๋Š” name ๋ฐ ํ”„๋กœํ•„ ์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค. MatchHistory๋Š” ์ •์ƒ์ ์œผ๋กœ ๋ณด์—ฌ์ค˜์•ผ ํ•œ๋‹ค. GuildInviation๊ณผ ๊ด€๋ จํ•ด์„œ๋Š” ๋“ค์–ด์˜จ ์ดˆ๋Œ€๊ฐ€ ์—†์„ ๊ฒฝ์šฐ์˜ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•œ๋‹ค. ๋‹ค๋ฅธ ์œ ์ €์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ๋ทฐ์—์„œ ๊ธธ๋“œ ์ดˆ๋Œ€ ๋ฒ„ํŠผ์€ ์กด์žฌํ•˜๋˜ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.

  4. persist(front only) : info, input, alert ๋ชจ๋‹ฌ ๋ทฐ๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ํ•„์š”ํ•˜๋‹ค๋ฉด ๋‹ค๋ฅธ ๋ทฐ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. error main view๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ route๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ๊ธฐํƒ€ ํ•„์š”ํ•œ ์˜๊ตฌ ๋ทฐ๋“ค์„ ์ž‘์„ฑํ•œ๋‹ค.

  5. game(ladder) : ladder ๊ฒŒ์ž„์„ ๊ตฌํ˜„ํ•œ๋‹ค. nav bar์—์„œ ladder ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ game index view๋กœ ์ด๋™ํ•œ๋‹ค. ๋งค์นญ ํ›„ ๊ฒŒ์ž„์„ ์ง„ํ–‰ํ•œ๋‹ค. ๊ฒฝ๊ธฐ ๊ทœ์น™์€ ํด๋ž˜์‹์œผ๋กœ ์ง„ํ–‰๋œ๋‹ค. ์œ ์ €๊ฐ€ ์ดํƒˆํ•˜๋Š” ๊ฒฝ์šฐ์— ๋Œ€ํ•ด์„œ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•œ๋‹ค. game index view์•ˆ์— ๊ฒŒ์ž„ ๊ทœ์น™(info modal view)์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ์ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ฒŒ์ž„ ์ŠนํŒจ์— ๋Œ€ํ•œ ๋ณด์ƒ ํฌ์ธํŠธ ๊ฒฐ์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜(=๋ž˜๋”๋ง ์‹œ์Šคํ…œ)์ด ์ž‘์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค. ๊ฒŒ์ž„์€ ์ค‘๊ณ„ ๊ธฐ๋Šฅ์„ ๊ณ ๋ คํ•˜์—ฌ ํ™•์žฅ์„ฑ ์žˆ๊ฒŒ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.

  6. ์œ„์˜ ์‚ฌํ•ญ๋“ค์— ๋Œ€ํ•ด ๋กœ๊ทธ์•„์›ƒ ๋ฐ ๋กœ๊ทธ์•„์›ƒ์„ ๋ฐ˜๋ณตํ•˜๋”๋ผ๋„ ์ •ํ™•ํ•˜๊ฒŒ ๋™์ž‘ํ•œ๋‹ค. ์ ์ง„์  ๊ธฐ๋Šฅ ์ถ”๊ฐ€์— ๋Œ€๋น„ํ•ด ์ˆ˜์ •์— ๋‹ซํ˜€์žˆ๊ณ  ํ™•์žฅ์— ์—ด๋ ค์žˆ๋„๋ก ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

  7. ์ฑ„ํŒ…(DM, ๊ทธ๋ฃน)๊ณผ ๊ธฐ๋ณธ์ ์ธ ๊ฒŒ์ž„(๋“€์–ผ, ๋ž˜๋”)์ด ๊ฐ€๋Šฅํ•œ ์„œ๋น„์Šค๋ฅผ ๋จผ์ € ์™„์„ฑํ•œ๋‹ค. ์˜๊ตฌ ๋ทฐ, ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž…๊ณผ chat, userIndex, gameIndex ๋“ฑ์˜ ๋ฉ”์ธ ๋ทฐ๊ฐ€ ํฌํ•จ๋œ๋‹ค.

  8. ๊ฒŒ์ž„ ์ค‘๊ณ„ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•œ๋‹ค.

  9. ํ† ๋„ˆ๋จผํŠธ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

  10. guild, war์™€ ๊ด€๋ จ๋œ ๊ธฐ๋Šฅ๋“ค์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

  11. admin์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

2. ๋ทฐ ์„ค๊ณ„์— ๋Œ€ํ•œ ์ปจ๋ฒค์…˜ ์ •๋ฆฌ

  • (๋ทฐ ์„ฑ๊ฒฉ์— ๋”ฐ๋ฅธ close ๋ฉ”์„œ๋“œ์˜ ์ฑ…์ž„, fetch์— ๋”ฐ๋ฅธ callback ๋ฉ”์„œ๋“œ ๋ถ„๋ฆฌ, ๋ชจ๋ธ ์ ‘๊ทผ์— ๋Œ€ํ•œ attributes์™€ get ์‚ฌ์šฉ, ...)

    ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

    • ํ…œํ”Œ๋ฆฟ ๋ฐ ๋ทฐ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํ†ต์ผํ•œ๋‹ค. ๋ทฐ ํด๋”์˜ ๋ทฐ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ํ…œํ”Œ๋ฆฟ ํด๋”์˜ ์œ„์น˜์— ํ•ด๋‹น ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒƒ์ด ๋ณด์žฅ๋˜์–ด์•ผ ํ•œ๋‹ค.

    • ๋ฃจํŠธ์— App.js, router.js, Helper.js์™€ ๊ฐ™์€ ํŒŒ์ผ๋“ค์ด ์žˆ๋‹ค.

    • Chat, Guild, Admin์™€ ๊ฐ™์ด ๋ชจ๋“ˆ ๋‹จ์œ„๋กœ ํด๋”๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ํ•ด๋‹นํ•˜๋Š” ๋ฉ”์ธ ๋ทฐ์™€ ์ข…์† ๋ทฐ๋งŒ ๊ด€๋ฆฌํ•œ๋‹ค.

    • ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ ์‚ฌ์ด์—์„œ ๊ณต์œ ๋˜๋Š” ๋ทฐ๋“ค์€ share ํด๋”์— ๊ด€๋ฆฌํ•œ๋‹ค.

    • ์˜๊ตฌ ๋ทฐ๋“ค์€ ๋”ฐ๋กœ persist ํด๋”์— ๊ด€๋ฆฌํ•œ๋‹ค.

    • ๋ชจ๋“ˆ์„ ๋งก์•˜์„ ๋•Œ์— ๊ทธ ๋ชจ๋“ˆ์˜ ์ฑ…์ž„์ž๊ฐ€ ์ž์‹ ์˜ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ์„œ๋น„์Šค๋ฅผ ์•„๋ฌด๋ฆฌ ์ด์šฉํ•ด๋„ ์ •ํ™•ํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ, ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ ๊ณผ์ •์—์„œ ์•ก์…˜ ์ผ€์ด๋ธ”์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ํ•„์š”ํ•œ ์ˆœ๊ฐ„์— ์ ์ ˆํ•˜๊ฒŒ ์ฑ„๋„์— ์—ฐ๊ฒฐํ•˜๊ณ  ํ•ด์ œํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋กœ๊ทธ์•„์›ƒ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ, ์„œ๋น„์Šค ์•ˆ์—์„œ ์ƒˆ๋กœ๊ณ ์นจ์„ ๋ˆŒ๋ €์„ ๋•Œ, ์„œ๋น„์Šค ์•ˆ์—์„œ ๋’ค๋กœ๊ฐ€๊ธฐ๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ, ๋ธŒ๋ผ์šฐ์ € ํƒญ์„ ์ข…๋ฃŒํ–ˆ์„ ๋•Œ, ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค๋ฅธ ์›น์„œ๋น„์Šค๋กœ ์ด๋™ํ–ˆ์„ ๋•Œ, ๋ธŒ๋ผ์šฐ์ € ์ž์ฒด๋ฅผ ์ข…๋ฃŒํ–ˆ์„ ๋•Œ์—๋„ ์ž์‹ ์ด ๋‹ด๋‹นํ•œ ์˜์—ญ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ , ์ •์ƒ์ ์œผ๋กœ ์œ ์ €๊ฐ€ ๋กœ๊ทธ์•„์›ƒ์„ ํ–ˆ์„ ๋•Œ์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

    • initialize์— ์ตœ๋Œ€ํ•œ ๋งŽ์€ ๊ฒƒ์„ ๋„ฃ์ง€ ์•Š๊ณ  render ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์ฐจ์ผ๋“œ ๋ทฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. render ๋ฉ”์„œ๋“œ๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ณ ๋ คํ•ด์„œ ์„ค๊ณ„๋˜์–ด์•ผ ํ•œ๋‹ค.

    ๋ทฐ el ์ •์˜ (๋™์  vs ์ •์ )

    • ์˜๊ตฌ ๋ทฐ : ์˜๊ตฌ ๋ทฐ๊ฐ€ ์‚ฝ์ž…๋  ์˜์—ญ์€ index.html.erb ์•ˆ์— <div id=""></div> ํƒœ๊ทธ๋กœ ๋ณด์žฅ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ •์  el์„ ์‚ฌ์šฉํ•˜์—ฌ, hideํ–ˆ๋‹ค๊ฐ€ ํ•„์š”ํ•  ๋•Œ ๋ Œ๋”๋งํ•˜๋Š” ๊ตฌ์กฐ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

    • ๋ฉ”์ธ ๋ทฐ : ๋ฉ”์ธ ๋ทฐ๊ฐ€ ์‚ฝ์ž…๋  ์˜์—ญ์€ index.html.erb ์•ˆ์— <div id="container-view"></div> ํƒœ๊ทธ๋กœ ๋ณด์žฅ๋œ๋‹ค. ํ•˜์ง€๋งŒ, ๋ฉ”์ธ ๋ทฐ๋Š” ๊ต์ฒด๋˜๋ฉด์„œ ์‚ญ์ œ๋˜๊ธฐ ๋•Œ๋ฌธ์— container-view ํƒœ๊ทธ๋ฅผ ๋ณด์กดํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋™์  el๋กœ ์ƒ์„ฑํ•˜์—ฌ ์‚ฝ์ž…๋˜์–ด์•ผ ํ•œ๋‹ค.

    • ์ผ๋ฐ˜ ์ฐจ์ผ๋“œ ๋ทฐ์™€ ๋ฆฌ์ŠคํŠธ ์ฐจ์ผ๋“œ ๋ทฐ : ๋ถ€๋ชจ ๋ทฐ์˜ ํ…œํ”Œ๋ฆฟ์— ํ•ด๋‹น ๋ทฐ๊ฐ€ ๋“ค์–ด๊ฐˆ ํƒœ๊ทธ๊ฐ€ ๋ณด์žฅ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. setElement๋ฅผ ์ด์šฉํ•˜์—ฌ html()๋กœ ์‚ฝ์ž…ํ•œ๋‹ค.

    • ์—˜๋ฆฌ๋จผํŠธ ์ฐจ์ผ๋“œ ๋ทฐ(๋ฆฌ์ŠคํŠธ ์ฐจ์ผ๋“œ ๋ทฐ์— ๋“ค์–ด๊ฐ€๋Š” ์š”์†Œ): ๋ฆฌ์ŠคํŠธ ์ฐจ์ผ๋“œ ๋ทฐ ๋‚ด๋ถ€ ์š”์†Œ๋กœ append๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด ์ž์—ฐ์Šค๋Ÿฌ์šฐ๋ฏ€๋กœ, ๋™์ ์œผ๋กœ el์„ ์ƒ์„ฑํ•˜์—ฌ ๋ถ€๋ชจ ๋ทฐ์˜ el์— append๋กœ ์‚ฝ์ž…ํ•œ๋‹ค.

    close ๋ฉ”์„œ๋“œ์˜ ์ฑ…์ž„

    • ๋ชจ๋“  ๋ทฐ์— close๋ฅผ ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์ž. ๋ทฐ์˜ close ๋ฉ”์„œ๋“œ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ ธ์•ผ ํ•  ์ฑ…์ž„์€ ์ž์‹ ์—๊ฒŒ ์ข…์†๋œ ๋ชจ๋“  ์ฐจ์ผ๋“œ๋ทฐ์˜ close๋ฅผ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , ์ž์‹ ์ด onํ•œ eventListener๋ฅผ ํ•ด์ œํ•˜๊ณ , ์ž์‹ ์„ removeํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ชจ๋ธ์— ๋Œ€ํ•ด์„œ๋Š” listenTo๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , DOM ์š”์†Œ์— ๋Œ€ํ•ด์„œ๋Š” ์ตœ๋Œ€ํ•œ events ํ•ด์‹œ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ˆ„์ˆ˜ ์œ„ํ—˜์ด ์žˆ๋Š” on ์‚ฌ์šฉ์„ ์ž์ œํ•œ๋‹ค.

    • ์˜๊ตฌ ๋ทฐ์˜ close ๋ฉ”์„œ๋“œ๋Š” ์ž์‹ ๋ทฐ๋“ค์— ๋Œ€ํ•ด close๋ฅผ ํ˜ธ์ถœํ•˜์ง€๋งŒ ์ž์‹ ์„ removeํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ๋Œ€์‹  ์ž์‹ ์„ ๋Œ€์ƒ์œผ๋กœ hide()๋ฅผ ํ˜ธ์ถœ์‹œ์ผœ ์™ธ๊ด€์ƒ ๋ชจ์Šต์„ ๊ฐ์ถ˜๋‹ค.

    • ์ฑ„๋„์„ ๊ฐ€์ง„ ๋ทฐ๋“ค์€ close ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ์ž๊ธฐ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์ฑ„๋„์— ๋Œ€ํ•ด disconnectํ•˜๋Š” ๊ฒƒ์„ ์ฑ…์ž„์ง„๋‹ค.

    ์„œ๋ธŒ ๋ทฐ ์ƒ์„ฑ ์œ„์น˜

    • ๊ธฐ๋ณธ์ ์œผ๋กœ render ๋ฉ”์„œ๋“œ ๋‚ด์—์„œ ์ƒˆ๋กญ๊ฒŒ ์„œ๋ธŒ ๋ทฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

    • render ๋ฉ”์„œ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ์—ฐ์†์ ์œผ๋กœ ํ˜ธ์ถœ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์„ ๊ฒฝ์šฐ view ์ค‘๋ณต์œผ๋กœ ์ธํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์ด์— ๋”ฐ๋ผ ์ ์ ˆํžˆ ์ฒ˜๋ฆฌํ•œ๋‹ค.

    ์ฑ„๋„ ์ƒ์„ฑ ์œ„์น˜

    • ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฑ„๋„์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ทฐ์— ์ฑ„๋„์„ ํ• ๋‹นํ•œ๋‹ค.

    • ๋…ธํ‹ฐํ”ผ์ผ€์ด์…˜ ์ฑ„๋„์€ ์•ฑ ๊ฐ์ฒด์—์„œ ๊ด€๋ฆฌํ•œ๋‹ค.

    fetch์— ๋”ฐ๋ฅธ callback ๋ฉ”์„œ๋“œ ๋ถ„๋ฆฌ

    • fetchContainer์— ๋Œ€ํ•œ then์˜ ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ ธ ๊ฐ€๋…์„ฑ์„ ํ•ด์น  ๊ฒฝ์šฐ successCallback๊ณผ failCallBack์„ ๋”ฐ๋กœ ์ •์˜ํ•˜์—ฌ ๋ฉ”์„œ๋“œ ์‹คํ–‰์‹œ ์ „๋‹ฌํ•œ๋‹ค.

    ๋ชจ๋ธ ์ ‘๊ทผ

    • model์˜ ๊ฒฝ์šฐ back db์— ๊ตฌํ˜„๋œ ์ปฌ๋Ÿผ์€ get๊ณผ set์„ ์ด์šฉํ•˜์—ฌ attributes๋ฅผ ์ œ์–ดํ•œ๋‹ค.

    • back db์— ๊ตฌํ˜„๋˜์ง€ ์•Š์€ ์ปฌ๋Ÿผ์€ dot(.)์„ ์ด์šฉํ•˜์—ฌ ์ œ์–ดํ•œ๋‹ค.

    internal.js

    • internal.js์˜ App์— Model, Collection, View, Channel ๋ฉ”์„œ๋“œ ๋“ฑ ํŒŒ์ผ๋กœ ๊ตฌํ˜„๋œ ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ๋“ฑ๋กํ•œ๋‹ค.f

    Helper

    • fetchContainer ๋ฉ”์„œ๋“œ๋ฅผ fetch๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.

3. ๋””์Šค์ฝ”๋“œ ์ฑ„๋„ ์ •๋ฆฌ

๋ฐฑ์—… ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ถˆํ•„์š”ํ•œ ์ฑ„๋„๋“ค์„ ๋ชฐ์•„๋†“๊ณ , ์˜๋…ผํ•˜์—ฌ ๊ผญ ํ•„์š”ํ•œ ์ฑ„๋„๋งŒ ๋‚จ๊ธฐ๊ณ  ์ƒ์„ฑํ•ด๋ด…์‹œ๋‹ค.

๊ผญ ํ•„์š”ํ•œ ์ฑ„๋„

  • ๋žœ๋ค, ์•„๋ฌด๋ง

  • liveshare

  • ํ™˜๊ฒฝ ๋งํฌ, ํ”„๋ก ํŠธ ๋งํฌ, ๋ฐฑ ๋งํฌ, ์ผ๋ฐ˜ ๋งํฌ

  • announcement(emoji๋ฅผ ์ด์šฉํ•œ read ํ‘œํ˜„ ํ•„์ˆ˜)

  • ํšŒ์˜๋•Œ๋งํ•ด์š”(์ œ์•ˆ ๋ฐ ์ด์Šˆ)

  • ๊ฐœ์ธ์ผ์ •

  • github

    (backup ํด๋” ์ƒ์„ฑ ๋ฐ ๋ถˆํ•„์š”ํ•œ ํด๋” ๋ชฐ์•„๋„ฃ๊ธฐ, ์˜๋…ผํ•˜์—ฌ ๊ผญ ํ•„์š”ํ•œ ์ฑ„๋„๋งŒ ๋‚จ๊ธฐ๊ณ  ์ƒ์„ฑํ•˜๊ธฐ, ๊ฐ ์Œ์„ฑ ์ฑ„๋„ ์‚ฌ์šฉ ์šฉ๋„ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ, ...)

4. ํšŒ์˜ ์ฃผ๊ธฐ ๋ฐ ์‹œ๊ฐ„

  • (๊ถŒ์žฅ) ๋ฐ์ผ๋ฆฌ ์Šคํฌ๋Ÿผ(10~15๋ถ„) 11์‹œ

  • (ํ•„์ˆ˜) ์•ˆ๊ฑด์„ ๋‹ค๋ฃจ๋Š” ํšŒ์˜๋Š” ํ™”, ๊ธˆ ์˜คํ›„ 2์‹œ

5. ํ”„๋กœ์ ํŠธ ๋ณด๋“œ ์นด๋“œ ์ƒ์„ฑ ๋ฐ ๊ฐœ๋ฐœ ๋ฐฉ์‹ ๊ฒฐ์ •

(์นด๋“œ ์„น์…˜ ์ƒ์„ฑ, ์นด๋“œ๋ฅผ ์„น์…˜ ๋‹จ์œ„๋กœ ์ด๋™ํ•˜๋Š” ํƒ€์ด๋ฐ, ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐฉ์‹, ํ•„์š”ํ•œ ๋ผ๋ฒจ ์ƒ์„ฑ, ...)

  • ๋ฐฑ๋กœ๊ทธ์— ๊ฐœ๋ฐœ ๊ณ„ํš์„ ์ •๋ฆฌํ•ด๋†“๊ณ , ํ™”์š”์ผ ํšŒ์˜์—์„œ 1์ฃผ์ผ๊ฐ„ ๊ตฌํ˜„ํ•  ์˜์—ญ์˜ ์นด๋“œ๋“ค์„ ์ƒ์„ฑํ•œ๋‹ค.

  • ํ•ด๋‹น ์ฃผ์ฐจ์— ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ํŒ๋‹จํ•˜๋Š” ๋ฌธ์ œ๋“ค์€ not started ์„น์…˜์— ์นด๋“œ๋กœ ๋“ฑ๋กํ•˜๊ณ , ์–ธ์ œ ํ•ด๊ฒฐํ• ์ง€ ์ƒ์˜๊ฐ€ ๋”ฐ๋กœ ํ•„์š”ํ•˜๋‹ค๊ณ  ํŒ๋‹จํ•˜๊ฑฐ๋‚˜ ๊ธ‰ํ•˜์ง€ ์•Š์€ ๋ฌธ์ œ๋“ค์€ backlog์— ๋‚จ๊ธด๋‹ค.

  • ์ด์Šˆ๋Š” issues ํƒญ์—์„œ ํ…œํ”Œ๋ฆฟ์„ ์ด์šฉํ•˜์—ฌ ๋“ฑ๋กํ•œ๋‹ค. project๋ฅผ ์„ค์ •ํ•ด์•ผ๋งŒ ๋Œ€์‹œ๋ณด๋“œ์— ๋“ฑ๋ก๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊นŒ๋จน์ง€ ์•Š๊ณ  ์„ค์ •ํ•˜๋„๋ก ํ•œ๋‹ค.

  • ์นด๋“œ๋ฅผ ๋งŒ๋“ค ๋•Œ์—๋Š” ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•ญ๋ชฉ์„ ๋ช…์„ธํ•˜๋ฉด ์ข‹๊ฒ ๋‹ค. ๊ฐ€๊ธ‰์  ์™„๋ฃŒ๋œ ๊ฒƒ๋“ค์€ ์ฒดํฌํ•˜์—ฌ ํ•ด๋‹น ์นด๋“œ์˜ ์ง„์ฒ™๋„๋ฅผ ์„œ๋กœ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์ž.

  • ์™„๋ฃŒํ•œ ์นด๋“œ๋Š” closeํ•˜์—ฌ completed์— ๋ชจ์€๋‹ค. ์ดํ›„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ reopenํ•˜์—ฌ not started๋กœ ๋Œ์–ด์˜จ๋‹ค. ๊ธ‰ํ•œ ์ด์Šˆ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด backlog์— ๊ธฐ๋กํ•˜์—ฌ reopen์‹œ๊ธฐ๋ฅผ ์กฐ์œจํ•œ๋‹ค.

  • bug, feature, refactor, front, back, extra(ํšŒ์ƒ‰) ๋ผ๋ฒจ์„ ์‚ฌ์šฉํ•œ๋‹ค.

  • ๋ชจ๋“ˆ๋ช…์€ ์ œ๋ชฉ ์ ‘๋‘์‚ฌ๋กœ ํฌํ•จํ•œ๋‹ค. ex) [guild] ๊ธธ๋“œ๋ฆฌ์ŠคํŠธ ๊ตฌํ˜„

  • ๋ฆฌ๋ทฐ๋ฐฉ์‹

6. ๊นƒํ—ˆ๋ธŒ ๋ธŒ๋žœ์น˜ ๋ฐ merge ์ „๋žต

develop ๋ธŒ๋žœ์น˜์˜ ์ตœ์‹ ํ™” ์ƒํƒœ์— ๋Œ€ํ•ด ํ•ญ์ƒ ์ˆ™์ง€ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ํ˜„์žฌ ์ž์‹ ์ด ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ๋Š” ๋ธŒ๋žœ์น˜์™€ ์ถฉ๋Œ ์ง€์ ์ด ๋ฐœ์ƒํ•˜๊ณ , ๊ทธ ํ•ด๊ฒฐ ๋ฐฉ์‹์ด ์ž์‹ ์˜ ๋ชจ๋“ˆ ๋ฒ”์œ„์—์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ์ผ ๋•Œ์—๋Š” ์ด์Šˆ๋ฅผ ๋ ˆ์ด์ฆˆํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ ์™ธ์˜ ์ด์Šˆ์— ๋Œ€ํ•ด์„œ๋Š” ๊ทธ ๋•Œ ๊ทธ ๋•Œ develop ๋ธŒ๋žœ์น˜๋ฅผ pull ๋ฐ›์•„์„œ ๋™๊ธฐํ™”ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•˜์ง€๋งŒ, ๊ฐœ์ธ์˜ ์˜์—ญ์œผ๋กœ ๋‚จ๊ฒจ๋‘”๋‹ค.

ํ†ตํ•ฉ ๋ธŒ๋žœ์น˜

  • main: ๊ฐœ๋ฐœ์ด ๋๋‚˜๊ณ  ๋ฐฐํฌ๊ฐ€๋Šฅํ•œ ๋ธŒ๋žœ์น˜

  • develop: ๊ฐœ๋ฐœ์ด ์ง„ํ–‰ ์ค‘์ด๋ฉฐ, ๊ฐ€์žฅ ์ตœ์‹  ๋ธŒ๋žœ์น˜

ํ† ํ”ฝ ๋ธŒ๋žœ์น˜

  • ๋ชจ๋“ˆ์˜ ๋ฉ”์ธ ๋ธŒ๋Ÿฐ์น˜๋Š” ๋ชจ๋“ˆ๋ช…(guild)์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ์ด์Šˆ ๋ธŒ๋žœ์น˜๋Š”

  • ๋ชจ๋“ˆ๋ช…_๋ผ๋ฒจ๋ช…#์ด์Šˆ๋„˜๋ฒ„

  • ์˜ ํ˜•์‹์œผ๋กœ ๋ธŒ๋žœ์น˜๋กœ ๋„ค์ด๋ฐํ•œ๋‹ค.

    • master, develop, guild, guild_feat#23, guild_fix#21

    • develop

    • guild

    • guild_feat#23

    • guild_fix#21

    • (๋ธŒ๋žœ์น˜ ๋„ค์ด๋ฐ, ์™„์„ฑ๋œ ๊ธฐ๋Šฅ์„ develop ๋ธŒ๋žœ์น˜๋กœ mergeํ•  ๋•Œ ํ˜„์žฌ๋Š” ๋ฌผ๋ก  ์ฐจํ›„ ์ถฉ๋Œ ์ด์Šˆ๊ฐ€ ์—†์„์ง€ ๊ฐœ๋ฐœ์ค‘์ธ ๋‹ค๋ฅธ ๋ชจ๋“ˆ ๋ธŒ๋žœ์น˜์™€ ๋น„๊ตํ•˜๊ธฐ ๋“ฑ)

      • ๋ฆฌ๋ทฐ & merge ๊ถŒํ•œ

        1. ๋ชจ๋“ˆ ๋ธŒ๋žœ์น˜์˜ merge์— ๋Œ€ํ•ด์„œ๋Š” ๋ชจ๋“ˆ ์ž‘์—…์ž๊ฐ„์˜ ๋ฆฌ๋ทฐ

        2. ์™„์„ฑ๋œ ๋ชจ๋“ˆ ๋ธŒ๋žœ์น˜๋ฅผ develop ๋ธŒ๋žœ์น˜๋กœ mergeํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ชจ๋“  ์‚ฌ๋žŒ์˜ ๋ฆฌ๋ทฐ

        3. ๋ชจ๋“  ์‚ฌ๋žŒ์ด approveํ•œ ๊ฒฝ์šฐ์— mergeํ•˜๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ approveํ•˜๋Š” ์‚ฌ๋žŒ์ด mergeํ•  ์ˆ˜ ์žˆ๋‹ค. pending์ด ์žˆ์„ ๊ฒฝ์šฐ ์˜๊ฒฌ์„ ์กด์ค‘ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ , ์˜๊ฒฌ ์ฐจ์ด๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ํ•ด์†Œ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋งŒ ๊ทธ ๋ชจ๋“ˆ์— ๋Œ€ํ•ด ์ฑ…์ž„์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์ด ๊ฒฐ์ •ํ•œ๋‹ค.

7. ํŠน์ • ์˜์—ญ์— ๋Œ€ํ•œ ๋ฉค๋ฒ„๋ณ„ ์ฑ…์ž„ ๊ฒ€ํ† 

(๋ชจ๋ธ, ์ปจํŠธ๋กค๋Ÿฌ, ํผ๋ธ”๋ฆฌ์‹ฑ, ๋ฐฑ๋ณธ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง, ๋ฐฑ๋ณธ ๋ Œ๋”๋ง & ํด๋กœ์ฆˆ, QA...)

  • ๋ ˆ์ผ์ฆˆ

    ๋ชจ๋ธ & ์‹œ๋“œ & ์•กํ‹ฐ๋ธŒ ์–ด๋“œ๋ฏผ

    • ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ๋ชจ๋ธ ์ฐจ์›์—์„œ 1์ฐจ์ ์œผ๋กœ ์ง„ํ–‰๋˜์–ด์•ผ ํ•œ๋‹ค.

    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๋Š” ํšŒ์ˆ˜๋ฅผ ์ค„์ธ๋‹ค.

    • ์ฆ‰์‹œ ์—ฐ๊ด€ ๋กœ๋”ฉ(eager loading)์„ ์ž˜ ์‚ฌ์šฉํ•œ๋‹ค.

    • collection get ์š”์ฒญ์ด backend model์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ทธ๋Œ€๋กœ ์ฃผ๋Š” ๊ฒƒ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ œ๋“ค์ด ๋Œ€๋‹ค์ˆ˜์ด๋‹ค. ์ผ๋ถ€ ์ปฌ๋Ÿผ๋งŒ ์š”๊ตฌํ•˜๊ฑฐ๋‚˜, ์—ฐ๊ด€๋œ ๋‹ค๋ฅธ ๋ชจ๋ธ์˜ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ํ•จ๊ป˜ ์š”๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. to_sym, to_detail๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ front API์— ํšจ์œจ์ ์œผ๋กœ ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•œ serialize ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค.

    • *iwoo, jujeong*

    • ํ…œํ”Œ๋ฆฟ๊ณผ DOM ์š”์†Œ์— ๋ถ€์—ฌ๋˜๋Š” ํด๋ž˜์Šค, ID, CSS๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํผ๋ธ”๋ฆฌ์‹ฑ

      • *eunhkim*

      • ๋ฐฑ๋ณธ ๋ Œ๋”๋ง & ํด๋กœ์ฆˆ, ๋ฐฑ๋ณธ์˜ ์ „์ฒด์  ์•„ํ‚คํ…์ณ ๊ด€๋ฆฌ

        • *eunhkim*

        • ํ™˜๊ฒฝ/๋นŒ๋“œ

          • docker-compose๋ฅผ ์ด์šฉํ•ด์„œ up, down, start, stop, run์„ ํ•  ๋•Œ ์›ํ™œํ•˜๊ฒŒ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋“ค์— ๋Œ€ํ•œ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ด์•ผ ํ•œ๋‹ค. bundle, gem, webpack์— ๋Œ€ํ•œ ์ด์Šˆ๋“ค ์—ญ์‹œ ๊ฐ™์ด ๋‹ด๋‹นํ•œ๋‹ค. ํ‰๊ฐ€ํ•  ๋•Œ docker-compose up์„ ํ–ˆ๋Š”๋ฐ ์•ˆ ๋œ๋‹ค? ....

          • *sanam, yohlee*

8. ํ”„๋กœ์ ํŠธ ์นด๋“œ ์…‹ํŒ…์œ ์ € ์ƒํƒœ๋ฐ” ๊ตฌํ˜„

๋ผ์šฐํ„ฐํƒ€๊ณ  ๊ฐ€๋Š” ํŽ˜์ด์ง€ ๋‹จ์œ„๋กœ ๊ตฌํ˜„ํ•˜๋Š”๊ฒŒ ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. (์ˆ˜์ •์—์„œ ๋‹ซํ˜€์žˆ์Œ..)

๊ทธ ์™ธ์— ์ด์Šˆ์นด๋“œ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ผ๊ด€๋œ ์Šคํƒ€์ผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ํ…œํ”Œ๋ฆฟ์„ ๋งŒ๋“ค์–ด์„œ ํŒ€์›๋“ค์—๊ฒŒ ๊ณต์œ ํ•˜์˜€๋‹ค.

์œ ์ € ์ƒํƒœ๋ฐ” ๊ตฌํ˜„

์ดํ›„์—” sanam, jujeong๊ณผ apperance ์œ ์ € ์ƒํƒœ๋ฐ”๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.

๋ฐฑ๋ณธ ๋ทฐ์— ๋ฐฑ๋ณธ ๋ชจ๋ธ์„ ๋„ฃ์–ด์„œ ํ…œํ”Œ๋ฆฟ์— ์ ์šฉํ•˜๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ, ์•„๋ž˜์ฒ˜๋Ÿผ ํ•ด์‹œ์— ๋„ฃ์–ด์„œ ์ƒ์„ฑํ•ด์•ผํ•œ๋‹ค.

this.online_user_unit = new App.View.UserUnitView({ model: user });

rails์—์„œ strongParameter์— ๋ฐฐ์—ด์„ ๋„˜๊ธฐ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด ๋งํฌ๋ฅผ ์ฐธ๊ณ  ํ•˜์ž.

ํฌ์ธํŠธ๋Š” ์•„๋ž˜ ๋‘๊ฐ€์ง€๋‹ค.

๋ฐฐ์—ด์„ ๊ฐ€์ง€๋Š” parameter๊ฐ€ permit ๋ฉ”์†Œ๋“œ์˜ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์œ„์น˜ํ•ด์•ผํ•œ๋‹ค. ์•„๋‹ˆ๋ฉด array ํ‚ค ํ•ด์‹œ๋กœ ์•„๋ž˜์ฒ˜๋Ÿผ ์ ์–ด์ค„ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

params.permit(:foo, {array: [:key1, :key2]}, :bar)

์•„๋ž˜ ์˜ˆ์‹œ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.

Parameters: {"link"=>{"title"=>"Something", "time_span"=>[{"start"=>"2017-05-06T16:00:00.000Z", "end"=>"2017-05-06T17:00:00.000Z"}]}}

ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์œ„์ฒ˜๋Ÿผ parameter๋ฅผ ๋ณด๋‚ธ๋‹ค๊ณ ์น˜๋ฉด, ์•„๋ž˜์ฒ˜๋Ÿผ ์ž‘์„ฑํ•ด์ค˜์•ผํ•œ๋‹ค.

params.require(:link).permit(:title, time_span: [[:start, :end]])

ํ•™์Šต ๋‚ด์šฉ์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ์ดํ‰

๋ฏธํŒ…๋„ ์—ฌ๋Ÿฌ๋ฒˆ ์ง„ํ–‰ํ•˜๋‹ค๋ณด๋‹ˆ ์ง„ํ–‰์ด ์ ์  ๋นจ๋ผ์ง€๋Š” ๋Š๋‚Œ์ด๋‹ค. ์ด์ œ์‚ฌ ๋ชจ๋“ˆ๋ณ„ ๋ถ„๊ธฐ๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋Š” ์š”๊ฑด์„ ๋‹ค ๊ฐ–์ถ˜ ๋Š๋‚Œ์ด ๋“ ๋‹ค.

ํ•œํŽธ setElement์— ๋Œ€ํ•ด์„œ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๊ฒช์–ด๋†“์€ ์ƒํƒœ์˜€๊ธฐ ๋•Œ๋ฌธ์—, ํ”„๋ก ํŠธ ์ง„ํ–‰์ด ์›ํ• ํ–ˆ๋‹ค. ์ด๋ฒคํŠธ ํ•ธ๋“ค๋ง์ด ์ข€ ๋ณต์žกํ•œ ๋Š๋‚Œ์ด ์žˆ๋Š”๋ฐ ๋”ฐ๋กœ ๊ณ ๋ฏผํ•ด๋ด์•ผ๊ฒ ๋‹ค.

๋‹ค์Œ ํ•™์Šต ๊ณ„ํš

  • AppearanceView ๊ตฌํ˜„ ์™„๋ฃŒ

Last updated