INSERT INTO `g5_write_tech` VALUES (526,-526,'',526,0,0,'','','html1','[ETC] 윈도우10,11 시스템 폰트 변경','<div class=\"item-page\" itemscope=\"\" itemtype=\"https://schema.org/Article\" style=\"font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;\">\r\n   <div class=\"page-header\" style=\"padding-bottom: 5px; margin: 2px 0px 10px; border-bottom: 1px solid rgb(238, 238, 238);\">\r\n      <h2 itemprop=\"headline\" style=\"margin: 12px 0px; font-family: &quot;Open Sans&quot;, sans-serif; line-height: 24px; color: inherit; text-rendering: optimizelegibility; font-size: 22px; overflow-wrap: break-word;\">Advanced System Font Changer</h2>\r\n      </div>\r\n   <div itemprop=\"articleBody\">\r\n      <p style=\"margin-bottom: 9px; overflow-wrap: break-word;\">The Advanced System Font Changer software enables you to set the system font in Windows 10/11. It allows you to set system fonts displayed by Windows 10/11 in a detailed way. It significantly improves the user experience in terms of how text is displayed. Profiles enable you to efficiently change the display using hotkeys.</p>\r\n      <p style=\"margin-bottom: 9px; overflow-wrap: break-word;\">&nbsp;</p>\r\n      <p style=\"margin-bottom: 9px; overflow-wrap: break-word;\"><img src=\"https://www.wintools.info/images/asfc/advanced-system-font-changer.jpg\" alt=\"advanced system font changer\" width=\"416\" style=\"max-width: 100%; height: auto; vertical-align: middle; border: 0px; display: block; margin-left: auto; margin-right: auto;\" /></p>\r\n      <p style=\"margin-bottom: 9px; overflow-wrap: break-word;\">&nbsp;</p>\r\n      <p style=\"margin-bottom: 9px; overflow-wrap: break-word;\">The software is part of the system font changer software family. Terms of use and every other information related to the software family also apply to this software.</p>\r\n      <p style=\"margin-bottom: 9px; overflow-wrap: break-word;\">Advantages of Advanced System Font Changer compared to other items in the family:</p>\r\n      <div class=\"custom visible-desktop\" style=\"display: inherit !important;\"><br />\r\n         <p align=\"center\" style=\"margin-bottom: 9px; overflow-wrap: break-word;\"><ins class=\"adsbygoogle\" data-ad-client=\"ca-pub-0254102477248050\" data-ad-slot=\"8701547575\" data-adsbygoogle-status=\"done\" data-ad-status=\"filled\" style=\"display: inline-block; width: 336px; height: 280px;\"><ins id=\"aswift_1_expand\" tabindex=\"0\" title=\"Advertisement\" aria-label=\"Advertisement\" style=\"border: none; height: 280px; width: 336px; margin: 0px; padding: 0px; position: relative; visibility: visible; background-color: transparent; display: inline-table;\"><ins id=\"aswift_1_anchor\" style=\"border: none; height: 280px; width: 336px; margin: 0px; padding: 0px; position: relative; visibility: visible; background-color: transparent; display: block;\"><iframe id=\"aswift_1\" name=\"aswift_1\" sandbox=\"allow-forms allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-top-navigation-by-user-activation\" width=\"336\" height=\"280\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" vspace=\"0\" hspace=\"0\" allowtransparency=\"true\" scrolling=\"no\" src=\"https://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-0254102477248050&amp;output=html&amp;h=280&amp;slotname=8701547575&amp;adk=2960616749&amp;adf=3974706487&amp;pi=t.ma~as.8701547575&amp;w=336&amp;lmt=1645287374&amp;psa=0&amp;format=336x280&amp;url=https%3A%2F%2Fwww.wintools.info%2Findex.php%2Fadvanced-system-font-changer&amp;flash=0&amp;wgl=1&amp;uach=WyJXaW5kb3dzIiwiMTAuMC4wIiwieDg2IiwiIiwiOTguMC40NzU4LjEwMiIsW10sbnVsbCxudWxsLCI2NCIsW1siIE5vdCBBO0JyYW5kIiwiOTkuMC4wLjAiXSxbIkNocm9taXVtIiwiOTguMC40NzU4LjEwMiJdLFsiR29vZ2xlIENocm9tZSIsIjk4LjAuNDc1OC4xMDIiXV1d&amp;dt=1645287377852&amp;bpp=2&amp;bdt=1906&amp;idt=214&amp;shv=r20220216&amp;mjsv=m202202090102&amp;ptt=9&amp;saldr=aa&amp;abxe=1&amp;prev_fmts=940x280&amp;correlator=7686355475181&amp;frm=20&amp;pv=1&amp;ga_vid=241024374.1645287378&amp;ga_sid=1645287378&amp;ga_hid=706401818&amp;ga_fc=1&amp;u_tz=540&amp;u_his=1&amp;u_h=1440&amp;u_w=2560&amp;u_ah=1400&amp;u_aw=2560&amp;u_cd=24&amp;u_sd=1&amp;dmc=8&amp;adx=1224&amp;ady=1107&amp;biw=2543&amp;bih=1297&amp;scr_x=0&amp;scr_y=0&amp;eid=42531397%2C44750774%2C31064037%2C21067496&amp;oid=2&amp;pvsid=3830466406839484&amp;pem=936&amp;tmod=1951600911&amp;uas=0&amp;nvt=1&amp;ref=https%3A%2F%2Fwww.youtube.com%2F&amp;eae=0&amp;fc=896&amp;brdim=0%2C0%2C0%2C0%2C2560%2C0%2C2560%2C1400%2C2560%2C1297&amp;vis=1&amp;rsz=%7C%7CeE%7C&amp;abl=CS&amp;pfx=0&amp;fu=0&amp;bc=31&amp;ifi=2&amp;uci=a!2&amp;fsb=1&amp;xpc=60sKUfwOma&amp;p=https%3A//www.wintools.info&amp;dtd=218\" data-google-container-id=\"a!2\" data-google-query-id=\"CLL3tY2VjPYCFT3sTAIdqvEAMQ\" data-load-complete=\"true\" style=\"max-width: 100%; left: 0px; position: absolute; top: 0px; border-width: 0px; border-style: initial; width: 336px; height: 280px;\"></iframe></ins></ins></ins></p>\r\n         <br /></div>\r\n      <ul style=\"padding: 0px; margin: 0px 0px 9px 25px;\">\r\n         <li style=\"line-height: 18px; overflow-wrap: break-word;\">Detailed settings options</li>\r\n         <li style=\"line-height: 18px; overflow-wrap: break-word;\">Each system font can be of a different size and style</li>\r\n         <li style=\"line-height: 18px; overflow-wrap: break-word;\">Profiles can be managed</li>\r\n         <li style=\"line-height: 18px; overflow-wrap: break-word;\">Profiles can be controlled using hotkeys</li>\r\n         </ul>\r\n      <p style=\"margin-bottom: 9px; overflow-wrap: break-word;\">&nbsp;</p>\r\n      <p style=\"margin-bottom: 9px; overflow-wrap: break-word;\"><img src=\"https://www.wintools.info/images/asfc/advanced-system-font-changer-dark.jpg\" alt=\"advanced system font changer dark\" width=\"416\" style=\"max-width: 100%; height: auto; vertical-align: middle; border: 0px; display: block; margin-left: auto; margin-right: auto;\" /></p>\r\n      <p style=\"margin-bottom: 9px; overflow-wrap: break-word;\">&nbsp;</p>\r\n      </div>\r\n   </div>\r\n<div class=\"clearfix\" style=\"padding-top: 50px; font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 18px; background-color: #ffffff;\">&nbsp;</div>\r\n<div class=\"moduletable box2\" style=\"border: 2px solid rgb(204, 204, 204); padding: 5px 10px 0px; border-radius: 8px; font-size: 15px; font-weight: bold; background-color: #f7f7f9; margin: 0px 0px 20px; font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif;\">\r\n   <div class=\"custom box2\">\r\n      <p style=\"margin-bottom: 9px; overflow-wrap: break-word; text-align: center;\">Version: 2.1.0.10 | Date: 2021-08-29 |&nbsp;<a href=\"https://www.wintools.info/Download/advchange.exe\" style=\"color: #8e1d1a; text-decoration-line: none;\" target=\"_blank\">Download</a>&nbsp;| MD5: 804215dc240ed0e20935342d6988cf10</p>\r\n      </div>\r\n   </div>','https://www.wintools.info/index.php/advanced-system-font-changer','https://fonts.google.com/?subset=korean',2,2,5,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-02-20 01:19:38',2,'2022-02-20 01:19:38','192.168.219.101','','','','','','','','','','','',''),(527,-527,'',527,0,0,'','','html1','[Arduino] ESP32 시리얼 통신','<p style=\"padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><span style=\"font-size: 18pt;\">ESP32 , 아두이노로 시리얼 통신</span></p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><b>아두이노&nbsp; ESP32 통신 함수 참고</b></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><a href=\"https://esp32io.com/ko/reference/esp32-serial\" target=\"_blank\" class=\"con_link\" style=\"text-decoration-line: none; overflow-wrap: break-word;\">https://esp32io.com/ko/reference/esp32-serial</a></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">괜찮음</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">예제도 있음</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><b>참고</b></p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">ESP32 Serial 통신 라이브러리, software Serial</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><span style=\"color: #ef007c;\">아래 참고 사이트의&nbsp;</span><span style=\"color: #ef007c;\">내용을 그대로 정리해놓는다.</span></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><a href=\"https://postpop.tistory.com/35\" target=\"_blank\" class=\"con_link\" style=\"text-decoration-line: none; overflow-wrap: break-word;\">https://postpop.tistory.com/35</a></p>\r\n<div align=\"\" style=\"line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff; margin-left: 40px;\">\r\n   <div class=\"og\" style=\"display: inline-block; width: 513px; margin-top: 7px; text-align: left; font-family: Dotum; box-shadow: rgb(249, 249, 249) 0px 1px 0px; line-height: 1.5;\">\r\n      <div class=\"box\" style=\"display: inline-block; overflow: hidden; position: relative; width: 513px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; vertical-align: top; line-height: 1.5;\">\r\n         <div class=\"txt\" style=\"overflow: hidden; width: 471px; height: 134px; padding: 0px 20px; border: 1px solid rgb(226, 226, 226); background: rgb(252, 252, 252); cursor: pointer; line-height: 1.5;\"><a href=\"https://postpop.tistory.com/35\" target=\"_blank\" style=\"text-decoration-line: none;\">\r\n               <div class=\"tit\" style=\"overflow: hidden; max-height: 40px; margin-top: 17px; font-weight: bold; font-size: 14px; color: #222222; word-break: keep-all; overflow-wrap: break-word; line-height: 1.5;\">ESP32 Serial 통신 라이브러리, software Serial?</div>\r\n               <div class=\"dsc\" style=\"overflow: hidden; max-height: 34px; margin: 8px 0px 3px; font-size: 11px; color: #4f4f4f; letter-spacing: -1px; word-break: keep-all; overflow-wrap: break-word; line-height: 1.5;\">ESP32 DevKit ESP-WROOM-32 core를 장착하고 듀얼 CPU, Clock Speed가&nbsp;240 Mhz인 아두이노 IDE 개발환경에서 사용할 수 있...</div>\r\n               <div class=\"cp\" style=\"overflow: hidden; white-space: nowrap; text-overflow: ellipsis; font-size: 11px; color: #9197a3; overflow-wrap: normal; line-height: 1.5;\">postpop.tistory.com</div>\r\n               </a></div>\r\n         </div>\r\n      </div>\r\n   <div align=\"left\" style=\"line-height: 1.5;\"><img src=\"https://ssl.pstatic.net/static/blog/blank.gif\" class=\"m20 egjs-visible\" alt=\"\" style=\"border: none; display: block; width: 1px; height: 20px;\" /></div>\r\n   </div>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">ESP32는&nbsp;<span style=\"color: #ef007c;\">하드웨어 시리얼 3개를 제공</span></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">소프트웨어 시리얼 라이브러리 대신 하드웨어 시리얼 라이브러리를 통해 시리얼 관련 설정</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">소프트웨어 시리얼 라이브러리가 없다</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">include &lt;HardwareSerial.h&gt; // 하드웨어 시리얼 라이브러리</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">시리얼 통신: Serial (UART0), Serial1 (UART1), Serial2 (UART2) 3개의 하드웨어 시리얼을 제공</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><span style=\"color: #0075c8;\">시리얼 통신에 할당된 기본 핀번호</span></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">GPIO01 TX0 - HardwareSerial (0), 핀번호 변경 불가&nbsp;&nbsp;</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">GPIO03 RX0 - HardwareSerial (0), 핀번호 변경 불가&nbsp; &nbsp;&nbsp;</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">GPIO10 TX1 - HardwareSerial (1), FLASH 연결에 사용, 핀번호 변경 가능</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">GPIO09 RX1 - HardwareSerial (1), FLASH 연결에 사용, 핀번호 변경 가능&nbsp;</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">GPIO17 TX2 - HardwareSerial (2), 핀번호 변경 가능&nbsp; &nbsp;</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">GPIO16 RX2 - HardwareSerial (2), 핀번호 변경 가능</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">하지만 GPIO&nbsp;<span style=\"color: #ef007c;\">6, 7, 8, 9, 10, 11</span>&nbsp;(the integrated SPI flash)은 플레시 메모리연결에 할당되어 있어서&nbsp;<span style=\"color: #ef007c;\">해당&nbsp;</span><span style=\"color: #ef007c;\">핀을 사용할 수 없다</span></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">하드웨어 Serial1의 TX1과 RX1에 할당된 GPIO 핀의 번호는 10번과 9번이다. 이 핀을 이용해서는 Serial1을 사용할 수 없다. 그러므로 Serial1을 위한 TX1과 RX1에 플래시 메모리에 사용되지 않은 핀을 할당해주어야 한다. 이를 위한 규칙이 있는데 아래와 같다.&nbsp;</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><span style=\"color: #ff0000;\"><b>1.</b></span>&nbsp;시리얼 장치의 이름으로 Serial, Serial1, Serial2를 사용하고 기본 할당핀을 사용 할 경우 setup() 함수에서만 시작하면 된다.</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; &nbsp;<span style=\"color: #7820b9;\"><b>Serial.begin(115200);</b></span>&nbsp; &nbsp;// UART0 -&gt; usb 연결과 공유,&nbsp;<span style=\"color: #ef007c;\">핀번호 변경 불가</span></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; &nbsp;Serial1.begin(115200); // 통신에 할당된 기본핀이 플래시 메모리에 할당된 GPIO 10번과 9번이므로&nbsp;<span style=\"color: #ef007c;\">사용불가</span></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp;&nbsp;<b><span style=\"color: #7820b9;\">&nbsp;</span><span style=\"color: #7820b9;\">Serial2.begin(115200);</span></b>&nbsp;// UART2&nbsp;</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><b><span style=\"color: #ff0000;\">2.</span></b>&nbsp;시리얼 장치의 이름을 Serial, Serial1, Serial2이 아닌 사용자 이름을 사용할 경우 장치명을 선언해주고 setup() 함수에서 시작시 핀번호를 포함하는 통신 규칙을 설정해주어야 한다.&nbsp;</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; HardwareSerial mySerial(1);&nbsp; // 장치명 선언(시리얼 번호)</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp;&nbsp;<span style=\"color: #7820b9;\"><b>HardwareSerial dfSerial(2);</b></span>&nbsp; // 장치명 선언(시리얼 번호)</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; mySerial.begin(115200,SERIAL_8N1, 4, 2);&nbsp; // (통신속도, UART모드, RX핀번호, TX핀번호) - 핀번호 지정가능</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp;&nbsp;<span style=\"color: #7820b9;\"><b>dfSerial.begin(115200, SERIAL_8N1, 16, 17);</b></span>&nbsp; // 핀번호는 기본으로 할당된 번호도 사용할 수 있다.&nbsp;</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">하드웨어 시리얼 3개를 동시에 사용하기 위해서는 Serial1을 사용자 장치명으로 선언해주고 시작시 규칙을 설정 해주어야 하는데, 이 때에는 사용상 주의가 필요하다.</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">스케치 업로드시 발생할 수 있는 \"A fatal error occurred: Timed out waiting for packet header\" 에러</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">상기에러는 하드웨어 \"Serial1\"을 사용하기 위해 gpio 6 ~ 11번을 제외한 핀번호를 할당하고 사용할 때 전원이 들어가 있는 연결된 장치의 통신용 핀이 스케치 업로드시 연결되어 있을경우 발생 한다. 기본 할당된 시리얼 통신용 핀에서는 연결장치가 연결되고 전원이 들어가 있는 상태에서도 오류없이 스케치 업로드가 잘된다.&nbsp;</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">mySerial.begin(115200,SERIAL_8N1, 4, 2); // \"Serial1\"을 시리얼 통신용 사용자 핀번호(4, 2)로 지정하고 전원이 인가된 연결장치의 통신선이 연결되어 있다. -&gt; 스케치 업로드시 오류 발생</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">해결 방법</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">1. 꼭 필요한 경우가 아니면 하드웨어&nbsp;<span style=\"color: #ef007c;\">시리얼 1번을 사용하지 않는다.&nbsp;&nbsp;</span></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><span style=\"color: #000000;\">2. 시리얼 1번을 사용자 핀번호 지정으로 사용할 경우 연결장치의 전</span><span style=\"color: #000000;\">원</span>을 끄거나 시리얼 통신의 연결을 제거하고 스케치를 업로드 해본다.&nbsp;</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">참고 2</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><a href=\"https://arduinoblog.tistory.com/6\" target=\"_blank\" class=\"con_link\" style=\"text-decoration-line: none; overflow-wrap: break-word;\">https://arduinoblog.tistory.com/6</a></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">UART(Serial) 통신</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; ESP32에는 Serial 통신 핀이 3가지가 있지만&nbsp;</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; &nbsp; 그중 한 가지는 업로드때 사용해서 못 쓰고,&nbsp;</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; &nbsp; 다른 한가지는 쓸 수 없는 핀에 연결되어 있어서 다른 방법으로 핀을 바꿔줘야 쓸 수 있어서&nbsp;</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; &nbsp;&nbsp;<span style=\"color: #ef007c;\">쉽게 쓸 수 있는 Serial 통신 핀은 한 가지밖에 없다</span>.</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; Serial</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; &nbsp; RX : RXD</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; &nbsp; TX : TXD</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; Serial 1 *이거 쓰고 싶으면 핀을 바꿔야 한다.</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; &nbsp; RX : SD2</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; &nbsp; TX : SD3</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; Serial2</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; &nbsp; RX : 16번</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; &nbsp; TX : 17번</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; *컴퓨터에서 소스코드를 업로드할 때 RXD, TXD를 이용해서 통신하고,&nbsp;</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; &nbsp;SD2, SD3는 ESP32 Flash 메모리와 연결되어있어서 RXD, TXD, SD2, SD3를 이용하면 업로드 오류가 날 수도 있어서</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp;&nbsp;&nbsp;<span style=\"color: #ef007c;\"><b>ESP32에서는 보통 Serial2를 이용해야 한다</b></span>.</p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp; *ESP32에서는 SoftwareSerial을 지원하지 않음</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><b><span style=\"color: #3a32c3; font-size: 12pt;\">예제</span></b></p>\r\n<p style=\"margin-left: 40px; padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<div style=\"line-height: 19px; text-align: justify; color: #d4d4d4; background-color: #1e1e1e; font-family: Consolas, &quot;Courier New&quot;, monospace; font-size: 14px; white-space: pre;\">\r\n   <div style=\"line-height: 1.5;\"><span style=\"color: #c586c0;\">#include</span><span style=\"color: #569cd6;\">&nbsp;</span><span style=\"color: #ce9178;\">&lt;HardwareSerial.h&gt;</span></div>\r\n   <div style=\"line-height: 1.5;\">HardwareSerial&nbsp;<span style=\"color: #dcdcaa;\">mySerial</span>(<span style=\"color: #b5cea8;\">2</span>);&nbsp;<span style=\"color: #6a9955;\">//3개의&nbsp;시리얼&nbsp;중&nbsp;2번&nbsp;채널을&nbsp;사용</span></div>\r\n   <br />\r\n   <div style=\"line-height: 1.5;\"><span style=\"color: #569cd6;\">void</span>&nbsp;<span style=\"color: #dcdcaa;\">setup</span>()&nbsp;{</div>\r\n   <div style=\"line-height: 1.5;\">&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color: #9cdcfe;\">Serial</span>.<span style=\"color: #dcdcaa;\">begin</span>(<span style=\"color: #b5cea8;\">115200</span>);&nbsp;<span style=\"color: #6a9955;\">//기존의&nbsp;기본&nbsp;시리얼</span></div>\r\n   <div style=\"line-height: 1.5;\">&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color: #9cdcfe;\">mySerial</span>.<span style=\"color: #dcdcaa;\">begin</span>(<span style=\"color: #b5cea8;\">115200</span>,&nbsp;SERIAL_8N1,&nbsp;<span style=\"color: #b5cea8;\">12</span>,&nbsp;<span style=\"color: #b5cea8;\">13</span>);&nbsp;<span style=\"color: #6a9955;\">//추가로&nbsp;사용할&nbsp;시리얼.&nbsp;RX:12&nbsp;/&nbsp;TX:13번&nbsp;핀&nbsp;사용</span></div>\r\n   <div style=\"line-height: 1.5;\">}</div>\r\n   <br />\r\n   <div style=\"line-height: 1.5;\"><span style=\"color: #569cd6;\">void</span>&nbsp;<span style=\"color: #dcdcaa;\">loop</span>()&nbsp;{</div>\r\n   <div style=\"line-height: 1.5;\">&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color: #c586c0;\">if</span>(<span style=\"color: #9cdcfe;\">mySerial</span>.<span style=\"color: #dcdcaa;\">available</span>()&nbsp;&gt;&nbsp;<span style=\"color: #b5cea8;\">0</span>){</div>\r\n   <div style=\"line-height: 1.5;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;command&nbsp;=&nbsp;<span style=\"color: #9cdcfe;\">mySerial</span>.<span style=\"color: #dcdcaa;\">readStringUntil</span>(<span style=\"color: #ce9178;\">\'</span><span style=\"color: #d7ba7d;\">\\n</span><span style=\"color: #ce9178;\">\'</span>);&nbsp;<span style=\"color: #6a9955;\">//추가&nbsp;시리얼의&nbsp;값을&nbsp;수신하여&nbsp;String으로&nbsp;저장</span></div>\r\n   <div style=\"line-height: 1.5;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style=\"color: #9cdcfe;\">Serial</span>.<span style=\"color: #dcdcaa;\">println</span>(command);&nbsp;<span style=\"color: #6a9955;\">//기본&nbsp;시리얼에&nbsp;추가&nbsp;시리얼&nbsp;내용을&nbsp;출력</span></div>\r\n   <div style=\"line-height: 1.5;\">&nbsp;&nbsp;&nbsp;&nbsp;}</div>\r\n   <div style=\"line-height: 1.5;\">}</div>\r\n   </div>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><br /></p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #615652; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp;</p>\r\n<p>\r\n   <p>&nbsp;</p>\r\n   </p>\r\n<div class=\"autosourcing-stub-extra\" style=\"line-height: 1.5; zoom: 1; opacity: 1;\">\r\n   <p style=\"margin: 11px 0px 7px; padding: 0px; line-height: 1.5; font-size: 12px; font-family: Dotum; font-style: normal; font-weight: normal;\"><strong style=\"padding: 0px 7px 0px 0px;\">[출처]</strong><span>&nbsp;</span><a href=\"https://blog.naver.com/heennavi1004/222316035038\" target=\"_blank\" style=\"text-decoration: none;\">[ESP32, Serial] ESP32 시리얼 통신 (1)</a><span style=\"padding: 0px 7px 0px 5px;\">|</span><strong style=\"padding: 0px 7px 0px 0px;\">작성자</strong><span>&nbsp;</span><a href=\"https://blog.naver.com/heennavi1004\" target=\"_blank\" style=\"text-decoration: none;\">초초</a></p>\r\n   </div>','https://blog.naver.com/PostView.naver?blogId=heennavi1004&logNo=222316035038&parentCategoryNo=&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView','',4,0,7,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-02-23 11:27:49',0,'2022-02-23 11:27:49','112.222.138.204','','','','','','','','','','','',''),(528,-528,'',528,0,0,'','','html1','[JAVA] 이클립스 \"Must declare a named package because...\" 에러 해결하기','<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center;\"><font color=\"#333333\" face=\"나눔고딕, NanumGothic, 맑은 고딕, malgun gothic, 돋움, Dotum, Apple SD Gothic Neo, Helvetica, sans-serif\" style=\"text-size-adjust: none; margin: 0px; padding: 0px; box-sizing: border-box;\"><span style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; font-size: 16px;\">분명 다른 사람과 똩같이 했는데 옆에 X표가 뜨면서 코드 실행이 안된다...</span></font></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center;\"><span style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; color: #333333; font-family: 나눔고딕, NanumGothic, &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;, 돋움, Dotum, &quot;Apple SD Gothic Neo&quot;, Helvetica, sans-serif; font-size: 16px;\">Must decla</span><span style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; color: #333333; font-family: 나눔고딕, NanumGothic, &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;, 돋움, Dotum, &quot;Apple SD Gothic Neo&quot;, Helvetica, sans-serif; font-size: 16px;\"></span><span style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; color: #333333; font-family: 나눔고딕, NanumGothic, &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;, 돋움, Dotum, &quot;Apple SD Gothic Neo&quot;, Helvetica, sans-serif; font-size: 16px;\">re a named package because this compliation unit is associated to the named module&nbsp;</span></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center;\"><font color=\"#333333\" face=\"나눔고딕, NanumGothic, 맑은 고딕, malgun gothic, 돋움, Dotum, Apple SD Gothic Neo, Helvetica, sans-serif\" style=\"text-size-adjust: none; margin: 0px; padding: 0px; box-sizing: border-box;\"><span style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; font-size: 16px;\">X표에 마우스를 갖다대니 패키지 이름이 설정이 안되었다고 나와&nbsp;</span></font></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center;\"><font color=\"#333333\" face=\"나눔고딕, NanumGothic, 맑은 고딕, malgun gothic, 돋움, Dotum, Apple SD Gothic Neo, Helvetica, sans-serif\" style=\"text-size-adjust: none; margin: 0px; padding: 0px; box-sizing: border-box;\"><span style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; font-size: 16px;\">패키지를 수동으로 코드에 넣어보니 문제 없이 되긴 했다.</span></font></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center;\"><span style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; color: #333333; font-family: 나눔고딕, NanumGothic, &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;, 돋움, Dotum, &quot;Apple SD Gothic Neo&quot;, Helvetica, sans-serif; font-size: 16px;\">이러한 상황이 또 발생할 수 도 있기 때문에 다른사람과 환경을 똩같이 하기 위해 해결방법을 찾아 보았다</span></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><span class=\"imageblock\" style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; max-width: 100%; position: relative; display: inline-block; width: 820px; height: auto;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/9910F2455D775D071D\" filename=\"이클립스에러1(Must decalare a named).png\" filemime=\"image/jpeg\" \"\"=\"\" style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; width: 820px; height: auto; max-width: 100%;\" /></span></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><br style=\"text-size-adjust: none; margin: 0px; padding: 0px; box-sizing: border-box;\" /></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><br style=\"text-size-adjust: none; margin: 0px; padding: 0px; box-sizing: border-box;\" /></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><br style=\"text-size-adjust: none; margin: 0px; padding: 0px; box-sizing: border-box;\" /></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><span style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; color: #333333; font-family: 나눔고딕, NanumGothic, &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;, 돋움, Dotum, &quot;Apple SD Gothic Neo&quot;, Helvetica, sans-serif; font-size: 16px;\"><br style=\"text-size-adjust: none; margin: 0px; padding: 0px; box-sizing: border-box;\" /></span></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><span style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; color: #333333; font-family: 나눔고딕, NanumGothic, &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;, 돋움, Dotum, &quot;Apple SD Gothic Neo&quot;, Helvetica, sans-serif; font-size: 16px;\">최근에 JDK를 최신버전으로 설치한 사람은&nbsp;</span></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><span style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; color: #333333; font-family: 나눔고딕, NanumGothic, &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;, 돋움, Dotum, &quot;Apple SD Gothic Neo&quot;, Helvetica, sans-serif; font-size: 16px;\">Use an excution environment JRE 부분이 스샷과 다를 것이다.</span></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><span style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; color: #333333; font-family: 나눔고딕, NanumGothic, &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;, 돋움, Dotum, &quot;Apple SD Gothic Neo&quot;, Helvetica, sans-serif; font-size: 16px;\">보통 책이나 강의는 JDK 8버전을 사용하기 때문에&nbsp;</span></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><font color=\"#333333\" face=\"나눔고딕, NanumGothic, 맑은 고딕, malgun gothic, 돋움, Dotum, Apple SD Gothic Neo, Helvetica, sans-serif\" style=\"text-size-adjust: none; margin: 0px; padding: 0px; box-sizing: border-box;\"><span style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; font-size: 16px;\">밑 스샷과 똩같이&nbsp;<b style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box;\">JavaSE-1.8</b>으로 바꿔주면 된다.</span></font></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><span class=\"imageblock\" style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; max-width: 100%; position: relative; display: inline-block; width: 736px; height: auto;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/992DA5485D775E4F30\" filename=\"이클립스 설치하기13.png\" filemime=\"image/jpeg\" \"\"=\"\" style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; width: 736px; height: auto; max-width: 100%;\" /></span></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><br style=\"text-size-adjust: none; margin: 0px; padding: 0px; box-sizing: border-box;\" /></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><br style=\"text-size-adjust: none; margin: 0px; padding: 0px; box-sizing: border-box;\" /></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><br style=\"text-size-adjust: none; margin: 0px; padding: 0px; box-sizing: border-box;\" /></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><br style=\"text-size-adjust: none; margin: 0px; padding: 0px; box-sizing: border-box;\" /></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><font color=\"#333333\" face=\"나눔고딕, NanumGothic, 맑은 고딕, malgun gothic, 돋움, Dotum, Apple SD Gothic Neo, Helvetica, sans-serif\" style=\"text-size-adjust: none; margin: 0px; padding: 0px; box-sizing: border-box;\"><span style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; font-size: 16px;\">만약 JavaSE-1.8 이 보이지 않는다면 8버전을 새로 설치해줘야 한다.</span></font></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><span style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; font-size: 12pt;\"><a href=\"https://www.oracle.com/technetwork/java/javase/downloads/index.html\" style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; transition: all 0.5s ease 0s; color: #646464; text-decoration-line: none; cursor: pointer;\" target=\"_blank\">https://www.oracle.com/technetwork/java/javase/downloads/index.html</a></span></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><span style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; color: #333333; font-family: 나눔고딕, NanumGothic, &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;, 돋움, Dotum, &quot;Apple SD Gothic Neo&quot;, Helvetica, sans-serif; font-size: 16px;\">위 링크로 접속 후 스크롤을 내려서&nbsp;<b style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box;\">Java SE 8u221</b>&nbsp;버전의&nbsp;<b style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box;\">JDK DOWNLOAD</b>를 클릭</span></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><span class=\"imageblock\" style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; max-width: 100%; position: relative; display: inline-block; width: 566px; height: auto;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/9986254A5D775FEA1B\" filename=\"이클립스(Error reading module).png\" filemime=\"image/jpeg\" \"\"=\"\" style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; width: 566px; height: auto; max-width: 100%;\" /></span></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><br style=\"text-size-adjust: none; margin: 0px; padding: 0px; box-sizing: border-box;\" /></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><br style=\"text-size-adjust: none; margin: 0px; padding: 0px; box-sizing: border-box;\" /></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><br style=\"text-size-adjust: none; margin: 0px; padding: 0px; box-sizing: border-box;\" /></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><span style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; color: #333333; font-family: 나눔고딕, NanumGothic, &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;, 돋움, Dotum, &quot;Apple SD Gothic Neo&quot;, Helvetica, sans-serif; font-size: 16px;\">※쭉 Next 누르면서 설치하다 보면 이러한 창이 나오는데</span></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><font color=\"#333333\" face=\"나눔고딕, NanumGothic, 맑은 고딕, malgun gothic, 돋움, Dotum, Apple SD Gothic Neo, Helvetica, sans-serif\" style=\"text-size-adjust: none; margin: 0px; padding: 0px; box-sizing: border-box;\"><span style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; font-size: 16px;\"><b style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box;\">설치 경로는 한글,띄어쓰기가 없도록 해야 한다.</b></span></font></p>\r\n<p style=\"text-size-adjust: none; padding: 0px; border: 0px; vertical-align: top; box-sizing: border-box; font-size: 15px; line-height: 1.7em; color: #646464; font-family: &quot;Malgun Gothic&quot;, Raleway, sans-serif; background-color: #ffffff; text-align: center; clear: none; float: none;\"><span class=\"imageblock\" style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; max-width: 100%; position: relative; display: inline-block; width: 500px; height: auto;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/990BCB425D7760A92A\" filename=\"이클립스7(Error reading module).png\" filemime=\"image/jpeg\" \"\"=\"\" style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; width: 500px; height: auto; max-width: 100%;\" /></span></p>\r\n<p><span class=\"imageblock\" style=\"text-size-adjust: none; margin: 0px; padding: 0px; border: 0px; font-weight: inherit; vertical-align: top; box-sizing: border-box; max-width: 100%; position: relative; display: inline-block; width: 500px; height: auto;\"><br /></span></p>','https://hynoo.tistory.com/8','',1,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-02-24 09:58:44',0,'2022-02-24 09:58:44','112.222.138.204','','','','','','','','','','','',''),(529,-529,'',529,0,0,'','','html1','[JAVA][WindowBuilder] 자바 이클립스에 윈도우빌더추가하기 / 자바 스윙 윈도우빌더','<div class=\"se-component se-text se-l-default\" id=\"SE-62ae7618-efec-4cd7-ad30-ea27668562a2\" style=\"margin: 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-B9E4D019-35DC-41E9-A2B4-790E7031C731\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-nanumbarungothic   \" id=\"SE-827B700B-F92D-4E0B-8771-520255F04238\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; font-family: se-nanumbarungothic, &quot;\\\\B098눔바른고딕&quot;, nanumbarungothic, sans-serif, Meiryo; vertical-align: baseline;\">여기저기 서치하다가 윈도우빌더(Window Builder)라는게 있다는 걸 알게 되었다.</span></p>\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-44EF5B80-6FE1-4F49-B872-582F1367857E\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-nanumbarungothic   \" id=\"SE-6B1EAB0F-48A5-48C6-A163-D87F62D71B9C\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; font-family: se-nanumbarungothic, &quot;\\\\B098눔바른고딕&quot;, nanumbarungothic, sans-serif, Meiryo; vertical-align: baseline;\">이클립스 내에서 코드만이 아닌 직접 GUI 화면을 놓고 작업을 할 수 있는 것 같길래</span></p>\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-11B9BD3D-73FE-4526-B39B-4BF6E56040A7\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-nanumbarungothic   \" id=\"SE-4F8D0F08-62FD-4D11-8A6D-1A7CF2735B53\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; font-family: se-nanumbarungothic, &quot;\\\\B098눔바른고딕&quot;, nanumbarungothic, sans-serif, Meiryo; vertical-align: baseline;\">유용할 것 같아서 설치하고 추가하기까지 해보았다.</span></p>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-image se-l-default\" id=\"SE-96f7d424-6fc7-4f4a-a8a0-bcc73257d353\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content se-component-content-normal\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-image se-l-default se-section-align-\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; max-width: 300px;\">\r\n         <div class=\"se-module se-module-image\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\"><a class=\"se-module-image-link __se_image_link __se_link\" data-linktype=\"img\" data-linkdata=\"{&quot;id&quot; : &quot;SE-96f7d424-6fc7-4f4a-a8a0-bcc73257d353&quot;, &quot;src&quot; : &quot;https://postfiles.pstatic.net/MjAyMDA4MDhfODUg/MDAxNTk2ODE1NDY2MDAw.YJHwbivvQoK4WrSUNgCbQLkBZNAX8X3uBJ0b5irpbgYg.U5e2c4o_msV4gLbaCd9h38k6J4TPegP4hDX4AkVFe-8g.PNG.wusemr2/image.png&quot;, &quot;linkUse&quot; : &quot;false&quot;, &quot;link&quot; : &quot;&quot;}\" area-hidden=\"true\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; display: block;\"><img src=\"https://postfiles.pstatic.net/MjAyMDA4MDhfODUg/MDAxNTk2ODE1NDY2MDAw.YJHwbivvQoK4WrSUNgCbQLkBZNAX8X3uBJ0b5irpbgYg.U5e2c4o_msV4gLbaCd9h38k6J4TPegP4hDX4AkVFe-8g.PNG.wusemr2/image.png?type=w966\" data-lazy-src=\"\" data-width=\"300\" data-height=\"253\" alt=\"\" class=\"se-image-resource egjs-visible\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: top; position: relative; width: 300px;\" /></a></div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-text se-l-default\" id=\"SE-c8b533db-0c80-4695-b2f4-311bc36a164e\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-2D87D811-6122-4929-A9AB-E120C27368C5\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-nanumbarungothic   \" id=\"SE-81236DC9-0801-48FA-A0CB-C8BF040B27BE\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; font-family: se-nanumbarungothic, &quot;\\\\B098눔바른고딕&quot;, nanumbarungothic, sans-serif, Meiryo; vertical-align: baseline;\">우선 이클립스(Eclipse)를 켜준다.</span></p>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-image se-l-default\" id=\"SE-0d53a26a-0e32-4a37-83d4-454ddb8b7e57\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content se-component-content-normal\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-image se-l-default se-section-align-\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; max-width: 501px;\">\r\n         <div class=\"se-module se-module-image\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\"><a class=\"se-module-image-link __se_image_link __se_link\" data-linktype=\"img\" data-linkdata=\"{&quot;id&quot; : &quot;SE-0d53a26a-0e32-4a37-83d4-454ddb8b7e57&quot;, &quot;src&quot; : &quot;https://postfiles.pstatic.net/MjAyMDA4MDdfMjI3/MDAxNTk2ODA3NTQ0NDcw.nNgjB5olZGE_o6NcaoSTQ7yjXp_yA0MjLkXtmwf_-aAg.SctPefUn8_b_5SrOIK679uT4ijfn3UhoU5LdTmkWqOEg.PNG.wusemr2/image.png&quot;, &quot;linkUse&quot; : &quot;false&quot;, &quot;link&quot; : &quot;&quot;}\" area-hidden=\"true\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; display: block;\"><img src=\"https://postfiles.pstatic.net/MjAyMDA4MDdfMjI3/MDAxNTk2ODA3NTQ0NDcw.nNgjB5olZGE_o6NcaoSTQ7yjXp_yA0MjLkXtmwf_-aAg.SctPefUn8_b_5SrOIK679uT4ijfn3UhoU5LdTmkWqOEg.PNG.wusemr2/image.png?type=w966\" data-lazy-src=\"\" data-width=\"501\" data-height=\"501\" alt=\"\" class=\"se-image-resource egjs-visible\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: top; position: relative; width: 501px;\" /></a></div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-text se-l-default\" id=\"SE-e2fc2edf-89dd-4aa9-99ff-abd0a5872ead\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-44655BE6-CAB7-4DD6-82C4-06904618E7F1\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-nanumbarungothic   \" id=\"SE-7B945C67-F08B-4BD5-B741-7F468713BB2F\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; font-family: se-nanumbarungothic, &quot;\\\\B098눔바른고딕&quot;, nanumbarungothic, sans-serif, Meiryo; vertical-align: baseline;\">이클립스 상단에 Help - Install New Software를 눌러준다.</span></p>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-image se-l-default\" id=\"SE-66441aa7-dcb0-4318-8b17-ad0fde54a0c0\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content se-component-content-fit\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-image se-l-default se-section-align-\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-module se-module-image\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\"><a class=\"se-module-image-link __se_image_link __se_link\" data-linktype=\"img\" data-linkdata=\"{&quot;id&quot; : &quot;SE-66441aa7-dcb0-4318-8b17-ad0fde54a0c0&quot;, &quot;src&quot; : &quot;https://postfiles.pstatic.net/MjAyMDA4MDdfMTIw/MDAxNTk2ODExNTM2MjM2.bWCeUQGk1ZDHH4iwpPg4lwpZVBGx-n8xExszMhFPIykg.l3CKpNZsPE2J99-bsXhIX50loAI2JnQpduqF4PZBqv0g.PNG.wusemr2/image.png&quot;, &quot;linkUse&quot; : &quot;false&quot;, &quot;link&quot; : &quot;&quot;}\" area-hidden=\"true\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; display: block;\"><img src=\"https://postfiles.pstatic.net/MjAyMDA4MDdfMTIw/MDAxNTk2ODExNTM2MjM2.bWCeUQGk1ZDHH4iwpPg4lwpZVBGx-n8xExszMhFPIykg.l3CKpNZsPE2J99-bsXhIX50loAI2JnQpduqF4PZBqv0g.PNG.wusemr2/image.png?type=w966\" data-lazy-src=\"\" data-width=\"693\" data-height=\"630\" alt=\"\" class=\"se-image-resource egjs-visible\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: top; position: relative; width: 886px;\" /></a></div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-text se-l-default\" id=\"SE-4b0be8fd-dbfb-4ee3-8175-1ac6c0bdeb95\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-2B37A388-3FC3-4B00-A742-0AB68E297DD6\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-nanumbarungothic   \" id=\"SE-4F7A8903-8347-4B39-8077-48BA02F3A08B\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; font-family: se-nanumbarungothic, &quot;\\\\B098눔바른고딕&quot;, nanumbarungothic, sans-serif, Meiryo; vertical-align: baseline;\">Name 에는 WindowBuilder,</span></p>\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-75DE8BD9-B719-4E24-B2F5-7FB84E50067F\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-nanumbarungothic   \" id=\"SE-1B7D7082-5C83-445B-9B16-10478A22460B\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; font-family: se-nanumbarungothic, &quot;\\\\B098눔바른고딕&quot;, nanumbarungothic, sans-serif, Meiryo; vertical-align: baseline;\">Location 에는 </span><span class=\"se-fs- se-ff-   \" id=\"SE-30A68665-BE38-4435-8837-F14142C9B6DC\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; vertical-align: baseline;\"><a href=\"https://archive.eclipse.org/windowbuilder/WB/integration/4.10/\" class=\"se-link\" target=\"_blank\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; text-decoration-skip-ink: none; word-break: break-all; color: #608cba !important;\">https://archive.eclipse.org/windowbuilder/WB/integration/4.10/</a></span><span class=\"se-fs- se-ff-   \" id=\"SE-A40D71ED-BAFF-4856-9508-EADD7448B02A\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; vertical-align: baseline;\"> 를 넣어주고 ADD 클릭.</span></p>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-imageStrip se-imageStrip2 se-l-default\" id=\"SE-4d182042-a846-48ab-878e-c5dbb599bbf9\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content se-component-content-extend\" style=\"margin: 0px auto; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-imageStrip se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-imageStrip-container se-imageStrip-col-2\" style=\"margin: 0px; padding: 0px 5px 0px 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: inherit; font-family: inherit; vertical-align: baseline; position: relative; white-space: nowrap;\">\r\n            <div class=\"se-module se-module-image\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: top; display: inline-block; box-sizing: border-box; width: 480.5px;\"><a class=\"se-module-image-link __se_image_link __se_link\" data-linktype=\"img\" data-linkdata=\"{&quot;id&quot; : &quot;SE-514fda5a-a0e0-43bc-9bad-619965d6dfa5&quot;, &quot;src&quot; : &quot;https://postfiles.pstatic.net/MjAyMDA4MDdfMjUw/MDAxNTk2ODExOTAxMjg0.vnlyeVQ0s45ClQl5LL_JFTDjkJ9s1Yd-DbYgrCPt7NQg.tS-luqa2dRPk4Z7fyGsRSojcmIRaXHmN5VJ6_A3zvwsg.PNG.wusemr2/image.png&quot;, &quot;linkUse&quot; : &quot;false&quot;, &quot;link&quot; : &quot;&quot;}\" area-hidden=\"true\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; display: block;\"><img src=\"https://postfiles.pstatic.net/MjAyMDA4MDdfMjUw/MDAxNTk2ODExOTAxMjg0.vnlyeVQ0s45ClQl5LL_JFTDjkJ9s1Yd-DbYgrCPt7NQg.tS-luqa2dRPk4Z7fyGsRSojcmIRaXHmN5VJ6_A3zvwsg.PNG.wusemr2/image.png?type=w966\" data-lazy-src=\"\" data-width=\"693\" data-height=\"630\" alt=\"\" class=\"se-image-resource egjs-visible\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: top; position: relative; width: 480.5px;\" /></a></div>\r\n            &nbsp;\r\n            <div class=\"se-module se-module-image\" style=\"margin: 0px 0px 0px 5px; padding: 0px; border: 0px; font: inherit; vertical-align: top; display: inline-block; box-sizing: border-box; width: 480.5px;\"><a class=\"se-module-image-link __se_image_link __se_link\" data-linktype=\"img\" data-linkdata=\"{&quot;id&quot; : &quot;SE-5bab6f0f-46d1-47e8-b215-040c4772c280&quot;, &quot;src&quot; : &quot;https://postfiles.pstatic.net/MjAyMDA4MDdfMTc0/MDAxNTk2ODEyMTY4OTcw.ctZTNApWG_3htNbiGoHFZD7r-j1qF38HUUSQ10-rNw8g.o999vy7Fsi5orZlKWKDbREiTl6uUtCMeEr9MnzYPHP4g.PNG.wusemr2/image.png&quot;, &quot;linkUse&quot; : &quot;false&quot;, &quot;link&quot; : &quot;&quot;}\" area-hidden=\"true\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; display: block;\"><img src=\"https://postfiles.pstatic.net/MjAyMDA4MDdfMTc0/MDAxNTk2ODEyMTY4OTcw.ctZTNApWG_3htNbiGoHFZD7r-j1qF38HUUSQ10-rNw8g.o999vy7Fsi5orZlKWKDbREiTl6uUtCMeEr9MnzYPHP4g.PNG.wusemr2/image.png?type=w966\" data-lazy-src=\"\" data-width=\"693\" data-height=\"630\" alt=\"\" class=\"se-image-resource egjs-visible\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: top; position: relative; width: 480.5px;\" /></a></div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-text se-l-default\" id=\"SE-2be4f1c8-f65f-4e74-81dc-58be026bc481\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-910F5F83-DF9B-480A-B012-1F82E3AD9ABD\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-   \" id=\"SE-E54B2570-358A-4748-A3B4-B0941B1E8455\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; vertical-align: baseline;\">WindowBuilder의 모든 체크박스를 선택해주고 Next.</span></p>\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-682C914E-06EA-4037-9B93-159F322C86C1\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-   \" id=\"SE-871C4590-4993-462D-B173-C436FD92A996\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; vertical-align: baseline;\">동의해주고 Finish 누르면 Eclipse 하단 오른쪽에 조그마하게 설치중임을 알려준다.</span></p>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-image se-l-default\" id=\"SE-785926a8-a9da-4495-853e-192748f4edc8\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content se-component-content-normal\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-image se-l-default se-section-align-\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; max-width: 341px;\">\r\n         <div class=\"se-module se-module-image\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\"><a class=\"se-module-image-link __se_image_link __se_link\" data-linktype=\"img\" data-linkdata=\"{&quot;id&quot; : &quot;SE-785926a8-a9da-4495-853e-192748f4edc8&quot;, &quot;src&quot; : &quot;https://postfiles.pstatic.net/MjAyMDA4MDhfMjUy/MDAxNTk2ODEyNDA1NzA0.LPMePFQmmU0jWAanex1fLxdjtFu6eT18O5G8KTZQBIUg.QS6qVLefzYkZltA9JtqsNIq-r_klZuyfqbpyw-nLgx4g.PNG.wusemr2/image.png&quot;, &quot;linkUse&quot; : &quot;false&quot;, &quot;link&quot; : &quot;&quot;}\" area-hidden=\"true\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; display: block;\"><img src=\"https://postfiles.pstatic.net/MjAyMDA4MDhfMjUy/MDAxNTk2ODEyNDA1NzA0.LPMePFQmmU0jWAanex1fLxdjtFu6eT18O5G8KTZQBIUg.QS6qVLefzYkZltA9JtqsNIq-r_klZuyfqbpyw-nLgx4g.PNG.wusemr2/image.png?type=w966\" data-lazy-src=\"\" data-width=\"341\" data-height=\"46\" alt=\"\" class=\"se-image-resource egjs-visible\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: top; position: relative; width: 341px;\" /></a></div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-text se-l-default\" id=\"SE-67a4cec7-ed3d-4f07-912c-c85684158445\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-086844CB-E03A-4453-AAA9-647673DBBED1\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-   \" id=\"SE-B8F4DE6B-CD31-4FDE-AF93-041701BED69F\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; vertical-align: baseline;\">설치가 끝나면 이클립스를 재시작해주어야한다.(Restart 창이 뜸. Restart 눌러주면 된다.)</span></p>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-image se-l-default\" id=\"SE-583d8c65-5f3e-4e80-9893-f11bc508477d\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content se-component-content-fit\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-image se-l-default se-section-align-\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-module se-module-image\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\"><a class=\"se-module-image-link __se_image_link __se_link\" data-linktype=\"img\" data-linkdata=\"{&quot;id&quot; : &quot;SE-583d8c65-5f3e-4e80-9893-f11bc508477d&quot;, &quot;src&quot; : &quot;https://postfiles.pstatic.net/MjAyMDA4MDhfMjgg/MDAxNTk2ODEzMTAyMjg4.piMu9vsmpfgcNCDfWUumJ7aeAwLUZRp7GmWnM7V06J8g.Mj3bdlQFE5S9d7S_3CpZkFXwAT7BKEj8PJi67x2WU6sg.PNG.wusemr2/image.png&quot;, &quot;linkUse&quot; : &quot;false&quot;, &quot;link&quot; : &quot;&quot;}\" area-hidden=\"true\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; display: block;\"><img src=\"https://postfiles.pstatic.net/MjAyMDA4MDhfMjgg/MDAxNTk2ODEzMTAyMjg4.piMu9vsmpfgcNCDfWUumJ7aeAwLUZRp7GmWnM7V06J8g.Mj3bdlQFE5S9d7S_3CpZkFXwAT7BKEj8PJi67x2WU6sg.PNG.wusemr2/image.png?type=w966\" data-lazy-src=\"\" data-width=\"693\" data-height=\"367\" alt=\"\" class=\"se-image-resource egjs-visible\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: top; position: relative; width: 886px;\" /></a></div>\r\n         <div class=\"se-module se-module-text se-caption\" style=\"margin: 10px auto 20px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; max-width: 886px;\">\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-28713FBB-B9A1-4A8B-AD39-73E9683F1442\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.5; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap; text-align: center;\"><span class=\"se-fs- se-ff-   \" id=\"SE-4C2490D0-F03D-4919-9CFA-CAD50899956A\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 13px; line-height: inherit; vertical-align: baseline; color: #555555;\">보통 프로젝트 이름의 맨 앞글자는 대문자로 한다..............실수^^</span></p>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-text se-l-default\" id=\"SE-ade14c74-6535-4402-b91b-2c5c1b04e56f\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-2908BD3B-6CF3-43CA-80CB-20964586C098\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-   \" id=\"SE-3333B30F-5371-412A-8D8A-EAEC9B64A462\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; vertical-align: baseline;\">미리 만들어 둔 window 프로젝트 파일에</span></p>\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-63288617-DD4E-41D0-AAD7-197ED1DBC9CB\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-   \" id=\"SE-DC7A0268-651E-43BC-AE9D-E762261E648B\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; vertical-align: baseline;\">New - Other - WindowBuilder - Swing Designer - Application Window 경로로 생성한다.</span></p>\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-162C1829-2EB8-470F-A322-917C4CFD4408\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-   \" id=\"SE-96268643-B28F-481B-A538-DAC4AA074DA1\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; vertical-align: baseline;\">테스트로 해볼거니까 이름은 Testing으로 하고 Finish를 눌러주었다.</span></p>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-image se-l-default\" id=\"SE-819b8b7e-de14-4867-bba4-195d86b13eff\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content se-component-content-normal\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-image se-l-default se-section-align-\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; max-width: 672px;\">\r\n         <div class=\"se-module se-module-image\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\"><a class=\"se-module-image-link __se_image_link __se_link\" data-linktype=\"img\" data-linkdata=\"{&quot;id&quot; : &quot;SE-819b8b7e-de14-4867-bba4-195d86b13eff&quot;, &quot;src&quot; : &quot;https://postfiles.pstatic.net/MjAyMDA4MDhfMjU4/MDAxNTk2ODEzMjM5ODc5.E8YoRah6iQ8-c-zFakA-4b0K5VeN37P7BjK32UDLcfgg.CB6Z2vT6qi39lx7DfAmWfiFZcPCJz_HgtDSF6_390uIg.PNG.wusemr2/image.png&quot;, &quot;linkUse&quot; : &quot;false&quot;, &quot;link&quot; : &quot;&quot;}\" area-hidden=\"true\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; display: block;\"><img src=\"https://postfiles.pstatic.net/MjAyMDA4MDhfMjU4/MDAxNTk2ODEzMjM5ODc5.E8YoRah6iQ8-c-zFakA-4b0K5VeN37P7BjK32UDLcfgg.CB6Z2vT6qi39lx7DfAmWfiFZcPCJz_HgtDSF6_390uIg.PNG.wusemr2/image.png?type=w966\" data-lazy-src=\"\" data-width=\"672\" data-height=\"731\" alt=\"\" class=\"se-image-resource egjs-visible\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: top; position: relative; width: 672px;\" /></a></div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-text se-l-default\" id=\"SE-66de2829-467d-4ae3-aa98-1eca2d6b2b49\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-EDD3604A-B34A-4044-8B6C-3F0A22452516\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-   \" id=\"SE-53B5BA93-E40E-44B2-97E0-9C3A357BA051\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; vertical-align: baseline;\">이렇게 소스가 자동으로 작성되어있는 것을 확인할 수 있다.</span></p>\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-08FA69C1-D895-466B-B5D2-582984121A4F\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-   \" id=\"SE-2F953B1C-48B3-4A21-A2B0-2EED51EB409C\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; vertical-align: baseline;\">옆에 Design을 클릭해주면 GUI 작업을 할 수 있는 창이 뜬다.</span></p>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-image se-l-default\" id=\"SE-99443ba2-2b8e-468e-a53a-e21dae748d45\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content se-component-content-fit\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-image se-l-default se-section-align-\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-module se-module-image\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\"><a class=\"se-module-image-link __se_image_link __se_link\" data-linktype=\"img\" data-linkdata=\"{&quot;id&quot; : &quot;SE-99443ba2-2b8e-468e-a53a-e21dae748d45&quot;, &quot;src&quot; : &quot;https://postfiles.pstatic.net/MjAyMDA4MDhfMTE1/MDAxNTk2ODEzNzk2MjE1.Nj8l9jhBqxYfuiGcRt7WAKdlfaltFJsCgZins5dBZx4g.ueZZZMQiVAXZ4CyUPTqpkDnltPU5AUCxShVlka5ga4Ag.PNG.wusemr2/image.png&quot;, &quot;linkUse&quot; : &quot;false&quot;, &quot;link&quot; : &quot;&quot;}\" area-hidden=\"true\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; display: block;\"><img src=\"https://postfiles.pstatic.net/MjAyMDA4MDhfMTE1/MDAxNTk2ODEzNzk2MjE1.Nj8l9jhBqxYfuiGcRt7WAKdlfaltFJsCgZins5dBZx4g.ueZZZMQiVAXZ4CyUPTqpkDnltPU5AUCxShVlka5ga4Ag.PNG.wusemr2/image.png?type=w966\" data-lazy-src=\"\" data-width=\"693\" data-height=\"385\" alt=\"\" class=\"se-image-resource egjs-visible\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: top; position: relative; width: 886px;\" /></a></div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-text se-l-default\" id=\"SE-0d039e3f-85d6-43d7-a357-219020d07b55\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-A2EF9FA4-54EA-47CA-BEB6-3FF1388238B5\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-   \" id=\"SE-086CCE0F-1821-40E2-9F86-A5F2EFA7EC1F\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; vertical-align: baseline;\">여기서 직접 각 기능들을 창 안에 넣어주면 된다.</span></p>\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-FBABB791-DE91-4596-93CD-BC32C06937B4\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-   \" id=\"SE-A9E3BE85-FF42-43E3-B50F-17C654CCF9AF\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; vertical-align: baseline;\">나는 맨 위에 버튼이랑 가운데에 텍스트를 넣을 공간을 만들어주었다.</span></p>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-image se-l-default\" id=\"SE-6d5b7ae7-1d64-44da-9495-9e2e53d0d226\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content se-component-content-normal\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-image se-l-default se-section-align-\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; max-width: 326px;\">\r\n         <div class=\"se-module se-module-image\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\"><a class=\"se-module-image-link __se_image_link __se_link\" data-linktype=\"img\" data-linkdata=\"{&quot;id&quot; : &quot;SE-6d5b7ae7-1d64-44da-9495-9e2e53d0d226&quot;, &quot;src&quot; : &quot;https://postfiles.pstatic.net/MjAyMDA4MDhfMTg5/MDAxNTk2ODE0MzcxNzE4.RTf2cMKg73vkTWFVe3z35EjMy38jUSXp3_Vr0JX85cIg.AI_tXkRy7_OnVK2c8fwQjZT29Bd2H9Av8H_dbRU-_A0g.PNG.wusemr2/image.png&quot;, &quot;linkUse&quot; : &quot;false&quot;, &quot;link&quot; : &quot;&quot;}\" area-hidden=\"true\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; display: block;\"><img src=\"https://postfiles.pstatic.net/MjAyMDA4MDhfMTg5/MDAxNTk2ODE0MzcxNzE4.RTf2cMKg73vkTWFVe3z35EjMy38jUSXp3_Vr0JX85cIg.AI_tXkRy7_OnVK2c8fwQjZT29Bd2H9Av8H_dbRU-_A0g.PNG.wusemr2/image.png?type=w966\" data-lazy-src=\"\" data-width=\"326\" data-height=\"271\" alt=\"\" class=\"se-image-resource egjs-visible\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: top; position: relative; width: 326px;\" /></a></div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-text se-l-default\" id=\"SE-ef937335-21e0-4a30-a43c-4972dd677bee\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-F28BA152-EE17-4D86-B865-3BDCE154990F\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-   \" id=\"SE-03F976FA-9EF9-41AE-8272-BF637F37186C\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; vertical-align: baseline;\">저 버튼을 눌러주면 어떻게 뜨는지 미리 확인할 수 있다.</span></p>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-imageStrip se-imageStrip2 se-l-default\" id=\"SE-e8a1b13d-77bf-4ee9-b42a-18b02067627e\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content se-component-content-extend\" style=\"margin: 0px auto; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-imageStrip se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-imageStrip-container se-imageStrip-col-2\" style=\"margin: 0px; padding: 0px 5px 0px 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: inherit; font-family: inherit; vertical-align: baseline; position: relative; white-space: nowrap;\">\r\n            <div class=\"se-module se-module-image\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: top; display: inline-block; box-sizing: border-box; width: 480.5px;\"><a class=\"se-module-image-link __se_image_link __se_link\" data-linktype=\"img\" data-linkdata=\"{&quot;id&quot; : &quot;SE-62d31540-8e48-413e-8f5c-140e48fb72f4&quot;, &quot;src&quot; : &quot;https://postfiles.pstatic.net/MjAyMDA4MDhfMjk1/MDAxNTk2ODE0NDExNDI2.jji8ekgXq-rUx7kfgFkIm3VpRJcS6EmzJUTT9f78xDcg.fODaiW-cZBpjPa5Bn6DjqOFMsOImYwUVkk7uPe_liekg.PNG.wusemr2/image.png&quot;, &quot;linkUse&quot; : &quot;false&quot;, &quot;link&quot; : &quot;&quot;}\" area-hidden=\"true\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; display: block;\"><img src=\"https://postfiles.pstatic.net/MjAyMDA4MDhfMjk1/MDAxNTk2ODE0NDExNDI2.jji8ekgXq-rUx7kfgFkIm3VpRJcS6EmzJUTT9f78xDcg.fODaiW-cZBpjPa5Bn6DjqOFMsOImYwUVkk7uPe_liekg.PNG.wusemr2/image.png?type=w966\" data-lazy-src=\"\" data-width=\"546\" data-height=\"367\" alt=\"\" class=\"se-image-resource egjs-visible\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: top; position: relative; width: 480.5px;\" /></a></div>\r\n            &nbsp;\r\n            <div class=\"se-module se-module-image\" style=\"margin: 0px 0px 0px 5px; padding: 0px; border: 0px; font: inherit; vertical-align: top; display: inline-block; box-sizing: border-box; width: 480.5px;\"><a class=\"se-module-image-link __se_image_link __se_link\" data-linktype=\"img\" data-linkdata=\"{&quot;id&quot; : &quot;SE-a3005047-1975-4841-bfcc-45c24027dbcd&quot;, &quot;src&quot; : &quot;https://postfiles.pstatic.net/MjAyMDA4MDhfMTMy/MDAxNTk2ODE0NjUyNjc4.3zAaiu1XxoTorBVpri2el-P9qzXOXWEQ70gmapdx8o8g.wgDrp1YSjIo5nzz_mX5WDmSfmQ6wOBi_qFbwgaZTb-Mg.PNG.wusemr2/image.png&quot;, &quot;linkUse&quot; : &quot;false&quot;, &quot;link&quot; : &quot;&quot;}\" area-hidden=\"true\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; display: block;\"><img src=\"https://postfiles.pstatic.net/MjAyMDA4MDhfMTMy/MDAxNTk2ODE0NjUyNjc4.3zAaiu1XxoTorBVpri2el-P9qzXOXWEQ70gmapdx8o8g.wgDrp1YSjIo5nzz_mX5WDmSfmQ6wOBi_qFbwgaZTb-Mg.PNG.wusemr2/image.png?type=w966\" data-lazy-src=\"\" data-width=\"546\" data-height=\"367\" alt=\"\" class=\"se-image-resource egjs-visible\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: top; position: relative; width: 480.5px;\" /></a></div>\r\n            </div>\r\n         <div class=\"se-module se-module-text se-caption\" style=\"margin: 10px auto 20px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; max-width: 886px;\">\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-6E1E2995-9479-4D9C-98CB-DCFB520E85F8\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.5; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap; text-align: center;\"><span class=\"se-fs- se-ff-   \" id=\"SE-F58217F2-7253-4D39-A66F-459BFA05505F\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 13px; line-height: inherit; vertical-align: baseline; color: #555555;\">내가 만든거다. 왼쪽은 버튼을 확인해주고. 오른쪽은 화면에 직접 글씨를 쓸 수 있다는 걸 보여주는 창.(글씨 크기는 직접 설정가능함)</span></p>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-text se-l-default\" id=\"SE-0b22e330-02d5-40d1-8584-b97a7aa0b58a\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <p class=\"se-text-paragraph se-text-paragraph-align- \" id=\"SE-EB6A0840-7C80-4F84-8A5E-C5D7AF55D0A4\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-   \" id=\"SE-61A9A207-16EC-4194-AAB1-3C94FCC27973\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; vertical-align: baseline;\">위에서 하소연한 건 바로 밑에처럼 정해놓은 곳에만 버튼을 놓을 수 있다고 되어있다는 거다......</span></p>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-image se-l-default\" id=\"SE-832e326a-69b8-44bd-a1d3-a551ff8e27b7\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content se-component-content-fit\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-image se-l-default se-section-align-\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-module se-module-image\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\"><a class=\"se-module-image-link __se_image_link __se_link\" data-linktype=\"img\" data-linkdata=\"{&quot;id&quot; : &quot;SE-832e326a-69b8-44bd-a1d3-a551ff8e27b7&quot;, &quot;src&quot; : &quot;https://postfiles.pstatic.net/MjAyMDA4MDhfMTQ5/MDAxNTk2ODE0Nzc2MzI5.p1OQgue4i2ub3yYStDf_8ic3yRdGIwEdMUFNIVpQrf4g.IDu41vuxiIBJ2QvWZXrmiWwpzXVNZl9L13nxriKqHscg.PNG.wusemr2/image.png&quot;, &quot;linkUse&quot; : &quot;false&quot;, &quot;link&quot; : &quot;&quot;}\" area-hidden=\"true\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; display: block;\"><img src=\"https://postfiles.pstatic.net/MjAyMDA4MDhfMTQ5/MDAxNTk2ODE0Nzc2MzI5.p1OQgue4i2ub3yYStDf_8ic3yRdGIwEdMUFNIVpQrf4g.IDu41vuxiIBJ2QvWZXrmiWwpzXVNZl9L13nxriKqHscg.PNG.wusemr2/image.png?type=w966\" data-lazy-src=\"\" data-width=\"693\" data-height=\"410\" alt=\"\" class=\"se-image-resource egjs-visible\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: top; position: relative; width: 886px;\" /></a></div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-text se-l-default\" id=\"SE-47F62905-F430-418C-9029-44864468F41B\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <p class=\"se-text-paragraph se-text-paragraph-align-left \" id=\"SE-CB1F65FB-2D21-4DCC-87DF-EBE937FD5C1B\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-   \" id=\"SE-3EA30F44-C94C-4025-8291-96D57908090A\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; vertical-align: baseline;\">이걸 해결하려고 오늘 하루 종일 찾았는데 결국 못찾았다는 ㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜㅜ 흐ㅏㅣ아아아ㅣ아</span></p>\r\n            <p class=\"se-text-paragraph se-text-paragraph-align-left \" id=\"SE-E6F0A526-6E0D-4FE5-8A98-B5B594633D6E\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-   \" id=\"SE-6AB718CE-067B-4046-9F06-4FB3D59D66E7\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; vertical-align: baseline;\"></span></p>\r\n            <p class=\"se-text-paragraph se-text-paragraph-align-left \" id=\"SE-96BF5940-EF22-4A93-9CC1-2FB2685510EC\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-   \" id=\"SE-6A40516B-33F3-42F6-8004-7077C34FD3AC\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; vertical-align: baseline;\">++추가</span></p>\r\n            <p class=\"se-text-paragraph se-text-paragraph-align-left \" id=\"SE-D5DB148D-E229-4676-89EE-2879DCE6BD85\" style=\"padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.8; font-family: inherit; vertical-align: baseline; word-break: break-word; overflow-wrap: break-word; white-space: pre-wrap;\"><span class=\"se-fs- se-ff-   \" id=\"SE-AB3F3236-0F16-475C-8B18-03906E6056F8\" style=\"margin: 0px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 15px; line-height: inherit; vertical-align: baseline;\">위치조정 자유롭게 하기</span></p>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-oglink se-l-large_image __se-component\" id=\"SE-331AA14D-F1AF-4CA1-9B12-F3A9E88663CA\" style=\"margin: 30px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #323752; background-color: #ffffff;\">\r\n   <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-oglink se-l-large_image se-section-align-left\" style=\"margin: 0px auto 0px 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; width: 450px; max-width: 450px;\">\r\n         <div class=\"se-module se-module-oglink\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative; width: 450px; box-shadow: rgba(0, 0, 0, 0.08) 0px 1px 2px 0px; cursor: pointer;\"><a href=\"https://m.blog.naver.com/wusemr2/222059934211\" class=\"se-oglink-thumbnail\" target=\"_blank\" style=\"text-decoration-line: none; margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; display: block; position: relative; z-index: 1; overflow: hidden; max-height: 450px;\"><img src=\"https://dthumb-phinf.pstatic.net/?src=%22https%3A%2F%2Fblogthumb.pstatic.net%2FMjAyMDA4MTNfMjQy%2FMDAxNTk3MzIxNDkzNDk1.SmUOrEKCmCLk1_z5rXaExYanwZyyChK8_bkBVMqQIiYg.EvjRn8muCyulTqkfWs9hvtMSzYTZVoAZYOv_aymDFeIg.PNG.wusemr2%2Fimage.png%3Ftype%3Dw2%22&amp;type=ff500_300\" class=\"se-oglink-thumbnail-resource egjs-visible\" alt=\"\" style=\"border: 0px; margin: 0px; padding: 0px; font: inherit; vertical-align: top; width: 450px; height: auto; max-height: 450px;\" /></a><a href=\"https://m.blog.naver.com/wusemr2/222059934211\" class=\"se-oglink-info\" target=\"_blank\" style=\"text-decoration-line: none; margin: 0px; padding: 21px 26px 18px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.4; font-family: inherit; vertical-align: baseline; position: relative; display: block; box-sizing: border-box;\"></a>\r\n            <div class=\"se-oglink-info-container\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: middle; display: inline-block; max-width: 100%;\"><a href=\"https://m.blog.naver.com/wusemr2/222059934211\" class=\"se-oglink-info\" target=\"_blank\" style=\"text-decoration-line: none; margin: 0px; padding: 21px 26px 18px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.4; font-family: inherit; vertical-align: baseline; position: relative; display: block; box-sizing: border-box;\"><span class=\"se-oglink-title\" style=\"white-space: nowrap; overflow-wrap: normal; overflow: hidden; text-overflow: ellipsis; word-break: break-all; display: block; line-height: 15px; font-weight: 700; color: #333333; font-size: 15px;\">[JAVA][WindowBuilder] 윈도우빌더 위치조정 자유롭게 하는 방법 / 윈도우빌더 레이아웃 / 윈도우빌더로 스윙을 간편하게 사용하기</span>\r\n                  <p class=\"se-oglink-summary\" style=\"margin-top: 7px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 13px; line-height: 18px; font-family: inherit; vertical-align: baseline; white-space: nowrap; overflow-wrap: normal; overflow: hidden; text-overflow: ellipsis; word-break: break-all; color: #999999; max-height: 34px;\">저번 포스팅에서는 이클립스에 윈도우 빌더를 추가하고 실행하기까지 해보았다.근데 밑에 첨부한 사진처럼 ...</p>\r\n                  <p class=\"se-oglink-url\" style=\"margin-top: 9px; padding: 0px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 13px; line-height: 15px; font-family: inherit; vertical-align: baseline; white-space: nowrap; overflow-wrap: normal; overflow: hidden; text-overflow: ellipsis; word-break: break-all; color: #00a832;\">m.blog.naver.com</p>\r\n                  </a>\r\n               <div class=\"autosourcing-stub-extra\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; zoom: 1; opacity: 1;\"><a href=\"https://m.blog.naver.com/wusemr2/222059934211\" class=\"se-oglink-info\" target=\"_blank\" style=\"text-decoration-line: none; margin: 0px; padding: 21px 26px 18px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.4; font-family: inherit; vertical-align: baseline; position: relative; display: block; box-sizing: border-box;\"></a>\r\n                  <p style=\"margin-top: 11px; margin-bottom: 7px; padding: 0px; border: 0px; font-variant: inherit; font-stretch: inherit; font-size: 12px; line-height: inherit; font-family: Dotum; vertical-align: baseline;\"><a href=\"https://m.blog.naver.com/wusemr2/222059934211\" class=\"se-oglink-info\" target=\"_blank\" style=\"text-decoration-line: none; margin: 0px; padding: 21px 26px 18px; border: 0px; font-style: inherit; font-variant: inherit; font-weight: inherit; font-stretch: inherit; font-size: 0px; line-height: 1.4; font-family: inherit; vertical-align: baseline; position: relative; display: block; box-sizing: border-box;\"><strong style=\"padding: 0px 7px 0px 0px;\">[출처]</strong>&nbsp;</a><a href=\"https://blog.naver.com/wusemr2/222054442489\" target=\"_blank\" sty','https://blog.naver.com/PostView.naver?blogId=wusemr2&logNo=222054442489&parentCategoryNo=&categoryNo=26&viewDate=&isShowPopularPosts=true&from=search','',1,0,3,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-03-12 03:28:16',0,'2022-03-12 03:28:16','192.168.219.101','','','','','','','','','','','',''),(530,-530,'',530,0,0,'','','html1','[Linux] mysql 외부접속 허용','<p>** mysql root 계정 접속</p>\r\n<p>&gt;su root</p>\r\n<p>&gt;mysql -u root -p&nbsp;</p>\r\n<p>--------------------------------------</p>\r\n<p>my.cnf ---&gt; /etc/mysql/mysql.conf.d/mysqld.cnf</p>\r\n<h2 style=\"box-sizing: border-box; margin-top: 20px; margin-bottom: 10px; font-weight: 500; line-height: 1.2; font-size: 30px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\"><span class=\"mw-headline\" id=\".EB.AC.B8.EC.A0.9C.EC.83.81.ED.99.A9\" style=\"box-sizing: border-box; cursor: pointer;\"><span class=\"mw-headline-number\" style=\"box-sizing: border-box; color: #3399dd;\">1</span>&nbsp;문제상황</span><span class=\"mw-editsection\" style=\"box-sizing: border-box; unicode-bidi: isolate;\"><a href=\"https://zetawiki.com/w/index.php?title=MySQL_%EC%9B%90%EA%B2%A9_%EC%A0%91%EC%86%8D_%ED%97%88%EC%9A%A9&amp;action=edit&amp;section=1\" title=\"부분 편집: 문제상황\" style=\"box-sizing: border-box; color: #888888; text-decoration-line: none; background-color: transparent; word-break: break-all; white-space: nowrap; padding: 0.2em 0.4em; border-radius: 9px; font-size: 0.7em; opacity: 0.3;\" target=\"_blank\"></a></span></h2>\r\n<ul style=\"box-sizing: border-box; margin: 0.3em 0px 0px 1.6em; padding: 0px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; font-size: medium; background-color: #ffffff;\">\r\n   <li style=\"box-sizing: border-box;\">MySQL을 설치하면 기본적으로 로컬(localhost)에서만 접속이 가능하고 외부에서는 접속이 불가능하게 되어 있다.</li>\r\n   </ul>\r\n<dl style=\"box-sizing: border-box; margin: 0.3em 0px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; font-size: medium; background-color: #ffffff;\">\r\n   <dd style=\"box-sizing: border-box; margin-bottom: 0.1em; margin-left: 1.6em;\">외부에서 접속해보면 다음과 같은 오류 메시지가 나온다.<span id=\"cite_ref-1\" class=\"reference\" style=\"box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em; unicode-bidi: isolate; white-space: nowrap;\"><a href=\"https://zetawiki.com/wiki/MySQL_%EC%9B%90%EA%B2%A9_%EC%A0%91%EC%86%8D_%ED%97%88%EC%9A%A9#cite_note-1\" style=\"box-sizing: border-box; color: #0099dd; text-decoration-line: none; background-color: transparent; word-break: break-all;\" target=\"_blank\">[1]</a></span></dd>\r\n   </dl>\r\n<div class=\"runbox\" style=\"box-sizing: border-box; font-size: 14px; line-height: 1.4; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\">\r\n   <div class=\"hlctl\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 1px 1px 0px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; display: flex; width: 1211px;\">\r\n      <div class=\"left\" style=\"box-sizing: border-box; padding: 8px 1rem; flex: 1 1 auto;\">text</div>\r\n      <div data-title=\"Copy\" class=\"right-btn\" style=\"box-sizing: border-box; cursor: pointer; padding: 8px 1rem;\"><span style=\"box-sizing: border-box;\"><i class=\"mdi mdi-content-copy\" style=\"box-sizing: border-box;\"></i>&nbsp;Copy</span></div>\r\n      </div>\r\n   <div class=\"cell text\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 0px 1px 1px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; position: relative;\">\r\n      <div style=\"box-sizing: border-box;\">\r\n         <div class=\"mw-highlight mw-highlight-lang-text mw-content-ltr\" dir=\"ltr\" style=\"box-sizing: border-box; background: rgb(247, 248, 249); unicode-bidi: embed; position: relative;\">\r\n            <pre style=\"box-sizing: border-box; line-height: 20px; font-family: NanumGothicCoding, Consolas, monospace; font-size: 16px; margin-top: 0px; margin-bottom: 0px; overflow: auto; color: inherit; tab-size: 4; position: relative; white-space: pre-wrap; word-break: break-all; background-color: inherit; background-size: 10px, 30px, 10px 10px, 30px 30px; border: 0px; border-radius: 0px; padding: 16px;\"><span style=\"box-sizing: border-box;\"></span>Host \'135.79.246.80\' is not allowed to connect to this MySQL server\r\n</pre>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<ul style=\"box-sizing: border-box; margin: 0.3em 0px 0px 1.6em; padding: 0px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; font-size: medium; background-color: #ffffff;\">\r\n   <li style=\"box-sizing: border-box;\"><a href=\"https://zetawiki.com/wiki/Toad_for_MySQL\" class=\"mw-redirect\" title=\"Toad for MySQL\" style=\"box-sizing: border-box; color: #0099dd; text-decoration-line: none; background-color: transparent; word-break: break-all;\" target=\"_blank\">Toad for MySQL</a>과 같은 DB 관리 도구를 사용하여 DB에 원격으로 접속하려면 허용해주는 로컬 작업이 필요하다.</li>\r\n   <li style=\"box-sizing: border-box;\">여기서는 root를 원격에서 접속할 수 있도록 설정한다. 이것을 응용하면 다른 계정에도 적용할 수 있다..</li>\r\n   </ul>\r\n<h2 style=\"box-sizing: border-box; margin-top: 20px; margin-bottom: 10px; font-weight: 500; line-height: 1.2; font-size: 30px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\"><span id=\"확인\" style=\"box-sizing: border-box;\"></span><span class=\"mw-headline\" id=\".ED.99.95.EC.9D.B8\" style=\"box-sizing: border-box; cursor: pointer;\"><span class=\"mw-headline-number\" style=\"box-sizing: border-box; color: #3399dd;\">2</span>&nbsp;확인</span><span class=\"mw-editsection\" style=\"box-sizing: border-box; unicode-bidi: isolate;\"><a href=\"https://zetawiki.com/w/index.php?title=MySQL_%EC%9B%90%EA%B2%A9_%EC%A0%91%EC%86%8D_%ED%97%88%EC%9A%A9&amp;action=edit&amp;section=2\" title=\"부분 편집: 확인\" style=\"box-sizing: border-box; color: #888888; text-decoration-line: none; background-color: transparent; word-break: break-all; white-space: nowrap; padding: 0.2em 0.4em; border-radius: 9px; font-size: 0.7em; opacity: 0.3;\" target=\"_blank\"></a></span></h2>\r\n<ul style=\"box-sizing: border-box; margin: 0.3em 0px 0px 1.6em; padding: 0px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; font-size: medium; background-color: #ffffff;\">\r\n   <li style=\"box-sizing: border-box;\">로컬에서 접속하여 아래 쿼리를 날려보면 localhost가 나온다.</li>\r\n   </ul>\r\n<div class=\"runbox\" style=\"box-sizing: border-box; font-size: 14px; line-height: 1.4; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\">\r\n   <div class=\"hlctl\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 1px 1px 0px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; display: flex; width: 1211px;\">\r\n      <div class=\"left\" style=\"box-sizing: border-box; padding: 8px 1rem; flex: 1 1 auto;\">Console</div>\r\n      <div data-title=\"Copy\" class=\"right-btn\" style=\"box-sizing: border-box; cursor: pointer; padding: 8px 1rem;\"><span style=\"box-sizing: border-box;\"><i class=\"mdi mdi-content-copy\" style=\"box-sizing: border-box;\"></i>&nbsp;Copy</span></div>\r\n      </div>\r\n   <div class=\"cell console\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 0px 1px 1px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; position: relative;\">\r\n      <div style=\"box-sizing: border-box;\">\r\n         <div class=\"mw-highlight mw-highlight-lang-console mw-content-ltr\" dir=\"ltr\" style=\"box-sizing: border-box; background: rgb(247, 248, 249); unicode-bidi: embed; color: #ffffff !important; position: relative;\">\r\n            <pre style=\"box-sizing: border-box; line-height: 20px; font-family: NanumGothicCoding, Consolas, monospace; font-size: 16px; margin-top: 0px; margin-bottom: 0px; overflow: auto; color: inherit; tab-size: 8; position: relative; white-space: pre-wrap; word-break: break-all; background-color: inherit; background-size: 10px, 30px, 10px 10px, 30px 30px; border: 0px; border-radius: 0px; padding: 16px;\"><span style=\"box-sizing: border-box;\"></span><span class=\"go\" style=\"box-sizing: border-box; color: #dddddd !important;\">mysql&gt; SELECT Host,User,plugin,authentication_string FROM mysql.user;</span><span class=\"go\" style=\"box-sizing: border-box; color: #dddddd !important;\">+-----------+------+-----------------------+-------------------------------------------+</span><span class=\"go\" style=\"box-sizing: border-box; color: #dddddd !important;\">| Host      | User | plugin                | authentication_string                     |</span><span class=\"go\" style=\"box-sizing: border-box; color: #dddddd !important;\">+-----------+------+-----------------------+-------------------------------------------+</span><span class=\"go\" style=\"box-sizing: border-box; color: #dddddd !important;\">| localhost | root | mysql_native_password | *8024A6913C57E024BDFC6E813A57DFB924E6803A |</span><span class=\"go\" style=\"box-sizing: border-box; color: #dddddd !important;\">|&nbsp;%         | root |                       |                                           |</span><span class=\"go\" style=\"box-sizing: border-box; color: #dddddd !important;\">+-----------+------+-----------------------+-------------------------------------------+</span><span class=\"go\" style=\"box-sizing: border-box; color: #dddddd !important;\">2 rows in set (0.000 sec)</span></pre>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<dl style=\"box-sizing: border-box; margin: 0.3em 0px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; font-size: medium; background-color: #ffffff;\">\r\n   <dd style=\"box-sizing: border-box; margin-bottom: 0.1em; margin-left: 1.6em;\">즉 root 계정으로는 로컬에서만 접속가능하다.</dd>\r\n   <dd style=\"box-sizing: border-box; margin-bottom: 0.1em; margin-left: 1.6em;\">(같은 방법으로 root 대신 다른 사용자명도 조회할 수 있다.)</dd>\r\n   <dd style=\"box-sizing: border-box; margin-bottom: 0.1em; margin-left: 1.6em;\">버전이&nbsp;<span style=\"box-sizing: border-box; font-weight: bolder;\">5.7 이하</span>에선&nbsp;<span style=\"box-sizing: border-box; font-weight: bolder;\">authentication_string</span>&nbsp;이 아닌&nbsp;<span style=\"box-sizing: border-box; font-weight: bolder;\">password</span>&nbsp;로 사용하여야 한다.<span id=\"cite_ref-2\" class=\"reference\" style=\"box-sizing: border-box; position: relative; font-size: 12px; line-height: 0; vertical-align: baseline; top: -0.5em; unicode-bidi: isolate; white-space: nowrap;\"><a href=\"https://zetawiki.com/wiki/MySQL_%EC%9B%90%EA%B2%A9_%EC%A0%91%EC%86%8D_%ED%97%88%EC%9A%A9#cite_note-2\" style=\"box-sizing: border-box; color: #0099dd; text-decoration-line: none; background-color: transparent; word-break: break-all;\" target=\"_blank\">[2]</a></span></dd>\r\n   </dl>\r\n<h2 style=\"box-sizing: border-box; margin-top: 20px; margin-bottom: 10px; font-weight: 500; line-height: 1.2; font-size: 30px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\"><span id=\"변경\" style=\"box-sizing: border-box;\"></span><span class=\"mw-headline\" id=\".EB.B3.80.EA.B2.BD\" style=\"box-sizing: border-box; cursor: pointer;\"><span class=\"mw-headline-number\" style=\"box-sizing: border-box; color: #3399dd;\">3</span>&nbsp;변경</span><span class=\"mw-editsection\" style=\"box-sizing: border-box; unicode-bidi: isolate;\"><a href=\"https://zetawiki.com/w/index.php?title=MySQL_%EC%9B%90%EA%B2%A9_%EC%A0%91%EC%86%8D_%ED%97%88%EC%9A%A9&amp;action=edit&amp;section=3\" title=\"부분 편집: 변경\" style=\"box-sizing: border-box; color: #888888; text-decoration-line: none; background-color: transparent; word-break: break-all; white-space: nowrap; padding: 0.2em 0.4em; border-radius: 9px; font-size: 0.7em; opacity: 0.3;\" target=\"_blank\"></a></span></h2>\r\n<ul style=\"box-sizing: border-box; margin: 0.3em 0px 0px 1.6em; padding: 0px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; font-size: medium; background-color: #ffffff;\">\r\n   <li style=\"box-sizing: border-box;\">아래에서 \'아이디\'는 root로 해도 되지만, root가 아닌 별도의 아이디를 사용하는 것이 보안상 유리하다.</li>\r\n   </ul>\r\n<h3 style=\"box-sizing: border-box; margin-top: 20px; margin-bottom: 10px; font-weight: 500; line-height: 1.2; font-size: 24px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\"><span id=\"모든_IP_허용\" style=\"box-sizing: border-box;\"></span><span class=\"mw-headline\" id=\".EB.AA.A8.EB.93.A0_IP_.ED.97.88.EC.9A.A9\" style=\"box-sizing: border-box; cursor: pointer;\"><span class=\"mw-headline-number\" style=\"box-sizing: border-box; color: #3399dd;\">3.1</span>&nbsp;모든 IP 허용</span><span class=\"mw-editsection\" style=\"box-sizing: border-box; unicode-bidi: isolate;\"><a href=\"https://zetawiki.com/w/index.php?title=MySQL_%EC%9B%90%EA%B2%A9_%EC%A0%91%EC%86%8D_%ED%97%88%EC%9A%A9&amp;action=edit&amp;section=4\" title=\"부분 편집: 모든 IP 허용\" style=\"box-sizing: border-box; color: #888888; text-decoration-line: none; background-color: transparent; word-break: break-all; white-space: nowrap; padding: 0.2em 0.4em; border-radius: 9px; font-size: 0.7em; opacity: 0.3;\" target=\"_blank\"></a></span></h3>\r\n<ul style=\"box-sizing: border-box; margin: 0.3em 0px 0px 1.6em; padding: 0px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; font-size: medium; background-color: #ffffff;\">\r\n   <li style=\"box-sizing: border-box;\">참고로 %은 모든 아이피를 포함하지만, localhost는 포함되지 않는다.</li>\r\n   </ul>\r\n<div class=\"mw-highlight-header\" style=\"box-sizing: border-box; display: table; border-left: 4px solid rgb(85, 153, 187); padding: 0px 12px; margin-bottom: -5px; word-break: break-all; background: rgba(170, 221, 221, 0.667); border-radius: 5px 5px 0px 0px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; font-size: medium;\"><span style=\"box-sizing: border-box; font-weight: bolder;\">방법1. GRANT</span></div>\r\n<div class=\"runbox\" style=\"box-sizing: border-box; font-size: 14px; line-height: 1.4; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\">\r\n   <div class=\"hlctl\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 1px 1px 0px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; display: flex; width: 1211px;\">\r\n      <div class=\"left\" style=\"box-sizing: border-box; padding: 8px 1rem; flex: 1 1 auto;\">MySQL</div>\r\n      <div data-title=\"Copy\" class=\"right-btn\" style=\"box-sizing: border-box; cursor: pointer; padding: 8px 1rem;\"><span style=\"box-sizing: border-box;\"><i class=\"mdi mdi-content-copy\" style=\"box-sizing: border-box;\"></i>&nbsp;Copy</span></div>\r\n      </div>\r\n   <div class=\"cell mysql\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 0px 1px 1px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; position: relative;\">\r\n      <div style=\"box-sizing: border-box;\">\r\n         <div class=\"mw-highlight mw-highlight-lang-mysql mw-content-ltr\" dir=\"ltr\" style=\"box-sizing: border-box; background: rgb(247, 248, 249); unicode-bidi: embed; position: relative;\">\r\n            <pre style=\"box-sizing: border-box; line-height: 20px; font-family: NanumGothicCoding, Consolas, monospace; font-size: 16px; margin-top: 0px; margin-bottom: 0px; overflow: auto; color: inherit; tab-size: 4; position: relative; white-space: pre-wrap; word-break: break-all; background-color: inherit; background-size: 10px, 30px, 10px 10px, 30px 30px; border: 0px; border-radius: 0px; padding: 16px;\"><span style=\"box-sizing: border-box;\"></span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">GRANT</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">ALL</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">PRIVILEGES</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">ON</span><span class=\"o\" style=\"box-sizing: border-box; color: inherit;\">*</span><span class=\"p\" style=\"box-sizing: border-box;\">.</span><span class=\"o\" style=\"box-sizing: border-box; color: inherit;\">*</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">TO</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'아이디\'</span><span class=\"nv\" style=\"box-sizing: border-box; color: #6c71c4;\">@\'%\'</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">IDENTIFIED</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">BY</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'패스워드\'</span><span class=\"p\" style=\"box-sizing: border-box;\">;</span></pre>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"mw-highlight-header\" style=\"box-sizing: border-box; display: table; border-left: 4px solid rgb(85, 153, 187); padding: 0px 12px; margin-bottom: -5px; word-break: break-all; background: rgba(170, 221, 221, 0.667); border-radius: 5px 5px 0px 0px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; font-size: medium;\"><span style=\"box-sizing: border-box; font-weight: bolder;\">방법2. INSERT+GRANT+FLUSH</span></div>\r\n<div class=\"runbox\" style=\"box-sizing: border-box; font-size: 14px; line-height: 1.4; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\">\r\n   <div class=\"hlctl\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 1px 1px 0px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; display: flex; width: 1211px;\">\r\n      <div class=\"left\" style=\"box-sizing: border-box; padding: 8px 1rem; flex: 1 1 auto;\">MySQL</div>\r\n      <div data-title=\"Copy\" class=\"right-btn\" style=\"box-sizing: border-box; cursor: pointer; padding: 8px 1rem;\"><span style=\"box-sizing: border-box;\"><i class=\"mdi mdi-content-copy\" style=\"box-sizing: border-box;\"></i>&nbsp;Copy</span></div>\r\n      </div>\r\n   <div class=\"cell mysql\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 0px 1px 1px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; position: relative;\">\r\n      <div style=\"box-sizing: border-box;\">\r\n         <div class=\"mw-highlight mw-highlight-lang-mysql mw-content-ltr\" dir=\"ltr\" style=\"box-sizing: border-box; background: rgb(247, 248, 249); unicode-bidi: embed; position: relative;\">\r\n            <pre style=\"box-sizing: border-box; line-height: 20px; font-family: NanumGothicCoding, Consolas, monospace; font-size: 16px; margin-top: 0px; margin-bottom: 0px; overflow: auto; color: inherit; tab-size: 4; position: relative; white-space: pre-wrap; word-break: break-all; background-color: inherit; background-size: 10px, 30px, 10px 10px, 30px 30px; border: 0px; border-radius: 0px; padding: 16px;\"><span style=\"box-sizing: border-box;\"></span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">INSERT</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">INTO</span><span class=\"n\" style=\"box-sizing: border-box;\">mysql</span><span class=\"p\" style=\"box-sizing: border-box;\">.</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">user</span><span class=\"p\" style=\"box-sizing: border-box;\">(</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">host</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">user</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">password</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"n\" style=\"box-sizing: border-box;\">ssl_cipher</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"n\" style=\"box-sizing: border-box;\">x509_issuer</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"n\" style=\"box-sizing: border-box;\">x509_subject</span><span class=\"p\" style=\"box-sizing: border-box;\">)</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">VALUES</span><span class=\"p\" style=\"box-sizing: border-box;\">(</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'%\'</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'아이디\'</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">password</span><span class=\"p\" style=\"box-sizing: border-box;\">(</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'패스워드\'</span><span class=\"p\" style=\"box-sizing: border-box;\">),</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'\'</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'\'</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'\'</span><span class=\"p\" style=\"box-sizing: border-box;\">);</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">GRANT</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">ALL</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">PRIVILEGES</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">ON</span><span class=\"o\" style=\"box-sizing: border-box; color: inherit;\">*</span><span class=\"p\" style=\"box-sizing: border-box;\">.</span><span class=\"o\" style=\"box-sizing: border-box; color: inherit;\">*</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">TO</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'아이디\'</span><span class=\"nv\" style=\"box-sizing: border-box; color: #6c71c4;\">@\'%\'</span><span class=\"p\" style=\"box-sizing: border-box;\">;</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">FLUSH</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">PRIVILEGES</span><span class=\"p\" style=\"box-sizing: border-box;\">;</span></pre>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<h3 style=\"box-sizing: border-box; margin-top: 20px; margin-bottom: 10px; font-weight: 500; line-height: 1.2; font-size: 24px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\"><span id=\"IP_대역_허용\" style=\"box-sizing: border-box;\"></span><span class=\"mw-headline\" id=\"IP_.EB.8C.80.EC.97.AD_.ED.97.88.EC.9A.A9\" style=\"box-sizing: border-box; cursor: pointer;\"><span class=\"mw-headline-number\" style=\"box-sizing: border-box; color: #3399dd;\">3.2</span>&nbsp;IP 대역 허용</span><span class=\"mw-editsection\" style=\"box-sizing: border-box; unicode-bidi: isolate;\"><a href=\"https://zetawiki.com/w/index.php?title=MySQL_%EC%9B%90%EA%B2%A9_%EC%A0%91%EC%86%8D_%ED%97%88%EC%9A%A9&amp;action=edit&amp;section=5\" title=\"부분 편집: IP 대역 허용\" style=\"box-sizing: border-box; color: #888888; text-decoration-line: none; background-color: transparent; word-break: break-all; white-space: nowrap; padding: 0.2em 0.4em; border-radius: 9px; font-size: 0.7em; opacity: 0.3;\" target=\"_blank\"></a></span></h3>\r\n<ul style=\"box-sizing: border-box; margin: 0.3em 0px 0px 1.6em; padding: 0px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; font-size: medium; background-color: #ffffff;\">\r\n   <li style=\"box-sizing: border-box;\">예: 111.222.xxx.xxx</li>\r\n   </ul>\r\n<div class=\"mw-highlight-header\" style=\"box-sizing: border-box; display: table; border-left: 4px solid rgb(85, 153, 187); padding: 0px 12px; margin-bottom: -5px; word-break: break-all; background: rgba(170, 221, 221, 0.667); border-radius: 5px 5px 0px 0px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; font-size: medium;\"><span style=\"box-sizing: border-box; font-weight: bolder;\">방법1. GRANT</span></div>\r\n<div class=\"runbox\" style=\"box-sizing: border-box; font-size: 14px; line-height: 1.4; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\">\r\n   <div class=\"hlctl\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 1px 1px 0px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; display: flex; width: 1211px;\">\r\n      <div class=\"left\" style=\"box-sizing: border-box; padding: 8px 1rem; flex: 1 1 auto;\">MySQL</div>\r\n      <div data-title=\"Copy\" class=\"right-btn\" style=\"box-sizing: border-box; cursor: pointer; padding: 8px 1rem;\"><span style=\"box-sizing: border-box;\"><i class=\"mdi mdi-content-copy\" style=\"box-sizing: border-box;\"></i>&nbsp;Copy</span></div>\r\n      </div>\r\n   <div class=\"cell mysql\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 0px 1px 1px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; position: relative;\">\r\n      <div style=\"box-sizing: border-box;\">\r\n         <div class=\"mw-highlight mw-highlight-lang-mysql mw-content-ltr\" dir=\"ltr\" style=\"box-sizing: border-box; background: rgb(247, 248, 249); unicode-bidi: embed; position: relative;\">\r\n            <pre style=\"box-sizing: border-box; line-height: 20px; font-family: NanumGothicCoding, Consolas, monospace; font-size: 16px; margin-top: 0px; margin-bottom: 0px; overflow: auto; color: inherit; tab-size: 4; position: relative; white-space: pre-wrap; word-break: break-all; background-color: inherit; background-size: 10px, 30px, 10px 10px, 30px 30px; border: 0px; border-radius: 0px; padding: 16px;\"><span style=\"box-sizing: border-box;\"></span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">GRANT</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">ALL</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">PRIVILEGES</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">ON</span><span class=\"o\" style=\"box-sizing: border-box; color: inherit;\">*</span><span class=\"p\" style=\"box-sizing: border-box;\">.</span><span class=\"o\" style=\"box-sizing: border-box; color: inherit;\">*</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">TO</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'아이디\'</span><span class=\"nv\" style=\"box-sizing: border-box; color: #6c71c4;\">@\'111.222.%\'</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">IDENTIFIED</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">BY</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'패스워드\'</span><span class=\"p\" style=\"box-sizing: border-box;\">;</span></pre>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"mw-highlight-header\" style=\"box-sizing: border-box; display: table; border-left: 4px solid rgb(85, 153, 187); padding: 0px 12px; margin-bottom: -5px; word-break: break-all; background: rgba(170, 221, 221, 0.667); border-radius: 5px 5px 0px 0px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; font-size: medium;\"><span style=\"box-sizing: border-box; font-weight: bolder;\">방법2. INSERT+GRANT+FLUSH</span></div>\r\n<div class=\"runbox\" style=\"box-sizing: border-box; font-size: 14px; line-height: 1.4; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\">\r\n   <div class=\"hlctl\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 1px 1px 0px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; display: flex; width: 1211px;\">\r\n      <div class=\"left\" style=\"box-sizing: border-box; padding: 8px 1rem; flex: 1 1 auto;\">sql</div>\r\n      <div data-title=\"Copy\" class=\"right-btn\" style=\"box-sizing: border-box; cursor: pointer; padding: 8px 1rem;\"><span style=\"box-sizing: border-box;\"><i class=\"mdi mdi-content-copy\" style=\"box-sizing: border-box;\"></i>&nbsp;Copy</span></div>\r\n      </div>\r\n   <div class=\"cell sql\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 0px 1px 1px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; position: relative;\">\r\n      <div style=\"box-sizing: border-box;\">\r\n         <div class=\"mw-highlight mw-highlight-lang-sql mw-content-ltr\" dir=\"ltr\" style=\"box-sizing: border-box; background: rgb(247, 248, 249); unicode-bidi: embed; position: relative;\">\r\n            <pre style=\"box-sizing: border-box; line-height: 20px; font-family: NanumGothicCoding, Consolas, monospace; font-size: 16px; margin-top: 0px; margin-bottom: 0px; overflow: auto; color: inherit; tab-size: 4; position: relative; white-space: pre-wrap; word-break: break-all; background-color: inherit; background-size: 10px, 30px, 10px 10px, 30px 30px; border: 0px; border-radius: 0px; padding: 16px;\"><span style=\"box-sizing: border-box;\"></span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">INSERT</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">INTO</span><span class=\"n\" style=\"box-sizing: border-box;\">mysql</span><span class=\"p\" style=\"box-sizing: border-box;\">.</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">user</span><span class=\"p\" style=\"box-sizing: border-box;\">(</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">host</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">user</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"n\" style=\"box-sizing: border-box;\">password</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"n\" style=\"box-sizing: border-box;\">ssl_cipher</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"n\" style=\"box-sizing: border-box;\">x509_issuer</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"n\" style=\"box-sizing: border-box;\">x509_subject</span><span class=\"p\" style=\"box-sizing: border-box;\">)</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">VALUES</span><span class=\"p\" style=\"box-sizing: border-box;\">(</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'111.222.%\'</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'아이디\'</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"n\" style=\"box-sizing: border-box;\">password</span><span class=\"p\" style=\"box-sizing: border-box;\">(</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'패스워드\'</span><span class=\"p\" style=\"box-sizing: border-box;\">),</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'\'</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'\'</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'\'</span><span class=\"p\" style=\"box-sizing: border-box;\">);</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">GRANT</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">ALL</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">PRIVILEGES</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">ON</span><span class=\"o\" style=\"box-sizing: border-box; color: inherit;\">*</span><span class=\"p\" style=\"box-sizing: border-box;\">.</span><span class=\"o\" style=\"box-sizing: border-box; color: inherit;\">*</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">TO</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'아이디\'</span><span class=\"o\" style=\"box-sizing: border-box; color: inherit;\">@</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'111.222.%\'</span><span class=\"p\" style=\"box-sizing: border-box;\">;</span><span class=\"n\" style=\"box-sizing: border-box;\">FLUSH</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">PRIVILEGES</span><span class=\"p\" style=\"box-sizing: border-box;\">;</span></pre>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<dl style=\"box-sizing: border-box; margin: 0.3em 0px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; font-size: medium; background-color: #ffffff;\">\r\n   <dd style=\"box-sizing: border-box; margin-bottom: 0.1em; margin-left: 1.6em;\">→ 111.222로 시작하는 모든 IP가 허용된다.</dd>\r\n   </dl>\r\n<h3 style=\"box-sizing: border-box; margin-top: 20px; margin-bottom: 10px; font-weight: 500; line-height: 1.2; font-size: 24px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\"><span id=\"특정_IP_1개_허용\" style=\"box-sizing: border-box;\"></span><span class=\"mw-headline\" id=\".ED.8A.B9.EC.A0.95_IP_1.EA.B0.9C_.ED.97.88.EC.9A.A9\" style=\"box-sizing: border-box; cursor: pointer;\"><span class=\"mw-headline-number\" style=\"box-sizing: border-box; color: #3399dd;\">3.3</span>&nbsp;특정 IP 1개 허용</span><span class=\"mw-editsection\" style=\"box-sizing: border-box; unicode-bidi: isolate;\"><a href=\"https://zetawiki.com/w/index.php?title=MySQL_%EC%9B%90%EA%B2%A9_%EC%A0%91%EC%86%8D_%ED%97%88%EC%9A%A9&amp;action=edit&amp;section=6\" title=\"부분 편집: 특정 IP 1개 허용\" style=\"box-sizing: border-box; color: #888888; text-decoration-line: none; background-color: transparent; word-break: break-all; white-space: nowrap; padding: 0.2em 0.4em; border-radius: 9px; font-size: 0.7em; opacity: 0.3;\" target=\"_blank\"></a></span></h3>\r\n<ul style=\"box-sizing: border-box; margin: 0.3em 0px 0px 1.6em; padding: 0px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; font-size: medium; background-color: #ffffff;\">\r\n   <li style=\"box-sizing: border-box;\">예: 111.222.33.44</li>\r\n   </ul>\r\n<div class=\"mw-highlight-header\" style=\"box-sizing: border-box; display: table; border-left: 4px solid rgb(85, 153, 187); padding: 0px 12px; margin-bottom: -5px; word-break: break-all; background: rgba(170, 221, 221, 0.667); border-radius: 5px 5px 0px 0px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; font-size: medium;\"><span style=\"box-sizing: border-box; font-weight: bolder;\">방법1. GRANT</span></div>\r\n<div class=\"runbox\" style=\"box-sizing: border-box; font-size: 14px; line-height: 1.4; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\">\r\n   <div class=\"hlctl\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 1px 1px 0px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; display: flex; width: 1211px;\">\r\n      <div class=\"left\" style=\"box-sizing: border-box; padding: 8px 1rem; flex: 1 1 auto;\">MySQL</div>\r\n      <div data-title=\"Copy\" class=\"right-btn\" style=\"box-sizing: border-box; cursor: pointer; padding: 8px 1rem;\"><span style=\"box-sizing: border-box;\"><i class=\"mdi mdi-content-copy\" style=\"box-sizing: border-box;\"></i>&nbsp;Copy</span></div>\r\n      </div>\r\n   <div class=\"cell mysql\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 0px 1px 1px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; position: relative;\">\r\n      <div style=\"box-sizing: border-box;\">\r\n         <div class=\"mw-highlight mw-highlight-lang-mysql mw-content-ltr\" dir=\"ltr\" style=\"box-sizing: border-box; background: rgb(247, 248, 249); unicode-bidi: embed; position: relative;\">\r\n            <pre style=\"box-sizing: border-box; line-height: 20px; font-family: NanumGothicCoding, Consolas, monospace; font-size: 16px; margin-top: 0px; margin-bottom: 0px; overflow: auto; color: inherit; tab-size: 4; position: relative; white-space: pre-wrap; word-break: break-all; background-color: inherit; background-size: 10px, 30px, 10px 10px, 30px 30px; border: 0px; border-radius: 0px; padding: 16px;\"><span style=\"box-sizing: border-box;\"></span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">GRANT</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">ALL</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">PRIVILEGES</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">ON</span><span class=\"o\" style=\"box-sizing: border-box; color: inherit;\">*</span><span class=\"p\" style=\"box-sizing: border-box;\">.</span><span class=\"o\" style=\"box-sizing: border-box; color: inherit;\">*</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">TO</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'아이디\'</span><span class=\"nv\" style=\"box-sizing: border-box; color: #6c71c4;\">@\'111.222.33.44\'</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">IDENTIFIED</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">BY</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'패스워드\'</span><span class=\"p\" style=\"box-sizing: border-box;\">;</span></pre>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"mw-highlight-header\" style=\"box-sizing: border-box; display: table; border-left: 4px solid rgb(85, 153, 187); padding: 0px 12px; margin-bottom: -5px; word-break: break-all; background: rgba(170, 221, 221, 0.667); border-radius: 5px 5px 0px 0px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; font-size: medium;\"><span style=\"box-sizing: border-box; font-weight: bolder;\">방법2. INSERT+GRANT+FLUSH</span></div>\r\n<div class=\"runbox\" style=\"box-sizing: border-box; font-size: 14px; line-height: 1.4; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\">\r\n   <div class=\"hlctl\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 1px 1px 0px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; display: flex; width: 1211px;\">\r\n      <div class=\"left\" style=\"box-sizing: border-box; padding: 8px 1rem; flex: 1 1 auto;\">sql</div>\r\n      <div data-title=\"Copy\" class=\"right-btn\" style=\"box-sizing: border-box; cursor: pointer; padding: 8px 1rem;\"><span style=\"box-sizing: border-box;\"><i class=\"mdi mdi-content-copy\" style=\"box-sizing: border-box;\"></i>&nbsp;Copy</span></div>\r\n      </div>\r\n   <div class=\"cell sql\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 0px 1px 1px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; position: relative;\">\r\n      <div style=\"box-sizing: border-box;\">\r\n         <div class=\"mw-highlight mw-highlight-lang-sql mw-content-ltr\" dir=\"ltr\" style=\"box-sizing: border-box; background: rgb(247, 248, 249); unicode-bidi: embed; position: relative;\">\r\n            <pre style=\"box-sizing: border-box; line-height: 20px; font-family: NanumGothicCoding, Consolas, monospace; font-size: 16px; margin-top: 0px; margin-bottom: 0px; overflow: auto; color: inherit; tab-size: 4; position: relative; white-space: pre-wrap; word-break: break-all; background-color: inherit; background-size: 10px, 30px, 10px 10px, 30px 30px; border: 0px; border-radius: 0px; padding: 16px;\"><span style=\"box-sizing: border-box;\"></span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">INSERT</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">INTO</span><span class=\"n\" style=\"box-sizing: border-box;\">mysql</span><span class=\"p\" style=\"box-sizing: border-box;\">.</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">user</span><span class=\"p\" style=\"box-sizing: border-box;\">(</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">host</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">user</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"n\" style=\"box-sizing: border-box;\">password</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"n\" style=\"box-sizing: border-box;\">ssl_cipher</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"n\" style=\"box-sizing: border-box;\">x509_issuer</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"n\" style=\"box-sizing: border-box;\">x509_subject</span><span class=\"p\" style=\"box-sizing: border-box;\">)</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">VALUES</span><span class=\"p\" style=\"box-sizing: border-box;\">(</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'111.222.33.44\'</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'아이디\'</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"n\" style=\"box-sizing: border-box;\">password</span><span class=\"p\" style=\"box-sizing: border-box;\">(</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'패스워드\'</span><span class=\"p\" style=\"box-sizing: border-box;\">),</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'\'</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'\'</span><span class=\"p\" style=\"box-sizing: border-box;\">,</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'\'</span><span class=\"p\" style=\"box-sizing: border-box;\">);</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">GRANT</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">ALL</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">PRIVILEGES</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">ON</span><span class=\"o\" style=\"box-sizing: border-box; color: inherit;\">*</span><span class=\"p\" style=\"box-sizing: border-box;\">.</span><span class=\"o\" style=\"box-sizing: border-box; color: inherit;\">*</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">TO</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'아이디\'</span><span class=\"o\" style=\"box-sizing: border-box; color: inherit;\">@</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'111.222.33.44\'</span><span class=\"p\" style=\"box-sizing: border-box;\">;</span><span class=\"n\" style=\"box-sizing: border-box;\">FLUSH</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">PRIVILEGES</span><span class=\"p\" style=\"box-sizing: border-box;\">;</span></pre>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<h2 style=\"box-sizing: border-box; margin-top: 20px; margin-bottom: 10px; font-weight: 500; line-height: 1.2; font-size: 30px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\"><span id=\"원래_상태로_복구\" style=\"box-sizing: border-box;\"></span><span class=\"mw-headline\" id=\".EC.9B.90.EB.9E.98_.EC.83.81.ED.83.9C.EB.A1.9C_.EB.B3.B5.EA.B5.AC\" style=\"box-sizing: border-box; cursor: pointer;\"><span class=\"mw-headline-number\" style=\"box-sizing: border-box; color: #3399dd;\">4</span>&nbsp;원래 상태로 복구</span><span class=\"mw-editsection\" style=\"box-sizing: border-box; unicode-bidi: isolate;\"><a href=\"https://zetawiki.com/w/index.php?title=MySQL_%EC%9B%90%EA%B2%A9_%EC%A0%91%EC%86%8D_%ED%97%88%EC%9A%A9&amp;action=edit&amp;section=7\" title=\"부분 편집: 원래 상태로 복구\" style=\"box-sizing: border-box; color: #888888; text-decoration-line: none; background-color: transparent; word-break: break-all; white-space: nowrap; padding: 0.2em 0.4em; border-radius: 9px; font-size: 0.7em; opacity: 0.3;\" target=\"_blank\"></a></span></h2>\r\n<ul style=\"box-sizing: border-box; margin: 0.3em 0px 0px 1.6em; padding: 0px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; font-size: medium; background-color: #ffffff;\">\r\n   <li style=\"box-sizing: border-box;\">모든 IP를 허용한 경우 다음과 같이 원래 상태로 복구할 수 있다.</li>\r\n   </ul>\r\n<div class=\"runbox\" style=\"box-sizing: border-box; font-size: 14px; line-height: 1.4; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\">\r\n   <div class=\"hlctl\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 1px 1px 0px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; display: flex; width: 1211px;\">\r\n      <div class=\"left\" style=\"box-sizing: border-box; padding: 8px 1rem; flex: 1 1 auto;\">sql</div>\r\n      <div data-title=\"Copy\" class=\"right-btn\" style=\"box-sizing: border-box; cursor: pointer; padding: 8px 1rem;\"><span style=\"box-sizing: border-box;\"><i class=\"mdi mdi-content-copy\" style=\"box-sizing: border-box;\"></i>&nbsp;Copy</span></div>\r\n      </div>\r\n   <div class=\"cell sql\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 0px 1px 1px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; position: relative;\">\r\n      <div style=\"box-sizing: border-box;\">\r\n         <div class=\"mw-highlight mw-highlight-lang-sql mw-content-ltr\" dir=\"ltr\" style=\"box-sizing: border-box; background: rgb(247, 248, 249); unicode-bidi: embed; position: relative;\">\r\n            <pre style=\"box-sizing: border-box; line-height: 20px; font-family: NanumGothicCoding, Consolas, monospace; font-size: 16px; margin-top: 0px; margin-bottom: 0px; overflow: auto; color: inherit; tab-size: 4; position: relative; white-space: pre-wrap; word-break: break-all; background-color: inherit; background-size: 10px, 30px, 10px 10px, 30px 30px; border: 0px; border-radius: 0px; padding: 16px;\"><span style=\"box-sizing: border-box;\"></span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">DELETE</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">FROM</span><span class=\"n\" style=\"box-sizing: border-box;\">mysql</span><span class=\"p\" style=\"box-sizing: border-box;\">.</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">user</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">WHERE</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">Host</span><span class=\"o\" style=\"box-sizing: border-box; color: inherit;\">=</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'%\'</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">AND</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">User</span><span class=\"o\" style=\"box-sizing: border-box; color: inherit;\">=</span><span class=\"s1\" style=\"box-sizing: border-box; color: #ba2121;\">\'아이디\'</span><span class=\"p\" style=\"box-sizing: border-box;\">;</span><span class=\"n\" style=\"box-sizing: border-box;\">FLUSH</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">PRIVILEGES</span><span class=\"p\" style=\"box-sizing: border-box;\">;</span></pre>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<h2 style=\"box-sizing: border-box; margin-top: 20px; margin-bottom: 10px; font-weight: 500; line-height: 1.2; font-size: 30px; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\"><span id=\"LISTEN_IP대역_변경\" style=\"box-sizing: border-box;\"></span><span class=\"mw-headline\" id=\"LISTEN_IP.EB.8C.80.EC.97.AD_.EB.B3.80.EA.B2.BD\" style=\"box-sizing: border-box; cursor: pointer;\"><span class=\"mw-headline-number\" style=\"box-sizing: border-box; color: #3399dd;\">5</span>&nbsp;LISTEN IP대역 변경</span><span class=\"mw-editsection\" style=\"box-sizing: border-box; unicode-bidi: isolate;\"><a href=\"https://zetawiki.com/w/index.php?title=MySQL_%EC%9B%90%EA%B2%A9_%EC%A0%91%EC%86%8D_%ED%97%88%EC%9A%A9&amp;action=edit&amp;section=8\" title=\"부분 편집: LISTEN IP대역 변경\" style=\"box-sizing: border-box; color: #888888; text-decoration-line: none; background-color: transparent; word-break: break-all; white-space: nowrap; padding: 0.2em 0.4em; border-radius: 9px; font-size: 0.7em; opacity: 0.3;\" target=\"_blank\"></a></span></h2>\r\n<div class=\"rellink boilerplate seealso\" style=\"box-sizing: border-box; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; font-size: medium; background-color: #ffffff;\"><img alt=\"\" src=\"https://z-images.s3.amazonaws.com/thumb/e/ec/Crystal_Clear_app_xmag.svg/16px-Crystal_Clear_app_xmag.svg.png\" decoding=\"async\" width=\"16\" height=\"16\" data-url=\"https://z-images.s3.amazonaws.com/thumb/e/ec/Crystal_Clear_app_xmag.svg/16px-Crystal_Clear_app_xmag.svg.png\" data-srcset=\"https://z-images.s3.amazonaws.com/thumb/e/ec/Crystal_Clear_app_xmag.svg/24px-Crystal_Clear_app_xmag.svg.png 1.5x, https://z-images.s3.amazonaws.com/thumb/e/ec/Crystal_Clear_app_xmag.svg/32px-Crystal_Clear_app_xmag.svg.png 2x\" style=\"box-sizing: border-box; vertical-align: middle; border-style: none; max-width: 100%;\" />&nbsp;<a href=\"https://zetawiki.com/wiki/MySQL_bind-address_%EB%B3%80%EA%B2%BD\" class=\"mw-redirect\" title=\"MySQL bind-address 변경\" style=\"box-sizing: border-box; color: #0099dd; text-decoration-line: none; background-color: transparent; word-break: break-all;\" target=\"_blank\">MySQL bind-address 변경</a>&nbsp;문서를 참고하십시오.</div>\r\n<div class=\"runbox\" style=\"box-sizing: border-box; font-size: 14px; line-height: 1.4; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\">\r\n   <div class=\"hlctl\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 1px 1px 0px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; display: flex; width: 1211px;\">\r\n      <div class=\"left\" style=\"box-sizing: border-box; padding: 8px 1rem; flex: 1 1 auto;\">Console</div>\r\n      <div data-title=\"Copy\" class=\"right-btn\" style=\"box-sizing: border-box; cursor: pointer; padding: 8px 1rem;\"><span style=\"box-sizing: border-box;\"><i class=\"mdi mdi-content-copy\" style=\"box-sizing: border-box;\"></i>&nbsp;Copy</span></div>\r\n      </div>\r\n   <div class=\"cell console\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 0px 1px 1px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; position: relative;\">\r\n      <div style=\"box-sizing: border-box;\">\r\n         <div class=\"mw-highlight mw-highlight-lang-console mw-content-ltr\" dir=\"ltr\" style=\"box-sizing: border-box; background: rgb(247, 248, 249); unicode-bidi: embed; color: #ffffff !important; position: relative;\">\r\n            <pre style=\"box-sizing: border-box; line-height: 20px; font-family: NanumGothicCoding, Consolas, monospace; font-size: 16px; margin-top: 0px; margin-bottom: 0px; overflow: auto; color: inherit; tab-size: 8; position: relative; white-space: pre-wrap; word-break: break-all; background-color: inherit; background-size: 10px, 30px, 10px 10px, 30px 30px; border: 0px; border-radius: 0px; padding: 16px;\"><span style=\"box-sizing: border-box;\"></span><span class=\"gp\" style=\"box-sizing: border-box; font-weight: bold; color: #aaaaff !important;\">root@zetawiki:~# </span>netstat -ntlp <span class=\"p\" style=\"box-sizing: border-box;\">|</span> grep mysqld\r\n<span class=\"go\" style=\"box-sizing: border-box; color: #dddddd !important;\">tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      7931/mysqld</span></pre>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"runbox\" style=\"box-sizing: border-box; font-size: 14px; line-height: 1.4; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\">\r\n   <div class=\"hlctl\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 1px 1px 0px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; display: flex; width: 1211px;\">\r\n      <div class=\"left\" style=\"box-sizing: border-box; padding: 8px 1rem; flex: 1 1 auto;\">Console</div>\r\n      <div data-title=\"Copy\" class=\"right-btn\" style=\"box-sizing: border-box; cursor: pointer; padding: 8px 1rem;\"><span style=\"box-sizing: border-box;\"><i class=\"mdi mdi-content-copy\" style=\"box-sizing: border-box;\"></i>&nbsp;Copy</span></div>\r\n      </div>\r\n   <div class=\"cell console\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 0px 1px 1px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; position: relative;\">\r\n      <div style=\"box-sizing: border-box;\">\r\n         <div class=\"mw-highlight mw-highlight-lang-console mw-content-ltr\" dir=\"ltr\" style=\"box-sizing: border-box; background: rgb(247, 248, 249); unicode-bidi: embed; color: #ffffff !important; position: relative;\">\r\n            <pre style=\"box-sizing: border-box; line-height: 20px; font-family: NanumGothicCoding, Consolas, monospace; font-size: 16px; margin-top: 0px; margin-bottom: 0px; overflow: auto; color: inherit; tab-size: 8; position: relative; white-space: pre-wrap; word-break: break-all; background-color: inherit; background-size: 10px, 30px, 10px 10px, 30px 30px; border: 0px; border-radius: 0px; padding: 16px;\"><span style=\"box-sizing: border-box;\"></span><span class=\"gp\" style=\"box-sizing: border-box; font-weight: bold; color: #aaaaff !important;\">root@zetawiki:~# </span>vi /etc/mysql/my.cnf\r\n</pre>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"runbox\" style=\"box-sizing: border-box; font-size: 14px; line-height: 1.4; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\">\r\n   <div class=\"hlctl\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 1px 1px 0px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; display: flex; width: 1211px;\">\r\n      <div class=\"left\" style=\"box-sizing: border-box; padding: 8px 1rem; flex: 1 1 auto;\">ini</div>\r\n      <div data-title=\"Copy\" class=\"right-btn\" style=\"box-sizing: border-box; cursor: pointer; padding: 8px 1rem;\"><span style=\"box-sizing: border-box;\"><i class=\"mdi mdi-content-copy\" style=\"box-sizing: border-box;\"></i>&nbsp;Copy</span></div>\r\n      </div>\r\n   <div class=\"cell ini\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 0px 1px 1px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; position: relative;\">\r\n      <div style=\"box-sizing: border-box;\">\r\n         <div class=\"mw-highlight mw-highlight-lang-ini mw-content-ltr\" dir=\"ltr\" style=\"box-sizing: border-box; background: rgb(247, 248, 249); unicode-bidi: embed; position: relative;\">\r\n            <pre style=\"box-sizing: border-box; line-height: 20px; font-family: NanumGothicCoding, Consolas, monospace; font-size: 16px; margin-top: 0px; margin-bottom: 0px; overflow: auto; color: inherit; tab-size: 4; position: relative; white-space: pre-wrap; word-break: break-all; background-color: inherit; background-size: 10px, 30px, 10px 10px, 30px 30px; border: 0px; border-radius: 0px; padding: 16px;\"><span style=\"box-sizing: border-box;\"></span><span class=\"c1\" style=\"box-sizing: border-box; color: #449988; font-style: inherit;\">#bind-address            = 127.0.0.1</span><span class=\"k\" style=\"box-sizing: border-box; color: #859900; font-weight: bold;\">[mysqld]</span><span class=\"na\" style=\"box-sizing: border-box; color: #7d9029;\">bind-address</span><span class=\"o\" style=\"box-sizing: border-box; color: inherit;\">=</span><span class=\"s\" style=\"box-sizing: border-box; color: #ba2121;\">0.0.0.0</span></pre>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"runbox\" style=\"box-sizing: border-box; font-size: 14px; line-height: 1.4; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\">\r\n   <div class=\"hlctl\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 1px 1px 0px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; display: flex; width: 1211px;\">\r\n      <div class=\"left\" style=\"box-sizing: border-box; padding: 8px 1rem; flex: 1 1 auto;\">Console</div>\r\n      <div data-title=\"Copy\" class=\"right-btn\" style=\"box-sizing: border-box; cursor: pointer; padding: 8px 1rem;\"><span style=\"box-sizing: border-box;\"><i class=\"mdi mdi-content-copy\" style=\"box-sizing: border-box;\"></i>&nbsp;Copy</span></div>\r\n      </div>\r\n   <div class=\"cell console\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 0px 1px 1px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; position: relative;\">\r\n      <div style=\"box-sizing: border-box;\">\r\n         <div class=\"mw-highlight mw-highlight-lang-console mw-content-ltr\" dir=\"ltr\" style=\"box-sizing: border-box; background: rgb(247, 248, 249); unicode-bidi: embed; color: #ffffff !important; position: relative;\">\r\n            <pre style=\"box-sizing: border-box; line-height: 20px; font-family: NanumGothicCoding, Consolas, monospace; font-size: 16px; margin-top: 0px; margin-bottom: 0px; overflow: auto; color: inherit; tab-size: 8; position: relative; white-space: pre-wrap; word-break: break-all; background-color: inherit; background-size: 10px, 30px, 10px 10px, 30px 30px; border: 0px; border-radius: 0px; padding: 16px;\"><span style=\"box-sizing: border-box;\"></span><span class=\"gp\" style=\"box-sizing: border-box; font-weight: bold; color: #aaaaff !important;\">root@zetawiki:~# </span>service mysql restart\r\n<span class=\"go\" style=\"box-sizing: border-box; color: #dddddd !important;\">mysql stop/waiting</span><span class=\"go\" style=\"box-sizing: border-box; color: #dddddd !important;\">mysql start/running, process 8190</span></pre>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"runbox\" style=\"box-sizing: border-box; font-size: 14px; line-height: 1.4; font-family: 나눔고딕, nanumgothic, se_NanumGothic, sans-serif, simhei, AppleSDGothicNeo-Regular, &quot;Malgun Gothic&quot;, dotum; background-color: #ffffff;\">\r\n   <div class=\"hlctl\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 1px 1px 0px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; display: flex; width: 1211px;\">\r\n      <div class=\"left\" style=\"box-sizing: border-box; padding: 8px 1rem; flex: 1 1 auto;\">Console</div>\r\n      <div data-title=\"Copy\" class=\"right-btn\" style=\"box-sizing: border-box; cursor: pointer; padding: 8px 1rem;\"><span style=\"box-sizing: border-box;\"><i class=\"mdi mdi-content-copy\" style=\"box-sizing: border-box;\"></i>&nbsp;Copy</span></div>\r\n      </div>\r\n   <div class=\"cell console\" style=\"box-sizing: border-box; background: rgba(85, 153, 187, 0.2); border-width: 0px 1px 1px; border-style: solid; border-color: rgba(136, 136, 136, 0.2); border-image: initial; position: relative;\">\r\n      <div style=\"box-sizing: border-box;\">\r\n         <div class=\"mw-highlight mw-highlight-lang-console mw-content-ltr\" dir=\"ltr\" style=\"box-sizing: border-box; background: rgb(247, 248, 249); unicode-bidi: embed; color: #ffffff !important; position: relative;\">&nbsp;</div>\r\n         </div>\r\n      </div>\r\n   </div>','https://zetawiki.com/wiki/MySQL_%EC%9B%90%EA%B2%A9_%EC%A0%91%EC%86%8D_%ED%97%88%EC%9A%A9','',8,0,15,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-03-12 16:27:52',1,'2022-03-12 16:27:52','112.222.138.204','','','','','','','','','','','',''),(531,-531,'',531,0,0,'','','html1','[Arduino] 아두이노 ERPROM에 구조체 사용법','<h2 class=\"hd-heading lts-narrow p-name\" role=\"heading\" style=\"box-sizing: border-box; font-size: 32px; margin: 0px; padding: 0px 0px 5px; letter-spacing: -1px; font-weight: 500; line-height: 1.3; font-family: &quot;Noto Sans CJK KR&quot;, 본고딕, &quot;Noto Sans Korean&quot;, &quot;맑은 고딕&quot;, &quot;Malgun Gothic&quot;, 돋움, Dotum, sans-serif; color: #555555; text-align: center; background-color: #ffffff;\"><a href=\"https://comocloud.tistory.com/200\" style=\"box-sizing: border-box; background-color: transparent; color: #222222; text-decoration-line: none;\" target=\"_blank\">아두이노 EEPROM에 구조체 저장</a></h2>\r\n<p style=\"box-sizing: border-box; color: #555555; font-family: &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, 굴림, gulim, 돋움, dotum, &quot;Microsoft NeoGothic&quot;, &quot;Droid sans&quot;, sans-serif; font-size: 14px; background-color: #f8f8f8;\">MPU 종류&nbsp; /&nbsp; 용량 크기</p>\r\n<p style=\"box-sizing: border-box; color: #555555; font-family: &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, 굴림, gulim, 돋움, dotum, &quot;Microsoft NeoGothic&quot;, &quot;Droid sans&quot;, sans-serif; font-size: 14px; background-color: #f8f8f8;\">ATmega128 : 4KiB</p>\r\n<p style=\"box-sizing: border-box; color: #555555; font-family: &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, 굴림, gulim, 돋움, dotum, &quot;Microsoft NeoGothic&quot;, &quot;Droid sans&quot;, sans-serif; font-size: 14px; background-color: #f8f8f8;\">ATmega328 : 1KiB</p>\r\n<p style=\"box-sizing: border-box; color: #555555; font-family: &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, 굴림, gulim, 돋움, dotum, &quot;Microsoft NeoGothic&quot;, &quot;Droid sans&quot;, sans-serif; font-size: 14px; background-color: #f8f8f8;\">ATmega2560 :&nbsp;<span style=\"box-sizing: border-box; color: #333333;\">4KiB</span></p>\r\n<p style=\"box-sizing: border-box; color: #555555; font-family: &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, 굴림, gulim, 돋움, dotum, &quot;Microsoft NeoGothic&quot;, &quot;Droid sans&quot;, sans-serif; font-size: 14px; background-color: #f8f8f8;\">ATmega16u2 : 0.5KiB</p>\r\n<p style=\"box-sizing: border-box; color: #555555; font-family: &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, 굴림, gulim, 돋움, dotum, &quot;Microsoft NeoGothic&quot;, &quot;Droid sans&quot;, sans-serif; font-size: 14px; background-color: #f8f8f8;\">ATmega32u4 : 1KiB<br style=\"box-sizing: border-box;\" />ATmega4809/4808 : 0.25KiB(256Byte)</p>\r\n<p style=\"box-sizing: border-box; color: #555555; font-family: &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, 굴림, gulim, 돋움, dotum, &quot;Microsoft NeoGothic&quot;, &quot;Droid sans&quot;, sans-serif; font-size: 14px; background-color: #f8f8f8;\">&nbsp;</p>\r\n<pre id=\"code_1589208511878\" class=\"c++ arduino\" data-ke-language=\"c++\" data-ke-type=\"codeblock\" style=\"box-sizing: border-box; overflow: auto; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; background-color: #f8f8f8;\"> 코드<span style=\"color: #555555; font-size: 14px;\"></span>\r\n   <code class=\"hljs cpp\" style=\"color: #333333; font-size: 0.85em; box-sizing: border-box; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; padding: 0.5em; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 4px; display: block; overflow-x: auto;\"><span class=\"hljs-meta\" style=\"box-sizing: border-box; color: #999999; font-weight: bold;\">#<span class=\"hljs-meta-keyword\" style=\"box-sizing: border-box;\">include</span><span class=\"hljs-meta-string\" style=\"box-sizing: border-box;\">&lt;EEPROM.h&gt;</span></span></code>\r\n   <code class=\"hljs cpp\" style=\"box-sizing: border-box; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; padding: 0.5em; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 4px; display: block; overflow-x: auto;\"><span class=\"hljs-class\" style=\"color: #333333; box-sizing: border-box;\"><span class=\"hljs-keyword\" style=\"font-size: 0.85em; box-sizing: border-box; font-weight: bold;\">struct</span><span class=\"hljs-title\" style=\"font-size: 0.85em; box-sizing: border-box; color: #445588; font-weight: bold;\">S_test</span><span style=\"font-size: 0.85em;\"> {</span><span style=\"font-size: 11.9px;\"></span></span><span class=\"hljs-keyword\" style=\"color: #333333; font-size: 0.85em; box-sizing: border-box; font-weight: bold;\">    unsigned</span><span class=\"hljs-keyword\" style=\"color: #333333; font-size: 0.85em; box-sizing: border-box; font-weight: bold;\">int</span><span style=\"color: #333333; font-size: 0.85em;\"> num; </span><span class=\"hljs-comment\" style=\"color: #999988; font-size: 0.85em; box-sizing: border-box; font-style: italic;\">// 1 Byte</span><span class=\"hljs-keyword\" style=\"color: #333333; font-size: 0.85em; box-sizing: border-box; font-weight: bold;\">char</span><span style=\"color: #333333; font-size: 0.85em;\"> name[</span><span class=\"hljs-number\" style=\"color: #008080; font-size: 0.85em; box-sizing: border-box;\">24</span><span style=\"color: #333333; font-size: 0.85em;\">]; </span><span class=\"hljs-comment\" style=\"font-size: 0.85em; box-sizing: border-box;\"><font color=\"#999988\"><i>// 24 Byte (한글은 1글자 = 3 Byte이다)</i></font></span><span style=\"color: #333333; font-size: 0.85em;\">};</span></code>\r\n   <code class=\"hljs cpp\" style=\"color: #333333; font-size: 0.85em; box-sizing: border-box; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace; padding: 0.5em; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-radius: 4px; display: block; overflow-x: auto;\"><span class=\"hljs-function\" style=\"box-sizing: border-box;\"><span class=\"hljs-keyword\" style=\"box-sizing: border-box; font-weight: bold;\">void</span><span class=\"hljs-title\" style=\"box-sizing: border-box; color: #990000; font-weight: bold;\">setup</span><span class=\"hljs-params\" style=\"box-sizing: border-box;\">()</span></span>{\r\n    Serial.begin(<span class=\"hljs-number\" style=\"box-sizing: border-box; color: #008080;\">9600</span>);\r\n    <span class=\"hljs-comment\" style=\"box-sizing: border-box; color: #999988; font-style: italic;\">// 구조체의 크기를 측정</span>\r\n    Serial.println(<span class=\"hljs-keyword\" style=\"box-sizing: border-box; font-weight: bold;\">sizeof</span>(S_test)); \r\n    <span class=\"hljs-comment\" style=\"box-sizing: border-box; color: #999988; font-style: italic;\">// 구조체 선언 후 값 할당</span>\r\n    S_test t1 = {<span class=\"hljs-number\" style=\"box-sizing: border-box; color: #008080;\">1</span>, <span class=\"hljs-string\" style=\"box-sizing: border-box; color: #dd1144;\">\"테스트글자입니다\"</span>};\r\n    S_test t2 = {<span class=\"hljs-number\" style=\"box-sizing: border-box; color: #008080;\">2</span>, <span class=\"hljs-string\" style=\"box-sizing: border-box; color: #dd1144;\">\"코모클라우드\"</span>};\r\n    S_test t3 = {<span class=\"hljs-number\" style=\"box-sizing: border-box; color: #008080;\">3</span>, <span class=\"hljs-string\" style=\"box-sizing: border-box; color: #dd1144;\">\"환영합니다!\"</span>};\r\n    <span class=\"hljs-comment\" style=\"box-sizing: border-box; color: #999988; font-style: italic;\">// EEPROM에 구조체 저장 (측정한 구조체의 Byte 크기에 맞게 값을 설정한다)</span>\r\n    EEPROM.put(<span class=\"hljs-number\" style=\"box-sizing: border-box; color: #008080;\">0</span>, t1);\r\n    EEPROM.put(<span class=\"hljs-number\" style=\"box-sizing: border-box; color: #008080;\">26</span>, t2);\r\n    EEPROM.put(<span class=\"hljs-number\" style=\"box-sizing: border-box; color: #008080;\">52</span>, t3);\r\n    <span class=\"hljs-comment\" style=\"box-sizing: border-box; color: #999988; font-style: italic;\">// 저장한 데이터를 받아올 구조체 선언</span><span class=\"hljs-class\" style=\"box-sizing: border-box;\"><span class=\"hljs-keyword\" style=\"box-sizing: border-box; font-weight: bold;\">struct</span><span class=\"hljs-title\" style=\"box-sizing: border-box; color: #445588; font-weight: bold;\">S_test</span><span class=\"hljs-title\" style=\"box-sizing: border-box; color: #445588; font-weight: bold;\">a</span>, <span class=\"hljs-title\" style=\"box-sizing: border-box; color: #445588; font-weight: bold;\">b</span>, <span class=\"hljs-title\" style=\"box-sizing: border-box; color: #445588; font-weight: bold;\">c</span>;</span><span class=\"hljs-comment\" style=\"box-sizing: border-box; color: #999988; font-style: italic;\">// EEPROM에서 데이터 읽어온 후 구조체에 저장</span>\r\n    EEPROM.get(<span class=\"hljs-number\" style=\"box-sizing: border-box; color: #008080;\">0</span>, a);    \r\n    EEPROM.get(<span class=\"hljs-number\" style=\"box-sizing: border-box; color: #008080;\">26</span>, b);    \r\n    EEPROM.get(<span class=\"hljs-number\" style=\"box-sizing: border-box; color: #008080;\">52</span>, c);\r\n    <span class=\"hljs-comment\" style=\"box-sizing: border-box; color: #999988; font-style: italic;\">// 구조체 출력</span>\r\n    Serial.println((String) <span class=\"hljs-string\" style=\"box-sizing: border-box; color: #dd1144;\">\"00:\"</span> + a.num + <span class=\"hljs-string\" style=\"box-sizing: border-box; color: #dd1144;\">\", \"</span> + a.name);\r\n    Serial.println((String) <span class=\"hljs-string\" style=\"box-sizing: border-box; color: #dd1144;\">\"26:\"</span> + b.num + <span class=\"hljs-string\" style=\"box-sizing: border-box; color: #dd1144;\">\", \"</span> + b.name);\r\n    Serial.println((String) <span class=\"hljs-string\" style=\"box-sizing: border-box; color: #dd1144;\">\"52:\"</span> + c.num + <span class=\"hljs-string\" style=\"box-sizing: border-box; color: #dd1144;\">\", \"</span> + c.name);\r\n}\r\n<span class=\"hljs-function\" style=\"box-sizing: border-box;\"><span class=\"hljs-keyword\" style=\"box-sizing: border-box; font-weight: bold;\">void</span><span class=\"hljs-title\" style=\"box-sizing: border-box; color: #990000; font-weight: bold;\">loop</span><span class=\"hljs-params\" style=\"box-sizing: border-box;\">()</span></span>{\r\n}</code>\r\n   <span style=\"color: #555555; font-size: 14px;\"></span></pre>\r\n<p style=\"box-sizing: border-box; color: #555555; font-family: &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, 굴림, gulim, 돋움, dotum, &quot;Microsoft NeoGothic&quot;, &quot;Droid sans&quot;, sans-serif; font-size: 14px; background-color: #f8f8f8;\">* 구조체의 크기가 홀수 바이트인 경우, Padding해서 짝수 바이트로 만든다. 위의 경우도 구조체의 변수는 총 25Byte지만, Padding해서 26Byte로 만들었다.</p>\r\n<p style=\"box-sizing: border-box; color: #555555; font-family: &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, 굴림, gulim, 돋움, dotum, &quot;Microsoft NeoGothic&quot;, &quot;Droid sans&quot;, sans-serif; font-size: 14px; background-color: #f8f8f8;\">&nbsp;&nbsp;</p>\r\n<p style=\"box-sizing: border-box; color: #555555; font-family: &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, 굴림, gulim, 돋움, dotum, &quot;Microsoft NeoGothic&quot;, &quot;Droid sans&quot;, sans-serif; font-size: 14px; background-color: #f8f8f8;\">실행 결과&nbsp;</p>\r\n<p style=\"box-sizing: border-box; color: #555555; font-family: &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, 굴림, gulim, 돋움, dotum, &quot;Microsoft NeoGothic&quot;, &quot;Droid sans&quot;, sans-serif; font-size: 14px; background-color: #f8f8f8;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-filename=\"캡처.PNG\" data-origin-width=\"722\" data-origin-height=\"333\" data-ke-mobilestyle=\"widthContent\" style=\"box-sizing: border-box; margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; text-align: center; color: #555555; font-family: &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, 굴림, gulim, 돋움, dotum, &quot;Microsoft NeoGothic&quot;, &quot;Droid sans&quot;, sans-serif; font-size: 14px; background-color: #f8f8f8;\"><span data-url=\"https://blog.kakaocdn.net/dn/UTfwE/btqD6QEwdN1/L7Flp40pNUV6eSMSzHZ2K1/img.png\" data-lightbox=\"lightbox\" data-alt=\"\" style=\"box-sizing: border-box; cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/UTfwE/btqD6QEwdN1/L7Flp40pNUV6eSMSzHZ2K1/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUTfwE%2FbtqD6QEwdN1%2FL7Flp40pNUV6eSMSzHZ2K1%2Fimg.png\" data-filename=\"캡처.PNG\" data-origin-width=\"722\" data-origin-height=\"333\" data-ke-mobilestyle=\"widthContent\" style=\"box-sizing: border-box; border: 0px; vertical-align: middle; max-width: 100%; display: inline-block; width: 722px; margin: 0px; height: auto;\" /></span></figure>\r\n<p><br style=\"box-sizing: border-box; color: #555555; font-family: &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, 굴림, gulim, 돋움, dotum, &quot;Microsoft NeoGothic&quot;, &quot;Droid sans&quot;, sans-serif; font-size: 14px; background-color: #f8f8f8;\" /><br style=\"box-sizing: border-box; color: #555555; font-family: &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, 굴림, gulim, 돋움, dotum, &quot;Microsoft NeoGothic&quot;, &quot;Droid sans&quot;, sans-serif; font-size: 14px; background-color: #f8f8f8;\" /><span style=\"color: #555555; font-family: &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, 굴림, gulim, 돋움, dotum, &quot;Microsoft NeoGothic&quot;, &quot;Droid sans&quot;, sans-serif; font-size: 14px; background-color: #f8f8f8;\">출처:&nbsp;</span><a href=\"https://comocloud.tistory.com/200?category=865078\" style=\"box-sizing: border-box; background-color: #f8f8f8; color: #222222; text-decoration-line: none; font-family: &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, 굴림, gulim, 돋움, dotum, &quot;Microsoft NeoGothic&quot;, &quot;Droid sans&quot;, sans-serif; font-size: 14px;\" target=\"_blank\">https://comocloud.tistory.com/200?category=865078</a><span style=\"color: #555555; font-family: &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, 굴림, gulim, 돋움, dotum, &quot;Microsoft NeoGothic&quot;, &quot;Droid sans&quot;, sans-serif; font-size: 14px; background-color: #f8f8f8;\">&nbsp;[Post-IT!]</span></p>','https://comocloud.tistory.com/200?category=865078','',1,0,3,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-03-14 01:38:58',0,'2022-03-14 01:38:58','192.168.0.1','','','','','','','','','','','',''),(532,-532,'',532,0,0,'','','html1','[Arduino] 아두이노 PID제어','<blockquote class=\"tx-quote-tistory\" style=\"box-sizing: inherit; font-size: medium; line-height: 1.6; color: #666666; margin: 20px auto 0px; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif;\">\r\n   <p style=\"box-sizing: inherit; font-size: 16px; line-height: 1.6; letter-spacing: 0px;\"><span style=\"box-sizing: inherit; font-weight: bolder; color: #5c5c5c; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; font-size: 18px;\"><span style=\"box-sizing: inherit; font-size: 24pt; background-color: #f15f5f; color: #ffffff;\">1. PID 제어 Cruise System구현에 들어가</span></span><span style=\"box-sizing: inherit; font-weight: bolder; color: #5c5c5c; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; font-size: 18px;\"><span style=\"box-sizing: inherit; font-size: 24pt; background-color: #f15f5f; color: #ffffff;\">에</span></span><span style=\"box-sizing: inherit; font-weight: bolder; color: #5c5c5c; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; font-size: 18px;\"><span style=\"box-sizing: inherit; font-size: 24pt; background-color: #f15f5f; color: #ffffff;\">기 전에</span></span></p>\r\n   </blockquote>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\">전에 작성한 글에서는 PID 제어를 사용하지 않은 Cruise System을 구현하였고 그것에 문제점에 대하여 이야기했습니다. 아무런 지식이 없는 상태에서 바로 이글을 보신다면 이해가 어려운 부분이 생길 수 있습니다.&nbsp; 이전 글을 참고하시면서 보시는것을 추천드립니다. 또한 갑자기 난이도가 높아지는것을 느끼실 겁니다. 천천히 내용을 읽어보시고 다른 자료도 참고 부탁드립니다.</p>\r\n<div class=\"txc-textbox\" style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium; border-style: dashed; border-width: 1px; border-color: #9fd331; background-color: #e7fdb5; padding: 10px;\">\r\n   <p style=\"box-sizing: inherit;\">&nbsp;</p>\r\n   <p style=\"box-sizing: inherit;\"><span style=\"box-sizing: inherit; font-weight: bolder;\"><span style=\"box-sizing: inherit; font-size: 14pt;\">- 관련글 -</span></span></p>\r\n   <p style=\"box-sizing: inherit;\"><a href=\"http://kingpodo.tistory.com/33\" target=\"_blank\" style=\"box-sizing: inherit; background-color: transparent;\">2018/07/16 - [IT etc/아두이노로 Cruise system 제작] - 0. Arduino를 사용해서 자동차 Cruise System 구현하기</a></p>\r\n   <p style=\"box-sizing: inherit;\"><a href=\"http://kingpodo.tistory.com/31\" target=\"_blank\" style=\"box-sizing: inherit; background-color: transparent;\">2018/07/10 - [IT etc/아두이노로 Cruise system 제작] - 1. 아두이노 우노(arduino uno) 소개 및 IED 설치</a></p>\r\n   <p style=\"box-sizing: inherit;\"><a href=\"http://kingpodo.tistory.com/35\" target=\"_blank\" style=\"box-sizing: inherit; background-color: transparent;\">2018/07/16 - [IT etc/아두이노로 Cruise system 제작] - 2. 아두이노 IDE 설치 및 기본 사용법</a></p>\r\n   <p style=\"box-sizing: inherit;\"><a href=\"http://kingpodo.tistory.com/36\" target=\"_blank\" style=\"box-sizing: inherit; background-color: transparent;\">2018/07/17 - [IT etc/아두이노로 Cruise system 제작] - 3. Arduino LED 사용법</a></p>\r\n   <p style=\"box-sizing: inherit;\"><a href=\"http://kingpodo.tistory.com/37\" target=\"_blank\" style=\"box-sizing: inherit; background-color: transparent;\">2018/07/17 - [IT etc/아두이노로 Cruise system 제작] - 4. Arduino Switch 사용법</a></p>\r\n   <p style=\"box-sizing: inherit;\"><a href=\"http://kingpodo.tistory.com/38\" target=\"_blank\" style=\"box-sizing: inherit; background-color: transparent;\">2018/07/17 - [IT etc/아두이노로 Cruise system 제작] - 5. Arduino 가변저항기 사용법</a></p>\r\n   <p style=\"box-sizing: inherit;\"><a href=\"http://kingpodo.tistory.com/39\" target=\"_blank\" style=\"box-sizing: inherit; background-color: transparent;\">2018/07/17 - [IT etc/아두이노로 Cruise system 제작] - 6-1. Arduino 초음파센서 사용법</a></p>\r\n   <p style=\"box-sizing: inherit;\"><a href=\"http://kingpodo.tistory.com/40\" target=\"_blank\" style=\"box-sizing: inherit; background-color: transparent;\">2018/07/17 - [IT etc/아두이노로 Cruise system 제작] - 6-2. Arduino 레이저센서 사용법</a></p>\r\n   <p style=\"box-sizing: inherit;\"><a href=\"http://kingpodo.tistory.com/41\" target=\"_blank\" style=\"box-sizing: inherit; background-color: transparent;\">2018/07/17 - [IT etc/아두이노로 Cruise system 제작] - 7. Arduino 모터드라이버 쉴드(L298P) 사용법</a></p>\r\n   <p style=\"box-sizing: inherit;\"><a href=\"http://kingpodo.tistory.com/42\" target=\"_blank\" style=\"box-sizing: inherit; background-color: transparent;\">2018/07/19 - [IT etc/아두이노로 Cruise system 제작] - 8-1. Arduino Car로 Cruise system 구현</a></p>\r\n   <p style=\"box-sizing: inherit;\">&nbsp;</p>\r\n   </div>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\"><br style=\"box-sizing: inherit;\" /></p>\r\n<blockquote class=\"tx-quote-tistory\" style=\"box-sizing: inherit; font-size: medium; line-height: 1.6; color: #666666; margin: 20px auto 0px; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif;\">\r\n   <p style=\"box-sizing: inherit; font-size: 14px; line-height: 1.6; letter-spacing: 0px; padding: 0px; font-family: &quot;Spoqa Han Sans&quot;, sans-serif;\"><span style=\"box-sizing: inherit; font-weight: bolder; color: #5c5c5c; font-size: 18px;\"><span style=\"box-sizing: inherit; font-size: 24pt; background-color: #f15f5f; color: #ffffff;\">2. PID Control</span></span></p>\r\n   </blockquote>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\">PID Control을 사용하여 Arduino Car에 Cruise System을 구현하기 전에 PID Control이 무엇인지 알아보겠습니다.&nbsp; PID 제어는 실제 응용분야에서 많이 사용되는 제어기법입니다. 이러한 PID는 드론, 자동차, 온도등 안정적인 모터를 제어하는 부분에서 사용됩니다. 그러면 Cruise System에 PID Control이 어떻게 사용되는지 알아보겠습니다.&nbsp; 전에 올렸던 글을 보시면 안정적인 속도를&nbsp; 제어하기 위해서는 거리별 단계를 나누어 속도를 통제한다고 하였습니다. 그러면 그 단계가 무수히 많아진다면 좀더 좋은 속도제어가 될것이며 이를 가능하게 하는것이 PID 제어입니다. 아래 그림을 보시면 이해가 편하실 것입니다.</p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\"><br style=\"box-sizing: inherit;\" /></p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium; text-align: center; clear: none; float: none;\"><span class=\"imageblock\" style=\"box-sizing: inherit; display: inline-block; width: 820px; height: auto; max-width: 100%;\"><span data-url=\"https://t1.daumcdn.net/cfile/tistory/9986C7475B503B6F22?download\" data-lightbox=\"lightbox\" style=\"box-sizing: inherit; cursor: pointer;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/9986C7475B503B6F22\" width=\"820\" filename=\"8-5.png\" filemime=\"image/jpeg\" style=\"box-sizing: inherit; border-style: none; cursor: pointer; max-width: 100%; height: auto;\" /></span></span></p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\"><br style=\"box-sizing: inherit;\" /></p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\"><span style=\"box-sizing: inherit; font-weight: bolder; color: #5c5c5c; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; font-size: 16px;\"><span style=\"box-sizing: inherit; font-size: 18pt; background-color: #b5b2ff; color: #ffffff;\">1) PID Control이란?</span></span></p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\">PID Control의 명칭의&nbsp;P는 Proportional(비례), I는 Integral(적분), Differential(미분)의 앞글자를&nbsp;따온 단어입니다. 즉 비례와 적분, 미분을 사용하여 적절한 값을 도출해 제어에 응용하는 기법입니다. 이는 대상의 출력값을 측정하여 이를 원하는 설정값과 비교하여 오차를 계산하고, 이 오차를 이용하여 제어에 필요한 제어값을 계산하는 구조입니다.</p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\"><br style=\"box-sizing: inherit;\" /></p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\">표준적인 형태의 PID 제어기는 아래의 식과 같이 세개의 항을 더하여 제어 값을 계산하도록 되어있습니다.</p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium; text-align: center; clear: none; float: none;\"><span class=\"imageblock\" style=\"box-sizing: inherit; display: inline-block; width: 400px; height: auto; max-width: 100%;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/99AF5D4A5B50404501\" width=\"400\" filename=\"8-6.png\" filemime=\"image/jpeg\" style=\"box-sizing: inherit; border-style: none; max-width: 100%; height: auto;\" /></span></p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\">PID 제어서 각각의 항들은 오차값, 오차값의 적분, 오차값의 미분에 비례하기 때문에 비례-적분-미분 제어기라는 명칭을 가집니다.</p>\r\n<ul style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium; list-style-type: square;\">\r\n   <li style=\"box-sizing: inherit;\">비례항 : 현재 상태에서의 오차값의 크기에 비례한 제어작용을 한다.</li>\r\n   <li style=\"box-sizing: inherit;\">적분항 : 정상상태 오차를 없애는 작용을한다.</li>\r\n   <li style=\"box-sizing: inherit;\">미분항 : 출력값의 급격한 변화에 제동을 걸어 안정성을 향샹시킨다.</li>\r\n   </ul>\r\n<div style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\">PID 제어기는 위와 같은 표준식으로 사용하기도 하지만, 경우에 따라서는 약간 변형된 형태로 사용되는 경우도 많습니다.&nbsp; 그 예가 P제어</div>\r\n<div style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\">PI제어, PD제어가 있습니다. 아래 사진은 PID를 이해하는데 많은 도움이 될꺼같아 위키백과에서 가져왔습니다. 나머지 설명들도 그래프를 같이 봐주시기 바랍니다.</div>\r\n<div style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\"><br style=\"box-sizing: inherit;\" /></div>\r\n<div style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\">\r\n   <p style=\"box-sizing: inherit; text-align: center; clear: none; float: none;\"><span class=\"imageblock\" style=\"box-sizing: inherit; display: inline-block; width: 400px; height: auto; max-width: 100%;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/991B0B4A5B50453E2A\" width=\"400\" filename=\"PID_Compensation_Animated.gif\" filemime=\"image/gif\" style=\"box-sizing: inherit; border-style: none; max-width: 100%; height: auto;\" /></span></p>\r\n   <p style=\"box-sizing: inherit; text-align: center; clear: none; float: none;\">&lt;출처 - 위키백과&gt;</p>\r\n   </div>\r\n<div style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\"><span style=\"box-sizing: inherit; font-weight: bolder; color: #5c5c5c; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; font-size: 16px;\"><span style=\"box-sizing: inherit; font-size: 18pt; background-color: #b5b2ff; color: #ffffff;\">2) P Control</span></span></div>\r\n<div style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\">비례 제어라고 불리며 설정값과 출력값의 편차에 비례해 연속적으로 변화하는 제어 방식으로, 출력값이 설정값에 근접할수록 미세하게 제어가 가능합니다. 비례제어는 출력값과 설정값이 차이가 적어질수록 서서히 감도가 좋아져 규칙적인 사이클이 발생하지만 잔류 편차로 인해 출력값이 설정값과 정확하게 일치하지 못하는 상태가 지속됩니다.</div>\r\n<div style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\"><br style=\"box-sizing: inherit;\" /></div>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\"><span style=\"box-sizing: inherit; font-weight: bolder; color: #5c5c5c; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; font-size: 16px;\"><span style=\"box-sizing: inherit; font-size: 18pt; background-color: #b5b2ff; color: #ffffff;\">3) PI Control</span></span></p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\">비례 제어에서 발생하는 잔류 편차를 적분 동작으로 제어해 오차를 줄이기 위한 제어 방법입니다. 이 적분 제어는 정상 상태이때 오차를 제거하는 동작을 합니다. 전류 편차를 누적한 후 출력량을 늘려 오차를 제거하는 방식으로 적분 동작을 이용해 설정값에 빠르게 도달할 수 있다는 장점이 있습니다.</p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\"><br style=\"box-sizing: inherit;\" /></p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\"><span style=\"box-sizing: inherit; font-weight: bolder; color: #5c5c5c; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; font-size: 16px;\"><span style=\"box-sizing: inherit; font-size: 18pt; background-color: #b5b2ff; color: #ffffff;\">4) PD&nbsp;Control</span></span></p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\">비례 제어에서 과출력 상태에서 생기는 오차를 미분 동작으로 제어하기 위한 제어 방법입니다. 미분 제어는 급격한 출력값의 변동이 필요할 때, 기존 동작의 편차를 파악해서 출력값을 조절해 오차를 줄이고 다시 안정상태로 돌아가는 동작을 합니다. 미분 제어는 안정성을 향상시킬 수 있는 장점이 있습니다.&nbsp;</p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\"><br style=\"box-sizing: inherit;\" /></p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\"><span style=\"box-sizing: inherit; font-weight: bolder; color: #5c5c5c; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; font-size: 16px;\"><span style=\"box-sizing: inherit; font-size: 18pt; background-color: #b5b2ff; color: #ffffff;\">5) PID&nbsp;Control</span></span></p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\">비례 제어를 기본으로, 적분, 미분 제어를 결합한 최종형태입니다. 적분 제어를 통해&nbsp;정상적 상태에서 오차를 줄이고와 응답속도를 높여주고 미분제어를 통해서 과출력 상태에서의 오차를 줄여 안정적인 상태로만듭니다. PID제어는 이런식으로 서로 단점을 보안하고 장점을 극대화 해줍니다.&nbsp;</p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\"><br style=\"box-sizing: inherit;\" /></p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\"><span style=\"box-sizing: inherit; font-weight: bolder; color: #5c5c5c; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; font-size: 16px;\"><span style=\"box-sizing: inherit; font-size: 18pt; background-color: #b5b2ff; color: #ffffff;\">5) Gain 값(제어 파라메터)</span></span></p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\">위에 그래프와 식을 보시면&nbsp;<img class=\"txc-formula\" src=\"https://t1.daumcdn.net/cfile/tistory/9989D54D5B504A6337\" historydata=\"%3Cflashrichtext%20version%3D%221%22%3E%0A%20%20%3Ctextformat%20font%3D%22Dotum%22%20size%3D%2216%22%20color%3D%222236962%22%20bold%3D%22false%22%20italic%3D%22false%22%20underline%3D%22false%22%20url%3D%22%22%20target%3D%22transparent%22%20align%3D%22left%22%20leftMargin%3D%2225%22%20rightMargin%3D%2225%22%20indent%3D%220%22%20leading%3D%220%22%20blockIndent%3D%220%22%20kerning%3D%22true%22%20letterSpacing%3D%220%22%20display%3D%22block%22%3E%28%7B%20K%20%7D_%7B%20p%20%7D%2C%7B%20K%20%7D_%7B%20i%20%7D%2C%7B%20K%20%7D_%7B%20d%20%7D%29%3C/textformat%3E%0A%3C/flashrichtext%3E%2C%0A14%2C%0A0xFFFFFF\" width=\"82\" height=\"27\" style=\"box-sizing: inherit; border-style: none;\" />&nbsp;라는 값이 있는데 이것이 Gain값입니다.&nbsp; 이는 위 그래프를 보시면 gain값이 변화에 따라 어떠한 그래프가 만들어지는지 아실 수 있습니다. 이러한 적절한 Gain값을 구하는 방식은 수학적 방법과 실험적 방법이 있는데 이를 구하여 수정하는 것을 튜닝이라고 합니다. 수학적으로 구하는 방법으로 대표적인 것은 지글러-니콜스 방법이라고합니다. 하지만 매우 어려워서 보통 실험을 통해서 gain값을 수정한다고합니다. 저도 gain값을 직접 넣어 실험을 해보면서 이 값을 구하였습니다.</p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\"><br style=\"box-sizing: inherit;\" /></p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\"><br style=\"box-sizing: inherit;\" /></p>\r\n<blockquote class=\"tx-quote-tistory\" style=\"box-sizing: inherit; font-size: medium; line-height: 1.6; color: #666666; margin: 20px auto 0px; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif;\">\r\n   <p style=\"box-sizing: inherit; font-size: 16px; line-height: 1.6; letter-spacing: 0px;\"><span style=\"box-sizing: inherit; font-weight: bolder; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; color: #5c5c5c; font-size: 18px;\"><span style=\"box-sizing: inherit; font-size: 24pt; background-color: #f15f5f; color: #ffffff;\">3. PID Control Sample Code</span></span></p>\r\n   </blockquote>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\">아래 소스코드는 PID Control의 샘플코드입니다. 아래 코드를 활용해서 PID제어를 하시면 됩니다. 단 요즘 Arduino Library를 보시면 PID를 제공하고 있습니다. 저는 사용해본적이 없지만 그것도 해보시면 좋을꺼 같습니다.<span style=\"font-family: monospace, monospace;\"></span></p>\r\n<p style=\"box-sizing: inherit; color: #333333; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; font-size: medium;\">다음글에서는 이 PID Control을 활용해서 Cruise 시스템을 구현해보겠습니다.</p>\r\n<p><span class=\"title_post\" style=\"box-sizing: inherit; font-weight: bolder; display: block; font-size: 40px; line-height: 1.5em; color: #ffffff; font-family: Avenir, SpoqaHanSans, &quot;Apple SD Gothic Neo&quot;, &quot;Malgun Gothic&quot;, &quot;맑은 고딕&quot;, &quot;Nanum Gothic&quot;, Dotum, 돋움, Helvetica, sans-serif; text-align: center;\"><span style=\"color: #333333; font-size: medium;\">출처:&nbsp;</span><a href=\"https://kingpodo.tistory.com/43\" style=\"box-sizing: inherit; font-size: medium;\" target=\"_blank\">https://kingpodo.tistory.com/43</a><span style=\"color: #333333; font-size: medium;\">&nbsp;[킹포도의 코딩]</span>Arduino Car로 PID 제어</span></p>','https://kingpodo.tistory.com/43','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-03-15 07:57:55',1,'2022-03-15 07:57:55','112.222.138.204','','','','','','','','','','','',''),(533,-533,'',533,0,0,'','','html1','[Fusion360] 퓨전 360 팁','<p>-Pan : 휠버튼 누른채로 드래그</p>\r\n<p>-Orbit : Shift + 휠버튼 누른채로 드래그</p>\r\n<p>-Zoom : 휠버튼 위아래 스크롤</p>\r\n<p>-Fit : 휠버튼 더블클릭 or F6</p>\r\n<p>&nbsp;</p>\r\n<p>--------------------------------------------------------</p>\r\n<p>1. 바디를 만들기 위해서는 먼저 스케치가 필요</p>\r\n<p>2. 스케치를 만들기 위해서는 먼저 평면이 필요</p>\r\n<p>3. 스케치와 바디는 서로 다른 공간에서 작업</p>','','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-03-16 21:32:05',0,'2022-03-16 21:32:05','192.168.219.101','','','','','','','','','','','',''),(534,-534,'',534,0,0,'','','html1','[Fusion360] 스케치 구속','<p>&nbsp;스케치 구속</p>','','',0,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-03-17 20:15:49',1,'2022-03-17 20:15:49','192.168.219.101','','','','','','','','','','','',''),(535,-535,'',535,0,0,'','','html1','[ETC] 초음파 가습기 회로 (Air humidifier driver circuit)','<p>&nbsp;초음파 가습기 회로 (Air humidifier driver circuit)</p>','https://www.google.com/search?q=air+humidifier+driver+circuit&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjYhun5pM32AhUOK5QKHVj0DqwQ_AUoAXoECAEQAw&biw=2560&bih=1297&dpr=1','https://www.aliexpress.com/wholesale?trafficChannel=main&d=y&CatId=0&SearchText=Humidifier+Parts+Circuit+Board&ltype=wholesale&SortType=price_asc&groupsort=1&page=1',1,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-03-17 22:54:06',1,'2022-03-17 22:54:06','192.168.219.101','','','','','','','','','','','',''),(536,-536,'',536,0,0,'','','html1','[Arduino] 아두이노로 스마트폰에 Pushbullet을 이용하여 알림 보내기','<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\"><b>&lt;목표&gt;</b></p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">- 아두이노 IoT 프로젝트를 하다보면, 스마트폰에 알림을 보내야 하는 경우가 참 많다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">하지만 어떻게 해야할지 막막하기만 한데,&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">어플을 만들어야 하는건 아닌지... 블루투스로 해서 해결해야 하는 것인지...</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">오늘 이 포스팅에서 정말 간단하고 쉽게 아두이노로 스마트폰에 알림을 보내는 방법을 소개해보자 한다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<hr contenteditable=\"false\" data-ke-type=\"horizontalRule\" data-ke-style=\"style5\" style=\"border: none; font-size: 0px; line-height: 0; height: 20px; margin: 20px auto; background-image: url(&quot;https://t1.daumcdn.net/keditor/dist/0.4.0/image/divider-line.svg&quot;); background-position: 0px -120px; background-size: 200px 200px; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; font-family: &quot;Noto Sans KR&quot;, sans-serif; cursor: pointer !important;\" />\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\"><b>&lt;준비물&gt;</b></p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">- NodeMCU 또는 wifi모듈 ESP8266과 아두이노(우노, 나노, 메가)</p>\r\n<hr contenteditable=\"false\" data-ke-type=\"horizontalRule\" data-ke-style=\"style5\" style=\"border: none; font-size: 0px; line-height: 0; height: 20px; margin: 20px auto; background-image: url(&quot;https://t1.daumcdn.net/keditor/dist/0.4.0/image/divider-line.svg&quot;); background-position: 0px -120px; background-size: 200px 200px; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; font-family: &quot;Noto Sans KR&quot;, sans-serif; cursor: pointer !important;\" />\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\"><b>&lt;회로도&gt;</b></p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">회로 없음</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<hr contenteditable=\"false\" data-ke-type=\"horizontalRule\" data-ke-style=\"style5\" style=\"border: none; font-size: 0px; line-height: 0; height: 20px; margin: 20px auto; background-image: url(&quot;https://t1.daumcdn.net/keditor/dist/0.4.0/image/divider-line.svg&quot;); background-position: 0px -120px; background-size: 200px 200px; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; font-family: &quot;Noto Sans KR&quot;, sans-serif; cursor: pointer !important;\" />\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">우선 Pushbullet 과 PushingBox 사이트를 이용해야한다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">둘 다 무료이고, 인터넷만 연결되는 상황이면 사용가능하다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">그리고 구글 계정으로 로그인이 가능하므로 간편하다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\"><a href=\"https://www.pushbullet.com/\" target=\"_blank\" rel=\"noopener\" style=\"color: #666666;\">www.pushbullet.com/</a></p>\r\n<figure id=\"og_1616600561476\" contenteditable=\"false\" data-ke-type=\"opengraph\" data-og-type=\"website\" data-og-title=\"Pushbullet - Your devices working better together\" data-og-description=\"Chat with friends Pushbullet works great on all of your devices, which makes sharing and chatting with friends more convenient than ever.\" data-og-host=\"www.pushbullet.com\" data-og-source-url=\"https://www.pushbullet.com/\" data-og-url=\"https://www.pushbullet.com/\" data-og-image=\"\" style=\"margin: 30px 0px; max-width: 100%; clear: both; padding: 0px; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><a href=\"https://www.pushbullet.com/\" target=\"_blank\" rel=\"noopener\" data-source-url=\"https://www.pushbullet.com/\" style=\"color: #000000; position: relative; box-sizing: border-box; display: block; height: 200px; border: 1px solid rgb(217, 217, 217); text-decoration-line: none; z-index: 1;\">\r\n      <div class=\"og-image\" style=\"margin: 0px; padding: 0px; position: absolute; top: 0px; bottom: 0px; left: 0px; width: 200px; border-right: 1px solid rgb(217, 217, 217); background-size: cover; background-position: center center; background-image: url(&quot;&quot;);\">&nbsp;</div>\r\n      <div class=\"og-text\" style=\"margin: 0px; padding: 33px 46px 0px 39px; position: absolute; inset: 0px 0px 0px 201px; box-sizing: border-box;\">\r\n         <p class=\"og-title\" style=\"padding-right: 0px; padding-left: 0px; font-size: 22px; line-height: 28px; max-width: 467px; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; font-family: &quot;Noto Sans DemiLight&quot;, &quot;Noto Sans KR&quot;, sans-serif; margin-bottom: 10px !important; padding-top: 0px !important; padding-bottom: 0px !important;\">Pushbullet - Your devices working better together</p>\r\n         <p class=\"og-desc\" style=\"padding-right: 0px; padding-left: 0px; font-size: 14px; line-height: normal; color: #909090; text-overflow: ellipsis; overflow: hidden; font-family: &quot;Noto Sans DemiLight&quot;, &quot;Noto Sans KR&quot;, sans-serif; font-stretch: normal; max-height: 42px; -webkit-line-clamp: 2; -webkit-box-orient: vertical; display: -webkit-box; padding-top: 0px !important; padding-bottom: 0px !important;\">Chat with friends Pushbullet works great on all of your devices, which makes sharing and chatting with friends more convenient than ever.</p>\r\n         <p class=\"og-host\" style=\"padding-right: 0px; padding-left: 0px; font-size: 14px; line-height: 1.6; color: #909090; position: absolute; bottom: 24px; font-family: AvenirNext, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">www.pushbullet.com</p>\r\n         </div>\r\n      </a></figure>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\"><a href=\"https://www.pushingbox.com/\" target=\"_blank\" rel=\"noopener\" style=\"color: #666666;\">www.pushingbox.com/</a></p>\r\n<figure id=\"og_1616600575242\" contenteditable=\"false\" data-ke-type=\"opengraph\" data-og-type=\"website\" data-og-title=\"PushingBox - Notifications for your Internet of Things devices\" data-og-description=\"Simple API PushingBox has only one API that you can trigger by HTTP request (GET/POST) or Email. You can call PushingBox from almost anything: Arduino Spark Core IFTTT Email SmartThings HTTP Request Your own script Vera, Fibaro, ... Dozen of services We co\" data-og-host=\"www.pushingbox.com\" data-og-source-url=\"https://www.pushingbox.com/\" data-og-url=\"https://www.pushingbox.com/\" data-og-image=\"\" style=\"margin: 30px 0px; max-width: 100%; clear: both; padding: 0px; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><a href=\"https://www.pushingbox.com/\" target=\"_blank\" rel=\"noopener\" data-source-url=\"https://www.pushingbox.com/\" style=\"color: #000000; position: relative; box-sizing: border-box; display: block; height: 200px; border: 1px solid rgb(217, 217, 217); text-decoration-line: none; z-index: 1;\">\r\n      <div class=\"og-image\" style=\"margin: 0px; padding: 0px; position: absolute; top: 0px; bottom: 0px; left: 0px; width: 200px; border-right: 1px solid rgb(217, 217, 217); background-size: cover; background-position: center center; background-image: url(&quot;&quot;);\">&nbsp;</div>\r\n      <div class=\"og-text\" style=\"margin: 0px; padding: 33px 46px 0px 39px; position: absolute; inset: 0px 0px 0px 201px; box-sizing: border-box;\">\r\n         <p class=\"og-title\" style=\"padding-right: 0px; padding-left: 0px; font-size: 22px; line-height: 28px; max-width: 467px; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; font-family: &quot;Noto Sans DemiLight&quot;, &quot;Noto Sans KR&quot;, sans-serif; margin-bottom: 10px !important; padding-top: 0px !important; padding-bottom: 0px !important;\">PushingBox - Notifications for your Internet of Things devices</p>\r\n         <p class=\"og-desc\" style=\"padding-right: 0px; padding-left: 0px; font-size: 14px; line-height: normal; color: #909090; text-overflow: ellipsis; overflow: hidden; font-family: &quot;Noto Sans DemiLight&quot;, &quot;Noto Sans KR&quot;, sans-serif; font-stretch: normal; max-height: 42px; -webkit-line-clamp: 2; -webkit-box-orient: vertical; display: -webkit-box; padding-top: 0px !important; padding-bottom: 0px !important;\">Simple API PushingBox has only one API that you can trigger by HTTP request (GET/POST) or Email. You can call PushingBox from almost anything: Arduino Spark Core IFTTT Email SmartThings HTTP Request Your own script Vera, Fibaro, ... Dozen of services We co</p>\r\n         <p class=\"og-host\" style=\"padding-right: 0px; padding-left: 0px; font-size: 14px; line-height: 1.6; color: #909090; position: absolute; bottom: 24px; font-family: AvenirNext, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">www.pushingbox.com</p>\r\n         </div>\r\n      </a></figure>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">두 사이트에 접속해서 로그인하고</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">Pushbullet 부터 설정을 해주어야 한다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><span data-url=\"https://blog.kakaocdn.net/dn/dXW2oc/btq0VoG8bDH/9VKhiIvx0OKdQfU4ajNca0/img.png\" data-lightbox=\"lightbox\" data-alt=\"\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/dXW2oc/btq0VoG8bDH/9VKhiIvx0OKdQfU4ajNca0/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdXW2oc%2Fbtq0VoG8bDH%2F9VKhiIvx0OKdQfU4ajNca0%2Fimg.png\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 860px; margin: 0px; height: auto;\" /></span></figure>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">Devices 를 누르면 처음에 디바이스가 없는 상태일 것이다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">필자는 등록을 했기에 목록에 장치가 하나 잡혀있는 상태이다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">이제 스마트폰에서 똑같이 Pushbullet 어플을 설치해야 한다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\"><a href=\"https://play.google.com/store/apps/details?id=com.pushbullet.android&amp;referrer=utm_source%3Dpushbullet.com\" target=\"_blank\" rel=\"noopener\" style=\"color: #666666;\">play.google.com/store/apps/details?id=com.pushbullet.android&amp;referrer=utm_source%3Dpushbullet.com</a></p>\r\n<figure id=\"og_1616601326661\" contenteditable=\"false\" data-ke-type=\"opengraph\" data-og-type=\"website\" data-og-title=\"Pushbullet - SMS on PC and more - Google Play 앱\" data-og-description=\"Pushbullet is &quot;the app you never knew you needed&quot;, according to CNET. Here\'s why: Stay Connected • Conveniently send and receive SMS messages from your computer • Reply to messages from many popular apps including WhatsApp, Kik, and Facebook Messenger \" data-og-host=\"play.google.com\" data-og-source-url=\"https://play.google.com/store/apps/details?id=com.pushbullet.android&amp;referrer=utm_source%3Dpushbullet.com\" data-og-url=\"https://play.google.com/store/apps/details?id=com.pushbullet.android&amp;hl=ko&amp;gl=KR\" data-og-image=\"https://scrap.kakaocdn.net/dn/cOGemh/hyJD0Cmh44/MbDk0wcGv99h24coG6vk41/img.png?width=512&amp;height=250&amp;face=0_0_512_250,https://scrap.kakaocdn.net/dn/ouaso/hyJDYkdKfU/r3aHJ6kQL8j76MXnsF88JK/img.png?width=600&amp;height=300&amp;face=0_0_600_300,https://scrap.kakaocdn.net/dn/bAsXEB/hyJDZpUjNb/nDRztstmpbZkThhFl8LKC0/img.jpg?width=480&amp;height=360&amp;face=0_0_480_360\" style=\"margin: 30px 0px; max-width: 100%; clear: both; padding: 0px; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><a href=\"https://play.google.com/store/apps/details?id=com.pushbullet.android&amp;referrer=utm_source%3Dpushbullet.com\" target=\"_blank\" rel=\"noopener\" data-source-url=\"https://play.google.com/store/apps/details?id=com.pushbullet.android&amp;referrer=utm_source%3Dpushbullet.com\" style=\"color: #000000; position: relative; box-sizing: border-box; display: block; height: 200px; border: 1px solid rgb(217, 217, 217); text-decoration-line: none; z-index: 1;\">\r\n      <div class=\"og-image\" style=\"margin: 0px; padding: 0px; position: absolute; top: 0px; bottom: 0px; left: 0px; width: 200px; border-right: 1px solid rgb(217, 217, 217); background-size: cover; background-position: center center; background-image: url(&quot;https://scrap.kakaocdn.net/dn/cOGemh/hyJD0Cmh44/MbDk0wcGv99h24coG6vk41/img.png?width=512&amp;height=250&amp;face=0_0_512_250,https://scrap.kakaocdn.net/dn/ouaso/hyJDYkdKfU/r3aHJ6kQL8j76MXnsF88JK/img.png?width=600&amp;height=300&amp;face=0_0_600_300,https://scrap.kakaocdn.net/dn/bAsXEB/hyJDZpUjNb/nDRztstmpbZkThhFl8LKC0/img.jpg?width=480&amp;height=360&amp;face=0_0_480_360&quot;);\">&nbsp;</div>\r\n      <div class=\"og-text\" style=\"margin: 0px; padding: 33px 46px 0px 39px; position: absolute; inset: 0px 0px 0px 201px; box-sizing: border-box;\">\r\n         <p class=\"og-title\" style=\"padding-right: 0px; padding-left: 0px; font-size: 22px; line-height: 28px; max-width: 467px; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; font-family: &quot;Noto Sans DemiLight&quot;, &quot;Noto Sans KR&quot;, sans-serif; margin-bottom: 10px !important; padding-top: 0px !important; padding-bottom: 0px !important;\">Pushbullet - SMS on PC and more - Google Play 앱</p>\r\n         <p class=\"og-desc\" style=\"padding-right: 0px; padding-left: 0px; font-size: 14px; line-height: normal; color: #909090; text-overflow: ellipsis; overflow: hidden; font-family: &quot;Noto Sans DemiLight&quot;, &quot;Noto Sans KR&quot;, sans-serif; font-stretch: normal; max-height: 42px; -webkit-line-clamp: 2; -webkit-box-orient: vertical; display: -webkit-box; padding-top: 0px !important; padding-bottom: 0px !important;\">Pushbullet is \"the app you never knew you needed\", according to CNET. Here\'s why: Stay Connected • Conveniently send and receive SMS messages from your computer • Reply to messages from many popular apps including WhatsApp, Kik, and Facebook Messenger</p>\r\n         <p class=\"og-host\" style=\"padding-right: 0px; padding-left: 0px; font-size: 14px; line-height: 1.6; color: #909090; position: absolute; bottom: 24px; font-family: AvenirNext, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">play.google.com</p>\r\n         </div>\r\n      </a></figure>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">똑같이 스마트폰에서 구글계정으로 로그인하고 다시 컴퓨터에서 Pushbullet을 확인하면 장치가 등록된 것을 확인할 수 있다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">이제 내 스마트폰에 알림을 보내보자.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">방법은 간단하다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">그냥 디바이스에서 자신의 핸드폰을 선택하고</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">채팅을 치면 된다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><span data-url=\"https://blog.kakaocdn.net/dn/bMTsFO/btq0Vpzhppe/2fIuDEIFcF2CZE7j8CLFJk/img.png\" data-lightbox=\"lightbox\" data-alt=\"\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/bMTsFO/btq0Vpzhppe/2fIuDEIFcF2CZE7j8CLFJk/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMTsFO%2Fbtq0Vpzhppe%2F2fIuDEIFcF2CZE7j8CLFJk%2Fimg.png\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 860px; margin: 0px; height: auto;\" /></span></figure>\r\n<figure class=\"imagegridblock\" style=\"margin: 20px 0px; max-width: 100%; clear: both; padding: 0px; position: relative; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\">\r\n   <div class=\"image-container\" style=\"margin: 0px; padding: 0px; display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap;\"><span data-url=\"https://blog.kakaocdn.net/dn/pFN7X/btq0XpZ6ihP/UQS5k3Aetk3ZBxAyKWEn91/img.png\" data-lightbox=\"lightbox\" data-origin-width=\"0\" data-origin-height=\"0\" style=\"cursor: pointer; margin-right: 10px; margin-top: 2px !important; width: 424.984px;\"><img src=\"https://blog.kakaocdn.net/dn/pFN7X/btq0XpZ6ihP/UQS5k3Aetk3ZBxAyKWEn91/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpFN7X%2Fbtq0XpZ6ihP%2FUQS5k3Aetk3ZBxAyKWEn91%2Fimg.png\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 424.984px; margin: 0px; height: inherit;\" /></span><span data-url=\"https://blog.kakaocdn.net/dn/KXLyF/btq0YhmXRkZ/XjPGh14AQJuOrGJRuspKU0/img.png\" data-lightbox=\"lightbox\" data-origin-width=\"0\" data-origin-height=\"0\" style=\"cursor: pointer; margin-right: 0px !important; margin-top: 2px !important; width: 424.984px;\"><img src=\"https://blog.kakaocdn.net/dn/KXLyF/btq0YhmXRkZ/XjPGh14AQJuOrGJRuspKU0/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKXLyF%2Fbtq0YhmXRkZ%2FXjPGh14AQJuOrGJRuspKU0%2Fimg.png\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 424.984px; margin: 0px; height: inherit;\" /></span></div>\r\n   </figure>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">잠금화면에서도 알림이 잘 뜨는 것을 확인할 수 있고,</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">상태바를 내려서도 알림이 잘 온 것을 확인할 수 있다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">물론 알림이 올 때, 소리도 같이 울린다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">이제 Pushbullet 세팅은 끝났다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">아두이노에서 알림을 주기 위해서는&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">PushingBox 를 이용해야 한다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">똑같이 PushingBox 에서 구글계정으로 로그인을 한다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">그리고 우선 서비스를 하나 만들어야 한다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><span data-url=\"https://blog.kakaocdn.net/dn/loGVb/btq0VplJTsA/7p5DL3mwALPJlg0JhOn2zK/img.png\" data-lightbox=\"lightbox\" data-alt=\"\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/loGVb/btq0VplJTsA/7p5DL3mwALPJlg0JhOn2zK/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FloGVb%2Fbtq0VplJTsA%2F7p5DL3mwALPJlg0JhOn2zK%2Fimg.png\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 860px; margin: 0px; height: auto;\" /></span></figure>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">서비스 항목 중에서 Pushbullet을 선택한다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><span data-url=\"https://blog.kakaocdn.net/dn/b1pv08/btq0Y3PxY48/DKvxDn4R1SeNytXXEkS1AK/img.png\" data-lightbox=\"lightbox\" data-alt=\"\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/b1pv08/btq0Y3PxY48/DKvxDn4R1SeNytXXEkS1AK/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1pv08%2Fbtq0Y3PxY48%2FDKvxDn4R1SeNytXXEkS1AK%2Fimg.png\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 860px; margin: 0px; height: auto;\" /></span></figure>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">Pushbullet을 선택하고</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">몇가지 항목을 입력해야 한다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><span data-url=\"https://blog.kakaocdn.net/dn/bXhSLk/btq0YhHd4nq/wl6yKk9SXKOgKIECN1YiNK/img.png\" data-lightbox=\"lightbox\" data-alt=\"\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/bXhSLk/btq0YhHd4nq/wl6yKk9SXKOgKIECN1YiNK/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXhSLk%2Fbtq0YhHd4nq%2Fwl6yKk9SXKOgKIECN1YiNK%2Fimg.png\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 591px; margin: 0px; height: auto;\" /></span></figure>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">첫번째 항목은 마음대로 입력하면 된다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">프로젝트 이름을 입력하면 되겠다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">두번째 항목이 제일 중요한데 Access token을 알아야 한다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">이 항목은 Pushbullet 에서 발급을 받으면 된다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">Pushbullet 화면에서 setting에 들어가면 떡하니 Create Access Token 이라는 버튼이 존재한다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">그 버튼을 누르고 토큰을 복사해서 위의 입력창에 붙여넣기 하면 된다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">그다음에 My Scenarios 에서 시나리오를 등록해야 한다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><span data-url=\"https://blog.kakaocdn.net/dn/rA9Pu/btq0Vo8eNsn/gEwA11yxXk6UgfBD8PAi20/img.png\" data-lightbox=\"lightbox\" data-alt=\"\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/rA9Pu/btq0Vo8eNsn/gEwA11yxXk6UgfBD8PAi20/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrA9Pu%2Fbtq0Vo8eNsn%2FgEwA11yxXk6UgfBD8PAi20%2Fimg.png\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 860px; margin: 0px; height: auto;\" /></span></figure>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">위와같이 임의로 항목이름을 넣고 Add 를 누르자.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><span data-url=\"https://blog.kakaocdn.net/dn/yfELw/btq0ZMz2dHU/7z2O4DUcJsX5Xt26EYZtKK/img.png\" data-lightbox=\"lightbox\" data-alt=\"\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/yfELw/btq0ZMz2dHU/7z2O4DUcJsX5Xt26EYZtKK/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyfELw%2Fbtq0ZMz2dHU%2F7z2O4DUcJsX5Xt26EYZtKK%2Fimg.png\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 860px; margin: 0px; height: auto;\" /></span></figure>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">그리고 Add an Action 버튼을 누르자.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><span data-url=\"https://blog.kakaocdn.net/dn/w521Y/btq0SGu2bX0/FQsD8lBESbpPK8uWhSpzj1/img.png\" data-lightbox=\"lightbox\" data-alt=\"\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/w521Y/btq0SGu2bX0/FQsD8lBESbpPK8uWhSpzj1/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw521Y%2Fbtq0SGu2bX0%2FFQsD8lBESbpPK8uWhSpzj1%2Fimg.png\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 860px; margin: 0px; height: auto;\" /></span></figure>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">자신의 Pushbullet 이름을 확인하고 Add an action with this service 버튼을 누르자.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><span data-url=\"https://blog.kakaocdn.net/dn/cgerdb/btq0UcmGYe7/E3fUn7qPTtUrUSkvJ9Ro71/img.png\" data-lightbox=\"lightbox\" data-alt=\"\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/cgerdb/btq0UcmGYe7/E3fUn7qPTtUrUSkvJ9Ro71/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcgerdb%2Fbtq0UcmGYe7%2FE3fUn7qPTtUrUSkvJ9Ro71%2Fimg.png\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 594px; margin: 0px; height: auto;\" /></span></figure>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">알림 내용을 위의 창에서 설정을 해줄 수 있다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">알림창 제목과 알림 메세지 내용을 입력해주면 된다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">사진을 보내고 싶은 경우 URL로 해서 입력해주면 되는 듯 하다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><span data-url=\"https://blog.kakaocdn.net/dn/dfh8sL/btq0YhN08uj/O4PWSfvHHcc3XT60yLhBCk/img.png\" data-lightbox=\"lightbox\" data-alt=\"\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/dfh8sL/btq0YhN08uj/O4PWSfvHHcc3XT60yLhBCk/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdfh8sL%2Fbtq0YhN08uj%2FO4PWSfvHHcc3XT60yLhBCk%2Fimg.png\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 860px; margin: 0px; height: auto;\" /></span></figure>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\"><span style=\"color: #333333;\">시나리오를 등록했으면 이제 Test 를 해보자.</span></p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">스마트폰에 알림이 잘 뜨면 성공인 것이다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">이제는 아두이노에서 세팅만 해주면 된다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">아두이노에서 필요한 항목은 PushingBox 의 Device ID 가 필요하다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><span data-url=\"https://blog.kakaocdn.net/dn/diGsNr/btq0Y3BZ3Iz/9ZrLReZYMsx6lKl0JvmSAK/img.png\" data-lightbox=\"lightbox\" data-alt=\"\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/diGsNr/btq0Y3BZ3Iz/9ZrLReZYMsx6lKl0JvmSAK/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdiGsNr%2Fbtq0Y3BZ3Iz%2F9ZrLReZYMsx6lKl0JvmSAK%2Fimg.png\" data-origin-width=\"0\" data-origin-height=\"0\" data-ke-mobilestyle=\"widthContent\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 332px; margin: 0px; height: auto;\" /></span></figure>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">조그맣게 나와있으므로 찾기 힘들 수도 있다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">아두이노 코드에서 핵심 내용만 설명해보자면</p>\r\n<pre id=\"code_1616602708159\" class=\"c++ arduino\" data-ke-language=\"c++\" data-ke-type=\"codeblock\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word;\">\r\n   <code class=\"hljs cpp\" style=\"margin: 0px; padding: 20px; display: block; overflow-x: auto; background: rgb(43, 43, 43); color: #bababa;\">    client.print(F(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"GET /pushingbox?devid=\"</span>));\r\n    client.print(DEVICEID);\r\n    client.print(F(<span class=\"hljs-string\" style=\"color: #6a8759;\">\" HTTP/1.1\\r\\n\"</span>));\r\n    client.print(F(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"Host: api.pushingbox.com\\r\\n\"</span>));\r\n    client.print(F(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"User-Agent: Arduino\\r\\n\"</span>));\r\n    client.print(F(<span class=\"hljs-string\" style=\"color: #6a8759;\">\"\\r\\n\\r\\n\"</span>));</code>\r\n   </pre>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">위의 코드가 PushingBox 사이트로 신호를 보내는 코드이다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">자신의 Device ID 를 입력하면 된다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">그러면 Device ID로 신호가 들어오면 PushingBox 에서 Pushbullet 으로 신호를 다시 보내게 되며,</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">Pushbullet에서 스마트폰으로 또 신호를 보내게 된다.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">코드로 해서 테스트를 해보자.</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\"><b>&lt;코드&gt;</b></p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 24px; padding-right: 0px; padding-left: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<pre id=\"code_1616600107667\" class=\"c++ arduino\" data-ke-language=\"c++\" data-ke-type=\"codeblock\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word;\">\r\n   <code class=\"hljs cpp\" style=\"margin: 0px; padding: 20px; display: block; overflow-x: auto; background: rgb(43, 43, 43); color: #bababa;\"><span class=\"hljs-meta\" style=\"color: #7f7f7f;\">#<span class=\"hljs-meta-keyword\">include</span><span class=\"hljs-meta-string\">&lt;ESP8266WiFi.h&gt;</span></span><span class=\"hljs-meta\" style=\"color: #7f7f7f;\">#<span class=\"hljs-meta-keyword\">ifndef</span> STASSID</span><span class=\"hljs-meta\" style=\"color: #7f7f7f;\">#<span class=\"hljs-meta-keyword\">define</span> STASSID <span class=\"hljs-meta-string\">\"\"</span></span><span class=\"hljs-meta\" style=\"color: #7f7f7f;\">#<span class=\"hljs-meta-keyword\">define</span> STAPSK  <span class=\"hljs-met','https://diyver.tistory.com/152?category=891475','',1,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-03-17 23:42:24',0,'2022-03-17 23:42:24','192.168.219.101','','','','','','','','','','','',''),(537,-537,'',537,0,0,'','','html1','[Arduino] ESP32, How to enable WDT on ESP32 using Arduino IDE','<header class=\"entry-header\" style=\"box-sizing: inherit; text-align: justify; margin-bottom: 10px; font-family: poppins, sans-serif; background-color: #ffffff;\">\r\n   <div class=\"entry-box\" style=\"box-sizing: inherit;\">\r\n      <header class=\"entry-header\" style=\"box-sizing: inherit; margin-bottom: 10px;\">\r\n         <h1 class=\"entry-title\" style=\"box-sizing: inherit; overflow-wrap: break-word; font-size: 2.5em; margin: 0px; clear: both; line-height: 36px; color: #313131; letter-spacing: 0.25px; text-align: left;\">How to enable hardware WDT on ESP32 using Arduino IDE</h1>\r\n         <span class=\"entry-meta\" style=\"box-sizing: inherit; margin-bottom: 25px;\"><span class=\"posted-on\" style=\"box-sizing: inherit;\"><time class=\"entry-date published\" datetime=\"2020-05-05T13:38:03+02:00\" style=\"box-sizing: inherit; font-size: 9px; letter-spacing: 1.5px; text-transform: uppercase; color: #999999;\">MAY 5, 2020</time></span></span></header>\r\n      <div class=\"entry-content\" style=\"box-sizing: inherit; font-size: 1.3em; margin: 0px; line-height: 2; letter-spacing: 0.2px; font-family: montserrat, sans-serif; padding-bottom: 7px; text-align: start;\">\r\n         <p style=\"box-sizing: inherit; overflow-wrap: break-word; line-height: 2; letter-spacing: 0.2px; padding-bottom: 7px;\">Watchdog timer (WDT) is an important feature for hardware devices like ESP32 or Arduino that need to auto recover from all kind of unexpected failures. On a&nbsp;<a href=\"https://iotassistant.io/raspberry-pi/how-to-set-watchdog-timer-raspberrypi/\" style=\"box-sizing: inherit; background-color: transparent; color: #000000; transition: color 0.3s ease 0s, background-color 0.3s ease 0s, border-color 0.3s ease 0s;\" target=\"_blank\">previous post</a>&nbsp;I wrote about how WDT works and how to set WDT on a Raspberry Pi, to make sure it stays up and running 24/7.</p>\r\n         <p style=\"box-sizing: inherit; overflow-wrap: break-word; line-height: 2; letter-spacing: 0.2px; padding-bottom: 7px;\">If we look at the esp-idf documentation about&nbsp;<a href=\"https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/wdts.html\" style=\"box-sizing: inherit; background-color: transparent; color: #000000; transition: color 0.3s ease 0s, background-color 0.3s ease 0s, border-color 0.3s ease 0s;\" target=\"_blank\">ESP32 WDT</a>&nbsp;we can see that ESP32 comes with an&nbsp;<span style=\"box-sizing: inherit; font-weight: 700;\">interrupt watchdog&nbsp;</span>and a&nbsp;<span style=\"box-sizing: inherit; font-weight: 700;\">task watchdog timer api.&nbsp;</span>What many people are looking for is the task watchdog timer and I will show you in this article how to implement it using Arduino IDE.&nbsp;</p>\r\n         <h2 style=\"box-sizing: inherit; overflow-wrap: break-word; clear: both; font-size: 1.7em; line-height: 31.824px; margin-block: 0px;\">Implementing ESP32 hardware watchdog timer using Arduino IDE</h2>\r\n         <p style=\"box-sizing: inherit; overflow-wrap: break-word; line-height: 2; letter-spacing: 0.2px; padding-bottom: 7px;\">On ESP32, many people implement manually some sort of watchdog timer using flags and loops. This is NOT how it should be done, especially since ESP32 comes with a hardware watchdog timer.</p>\r\n         <p style=\"box-sizing: inherit; overflow-wrap: break-word; line-height: 2; letter-spacing: 0.2px; padding-bottom: 7px;\">This code shows you how to properly implement WDT on ESP32 using Arduino IDE:&nbsp;</p>\r\n         <p style=\"box-sizing: inherit; overflow-wrap: break-word; line-height: 2; letter-spacing: 0.2px; padding-bottom: 7px;\"><span style=\"font-family: &quot;Source Code Pro&quot;, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; letter-spacing: 0.2px; white-space: pre-wrap; background-color: #f9f9f9;\">#include &lt;esp_task_wdt.h&gt;\r\n//3 seconds WDT\r\n#define WDT_TIMEOUT 3\r\nvoid setup() {\r\n  Serial.begin(115200);\r\n  Serial.println(\"Configuring WDT...\");\r\n  esp_task_wdt_init(WDT_TIMEOUT, true); //enable panic so ESP32 restarts\r\n  esp_task_wdt_add(NULL); //add current thread to WDT watch\r\n}\r\nint i = 0;\r\nint last = millis();\r\nvoid loop() {\r\n  // resetting WDT every 2s, 5 times only\r\n  if (millis() - last &gt;= 2000 &amp;&amp; i &lt; 5) {\r\n      Serial.println(\"Resetting WDT...\");\r\n      esp_task_wdt_reset();\r\n      last = millis();\r\n      i++;\r\n      if (i == 5) {\r\n        Serial.println(\"Stopping WDT reset. CPU should reboot in 3s\");\r\n      }\r\n  }\r\n}</span></p>\r\n         <p style=\"box-sizing: inherit; overflow-wrap: break-word; line-height: 2; letter-spacing: 0.2px; padding-bottom: 7px;\">Now let’s look at the code. First of all you need to include the&nbsp;<em style=\"box-sizing: inherit;\">esp_task_wdt.h&nbsp;</em>header. This should be available if you have properly installed&nbsp;<a href=\"https://github.com/espressif/arduino-esp32\" style=\"box-sizing: inherit; background-color: transparent; color: #000000; transition: color 0.3s ease 0s, background-color 0.3s ease 0s, border-color 0.3s ease 0s;\" target=\"_blank\">arduino-esp32</a>.</p>\r\n         <p style=\"box-sizing: inherit; overflow-wrap: break-word; line-height: 2; letter-spacing: 0.2px; padding-bottom: 7px;\">In the setup block we need to call two functions:&nbsp;</p>\r\n         <div class=\"enlighter-default enlighter-v-inline enlighter-t-enlighter \" style=\"box-sizing: inherit; font-family: &quot;Source Code Pro&quot;, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; line-height: 1.35em; overflow: inherit; white-space: pre-wrap; overflow-wrap: break-word; margin: 0px; padding: 0px; position: relative; direction: ltr; display: inline-block; color: #939393; border-radius: 3px; border: 1px solid rgb(224, 224, 224); background-color: #fafafa;\"><span class=\"enlighter\" style=\"box-sizing: inherit; display: inline-block; padding: 3px 5px 1px; margin: 0px 2px;\"><span class=\"enlighter-m0\" style=\"box-sizing: inherit; margin: 0px; padding: 0px; line-height: inherit; font-size: 1em; font-family: inherit; color: #0086b3;\">esp_task_wdt_init</span><span class=\"enlighter-g1\" style=\"box-sizing: inherit; margin: 0px; padding: 0px; line-height: inherit; font-size: 1em; font-family: inherit; color: #777777;\">(</span><span class=\"enlighter-text\" style=\"box-sizing: inherit; margin: 0px; padding: 0px; line-height: inherit; font-size: 1em; font-family: inherit; color: #000000;\">uint32_t timeoutSeconds, bool panic</span><span class=\"enlighter-g1\" style=\"box-sizing: inherit; margin: 0px; padding: 0px; line-height: inherit; font-size: 1em; font-family: inherit; color: #777777;\">)</span></span></div>\r\n         &nbsp;and&nbsp;\r\n         <div class=\"enlighter-default enlighter-v-inline enlighter-t-enlighter \" style=\"box-sizing: inherit; font-family: &quot;Source Code Pro&quot;, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; line-height: 1.35em; overflow: inherit; white-space: pre-wrap; overflow-wrap: break-word; margin: 0px; padding: 0px; position: relative; direction: ltr; display: inline-block; color: #939393; border-radius: 3px; border: 1px solid rgb(224, 224, 224); background-color: #fafafa;\"><span class=\"enlighter\" style=\"box-sizing: inherit; display: inline-block; padding: 3px 5px 1px; margin: 0px 2px;\"><span class=\"enlighter-m0\" style=\"box-sizing: inherit; margin: 0px; padding: 0px; line-height: inherit; font-size: 1em; font-family: inherit; color: #0086b3;\">esp_task_wdt_add</span><span class=\"enlighter-g1\" style=\"box-sizing: inherit; margin: 0px; padding: 0px; line-height: inherit; font-size: 1em; font-family: inherit; color: #777777;\">(</span><span class=\"enlighter-text\" style=\"box-sizing: inherit; margin: 0px; padding: 0px; line-height: inherit; font-size: 1em; font-family: inherit; color: #000000;\">TaskHandle_t handle</span><span class=\"enlighter-g1\" style=\"box-sizing: inherit; margin: 0px; padding: 0px; line-height: inherit; font-size: 1em; font-family: inherit; color: #777777;\">)</span></span></div>\r\n         .\r\n         <p>&nbsp;</p>\r\n         <ul style=\"box-sizing: inherit; overflow-wrap: break-word; list-style: none; margin: 0px 0px 12px; padding: 0px 0px 0px 20px; color: #222222;\">\r\n            <li style=\"box-sizing: inherit; margin-bottom: 6px; list-style: disc;\"><em style=\"box-sizing: inherit;\">esp_task_wdt_init</em>&nbsp;is used to initialise WDT with a timeout of&nbsp;<em style=\"box-sizing: inherit;\">timeoutSeconds</em>&nbsp;and with a&nbsp;<em style=\"box-sizing: inherit;\">panic&nbsp;</em>mode set. If&nbsp;<em style=\"box-sizing: inherit;\">panic&nbsp;</em>is set to&nbsp;<em style=\"box-sizing: inherit;\">true</em>, when WDT times out, it will throw a hardware panic and reboot.</li>\r\n            <li style=\"box-sizing: inherit; margin-bottom: 6px; list-style: disc;\"><em style=\"box-sizing: inherit;\">esp_task_wdt_add&nbsp;</em>is used to add a task to WDT. If&nbsp;<em style=\"box-sizing: inherit;\">handle&nbsp;</em>is&nbsp;<em style=\"box-sizing: inherit;\">NULL,&nbsp;</em>the current task is used.&nbsp;</li>\r\n            </ul>\r\n         <p style=\"box-sizing: inherit; overflow-wrap: break-word; line-height: 2; letter-spacing: 0.2px; padding-bottom: 7px;\">Now, the watchdog timer need to be reset&nbsp;<em style=\"box-sizing: inherit;\">BEFORE&nbsp;</em>it times out! This is done with&nbsp;</p>\r\n         <div class=\"enlighter-default enlighter-v-inline enlighter-t-enlighter \" style=\"box-sizing: inherit; font-family: &quot;Source Code Pro&quot;, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; line-height: 1.35em; overflow: inherit; white-space: pre-wrap; overflow-wrap: break-word; margin: 0px; padding: 0px; position: relative; direction: ltr; display: inline-block; color: #939393; border-radius: 3px; border: 1px solid rgb(224, 224, 224); background-color: #fafafa;\"><span class=\"enlighter\" style=\"box-sizing: inherit; display: inline-block; padding: 3px 5px 1px; margin: 0px 2px;\"><span class=\"enlighter-m0\" style=\"box-sizing: inherit; margin: 0px; padding: 0px; line-height: inherit; font-size: 1em; font-family: inherit; color: #0086b3;\">esp_task_wdt_reset</span><span class=\"enlighter-g1\" style=\"box-sizing: inherit; margin: 0px; padding: 0px; line-height: inherit; font-size: 1em; font-family: inherit; color: #777777;\">()</span></span></div>\r\n         &nbsp;executed in the current task.&nbsp;\r\n         <p>&nbsp;</p>\r\n         <p style=\"box-sizing: inherit; overflow-wrap: break-word; line-height: 2; letter-spacing: 0.2px; padding-bottom: 7px;\">You can see that in this example I am initialising the WDT with a timeout of 3 seconds and then inn the main loop I am resetting it every 2 seconds. After five resets, I stop the reset call and let it timeout. As expected, it reboots my ESP32 after 3 seconds.&nbsp;&nbsp;</p>\r\n         <p style=\"box-sizing: inherit; overflow-wrap: break-word; line-height: 2; letter-spacing: 0.2px; padding-bottom: 7px;\"><span style=\"font-family: &quot;Source Code Pro&quot;, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; letter-spacing: 0.2px; white-space: pre-wrap; background-color: #f9f9f9;\">13:01:49.965 -&gt; Configuring WDT...\r\n13:01:51.919 -&gt; Resetting WDT...\r\n13:01:53.918 -&gt; Resetting WDT...\r\n13:01:55.916 -&gt; Resetting WDT...\r\n13:01:57.917 -&gt; Resetting WDT...\r\n13:01:59.915 -&gt; Resetting WDT...\r\n13:01:59.915 -&gt; Stopping WDT reset. CPU should reboot in 3s\r\n13:02:02.917 -&gt; E (26113) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:\r\n13:02:02.917 -&gt; E (26113) task_wdt:  - loopTask (CPU 1)\r\n13:02:02.951 -&gt; E (26113) task_wdt: Tasks currently running:\r\n13:02:02.951 -&gt; E (26113) task_wdt: CPU 0: IDLE0\r\n13:02:02.951 -&gt; E (26113) task_wdt: CPU 1: loopTask\r\n13:02:02.951 -&gt; E (26113) task_wdt: Aborting.\r\n13:02:02.951 -&gt; abort() was called at PC 0x400d35b3 on core 0\r\n13:02:02.951 -&gt; \r\n13:02:02.951 -&gt; Backtrace: 0x4008b560:0x3ffbe170 0x4008b78d:0x3ffbe190 0x400d35b3:0x3ffbe1b0 0x400845ed:0x3ffbe1d0 0x400e8f07:0x3ffbbff0 0x400d3d43:0x3ffbc010 0x40089706:0x3ffbc030 0x40088215:0x3ffbc050\r\n13:02:03.008 -&gt; \r\n13:02:03.008 -&gt; Rebooting...</span></p>\r\n         <p style=\"box-sizing: inherit; overflow-wrap: break-word; line-height: 2; letter-spacing: 0.2px; padding-bottom: 7px;\"><span style=\"font-family: &quot;Source Code Pro&quot;, &quot;Liberation Mono&quot;, &quot;Courier New&quot;, Courier, monospace; font-size: 12px; letter-spacing: 0.2px; white-space: pre-wrap; background-color: #f9f9f9;\">==============================================================================================================</span></p>\r\n         <p style=\"box-sizing: inherit; overflow-wrap: break-word; line-height: 2; letter-spacing: 0.2px; padding-bottom: 7px;\">다른버전 watchdog //2번째 링크 참조</p>\r\n         </div>\r\n      </div>\r\n   </header>','https://iotassistant.io/esp32/enable-hardware-watchdog-timer-esp32-arduino-ide','https://iotespresso.com/create-custom-watchdog-timer-in-esp32/',3,1,5,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-03-19 11:28:14',0,'2022-03-19 11:28:14','112.222.138.204','','','','','','','','','','','',''),(538,-538,'',538,0,0,'','','html1','[Arduino] 아두이노에서 udp 패킷서버 구축','<pre style=\"background-color: #ffffff; border: 0px; border-radius: 0px; box-sizing: border-box; overflow-x: auto; width: 658.906px; color: #434f54; tab-size: 2;\">\r\n   <code class=\"language-fallback\" data-lang=\"fallback\" style=\"background-color: #f7f9f9; color: #000000; padding: 0px;\"><span style=\"font-size: 12px;\">EthernetUDP Udp;\r\nvoid setup() {\r\n  // start the Ethernet and UDP:\r\n  Ethernet.begin(mac,ip);\r\n  Udp.begin(localPort);\r\n}\r\nvoid loop() {\r\n  Udp.beginPacket(Udp.remoteIP(), Udp.remotePort());\r\n  Udp.write(\"hello\");\r\n  Udp.endPacket();\r\n}</span></code>\r\n   <br /></pre>\r\n<pre style=\"background-color: #ffffff; border: 0px; border-radius: 0px; box-sizing: border-box; overflow-x: auto; width: 658.906px; color: #434f54; font-size: 16px; tab-size: 2;\">\r\n   <code class=\"language-fallback\" data-lang=\"fallback\" style=\"background-color: #f7f9f9; color: #000000; font-size: 14px; padding: 0px;\"><span style=\"font-size: 12px;\">================================================================\r\n// if there\'s data available, read a packet</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8;\"></span><span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: #333333; font-weight: bold; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">int</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\"> packetSize = Udp.parsePacket();\r\n  </span><span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: #333333; font-weight: bold; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">if</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\"> (packetSize) {\r\n    Serial.print(</span><span class=\"hljs-string\" style=\"box-sizing: inherit; color: #dd1144; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">\"Received packet of size \"</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">);\r\n    Serial.println(packetSize);\r\n    Serial.print(</span><span class=\"hljs-string\" style=\"box-sizing: inherit; color: #dd1144; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">\"From \"</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">);\r\n    IPAddress remoteIp = Udp.remoteIP();\r\n    Serial.print(remoteIp);\r\n    Serial.print(</span><span class=\"hljs-string\" style=\"box-sizing: inherit; color: #dd1144; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">\", port \"</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">);\r\n    Serial.println(Udp.remotePort());\r\n    </span><span class=\"hljs-comment\" style=\"box-sizing: inherit; color: #999988; font-style: italic; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">// read the packet into packetBufffer</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8;\"></span><span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: #333333; font-weight: bold; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">int</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\"> len = Udp.read(packetBuffer, </span><span class=\"hljs-number\" style=\"box-sizing: inherit; color: #008080; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">32</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">);\r\n    </span><span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: #333333; font-weight: bold; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">if</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\"> (len &gt; </span><span class=\"hljs-number\" style=\"box-sizing: inherit; color: #008080; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">0</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">) {\r\n      packetBuffer[len] = </span><span class=\"hljs-number\" style=\"box-sizing: inherit; color: #008080; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">0</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">;\r\n    }\r\n      Serial.print(</span><span class=\"hljs-string\" style=\"box-sizing: inherit; color: #dd1144; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">\"Contents:\"</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">); Serial.println(packetBuffer);\r\n      </span><span class=\"hljs-comment\" style=\"box-sizing: inherit; color: #999988; font-style: italic; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">// send a reply, to the IP address and port that sent us the packet we received</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">\r\n      Udp.beginPacket</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">(Udp.remoteIP(), Udp.remotePort());\r\n      </span><span class=\"hljs-built_in\" style=\"box-sizing: inherit; color: #0086b3; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">memset</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">(temp, </span><span class=\"hljs-number\" style=\"box-sizing: inherit; color: #008080; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">0x00</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">, </span><span class=\"hljs-number\" style=\"box-sizing: inherit; color: #008080; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">64</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">);\r\n      </span><span class=\"hljs-built_in\" style=\"box-sizing: inherit; color: #0086b3; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">sprintf</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">(temp, </span><span class=\"hljs-string\" style=\"box-sizing: inherit; color: #dd1144; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">\"TEST\"</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">);\r\n      </span><span class=\"hljs-built_in\" style=\"box-sizing: inherit; color: #0086b3; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">sprintf</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">(temp, </span><span class=\"hljs-string\" style=\"box-sizing: inherit; color: #dd1144; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">\"Current: %d.%d mA Voltage:%d.%d V\"</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">, \r\n        (</span><span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: #333333; font-weight: bold; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">int</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">)average, (</span><span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: #333333; font-weight: bold; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">int</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">)(average*</span><span class=\"hljs-number\" style=\"box-sizing: inherit; color: #008080; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">10</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">) % </span><span class=\"hljs-number\" style=\"box-sizing: inherit; color: #008080; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">10</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">,    \r\n        (</span><span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: #333333; font-weight: bold; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">int</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">)loadvoltage, (</span><span class=\"hljs-keyword\" style=\"box-sizing: inherit; color: #333333; font-weight: bold; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">int</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">)(loadvoltage*</span><span class=\"hljs-number\" style=\"box-sizing: inherit; color: #008080; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">10</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">) % </span><span class=\"hljs-number\" style=\"box-sizing: inherit; color: #008080; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">10</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">);    \r\n      Udp.write(temp); </span><span class=\"hljs-comment\" style=\"box-sizing: inherit; color: #999988; font-style: italic; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">// ReplyBuffer);</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">\r\n      Udp.endPacket();\r\n      delay(</span><span class=\"hljs-number\" style=\"box-sizing: inherit; color: #008080; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">5</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">);\r\n      Udp.stop();\r\n      delay(</span><span class=\"hljs-number\" style=\"box-sizing: inherit; color: #008080; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">5</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">);\r\n      Serial.println(</span><span class=\"hljs-string\" style=\"box-sizing: inherit; color: #dd1144; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">\"\\nStarting connection to server...\"</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">);\r\n      </span><span class=\"hljs-comment\" style=\"box-sizing: inherit; color: #999988; font-style: italic; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">// if you get a connection, report back via serial:</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">\r\n      Udp.begin(localPort);\r\n      Serial.print(</span><span class=\"hljs-string\" style=\"box-sizing: inherit; color: #dd1144; font-family: monospace, monospace; white-space: pre-wrap; font-size: 12px;\">\"Listening on port \"</span><span style=\"color: #333333; font-family: monospace, monospace; white-space: pre-wrap; background-color: #f8f8f8; font-size: 12px;\">);\r\n      Serial.println(localPort);      \r\n  }</span></code>\r\n   </pre>','https://www.arduino.cc/reference/en/libraries/ethernet/udp.beginpacket/','https://zerowincoding.tistory.com/entry/ESP8266-ARDUINO-UDP-SERVER-%EC%A0%84%EC%95%95-%EC%A0%84%EB%A5%98-%EB%8D%B0%EC%9D%B4%ED%84%B0',0,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-03-19 16:01:02',0,'2022-03-19 16:01:02','192.168.219.101','','','','','','','','','','','',''),(539,-539,'',539,0,0,'','','html1','[Arduino] 아두이노 CAN 통신을 이용한 자동차 해킹자료','<div class=\"yuRUbf\" style=\"font-size: small; line-height: 1.58; color: #202124; font-family: &quot;Apple SD Gothic Neo&quot;, arial, sans-serif; background-color: #ffffff; white-space: nowrap;\"><a href=\"https://www.hackerschool.org/HardwareHacking/%EC%9E%90%EB%8F%99%EC%B0%A8%20%ED%95%B4%ED%82%B9%20-%20Canbus%20Hacking.pdf\" data-ved=\"2ahUKEwj1yPfKq9L2AhUHAYgKHa-bDMUQFnoECAoQAQ\" ping=\"/url?sa=t&amp;source=web&amp;rct=j&amp;url=https://www.hackerschool.org/HardwareHacking/%25EC%259E%2590%25EB%258F%2599%25EC%25B0%25A8%2520%25ED%2595%25B4%25ED%2582%25B9%2520-%2520Canbus%2520Hacking.pdf&amp;ved=2ahUKEwj1yPfKq9L2AhUHAYgKHa-bDMUQFnoECAoQAQ\" style=\"color: #1a0dab; text-decoration-line: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.1); outline: 0px;\" target=\"_blank\">\r\n      <h3 class=\"LC20lb MBeuO DKV0Md\" style=\"font-weight: normal; margin: 0px 0px 3px; padding: 5px 0px 0px; font-size: 20px; line-height: 1.3; display: inline-block;\">자동차 해킹 - Canbus Hacking.pdf</h3>\r\n      <div class=\"TbwUpd NJjxre\" style=\"display: inline-block; padding-bottom: 2px; padding-top: 1px; text-size-adjust: none; position: absolute; left: 0px; top: 0px;\"><cite class=\"iUh30 qLRx3b tjvcx\" role=\"text\" style=\"color: #202124; font-style: normal; font-size: 14px; line-height: 1.3; padding-top: 1px;\">https://www.hackerschool.org<span class=\"dyjrff qzEoUe\" role=\"text\" style=\"color: #5f6368;\">&nbsp;› HardwareHacking</span></cite></div>\r\n      </a>\r\n   <div class=\"B6fmyf\" style=\"position: absolute; top: 0px; height: 0px; visibility: hidden;\">\r\n      <div class=\"TbwUpd\" style=\"display: inline-block; padding-bottom: 2px; padding-top: 1px; text-size-adjust: none;\"><cite class=\"iUh30 qLRx3b tjvcx\" role=\"text\" style=\"font-style: normal; font-size: 14px; line-height: 1.3; padding-top: 1px;\"><span class=\"dyjrff qzEoUe\" role=\"text\" style=\"color: #5f6368;\"></span></cite></div>\r\n      <div class=\"eFM0qc\" style=\"display: inline-block; padding-bottom: 2px; padding-top: 1px; padding-left: 2px; visibility: visible;\">\r\n         <div jscontroller=\"yGWMub\" class=\"action-menu\" style=\"display: inline; margin: 1px 3px 0px; position: relative; user-select: none; vertical-align: middle;\"><a href=\"https://www.google.com/search?q=%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8+%EC%9E%90%EB%8F%99%EC%B0%A8+can&amp;oq=&amp;aqs=chrome.0.69i59i450l8.9758j0j7&amp;sourceid=chrome&amp;ie=UTF-8#\" class=\"GHDvEf\" aria-label=\"검색결과 옵션\" aria-expanded=\"false\" aria-haspopup=\"true\" role=\"button\" jsaction=\"PZcoEd;keydown:wU6FVd;keypress:uWmNaf\" data-ved=\"2ahUKEwj1yPfKq9L2AhUHAYgKHa-bDMUQ7B16BAgKEAQ\" style=\"color: #1a0dab; text-decoration-line: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.1); display: inline-block; height: 12px; margin-top: 1px; user-select: none; width: 13px; outline: 0px;\" target=\"_blank\"><span class=\"gTl8xb\" style=\"border-color: #70757a transparent; border-style: solid; border-width: 5px 4px 0px; width: 0px; height: 0px; margin-left: 3px; top: 7.5px; margin-top: -3px; position: absolute; left: 0px;\"></span></a>\r\n            <ol class=\"action-menu-panel wHYlTd zsYMMe\" role=\"menu\" tabindex=\"-1\" jsaction=\"keydown:Xiq7wd;mouseover:pKPowd;mouseout:O9bKS\" data-ved=\"2ahUKEwj1yPfKq9L2AhUHAYgKHa-bDMUQqR96BAgKEAU\" style=\"margin: 0px; padding: 0px; font-size: 14px; line-height: 22px; position: absolute; left: 0px; top: 12px; visibility: hidden; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border: 1px solid rgba(0, 0, 0, 0.2); z-index: 3; transition: opacity 0.218s ease 0s; box-shadow: rgba(0, 0, 0, 0.2) 0px 2px 4px; outline: 0px;\">\r\n               <li class=\"action-menu-item OhScic zsYMMe\" role=\"menuitem\" style=\"margin: 0px; padding: 0px; list-style: none; cursor: pointer; user-select: none;\"><a class=\"fl\" href=\"https://webcache.googleusercontent.com/search?q=cache:zcdNF060pJcJ:https://www.hackerschool.org/HardwareHacking/%25EC%259E%2590%25EB%258F%2599%25EC%25B0%25A8%2520%25ED%2595%25B4%25ED%2582%25B9%2520-%2520Canbus%2520Hacking.pdf+&amp;cd=5&amp;hl=ko&amp;ct=clnk&amp;gl=kr\" ping=\"/url?sa=t&amp;source=web&amp;rct=j&amp;url=https://webcache.googleusercontent.com/search%3Fq%3Dcache:zcdNF060pJcJ:https://www.hackerschool.org/HardwareHacking/%2525EC%25259E%252590%2525EB%25258F%252599%2525EC%2525B0%2525A8%252520%2525ED%252595%2525B4%2525ED%252582%2525B9%252520-%252520Canbus%252520Hacking.pdf%2B%26cd%3D5%26hl%3Dko%26ct%3Dclnk%26gl%3Dkr&amp;ved=2ahUKEwj1yPfKq9L2AhUHAYgKHa-bDMUQIHoECAoQBg\" style=\"color: #3c4043; text-decoration-line: none; -webkit-tap-highlight-color: rgba(0, 0, 0, 0.1); outline: 0px; display: block; padding: 7px 18px;\" target=\"_blank\"></a></li>\r\n               </ol>\r\n            </div>\r\n         <span class=\"ZGwO7 C0kchf NaCKVc yUTMj VDgVie\" style=\"margin: 0px 2px 3px; text-align: center; cursor: auto; border: 1px solid rgb(235, 235, 235); border-radius: 2px; padding: 0px 4px; display: inline-block; height: 14px; line-height: 16px; color: #4d5156; font-size: 10px; letter-spacing: 0.75px; vertical-align: middle;\">PDF</span></div>\r\n      </div>\r\n   </div>\r\n<div class=\"IsZvec\" style=\"max-width: 49em; color: #4d5156; line-height: 1.58; font-family: &quot;Apple SD Gothic Neo&quot;, arial, sans-serif; font-size: 14px; background-color: #ffffff;\">\r\n   <div class=\"VwiC3b yXK7lf MUxGbd yDYNvb lyLwlc lEBKkf\" style=\"overflow-wrap: break-word; padding-top: 0px; margin-bottom: 0px; display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; -webkit-line-clamp: 2;\"><span style=\"font-weight: bold; color: #5f6368;\">CAN</span>&nbsp;모듈 &lt;-&gt;&nbsp;<span style=\"font-weight: bold; color: #5f6368;\">아두이노</span>&nbsp;연결. • 참고 : http://www.14core.com/wiring-the-mcp2515-controller-area- network-<span style=\"font-weight: bold; color: #5f6368;\">can</span>-bus-diagnostics/.&nbsp;<span style=\"font-weight: bold; color: #5f6368;\">CAN</span>&nbsp;모듈.&nbsp;<span style=\"font-weight: bold; color: #5f6368;\">아두이노</span>.</div>\r\n   <div class=\"MUxGbd wuQ4Ob WZ8Tjf\" style=\"padding-top: 0px; margin-bottom: 0px; color: #70757a;\">페이지 112개</div>\r\n   </div>','https://www.hackerschool.org/HardwareHacking/%EC%9E%90%EB%8F%99%EC%B0%A8%20%ED%95%B4%ED%82%B9%20-%20Canbus%20Hacking.pdf','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-03-19 23:04:31',1,'2022-03-19 23:04:31','192.168.219.101','','','','','','','','','','','',''),(540,-540,'',540,0,0,'','','html1','[Arduino] 웹클라이언트 HTTP 접속하기','<h3 style=\"font-size: 1.3125em; margin: 29px 0px 22px; padding: 0px; clear: both; line-height: 1.5; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">1. 개요</h3>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">추후 진행할 프로젝트에서 접속하고자하는 웹서버의 HTTP Response 나 웹페이지에서 필요한 정보를 사용하기 위해서 NodeMCU 보드를 웹클라이언트(WebClient)로서 사용하여 HTTP 사이트 접속방법을 설명합니다.</p>\r\n<h4 style=\"font-size: 1.125em; margin: 29px 0px 22px; padding: 0px; clear: both; font-weight: 400; line-height: 1.5; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">1.1 요약 정리</h4>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">마이크로컨트롤러(NodeMCU) 제어보다는 웹에 대한 정보로서 기본지식이 없는 상황이라면 이해하기 어렵습니다. 웹, 특히나 이 글에서는 HTTP 프로토콜까지 설명해야하는데 설명하자면 글이 너무 길어지니 소스코드가 어떻게 동작하는지 큰 맥락만 설명합니다.</p>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">1. HTML 언어로 웹페이지 구성 (라즈베리파이)<br />2. 구성한 웹페이지를 웹서버에 업로드 (라즈베리파이)<br />3. 라즈베리파이를 Wi-Fi에 연결 (라즈베리파이)<br />4. 라즈베리파이를 웹서버로 구동 (라즈베리파이)<br />5. 웹클라이언트 NodeMCU 보드로 웹서버(라즈베리파이)에 웹페이지 요청 (NodeMCU 보드)<br />6. 웹클라이언트러부터 요청이 오면 웹페이지를 응답 (라즈베리파이)<br />7. 웹서버로부터 받은 웹페이지 내용을 출력(NodeMcu 보드)</p>\r\n<h4 style=\"font-size: 1.125em; margin: 29px 0px 22px; padding: 0px; clear: both; font-weight: 400; line-height: 1.5; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">1.2 준비물</h4>\r\n<ul style=\"margin: 0px 0px 22px; padding: 0px; list-style-position: inside; list-style-image: initial; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\">\r\n   <li style=\"margin: 0px 0px 10px; padding: 0px 0px 0px 22px; list-style: inherit; position: relative; font-size: 0.9375em; line-height: 1.5714; color: #666666; text-indent: -22px;\">NodeMCU 개발보드(이 글에서는 NodeMCU v3)</li>\r\n   <li style=\"margin: 0px 0px 10px; padding: 0px 0px 0px 22px; list-style: inherit; position: relative; font-size: 0.9375em; line-height: 1.5714; color: #666666; text-indent: -22px;\">Micro 5pin USB</li>\r\n   </ul>\r\n<h3 style=\"font-size: 1.3125em; margin: 29px 0px 22px; padding: 0px; clear: both; line-height: 1.5; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">2. 웹서버 만들기(라즈베리파이, 옵션)</h3>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">필자처럼 라즈베리파이를 이용하여 웹서버를 만들어 테스트하고자 한다면&nbsp;<a href=\"https://bugwhale.tistory.com/entry/raspberrypi-raspbian-apm-install?category=839479\" style=\"text-decoration-line: none; color: #04beb8;\" target=\"_blank\">라즈베리파이 라즈비안 APM(Apache, PHP, MySql, phpMyAdmin) 설치하기</a>&nbsp;글에서 기본적인 웹서버를 구축하는데 필요한 정보를 얻을 수 있습니다.</p>\r\n<h4 style=\"font-size: 1.125em; margin: 29px 0px 22px; padding: 0px; clear: both; font-weight: 400; line-height: 1.5; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">2.1 웹페이지 만들기</h4>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">라즈베리파이 라즈비안 OS 기준으로 설명합니다. 아래 명령어로 http.html 파일을 생성, 편집을 열어줍니다.</p>\r\n<pre id=\"code_1582038851926\" class=\"c++ cpp\" data-ke-language=\"c++\" data-ke-type=\"codeblock\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; color: #555555;\">\r\n   <code class=\"hljs cpp\" style=\"margin: 0px; padding: 0.5em; white-space: pre; overflow-x: auto; display: block; background: rgb(51, 51, 51); color: white;\">sudo nano /var/www/html/http.html</code>\r\n   </pre>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">아래 내용을 적어주고 \"Ctrl + X\", \"Y\", \"Enter\" 를 순서대로 눌러줘서 저장합니다.</p>\r\n<pre id=\"code_1582038879936\" class=\"c++ cpp\" data-ke-language=\"c++\" data-ke-type=\"codeblock\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; color: #555555;\">\r\n   <code class=\"hljs cpp\" style=\"margin: 0px; padding: 0.5em; white-space: pre; overflow-x: auto; display: block; background: rgb(51, 51, 51); color: white;\">HTTP Test Webpage</code>\r\n   </pre>\r\n<h3 style=\"font-size: 1.3125em; margin: 29px 0px 22px; padding: 0px; clear: both; line-height: 1.5; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">3. 소스코드</h3>\r\n<h4 style=\"font-size: 1.125em; margin: 29px 0px 22px; padding: 0px; clear: both; font-weight: 400; line-height: 1.5; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">3.1 전체 소스코드</h4>\r\n<pre id=\"code_1582038895638\" class=\"c++ cpp\" data-ke-language=\"c++\" data-ke-type=\"codeblock\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; color: #555555;\">\r\n   <code class=\"hljs cpp\" style=\"margin: 0px; padding: 0.5em; white-space: pre; overflow-x: auto; display: block; background: rgb(51, 51, 51); color: white;\">\r\n      <table class=\"hljs-ln\">\r\n         <tbody>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"1\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"1\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"1\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"><span class=\"hljs-meta\" style=\"color: #fc9b9b;\">#<span class=\"hljs-meta-keyword\">include</span><span class=\"hljs-meta-string\">&lt;ESP8266WiFi.h&gt;</span></span></td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"2\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"2\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"2\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"><span class=\"hljs-meta\" style=\"color: #fc9b9b;\">#<span class=\"hljs-meta-keyword\">include</span><span class=\"hljs-meta-string\">&lt;ESP8266HTTPClient.h&gt;</span></span></td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"3\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"3\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"3\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"></td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"4\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"4\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"4\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">const</span><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">char</span>* ssid     = <span class=\"hljs-string\" style=\"color: #a2fca2;\">\"Wi-Fi 아이디\"</span>;</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"5\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"5\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"5\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">const</span><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">char</span>* password = <span class=\"hljs-string\" style=\"color: #a2fca2;\">\"Wi-Fi 비밀번호\"</span>;</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"6\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"6\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"6\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">const</span><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">char</span>* host = <span class=\"hljs-string\" style=\"color: #a2fca2;\">\"Host 주소\"</span>;</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"7\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"7\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"7\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"></td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"8\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"8\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"8\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">WiFiClient client;</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"9\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"9\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"9\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">HTTPClient http;</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"10\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"10\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"10\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"></td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"11\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"11\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"11\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"><span class=\"hljs-function\"><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">void</span><span class=\"hljs-title\" style=\"color: #ffffaa;\">setup</span><span class=\"hljs-params\">()</span></span>{</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"12\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"12\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"12\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	Serial.begin(<span class=\"hljs-number\" style=\"color: #d36363;\">115200</span>);</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"13\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"13\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"13\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	Serial.println(<span class=\"hljs-string\" style=\"color: #a2fca2;\">\"\"</span>);</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"14\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"14\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"14\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	Serial.print(<span class=\"hljs-string\" style=\"color: #a2fca2;\">\"Connect to \"</span>);</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"15\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"15\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"15\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	Serial.println(ssid);</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"16\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"16\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"16\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"></td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"17\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"17\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"17\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	WiFi.mode(WIFI_STA);</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"18\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"18\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"18\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	WiFi.begin(ssid, password);</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"19\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"19\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"19\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">while</span> (WiFi.status() != WL_CONNECTED) {</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"20\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"20\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"20\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">		delay(<span class=\"hljs-number\" style=\"color: #d36363;\">500</span>);</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"21\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"21\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"21\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">		Serial.print(<span class=\"hljs-string\" style=\"color: #a2fca2;\">\".\"</span>);</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"22\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"22\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"22\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	}</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"23\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"23\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"23\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	Serial.print(<span class=\"hljs-string\" style=\"color: #a2fca2;\">\"IP address: \"</span>);</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"24\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"24\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"24\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	Serial.println(WiFi.localIP());</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"25\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"25\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"25\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">}</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"26\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"26\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"26\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"></td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"27\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"27\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"27\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"><span class=\"hljs-function\"><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">void</span><span class=\"hljs-title\" style=\"color: #ffffaa;\">loop</span><span class=\"hljs-params\">()</span></span>{</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"28\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"28\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"28\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	Serial.<span class=\"hljs-built_in\" style=\"color: #ffffaa;\">printf</span>(<span class=\"hljs-string\" style=\"color: #a2fca2;\">\"Connect to %s\\n\"</span>, host);</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"29\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"29\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"29\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	http.begin(client, host);</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"30\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"30\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"30\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	http.setTimeout(<span class=\"hljs-number\" style=\"color: #d36363;\">1000</span>);</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"31\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"31\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"31\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">int</span> httpCode = http.GET();</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"32\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"32\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"32\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"></td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"33\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"33\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"33\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">if</span>(httpCode &gt; <span class=\"hljs-number\" style=\"color: #d36363;\">0</span>) {</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"34\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"34\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"34\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">		Serial.<span class=\"hljs-built_in\" style=\"color: #ffffaa;\">printf</span>(<span class=\"hljs-string\" style=\"color: #a2fca2;\">\"GET code : %d\\n\\n\"</span>, httpCode);</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"35\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"35\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"35\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"></td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"36\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"36\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"36\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">if</span> (httpCode == HTTP_CODE_OK) {</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"37\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"37\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"37\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">			String payload = http.getString();</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"38\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"38\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"38\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">			Serial.println(payload);</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"39\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"39\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"39\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">		}</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"40\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"40\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"40\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	} </td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"41\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"41\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"41\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">else</span> {</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"42\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"42\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"42\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">		Serial.<span class=\"hljs-built_in\" style=\"color: #ffffaa;\">printf</span>(<span class=\"hljs-string\" style=\"color: #a2fca2;\">\"GET failed, error: %s\\n\"</span>, http.errorToString(httpCode).c_str());</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"43\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"43\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"43\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	}</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"44\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"44\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"44\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	http.end();</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"45\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"45\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"45\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"></td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"46\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"46\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"46\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	delay(<span class=\"hljs-number\" style=\"color: #d36363;\">5000</span>);</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"47\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"47\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"47\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">}</td>\r\n               </tr>\r\n            </tbody>\r\n         </table>\r\n      </code>\r\n   </pre>\r\n<h4 style=\"font-size: 1.125em; margin: 29px 0px 22px; padding: 0px; clear: both; font-weight: 400; line-height: 1.5; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">3.2 소스코드 설명</h4>\r\n<pre class=\"toolbar:2 start-line:2 lang:default decode:true autoit\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; color: #555555;\">\r\n   <code class=\"hljs cpp\" style=\"margin: 0px; padding: 0.5em; white-space: pre; overflow-x: auto; display: block; background: rgb(51, 51, 51); color: white;\"><span class=\"hljs-meta\" style=\"color: #fc9b9b;\">#<span class=\"hljs-meta-keyword\">include</span><span class=\"hljs-meta-string\">&lt;ESP8266HTTPClient.h&gt;</span></span></code>\r\n   </pre>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">HTTP 프로토콜을 위해 ESP8266HTTPClient 파일을 Include 해줍니다</p>\r\n<pre class=\"toolbar:2 start-line:4 lang:default decode:true cpp\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; color: #555555;\">\r\n   <code class=\"hljs\" style=\"margin: 0px; padding: 0.5em; white-space: pre; overflow-x: auto; display: block; background: rgb(51, 51, 51); color: white;\">\r\n      <table class=\"hljs-ln\">\r\n         <tbody>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"1\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"1\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"1\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">const</span><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">char</span>* ssid     = <span class=\"hljs-string\" style=\"color: #a2fca2;\">\"Wi-Fi 아이디\"</span>;</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"2\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"2\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"2\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">const</span><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">char</span>* password = <span class=\"hljs-string\" style=\"color: #a2fca2;\">\"Wi-Fi 비밀번호\"</span>;</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"3\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"3\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"3\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">const</span><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">char</span>* host = <span class=\"hljs-string\" style=\"color: #a2fca2;\">\"Host 주소\"</span>;</td>\r\n               </tr>\r\n            </tbody>\r\n         </table>\r\n      </code>\r\n   </pre>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">가장 중요한 부분으로 사용하는&nbsp;<span style=\"color: #ff0000;\">Wi-Fi ID, 비밀번호</span>를 정확하게 입력해줍니다. 그리고&nbsp;<span style=\"color: #ff0000;\">Host 주소</span>에는 접속하고자 하는&nbsp;<span style=\"color: #ff0000;\">http://웹사이트주소</span>를 입력합니다. 이 글에서 설명한 라즈베리파이를 사용한다면&nbsp;<span style=\"color: #ff0000;\">\"http://<span style=\"color: #0000ff;\">라즈베리파이IP</span>/http.html\"</span>&nbsp;를 입력해주면 됩니다.</p>\r\n<pre class=\"toolbar:2 start-line:9 lang:default decode:true abnf\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; color: #555555;\">\r\n   <code class=\"hljs\" style=\"margin: 0px; padding: 0.5em; white-space: pre; overflow-x: auto; display: block; background: rgb(51, 51, 51); color: white;\">HTTPClient http;</code>\r\n   </pre>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">http 이름으로 HTTPClient 객체 생성</p>\r\n<pre class=\"toolbar:2 start-line:28 lang:default decode:true cpp\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; color: #555555;\">\r\n   <code class=\"hljs\" style=\"margin: 0px; padding: 0.5em; white-space: pre; overflow-x: auto; display: block; background: rgb(51, 51, 51); color: white;\">	Serial.<span class=\"hljs-built_in\" style=\"color: #ffffaa;\">printf</span>(<span class=\"hljs-string\" style=\"color: #a2fca2;\">\"Connect to %s\\n\"</span>, host);</code>\r\n   </pre>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">시리얼 모니터에 접속하고자 하는 웹페이지를 출력</p>\r\n<pre class=\"toolbar:2 start-line:29 lang:default decode:true mipsasm\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; color: #555555;\">\r\n   <code class=\"hljs sql\" style=\"margin: 0px; padding: 0.5em; white-space: pre; overflow-x: auto; display: block; background: rgb(51, 51, 51); color: white;\">\r\n      <table class=\"hljs-ln\">\r\n         <tbody>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"1\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"1\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"1\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	http.begin(<span class=\"hljs-keyword\" style=\"color: #fcc28c;\">client</span>, host);</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"2\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"2\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"2\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	http.setTimeout(1000);</td>\r\n               </tr>\r\n            </tbody>\r\n         </table>\r\n      </code>\r\n   </pre>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">begin() 메소드는 host 주소로 접속을 시도하는 메서드로 HTTP Request 과정이라고 보면 됩니다. setTimeout() 메소드는 연결 타임아웃 시간을 설정해주며 설정해준 시간안에 웹페이지에 접속하지 못한다면 더 이상 시도하지 말고 그냥 넘어가라는 의미입니다.</p>\r\n<pre class=\"toolbar:2 start-line:31 lang:default decode:true ebnf\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; color: #555555;\">\r\n   <code class=\"hljs perl\" style=\"margin: 0px; padding: 0.5em; white-space: pre; overflow-x: auto; display: block; background: rgb(51, 51, 51); color: white;\"><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">int</span> httpCode = http.GET();</code>\r\n   </pre>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">HTTP Request 를 하면 웹서버에서 요청에 따라 HTTP Code 라는 것을 보내게 되며 GET() 메소드는 HTTP Code 값을 얻어오며 그 값을 int httpCode 변수에 넣어 줍니다.</p>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">여기서 HTTP Code 를 응답 상태코드로 예를 들어 200 이라는 값이 반환하면 \"응답 성공\" 이라는 의미이며 404 값은 \"(요청한 페이지를) 찾을 수 없음\" 이라는 의미입니다.</p>\r\n<pre class=\"toolbar:2 start-line:33 lang:default decode:true stylus\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; color: #555555;\">\r\n   <code class=\"hljs\" style=\"margin: 0px; padding: 0.5em; white-space: pre; overflow-x: auto; display: block; background: rgb(51, 51, 51); color: white;\">if(httpCode &gt; 0) {</code>\r\n   </pre>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">HTTP 응답코드가 정상적이라면(404 같은 값도 이 소스코드에서는 기본적으로는 정상이라고 봅니다. 정상이 아니면 0 값이다.)</p>\r\n<pre class=\"toolbar:2 start-line:34 lang:default decode:true accesslog\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; color: #555555;\">\r\n   <code class=\"hljs perl\" style=\"margin: 0px; padding: 0.5em; white-space: pre; overflow-x: auto; display: block; background: rgb(51, 51, 51); color: white;\">\r\n      <table class=\"hljs-ln\">\r\n         <tbody>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"1\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"1\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"1\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">		Serial.printf(<span class=\"hljs-string\" style=\"color: #a2fca2;\">\"GET code : %d\\n\\n\"</span>, httpCode);</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"2\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"2\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"2\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"></td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"3\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"3\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"3\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">if</span> (httpCode == HTTP_CODE_OK) {</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"4\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"4\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"4\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">			String payload = http.getString();</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"5\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"5\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"5\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">			Serial.println(payload);</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"6\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"6\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"6\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">		}</td>\r\n               </tr>\r\n            </tbody>\r\n         </table>\r\n      </code>\r\n   </pre>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">HTTP 응답코드를 시리얼 모니터에 띄워준 뒤 응답코드를 한번 더 비교해줍니다. (여기서 HTTP_CODE_OK 값은 상수값으로 200) 즉, \"응답 성공\"이라면 getString() 메소드로 웹페이지 내용을 payload에 저장 후 시리얼 모니터에 출력시켜줍니다.</p>\r\n<pre class=\"toolbar:2 start-line:41 lang:default decode:true accesslog\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; color: #555555;\">\r\n   <code class=\"hljs perl\" style=\"margin: 0px; padding: 0.5em; white-space: pre; overflow-x: auto; display: block; background: rgb(51, 51, 51); color: white;\">\r\n      <table class=\"hljs-ln\">\r\n         <tbody>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"1\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"1\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"1\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\"><span class=\"hljs-keyword\" style=\"color: #fcc28c;\">else</span> {</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"2\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"2\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"2\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">		Serial.printf(<span class=\"hljs-string\" style=\"color: #a2fca2;\">\"GET failed, error: %s\\n\"</span>, http.errorToString(httpCode).c_str());</td>\r\n               </tr>\r\n            <tr>\r\n               <td class=\"hljs-ln-line hljs-ln-numbers\" data-line-number=\"3\" style=\"margin: 0px; padding: 0px 5px 0px 0px; word-break: break-word; user-select: none; text-align: center; color: #cccccc; border-right-style: solid; vertical-align: top;\">\r\n                  <div class=\"hljs-ln-n\" data-line-number=\"3\" style=\"margin: 0px; padding: 0px;\">&nbsp;</div>\r\n                  </td>\r\n               <td class=\"hljs-ln-line hljs-ln-code\" data-line-number=\"3\" style=\"margin: 0px; padding: 0px 0px 0px 10px; word-break: break-word;\">	}</td>\r\n               </tr>\r\n            </tbody>\r\n         </table>\r\n      </code>\r\n   </pre>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">HTTP 응답코드가 비정상이라면(0 이하 값) 에러메세지를 시리얼 모니터에 출력시켜줍니다.</p>\r\n<pre class=\"toolbar:2 start-line:44 lang:default decode:true mipsasm\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; color: #555555;\">\r\n   <code class=\"hljs sql\" style=\"margin: 0px; padding: 0.5em; white-space: pre; overflow-x: auto; display: block; background: rgb(51, 51, 51); color: white;\">	http.end();</code>\r\n   </pre>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">end() 메서드로 http 연결을 종료합니다.</p>\r\n<h3 style=\"font-size: 1.3125em; margin: 29px 0px 22px; padding: 0px; clear: both; line-height: 1.5; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">4. 동작 결과</h3>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">빨간상자는 접속한 Wi-Fi 이름과 부여받은 IP 를 나타내고 파란 상자는 \"http://192.168.1.100/http.html\" 로 접속을 시도함을 알려주며, 응답 결과로 200 코드 값을 얻을 것을 알 수 있습니다. 초록 상자는 위에서 작성한 http.html 파일 내용입니다.</p>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" width=\"677\" height=\"419\" data-origin-width=\"0\" data-origin-height=\"0\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px;\"><span data-url=\"https://blog.kakaocdn.net/dn/bjk1tk/btqBG0pln4h/D6aKmhQVWKjLyFEfHyTekK/img.png\" data-lightbox=\"lightbox\" data-alt=\"\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/bjk1tk/btqBG0pln4h/D6aKmhQVWKjLyFEfHyTekK/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbjk1tk%2FbtqBG0pln4h%2FD6aKmhQVWKjLyFEfHyTekK%2Fimg.png\" width=\"677\" data-origin-width=\"0\" data-origin-height=\"0\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; margin: 0px; height: auto;\" /></span></figure>\r\n<p style=\"margin-bottom: 32px; padding: 0px; word-break: break-all; font-size: 0.9375em; line-height: 2; color: #555555; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">&nbsp;</p>\r\n<h3 style=\"font-size: 1.3125em; margin: 29px 0px 22px; padding: 0px; clear: both; line-height: 1.5; font-family: AppleSDGothicNeo, &quot;Noto Sans KR&quot;, sans-serif;\">5. 참조</h3>','https://bugwhale.tistory.com/entry/nodemuc-webclient-http-connect','',2,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-03-20 01:05:43',1,'2022-03-20 01:05:43','192.168.219.101','','','','','','','','','','','',''),(541,-541,'',541,0,0,'','','html1','[PHP] DB 데이터를 CSV 파일로 저장하기 / 엑셀 다운로드 header방식','<p style=\"box-sizing: border-box; margin-bottom: 10px; font-family: &quot;KoPub Dotum&quot;; text-align: justify; color: #333333; font-size: 14px; background-color: #ffffff;\">MySQL DB 데이터를 csv 파일 형태로 저장하는 예제코드다.</p>\r\n<p style=\"box-sizing: border-box; margin-bottom: 10px; font-family: &quot;KoPub Dotum&quot;; text-align: justify; color: #333333; font-size: 14px; background-color: #ffffff;\"><br style=\"box-sizing: border-box;\" /></p>\r\n<table class=\"txc-table\" 맑은=\"\" 고딕\",=\"\" sans-serif;font-size:15px\"=\"\" width=\"763\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"border-spacing: 0px; background-color: #ffffff; color: #333333; font-family: &quot;KoPub Dotum&quot;; font-size: 14px; border-width: initial; border-style: none; border-color: initial;\">\r\n   <tbody style=\"box-sizing: border-box;\">\r\n      <tr style=\"box-sizing: border-box;\">\r\n         <td style=\"box-sizing: border-box; padding: 0px; text-align: center; border-style: solid;\">\r\n            <p style=\"box-sizing: border-box; margin-bottom: 10px; text-align: justify;\"><span style=\"box-sizing: border-box; font-family: Tahoma;\">&lt;?php<br style=\"box-sizing: border-box;\" />$db[\'host\'] = \"localhost\";<br style=\"box-sizing: border-box;\" />$db[\'name\'] = \"db명\";<br style=\"box-sizing: border-box;\" />$db[\'user\'] = \"사용자id\";<br style=\"box-sizing: border-box;\" />$db[\'pass\'] = \"비밀번호\";<br style=\"box-sizing: border-box;\" />$db[\'port\'] = \"3306\";<br style=\"box-sizing: border-box;\" />?&gt;</span></p>\r\n            </td>\r\n         </tr>\r\n      <tr style=\"box-sizing: border-box;\">\r\n         <td style=\"box-sizing: border-box; padding: 0px; text-align: center; border-bottom-style: solid; border-right-style: solid; border-left-style: solid;\">\r\n            <p style=\"box-sizing: border-box; margin-bottom: 10px; text-align: justify;\"><span style=\"box-sizing: border-box; font-family: Tahoma;\">&lt;?php<br style=\"box-sizing: border-box;\" />include_once \'dbinfo.php\';<br style=\"box-sizing: border-box;\" />$db = isConnectDb($db);<br style=\"box-sizing: border-box;\" /><br style=\"box-sizing: border-box;\" />function isConnectDb($db)<br style=\"box-sizing: border-box;\" />{<br style=\"box-sizing: border-box;\" />&nbsp;&nbsp;&nbsp; $conn = mysqli_connect($db[\'host\'],$db[\'user\'],$db[\'pass\'],$db[\'name\'],$db[\'port\']);<br style=\"box-sizing: border-box;\" />&nbsp;&nbsp;&nbsp; mysqli_set_charset($conn, \"utf8\");&nbsp;<br style=\"box-sizing: border-box;\" />&nbsp;&nbsp;&nbsp; if (mysqli_connect_errno()) {<br style=\"box-sizing: border-box;\" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; echo \"Failed to connect to MySQL: \" . mysqli_connect_error();<br style=\"box-sizing: border-box;\" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;<br style=\"box-sizing: border-box;\" />&nbsp;&nbsp;&nbsp; } else {<br style=\"box-sizing: border-box;\" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $conn;<br style=\"box-sizing: border-box;\" />&nbsp;&nbsp;&nbsp; }<br style=\"box-sizing: border-box;\" />}<br style=\"box-sizing: border-box;\" />?&gt;</span></p>\r\n            </td>\r\n         </tr>\r\n      <tr style=\"box-sizing: border-box;\">\r\n         <td style=\"box-sizing: border-box; padding: 0px; text-align: center; border-bottom-style: solid; border-right-style: solid; border-left-style: solid;\">\r\n            <p style=\"box-sizing: border-box; margin-bottom: 10px; text-align: justify;\">&nbsp;<span style=\"box-sizing: border-box; font-family: Tahoma;\">&lt;?php<br style=\"box-sizing: border-box;\" />$file_name = \"cate_backup.xls\";<br style=\"box-sizing: border-box;\" />header( \"Content-type: application/vnd.ms-excel; charset=utf-8\");<br style=\"box-sizing: border-box;\" />header( \"Cache-Control: must-revalidate, post-check=0,pre-check=0\" );<br style=\"box-sizing: border-box;\" />header( \"Content-Disposition: attachment; filename=$file_name\" );<br style=\"box-sizing: border-box;\" />header( \"Content-Description: PHP4 Generated Data\" );<br style=\"box-sizing: border-box;\" /><span style=\"box-sizing: border-box; color: #2f9d27;\">//header() 함수를 쓰기전에 어떠한 출력도 있어선 안된다</span><br style=\"box-sizing: border-box;\" /><br style=\"box-sizing: border-box;\" />include_once \'dbconect.php\'; // DB 연동<br style=\"box-sizing: border-box;\" /><br style=\"box-sizing: border-box;\" />$tblName = category;&nbsp;&nbsp; &nbsp;// 테이블명<br style=\"box-sizing: border-box;\" />$sql =\"SELECT uid, classname, relateduid FROM $tblName ORDER BY uid DESC\";<br style=\"box-sizing: border-box;\" /><span style=\"box-sizing: border-box; color: #2f9d27;\">// DESC 내림차순 정렬, ASC 오름차순 정렬</span><br style=\"box-sizing: border-box;\" />$result = mysqli_query($db,$sql);<br style=\"box-sizing: border-box;\" /><br style=\"box-sizing: border-box;\" /><span style=\"box-sizing: border-box; color: #2f9d27;\">// 테이블 상단 만들기</span><br style=\"box-sizing: border-box;\" />$EXCEL_STR = \"<br style=\"box-sizing: border-box;\" />&lt;table border=\'1\'&gt;<br style=\"box-sizing: border-box;\" />&lt;tr&gt;<br style=\"box-sizing: border-box;\" />&lt;td align=center BGCOLOR=\'#9DEEE1\'&gt;번호&lt;/td&gt;<br style=\"box-sizing: border-box;\" />&lt;td align=center BGCOLOR=\'#9DEEE1\'&gt;구분자&lt;/td&gt;<br style=\"box-sizing: border-box;\" />&lt;td align=center BGCOLOR=\'#9DEEE1\'&gt;연관번호&lt;/td&gt;<br style=\"box-sizing: border-box;\" />&lt;/tr&gt;\";<br style=\"box-sizing: border-box;\" /><br style=\"box-sizing: border-box;\" />while ($row = mysqli_fetch_array($result) ){<br style=\"box-sizing: border-box;\" />&nbsp;&nbsp; &nbsp;$EXCEL_STR .= \"<br style=\"box-sizing: border-box;\" />&nbsp;&nbsp; &nbsp;&lt;tr&gt;<br style=\"box-sizing: border-box;\" />&nbsp;&nbsp; &nbsp;&lt;td align=center&gt;\".$row[\'uid\'].\"&lt;/td&gt;<br style=\"box-sizing: border-box;\" />&nbsp;&nbsp; &nbsp;&lt;td align=center&gt;\".$row[\'classname\'].\"&lt;/td&gt;<br style=\"box-sizing: border-box;\" />&nbsp;&nbsp; &nbsp;&lt;td align=center&gt;\".$row[\'relateduid\'].\"&lt;/td&gt;<br style=\"box-sizing: border-box;\" />&nbsp;&nbsp; &nbsp;&lt;/tr&gt;<br style=\"box-sizing: border-box;\" />&nbsp;&nbsp; &nbsp;\";<br style=\"box-sizing: border-box;\" />}<br style=\"box-sizing: border-box;\" /><br style=\"box-sizing: border-box;\" />$EXCEL_STR .= \"&lt;/table&gt;\";<br style=\"box-sizing: border-box;\" />echo $EXCEL_STR;<br style=\"box-sizing: border-box;\" />exit;<br style=\"box-sizing: border-box;\" />?&gt;<br style=\"box-sizing: border-box;\" /></span></p>\r\n            </td>\r\n         </tr>\r\n      </tbody>\r\n   </table>\r\n<p><br style=\"box-sizing: border-box; color: #333333; font-family: &quot;KoPub Dotum&quot;; font-size: 14px; background-color: #ffffff;\" /><span style=\"color: #333333; font-family: &quot;KoPub Dotum&quot;; font-size: 14px; background-color: #ffffff;\">출처:&nbsp;</span><a href=\"https://link2me.tistory.com/1619\" style=\"box-sizing: border-box; background-color: #ffffff; color: #303030; text-decoration-line: none; transition: color 0.2s ease-in-out 0s; font-family: &quot;KoPub Dotum&quot;; font-size: 14px;\" target=\"_blank\">https://link2me.tistory.com/1619</a><span style=\"color: #333333; font-family: &quot;KoPub Dotum&quot;; font-size: 14px; background-color: #ffffff;\">&nbsp;[소소한 일상 및 업무TIP 다루기]</span></p>\r\n<p><span style=\"color: #333333; font-family: &quot;KoPub Dotum&quot;; font-size: 14px; background-color: #ffffff;\">&nbsp;</span></p>\r\n<p>&nbsp;</p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\">웹 소스 맨 상단에 추가 해줌.</p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\"><br /></p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\">header(\"Content-Type: application/vnd.ms-excel\");</p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\">header(\"Content-Disposition: attachment; filename=test.xls\");</p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\">header(\"Content-Description:PHP4 Generated Data\");</p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\"><br /></p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\">아래와 같은 헤더도 있으나, 현재까지는 위 3개로만으로도 다운이 가능하다.</p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\">header(\"Content-Type: application/octet-stream\");</p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\">header(\"Content-Type-Description: File Transfer\");</p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\">header(\"Expires: 0\");</p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\">header(\"Cache-Control: must-revalidate, post-check=0,pre-check=0\");</p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\">header(\"Pragma; public\");</p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\"><br /></p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\"><br /></p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\">이걸 응용하여 버튼 클릭시 다운받게 해보자.</p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\"><br /></p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\">버튼 페이지(button.php)</p>\r\n<table class=\"txc-table\" width=\"494\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"color: #666666; background-color: #ffffff; border-spacing: 0px; font-family: dotum; line-height: 18px; border-width: initial; border-style: none; border-color: initial;\">\r\n   <tbody>\r\n      <tr>\r\n         <td style=\"margin: 0px; padding: 0px; font-size: 14px; line-height: 1.5; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; border-style: solid;\">\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&lt;script&gt;</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp; &nbsp; $.fn.outerHTML = function() {</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var el = $(this);</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(!el[0]) return \"\";</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(el[0].outerHTML) {</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return el[0].outerHTML;</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else {</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var content = el.wrap(\'&lt;p/&gt;\').parent().html();</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;el.unwrap();</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return content;</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp; &nbsp; }</p>\r\n            <p style=\"margin-left: 2em; padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">function export_excel() {</p>\r\n            <p style=\"margin-left: 4em; padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">var exp=$(\'#export\').outerHTML(); &nbsp;//id 값이 export인 태그부터 가져옴.(위함수)</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">//&nbsp;var exp=$<span style=\"font-size: 9pt; line-height: 1.5;\">(\'#export\').html(); =&gt; id값이 export 인 태그의 자식 태그들만 가져옴.</span></p>\r\n            <p style=\"margin-left: 4em; padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">$(\'#data\').val(exp);</p>\r\n            <p style=\"margin-left: 4em; padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">$(\'#export_data\').submit();</p>\r\n            <p style=\"margin-left: 2em; padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">}</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&lt;/script&gt;</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&lt;div&gt;</p>\r\n            <p style=\"margin-left: 2em; padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&lt;input type=\"button\" value=\"Excel\" onclick=\"export_excel()\"&gt;</p>\r\n            <p style=\"margin-left: 2em; padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&lt;form id=\"export_data\" method=\"post\" action=\"./Excel.php\"&gt;</p>\r\n            <p style=\"margin-left: 4em; padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&lt;input type=\"hidden\" id=\"data\" name=\"data\" /&gt;</p>\r\n            <p style=\"margin-left: 2em; padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&lt;/form&gt;</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">&lt;/div&gt;</p>\r\n            </td>\r\n         </tr>\r\n      </tbody>\r\n   </table>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\"><br /></p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\">다운로드 실행 페이지(Excel.php)</p>\r\n<p style=\"padding-right: 0px; padding-left: 0px; color: #666666; background-color: #ffffff; font-family: dotum; line-height: 18px; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<table class=\"txc-table\" width=\"494\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"color: #666666; background-color: #ffffff; border-spacing: 0px; line-height: 18px; border-width: initial; border-style: none; border-color: initial; font-family: 돋움;\">\r\n   <tbody>\r\n      <tr>\r\n         <td style=\"margin: 0px; padding: 0px; font-size: 14px; line-height: 1.5; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; border-style: solid;\">\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">header(\"Content-Type: application/vnd.ms-excel\");</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">header(\"Content-Disposition: attachment; filename=test.xls\");</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">header(\"Content-Description:PHP4 Generated Data\");</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\"><br /></p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">$data = $_REQUEST[\'data\'];</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">echo \"&lt;meta content=\\\"application/vnd.ms-excel;charset=UTF-8;\\\" name=\\\"Content-type\\\"&gt;\";</p>\r\n            <p style=\"padding-right: 0px; padding-left: 0px; padding-top: 0px !important; padding-bottom: 0px !important;\">echo $data;</p>\r\n            </td>\r\n         </tr>\r\n      </tbody>\r\n   </table>\r\n<p style=\"padding: 0px; color: #666666; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; font-size: 14px; background-color: #ffffff;\">&nbsp;</p>\r\n<p><br style=\"color: #666666; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; font-size: 14px; background-color: #ffffff;\" /><span style=\"color: #666666; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; font-size: 14px; background-color: #ffffff;\">출처:&nbsp;</span><a href=\"https://blog.goodgods.com/251\" style=\"color: #333333; text-decoration-line: none; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; font-size: 14px; background-color: #ffffff;\" target=\"_blank\">https://blog.goodgods.com/251</a><span style=\"color: #666666; font-family: &quot;Spoqa Han Sans&quot;, sans-serif; font-size: 14px; background-color: #ffffff;\">&nbsp;[개발은 너무해]</span></p>','https://link2me.tistory.com/1619','https://blog.goodgods.com/251',0,2,4,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-03-20 23:00:16',0,'2022-03-20 23:00:16','192.168.219.101','','','','','','','','','','','',''),(542,-542,'',542,0,0,'','','html1','[Linux] 우분투에서 아두이노 IDE 실행시 에러 조치사항','<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">우분투에서 아두이노 실행시 \"canberra-gtk-module\" 에러가 날 경우 아래 패키지를 설치.</span></p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">&nbsp;</span></p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">sudo apt install libcanberra-gtk-module libcanberra-gtk3-module</span></p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">&nbsp;</span></p>\r\n<p><font face=\"맑은 고딕, malgun gothic\">우분투에서 ft232 보드가 자동으로 disconnect 될때,(sudo dmesg에서 확인가능)</font></p>\r\n<p>\r\n   <code style=\"margin: 0px; padding: var(--su2) var(--su4); border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; line-height: inherit; font-family: var(--ff-mono); font-size: var(--fs-body1); vertical-align: baseline; box-sizing: inherit; white-space: pre-wrap; color: #232629; border-radius: var(--br-sm);\">sudo apt-get remove brltty //패키지 제거</code>\r\n   </p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">&nbsp;</span></p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">-------------------------------------------------------------------------------------------------------------------------------------------------------------</span></p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">&nbsp;</span></p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">자바 시리얼 패키지 미설치로 import serial 에러 발생시,</span></p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">&nbsp;Traceback (most recent call last):</span></p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">&nbsp; File \"/home/geoworld/.arduino15/packages/esp32/tools/esptool_py/3.0.0/esptool.py\", line 38, in &lt;module&gt;</span></p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">&nbsp; &nbsp; import serial</span></p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">ImportError: No module named serial</span></p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">&nbsp;</span></p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">&gt;&nbsp; sudo apt install python3-pip</span></p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">&gt;&nbsp; pip3 install pyserial</span></p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">or</span></p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">&gt;&nbsp;</span><span style=\"color: #555555; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">udo apt install python-is-python3</span></p>\r\n<span style=\"color: #555555; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">출처:&nbsp;</span><a href=\"https://busyman.tistory.com/64\" target=\"_blank\" style=\"text-decoration-line: none; color: #555555;\"><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">https://busyman.tistory.com/64</span></a><span style=\"color: #555555; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px;\">&nbsp;[사는 이야기]</span>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;;\">-------------------------------------------------------------------------------------------------------------------------------------------------------------</span>&nbsp;</p>\r\n<p><font face=\"맑은 고딕, malgun gothic\">&nbsp;</font></p>\r\n<p><font face=\"맑은 고딕, malgun gothic\">아래 에러 발생시,</font></p>\r\n<p><font face=\"맑은 고딕, malgun gothic\">exec: \"python\": executable file not found in $PATH</font></p>\r\n<p><br /></p>\r\n<p>&gt;&nbsp;<span style=\"font-family: inherit; color: var(--highlight-color); font-style: inherit; font-variant-ligatures: inherit; font-variant-caps: inherit; font-weight: inherit; white-space: inherit; font-size: 13px;\">sudo ln -s /usr/</span><span class=\"hljs-built_in\" style=\"font-family: inherit; color: var(--highlight-literal); font-style: inherit; font-variant: inherit; font-weight: inherit; white-space: inherit; font-size: 13px; margin: 0px; padding: 0px; border: 0px; font-stretch: inherit; line-height: inherit; vertical-align: baseline; box-sizing: inherit;\">bin</span><span style=\"font-family: inherit; color: var(--highlight-color); font-style: inherit; font-variant-ligatures: inherit; font-variant-caps: inherit; font-weight: inherit; white-space: inherit; font-size: 13px;\">/python3 /usr/</span><span class=\"hljs-built_in\" style=\"font-family: inherit; color: var(--highlight-literal); font-style: inherit; font-variant: inherit; font-weight: inherit; white-space: inherit; font-size: 13px; margin: 0px; padding: 0px; border: 0px; font-stretch: inherit; line-height: inherit; vertical-align: baseline; box-sizing: inherit;\">bin</span><span style=\"font-family: inherit; color: var(--highlight-color); font-style: inherit; font-variant-ligatures: inherit; font-variant-caps: inherit; font-weight: inherit; white-space: inherit; font-size: 13px;\">/python</span><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;;\">&nbsp;</span></p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;;\">-------------------------------------------------------------------------------------------------------------------------------------------------------------</span></p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;;\">&nbsp;</span></p>\r\n<p><font face=\"맑은 고딕, malgun gothic\">USB 장치를 모든 사용자가 쓸 수 있도록 해준다.</font></p>\r\n<p><font face=\"맑은 고딕, malgun gothic\">&gt; sudo chmod 666 /dev/ttyUSB0</font></p>\r\n<p><font face=\"맑은 고딕, malgun gothic\">-------------------------------------------------------------------------------------------------------------------------------------------------------------</font></p>\r\n<p><span style=\"background-color: #ffffff; font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px; color: #000000;\">포트에 접근,쓰기 권한이 부족해 permission denined에러가 발생. 권한 설정을 해줍니다.</span></p>\r\n<p style=\"margin-right: auto; margin-bottom: 28px; margin-left: auto; padding-right: 0px; padding-left: 0px; outline: none; line-height: 1.5; color: #666666; background-color: #ffffff;\"></p>\r\n<p><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px; color: #000000;\">1. 포트에 직접 권한 설정 : 아두이노 설치 폴더 위치에서 실행 :&nbsp; sudo chmod -R 777 /dev/ttyUSB0(usb포트이름)&nbsp;</span><br /><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px; color: #000000;\">2. 유저에 포트 권한 그룹 설정 :&nbsp; </span><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;;\"><span style=\"font-family: &quot;맑은 고딕&quot;, &quot;malgun gothic&quot;; font-size: 12px; color: #000000;\">sudo usermod -a -G dialout $USE</span><span style=\"font-size: 12px; color: #000000;\">R</span></span></p>\r\n<p>&nbsp;</p>','https://mondaysickness.com/2019/09/23/%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0%EB%B2%95-failed-to-load-module-canberra-gtk-module/','https://busyman.tistory.com/64',0,0,16,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-03-29 13:21:13',1,'2022-03-29 13:21:13','192.168.219.101','','','','','','','','','','','',''),(545,-544,'',545,0,0,'','','html1','[ETC] 프로세싱 시리얼 모니터 (시리얼 포트 선택메뉴 프로그램 내장)','<div class=\"se-component se-text se-l-default\" id=\"SE-26bd43dc-20c7-4100-b2aa-5358c90388f0\" style=\"margin: 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #3d4444; background-color: #ffffff;\">\r\n   <div class=\"se-component-content\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-text se-l-default\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n         <div class=\"se-module se-module-text\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline;\">\r\n            <div class=\"hgroup\" style=\"margin: 50px auto 60px; padding: 0px 0px 20px; max-width: 860px; border-bottom: 1px solid rgb(235, 235, 235);\">\r\n               <h1 style=\"font-size: 1.6875em; margin: 0px 0px 9px; padding: 0px; line-height: 1.4444em;\">Processing에서 시리얼통신으로 받은 데이터를 그래프로 표현하기</h1>\r\n               <div class=\"post-meta\" style=\"margin: 0px; padding: 0px; font-size: 0.8125em; color: #808080;\"><span class=\"author\">PinkWink</span>&nbsp;<span class=\"date\">2013. 10. 23. 18:39</span></div>\r\n               </div>\r\n            <div class=\"entry-content\" style=\"margin: 0px; padding: 0px; height: auto !important;\">\r\n               <div class=\"contents_style\" style=\"margin: 0px; padding: 0px; height: auto !important;\">\r\n                  <p style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: justify;\">요즘 제가 MATLAB을 시작으로, Arduino, Python 등에서 시리얼 통신으로 데이터를 핸들링하는 아주 기초적인 글을 몇개 다뤘는데요. 이번에는 Processing이라고 하는 툴을 최근에 소개했었는데[<a href=\"http://pinkwink.kr/585\" target=\"_blank\" class=\"tx-link\" style=\"color: #666666;\">바로가기</a>] 그 Processing으에 관련된 글을 하나 더 다룰려고 합니다. 가지고 놀다보니 Processing도 많은 장점들이 있더라구요. 그것도 정말 쉽게 잘 쓸수 있구요. Processing에 관련된 기초적인 이야기는 공식홈페이지[<a href=\"http://www.processing.org/\" target=\"_blank\" class=\"tx-link\" style=\"color: #666666;\">바로가기</a>]만 가도 엄청 많으니 패스하구요.&nbsp;이번글의 목적은 Processing에서 시리얼 통신을 통해 들어온 데이터를 그래프로 표현하는 것입니다. 거기에 살짝 양념을 쳐서 GUI를 살짝 흉내도 내도록 하구 있구요. &nbsp;아무튼 뭐 그렇습니다.^^.</p>\r\n                  <p class=\"polaroid\" style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: center; clear: none; float: none;\"><span class=\"imageblock\" style=\"display: inline-block; height: auto; max-width: 100%;\"><a href=\"https://pinkwink.kr/attachment/cfile27.uf@23704B34526780A617C86C.zip\" style=\"color: #666666;\" target=\"_blank\"><img src=\"https://t1.daumcdn.net/tistory_admin/assets/blog/tistory-eff3d50340d1f7c29c7b8ddb6a26e5d491adc1df/blogs/image/extension/zip.gif?_version_=tistory-eff3d50340d1f7c29c7b8ddb6a26e5d491adc1df\" alt=\"\" style=\"border: none; vertical-align: middle; max-width: 100%; height: auto; margin-top: 36px;\" />&nbsp;monitorNTARSv1.zip</a></span></p>\r\n                  <p style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: justify;\">일단 Processing에서 기본 지원하는 배포본인데요. 어차피 소스코드까지 열람이 가능하니까 큰 상관은 없을듯 합니다.</p>\r\n                  <p class=\"polaroid\" style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: center; clear: none; float: none;\"><span class=\"imageblock\" style=\"display: inline-block; width: 515px; height: auto; max-width: 100%;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/221B5434526780A304\" width=\"515\" filename=\"002.jpg\" filemime=\"image/jpeg\" style=\"border: none; vertical-align: top; max-width: 100%; height: auto; margin-top: 36px;\" /></span></p>\r\n                  <p style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: justify;\">받은 압축화일을 풀고나면 있는 저 응용프로그램을 실행하시면 됩니다.</p>\r\n                  <p class=\"polaroid\" style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: center; clear: none; float: none;\"><span class=\"imageblock\" style=\"display: inline-block; width: 662px; height: auto; max-width: 100%;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/2333BD34526780A330\" width=\"662\" filename=\"003.jpg\" filemime=\"image/jpeg\" style=\"border: none; vertical-align: top; max-width: 100%; height: auto; margin-top: 36px;\" /></span></p>\r\n                  <p style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: justify;\">바로 저기 있는 AVAILABLEPORTS 때문에 controlP5라는 라이브러리를 사용했습니다. 해당 라이브러리는 제가 이전글에서 언급[<a href=\"http://pinkwink.kr/585\" target=\"_blank\" class=\"tx-link\" style=\"color: #666666;\">바로가기</a>]했던 GUI 라이브러리입니다. 위에 표시된 부분은 Drop down list라고 하는데요. 살짝 코드를 한번 보죠.</p>\r\n                  <div style=\"margin: 0px; padding: 0.2em 0.6em; color: #000000; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; overflow: auto; width: auto; border-style: solid; border-color: gray; border-image: initial; border-width: 0.1em 0.1em 0.1em 0.8em;\">\r\n                     <pre style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; line-height: 16.25px;\"><span style=\"color: #000080; font-weight: bold;\">import</span> controlP5.*;\r\nControlP5 cp5;\r\nDropdownList l;\r\n<span style=\"color: #000080; font-weight: bold;\">void</span> setup() {\r\n  ... ... ...\r\n  cp5 = <span style=\"color: #000080; font-weight: bold;\">new</span> ControlP5(<span style=\"color: #000080; font-weight: bold;\">this</span>);\r\n  l = cp5.<span style=\"color: #ff0000;\">addDropdownList</span>(<span style=\"color: #0000ff;\">\"AvailablePorts\"</span>);\r\n  ... ... ...\r\n  comPortList(l);\r\n}\r\n<span style=\"color: #000080; font-weight: bold;\">void</span> comPortList(DropdownList ddl) {\r\n  availablePort = arsPort.<span style=\"color: #ff0000;\">list</span>();\r\n  ddl.<span style=\"color: #ff0000;\">setPosition</span>(<span style=\"color: #0000ff;\">10</span>, <span style=\"color: #0000ff;\">70</span>);\r\n  ddl.<span style=\"color: #ff0000;\">setSize</span>(<span style=\"color: #0000ff;\">80</span>, <span style=\"color: #0000ff;\">60</span>);\r\n  ddl.<span style=\"color: #ff0000;\">setItemHeight</span>(<span style=\"color: #0000ff;\">15</span>);\r\n  ddl.<span style=\"color: #ff0000;\">setBarHeight</span>(<span style=\"color: #0000ff;\">15</span>);\r\n  ddl.<span style=\"color: #ff0000;\">setColorBackground</span>(ColorOfListBoxBackground);\r\n  ddl.<span style=\"color: #ff0000;\">setColorActive</span>(ColorOfListBoxActive);\r\n  ddl.<span style=\"color: #ff0000;\">setColorForeground</span>(ColorOfListBoxForeground);\r\n  ddl.<span style=\"color: #ff0000;\">setValue</span>(<span style=\"color: #0000ff;\">0</span>);\r\n  ddl.<span style=\"color: #ff0000;\">captionLabel</span>().<span style=\"color: #ff0000;\">toUpperCase</span>(<span style=\"color: #000080; font-weight: bold;\">true</span>);\r\n  ddl.<span style=\"color: #ff0000;\">captionLabel</span>().<span style=\"color: #ff0000;\">set</span>(<span style=\"color: #0000ff;\">\"AvailablePorts\"</span>);\r\n  ddl.<span style=\"color: #ff0000;\">captionLabel</span>().<span style=\"color: #ff0000;\">setColor</span>(ColorOfListBoxSetColor);  \r\n  ddl.<span style=\"color: #ff0000;\">captionLabel</span>().<span style=\"color: #ff0000;\">style</span>().<span style=\"color: #ff0000;\">marginTop</span> = <span style=\"color: #0000ff;\">3</span>;\r\n  ddl.<span style=\"color: #ff0000;\">valueLabel</span>().<span style=\"color: #ff0000;\">style</span>().<span style=\"color: #ff0000;\">marginTop</span> = <span style=\"color: #0000ff;\">3</span>; \r\n  <span style=\"color: #000080; font-weight: bold;\">for</span> (<span style=\"color: #000080; font-weight: bold;\">int</span> i=<span style=\"color: #0000ff;\">0</span>; i&lt;availablePort.<span style=\"color: #ff0000;\">length</span>; i++) {\r\n    l.<span style=\"color: #ff0000;\">addItem</span>(availablePort[i], i);\r\n  }\r\n}\r\n<span style=\"color: #000080; font-weight: bold;\">void</span> controlEvent(ControlEvent theEvent) {\r\n  <span style=\"color: #000080; font-weight: bold;\">if</span> (theEvent.<span style=\"color: #ff0000;\">isGroup</span>() &amp;amp;&amp;amp; theEvent.<span style=\"color: #ff0000;\">name</span>().<span style=\"color: #ff0000;\">equals</span>(<span style=\"color: #0000ff;\">\"AvailablePorts\"</span>)){\r\n    <span style=\"color: #000080; font-weight: bold;\">int</span> connectPortNo = (<span style=\"color: #000080; font-weight: bold;\">int</span>)theEvent.<span style=\"color: #ff0000;\">group</span>().<span style=\"color: #ff0000;\">getValue</span>();\r\n    connectPort = availablePort[connectPortNo];\r\n  }\r\n  <span style=\"color: #000080; font-weight: bold;\">if</span> (!arsConnection) { \r\n    arsPort = <span style=\"color: #000080; font-weight: bold;\">new</span> Serial(<span style=\"color: #000080; font-weight: bold;\">this</span>, connectPort, <span style=\"color: #0000ff;\">115200</span>); \r\n    arsConnection = <span style=\"color: #000080; font-weight: bold;\">true</span>;\r\n  }\r\n  delay(<span style=\"color: #0000ff;\">100</span>);  \r\n  arsPort.<span style=\"color: #ff0000;\">write</span>(<span style=\"color: #0000ff;\">\"&lt;CAH&gt;\"</span>);    \r\n}\r\n</pre>\r\n                     </div>\r\n                  <p style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: justify;\">위 코드가 controlP5에서 드롭다운 리스트를 다룬 부분인데요. controlP5를 import하구요. cp5로 선언하고, 드롭다운 리스트 변수를 l로 두었습니다. 그리고 setup()함수에서 실제 다루고 있는 부분만 void setup()내에서 두었습니다. 본 함수를 이야기하기 전에 전 드롭다운리스트에서 하고싶었던건 그저 현재 가용한 시리얼 포트의 리스트를 나열하고 싶었던 거에요. 그래서 comPortList()함수를 확인해보면, 15번행에서 시리얼 통신 라이브러리에서 제공하는 list()함수를 사용해서 가용한 포트를 받고, 그걸 addItem으로 리스트에 제공하는 부분입니다. 그 후에 controlEvent()함수에서 이벤트를 핸들링하고 있구요. 최근 시리얼 통신을 다루던 제 글은 다 그렇지만 뭔가 실습할 대상이 있어야하니 전 그걸 NT-ARSv1[<a href=\"http://pinkwink.kr/425\" target=\"_blank\" class=\"tx-link\" style=\"color: #666666;\">바로가기</a>]으로 잡은거에요. 그래서 그에 맞는 설정을 43번행에서 하고 있는 겁니다. 그리고 드롭다운 리스트에서 포트가 선택되면 ARS한테 각도를 넘겨 달라는 &lt;CAH&gt; 명령을 전송하는거죠.</p>\r\n                  <p class=\"polaroid\" style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: center; clear: none; float: none;\"><span class=\"imageblock\" style=\"display: inline-block; width: 419px; height: auto; max-width: 100%;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/24741D34526780A345\" width=\"419\" filename=\"004.jpg\" filemime=\"image/jpeg\" style=\"border: none; vertical-align: top; max-width: 100%; height: auto; margin-top: 36px;\" /></span></p>\r\n                  <p style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: justify;\">그렇게 동작되는 모습이 위 그림입니다. 이제 다시 전체 화면 구성을 보면</p>\r\n                  <p class=\"polaroid\" style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: center; clear: none; float: none;\"><span class=\"imageblock\" style=\"display: inline-block; width: 662px; height: auto; max-width: 100%;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/230EDC34526780A209\" width=\"662\" filename=\"000.jpg\" filemime=\"image/jpeg\" style=\"border: none; vertical-align: top; max-width: 100%; height: auto; margin-top: 36px;\" /></span></p>\r\n                  <p style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: justify;\">이런데요. 이런 화면을 구성하기 위해서 몇몇 기능들을 사용하고 있습니다. 먼저</p>\r\n                  <div style=\"margin: 0px; padding: 0.2em 0.6em; color: #000000; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; overflow: auto; width: auto; border-style: solid; border-color: gray; border-image: initial; border-width: 0.1em 0.1em 0.1em 0.8em;\">\r\n                     <pre style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; line-height: 16.25px;\"><span style=\"color: #000080; font-weight: bold;\">void</span> drawGraphPanel(){\r\n  stroke(ColorOfListBoxForeground);\r\n  strokeWeight(<span style=\"color: #0000ff;\">1.5</span>);\r\n  fill(color(<span style=\"color: #0000ff;\">255</span>,<span style=\"color: #0000ff;\">255</span>,<span style=\"color: #0000ff;\">255</span>));\r\n  rect(graphPanelXPos, graphPanelYPos, graphPanelXSize, graphPanelYSize); \r\n  fill(ColorOfBackground);\r\n  rect(selectPanelXPos, selectPanelYPos, selectPanelXSize, selectPanelYSize);\r\n  pauseBt.<span style=\"color: #ff0000;\">drawButton</span>();\r\n  stopBt.<span style=\"color: #ff0000;\">drawButton</span>();\r\n  rollAngBt.<span style=\"color: #ff0000;\">drawButton</span>();\r\n  pitchAngBt.<span style=\"color: #ff0000;\">drawButton</span>();\r\n  rollAngVelBt.<span style=\"color: #ff0000;\">drawButton</span>();\r\n  pitchAngVelBt.<span style=\"color: #ff0000;\">drawButton</span>();\r\n  strokeWeight(<span style=\"color: #0000ff;\">1</span>);\r\n  <span style=\"color: #000080; font-weight: bold;\">for</span> (<span style=\"color: #000080; font-weight: bold;\">int</span> i=(graphPanelYPos+panelGridYDivision); \r\n              i&lt;(graphPanelYPos+graphPanelYSize); i=i+panelGridYDivision) {\r\n    <span style=\"color: #000080; font-weight: bold;\">for</span> (<span style=\"color: #000080; font-weight: bold;\">int</span> j=(graphPanelXPos+buttonXDiv);\r\n              j&lt;(graphPanelXPos+graphPanelXSize); j=j+buttonXDiv) {\r\n      line(j+panelGridHalfLength, i, j-panelGridHalfLength, i);\r\n      line(j,i+panelGridHalfLength, j, i-panelGridHalfLength);   \r\n    }\r\n  }\r\n  <span style=\"color: #000080; font-weight: bold;\">int</span> tmpX = graphPanelXPos+graphPanelXSize/<span style=\"color: #0000ff;\">10</span>;\r\n  <span style=\"color: #000080; font-weight: bold;\">for</span> (<span style=\"color: #000080; font-weight: bold;\">int</span> i=<span style=\"color: #0000ff;\">0</span>; i&lt;<span style=\"color: #0000ff;\">9</span>; i++) {\r\n    line(tmpX-panelGridHalfLength+i*graphPanelXSize/<span style=\"color: #0000ff;\">10</span>, graphPanelYCenterPos, \r\n          tmpX+panelGridHalfLength+i*graphPanelXSize/<span style=\"color: #0000ff;\">10</span>, graphPanelYCenterPos);\r\n  }  \r\n}\r\n<span style=\"color: #000080; font-weight: bold;\">void</span> drawText() {\r\n  textFont(bigfontText);\r\n  fill(<span style=\"color: #0000ff;\">100</span>);  \r\n  text(<span style=\"color: #0000ff;\">\"NT-ARSv1 Monitor\"</span>,<span style=\"color: #0000ff;\">10</span>,<span style=\"color: #0000ff;\">35</span>);\r\n  textFont(fontText);\r\n  text(<span style=\"color: #0000ff;\">\"This Processing code is monitoring program for NT-ARSv1\"</span>,<span style=\"color: #0000ff;\">280</span>,<span style=\"color: #0000ff;\">51</span>);\r\n  text(<span style=\"color: #0000ff;\">\"NT-ARSv1 Monitoring Ver. 0.80 by PinkWink in NTRexLAB.\"</span>,<span style=\"color: #0000ff;\">280</span>,<span style=\"color: #0000ff;\">63</span>);\r\n  <span style=\"color: #008800; font-style: italic;\">//text(\"by PinkWink in http://pinkwink.kr/\",420,75);</span>\r\n  text(<span style=\"color: #0000ff;\">\"x division = 1 second\"</span>,\r\n    graphPanelXPos+graphPanelXSize/<span style=\"color: #0000ff;\">2</span>-<span style=\"color: #0000ff;\">50</span>,graphPanelYPos+graphPanelYSize+<span style=\"color: #0000ff;\">15</span>);\r\n  <span style=\"color: #000080; font-weight: bold;\">for</span> (<span style=\"color: #000080; font-weight: bold;\">int</span> i=<span style=\"color: #0000ff;\">0</span>; i&lt;<span style=\"color: #0000ff;\">7</span>; i++){\r\n    text(graphYLabel[i], graphPanelXPos-<span style=\"color: #0000ff;\">20</span>, graphPanelYPos+panelGridYDivision*i+<span style=\"color: #0000ff;\">5</span>);\r\n  }\r\n  text(<span style=\"color: #0000ff;\">\"RollAngle\"</span>, buttonXStartPos+<span style=\"color: #0000ff;\">11</span>, buttonYPos+<span style=\"color: #0000ff;\">5</span>);\r\n  text(<span style=\"color: #0000ff;\">\"PitchAngle\"</span>, buttonXStartPos+buttonXDiv+<span style=\"color: #0000ff;\">11</span>, buttonYPos+<span style=\"color: #0000ff;\">5</span>);\r\n  text(<span style=\"color: #0000ff;\">\"RollAngVel\"</span>, buttonXStartPos+buttonXDiv*<span style=\"color: #0000ff;\">2</span>+<span style=\"color: #0000ff;\">11</span>, buttonYPos+<span style=\"color: #0000ff;\">5</span>);\r\n  text(<span style=\"color: #0000ff;\">\"PitchAngVel\"</span>, buttonXStartPos+buttonXDiv*<span style=\"color: #0000ff;\">3</span>+<span style=\"color: #0000ff;\">11</span>, buttonYPos+<span style=\"color: #0000ff;\">5</span>);  \r\n  text(<span style=\"color: #0000ff;\">\"Pause\"</span>, graphPanelXPos+<span style=\"color: #0000ff;\">13</span>, graphPanelYPos-<span style=\"color: #0000ff;\">20</span>);\r\n  text(<span style=\"color: #0000ff;\">\"STOP\"</span>, graphPanelXPos+<span style=\"color: #0000ff;\">93</span>, graphPanelYPos-<span style=\"color: #0000ff;\">20</span>);    \r\n}\r\n</pre>\r\n                     </div>\r\n                  <p style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: justify;\">인데요. drawText()는 화면에서 보이는 글자들을 모두 여기서 표현하고 있습니다. 뭐 원체 딱 봐도 될 정도로 쉽지요.^^. 그리고 drawGraphPanel()은 그래프를 그릴 곳의 경계선과 눈금등을 표시하고 있습니다. 여기서 하나가 뭐냐면 드롭다운리스트는 controlP5라는 라이브러리를 가져다 사용했지만, 나머지 6개의 버튼은 모두 직접 만들었습니다. 그게 10번부터 15번행에서 그걸 사용하고 있는건데요. 그렇게 만들어서 사용한 6개의 GUI 스러운 버튼은 클래스(class)로 선언했습니다. 그부분도 한번 보죠.</p>\r\n                  <div style=\"margin: 0px; padding: 0.2em 0.6em; color: #000000; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; overflow: auto; width: auto; border-style: solid; border-color: gray; border-image: initial; border-width: 0.1em 0.1em 0.1em 0.8em;\">\r\n                     <pre style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; line-height: 16.25px;\"><span style=\"color: #000080; font-weight: bold;\">class</span> ArsButtons {\r\n  <span style=\"color: #000080; font-weight: bold;\">int</span> posX, posY;\r\n  String type;\r\n  <span style=\"color: #000080; font-weight: bold;\">boolean</span> buttonClicked;    \r\n  color ColorOfClickedButton = color(<span style=\"color: #0000ff;\">150</span>,<span style=\"color: #0000ff;\">150</span>,<span style=\"color: #0000ff;\">150</span>);    \r\n  ArsButtons(<span style=\"color: #000080; font-weight: bold;\">int</span> tmpX, <span style=\"color: #000080; font-weight: bold;\">int</span> tmpY, <span style=\"color: #000080; font-weight: bold;\">boolean</span> initValue, String tmpType) {\r\n    buttonClicked = initValue;\r\n    posX = tmpX;\r\n    posY = tmpY;\r\n    type = tmpType;\r\n    drawButton();\r\n  }\r\n  <span style=\"color: #000080; font-weight: bold;\">boolean</span> isButtonClicked(<span style=\"color: #000080; font-weight: bold;\">int</span> X, <span style=\"color: #000080; font-weight: bold;\">int</span> Y, <span style=\"color: #000080; font-weight: bold;\">int</span> buttonArea) {\r\n    <span style=\"color: #000080; font-weight: bold;\">boolean</span> buttonClickedResult = <span style=\"color: #000080; font-weight: bold;\">false</span>;\r\n    <span style=\"color: #000080; font-weight: bold;\">if</span> (type==<span style=\"color: #0000ff;\">\"rec\"</span>) {\r\n      <span style=\"color: #000080; font-weight: bold;\">if</span>(X&lt;(posX+buttonArea) &amp;amp;&amp;amp; X&gt;posX &amp;amp;&amp;amp; Y&lt;(posY+buttonArea) &amp;amp;&amp;amp; Y&gt;posY) {\r\n        buttonClickedResult = <span style=\"color: #000080; font-weight: bold;\">true</span>; }\r\n    } <span style=\"color: #000080; font-weight: bold;\">else</span><span style=\"color: #000080; font-weight: bold;\">if</span> (type==<span style=\"color: #0000ff;\">\"ell\"</span>) {      \r\n      <span style=\"color: #000080; font-weight: bold;\">if</span>(X&lt;(posX+buttonArea/<span style=\"color: #0000ff;\">2</span>) &amp;amp;&amp;amp; X&gt;(posX-buttonArea/<span style=\"color: #0000ff;\">2</span>) \r\n          &amp;amp;&amp;amp; Y&lt;(posY+buttonArea/<span style=\"color: #0000ff;\">2</span>) &amp;amp;&amp;amp; Y&gt;(posY-buttonArea/<span style=\"color: #0000ff;\">2</span>)) {\r\n            buttonClickedResult = <span style=\"color: #000080; font-weight: bold;\">true</span>; }\r\n    }\r\n    <span style=\"color: #000080; font-weight: bold;\">return</span> buttonClickedResult;\r\n  }\r\n  <span style=\"color: #000080; font-weight: bold;\">void</span> buttonClick() {\r\n    <span style=\"color: #000080; font-weight: bold;\">if</span> (buttonClicked) {\r\n      buttonClicked = <span style=\"color: #000080; font-weight: bold;\">false</span>;\r\n    } <span style=\"color: #000080; font-weight: bold;\">else</span> {\r\n      buttonClicked = <span style=\"color: #000080; font-weight: bold;\">true</span>;\r\n    }\r\n  }  \r\n  <span style=\"color: #000080; font-weight: bold;\">void</span> drawButton() {\r\n    fill(ColorOfBackground);\r\n    <span style=\"color: #000080; font-weight: bold;\">if</span> (type==<span style=\"color: #0000ff;\">\"rec\"</span>) {\r\n      rect(posX, posY, <span style=\"color: #0000ff;\">10</span>, <span style=\"color: #0000ff;\">10</span>);\r\n      <span style=\"color: #000080; font-weight: bold;\">if</span> (buttonClicked) { fill(ColorOfClickedButton); } \r\n      <span style=\"color: #000080; font-weight: bold;\">else</span> { fill(ColorOfBackground); } \r\n      rect(posX+<span style=\"color: #0000ff;\">2</span>, posY+<span style=\"color: #0000ff;\">2</span>, <span style=\"color: #0000ff;\">6</span>, <span style=\"color: #0000ff;\">6</span>);\r\n    } <span style=\"color: #000080; font-weight: bold;\">else</span><span style=\"color: #000080; font-weight: bold;\">if</span> (type==<span style=\"color: #0000ff;\">\"ell\"</span>) {      \r\n      ellipse(posX, posY, <span style=\"color: #0000ff;\">10</span>, <span style=\"color: #0000ff;\">10</span>);\r\n      <span style=\"color: #000080; font-weight: bold;\">if</span> (buttonClicked) { fill(ColorOfClickedButton); } \r\n      <span style=\"color: #000080; font-weight: bold;\">else</span> { fill(ColorOfBackground); }\r\n      ellipse(posX, posY, <span style=\"color: #0000ff;\">6</span>, <span style=\"color: #0000ff;\">6</span>);\r\n    } \r\n  }\r\n}\r\n</pre>\r\n                     </div>\r\n                  <p style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: justify;\">이렇습니다.^^ 전체적으로는 버튼은 사각형모양과 원형모양을 지원하구요. 버튼을 그릴 좌표와 크기를 입력하면됩니다만, 크기는 10으로 고정해야합니다. 비율을 생각안했거든요.ㅠㅠ. 그리고 내부에서는 버튼이 클릭되었는지 확인하느 isButtonClicked()함수와 클릭된 버튼의 속성을 변경하는 buttonClick()함수, 그리고 버튼을 그려주는 drawButton()함수를 가지고 있습니다. 이제 버튼을 마우스로 클릭하는 액션에 대한 함수가 필요하겠죠?^^</p>\r\n                  <div style=\"margin: 0px; padding: 0.2em 0.6em; color: #000000; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; overflow: auto; width: auto; border-style: solid; border-color: gray; border-image: initial; border-width: 0.1em 0.1em 0.1em 0.8em;\">\r\n                     <pre style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; line-height: 16.25px;\"><span style=\"color: #000080; font-weight: bold;\">void</span> mousePressed(){\r\n  <span style=\"color: #000080; font-weight: bold;\">if</span>(mouseButton==LEFT){\r\n    <span style=\"color: #000080; font-weight: bold;\">if</span>(rollAngBt.<span style=\"color: #ff0000;\">isButtonClicked</span>(mouseX, mouseY, <span style=\"color: #0000ff;\">10</span>)) {\r\n      rollAngBt.<span style=\"color: #ff0000;\">buttonClick</span>(); }\r\n    <span style=\"color: #000080; font-weight: bold;\">if</span>(pitchAngBt.<span style=\"color: #ff0000;\">isButtonClicked</span>(mouseX, mouseY, <span style=\"color: #0000ff;\">10</span>)) {\r\n      pitchAngBt.<span style=\"color: #ff0000;\">buttonClick</span>(); }\r\n    <span style=\"color: #000080; font-weight: bold;\">if</span>(rollAngVelBt.<span style=\"color: #ff0000;\">isButtonClicked</span>(mouseX, mouseY, <span style=\"color: #0000ff;\">10</span>)) {\r\n      rollAngVelBt.<span style=\"color: #ff0000;\">buttonClick</span>(); }\r\n    <span style=\"color: #000080; font-weight: bold;\">if</span>(pitchAngVelBt.<span style=\"color: #ff0000;\">isButtonClicked</span>(mouseX, mouseY, <span style=\"color: #0000ff;\">10</span>)) {\r\n      pitchAngVelBt.<span style=\"color: #ff0000;\">buttonClick</span>(); }\r\n    <span style=\"color: #000080; font-weight: bold;\">if</span>(pauseBt.<span style=\"color: #ff0000;\">isButtonClicked</span>(mouseX, mouseY, <span style=\"color: #0000ff;\">10</span>)) {\r\n      pauseBt.<span style=\"color: #ff0000;\">buttonClick</span>(); }\r\n    <span style=\"color: #000080; font-weight: bold;\">if</span>(stopBt.<span style=\"color: #ff0000;\">isButtonClicked</span>(mouseX, mouseY, <span style=\"color: #0000ff;\">10</span>)) {\r\n      <span style=\"color: #000080; font-weight: bold;\">if</span>(stopBt.<span style=\"color: #ff0000;\">buttonClicked</span>) {\r\n        stopBt.<span style=\"color: #ff0000;\">buttonClick</span>();\r\n        arsPort.<span style=\"color: #ff0000;\">write</span>(<span style=\"color: #0000ff;\">\"&lt;CAH&gt;\"</span>);\r\n        delay(<span style=\"color: #0000ff;\">20</span>);\r\n      }<span style=\"color: #000080; font-weight: bold;\">else</span> {\r\n        stopBt.<span style=\"color: #ff0000;\">buttonClick</span>(); \r\n        arsPort.<span style=\"color: #ff0000;\">write</span>(<span style=\"color: #0000ff;\">\"&lt;CAE&gt;\"</span>);\r\n        delay(<span style=\"color: #0000ff;\">20</span>);\r\n      }\r\n    }\r\n  }\r\n}\r\n</pre>\r\n                     </div>\r\n                  <p style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: justify;\">이겁니다. Processing은 기본적으로 마우스나 키보드 액션에 대한 함수를 준비해주고 있는데요. 마우스 좌클릭이 되었을때의 좌표가 버튼 좌표위에 있는지 확인해서 버튼이 클릭되었다고 알려주게 됩니다. 위에서 이야기한 클래스에서 관련함수가 있습니다. 이제 그래프를 그리는 부분을 보도록 하겠습니다.</p>\r\n                  <p class=\"polaroid\" style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: center; clear: none; float: none;\"><span class=\"imageblock\" style=\"display: inline-block; width: 664px; height: auto; max-width: 100%;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/23179934526780A307\" width=\"664\" filename=\"005.jpg\" filemime=\"image/jpeg\" style=\"border: none; vertical-align: top; max-width: 100%; height: auto; margin-top: 36px;\" /></span></p>\r\n                  <p style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: justify;\">위 그림처럼 그래프를 표현하는데요. 기본적으로 500개(5초)의 이전데이터를 계속 유지하면서 그걸 그리도록 되어 있습니다. 새로 데이터가 오면 배열의 끝에 위치시키고, 첫 데이터는 지우는 형태로 만들었어요. 그리고 버튼을 클릭함에 따라 4개의 데이터중에서 하나이상을 선택할 수 있습니다.</p>\r\n                  <p class=\"polaroid\" style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: center; clear: none; float: none;\"><span class=\"imageblock\" style=\"display: inline-block; width: 660px; height: auto; max-width: 100%;\"><img src=\"https://t1.daumcdn.net/cfile/tistory/231A1534526780A302\" width=\"660\" filename=\"006.jpg\" filemime=\"image/jpeg\" style=\"border: none; vertical-align: top; max-width: 100%; height: auto; margin-top: 36px;\" /></span></p>\r\n                  <p style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: justify;\">그래프를 그리는 부분을 한분 보도록 하겠습니다.</p>\r\n                  <div style=\"margin: 0px; padding: 0.2em 0.6em; color: #000000; font-family: &quot;Noto Sans KR&quot;, sans-serif; font-size: 16px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; overflow: auto; width: auto; border-style: solid; border-color: gray; border-image: initial; border-width: 0.1em 0.1em 0.1em 0.8em;\">\r\n                     <pre style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; line-height: 16.25px;\"><span style=\"color: #000080; font-weight: bold;\">void</span> drawGraph() {\r\n  noFill();  \r\n  <span style=\"color: #000080; font-weight: bold;\">if</span> (rollAngBt.<span style=\"color: #ff0000;\">buttonClicked</span>) {\r\n    stroke(ColorOfRollAngLine);\r\n    strokeWeight(<span style=\"color: #0000ff;\">2</span>);\r\n    beginShape();\r\n      <span style=\"color: #000080; font-weight: bold;\">for</span> (<span style=\"color: #000080; font-weight: bold;\">int</span> xPos=<span style=\"color: #0000ff;\">0</span>; xPos&lt;rollAng.<span style=\"color: #ff0000;\">length</span>; xPos++) {\r\n        <span style=\"color: #000080; font-weight: bold;\">float</span> tmp = saturatingValue(rollAng[xPos], <span style=\"color: #0000ff;\">90</span>);        \r\n        vertex(xPos+graphPanelXPos, graphPanelYCenterPos - tmp*resizingYSize);\r\n      }\r\n    endShape();\r\n  }\r\n  <span style=\"color: #000080; font-weight: bold;\">if</span> (pitchAngBt.<span style=\"color: #ff0000;\">buttonClicked</span>) {\r\n    stroke(ColorOfPitchAngLine);\r\n    strokeWeight(<span style=\"color: #0000ff;\">2</span>);\r\n    beginShape();\r\n      <span style=\"color: #000080; font-weight: bold;\">for</span> (<span style=\"color: #000080; font-weight: bold;\">int</span> xPos=<span style=\"color: #0000ff;\">0</span>; xPos&lt;pitchAng.<span style=\"color: #ff0000;\">length</span>; xPos++) {\r\n        <span style=\"color: #000080; font-weight: bold;\">float</span> tmp = saturatingValue(pitchAng[xPos], <span style=\"color: #0000ff;\">90</span>); \r\n        vertex(xPos+graphPanelXPos, graphPanelYCenterPos - tmp*resizingYSize);\r\n      }\r\n    endShape();\r\n  }\r\n  <span style=\"color: #000080; font-weight: bold;\">if</span> (rollAngVelBt.<span style=\"color: #ff0000;\">buttonClicked</span>) {\r\n    stroke(ColorOfRollAngVelLine);\r\n    strokeWeight(<span style=\"color: #0000ff;\">1</span>);\r\n    beginShape();\r\n      <span style=\"color: #000080; font-weight: bold;\">for</span> (<span style=\"color: #000080; font-weight: bold;\">int</span> xPos=<span style=\"color: #0000ff;\">0</span>; xPos&lt;rollAngVel.<span style=\"color: #ff0000;\">length</span>; xPos++) {\r\n        <span style=\"color: #000080; font-weight: bold;\">float</span> tmp = saturatingValue(rollAngVel[xPos], <span style=\"color: #0000ff;\">500</span>);\r\n        vertex(xPos+graphPanelXPos, graphPanelYCenterPos - tmp*resizingAngVelYSize);\r\n      }\r\n    endShape();\r\n  }\r\n  <span style=\"color: #000080; font-weight: bold;\">if</span> (pitchAngVelBt.<span style=\"color: #ff0000;\">buttonClicked</span>) {\r\n    stroke(ColorOfPitchAngVelLine);\r\n    strokeWeight(<span style=\"color: #0000ff;\">1</span>);\r\n    beginShape();\r\n      <span style=\"color: #000080; font-weight: bold;\">for</span> (<span style=\"color: #000080; font-weight: bold;\">int</span> xPos=<span style=\"color: #0000ff;\">0</span>; xPos&lt;pitchAngVel.<span style=\"color: #ff0000;\">length</span>; xPos++) {\r\n        <span style=\"color: #000080; font-weight: bold;\">float</span> tmp = saturatingValue(pitchAngVel[xPos], <span style=\"color: #0000ff;\">500</span>);\r\n        vertex(xPos+graphPanelXPos, graphPanelYCenterPos - tmp*resizingAngVelYSize);\r\n      }\r\n    endShape();\r\n  }\r\n}\r\n<span style=\"color: #000080; font-weight: bold;\">void</span> serialEvent(Serial p) {\r\n  String arsValues = <span style=\"color: #0000ff;\">\"\"</span>;\r\n  arsValues = arsPort.<span style=\"color: #ff0000;\">readStringUntil</span>(<span style=\"color: #0000ff;\">10</span>);\r\n  <span style=\"color: #000080; font-weight: bold;\">if</span> (!pauseBt.<span style=\"color: #ff0000;\">buttonClicked</span> &amp;amp;&amp;amp; (arsValues != <span style=\"color: #000080; font-weight: bold;\">null</span>)) {\r\n      calAngles(arsValues);\r\n  }  \r\n}\r\n<span style=\"color: #000080; font-weight: bold;\">float</span> saturatingValue(<span style=\"color: #000080; font-weight: bold;\">float</span> target, <span style=\"color: #000080; font-weight: bold;\">float</span> limitValue) {\r\n  <span style=\"color: #000080; font-weight: bold;\">float</span> resizingResult;\r\n  <span style=\"color: #000080; font-weight: bold;\">float</span> tmp = abs(target);\r\n  <span style=\"color: #000080; font-weight: bold;\">if</span> (tmp&gt;limitValue) {\r\n    resizingResult = target/tmp*limitValue;\r\n  } <span style=\"color: #000080; font-weight: bold;\">else</span> {\r\n    resizingResult = target;\r\n  }        \r\n  <span style=\"color: #000080; font-weight: bold;\">return</span> resizingResult;\r\n}\r\n<span style=\"color: #000080; font-weight: bold;\">void</span> calAngles(String s) {\r\n  <span style=\"color: #000080; font-weight: bold;\">int</span> lastPosInString = s.<span style=\"color: #ff0000;\">indexOf</span>(<span style=\"color: #a61717; background-color: #e3d2d2;\">\'</span>&gt;<span style=\"color: #a61717; background-color: #e3d2d2;\">\'</span>);\r\n  s = s.<span style=\"color: #ff0000;\">substring</span>(<span style=\"color: #0000ff;\">1</span>, lastPosInString);\r\n  <span style=\"color: #000080; font-weight: bold;\">int</span> arsResultArray[] = <span style=\"color: #000080; font-weight: bold;\">int</span>(split(s, <span style=\"color: #800080;\">\',\'</span>));\r\n  rollAng = subset(rollAng, <span style=\"color: #0000ff;\">1</span>);\r\n  pitchAng = subset(pitchAng, <span style=\"color: #0000ff;\">1</span>);\r\n  rollAngVel = subset(rollAngVel, <span style=\"color: #0000ff;\">1</span>);\r\n  pitchAngVel = subset(pitchAngVel, <span style=\"color: #0000ff;\">1</span>);\r\n  rollAng = append(rollAng, <span style=\"color: #000080; font-weight: bold;\">float</span>(arsResultArray[<span style=\"color: #0000ff;\">0</span>])*<span style=\"color: #0000ff;\">0.001</span>*<span style=\"color: #0000ff;\">180</span>/PI);\r\n  pitchAng = append(pitchAng, <span style=\"color: #000080; font-weight: bold;\">float</span>(arsResultArray[<span style=\"color: #0000ff;\">1</span>])*<span style=\"color: #0000ff;\">0.001</span>*<span style=\"color: #0000ff;\">180</span>/PI);\r\n  rollAngVel = append(rollAngVel, <span style=\"color: #000080; font-weight: bold;\">float</span>(arsResultArray[<span style=\"color: #0000ff;\">2</span>])*<span style=\"color: #0000ff;\">0.001</span>*<span style=\"color: #0000ff;\">180</span>/PI);\r\n  pitchAngVel = append(pitchAngVel, <span style=\"color: #000080; font-weight: bold;\">float</span>(arsResultArray[<span style=\"color: #0000ff;\">3</span>])*<span style=\"color: #0000ff;\">0.001</span>*<span style=\"color: #0000ff;\">180</span>/PI);   \r\n}\r\n</pre>\r\n                     </div>\r\n                  <p style=\"margin-bottom: 24px; padding: 0px; font-size: 0.9375em; line-height: 1.6; color: #666666; font-family: &quot;Noto Sans KR&quot;, sans-serif; text-align: justify;\">일단 45번행의 시리얼 이벤트 함수는 시리얼통신으로 데이터가 들어오는 이벤트를 처리합니다. 거기서 calAngles()함수에 받은 데이터를 넘겨주죠. calAngles()함수는 사실 이번부터 시리얼통신에서 들어온 데이터를 핸들링하는 글에서 이야기를 했었습니다.&nbsp;그 중에서 아두이노에서 핸들링한 글이 가장 가깝습니다.[<a href=\"http://pinkwink.kr/582\" target=\"_blank\" class=\"tx-link\" style=\"color: #666666;\">바로가기</a>] 아무튼 NT-ARSv1의 출력데이터는 항상 &lt;&gt;로 쌓여져 있으니 &gt;의 위치를 알아내서 &lt;와 &gt;사이에 있는 값만 취하는 겁니다. 그걸 다시 split을 이용해서 ,를 기준으로 나눠서 저장하는거죠. 그 다음 문자열인 데이터를 숫자로 바꾸고 라디안을 일반적인 도로 바꾸는 작업들이 calAngles()함수입니다. 그리고 drawGraph()함수에서는 각각 500개의 크기를 가진 배열을 그리는 일을 합니다. 여기서 for문을 500까지 돌게하면 자주 에러가 납니다. 순간적으로 시리얼 이벤트의 문제나 내부적인 문제로 그런가본데요. 그래서 Processing 공식 홈페이지에서는 배열의 크기(length)를 반복문의 끝으로 잡아달라는 내용의 문서가 있습니다. 그래서 저도 for문은 7번처럼 이후에도 꾸몄습니다.&nbsp;나머지 satratingValue()함수는 그래프를 그릴때 한계치를 순간적으로 넘는경우가 보기 싫어서 만들어 둔 겁니다. 기초부터 설명하는건 요즘같은 세상에는 안맞는듯합니다. 왜냐면 이제는 공식홈페이지 조차 개념을 잘 잡을 수 있도록 설명되어 있어서 말이죠.^^. 이번 작업을 하면서 꽤나 Processing에 대해 흥미를 느꼈습니다. 사실 이번 글은 Processing이긴하지만, 그래픽 핸들링의 간편함이라는 주제를 가지고 작업을 하나 더 해볼까.. 하는 생각이 들더라구요^^. 아 프로그램이 동작하는 동영상 한번 보시죠^^</p>\r\n                  <p><br /></p>\r\n                  </div>\r\n               </div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div class=\"se-component se-image se-l-default\" id=\"SE-30efd92c-fad2-4d24-b5b7-e127b116db6e\" style=\"margin: 20px 0px 0px; padding: 0px; border: 0px; font-variant-numeric: inherit; font-variant-east-asian: inherit; font-stretch: inherit; font-size: medium; line-height: inherit; font-family: se-nanumgothic, &quot;\\\\B098눔고딕&quot;, nanumgothic, sans-serif, Meiryo; vertical-align: baseline; position: relative; color: #3d4444; background-color: #ffffff;\">\r\n   <div class=\"se-component-content se-component-content-normal\" style=\"margin: 0px auto; padding: 0px 40px; border: 0px; font: inherit; vertical-align: baseline; max-width: 100%;\">\r\n      <div class=\"se-section se-section-image se-l-default se-section-align-justify\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; max-width: 567px;\">\r\n         <div class=\"se-module se-module-image\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; position: relative;\">\r\n            <div class=\"autosourcing-stub-extra\" style=\"margin: 0px; padding: 0px; border: 0px; font: inherit; vertical-align: baseline; zoom: 1; opacity: 1;\">&nbsp;</div>\r\n            </div>\r\n         </div>\r\n      </div>\r\n   </div>','https://blog.naver.com/mapes_khkim/221889681007','https://pinkwink.kr/588',0,1,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-03-29 23:15:26',1,'2022-03-29 23:15:26','192.168.219.101','','','','','','','','','','','',''),(544,-543,'',544,0,0,'','','html1','[ETC] 배터리 잔량 표시기 회로','<div class=\"photoset-item photoset-cell\" data-imagenotes=\"[{&quot;noteID&quot;:&quot;NGDTSPEI1IQB32G&quot;,&quot;author&quot;:&quot;osvaldas.banys&quot;,&quot;text&quot;:&quot;RED&quot;,&quot;top&quot;:0.18026565464895636,&quot;left&quot;:0.13768115942028986,&quot;height&quot;:0.09487666034155598,&quot;width&quot;:0.09057971014492754},{&quot;noteID&quot;:&quot;NTIG0TNI1IQB39I&quot;,&quot;author&quot;:&quot;osvaldas.banys&quot;,&quot;text&quot;:&quot;Add a button here&quot;,&quot;top&quot;:0.018975332068311195,&quot;left&quot;:0.161231884057971,&quot;height&quot;:0.06072106261859583,&quot;width&quot;:0.04710144927536232},{&quot;noteID&quot;:&quot;N1QH4PBI1IQB39U&quot;,&quot;author&quot;:&quot;osvaldas.banys&quot;,&quot;text&quot;:&quot;GREEN&quot;,&quot;top&quot;:0.06072106261859583,&quot;left&quot;:0.5942028985507246,&quot;height&quot;:0.09487666034155598,&quot;width&quot;:0.09057971014492754},{&quot;noteID&quot;:&quot;N00TTCSI1IQB3AE&quot;,&quot;author&quot;:&quot;osvaldas.banys&quot;,&quot;text&quot;:&quot;GREEN&quot;,&quot;top&quot;:0.06261859582542695,&quot;left&quot;:0.7101449275362319,&quot;height&quot;:0.09487666034155598,&quot;width&quot;:0.09057971014492754},{&quot;noteID&quot;:&quot;NWOS7XSI1IQB3AF&quot;,&quot;author&quot;:&quot;osvaldas.banys&quot;,&quot;text&quot;:&quot;YELLOW&quot;,&quot;top&quot;:0.056925996204933584,&quot;left&quot;:0.8134057971014492,&quot;height&quot;:0.09487666034155598,&quot;width&quot;:0.09057971014492754},{&quot;noteID&quot;:&quot;N24EYYLI1IQB3AJ&quot;,&quot;author&quot;:&quot;osvaldas.banys&quot;,&quot;text&quot;:&quot;YELLOW&quot;,&quot;top&quot;:0.05502846299810247,&quot;left&quot;:0.9021739130434783,&quot;height&quot;:0.11195445920303605,&quot;width&quot;:0.09057971014492754}]\" style=\"padding: 2.5px; color: #333333; font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px; text-align: center; background-color: #ffffff; flex: 1.04676 1 0%;\">\r\n   <div class=\"photoset-image\" style=\"position: relative; overflow: hidden; border-radius: 4px; height: 684.672px;\"><a class=\"gallery-link\" rel=\"photoset58\" href=\"https://content.instructables.com/ORIG/FLG/CU7O/I1IQAX36/FLGCU7OI1IQAX36.png?auto=webp&amp;frame=1&amp;fit=bounds&amp;md=dd0a742dfebd5fc08efbdcca6ffe72f5\" data-download=\"https://content.instructables.com/ORIG/FLG/CU7O/I1IQAX36/FLGCU7OI1IQAX36.png?auto=webp&amp;frame=1&amp;md=dd0a742dfebd5fc08efbdcca6ffe72f5\" data-fileid=\"FLGCU7OI1IQAX36\" style=\"color: #e86c00; text-decoration-line: none;\" target=\"_blank\"><img class=\" ls-is-cached lazyloaded\" alt=\"Li - Ion Battery Level Indicator\" src=\"https://content.instructables.com/ORIG/FLG/CU7O/I1IQAX36/FLGCU7OI1IQAX36.png?auto=webp&amp;frame=1&amp;fit=bounds&amp;md=dd0a742dfebd5fc08efbdcca6ffe72f5\" data-src=\"https://content.instructables.com/ORIG/FLG/CU7O/I1IQAX36/FLGCU7OI1IQAX36.png?auto=webp&amp;frame=1&amp;fit=bounds&amp;md=dd0a742dfebd5fc08efbdcca6ffe72f5\" style=\"max-width: 100%; height: 684.672px; vertical-align: middle; border: 0px; background: none; object-fit: cover; width: 716.703px; border-radius: 4px;\" /><i class=\"notes-icon\" style=\"background: url(&quot;../img/imagenotes/icon-notes.png&quot;) no-repeat; width: 25px; height: 25px; display: inline-block; position: absolute; right: 0px; top: 0px;\"></i></a></div>\r\n   </div>\r\n<div class=\"photoset-col\" style=\"display: flex; flex-direction: column; color: #333333; font-family: &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px; text-align: center; background-color: #ffffff; flex: 0.705882 1 0%;\">\r\n   <div class=\"photoset-item photoset-cell\" data-imagenotes=\"[]\" style=\"padding: 2.5px; flex: 1.5 1 0%;\">\r\n      <div class=\"photoset-image\" style=\"position: relative; overflow: hidden; border-radius: 4px; height: 321.203px;\"><a class=\"gallery-link\" rel=\"photoset58\" href=\"https://content.instructables.com/ORIG/FUL/4I9J/I1IQB1IB/FUL4I9JI1IQB1IB.png?auto=webp&amp;frame=1&amp;fit=bounds&amp;md=b460cdf8630a049b39044f55b2d515a7\" data-download=\"https://content.instructables.com/ORIG/FUL/4I9J/I1IQB1IB/FUL4I9JI1IQB1IB.png?auto=webp&amp;frame=1&amp;md=b460cdf8630a049b39044f55b2d515a7\" data-fileid=\"FUL4I9JI1IQB1IB\" style=\"color: #e86c00; text-decoration-line: none;\" target=\"_blank\"><img class=\" ls-is-cached lazyloaded\" alt=\"Li - Ion Battery Level Indicator\" src=\"https://content.instructables.com/ORIG/FUL/4I9J/I1IQB1IB/FUL4I9JI1IQB1IB.png?auto=webp&amp;frame=1&amp;crop=3:2&amp;fit=bounds&amp;md=b460cdf8630a049b39044f55b2d515a7\" data-src=\"https://content.instructables.com/ORIG/FUL/4I9J/I1IQB1IB/FUL4I9JI1IQB1IB.png?auto=webp&amp;frame=1&amp;crop=3:2&amp;fit=bounds&amp;md=b460cdf8630a049b39044f55b2d515a7\" style=\"max-width: 100%; height: 321.203px; vertical-align: middle; border: 0px; background: none; object-fit: cover; width: 478.297px; border-radius: 4px;\" /></a></div>\r\n      </div>\r\n   <div class=\"photoset-item photoset-cell\" data-imagenotes=\"[]\" style=\"padding: 2.5px; flex: 1.33333 1 0%;\">\r\n      <div class=\"photoset-image\" style=\"position: relative; overflow: hidden; border-radius: 4px; height: 358.469px;\"><a class=\"gallery-link\" rel=\"photoset58\" href=\"https://content.instructables.com/ORIG/FX1/DADA/I1IQB3NK/FX1DADAI1IQB3NK.jpg?auto=webp&amp;frame=1&amp;width=1024&amp;height=1024&amp;fit=bounds&amp;md=16b38f389d78d921c98c0aa34518db9e\" data-download=\"https://content.instructables.com/ORIG/FX1/DADA/I1IQB3NK/FX1DADAI1IQB3NK.jpg?auto=webp&amp;frame=1&amp;md=16b38f389d78d921c98c0aa34518db9e\" data-fileid=\"FX1DADAI1IQB3NK\" style=\"color: #cf6000; outline: 0px; cursor: pointer;\" target=\"_blank\"><img class=\" ls-is-cached lazyloaded\" alt=\"Li - Ion Battery Level Indicator\" src=\"https://content.instructables.com/ORIG/FX1/DADA/I1IQB3NK/FX1DADAI1IQB3NK.jpg?auto=webp&amp;frame=1&amp;width=483&amp;height=1024&amp;fit=bounds&amp;md=16b38f389d78d921c98c0aa34518db9e\" data-src=\"https://content.instructables.com/ORIG/FX1/DADA/I1IQB3NK/FX1DADAI1IQB3NK.jpg?auto=webp&amp;frame=1&amp;width=483&amp;height=1024&amp;fit=bounds&amp;md=16b38f389d78d921c98c0aa34518db9e\" style=\"max-width: 100%; height: 358.469px; vertical-align: middle; border: 0px; background: none; object-fit: cover; width: 478.297px; border-radius: 4px;\" /></a></div>\r\n      </div>\r\n   </div>\r\n<p style=\"margin-top: 3px; margin-bottom: 20px; max-width: 100%; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: #555555; background-color: #ffffff;\"><span style=\"font-family: arial; font-size: 14px;\">Are you looking for a simple circuit to measure your Lithium Ion single cell charging and discharging level? Here is one chip circuit, powered up from the same Lithium Ion battery you want to measure.</span></p>\r\n<p style=\"margin-top: 3px; margin-bottom: 20px; max-width: 100%; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: #555555; background-color: #ffffff;\"><span style=\"font-family: arial; font-size: 14px;\">This circuit is design to measure 3.7V rechargeable batteries level.</span></p>\r\n<p style=\"margin-top: 3px; margin-bottom: 20px; max-width: 100%; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: #555555; background-color: #ffffff;\"><span style=\"font-family: arial; font-size: 14px;\">4.2V - 100%; 4V - 80%; 3.8V - 60%; 3.6V - 40%; 3.4V - 20%</span></p>\r\n<p style=\"margin-top: 3px; margin-bottom: 20px; max-width: 100%; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: #555555; background-color: #ffffff;\"><span style=\"font-family: arial; font-size: 14px;\">LED1 - RED; LED2 - YELLOW; LED3 - YELLOW; LED4 - GREEN; LED5 - GREEN</span></p>\r\n<p style=\"margin-top: 3px; margin-bottom: 20px; max-width: 100%; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: #555555; background-color: #ffffff;\"><span style=\"font-family: arial; font-size: 14px;\">D1 is used to protect a circuit from the battery being placed wrong way. You can use 1N4007 or something similar.</span></p>\r\n<p style=\"margin-top: 3px; margin-bottom: 20px; max-width: 100%; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: #555555; background-color: #ffffff;\"><span style=\"font-family: arial; font-size: 14px;\">When this circuit was simulated on LTSpice, I used R1 value 18k, however, after this circuit was soldered on a printBoard, this value was to high, so i had to change it to 15k. It might be because of inaccuracy of the other resistor values.</span></p>\r\n<p style=\"margin-top: 3px; margin-bottom: 20px; max-width: 100%; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: #555555; background-color: #ffffff;\"><span style=\"font-family: arial; font-size: 14px;\">LM339 datasheet:&nbsp;</span><a href=\"http://www.onsemi.com/pub_link/Collateral/LM339-D.PDF\" rel=\"nofollow\" target=\"_blank\" style=\"color: #1e8439; max-width: 100%; overflow-wrap: break-word; cursor: pointer; word-break: break-word; hyphens: auto;\"><span style=\"font-family: arial; font-size: 14px;\">http://www.onsemi.com/pub_link/Collateral/LM339-D...</span></a></p>\r\n<p style=\"margin-top: 3px; margin-bottom: 20px; max-width: 100%; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: #555555; background-color: #ffffff;\"><span style=\"font-family: arial; font-size: 14px;\">The circuit for 12V battery level indicator was found on&nbsp;</span><a href=\"http://www.electroschematics.com/6868/12v-battery-level-indicator-circuit/\" rel=\"nofollow\" target=\"_blank\" style=\"color: #1e8439; max-width: 100%; overflow-wrap: break-word; cursor: pointer; word-break: break-word; hyphens: auto;\"><span style=\"font-family: arial; font-size: 14px;\">http://www.electroschematics.com/6868/12v-battery...</span></a></p>\r\n<p style=\"margin-top: 3px; margin-bottom: 20px; max-width: 100%; counter-reset: list-1 0 list-2 0 list-3 0 list-4 0 list-5 0 list-6 0 list-7 0 list-8 0 list-9 0; color: #555555; background-color: #ffffff;\"><span style=\"font-family: arial; font-size: 14px;\">but with the changes was made to measure 3.7V batteries.</span></p>','https://www.instructables.com/Li-Ion-battery-level-indicator/','',0,0,3,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-03-29 21:39:41',0,'2022-03-29 21:39:41','192.168.219.101','','','','','','','','','','','',''),(546,-545,'',546,0,0,'','','html1','[ETC] Autodesk EAGLE online이 되지않고 offline만 될 때 해결책','<h1 id=\"caas-title\" class=\"caas__title caas-content-result-mt\" style=\"box-sizing: border-box; font-weight: 400; font-family: ArtifaktElement, Arial, sans-serif; font-size: 38px; line-height: 43px; margin: 0px 0px 0.67em; padding: 0px; color: #333333; text-rendering: optimizelegibility; overflow-wrap: break-word; background-color: #ffffff;\">로그인 후 EAGLE이 오프라인 모드(온라인으로 전환할 수 없음)에서 멈춤</h1>\r\n<div class=\"caas__meta caas-content-result-mt\" style=\"box-sizing: border-box; margin: 0px; padding: 0px; color: #212121; font-family: ArtifaktElement, Arial, sans-serif; font-size: 16px; background-color: #ffffff;\">\r\n   <div class=\"contributed-container no-pad not-user-cont\" style=\"box-sizing: border-box; margin: 0px; padding: 20px 0px 0px; border-top: 1px solid rgb(204, 204, 204);\">\r\n      <p style=\"box-sizing: border-box; font-family: inherit; font-size: clamp(1.125rem, 1.06rem + 0.278vw, 1.3125rem); line-height: 1; padding: 0px; text-rendering: optimizelegibility; float: left;\">회사 이름:&nbsp;<img class=\"contributed-img\" alt=\"\" src=\"https://damassets.autodesk.net/content/dam/autodesk/logos/autodesk-logo-117x20.png\" style=\"box-sizing: border-box; border: 0px none; display: inline-block; vertical-align: middle; max-width: 100%; height: 20px; width: 117px; float: none; border-radius: 0px; margin-right: 2px;\" /></p>\r\n      <span class=\"no-pad \" style=\"box-sizing: border-box; margin-left: 0px !important;\">Support</span></div>\r\n   <div class=\"caas_source_contain\" style=\"box-sizing: border-box; margin: 0px 0px 20px; padding: 4px 0px 20px; clear: both; font-size: 0.875rem; line-height: 1.5; border-bottom: 1px solid rgb(204, 204, 204);\"><span itemprop=\"datePublished\" content=\"2022-03-28 00:00:00\" data-tz-localize=\"1648440000\" id=\"caas_sourceblock_pubdate\" style=\"box-sizing: border-box; float: left;\">2022년 3월 28일</span></div>\r\n   </div>\r\n<div class=\"caas__share\" style=\"box-sizing: border-box; margin: 0px; padding: 0px 0px 10px; text-align: right; color: #212121; font-family: ArtifaktElement, Arial, sans-serif; font-size: 16px; background-color: #ffffff;\">\r\n   <div class=\"toolbar\" style=\"box-sizing: border-box; margin: 0px; padding: 0px; line-height: 23px; font-size: 12px; position: relative;\">\r\n      <div class=\"toolbar__share\" style=\"box-sizing: border-box; margin: 0px 15px 0px 0px; padding: 0px; display: inline-block; position: relative;\">\r\n         <div class=\"share-toolbar\" style=\"box-sizing: border-box; margin: 0px; padding: 0px;\"><a id=\"share-show-dom\" href=\"https://knowledge.autodesk.com/ko/support/eagle/troubleshooting/caas/sfdcarticles/sfdcarticles/KOR/Autodesk-EAGLE-can-t-go-online-after-signing-in.html#\" title=\"다른 사용자와 이 항목 공유\" class=\"share-show link-list\" style=\"box-sizing: border-box; cursor: pointer; background-color: transparent; text-decoration-line: none; font-weight: bold; color: #000000; display: inline-block; text-transform: uppercase; line-height: inherit; outline: none; text-underline-offset: 0.15rem; text-decoration-skip-ink: auto; margin: 0px;\" target=\"_blank\"><span style=\"box-sizing: border-box;\">공유</span></a></div>\r\n         </div>\r\n      &nbsp;\r\n      <div class=\"toolbar__addto\" style=\"box-sizing: border-box; margin: 0px 15px 0px 0px; padding: 0px; display: inline-block; position: relative;\">\r\n         <div class=\"addto-toolbar\" style=\"box-sizing: border-box; margin: 0px; padding: 0px;\"><span id=\"add-collection-widget\" style=\"box-sizing: border-box;\"><button class=\"addto-show\" style=\"cursor: pointer; position: relative; padding: 0px; background-image: none; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-width: initial; border-style: none; border-color: initial; color: #212121; line-height: 1.15; margin: 0px; appearance: button; border-radius: 4px; font-family: inherit; font-size: 12px; font-weight: bold; text-transform: uppercase; overflow: visible; outline: none;\"><span style=\"box-sizing: border-box;\">컬렉션에 추가</span></button></span></div>\r\n         </div>\r\n      </div>\r\n   </div>\r\n<div id=\"caas-body\" class=\"caas__body caas-content-result-mt\" itemprop=\"articleBody\" style=\"box-sizing: border-box; margin: 10px 0px 0px; padding: 0px; color: #212121; font-size: 14px; line-height: 19px; font-family: ArtifaktElement, Arial, sans-serif; background-color: #ffffff;\">\r\n   <div id=\"sfdcarticles\" class=\"caas_sf\" style=\"box-sizing: border-box; margin: 0px; padding: 0px;\">\r\n      <div id=\"sfdcarticles\" class=\"caas_sf\" style=\"box-sizing: border-box; margin: 0px; padding: 0px;\">\r\n         <div id=\"issue\" class=\"adskkb_issues\" style=\"box-sizing: border-box; margin: 0px; padding: 0px;\">\r\n            <h3 style=\"box-sizing: border-box; font-weight: 400; font-size: 19px; line-height: 24px; margin: 30px 0px 5px; padding: 0px; color: #222222; text-rendering: optimizelegibility;\">문제:</h3>\r\n            <p style=\"box-sizing: border-box; font-family: inherit; font-size: 0.875rem; line-height: 1.5rem; margin-bottom: 16px; padding: 0px; text-rendering: optimizelegibility;\">EAGLE이 오프라인 모드에서 시작하거나 로그인 후 온라인으로 전환되지 않습니다.<br style=\"box-sizing: border-box;\" />컴퓨터가 인터넷에 연결되어 있더라도 \"오프라인\"으로 나타납니다.<br style=\"box-sizing: border-box;\" />EAGLE이 제공하는 경우가 있습니다.</p>\r\n            <ul style=\"box-sizing: border-box; margin: 6px 0px 16px 25px; padding: 0px; line-height: 1.5; list-style-position: outside; font-family: inherit;\">\r\n               <li style=\"box-sizing: border-box; margin: 0px 0px 9px; padding: 0px; line-height: 1.1875rem; list-style-type: disc;\">비상업용 무료 라이센스로 전환됩니다.</li>\r\n               <li style=\"box-sizing: border-box; margin: 0px 0px 9px; padding: 0px; line-height: 1.1875rem; list-style-type: disc;\">온라인 이동을 클릭/선택할 때 응답하지 않습니다.\r\n                  <table border=\"0\" style=\"border-spacing: 0px; background: transparent; margin-bottom: 1.25rem; border-width: initial; border-style: none; border-color: initial; table-layout: auto; width: 500px;\">\r\n                     <tbody style=\"box-sizing: border-box; border-top: none;\">\r\n                        <tr style=\"box-sizing: border-box;\">\r\n                           <td colspan=\"1\" rowspan=\"1\" style=\"box-sizing: border-box; margin: 0px; padding: 0.5625rem 0.625rem; font-size: 14px; color: #444444; line-height: 20px; border-style: solid;\"><img alt=\"image.png\" src=\"https://help.autodesk.com/sfdcarticles/img/0EM3g000002sySV\" style=\"box-sizing: border-box; border: 0px none; display: inline-block; vertical-align: middle; max-width: 100%; height: auto;\" /></td>\r\n                           </tr>\r\n                        </tbody>\r\n                     </table>\r\n                  </li>\r\n               </ul>\r\n            </div>\r\n         <div id=\"cause\" class=\"adskkb_cause\" style=\"box-sizing: border-box; margin: 0px; padding: 0px;\">\r\n            <h3 style=\"box-sizing: border-box; font-weight: 400; font-size: 19px; line-height: 24px; margin: 30px 0px 5px; padding: 0px; color: #222222; text-rendering: optimizelegibility;\">원인:</h3>\r\n            <ul style=\"box-sizing: border-box; margin: 6px 0px 16px 25px; padding: 0px; line-height: 1.5; list-style-position: outside; font-family: inherit;\">\r\n               <li style=\"box-sizing: border-box; margin: 0px 0px 9px; padding: 0px; line-height: 1.1875rem; list-style-type: disc;\">\"<i style=\"box-sizing: border-box; line-height: inherit;\">LIBEAY32.dll</i>\" 파일이 컴퓨터 하드웨어와 호환되지 않습니다.</li>\r\n               <li style=\"box-sizing: border-box; margin: 0px 0px 9px; padding: 0px; line-height: 1.1875rem; list-style-type: disc;\">EAGLE이 컴퓨터에 저장된 라이브러리의 로컬 사본을 사용하도록 이름이 바뀐 라이브러리입니다.&nbsp;</li>\r\n               </ul>\r\n            </div>\r\n         <div id=\"solution\" class=\"adskkb_solution\" style=\"box-sizing: border-box; margin: 0px; padding: 0px;\">\r\n            <h3 style=\"box-sizing: border-box; font-weight: 400; font-size: 19px; line-height: 24px; margin: 30px 0px 5px; padding: 0px; color: #222222; text-rendering: optimizelegibility;\">해결 방법:</h3>\r\n            <p style=\"box-sizing: border-box; font-family: inherit; font-size: 0.875rem; line-height: 1.5rem; margin-bottom: 16px; padding: 0px; text-rendering: optimizelegibility;\"><a href=\"https://knowledge.autodesk.com/ko/support/eagle/troubleshooting/caas/sfdcarticles/sfdcarticles/KOR/Eagle-crashes-seconds-after-launching-splash-screen.html\" target=\"_blank\" caaskey=\"caas/sfdcarticles/sfdcarticles/KOR/Eagle-crashes-seconds-after-launching-splash-screen.html\" style=\"box-sizing: border-box; cursor: pointer; background-color: transparent; color: #000000; line-height: inherit; outline: none; text-underline-offset: 0.15rem; text-decoration-skip-ink: auto; margin: 0px;\">EAGLE이 시작 시 중단되거나 충돌함</a>의 단계를 따르십시오.<br style=\"box-sizing: border-box;\" />그런 다음 아래 제안 중 하나를 수행합니다.</p>\r\n            <h3 style=\"box-sizing: border-box; font-weight: 400; font-size: 19px; line-height: 24px; margin: 30px 0px 5px; padding: 0px; color: #222222; text-rendering: optimizelegibility;\">Win64 OpenSSL v1.1.1i Light를 설치합니다.</h3>\r\n            <ol style=\"box-sizing: border-box; margin: 6px 0px 16px 25px; padding: 0px; line-height: 1.5; list-style-position: outside; font-family: inherit;\">\r\n               <li style=\"box-sizing: border-box; margin: 0px 0px 9px; padding: 0px; line-height: 1.1875rem;\">Eagle을 닫습니다.</li>\r\n               <li style=\"box-sizing: border-box; margin: 0px 0px 9px; padding: 0px; line-height: 1.1875rem;\"><a href=\"https://slproweb.com/products/Win32OpenSSL.html\" target=\"_blank\" style=\"box-sizing: border-box; cursor: pointer; background-color: transparent; color: #000000; line-height: inherit; outline: none; text-underline-offset: 0.15rem; text-decoration-skip-ink: auto; margin: 0px;\">Win64 OpenSSL v1.1.1i Light</a>를 다운로드하고 설치합니다.</li>\r\n               <li style=\"box-sizing: border-box; margin: 0px 0px 9px; padding: 0px; line-height: 1.1875rem;\">EAGLE을 다시 시작하고 다시 로그인합니다.</li>\r\n               </ol>\r\n            <h3 style=\"box-sizing: border-box; font-weight: 400; font-size: 19px; line-height: 24px; margin: 30px 0px 5px; padding: 0px; color: #222222; text-rendering: optimizelegibility;\">수동 DLL 파일 대체.</h3>\r\n            <ol style=\"box-sizing: border-box; margin: 6px 0px 16px 25px; padding: 0px; line-height: 1.5; list-style-position: outside; font-family: inherit;\">\r\n               <li style=\"box-sizing: border-box; margin: 0px 0px 9px; padding: 0px; line-height: 1.1875rem;\">EAGLE을 닫습니다.</li>\r\n               <li style=\"box-sizing: border-box; margin: 0px 0px 9px; padding: 0px; line-height: 1.1875rem;\"><a href=\"https://www.totalcommander.ch/win/tools/\" target=\"_blank\" style=\"box-sizing: border-box; cursor: pointer; background-color: transparent; color: #000000; line-height: inherit; outline: none; text-underline-offset: 0.15rem; text-decoration-skip-ink: auto; margin: 0px;\">총 명령 관리자 Win 도구</a>에서 OS에 적합한 ZIP 아카이브를 다운로드합니다.</li>\r\n               <li style=\"box-sizing: border-box; margin: 0px 0px 9px; padding: 0px; line-height: 1.1875rem;\">다운로드한 파일의 압축을 풉니다.</li>\r\n               <li style=\"box-sizing: border-box; margin: 0px 0px 9px; padding: 0px; line-height: 1.1875rem;\">\"C:\\EAGLE 9.6.2\" 디렉토리에서&nbsp;<i style=\"box-sizing: border-box; line-height: inherit;\">\"libeay32.dll\"</i>&nbsp;및&nbsp;<i style=\"box-sizing: border-box; line-height: inherit;\">\"sslay32.dll\"</i>&nbsp;파일의 백업을 만듭니다.</li>\r\n               <li style=\"box-sizing: border-box; margin: 0px 0px 9px; padding: 0px; line-height: 1.1875rem;\">\"C:\\EAGLE 9.6.2\" 디렉토리의&nbsp;<i style=\"box-sizing: border-box; line-height: inherit;\">\"libeay32.dll\"</i>&nbsp;및 \"sslay32.dll\"을 3단계에서 보관 취소한 해당 파일로 대체합니다.</li>\r\n               <li style=\"box-sizing: border-box; margin: 0px 0px 9px; padding: 0px; line-height: 1.1875rem;\">EAGLE을 다시 시작하고 다시 로그인합니다.</li>\r\n               </ol>\r\n            </div>\r\n         <div id=\"seealso\" class=\"adskkb_seealso\" style=\"box-sizing: border-box; margin: 0px; padding: 0px;\">\r\n            <h3 style=\"box-sizing: border-box; font-weight: 400; font-size: 19px; line-height: 24px; margin: 30px 0px 5px; padding: 0px; color: #222222; text-rendering: optimizelegibility;\">참조 항목:</h3>\r\n            <a href=\"https://knowledge.autodesk.com/ko/support/eagle/troubleshooting/caas/sfdcarticles/sfdcarticles/Eagle-crashes-seconds-after-launching-splash-screen.html\" target=\"_blank\" style=\"box-sizing: border-box; cursor: pointer; background-color: transparent; color: #000000; line-height: inherit; outline: none; text-underline-offset: 0.15rem; text-decoration-skip-ink: auto; margin: 0px;\">Autodesk EAGLE이 시작 화면 후 멈추거나 충돌하고 시작되지 않음</a></div>\r\n         </div>\r\n      </div>\r\n   </div>','https://knowledge.autodesk.com/ko/support/eagle/troubleshooting/caas/sfdcarticles/sfdcarticles/KOR/Autodesk-EAGLE-can-t-go-online-after-signing-in.html','https://www.totalcommander.ch/win/tools/',0,0,3,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-03-31 12:42:17',1,'2022-03-31 12:42:17','112.222.138.204','','','','','','','','','','','',''),(547,-546,'',547,0,0,'','','html1','[ETC] 구형 스마트폰 커스텀 롬 업데이트 방법','<p><iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/TkZI3dJV0HE\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\"></iframe></p>\r\n<p>&nbsp;</p>\r\n<p><span dir=\"auto\" class=\"style-scope yt-formatted-string\" style=\"margin: 0px; padding: 0px; border: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;\">필수링크&nbsp;</span></p>\r\n<p><span dir=\"auto\" class=\"style-scope yt-formatted-string\" style=\"margin: 0px; padding: 0px; border: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;\">1. 삼성 USB 드라이버\r\n   </span><a class=\"yt-simple-endpoint style-scope yt-formatted-string\" spellcheck=\"false\" href=\"https://www.youtube.com/redirect?event=video_description&amp;redir_token=QUFFLUhqbG5nZmdYVDNqMWdOenFjV0trWVlsc0VzekZCQXxBQ3Jtc0trNUJTWjFhV19BNm5qZkUyWGZlSnRoVlNmWWR1Ti1OY2FJTjFlT01la1NaNmstRHAteGVoc3BOaVFZOWcyT29nNGRZbTUzU0FlYm9oWDJ5QXdCZ3Byb3FSNjhWZENVWXhiRGZjUzBvRVhkMjhoU3BRZw&amp;q=https%3A%2F%2Fwww.samsungsvc.co.kr%2Fdownload\" rel=\"nofollow\" target=\"_blank\" dir=\"auto\" style=\"display: var(--yt-endpoint-display,inline-block); cursor: pointer; overflow-wrap: var(--yt-endpoint-word-wrap,none); word-break: var(--yt-endpoint-word-break,none);\">https://www.samsungsvc.co.kr/download</a><span dir=\"auto\" class=\"style-scope yt-formatted-string\" style=\"margin: 0px; padding: 0px; border: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;\">&nbsp;</span></p>\r\n<p><span dir=\"auto\" class=\"style-scope yt-formatted-string\" style=\"margin: 0px; padding: 0px; border: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;\">2. ODIN \r\n   </span><a class=\"yt-simple-endpoint style-scope yt-formatted-string\" spellcheck=\"false\" href=\"https://www.youtube.com/redirect?event=video_description&amp;redir_token=QUFFLUhqbC1LRXlQQ0FJUmthbEdBWWwxSFNSeVRmUjdXd3xBQ3Jtc0tuTXl2azRjSExheGE1aVFsMW12aXVlN3pfN2FlR3o2QVdMTVpLVWhHVUM2NllkMGxKeHluNkMtVDBhZVFKNDZwVDZJYVU1ay1ZWl8zenZtX24tMDNOMU5zVU8wbnJxWmNqNmhPeHZLaGJaWk12ZzJlbw&amp;q=https%3A%2F%2Fodindownload.com%2Fdownload%2FOdin3_v3.14.1.zip\" rel=\"nofollow\" target=\"_blank\" dir=\"auto\" style=\"display: var(--yt-endpoint-display,inline-block); cursor: pointer; overflow-wrap: var(--yt-endpoint-word-wrap,none); word-break: var(--yt-endpoint-word-break,none);\">https://odindownload.com/download/Odi...</a><span dir=\"auto\" class=\"style-scope yt-formatted-string\" style=\"margin: 0px; padding: 0px; border: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;\">&nbsp;</span></p>\r\n<p><span dir=\"auto\" class=\"style-scope yt-formatted-string\" style=\"margin: 0px; padding: 0px; border: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;\">3. TWRP \r\n   </span><a class=\"yt-simple-endpoint style-scope yt-formatted-string\" spellcheck=\"false\" href=\"https://www.youtube.com/redirect?event=video_description&amp;redir_token=QUFFLUhqbUN2dEhSdXlaSk9RRXJaYXpBUzdBQUtEOHpyZ3xBQ3Jtc0tuY29lVkVTa1ZWUzFiMVI4TGlJRjlJUjgwZzc2NkdIWENBQWZqUjhYNGxGbk5iaXZRVFBIdklWbmd1ZHNHMGd5amVmZElwQlBMdHlTaEl4UVZXTVN2VldUajZ2NFRaTlIxZlBQd1ZpVDV6cnFtM1htcw&amp;q=https%3A%2F%2Ftwrp.me%2F\" rel=\"nofollow\" target=\"_blank\" dir=\"auto\" style=\"display: var(--yt-endpoint-display,inline-block); cursor: pointer; overflow-wrap: var(--yt-endpoint-word-wrap,none); word-break: var(--yt-endpoint-word-break,none);\">https://twrp.me/</a><span dir=\"auto\" class=\"style-scope yt-formatted-string\" style=\"margin: 0px; padding: 0px; border: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;\">&nbsp;</span></p>\r\n<p><span dir=\"auto\" class=\"style-scope yt-formatted-string\" style=\"margin: 0px; padding: 0px; border: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;\">4. 커스텀펌웨어 리니지\r\n  </span><a class=\"yt-simple-endpoint style-scope yt-formatted-string\" spellcheck=\"false\" href=\"https://www.youtube.com/redirect?event=video_description&amp;redir_token=QUFFLUhqbF9QSDc1VlQzcmNPNGh4Rk1za3hJZzYwOGszQXxBQ3Jtc0trX3hWOXl4YXFKZ1o0eVhubUpudmMxM1VzVzJWS0ctQTNuU0IyRXNWdnNTZGZPVy1hcFZTbjVINm5TWHllaEFRTTd0RUVYSDFjQzlsWmstbl9RMlh1VnVVVy1CTHM2ak40T0VfZEtyaHlTck9YNTBYSQ&amp;q=https%3A%2F%2Fwww.lineageos.org%2F\" rel=\"nofollow\" target=\"_blank\" dir=\"auto\" style=\"display: var(--yt-endpoint-display,inline-block); cursor: pointer; overflow-wrap: var(--yt-endpoint-word-wrap,none); word-break: var(--yt-endpoint-word-break,none);\">https://www.lineageos.org/</a><span dir=\"auto\" class=\"style-scope yt-formatted-string\" style=\"margin: 0px; padding: 0px; border: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;\">&nbsp;</span></p>\r\n<p><span dir=\"auto\" class=\"style-scope yt-formatted-string\" style=\"margin: 0px; padding: 0px; border: 0px; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial;\">5. 구글앱\r\n  </span><a class=\"yt-simple-endpoint style-scope yt-formatted-string\" spellcheck=\"false\" href=\"https://www.youtube.com/redirect?event=video_description&amp;redir_token=QUFFLUhqbXM1UWE0bGR3VzVEQ0FPVHZXSHJnclJzTk5MUXxBQ3Jtc0trQkpDREZrZkNPQVBuYU5BMnJ1LVFad1U3QmE4bmlXdEVGYW94dFZIWDhuM1BmQkF3dzdZYzNxLUd1OHdDSmRRNTQxYkVOX1Z6c1NFZTNVM3JtcE9JSkFMLUhqckFSQVp2ZFgzbTBFNlBBWWpWZmNYZw&amp;q=https%3A%2F%2Fopengapps.org%2F\" rel=\"nofollow\" target=\"_blank\" dir=\"auto\" style=\"display: var(--yt-endpoint-display,inline-block); cursor: pointer; overflow-wrap: var(--yt-endpoint-word-wrap,none); word-break: var(--yt-endpoint-word-break,none);\">https://opengapps.org/</a></p>','https://www.youtube.com/watch?v=TkZI3dJV0HE','',0,0,1,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-04-01 08:59:53',1,'2022-04-01 08:59:53','112.222.138.204','','','','','','','','','','','',''),(548,-547,'',548,0,0,'','','html1','[ETC] LED Flasher - LED Blink LED 깜빡이는 회로','<div align=\"left\" style=\"line-height: 1.5; color: #333333; font-family: 돋움; background-color: #ffffff;\">TR 2개로 구성된 아주 간단한 LED Flasher로 일명 전자 깜빡이라고 한다.</div>\r\n<div align=\"left\" style=\"line-height: 1.5; color: #333333; font-family: 돋움; background-color: #ffffff;\">여기서의 2개의 TR은 일종의 스위치 역활을 하며 이때 10uF 콘덴서의 충방전이</div>\r\n<div align=\"left\" style=\"line-height: 1.5; color: #333333; font-family: 돋움; background-color: #ffffff;\">반복되면서 LED가 점멸한다.</div>\r\n<div align=\"left\" style=\"line-height: 1.5; color: #333333; font-family: 돋움; background-color: #ffffff;\">R1은 Tr1을 바이어스해서 Tr1이 On이 되게 하고 다시 Tr2도 On이 된다.</div>\r\n<div align=\"left\" style=\"line-height: 1.5; color: #333333; font-family: 돋움; background-color: #ffffff;\">이때 LED가 켜지고 컨덴서가 충전되며 컨덴서가 충전되면서 Tr1의 베이스 전압이 떨어져</div>\r\n<div align=\"left\" style=\"line-height: 1.5; color: #333333; font-family: 돋움; background-color: #ffffff;\">Tr1이 Off되고 다시 Tr2도 Off된다.</div>\r\n<div align=\"left\" style=\"line-height: 1.5; color: #333333; font-family: 돋움; background-color: #ffffff;\">컨덴서가 방전되고나면 다시 R1을 통해 Tr1이 On되면서 같은 동작을 반복하게되고</div>\r\n<div align=\"left\" style=\"line-height: 1.5; color: #333333; font-family: 돋움; background-color: #ffffff;\">LED가 깜빡이게 된다.</div>\r\n<div align=\"left\" style=\"line-height: 1.5; color: #333333; font-family: 돋움; background-color: #ffffff;\">깜빡이는 주기는 저항값을 바꾸어주면 된다.</div>\r\n<div align=\"left\" style=\"line-height: 1.5; color: #333333; font-family: 돋움; background-color: #ffffff;\">저항을 크게하면 느려지고&nbsp;작게하면&nbsp;빨라진다.</div>\r\n<div align=\"left\" style=\"line-height: 1.5; color: #333333; font-family: 돋움; background-color: #ffffff;\">실제 제작에는 390K를 사용했다.</div>\r\n<div align=\"left\" style=\"line-height: 1.5; color: #333333; font-family: 돋움; background-color: #ffffff;\">TR은 소신호용이면 거의 대체가 가능하다.</div>\r\n<div align=\"left\" style=\"line-height: 1.5; color: #333333; font-family: 돋움; background-color: #ffffff;\">부품상자에 대충 굴러다니던 것을 사용했다.</div>\r\n<div align=\"left\" style=\"line-height: 1.5; color: #333333; font-family: 돋움; background-color: #ffffff;\">고휘도 LED를 달아서 상당히 밝게 동작한다.</div>\r\n<div align=\"left\" style=\"line-height: 1.5; color: #333333; font-family: 돋움; background-color: #ffffff;\">배터리는 최대한 작게 구현하기위해 1.5V짜리 LR41 버튼쎌(Button Cell)을 사용했다.</div>\r\n<div align=\"left\" style=\"line-height: 1.5; color: #333333; font-family: 돋움; background-color: #ffffff;\">완성된 깜빡이는 100원짜리 동전 크기이다.</div>\r\n<div align=\"left\" style=\"line-height: 1.5; color: #333333; font-family: 돋움; background-color: #ffffff;\">&nbsp;</div>\r\n<div align=\"left\" style=\"line-height: 1.5; color: #333333; font-family: 돋움; background-color: #ffffff;\">&nbsp;</div>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><img src=\"https://postfiles.pstatic.net/data11/2005/7/28/4/LED_Flasher.gif?type=w3\" id=\"data11/2005/7/28/4/LED_Flasher.gif\" alt=\"\" class=\"_photoImage egjs-visible\" style=\"border: none; cursor: pointer;\" /></p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp;</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><img src=\"https://postfiles.pstatic.net/data11/2005/7/28/183/2005-07-28_%BF%C0%C8%C4_11-15-11_0002-nhsbh.jpg?type=w3\" id=\"data11/2005/7/28/183/2005-07-28_%BF%C0%C8%C4_11-15-11_0002-nhsbh.jpg\" alt=\"\" class=\"_photoImage egjs-visible\" style=\"border: none; cursor: pointer;\" /><img src=\"https://postfiles.pstatic.net/data11/2005/7/28/283/2005-07-28_%BF%C0%C8%C4_11-15-17_0013-nhsbh.jpg?type=w3\" id=\"data11/2005/7/28/283/2005-07-28_%BF%C0%C8%C4_11-15-17_0013-nhsbh.jpg\" alt=\"\" class=\"_photoImage egjs-visible\" style=\"border: none; cursor: pointer;\" /></p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp;</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp;</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\">다음은 비슷한 회로이다.</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><img src=\"https://postfiles.pstatic.net/data11/2005/8/4/131/2qflash-nhsbh.gif?type=w3\" id=\"data11/2005/8/4/131/2qflash-nhsbh.gif\" alt=\"\" class=\"_photoImage egjs-visible\" style=\"border: none; cursor: pointer;\" /></p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp;</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\">R3(470)는 LED의 밝기를 결정하고 20mA의 전류를 제한한다.</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\">노락색이나 녹색 LED를 사용할 경우 더 많은 전류를 소모하므로 390정도로 대체한다.</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\">점멸 주기는 R2와 C1에 의해 결정되며 3*R2*C1으로 계산된다.</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\">R1은 Q1(TR)을 바이어스하여 Q1은 On이 되고 역시 Q2도 On이 된다.</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\">이 때 LED가 점등하며 컨덴서는 충전이 된다.</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\">충전이 되는 동시 Q1의 베이스 전압이 떨어져 Q1, Q2가 Off된다.</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\">컨덴서의 방전이 끝나면 다시 Q1과 Q2가 On이 된다.</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\">이 과정이 반복되면서 LED는 깜빡이게 된다.</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\">D1은 듀티 사이클을 높이고 Q1의 베이스의 0.7V 피드백 전압을 제한한다.</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\">6~9V의 낮은 전압에서 D1은 생략을 해도되며 낮은 듀티 싸이클로 동작한다.</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\">만일 정상적으로 점멸을 하지 않는다면 R1이 너무 낮거나 R2가 너무 큰 경우이다.</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\">&nbsp;</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\">사용전압과 저항 및 컨덴서의 용량에 따른 점멸속도이다.</p>\r\n<p style=\"padding: 0px; line-height: 1.5; color: #333333; font-family: 돋움; text-align: justify; background-color: #ffffff;\"><img src=\"https://postfiles.pstatic.net/data11/2005/8/4/5/2qtable-nhsbh.gif?type=w3\" id=\"data11/2005/8/4/5/2qtable-nhsbh.gif\" alt=\"\" class=\"_photoImage egjs-visible\" style=\"border: none; cursor: pointer;\" /></p>\r\n<p></p>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n<div class=\"autosourcing-stub-extra\" style=\"line-height: 1.5; zoom: 1; opacity: 1;\">\r\n   <p style=\"margin: 11px 0px 7px; padding: 0px; line-height: 1.5; font-size: 12px; font-family: Dotum; font-style: normal; font-weight: normal;\"><strong style=\"padding: 0px 7px 0px 0px;\">[출처]</strong><span>&nbsp;</span><a href=\"https://blog.naver.com/nhsbh/100015552549\" target=\"_blank\" style=\"text-decoration: none;\">LED Flahser - 전자 깜빡이 (1)</a><span style=\"padding: 0px 7px 0px 5px;\">|</span><strong style=\"padding: 0px 7px 0px 0px;\">작성자</strong><span>&nbsp;</span><a href=\"https://blog.naver.com/nhsbh\" target=\"_blank\" style=\"text-decoration: none;\">호남자</a></p>\r\n   </div>','https://blog.naver.com/nhsbh/100015552549','',0,0,3,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-04-03 20:56:34',2,'2022-04-03 20:56:34','192.168.219.101','','','','','','','','','','','',''),(549,-548,'',549,0,0,'','','html1','[Linux] VSFTPD 설정하기 (20.04 LTS 기준new)','<p data-ke-size=\"size16\" style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\"><span style=\"box-sizing: border-box; color: #333333;\">vsftpd&nbsp;</span>설치</p>\r\n<pre id=\"code_1612161008720\" class=\"java\" data-ke-language=\"java\" data-ke-type=\"codeblock\" style=\"overflow: auto hidden; padding: 10px; margin-top: 5px; margin-bottom: 5px; max-width: 100%; border: 1px solid rgb(221, 221, 221); font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; line-height: 21.6px; font-family: &quot;Lucida Console&quot;; background-color: #fafafa; border-radius: 3px;\">\r\n   <code class=\"hljs\" style=\"border: 1px solid rgb(238, 238, 238); background: rgb(40, 44, 52); color: #abb2bf; border-radius: 5px; padding: 0.5em; margin: 3px 0px; font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 11px; line-height: 1.3em; font-family: verdana; display: block; overflow-x: auto;\"># apt install vsftpd</code>\r\n   </pre>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">vsftpd가 설치가 되고 실행된다. 실행이 잘 되고 있는지 상태를 확인해야한다.</p>\r\n<pre id=\"code_1612161065380\" class=\"java\" data-ke-language=\"java\" data-ke-type=\"codeblock\" style=\"overflow: auto hidden; padding: 10px; margin-top: 5px; margin-bottom: 5px; max-width: 100%; border: 1px solid rgb(221, 221, 221); font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; line-height: 21.6px; font-family: &quot;Lucida Console&quot;; background-color: #fafafa; border-radius: 3px;\">\r\n   <code class=\"hljs\" style=\"border: 1px solid rgb(238, 238, 238); background: rgb(40, 44, 52); color: #abb2bf; border-radius: 5px; padding: 0.5em; margin: 3px 0px; font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 11px; line-height: 1.3em; font-family: verdana; display: block; overflow-x: auto;\">service vsftpd status</code>\r\n   </pre>\r\n<p style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-origin-width=\"1034\" data-origin-height=\"257\" data-filename=\"blob\" data-ke-mobilestyle=\"widthContent\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; text-align: center; font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\"><span data-url=\"https://blog.kakaocdn.net/dn/o3eej/btqVIaAv3gX/933v6CY3rbyVuyKUBOeWk0/img.png\" data-lightbox=\"lightbox\" data-alt=\"\" style=\"box-sizing: border-box; cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/o3eej/btqVIaAv3gX/933v6CY3rbyVuyKUBOeWk0/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo3eej%2FbtqVIaAv3gX%2F933v6CY3rbyVuyKUBOeWk0%2Fimg.png\" data-origin-width=\"1034\" data-origin-height=\"257\" data-filename=\"blob\" data-ke-mobilestyle=\"widthContent\" style=\"border: 0px; max-width: 100%; display: inline-block; width: 1034px; margin: 0px; height: auto;\" /></span></figure>\r\n<p style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">ftp 포트가 LISTEN 중인지 확인해보자 //&lt;--- sudo 권한필요</p>\r\n<pre id=\"code_1612161193616\" class=\"java\" data-ke-language=\"java\" data-ke-type=\"codeblock\" style=\"overflow: auto hidden; padding: 10px; margin-top: 5px; margin-bottom: 5px; max-width: 100%; border: 1px solid rgb(221, 221, 221); font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; line-height: 21.6px; font-family: &quot;Lucida Console&quot;; background-color: #fafafa; border-radius: 3px;\">\r\n   <code class=\"hljs\" style=\"border: 1px solid rgb(238, 238, 238); background: rgb(40, 44, 52); color: #abb2bf; border-radius: 5px; padding: 0.5em; margin: 3px 0px; font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 11px; line-height: 1.3em; font-family: verdana; display: block; overflow-x: auto;\"># netstat -natp | grep ftp</code>\r\n   </pre>\r\n<p style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-origin-width=\"759\" data-origin-height=\"24\" data-ke-mobilestyle=\"widthContent\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; display: table; position: relative; text-align: center; font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\"><span data-url=\"https://blog.kakaocdn.net/dn/byEwB6/btqVtbZrvfA/vkxeXPpNyq3WA0pF81UFJK/img.png\" data-lightbox=\"lightbox\" data-alt=\"\" style=\"box-sizing: border-box; cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/byEwB6/btqVtbZrvfA/vkxeXPpNyq3WA0pF81UFJK/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyEwB6%2FbtqVtbZrvfA%2FvkxeXPpNyq3WA0pF81UFJK%2Fimg.png\" data-origin-width=\"759\" data-origin-height=\"24\" data-ke-mobilestyle=\"widthContent\" style=\"border: 0px; max-width: 100%; display: inline-block; width: 759px; margin: 0px; height: auto;\" /></span></figure>\r\n<p style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">이제 환경설정을 해야한다.</p>\r\n<pre id=\"code_1612161469077\" class=\"java\" data-ke-language=\"java\" data-ke-type=\"codeblock\" style=\"overflow: auto hidden; padding: 10px; margin-top: 5px; margin-bottom: 5px; max-width: 100%; border: 1px solid rgb(221, 221, 221); font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; line-height: 21.6px; font-family: &quot;Lucida Console&quot;; background-color: #fafafa; border-radius: 3px;\">\r\n   <code class=\"hljs\" style=\"border: 1px solid rgb(238, 238, 238); background: rgb(40, 44, 52); color: #abb2bf; border-radius: 5px; padding: 0.5em; margin: 3px 0px; font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 11px; line-height: 1.3em; font-family: verdana; display: block; overflow-x: auto;\"># vi /etc/vsftpd.conf</code>\r\n   </pre>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">나의 경우엔 아무것도 안써있었다. 그래서 자신에 상황에 맞게 아래의 링크에서 참고하여 설정했다.</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\"><b><a href=\"https://security.appspot.com/vsftpd/vsftpd_conf.html\" style=\"color: #000000; text-decoration-line: none; transition: all 0.3s ease 0s;\" target=\"_blank\">https://security.appspot.com/vsftpd/vsftpd_conf.html</a></b></p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">그렇지만 링크를 참고해서 작성하기 힘들다. 그래서 여러 블로그들을 조합해서 했다. 잘 모르니 넘어가자</p>\r\n<pre id=\"code_1612161615806\" class=\"java\" data-ke-language=\"java\" data-ke-type=\"codeblock\" style=\"overflow: auto hidden; padding: 10px; margin-top: 5px; margin-bottom: 5px; max-width: 100%; border: 1px solid rgb(221, 221, 221); font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; line-height: 21.6px; font-family: &quot;Lucida Console&quot;; background-color: #fafafa; border-radius: 3px;\">\r\n   <code class=\"hljs\" style=\"border: 1px solid rgb(238, 238, 238); background: rgb(40, 44, 52); color: #abb2bf; border-radius: 5px; padding: 0.5em; margin: 3px 0px; font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 11px; line-height: 1.3em; font-family: verdana; display: block; overflow-x: auto;\">listen=YES\r\nlisten_ipv6=NO\r\nanonymous_enable=NO\r\nlocal_enable=YES\r\nwrite_enable=YES\r\ndirmessage_enable=YES\r\nuse_localtime=YES\r\nxferlog_enable=YES\r\nftpd_banner=Welcome to My FTP Server!\r\nconnect_from_port_20=YES\r\nsecure_chroot_dir=/<span class=\"hljs-keyword\" style=\"box-sizing: border-box; color: #f92672;\">var</span>/run/vsftpd/empty\r\npam_service_name=vsftpd\r\nrsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem\r\nrsa_private_key_file=/etc/ssl/<span class=\"hljs-keyword\" style=\"box-sizing: border-box; color: #f92672;\">private</span>/ssl-cert-snakeoil.key\r\nssl_enable=NO\r\nlisten_port=<span class=\"hljs-number\" style=\"box-sizing: border-box; color: #d19a66;\">21</span>\r\npasv_min_port=<span class=\"hljs-number\" style=\"box-sizing: border-box; color: #d19a66;\">60020</span>\r\npasv_max_port=<span class=\"hljs-number\" style=\"box-sizing: border-box; color: #d19a66;\">60030</span></code>\r\n   </pre>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">나의 경우 중요한건&nbsp;<span style=\"box-sizing: border-box;\">pasv_min_port,&nbsp;<span style=\"box-sizing: border-box;\">pasv_max_port 였다.</span></span>&nbsp;이걸 안하면 통신이 안됐기 때문이다.&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\"><span style=\"box-sizing: border-box;\">FTP PASV 통신모드에서 사용할 포트인데 아직도 이 설정 잘 모른다.</span></p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\"><span style=\"box-sizing: border-box;\">왜인지 궁금하다면 FTP 부터 보고 오면 좋을 것 같다.</span></p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\"><span style=\"box-sizing: border-box;\">그래서 방화벽 포트포워딩에서 TCP 21, TCP 60020~60030을 같이 열어줘야 한다.&nbsp;</span></p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\"><span style=\"box-sizing: border-box;\">* 로그인 및 파일전송 로그는<span style=\"box-sizing: border-box;\">&nbsp;</span><span style=\"box-sizing: border-box;\">/var/log/vsftpd.log</span><span style=\"box-sizing: border-box;\">&nbsp;</span>파일에 기록</span></p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">*&nbsp;<span style=\"box-sizing: border-box;\">/etc/ftpusers</span><span style=\"box-sizing: border-box;\">&nbsp;</span>파일에 쓰여진 사용자는 FTP 로그인이 거부</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">아직까지 잘 모르겠지만 서비스 재시작하면 완료다.</p>\r\n<pre id=\"code_1612161853131\" class=\"html xml\" data-ke-language=\"html\" data-ke-type=\"codeblock\" style=\"overflow: auto hidden; padding: 10px; margin-top: 5px; margin-bottom: 5px; max-width: 100%; border: 1px solid rgb(221, 221, 221); font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; line-height: 21.6px; font-family: &quot;Lucida Console&quot;; background-color: #fafafa; border-radius: 3px;\">\r\n   <code class=\"hljs xml\" style=\"border: 1px solid rgb(238, 238, 238); background: rgb(40, 44, 52); color: #abb2bf; border-radius: 5px; padding: 0.5em; margin: 3px 0px; font-variant-numeric: normal; font-variant-east-asian: normal; font-stretch: normal; font-size: 11px; line-height: 1.3em; font-family: verdana; display: block; overflow-x: auto;\"># service vsftpd restart\r\n</code>\r\n   </pre>\r\n<p data-ke-size=\"size16\" style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">&nbsp;</p>\r\n<p>&nbsp;</p>\r\n<p><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">listen=YES</span><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">listen_ipv6=NO</span><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">anonymous_enable=NO</span><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">local_enable=YES</span><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">write_enable=YES</span><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">dirmessage_enable=YES</span><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">use_localtime=YES</span><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">xferlog_enable=YES</span><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">ftpd_banner=Welcome&nbsp;to&nbsp;My&nbsp;FTP&nbsp;Server!</span><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">connect_from_port_20=YES</span><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">secure_chroot_dir=/var/run/vsftpd/empty</span><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">pam_service_name=vsftpd</span><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem</span><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key</span><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">ssl_enable=NO</span><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">listen_port=21</span><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">pasv_min_port=60020</span><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">pasv_max_port=60030</span><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><br style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" /><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">출처:&nbsp;</span><a href=\"https://saii42.tistory.com/23\" style=\"color: #000000; text-decoration-line: none; transition: all 0.3s ease 0s; font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\" target=\"_blank\">https://saii42.tistory.com/23</a><span style=\"font-family: &quot;Ubuntu Condensed&quot;, &quot;Noto Sans Korean&quot;; font-size: 14px; background-color: #f1f1f1;\">&nbsp;[saii 잡다한 블로그]</span></p>','https://saii42.tistory.com/23','',4,0,6,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-04-13 10:05:43',0,'2022-04-13 10:05:43','112.222.138.204','','','','','','','','','','','',''),(550,-549,'',550,0,0,'','','html1','[Linux] mysql 설치 후, 계정생성 및 설정방법 정리','<p><span style=\"font-size: 18px;\">sudo mysql -u root -p</span></p>\r\n<p><br /></p>\r\n<p><span style=\"font-size: 18px;\"># MySQL 프롬프트에서:</span></p>\r\n<p><span style=\"font-size: 18px;\">CREATE DATABASE nextgreen;</span></p>\r\n<p><span style=\"font-size: 18px;\">CREATE USER \'nextgreen\'@\'%\' IDENTIFIED BY \'your_password\';</span></p>\r\n<p><span style=\"font-size: 18px;\">GRANT ALL PRIVILEGES ON nextgreen.* TO \'nextgreen\'@\'%\';</span></p>\r\n<p><span style=\"font-size: 18px;\">FLUSH PRIVILEGES;</span></p>\r\n<p><span style=\"font-size: 18px;\">EXIT;</span></p>','https://bugwhale.tistory.com/entry/raspberrypi-raspbian-apm-install','',6,2,34,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-04-13 10:30:07',0,'2022-04-13 10:30:07','112.222.138.204','','','','','','','','','','','',''),(551,-550,'',551,0,0,'','','html1','[Linux] 우분투 설치후 apt update 404에러 조치','<pre style=\"margin-top: 0px; margin-bottom: 2em; padding: 1.857em; border: 0px; vertical-align: baseline; font-size: calc(11px + 0.2em); font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; background: rgb(248, 248, 248); overflow: auto; overflow-wrap: normal; user-select: text; white-space: pre-wrap; word-break: break-all; color: rgba(0, 0, 0, 0.74);\">sudo sed -i -re \'s/([a-z]{2}\\.)?archive.ubuntu.com|security.ubuntu.com/old-releases.ubuntu.com/g\' /etc/apt/sources.list\r\nsudo apt-get update &amp;&amp; sudo apt-get dist-upgrade</pre>\r\n<p style=\"margin-bottom: 1.65em; padding: 0px; border: 0px; vertical-align: baseline; font-size: 16px; font-family: &quot;Noto Sans&quot;, Arial, sans-serif; overflow-wrap: break-word; color: rgba(0, 0, 0, 0.74); background-color: #ffffff;\">위 명령어로 /etc/apt/sources.list 에서 지정된 저장소 주소를 우분투 이전 버전 모음 아카이브 페이지로 변경한 다음 업데이트 합니다.</p>\r\n<pre style=\"margin-top: 0px; margin-bottom: 2em; padding: 1.857em; border: 0px; vertical-align: baseline; font-size: calc(11px + 0.2em); font-family: SFMono-Regular, Consolas, &quot;Liberation Mono&quot;, Menlo, Courier, monospace; background: rgb(248, 248, 248); overflow: auto; overflow-wrap: normal; user-select: text; white-space: pre-wrap; word-break: break-all; color: rgba(0, 0, 0, 0.74);\">sudo do-release-upgrade</pre>','https://extrememanual.net/26688','',0,0,4,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-04-17 11:09:18',0,'2022-04-17 11:09:18','192.168.219.101','','','','','','','','','','','',''),(552,-551,'',552,0,0,'','','html1','[Linux] 우분투 한글 한컴 hwp 설치','<h3 data-ke-size=\"size23\" style=\"font-size: 1.3125em; margin: 29px 0px 22px; padding: 0px; clear: both; line-height: 1.5; font-weight: normal; font-family: NotosansKR, sans-serif;\"></h3>\r\n<h3 data-ke-size=\"size23\" style=\"margin: 29px 0px 22px; padding: 0px; clear: both; line-height: 1.5;\"><font face=\"NotosansKR, sans-serif\"><span style=\"font-size: 15.75px;\">Exec=/bin/bash -c \"LANGUAGE=ko_KR.UTF-8 /opt/hnc/hoffice11/Bin/hwp %f\"</span></font></h3>\r\n<h3 data-ke-size=\"size23\" style=\"font-size: 1.3125em; margin: 29px 0px 22px; padding: 0px; clear: both; line-height: 1.5; font-weight: normal; font-family: NotosansKR, sans-serif;\"><b>1. 설치</b></h3>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">일단, 우분투 20.04LTS 데스크탑 운영체제 기준이고 설치방법은 아래의 블로그를 참조했습니다. 구글링 하여 검색한 것이므로 아래 블로그 말고도 설치방법을 알려주는 블로그는 많습니다. 다만, 저의 경우 무슨 에러인지 몰라 한컴툴킷을 다운로드하여 설치한 후 패키지를 다운로드 받아 설치하는 방식은 계속 찾을 수 없다는 에러가 났습니다.&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\"><b>한컴 툴킷을 이용하는 방식</b>&nbsp;:&nbsp;<a href=\"https://blisstonia.net/78\" target=\"_blank\" rel=\"noopener\" style=\"text-decoration-line: none; color: #d54c31;\">https://blisstonia.net/78</a></p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\"><b>Deb 패키지 직접 설치하는 방식</b>&nbsp;:&nbsp;<a href=\"https://gall.dcinside.com/mgallery/board/view/?id=github&amp;no=15657\" target=\"_blank\" rel=\"noopener\" style=\"text-decoration-line: none; color: #d54c31;\">https://gall.dcinside.com/mgallery/board/view/?id=github&amp;no=15657</a>&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">저는 위의 누군가가 Deb패키지로 만들어 놓은 것을 보고 그것을 받아 설치했습니다. 그냥 그렇게 하시는게 더 편하고 나중에 우분투를 다시 설치한 경우 Deb패키지를 가지고 있다가 또 설치할 수 있을 것 같아서 이 글을 읽는 분들도 그렇게 하시길 권장해 드립니다. 위 링크에서도 다운로드 할 수 있지만 링크가 깨질 경우를 대비하여 아래에서 링크합니다. 위 링크에서 다운로드한 DEB패키지를 그대로 구글드라이브에서 배포하는 것 입니다.</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\"><b>DEB패키지 다운로드(클릭하세요) :</b>&nbsp;<b><a href=\"https://drive.google.com/file/d/1VbHBFz6GIzZicEGMDk1CyweND52lEA5I/view?usp=sharing\" target=\"_blank\" rel=\"noopener\" style=\"text-decoration-line: none; color: #d54c31;\">한글2020리눅스</a>&nbsp;&nbsp;&nbsp; &nbsp;<a href=\"https://drive.google.com/file/d/1cgCmhuC5mQw0xrkpowpCcczx_XBpM8xS/view?usp=sharing\" target=\"_blank\" rel=\"noopener\" style=\"text-decoration-line: none; color: #d54c31;\">한컴오피스뷰어리눅스</a></b></p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">deb패키지를 받아 직접 설치하고 실행하면, 인터페이스가 모두 영어로 나와버립니다. 뭐 사용하기엔 불편하지 않지만 아무래도 한글은 한글로 표기하는게 좋죠~ ^^</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">다음의 링크를 참조하여 \"한글2020 for Linux\"의 실행파일에 로케일을 지정하는 방법으로 해결 했습니다.&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">(참조링크 :&nbsp;<a href=\"https://hamonikr.org/Free_Board/88075\" target=\"_blank\" rel=\"noopener\" style=\"text-decoration-line: none; color: #d54c31;\">https://hamonikr.org/Free_Board/88075</a>)</p>\r\n<pre id=\"code_1622430448860\" class=\"html xml\" data-ke-language=\"html\" data-ke-type=\"codeblock\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; color: #555555;\">\r\n   <code class=\"hljs xml\" style=\"margin: 15px 0px; padding: 0.5em; font-family: Consolas, sans-serif; font-size: 0.8em; display: block; overflow-x: auto; line-height: 1.3em; color: #abb2bf; background: rgb(40, 44, 52); border-radius: 5px;\">[Desktop Entry]\r\nName=Hwp 2020 Beta\r\nName[ko]=한글 2020 Beta\r\nComment=Create Hwp documents easily in the Linux environment and edit them by applying various styles and formats.\r\nComment[ko]=리눅스 환경에서 한글 문서를 손쉽게 작성하고, 다양한 스타일과 서식을 적용하여 문서를 편집할 수 있습니다.\r\nExec=/bin/bash -c \"LANGUAGE=ko_KR /opt/hnc/hoffice11/Bin/hwp %f\"\r\nTerminal=false\r\nType=Application\r\nIcon=hoffice11-hwp\r\nCategories=Office;\r\nInitialPreference=7\r\nMimeType=application/vnd.hancom.asv;application/vnd.hancom.bak;application/x-trash;application/vnd.hancom.owpml;application/vnd.hancom.hwp;application/vnd.hancom.hwt;application/vnd.hancom.hml;application/vnd.hancom.hwpx;application/vnd.hancom.hwtx;application/x-hwp;application/x-hwt;application/msword;application/vnd.openxmlformats-officedocument.wordprocessingml.document;\r\n</code>\r\n   </pre>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">설치 후 /usr/share/applications/hoffice11-hwp.desktop 파일을 vi로 열어 위와 같이 변경해 줍니다.<br />변경된 부분은&nbsp;<span style=\"color: #f89009;\"><b>Exec=/bin/bash -c \"LANGUAGE=ko_KR /opt/hnc/hoffice11/Bin/hwp %f\"</b>&nbsp;</span>와 같이&nbsp; 변경합니다. 저장 후 실행해 보면 한글 인터페이스로 실행됩니다.&nbsp;</p>\r\n<h3 data-ke-size=\"size23\" style=\"font-size: 1.3125em; margin: 29px 0px 22px; padding: 0px; clear: both; line-height: 1.5; font-weight: normal; font-family: NotosansKR, sans-serif;\"><b>2. ibus 입력기에서의 엔터키(Enter)와 백스페이스(BackSpace)키의 입력문제 해결</b></h3>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">설치하고 한글을 입력해보면 잘 입력이 되는데, 백스페이스(Back Space)키나 엔터키(Enter)가 이상하게 작동을 안하고 - 나 ) 와 같은 특수기호만 입력되는 문제가 있습니다. 이를 해결하려고 다음의 링크를 참조하였습니다.(<a href=\"https://hamonikr.org/board_bFBk25/98079\" target=\"_blank\" rel=\"noopener\" style=\"text-decoration-line: none; color: #d54c31;\">https://hamonikr.org/board_bFBk25/98079</a>)</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">위 링크에서 알려준 것 처럼 터미널에 다음과 같은 명령을 입력합니다.&nbsp;</p>\r\n<pre id=\"code_1622431148380\" class=\"html xml\" data-ke-language=\"html\" data-ke-type=\"codeblock\" style=\"overflow: auto; margin-top: 0px; margin-bottom: 0px; padding: 0px; word-break: break-all; white-space: pre-wrap; overflow-wrap: break-word; color: #555555;\">\r\n   <code class=\"hljs xml\" style=\"margin: 15px 0px; padding: 0.5em; font-family: Consolas, sans-serif; font-size: 0.8em; display: block; overflow-x: auto; line-height: 1.3em; color: #abb2bf; background: rgb(40, 44, 52); border-radius: 5px;\">gsettings set org.freedesktop.ibus.engine.hangul use-event-forwarding false</code>\r\n   </pre>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">이제 한글2020 for Linux를 다시 실행하여 보면 아래의 스크린샷처럼 엔터키나 백스페이스키도 잘 작동합니다. 추가적으로 나눔고딕이나 기타 폰트(TTF)를 다음의 경로에 복사하여 주면 다른 문서에서 지정한 한글 서체들도 잘 나타납니다.&nbsp;폰트의 설치경로는 가능한하 우분투의 /usr/share/fonts 가 아닌 한글2020 for Linux의 경로(<span style=\"color: #f89009;\"><b>/opt/hnc/hoffice11/Shared/TTF/Install</b></span>)에 복사해줘야 시스템상의 서체와 충돌나지 않고 한글2020 for Linux에서만 사용할 수 있습니다.&nbsp;</p>\r\n<p data-ke-size=\"size16\" style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<p style=\"margin-bottom: 32px; padding-right: 0px; padding-left: 0px; word-break: break-all; font-size: 0.92em; line-height: 1.7; color: #555555; text-align: justify; font-family: NotosansKR, sans-serif; padding-top: 0px !important; padding-bottom: 0px !important;\">&nbsp;</p>\r\n<figure class=\"imageblock alignCenter\" data-origin-width=\"1366\" data-origin-height=\"768\" data-ke-mobilestyle=\"alignCenter\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; color: #555555; font-family: NotosansKR, sans-serif; font-size: 16px;\"><span data-url=\"https://blog.kakaocdn.net/dn/cgygQM/btq6cUT9WCK/6WkeXbYFJWBnzxA4ErLlH0/img.png\" data-lightbox=\"lightbox\" data-alt=\"한글2020 for Linux 설치 및 설정 후 화면\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/cgygQM/btq6cUT9WCK/6WkeXbYFJWBnzxA4ErLlH0/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgygQM%2Fbtq6cUT9WCK%2F6WkeXbYFJWBnzxA4ErLlH0%2Fimg.png\" data-filename=\"스크린샷, 2021-05-31 11-42-24.png\" data-ke-mobilestyle=\"alignCenter\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 740px; margin: 0px; height: auto;\" /></span>\r\n   <figcaption style=\"font-size: 13px; word-break: break-word; padding-top: 10px; min-height: 20px; caption-side: bottom;\">한글2020 for Linux 설치 및 설정 후 화면</figcaption>\r\n   </figure>\r\n<figure class=\"imageblock alignCenter\" data-origin-width=\"1366\" data-origin-height=\"768\" data-ke-mobilestyle=\"alignCenter\" style=\"margin: 0px auto 20px; max-width: 100%; clear: both; padding: 0px; display: table; position: relative; text-align: center; color: #555555; font-family: NotosansKR, sans-serif; font-size: 16px;\"><span data-url=\"https://blog.kakaocdn.net/dn/bzOQFW/btq59NViFJ8/rkW7uRujLMKJ0PMbXvp3Jk/img.png\" data-lightbox=\"lightbox\" data-alt=\"네이버에서 제공하는 hwp양식도 잘 열립니다.\" style=\"cursor: pointer;\"><img src=\"https://blog.kakaocdn.net/dn/bzOQFW/btq59NViFJ8/rkW7uRujLMKJ0PMbXvp3Jk/img.png\" srcset=\"https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzOQFW%2Fbtq59NViFJ8%2FrkW7uRujLMKJ0PMbXvp3Jk%2Fimg.png\" data-filename=\"스크린샷, 2021-05-31 11-51-10.png\" data-ke-mobilestyle=\"alignCenter\" style=\"border: none; vertical-align: top; max-width: 100%; display: inline-block; width: 740px; margin: 0px; height: auto;\" /></span>\r\n   <figcaption style=\"font-size: 13px; word-break: break-word; padding-top: 10px; min-height: 20px; caption-side: bottom;\">네이버에서 제공하는 hwp양식도 잘 열립니다.</figcaption>\r\n   </figure>','https://nooree.com/74','https://hamonikr.org/Free_Board/88075',6,2,8,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-04-17 11:10:33',0,'2022-04-17 11:10:33','192.168.219.101','','','','','','','','','','','',''),(553,-552,'',553,0,0,'','','html1','[Arduino] IP Address 출력, Ethernet.localIP() to String','<p><span style=\"background-color: #f9f9f9; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace; font-size: 15.008px; white-space: pre;\">char myIpString[24];</span></p>\r\n<p><span style=\"background-color: #f9f9f9; font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace; font-size: 15.008px; white-space: pre;\">&nbsp;</span></p>\r\n<span style=\"font-family: Consolas, Menlo, Monaco, &quot;Lucida Console&quot;, &quot;Liberation Mono&quot;, &quot;DejaVu Sans Mono&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, monospace; font-size: 15.008px; white-space: pre; background-color: #f9f9f9;\">void setup() {\r\n    IPAddress myIp = WiFi.localIP();\r\n    sprintf(myIpString, \"%d.%d.%d.%d\", myIp[0], myIp[1], myIp[2], myIp[3]);\r\n    Spark.variable(\"ipAddress\", myIpString, STRING);\r\n}</span>','','',0,0,2,0,0,'admin','*B9FF5DF52BD3C5F13EA3D506E09A21D17ECF6557','최고관리자','bk94005@naver.com','','2022-04-18 11:32:04',0,'2022-04-18 11:32:04','112.222.138.204','','','','','','','','','','','',''),