10. Using The HTTP Send The Temperature Data To Node Red - EnglishNo/ESP32 GitHub Wiki

Node-Red์— ๋ฐ์ดํ„ฐ ๋ณด๋‚ด๋Š” ๋ฒ•

Node-RED Dashboard ์™ธ ํŽ˜์ด์ง€ 3๊ฐœ - ๊ฐœ์ธ - Microsoftโ€‹ Edge 2023-05-12 ์˜คํ›„ 3_45_00

HTTP ์ž‘์„ฑ์— ํ•„์š”ํ•œ IP ์ฐพ๋Š” ๋ฒ• ๋ฐ ์‚ฌ์šฉ์ฒ˜

  1. ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ(cmd)์— ๋“ค์–ด๊ฐ„๋‹ค.

    20230512_160215

  2. ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ์—์„œ "ipconfig"์ด๋ผ๊ณ  ์ž…๋ ฅํ•œ๋‹ค.

    20230512_160250

  3. ๊ทธ ํ›„ ๋ฐ‘์ค„ ์นœ IP๋ฅผ ํ™•์ธํ•œ๋‹ค.

    image

  4. ์ด๋ ‡๊ฒŒ ์ฐพ์€ IP์€ ํ›—๋‚  node-red์— http๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
    (์ฐธ๊ณ ๋กœ ์ด ์‚ฌ์ง„์€ ์ง‘์—์„œ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฐ์€ ๊ฑฐ๋ผ ํ•™๊ต์—์„œ ์ฐพ์€ IP์™€ ๋‹ค๋ฆ„.)

    IP๋ž€?

    • ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ์—์„œ ์žฅ์น˜๋“ค์ด ์„œ๋กœ ์ธ์‹ํ•˜๊ณ  ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฒˆํ˜ธ์ด๋‹ค.
    • ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋œ ์žฅ์น˜๊ฐ€ ๋ผ์šฐํ„ฐ์ด๋“  ์ผ๋ฐ˜ ์„œ๋ฒ„์ด๋“ , ๋ชจ๋“  ๊ธฐ๊ณ„๋Š” ์ด ํŠน์ˆ˜ํ•œ ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
    • ์ด ๋ฒˆํ˜ธ๋ฅผ ์ด์šฉํ•ด ๋ฐœ์‹ ์ž๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ ๋ฉ”์‹œ์ง€๊ฐ€ ์ „์†ก๋˜๊ณ  ์ˆ˜์‹ ์ž๋ฅผ ํ–ฅํ•˜์—ฌ ์˜ˆ์ •๋œ ๋ชฉ์ ์ง€๋กœ ์ „๋‹ฌ๋œ๋‹ค.
    • IP์™€ IP ์ฃผ์†Œ๋Š” ๋‹ค๋ฅธ ๊ฐœ๋…์ด๋ผ๊ณ  ํ•œ๋‹ค.
    • ์ข…๋ฅ˜๋กœ๋Š” IPv4, IPv6 ๋“ฑ์ด ์žˆ์œผ๋ฉฐ, IPv4๋Š” ์˜ค๋Š˜๋‚  ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” IP ์ฃผ์†Œ์ด๋‹ค. (๋ฒ”์œ„๋Š” 32๋น„ํŠธ) ์ด๋ฅผํ…Œ๋ฉด 127.0.0.1์€ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ๋กœ ์ž๊ธฐ ์ž์‹ ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค๊ณ  ํ•œ๋‹ค. IPv6๋Š” ๋ชจ๋“  ๋‹จ๋ง์— ์ฃผ์†Œ๋ฅผ ๋ถ€์—ฌํ•˜๊ธฐ์— 32๋น„ํŠธ๋กœ๋Š” ๋ถ€์กฑํ•ด์ง์— ๋”ฐ๋ผ ์ฃผ์†Œ ๊ธธ์ด๋ฅผ 128๋น„ํŠธ๋กœ ๋Š˜๋ฆฐ ์ฃผ์†Œ์ด๋‹ค. IPv6์€ ๋ณดํ†ต ๋‘ ์ž๋ฆฌ 16์ง„์ˆ˜ ์—ฌ๋Ÿ ๊ฐœ๋ฅผ ์“ฐ๊ณ  ๊ฐ๊ฐ์„ : ๊ธฐํ˜ธ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

    (์ž์„ธํ•œ ๋‚ด์šฉ - https://ko.wikipedia.org/wiki/IP_์ฃผ์†Œ)


    HTTP(HyperText Transfer Protocol)์ด๋ž€?

    • ๋ถ„์‚ฐ ํ•˜์ดํผ๋ฏธ๋””์–ด ํ™˜๊ฒฝ์—์„œ ๋น ๋ฅด๊ณ  ๊ฐ„ํŽธํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ์ฆ‰, ํ•˜์ดํผํ…์ŠคํŠธ(Hypertext) ๋ฌธ์„œ๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ์‚ฌ์šฉ๋˜๋Š” ํ†ต์‹ ๊ทœ์•ฝ์ด๋‹ค.
    • HTTP๋Š” 80๋ฒˆ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ •์˜๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋”ฐ๋ผ์„œ HTTP ์„œ๋ฒ„๋Š” 80๋ฒˆ ํฌํŠธ์—์„œ ๋Œ€๊ธฐํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” TCP๋ฅผ ์‚ฌ์šฉํ•ด ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•œ๋‹ค.

    (์ž์„ธํ•œ ๋‚ด์šฉ - https://terms.naver.com/entry.naver?docId=2271985&cid=51207&categoryId=51207

    https://terms.naver.com/entry.naver?docId=1180001&cid=40942&categoryId=32851)


    -๊ด€๋ จ ์šฉ์–ด๋“ค ์ •๋ฆฌ-

    • ํ”„๋กœํ† ์ฝœ: ํ†ต์‹  ์‹œ์Šคํ…œ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ†ต์‹  ๊ทœ์น™.
    • ํฌํŠธ: ๋ชจ๋Ž€๊ณผ ์ปดํ“จํ„ฐ ์‚ฌ์ด์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ†ต๋กœ.
    • ๋ชจ๋Ž€: ์•„๋‚ ๋กœ๊ทธ ์‹ ํ˜ธ์˜ ํ†ต์‹ ํšŒ์„ ์ธ ์ „ํ™”์„ ์„ ์ด์šฉํ•˜์—ฌ ๋””์ง€ํ„ธ ํ†ต์‹  ์žฅ๋น„์™€ ํ†ต์‹ ํ•  ๋•Œ ๋””์ง€ํ„ธ ์‹ ํ˜ธ๋ฅผ ์•„๋‚ ๋กœ๊ทธ ์‹ ํ˜ธ๋กœ ๋ณ€ํ™˜์‹œ์ผœ ์ฃผ๋Š” ๊ฒƒ.
    • ํด๋ผ์ด์–ธํŠธ: ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„(client/server) ๊ตฌ์„ฑ์—์„œ ์‚ฌ์šฉ์ž ์ธก.
    • TCP: IP ํ”„๋กœํ† ์ฝœ ์œ„์—์„œ ์—ฐ๊ฒฐํ˜• ์„œ๋น„์Šค๋ฅผ ์ง€์›ํ•˜๋Š” ์ „์†ก๊ณ„์ธต ํ”„๋กœํ† ์ฝœ

    Node-Red์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๋ฒ•

      Node-RED ์™ธ ํŽ˜์ด์ง€ 1๊ฐœ - ๊ฐœ์ธ - Microsoftโ€‹ Edge 2023-05-13 ์˜คํ›„ 4_36_24

    1. Node-Red ํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€๊ณ  "http-in" ๋ณด๋“œ๋ฅผ ํ”Œ๋กœ์šฐ์— ๋‘”๋‹ค.

      Node-RED ์™ธ ํŽ˜์ด์ง€ 1๊ฐœ - ๊ฐœ์ธ - Microsoftโ€‹ Edge 2023-05-13 ์˜คํ›„ 4_36_49

    2. "http-in" ๋ณด๋“œ ์•ˆ์˜ URL์—์„œ Node-Red์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•  HTTP ๋ธŒ๋ผ์šฐ์ € ์ด๋ฆ„์„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์–‘์‹์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค.

      Node-RED ์™ธ ํŽ˜์ด์ง€ 1๊ฐœ - ๊ฐœ์ธ - Microsoftโ€‹ Edge 2023-05-13 ์˜คํ›„ 4_37_23

    3. ํ”Œ๋กœ์šฐ์—์„œ ๋””๋ฒ„๊ทธ ์ฐฝ์—์„œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ "debug" ๋ณด๋“œ๋ฅผ ๋‘”๋‹ค.

      Node-RED ์™ธ ํŽ˜์ด์ง€ 1๊ฐœ - ๊ฐœ์ธ - Microsoftโ€‹ Edge 2023-05-13 ์˜คํ›„ 4_38_06

    4. ์›น ๋ธŒ๋ผ์šฐ์ €์— ๋“ค์–ด๊ฐ€ ์ฃผ์†Œ ์ž…๋ ฅ ์ฐฝ์—์„œ "http://(cmb์ฐฝ์—์„œ ์ฐพ์€ IP ์ฃผ์†Œ):1880/("http-in" ๋ณด๋“œ์˜ URL์—์„œ ์ž…๋ ฅํ•œ ๋ฌธ์žฅ๊ณผ ๊ฐ™์€ ๋ฌธ์žฅ)?(๋””๋ฒ„๊ทธ ์ฐฝ์—์„œ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ)"์‹์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค.

      Node-RED ์™ธ ํŽ˜์ด์ง€ 1๊ฐœ - ๊ฐœ์ธ - Microsoftโ€‹ Edge 2023-05-13 ์˜คํ›„ 4_38_15

    5. ๋‹ค ์ž‘์„ฑํ•˜๊ณ  Enterํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋””๋ฒ„๊ทธ์ฐฝ์— ๋ฌธ์žฅ์ด ์ถœ๋ ฅ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ "dashboard"์— ํ‘œ์‹œํ•˜๋Š” ๋ฒ•

    (dashboard ์‚ฌ์šฉ๋ฒ• - https://github.com/EnglishNo/ESP32/wiki/8.-Node-Red-Start#-dashboard-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%B2%95-)

      2023-05-13

    1. dashboard ์ฐฝ์—์„œ "Layout" ์ฐฝ์— ๋“ค์–ด๊ฐ€ "+tab"๋ฒ„ํŠผํ•˜๊ณ  ๋งŒ๋“ค์–ด์ง„ tap์— ๋งˆ์šฐ์Šค๋ฅผ ๋Œ€ "+group"๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.

      Node-RED ์™ธ ํŽ˜์ด์ง€ 2๊ฐœ - ๊ฐœ์ธ - Microsoftโ€‹ Edge 2023-05-13 ์˜คํ›„ 6_01_09

    2. "function" ๋ณด๋“œ๋ฅผ ํ”Œ๋กœ์šฐ์— ๋‘” ๋‹ค์Œ "http-in" ๋ณด๋“œํ•˜๊ณ  ์—ฐ๊ฒฐํ•œ๋‹ค.

      Node-RED ์™ธ ํŽ˜์ด์ง€ 2๊ฐœ - ๊ฐœ์ธ - Microsoftโ€‹ Edge 2023-05-13 ์˜คํ›„ 6_07_25

    3. "function" ๋ณด๋“œ๋ฅผ ๋”๋ธ” ํด๋ฆญํ•ด ์ฝ”๋“œ๋ฅผ ์ด๋Ÿฐ ์‹์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค. (๋‹จ ์ „์— ์ž‘์„ฑํ•œ ๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ('?'๋’ค์— ์žˆ๋Š” ๋ฌธ์žฅ(์ˆซ์ž ์ œ์™ธ))์™€ ๋˜‘๊ฐ™์ด ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.)

      Node-RED ์™ธ ํŽ˜์ด์ง€ 2๊ฐœ - ๊ฐœ์ธ - Microsoftโ€‹ Edge 2023-05-13 ์˜คํ›„ 6_07_56

    4. ์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜๋ฉด "function" ๋ณด๋“œํ•˜๊ณ  "debug" ๋ณด๋“œ๋ฅผ ์—ฐ๊ฒฐํ•ด ๋‹ค์‹œ ์‹คํ–‰ํ•ด ๋ณด๋ฉด ๋””๋ฒ„๊ทธ ์ฐฝ์— ์ด๋Ÿฐ ์‹์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

      Node-RED ์™ธ ํŽ˜์ด์ง€ 2๊ฐœ - ๊ฐœ์ธ - Microsoftโ€‹ Edge 2023-05-13 ์˜คํ›„ 7_58_38

    5. ๊ทธ ๋‹ค์Œ์— dashboard ๋ณด๋“œ์ธ "text"ํ•˜๊ณ  "gauge" ๋ณด๋“œ๋ฅผ ํ”Œ๋กœ์šฐ์— ๋‘์–ด "function" ๋ณด๋“œํ•˜๊ณ  ์—ฐ๊ฒฐํ•œ๋‹ค.

      Node-RED ์™ธ ํŽ˜์ด์ง€ 2๊ฐœ - ๊ฐœ์ธ - Microsoftโ€‹ Edge 2023-05-13 ์˜คํ›„ 7_59_13 Node-RED ์™ธ ํŽ˜์ด์ง€ 2๊ฐœ - ๊ฐœ์ธ - Microsoftโ€‹ Edge 2023-05-13 ์˜คํ›„ 7_59_01

    6. "text", "gauge" ๋ณด๋“œ๋ฅผ ๋”๋ธ” ํด๋ฆญํ•ด "Group"์—์„œ ์‹œ์ž‘ํ•  ๋•Œ ๋งŒ๋“  ๊ทธ๋ฃน์œผ๋กœ ์„ค์ •ํ•œ๋‹ค. (์ฐธ๊ณ ๋กœ "Label"์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๋ฉด dashboard ์ž‘๋™์„ ํ™•์ธํ•  ๋•Œ ๋œจ๋Š” ๋ฌธ์žฅ์ด ๋ฐ”๋€๋‹ค.)

      Node-RED ์™ธ ํŽ˜์ด์ง€ 2๊ฐœ - ๊ฐœ์ธ - Microsoftโ€‹ Edge 2023-05-13 ์˜คํ›„ 8_07_32 Node-RED ์™ธ ํŽ˜์ด์ง€ 2๊ฐœ - ๊ฐœ์ธ - Microsoftโ€‹ Edge 2023-05-13 ์˜คํ›„ 8_08_18

    7. ๊ทธ๋ฆฌ๊ณ  "dashboard" ์ฐฝ์— ๋“ค์–ด๊ฐ€ ๊ทธ๋ฃน ์•ˆ์— ์ „ ๋‹จ๊ณ„์—์„œ ๋„ฃ์—ˆ๋˜ ๋ณด๋“œ๋“ค์ด ์ •์ƒ์ ์œผ๋กœ ๋„ฃ์–ด์ง„ ๊ฒƒ์„ ํ™•์ธํ–ˆ์œผ๋ฉด ์› ์•ˆ์˜ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด UI๊ฐ€ ๋œจ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

      Node-RED ์™ธ ํŽ˜์ด์ง€ 2๊ฐœ - ๊ฐœ์ธ - Microsoftโ€‹ Edge 2023-05-13 ์˜คํ›„ 8_11_15

    8. ๊ทธ๋Ÿฌ๋ฉด ํ•œ๋ฒˆ ๋” ์ „์— ์ž…๋ ฅํ–ˆ๋˜ ์ฃผ์†Œ ๋ธŒ๋ผ์šฐ์ €์— ๋“ค์–ด๊ฐ€ ์ฃผ์†Œ ์ž…๋ ฅ์ฐฝ์„ ํด๋ฆญํ•˜๊ณ  ์—”ํ„ฐํ‚ค๋ฅผ ๋ˆ„๋ฅด๋ฉด ๊ฐ’์ด ๋ณ€ํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ("gauge" ๋ณด๋“œ์˜ ์ตœ๋Œ“๊ฐ’, ์ตœ์†Ÿ๊ฐ’์€ "gauge" ๋ณด๋“œ๋ฅผ ๋”๋ธ” ํด๋ฆญํ•˜๊ณ  "Range"์˜ "max", "mix"์˜ ๊ฐ’์„ ์ˆ˜์ •ํ•ด์•ผ ๋ฐ”๋€๋‹ค.)

      Node-RED ์™ธ ํŽ˜์ด์ง€ 2๊ฐœ - ๊ฐœ์ธ - Microsoftโ€‹ Edge 2023-05-13 ์˜คํ›„ 8_14_49 Node-RED ์™ธ ํŽ˜์ด์ง€ 2๊ฐœ - ๊ฐœ์ธ - Microsoftโ€‹ Edge 2023-05-13 ์˜คํ›„ 8_15_05 Node-RED ์™ธ ํŽ˜์ด์ง€ 2๊ฐœ - ๊ฐœ์ธ - Microsoftโ€‹ Edge 2023-05-13 ์˜คํ›„ 8_15_18

    9. ์—ฌ๋‹ด์œผ๋กœ "http response" ๋ณด๋“œ๋ฅผ ํ”Œ๋กœ์šฐ์— ๊บผ๋‚ด์–ด "function" ๋ณด๋“œํ•˜๊ณ  ์—ฐ๊ฒฐํ•˜๊ณ  ์ƒํƒœ์ฝ”๋“œ์— "200"๋ฅผ ์ž‘์„ฑํ•˜๊ณ  Node-Red์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์—๋Ÿฌ ์ฝ”๋“œ ๋Œ€์‹  ์ž…๋ ฅํ•œ ๊ฐ’์ด ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    ์ด๋ฒˆ ์‹ค์Šต์„ ํ†ตํ•ด ์•Œ๊ฒŒ ๋œ ์ 

    • ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ†ตํ•ด Node-Red์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๋Š” ๋ฒ•์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.
    • ์ „ ์‹ค์Šต์—์„œ dashboard UI๋ฅผ ๋ณด๋Š” ๋ฒ•์„ ๋ชฐ๋ž๋Š”๋ฐ, ์ด๋ฒˆ ์‹ค์Šต์„ ํ†ตํ•ด ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

    ์ด๋ฒˆ ์‹ค์Šต์—์„œ ์–ด๋ ค์› ๋˜ ์ ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ์‹

    • "function" ๋ณด๋“œ ์•ˆ์—์„œ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ž‘๋™์‹œ์ผœ๋„ ๊ฐ’์ด ์ถœ๋ ฅ ์•ˆ๋˜๊ณ  "undefined"๊ฐ€ ์ถœ๋ ฅ๋œ ์ ์ด ์žˆ๋Š”๋ฐ, ๊ทธ๊ฒƒ์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์›น ๋ธŒ๋ผ์šฐ์ €์˜ '=', '?' ์‚ฌ์ด์— ์žˆ๋Š” ์žˆ๋Š” ๋ฌธ์žฅํ•˜๊ณ  ๋˜‘๊ฐ™์ง€ ์•Š์•„ ๊ทธ๋Ÿฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์œผ๋กœ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋˜‘๊ฐ™์ด ์ž‘์„ฑํ•˜๋‹ˆ "temperature"์ด ์—†์ด ๊ฐ’๋งŒ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์ด ์„ฑ๊ณตํ–ˆ๋‹ค.
    • dashboard์˜ UI๋ฅผ ๋ชป ๋ณธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, dashboard ์ข…๋ฅ˜์˜ ๋ณด๋“œ์˜ "Group"๋ฅผ ์„ค์ •ํ•˜๋‹ˆ UI๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.
โš ๏ธ **GitHub.com Fallback** โš ๏ธ