{"id":102,"date":"2026-10-14T03:39:24","date_gmt":"2026-10-14T03:39:24","guid":{"rendered":"https:\/\/dingdonghome.duckdns.org\/?p=102"},"modified":"2026-10-31T07:44:23","modified_gmt":"2026-10-31T07:44:23","slug":"%f0%9f%94%94-%eb%94%a9%eb%8f%99dingdong-%ed%94%84%eb%a1%9c%ec%a0%9d%ed%8a%b8-%ec%86%8c%ea%b0%9c","status":"publish","type":"post","link":"https:\/\/dingdong.goodday.ing\/?p=102","title":{"rendered":"\ud83d\udd14 &#8216;\ub529\ub3d9(DingDong)&#8217; \ud504\ub85c\uc81d\ud2b8 \ubaa9\ucc28"},"content":{"rendered":"\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<h3 class=\"wp-block-heading\">\ud83d\udcc2 Part 1. \uae30\ud68d &amp; \uc544\ud0a4\ud14d\ucc98 \uc124\uacc4<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2705 <strong>[\uac1c\ubc1c\uc77c\uc9c0 #01 | \uae30\ud68d] <a href=\"https:\/\/dinggo.duckdns.org\/?p=20\" data-type=\"post\" data-id=\"20\">\uc720\uadf8\ub9b0 NAS\uc640 Flutter\ub85c \ub9cc\ub4dc\ub294 \ub098\ub9cc\uc758 \ud504\ub77c\uc774\ube57 \uba54\uc2e0\uc800 &#8216;\ub529\ub3d9&#8217; (\uae30\ud68d &amp; \uc544\ud0a4\ud14d\ucc98 \ud3b8)<\/a><\/strong><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcc2 Part 2. \ud648\uc11c\ubc84 &amp; \uc778\ud504\ub77c \uad6c\ucd95<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2705 <strong>[\uac1c\ubc1c\uc77c\uc9c0 #02 | \uc778\ud504\ub77c] <a href=\"https:\/\/dinggo.duckdns.org\/?p=52\" data-type=\"post\" data-id=\"52\">Mac\uc5d0\uc11c Flutter &amp; VS Code \uac1c\ubc1c \ud658\uacbd \uad6c\ucd95\ud558\uae30 (\ucd08\ubcf4\uc790 \uc644\ubcbd \uac00\uc774\ub4dc)<\/a><\/strong><\/li>\n\n\n\n<li>\u2705 <strong>[\uac1c\ubc1c\uc77c\uc9c0 #03 | \uc778\ud504\ub77c] <a href=\"https:\/\/dinggo.duckdns.org\/?p=68\" data-type=\"post\" data-id=\"68\">\uc720\uadf8\ub9b0 NAS\uc5d0 Caddy &amp; PostgreSQL \uad6c\ucd95\ud558\uae30<\/a><\/strong><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcc2 Part 3. \ubc31\uc5d4\ub4dc(API) &amp; \uc2e4\uc2dc\uac04 \ud1b5\ud654 \uc11c\ubc84<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2705 <strong>[\uac1c\ubc1c\uc77c\uc9c0 #04 | \ubc31\uc5d4\ub4dc] <a href=\"https:\/\/dinggo.duckdns.org\/?p=117\" data-type=\"post\" data-id=\"117\">\uc720\uadf8\ub9b0 NAS\uc5d0 Go(Golang) \ucd08\uacbd\ub7c9 \uba54\uc2e0\uc800 \ubc31\uc5d4\ub4dc \uc11c\ubc84 \uad6c\ucd95\ud558\uae30<\/a><\/strong><\/li>\n\n\n\n<li>\u2705 <strong>[\uac1c\ubc1c\uc77c\uc9c0 #05 | \ubc31\uc5d4\ub4dc] <a href=\"https:\/\/dinggo.duckdns.org\/?p=136\" data-type=\"post\" data-id=\"136\">\uba54\uc2e0\uc800 DB \uc2a4\ud0a4\ub9c8 \uc124\uacc4 &amp; Go sqlc \uc5f0\ub3d9\ud558\uae30<\/a><\/strong><\/li>\n\n\n\n<li>\u2705 <strong>[\uac1c\ubc1c\uc77c\uc9c0 #06 | \ubc31\uc5d4\ub4dc] <a href=\"https:\/\/dinggo.duckdns.org\/?p=191\" data-type=\"post\" data-id=\"191\">\ucd08\ub300\ucf54\ub4dc \ud68c\uc6d0\uac00\uc785, Argon2id \uc554\ud638\ud654 &amp; \ub2e4\uc911 \uae30\uae30 JWT \uc778\uc99d \uad6c\ud604\ud558\uae30<\/a><\/strong><\/li>\n\n\n\n<li>\u23f3 <strong>[#08 | \ubc31\uc5d4\ub4dc]<\/strong> \uc5f0\ub77d\ucc98 HMAC \ud574\uc2dc \uce5c\uad6c \ub9e4\uce6d &amp; 1:1 \/ \uadf8\ub8f9 \ucc44\ud305\ubc29 \uc0dd\uc131 API <em>(\uc608\uc815)<\/em><\/li>\n\n\n\n<li>\u23f3 <strong>[#10 | \ubc31\uc5d4\ub4dc]<\/strong> Gorilla WebSocket \uc2e4\uc2dc\uac04 \ucc44\ud305 \ud5c8\ube0c &amp; \ub2e8\uc870 \uc99d\uac00 \uc21c\ubc88(<code>seq<\/code>) \ub3d9\uae30\ud654 <em>(\uc608\uc815)<\/em><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcc2 Part 4. \ubaa8\ubc14\uc77c \uc571 \uac1c\ubc1c (iOS \/ Android)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2705 <strong>[\uac1c\ubc1c\uc77c\uc9c0 #07 | \ud074\ub77c\uc774\uc5b8\ud2b8] <a href=\"https:\/\/dinggo.duckdns.org\/?p=200\" data-type=\"post\" data-id=\"200\">Flutter \uc571 \uccab \uc5f0\ub3d9: Secure Storage \ud1a0\ud070 \uad00\ub9ac, Dio \uc790\ub3d9 \uac31\uc2e0 &amp; \ub85c\uadf8\uc778 \ud654\uba74 \uad6c\ud604<\/a><\/strong><\/li>\n\n\n\n<li>\u23f3 <strong>[#09 | \ud074\ub77c\uc774\uc5b8\ud2b8]<\/strong> \uce5c\uad6c \ubaa9\ub85d \ub3d9\uae30\ud654 &amp; \ucc44\ud305\ubc29 \ubaa9\ub85d UI \uc5f0\ub3d9\ud558\uae30 <em>(\uc608\uc815)<\/em><\/li>\n\n\n\n<li>\u23f3 <strong>[#11 | \ud074\ub77c\uc774\uc5b8\ud2b8]<\/strong> \uc2e4\uc2dc\uac04 WebSocket \ucc44\ud305\ubc29 \ud654\uba74 &amp; \ub04a\uae40 \uc5c6\ub294 \ub300\ud654 \ub3d9\uae30\ud654 \uad6c\ud604 <em>(\uc608\uc815)<\/em><\/li>\n\n\n\n<li>\u23f3 <strong>[#12 | \uc571-\uacf5\ud1b5]<\/strong> 300MB \ub300\uc6a9\ub7c9 \uc6d0\ubcf8 \uc0ac\uc9c4\/\uc601\uc0c1 \uc804\uc1a1 \ubc0f \ubbf8\ub514\uc5b4 \ucc98\ub9ac <em>(\uc608\uc815)<\/em><\/li>\n\n\n\n<li>\u23f3 <strong>[#13 | \uc571-\ud478\uc2dc]<\/strong> \uc571\uc774 \uaebc\uc838 \uc788\uc5b4\ub3c4 \uc6b8\ub9ac\ub294 \ud478\uc2dc \uc54c\ub9bc(FCM\/APNs) \ubc0f \ubcf4\uc774\uc2a4\ud1a1 \uc5f0\ub3d9 <em>(\uc608\uc815)<\/em><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\ud83d\udcc2 Part 5. \uc815\uc2dd \ubc30\ud3ec &amp; \uc6b4\uc601<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u23f3 <strong>[#14 | \ubc30\ud3ec]<\/strong> \ubc31\uc5d4\ub4dc \uc11c\ubc84 \ub3c4\ucee4 \uc774\ubbf8\uc9c0 \ube4c\ub4dc \ubc0f \uc720\uadf8\ub9b0 NAS \uc815\uc2dd \ubc30\ud3ec <em>(\uc608\uc815)<\/em><\/li>\n\n\n\n<li>\u23f3 <strong>[#15 | \uc6b4\uc601]<\/strong> DB \uc790\ub3d9 \ubc31\uc5c5 \uc2a4\ud06c\ub9bd\ud2b8 \uad6c\uc131 \ubc0f \uac00\uc871 \uc2e4\uc0ac\uc6a9 \ud6c4\uae30 <em>(\uc608\uc815)<\/em><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-102","post","type-post","status-publish","format-standard","hentry","category-1"],"_links":{"self":[{"href":"https:\/\/dingdong.goodday.ing\/index.php?rest_route=\/wp\/v2\/posts\/102","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dingdong.goodday.ing\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dingdong.goodday.ing\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dingdong.goodday.ing\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dingdong.goodday.ing\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=102"}],"version-history":[{"count":2,"href":"https:\/\/dingdong.goodday.ing\/index.php?rest_route=\/wp\/v2\/posts\/102\/revisions"}],"predecessor-version":[{"id":109,"href":"https:\/\/dingdong.goodday.ing\/index.php?rest_route=\/wp\/v2\/posts\/102\/revisions\/109"}],"wp:attachment":[{"href":"https:\/\/dingdong.goodday.ing\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dingdong.goodday.ing\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dingdong.goodday.ing\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}