Skip to content
LeeMir edited this page Nov 15, 2021 · 3 revisions

์˜ค๋Š˜์˜ TMI

๋ฏผ์ง€: ์ฃผ๋ง์— ์ž˜ ์‰ฌ์—ˆ๋‹ค ์›์ฃผ: ์กฐ์šฉํ•œ ์ฃผ๋ง์„ ๋ณด๋ƒ„, ํ‘น ์‰ผ ๋ช…์žฌ: ์•„๋Š”์‚ฌ๋žŒ์ด ํฌ๋กฑ๋‹˜์„ ์•Œ๊ณ  ์žˆ์—ˆ๋‹ค ์ˆ˜์šฉ: ํ•ด์ปคํ†ค์— ๋‚˜๊ฐ

๋‚จ์€ ํ• ์ผ

  • ํŒ€ ๋‚ด๋ถ€ ๊ด€๋ฆฌ - ์ˆ˜์šฉ
  • ํŒ€ ๋ณด๋“œ - ๋ช…์žฌ, ์›์ฃผ
  • ํŒ€ ์ฑ„ํŒ… - ๋ฏผ์ง€

์ด๋ฒˆ์ฃผ ๊ณ„ํš

  • ํŒ€ ๋‚ด๋ถ€ ๊ด€๋ฆฌ - ์ˆ˜์šฉ

    • ํ•  ์ผ
      • UI
      • ๋ฉค๋ฒ„ ์ดˆ๋Œ€
      • ๋ฉค๋ฒ„ ๊ถŒํ•œ ์ˆ˜์ •
      • ๋ฉค๋ฒ„ ๊ฐ•ํ‡ด
      • ํŒ€ ์‚ญ์ œ
      • ํŒ€ ๋‚˜๊ฐ€๊ธฐ
      • ํŒ€ ๊ตฌ์„ฑ์› ๊ฒ€์ƒ‰
      • ์„œ๋กœ ์ƒํƒœ ํ™•์ธ
    • ์ด๋ฒˆ์ฃผ์— ํ•  ์ผ
      • UI
      • ํŒ€ ์‚ญ์ œ
      • ํŒ€ ๋‚˜๊ฐ€๊ธฐ
      • ํŒ€ ๊ตฌ์„ฑ์› ๊ฒ€์ƒ‰
      • ์„œ๋กœ ์ƒํƒœ ํ™•์ธ
  • ํŒ€ ๋ณด๋“œ - ๋ช…์žฌ, ์›์ฃผ

    • ํšŒ์˜
    • ํ•™์Šต
    • ํ•  ์ผ
      • ํฌ์ŠคํŠธ์ž‡
        • ์ƒ์„ฑ
          • ์ƒ์„ฑ ๋ชจ๋‹ฌ
        • ์‚ญ์ œ
          • ์‚ญ์ œ ๋ชจ๋‹ฌ (์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? Y/N)
        • ์ˆ˜์ •
          • ์ˆ˜์ • ๋ชจ๋‹ฌ
        • ์ด๋™
        • ๋ฐฐ๊ฒฝ ์ƒ‰ ๋ณ€๊ฒฝ
  • ํŒ€ ์ฑ„ํŒ… - ๋ฏผ์ง€

    • ํ•  ์ผ
      • UI
      • ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ
      • ์ฑ„ํŒ…๋ฐฉ ์ดˆ๋Œ€
      • ์ฑ„ํŒ…
      • ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก ๋ณด๊ธฐ
        • ๋ฉ”์‹œ์ง€ ์ˆ˜ ํ™•์ธ
      • ์ฑ„ํŒ…๋ฐฉ ๋‚˜๊ฐ€๊ธฐ
      • ์ฑ„ํŒ… ๋ฐ˜์‘
      • ๋ฐฉ์žฅ
        • ์ฑ„ํŒ…๋ฐฉ ์ด๋ฆ„ ๋ณ€๊ฒฝ
        • ์œ ์ € ๊ฐ•ํ‡ด
    • ์ด๋ฒˆ์ฃผ ํ•  ์ผ
      • UI
      • ์ฑ„ํŒ…๋ฐฉ ์ƒ์„ฑ
      • ์ฑ„ํŒ…๋ฐฉ ์ดˆ๋Œ€
      • ์ฑ„ํŒ…
      • ์ฑ„ํŒ…๋ฐฉ ๋ชฉ๋ก ๋ณด๊ธฐ

๊ถ๊ธˆํ•œ ์ 

team์—์„œ ํŒ€ ์„ ํƒํ•ด์„œ ์ ‘์†ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ดœ์ฐฎ์€๋ฐ, ์ƒˆ๋กœ๊ณ ์นจํ•˜๊ฑฐ๋‚˜ ์ฃผ์†Œ๋กœ ์ ‘์†ํ•œ ๊ฒฝ์šฐ ๋ฆฌ์ฝ”์ผ์— ์œ ์ € ์ด๋ฉ”์ผ์ด ์—†์–ด์„œ ๋นˆ์นธ์œผ๋กœ ๊ฐ€์ ธ์™€์ง‘๋‹ˆ๋‹ค. ํ˜„์žฌ PrivateRoute์—์„œ ์œ ์ € ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š”๋ฐ ์ด๋ถ€๋ถ„ ์ˆœ์„œ ์กฐ์ •์ด ์กฐ๊ธˆ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

socket context ํŒŒ์ผ์—์„œ export const SocketContext = React.createContext(null); ์ด๊ฑฐ ๋„๋Œ€์ฒด ํƒ€์ž… ๋ญ˜๊นŒ์š”?

ํŒ€ ๋‚ด๋ถ€ ๊ด€๋ฆฌ ํŽ˜์ด์ง€ ๋„ค์ด๋ฐ์„ ํ˜„์žฌ ๊ทธ๋ƒฅ UsersPage๋กœ ํ•ด๋†จ๋Š”๋ฐ ๋” ์ข‹์€ ์ด๋ฆ„์ด ์žˆ์„๊นŒ์š”?

yarn workspace

dependancy vs devDependancy

- @types => dev
- typescript => dev
- eslint, prettier => dev
- @testing-library => dev

@(์ ˆ๋Œ€ ๊ฒฝ๋กœ)


๋Œ€๋ง์˜ ํŒ€ ๋ณด๋“œ

(๋งํ•˜๋‹ค์˜ ๋ง์ด ์•„๋‹˜. ์•”ํŠผ ์•„๋‹˜)

ํฌ์ŠคํŠธ์ž‡ DOM vs Canvas

์ €๋Š” Dom์œผ๋กœ ํ•˜๋Š”๊ฒŒ ๋” ์‰ฌ์šธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋™๊ฐ์ž…๋‹ˆ๋‹ค.

์ดˆ๊ธฐํ™”

  1. DB์—์„œ Postit ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ด
  2. ๋ถˆ๋Ÿฌ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ x,y ์ •๋ณด์— ๋งž๊ฒŒ Konva๋กœ ๊ทธ๋ ค์คŒ

์ƒ์„ฑ

  1. ์ƒ์„ฑ ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด, Modal ๋“ฑ์žฅ
  2. Modal form์„ ์ฑ„์šฐ๊ณ  Submit ๋ฒ„ํŠผ ๋ˆ„๋ฆ„
  3. ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ ๋งŒ๋“ค๊ณ , ๋งŒ๋“  ๋ฐ์ดํ„ฐ๋ฅผ socket์œผ๋กœ broadcasting
  4. socket.on('draw', drawPostit)

์‚ญ์ œ & ์ˆ˜์ •

  1. ํฌ์ŠคํŠธ์ž‡ ์šฐ์ธก ์ƒ๋‹จ ... ํด๋ฆญ์‹œ ๋“œ๋กญ๋‹ค์šด(์ˆ˜์ •, ์‚ญ์ œ) ํ‘œ์‹œ 2-1. ์‚ญ์ œ ํด๋ฆญ: ์‚ญ์ œํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ? (Y/N) ๋ชจ๋‹ฌ 2-2. ์ˆ˜์ • ํด๋ฆญ: ์ƒ์„ฑ ๋•Œ์™€ ๊ฐ™์€ Modal

์ด๋™

  1. disconnect ๋˜๋Š” ์ˆœ๊ฐ„์˜ ์œ„์น˜๋งŒ DB์— ๋ฐ˜์˜
  2. [Client] onDragStart๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, socket.emit('move')
  3. [Server] socket.on('move', broadcast) https://konvajs.org/docs/react/index.html
    <stage>
        <layer>
            <postit onDragStart={handleDragStart}, onDragEnd={handleDragEnd}/>
        </layer>
    </stage>

DB <-> Server <-> Client

ํŒ€ ๋‚ด ๋‹ค๋ฅธ ํŽ˜์ด์ง€์— ์žˆ์„ ๋•Œ ์†Œ์ผ“ ๋ฉ”์‹œ์ง€๋ฅผ ๊ณ„์† ๋ฐ›๋Š”๋‹ค?

ํŽ˜์ด์ง€๊ฐ€ ๋ฐ”๋€Œ๋ฉด room์ด ๋ฐ”๋€Œ๋Š” ๊ฑฐ๊ณ  BE์—์„œ room๋ณ„๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๊ฑฐ๋ฉด ์•ˆ๋ฐ›์„๋“ฏ

์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค

  • ์“ฐ๋กœํ‹€๋ง, ๋””๋ฐ”์šด์‹ฑ
  • offscreen canvas
  • ๋ฐ์ดํ„ฐ๋Š” BE ์†Œ์ผ“์—์„œ ์œ ์ง€, ๊ฐ€๋” DB์— ์ €์žฅ
    • ์„œ๋ฒ„ ์ตœ์ดˆ ์‹คํ–‰ ์‹œ DB์—์„œ ๋ถˆ๋Ÿฌ์™€ ๋™๊ธฐํ™” (DB -> Server)
    • ์œ ์ €๊ฐ€ ํŒ€ ๋ณด๋“œ page redirection ์‹œ, Server์—์„œ ๋ถˆ๋Ÿฌ์˜ด (Server -> Client)
  • ๋ญ”๊ฐ€ ์ƒˆ๋กœ ๋‹ค ๊ทธ๋ฆฌ๋Š” ๊ฒŒ ์•„๋‹Œ, ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋œ ๊ฒƒ๋งŒ ๋”ฐ๋กœ ๊ทธ๋ ค๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์œผ๋ฉด ์ข‹๊ฒ ์Œ
Clone this wiki locally