Skip to content

Week3 Sprint

hataerin edited this page Nov 4, 2020 · 1 revision

์Šคํ”„๋ฆฐํŠธ ํšŒ์˜ ๋กœ๊ทธ

์Šคํ”„๋ฆฐํŠธ ๋ชฉํ‘œ ๐Ÿˆ

  • ์‹ค์‹œ๊ฐ„ ์˜์‚ฌ์†Œํ†ต

    • FE : video์™€ chat client ๋ถ€๋ถ„ ํ•œ ํŽ˜์ด์ง€์— ๊ตฌํ˜„
    • BE : nginx์—์„œ https ํ†ต์‹  ๊ตฌํ˜„, api์ž‘์„ฑํ•˜๊ธฐ
    • ๊ณตํ†ต : ๋ถ€๊ฐ€์ ์ธ ๊ธฐ๋Šฅ๋ณด๋‹ค ์ƒ๋Œ€๋ฐฉ๊ณผ์˜ ์†Œํ†ต์„ ์šฐ์„ ์œผ๋กœ ๊ธฐ๋Šฅ ๊ตฌํ˜„(https)
  • ๊ณต๋™ ๋ฌธ์„œ ํŽธ์ง‘

    • DB ์—ฐ๋™ํ•˜์—ฌ ๋ฌธ์„œ ๋‚ด์šฉ ์ €์žฅ ๋ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
    • room ๋ณ„๋กœ ๋ฌธ์„œ ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ
  • ๋ฌธ์„œ ๊ด€๋ฆฌ

    • api ์„ค๊ณ„๋Œ€๋กœ ์™„์„ฑํ•˜๊ธฐ(pagination, sorting, searching ๊ธฐ๋Šฅ๊นŒ์ง€)
    • ํŒŒ์ผ export ๊ธฐ๋Šฅ ๊ณต๋ถ€ ๋ฐ ์˜ˆ์ œ ๋ถ„์„
    • JWT์— ๋Œ€ํ•œ ๊ณต๋ถ€ ๋ฐ secret key๋กœ ์ธ์ฆ ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ
  • ํŒ€ ๋ฐ ํŒ€์› ๊ด€๋ฆฌ

    • ์ด๋ฉ”์ผ๋กœ ์ธ์ฆํ•ด์„œ ํŒ€์— ํŒ€์›์œผ๋กœ ์ถ”๊ฐ€๋˜๋Š” ๊ฑฐ ํ™•์ธ
  • ์ธ์ฆ ๋ฐ ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ

    • oauth2, jwt ๊ฐ ์˜ˆ์ œ๋ถ„์„์„ ํ†ตํ•ด ๊ฐœ๋ฐœ ์‹œ์ž‘

์Šคํ”„๋ฆฐํŠธ ๋‹จ์œ„ ๐Ÿ—“

  • 6์ผ

์Šคํฌ๋Ÿผ ๋งˆ์Šคํ„ฐ ๐Ÿ‘จโ€๐Ÿ”ง

ํšŒ์˜ ๋‚ด์šฉ ๐Ÿ’ฌ

  • ์ฃผ์ฐจ๋ณ„๋กœ ์ „์ฒด์ ์ธ ์ผ์ •์„ ๊ณ„ํšํ•˜์˜€๋‹ค.

    • 11/2 ~ 11/14(์ค‘๊ฐ„๋ฐœํ‘œ ์ „): ๊ฐ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์— ์ง‘์ค‘
    • 11/16 ~ 12/4(์ตœ์ข… ๋ฐœํ‘œ๊นŒ์ง€): view & k8s ๊ตฌํ˜„ ๋ฐ ์ ์šฉ
  • ๊ทธ๋ผ์šด๋“œ ๋ฃฐ ํšŒ์˜

    • Scrum ์ง€๊ฐ ์‹œ ๋ฒŒ๊ธˆ 2๋งŒ์›(2020.11.01 ์ง€๊ฐ์ž ๊ณฝ๋ณ‘์„  ใ…œใ…œ)
    • Scrum ์‹œ๊ฐ„ : ์˜ค์ „ 10์‹œ (์ง€๊ฐ๋น„ 2๋งŒ์›)
    • wrap-up ์‹œ๊ฐ„: ์ˆ˜์—… ๋๋‚˜๊ธฐ ์ „ 30๋ถ„
    • ๊ธˆ์š”์ผ ์˜คํ”„๋ผ์ธ ๋ฏธํŒ… ๊ณ ์ •


์Šคํ”„๋ฆฐํŠธ ํšŒ๊ณ  ๋กœ๊ทธ

์ฃผ๊ฐ„ ํšŒ๊ณ  ๋‚ด์šฉ ๐Ÿ’ฌ

  • ๊ณฝ๋ณ‘์„ 

    • WebRTC ๊ณ ๋ คํ•ด์•ผ ๋  ์ƒํ™ฉ
      • https๋ฅผ ๋ถ™์—ฌ์„œ ํƒ€์ธ์˜ ์–ผ๊ตด์ด ๋ณด์ผ๊ฒƒ(SSL ํ™œ์šฉ)
      • ๋™์˜์ƒ ์„ธ์…˜ ์œ ์ง€ (์•„๋งˆ ์›น ๋ธŒ๋ผ์šฐ์ € ๊บผ์ง€์ง€ ์•Š๋Š” ์ด์ƒ ์œ ์ง€๋˜๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ๋ฐฉ์‹ฌํ•˜๋ฉด ์•ˆ๋Œ. ์•Œ์•„๋ณด์ž)
      • FE์ชฝ์€ ์ฑ„ํŒ…๊ณผ webRTC ํ•œ ํŽ˜์ด์ง€ ์•ˆ์— ๋‚˜ํƒ€๋‚ผ ๊ฒƒ
      • proxy ์—ฌ๋Ÿฌ ๊ฐœ ์ ์šฉ๋ฒ• ์•Œ์•„๋‚ด๊ธฐ
    • ์Šฌ์Šฌ ์žฌ๋ฏธ๊ฐ€ ๋ถ™๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.
  • ์ด์—ฐ์ฃผ

    • workspace ui๋ถ€๋ถ„์„ ๋งก์•„์„œ ์„œ๋ฒ„๊ฐœ๋ฐœ์„ ๋งก๊ฒŒ๋˜์„œ ์ •์‹ ์ด ์—†์—ˆ๋‹ค.
    • client์—์„œ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด store๋ฅผ ๋‘๋Š”๋ฐ 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ๋‹ค. ๋‚ด๊ฐ€ ๋งก์€ ์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•œ ํ›„ ์„ ํƒ์ ์œผ๋กœ ์ ์šฉํ•ด๋ณด์•„์•ผ๊ฒ ๋‹ค.
      • useReducer() hooks
      • mobx store
      • mobx state tree
    • api ๋ฌธ์„œํˆด๋กœ gitbook์„ ์ œ์•ˆํ•˜์—ฌ ์†Œ์˜์ด์™€ ๋ฌธ์„œ๊ด€๋ฆฌ, ํŒ€๊ด€๋ฆฌ, ๋ฉค๋ฒ„๊ด€๋ฆฌ api๋ฅผ ์ •๋ฆฌํ–ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ๋“ค์ด ์žˆ๋Š”๋ฐrest api ์ปจ๋ฒค์…˜์— ๋”ฐ๋ผ ์„ค๊ณ„ํ•˜๋Š”๊ฒŒ ์–ด๋ ค์› ๋‹ค.
    • ํŒ€์›์ดˆ๋Œ€์‹œ email์ธ์ฆ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•ด์„œ ๊ณ ๋ฏผํ•˜์˜€๋‹ค.
    • dotenv ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•ด์„œ .envํŒŒ์ผ์„ ๋‘์–ด db, aws ๊ด€๋ จ ์ •๋ณด์— ๋Œ€ํ•œ ๋ณด์•ˆ์„ ์œ ์ง€ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
    • ์‚ฌ์šฉ์ž ํ”„๋กœํ•„, ํŒ€ํ”„๋กœํ•„ ์‚ฌ์ง„ ์ €์žฅ์„ ์œ„ํ•ด ์–ด๋–ค์‹์œผ๋กœ ํŠน์ •ํด๋”์— ์—…๋กœ๋“œํ•˜๋Š”์ง€, aws s3์— ์—…๋กœ๋“œํ•˜๋Š”์ง€ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค.
    • ์Šคํ”„๋งํด๋ผ์šฐ๋“œ์—์„œ eureka๋ผ๋Š” ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ msa๋ฅผ ์œ„ํ•ด service directory๋กœ ์„œ๋น„์Šค๋“ค์„ ๊ด€๋ฆฌํ•˜๊ณ  circuit์œผ๋กœ ์ด ์žˆ๋‹ค๋Š” ์ ์ด ์žฌ๋ฐŒ์—ˆ๋‹ค. k8s์—์„œ ์ด๋Ÿฐ ๋ถ€๋ถ„์„ ์ง€์›ํ•œ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ ํŒ€์›๋“ค๊ณผ ๋…ผ์˜ํ•˜์—ฌ ์ถ”ํ›„์— ์ ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.
  • ์ •์†Œ์˜

    • api ์„ค๊ณ„์˜ ์ค‘์š”์„ฑ์„ ์•Œ์•˜๋‹ค. ๋˜ํ•œ ๋ฐ”๋žŒ์งํ•œ api์„ค๊ณ„์— ๋Œ€ํ•ด ์ฐพ์•„๋ณด์•˜๋‹ค.
    • request๋ฅผ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์˜ ํ˜•์‹์ ์ธ ์ฐจ์ด์™€ ๋ฌด์—‡์ด bp์ธ์ง€๋ฅผ ๊ณ ๋ฏผํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
    • msa๋กœ ์„ค๊ณ„์‹œ db๊ฐ„์˜ ์ฐธ์กฐ๊ด€๊ณ„๋ฅผ ๊ฐ–์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ๊ฒƒ์ด ์‹ ๊ธฐํ•˜์˜€๋‹ค. ๊ตฌํ˜„์„ ํ•˜๋ฉด์„œ ๋” ์•Œ์•„๊ฐ€๋ณด๊ธธ ๊ธฐ๋Œ€ํ•œ๋‹ค.
  • ์กฐ์„ฑ์›

    • ๋งˆํฌ๋‹ค์šด preview ๊ธฐ๋Šฅ์„ ๋‹จ์ˆœํžˆ marked๋ผ๋Š” ์˜คํ”ˆ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋  ์ค„ ์•Œ์•˜๋Š”๋ฐ ๋งˆํฌ๋‹ค์šด์˜ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋Šฅ๋งŒ ์ œ๊ณตํ–ˆ์—ˆ๊ณ  ๋”ฐ๋กœ ์‚ด์„ ๋ถ™์—ฌ์•ผ ๋œ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค.
    • y-websocket ์—์„œ room ๋ณ„๋กœ ์‚ฌ์šฉ์ž๋“ค๋ผ๋ฆฌ ์†Œํ†ตํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ๋Š”๋ฐ ์ด room ๊ธฐ๋Šฅ์„ LiveMD์˜ ๋ฌธ์„œ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์„์ง€ ์ฒดํฌํ•ด์•ผ ํ•œ๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

    • ssl์ธ์ฆ์„œ๋ฅผ ๋‹ฌ๋ฉด์„œ nginx์˜ config์— ๋Œ€ํ•ด ๊ณต๋ถ€๋ฅผ ํ–ˆ๋‹ค. ํ•˜๋‚˜๋กœ๋งŒ ํ†ต์‹ ํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜๋‚˜ 2๊ฐœ ์ด์ƒ์˜ https๊ฐ„์˜ ํ†ต์‹  ๊ตฌํ˜„์— ๋Œ€ํ•ด์„œ๋Š” ๋” ์•Œ์•„๋ด์•ผ๊ฒ ๋‹ค.
    • ์ฑ„ํŒ…, ๋น„๋””์˜ค ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก api๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋” ์ฐพ์•„๋ด์•ผ๊ฒ ๋‹ค.
    • ์–ผ๋ฅธ ์‹ค์‹œ๊ฐ„ ํ†ต์‹  ๋ถ€๋ถ„์„ ๊ตฌํ˜„ํ•˜๊ณ  ๋ฌธ์„œ์ชฝ์œผ๋กœ ๋„˜์–ด๊ฐ€์„œ ๊ฐœ๋ฐœํ•ด์•ผ๊ฒ ๋‹ค.

์ž˜ํ–ˆ์œผ๋ฉฐ ์•ž์œผ๋กœ ๊ณ„์†ํ•  ์ผ ๐Ÿ€

  • ๊ณฝ๋ณ‘์„ 

    • ์˜คํ”ˆ ์†Œ์Šค๊ธด ํ•˜์ง€๋งŒ ์ด๊ฒƒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ WebRTC์™€ React๋ฅผ ํ•จ๊ป˜ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ตœ๋Œ€ํ•œ ๋‚˜์—๊ฒŒ ๋„์›€์ด ๋˜๊ณ  ํŒ€์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋„๋ก WebRTC์™€ React๋Š” ํ™•์‹คํžˆ ๊ธฐ๋ฐ˜์„ ๊ณ„์†ํ•ด์„œ ๋‹ค์ ธ๋‚˜๊ฐ€์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.
  • ์ด์—ฐ์ฃผ

    • api ๋ฌธ์„œ์— ๋”ฐ๋ผ ํŒ€๊ด€๋ฆฌ api์„œ๋ฒ„๋ฅผ ๊ตฌํ˜„ํ•˜์˜€๋‹ค.
    • email์„ ์ด์šฉํ•ด ๋ฉค๋ฒ„์ดˆ๋Œ€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณ ๋ฏผํ•˜์—ฌ ๋กœ์ง์„ ๊ตฌ์„ฑํ•˜๋ ค๊ณ  ํ•˜๊ณ  ์žˆ๋‹ค. async await์„ ํ™œ์šฉํ•˜์—ฌ nonblocked programmingํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฐ•ํ›ˆ๊ธฐ๋ฉ˜ํ† ๋‹˜์˜ ์กฐ์–ธ์— ๋”ฐ๋ผ ๊ตฌํ˜„ํ•ด์•ผ๊ฒ ๋‹ค.
  • ์ •์†Œ์˜

    • git book์„ ํ™œ์šฉํ•˜์—ฌ api์„ค๊ณ„๋„ ํ•˜๊ณ  ๊ธฐ๋ก์„ ๋‚จ๊ธด ๊ฒƒ์ฒ˜๋Ÿผ, ๋ฌด์–ธ๊ฐ€๋ฅผ ํ•  ๋•Œ ํˆด์„ ์‚ฌ์šฉํ•˜์—ฌ ํšจ์œจ์ ์ด๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์ž.
  • ์กฐ์„ฑ์›

    • yjs ์˜คํ”ˆ์†Œ์Šค๋ฅผ ์ ์  ์ดํ•ดํ•ด ๊ฐ€๋Š” ์ ์ด ์ข‹์€ ๊ฒƒ ๊ฐ™๋‹ค. yjs๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์‚ด์„ ๋ถ™์ด๋Š” ๊ฒƒ์ด ๊ด€๊ฑด์ด ๋  ๊ฒƒ ๊ฐ™๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

    • ๋‚˜ํƒœํ•ด ์ง€์ง€ ์•Š๊ณ  ๋งค์ผ๋งค์ผ ์กฐ๊ธˆ์”ฉ์ด๋ผ๋„ ๊ฐœ๋ฐœํ•œ ์ ์ด ์ž˜ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ์ด๋ฒˆ ์Šคํ”„๋ฆฐํŠธ๋ฅผ ํ•˜๋ฉฐ ๊ฐœ๋ฐœ์€ ๊ด€์„ฑ์ฒ˜๋Ÿผ ์ฒ˜์Œ ์‹œ์ž‘ํ•˜๋Š”๊ฒƒ์ด ์–ด๋ ต์ง€ ํ•œ๋ฒˆ ํ•˜๋ฉด ๊ณ„์†ํ•˜๊ธฐ๊ฐ€ ์‰ฝ๋‹ค๋Š”๊ฒƒ์„ ๊นจ๋‹ซ๊ฒŒ ๋˜์—ˆ๋‹ค.
    • ๋‹จ์ˆœํžˆ ๋ฐฉ๋ฒ•์„ ๋”ฐ๋ผํ•˜๋Š”๊ฒƒ์—์„œ ๊ทธ์น˜์ง€ ์•Š๊ณ  ํ•œ์ค„ํ•œ์ค„ ๋ฌด์Šจ์˜๋ฏธ์ธ์ง€ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๊ฐœ๋ฐœํ–ˆ๋˜๊ฒƒ์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค.

๋” ์ž˜ํ–ˆ์œผ๋ฉด ์ข‹์•˜์„ ์ผ ๐Ÿ˜ฅ

  • ๊ณฝ๋ณ‘์„ 

    • webRTC์™€ socket.io์— ๋Œ€ํ•œ ์ „์ฒด์ ์ธ ์ดํ•ด๊ฐ€ ์•„์ง๊นŒ์ง€ ๋ถ€์กฑํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ๊ฐœ๋ฐœ์„ ํšจ์œจ์ ์œผ๋กœ ์ง„ํ–‰ํ•˜๊ณ  ํŒ€์›๋“ค์—๊ฒŒ๋„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ๊ณต๋ถ€๋ฅผ ๋” ํ•ด์•ผ๋  ํ•„์š”์„ฑ์„ ๋Š๊ผˆ๋‹ค.
  • ์ด์—ฐ์ฃผ

    • oauth2์™€ jwt๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ธ์ฆ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๋ถ€์กฑํ•ด์„œ ์‚ฌ์šฉ์ž์ชฝ ์„œ๋น„์Šค๋ฅผ ์•„์ง ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์ธ์ฆ์„œ๋น„์Šค์™€ ์œ ์ €์„œ๋น„์Šค๋ฅผ ๋ถ„๋ฆฌํ–ˆ์„๋•Œ oauth2 ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ์‚ฌ์šฉ์ž์ •๋ณด๋ฅผ ์–ด๋–ค์‹์œผ๋กœ ์œ ์ €์„œ๋น„์Šค์— ์ „๋‹ฌํ•˜์—ฌ ์ €์žฅํ•  ๊ฒƒ์ธ์ง€ ๊ณ ๋ฏผํ•ด๋ณด์•„์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค.
  • ์ •์†Œ์˜

    • ์‹œ๊ฐ„์ด ๋œ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋Š” ์ผ์„ ๋ฃจ์ฆˆํ•˜๊ฒŒ ์ง„ํ–‰ํ•˜๋ฉฐ ์†๋„๋‚ด์ง€ ๋ชปํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ง€๊ธˆ ๋‹น์žฅ ํ•ด์•ผํ•  ์ผ์„ ๋งค์ผ ์ •๋ฆฌํ•˜๊ณ , jira์—์„œ task๋ฅผ ์™„๋ฃŒ์ƒํƒœ๋กœ ์˜ฎ๊ธฐ๋Š” ์ฆ๊ฑฐ์›€์„ ๋Š๋ผ์ž!
    • git์„ ๋น„๋กฏํ•œ ๋‹ค๋ฅธ ๊ฒƒ๋“ค์— ๋Œ€ํ•ด ๋ง‰ํžˆ๋Š” ๋ถ€๋ถ„์„ ์Šค์Šค๋กœ ๊ตฌ๊ธ€๋งํ•˜๋ฉฐ ํ—ค์ณ๋‚˜๊ฐ€๋ณด์ž!
  • ์กฐ์„ฑ์›

    • ๋ˆˆ์œผ๋กœ ๋ณด์ด๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์ข€ ๋ถ€์กฑํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ๋ญ๋ผ๋„ ์ง„ํ–‰์„ ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋Š๋ผ๋Š” ์ค‘์ด๋‹ค.
  • ํ•˜ํƒœ๋ฆฐ

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

๋‹ค์Œ ์Šคํ”„๋ฆฐํŠธ์— ์ ์šฉํ•  ๊ฒƒ ๐Ÿ“ˆ

  • ๊ทธ๋ผ์šด๋“œ ๋ฃฐ ์ ์šฉํ•˜๊ธฐ
Clone this wiki locally