{"id":20,"date":"2026-03-16T15:25:46","date_gmt":"2026-03-16T15:25:46","guid":{"rendered":"https:\/\/infognu.ansan.ac.kr\/PortFolio\/202151002\/?p=20"},"modified":"2026-04-14T03:49:38","modified_gmt":"2026-04-14T03:49:38","slug":"1%ec%a3%bc%ec%b0%a8-%ec%a3%bc%ea%b0%84%eb%b3%b4%ea%b3%a0%ec%84%9c","status":"publish","type":"post","link":"https:\/\/infognu.ansan.ac.kr\/PortFolio\/202151002\/2026\/03\/16\/1%ec%a3%bc%ec%b0%a8-%ec%a3%bc%ea%b0%84%eb%b3%b4%ea%b3%a0%ec%84%9c\/","title":{"rendered":"1\uc8fc\ucc28 \uc8fc\uac04\ubcf4\uace0\uc11c"},"content":{"rendered":"\n<p class=\"has-large-font-size\"><strong>1.\ud504\ub85c\uc81d\ud2b8 \uac1c\uc694.<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\">\ud504\ub85c\uc81d\ud2b8 \uba85: <strong>FF POS<\/strong> (Fresh Food Point of Sale)<\/li>\n\n\n\n<li>\uc7a5\ub974: \uc9c0\ub2a5\ud615 \uc720\ud1b5\uae30\ud55c \uad00\ub9ac \uc2dc\uc2a4\ud15c<\/li>\n\n\n\n<li>\uae30\ub300 \ud6a8\uacfc: \ud3b8\uc758\uc810 \uc2e0\uc120\uc2dd\ud488(FF)\uc758 \uc720\ud1b5\uae30\ud55c\uc744 \ubc14\ucf54\ub4dc\uc2a4\uce94 \ud55c \ubc88\uc73c\ub85c \uc790\ub3d9 \uad00\ub9ac\ud558\uc5ec, \ud310\ub9e4 \ubd80\uc801\ud569 \uc0c1\ud488\uc758 \ub178\ucd9c\uc744 \ubc29\uc9c0\ud558\uace0 \ud3d0\uae30 \uad00\ub9ac \ud6a8\uc728\uc131\uc744 \uadf9\ub300\ud654\ud568.<\/li>\n<\/ul>\n\n\n\n<p class=\"has-large-font-size\"><strong>2.\uae08\uc8fc \uc9c4\ud589 \uc0ac\ud56d.<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\uc544\uc774\ub514\uc5b4 \ubc0f \uae30\ud68d\uc548<\/strong>\n<ul class=\"wp-block-list\">\n<li>\uae30\uc874 \ud3b8\uc758\uc810 \ubc14\ucf54\ub4dc\uc758 \ud2b9\uc131(\uc0c1\ud488\uc815\ubcf4 + \uc720\ud1b5\uae30\ud55c\uc774 \uacb0\ud569\ub41c 22\uc790\ub9ac \uc548\uc2ec \ubc14\ucf54\ub4dc)\uc744 \ubd84\uc11d\ud558\uc5ec \uc790\ub3d9 \ud30c\uc2f1 \uc2dc\uc2a4\ud15c \uae30\ud68d.<\/li>\n\n\n\n<li>\ub2e8\uc21c\ud55c \uae30\ub85d\uc744 \ub118\uc5b4, \uc11c\ubc84\uc5d0\uc11c \uc2e4\uc2dc\uac04\uc73c\ub85c \uc720\ud1b5\uae30\ud55c\uc744 \ud310\ubcc4\ud558\uace0 \uacbd\uace0\ub97c \uc8fc\ub294 &#8216;\uc2a4\ub9c8\ud2b8 \uac80\uc218&#8217; \ud504\ub85c\uc138\uc2a4 \uc124\uacc4.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\uac1c\ubc1c \ud658\uacbd \uad6c\ucd95 \ubc0f \ud2b8\ub7ec\ube14\uc288\ud305<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong>Node.js &amp; MySQL \uc5f0\ub3d9:<\/strong> \ub85c\uceec \ud658\uacbd(XAMPP) \uad6c\ucd95 \uc911 \uae30\uc874 \uc124\uce58\ub41c MySQL\uacfc\uc758 \ud3ec\ud2b8(3306) \ucda9\ub3cc \ud655\uc778 \ubc0f \uc11c\ube44\uc2a4 \uc81c\uc5b4\ub97c \ud1b5\ud574 \ud574\uacb0.<\/li>\n\n\n\n<li><strong>\ubcf4\uc548 \ucee8\ud14d\uc2a4\ud2b8 \ub300\uc751:<\/strong> \uc6f9 \ube0c\ub77c\uc6b0\uc800\uc758 \ubcf4\uc548 \uc815\ucc45\uc0c1 HTTP \ud658\uacbd\uc5d0\uc11c \uce74\uba54\ub77c \uc811\uadfc\uc774 \uc81c\ud55c\ub418\ub294 \ubb38\uc81c \ud655\uc778. \uc2dc\uc5f0\uc758 \ud3b8\uc758\uc131\uacfc \ubcf4\uc548\uc744 \uc704\ud574 \ud074\ub77c\uc6b0\ub4dc(Aiven, Render) \ubc30\ud3ec \uacb0\uc815.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>\uc9c4\ud589\ub3c4<\/strong>\n<ul class=\"wp-block-list\">\n<li><strong>\ubc31\uc5d4\ub4dc API \uac1c\ubc1c \uc644\ub8cc:<\/strong> 22\uc790\ub9ac \ubc14\ucf54\ub4dc\ub97c $Substring$ \ud558\uc5ec \uc0c1\ud488\ucf54\ub4dc\uc640 \uc720\ud1b5\uae30\ud55c($YYYY-MM-DD\\ HH$)\uc73c\ub85c \ubcc0\ud658 \ud6c4 DB\uc5d0 \uc800\uc7a5\ud558\ub294 \ub85c\uc9c1 \uad6c\ud604.<\/li>\n\n\n\n<li><strong>\ud504\ub860\ud2b8\uc5d4\ub4dc \ud504\ub85c\ud1a0\ud0c0\uc785:<\/strong> <code>html5-qrcode<\/code> \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc774\uc6a9\ud558\uc5ec \uc6f9\ucea0\/\uc2a4\ub9c8\ud2b8\ud3f0 \uce74\uba54\ub77c \uc81c\uc5b4 \ubc0f \uc2e4\uc2dc\uac04 \ubc14\ucf54\ub4dc \uc2a4\uce94 UI \uad6c\ud604.<\/li>\n\n\n\n<li><strong>\ud074\ub77c\uc6b0\ub4dc \uc774\uad00:<\/strong> Aiven\uc744 \ud1b5\ud55c \ud074\ub77c\uc6b0\ub4dc DB \uc0dd\uc131 \ubc0f \uc11c\ubc84 \uc5f0\uacb0 \ud14c\uc2a4\ud2b8 \uc9c4\ud589 \uc911.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"has-large-font-size\"><strong>3.\ud5a5\ud6c4 \ubaa9\ud45c \ubc0f \uace0\ub824\uc0ac\ud56d.<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ubaa9\ud45c<\/strong>\n<ul class=\"wp-block-list\">\n<li>\ud074\ub77c\uc6b0\ub4dc \ubc30\ud3ec(Render)\ub97c \uc644\ub8cc\ud558\uc5ec HTTPS \ud658\uacbd\uc5d0\uc11c \uc2e4\uc81c \uc2a4\ub9c8\ud2b8\ud3f0 \uce74\uba54\ub77c\ub85c \uc2e4\uc2dc\uac04 \uc2a4\uce94 \ubc0f DB \uc800\uc7a5 \ud14c\uc2a4\ud2b8.<\/li>\n\n\n\n<li>\ud604\uc7ac \uc2dc\uac04\uacfc \uc720\ud1b5\uae30\ud55c \ub370\uc774\ud130\ub97c \ube44\uad50\ud558\uc5ec &#8216;\ud310\ub9e4 \uac00\ub2a5\/\ubd88\uac00&#8217;\ub97c \ud310\ubcc4\ud558\ub294 \uacbd\uace0 \ub85c\uc9c1 \uc644\uc131.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p class=\"has-large-font-size\"><strong>4.\uae30\uc220 \uc2a4\ud0dd.<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>\ud1b5\ud569 \uac1c\ubc1c \ud658\uacbd:<\/strong> Visual Studio Code, XAMPP Control Panel<\/li>\n\n\n\n<li><strong>FrontEnd:<\/strong> HTML5, CSS3, JavaScript (html5-qrcode lib)<\/li>\n\n\n\n<li><strong>BackEnd:<\/strong> Node.js (Express)<\/li>\n\n\n\n<li><strong>Database:<\/strong> MySQL (Local: MariaDB, Cloud: Aiven)<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>1.\ud504\ub85c\uc81d\ud2b8 \uac1c\uc694. 2.\uae08\uc8fc \uc9c4\ud589 \uc0ac\ud56d. 3.\ud5a5\ud6c4 \ubaa9\ud45c \ubc0f \uace0\ub824\uc0ac\ud56d. 4.\uae30\uc220 \uc2a4\ud0dd.<\/p>\n","protected":false},"author":67,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-20","post","type-post","status-publish","format-standard","hentry","category-3"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/infognu.ansan.ac.kr\/PortFolio\/202151002\/wp-json\/wp\/v2\/posts\/20","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/infognu.ansan.ac.kr\/PortFolio\/202151002\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/infognu.ansan.ac.kr\/PortFolio\/202151002\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/infognu.ansan.ac.kr\/PortFolio\/202151002\/wp-json\/wp\/v2\/users\/67"}],"replies":[{"embeddable":true,"href":"https:\/\/infognu.ansan.ac.kr\/PortFolio\/202151002\/wp-json\/wp\/v2\/comments?post=20"}],"version-history":[{"count":2,"href":"https:\/\/infognu.ansan.ac.kr\/PortFolio\/202151002\/wp-json\/wp\/v2\/posts\/20\/revisions"}],"predecessor-version":[{"id":55,"href":"https:\/\/infognu.ansan.ac.kr\/PortFolio\/202151002\/wp-json\/wp\/v2\/posts\/20\/revisions\/55"}],"wp:attachment":[{"href":"https:\/\/infognu.ansan.ac.kr\/PortFolio\/202151002\/wp-json\/wp\/v2\/media?parent=20"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/infognu.ansan.ac.kr\/PortFolio\/202151002\/wp-json\/wp\/v2\/categories?post=20"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/infognu.ansan.ac.kr\/PortFolio\/202151002\/wp-json\/wp\/v2\/tags?post=20"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}