<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Suitmyself : find what suits me]]></title><description><![CDATA[Delphi, Secure, Driver, C#, Algorithm, Python, Java, Javascript, Electron, 凸]]></description><link>http://suitmyself.com/</link><image><url>http://suitmyself.com/favicon.png</url><title>Suitmyself : find what suits me</title><link>http://suitmyself.com/</link></image><generator>Ghost 5.46</generator><lastBuildDate>Wed, 19 Aug 2026 01:30:26 GMT</lastBuildDate><atom:link href="http://suitmyself.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[coTurn performance upgrade]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p><a href="https://code.google.com/archive/p/coturn/wikis/turn_performance_and_load_balance.wiki?ref=suitmyself.com">TURN relay server performance: load balance and network optimization</a></p>
<p>&#xC774;&#xBC88; &#xD3EC;&#xC2A4;&#xD2B8;&#xB294; &#xC704; &#xC0AC;&#xC774;&#xD2B8;&#xC758; &#xB0B4;&#xC6A9;&#xC744; &#xAD6C;&#xAE00; &#xBC88;&#xC5ED;&#xAE30;&#xB97C; &#xD1B5;&#xD574;&#xC11C; &#xC815;&#xB9AC;&#xD574;&#xB454; &#xB0B4;&#xC6A9;&#xC785;&#xB2C8;&#xB2E4;.</p>
<h2 id="turn-%EB%A6%B4%EB%A0%88%EC%9D%B4-%EC%84%9C%EB%B2%84-%EC%84%B1%EB%8A%A5-%EB%B6%80%ED%95%98-%EB%B6%84%EC%82%B0-%EB%B0%8F-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%B5%9C%EC%A0%81%ED%99%94">TURN &#xB9B4;&#xB808;&#xC774; &#xC11C;&#xBC84; &#xC131;&#xB2A5;: &#xBD80;</h2>]]></description><link>http://suitmyself.com/coturn-performance-upgrade/</link><guid isPermaLink="false">6474af0e8d6496e5a2302851</guid><category><![CDATA[WebRTC]]></category><category><![CDATA[Server]]></category><dc:creator><![CDATA[benjamin kim]]></dc:creator><pubDate>Mon, 29 May 2023 13:57:54 GMT</pubDate><media:content url="http://suitmyself.com/content/images/2023/05/coTurn-performance-upgrade.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="http://suitmyself.com/content/images/2023/05/coTurn-performance-upgrade.png" alt="coTurn performance upgrade"><p><a href="https://code.google.com/archive/p/coturn/wikis/turn_performance_and_load_balance.wiki?ref=suitmyself.com">TURN relay server performance: load balance and network optimization</a></p>
<p>&#xC774;&#xBC88; &#xD3EC;&#xC2A4;&#xD2B8;&#xB294; &#xC704; &#xC0AC;&#xC774;&#xD2B8;&#xC758; &#xB0B4;&#xC6A9;&#xC744; &#xAD6C;&#xAE00; &#xBC88;&#xC5ED;&#xAE30;&#xB97C; &#xD1B5;&#xD574;&#xC11C; &#xC815;&#xB9AC;&#xD574;&#xB454; &#xB0B4;&#xC6A9;&#xC785;&#xB2C8;&#xB2E4;.</p>
<h2 id="turn-%EB%A6%B4%EB%A0%88%EC%9D%B4-%EC%84%9C%EB%B2%84-%EC%84%B1%EB%8A%A5-%EB%B6%80%ED%95%98-%EB%B6%84%EC%82%B0-%EB%B0%8F-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%B5%9C%EC%A0%81%ED%99%94">TURN &#xB9B4;&#xB808;&#xC774; &#xC11C;&#xBC84; &#xC131;&#xB2A5;: &#xBD80;&#xD558; &#xBD84;&#xC0B0; &#xBC0F; &#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xCD5C;&#xC801;&#xD654;</h2>
<p>&#xC774; TURN &#xC11C;&#xBC84;&#xB294; node.js &#xBC0F; nginx&#xC5D0;&#xC11C; &#xC0AC;&#xC6A9;&#xD558;&#xB294; &#xAC83;&#xACFC; &#xC720;&#xC0AC;&#xD55C; &#xD63C;&#xD569; &#xC791;&#xC5C5; &#xBAA8;&#xB378;&#xC744; &#xC0AC;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;. &#xBE44;&#xB3D9;&#xAE30; IO&#xB294; &#xB2E4;&#xC911; CPU &#xD558;&#xB4DC;&#xC6E8;&#xC5B4;&#xB97C; &#xD65C;&#xC6A9;&#xD558;&#xAE30; &#xC704;&#xD574; &#xC2A4;&#xB808;&#xB529; &#xBAA8;&#xB378;&#xACFC; &#xACB0;&#xD569;&#xB429;&#xB2C8;&#xB2E4;. &#xC2A4;&#xB808;&#xB4DC; &#xC218;&#xB294; &#xC81C;&#xD55C;&#xB418;&#xC5B4; &#xC788;&#xACE0;(CPU &#xC218;&#xC5D0; &#xAC00;&#xAE4C;&#xC6C0;) &#xB9AC;&#xC18C;&#xC2A4; &#xC18C;&#xBE44;&#xAC00; &#xCD5C;&#xC801;&#xC785;&#xB2C8;&#xB2E4;. &#xB9CE;&#xC740; &#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8; &#xC5F0;&#xACB0;&#xC744; &#xB3D9;&#xC2DC;&#xC5D0; &#xCC98;&#xB9AC;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. TURN &#xC11C;&#xBC84;&#xB294; epoll(Linux), kqueue(BSD &#xBC0F; Mac OS X), &#xC774;&#xBCA4;&#xD2B8; &#xD3EC;&#xD2B8;(Solaris), poll(Cygwin) &#xB610;&#xB294; select&#xB97C; &#xD1B5;&#xD574; &#xC6B4;&#xC601; &#xCCB4;&#xC81C;&#xC5D0; &#xC0C8; &#xC774;&#xBCA4;&#xD2B8;&#xAC00; &#xBC1C;&#xC0DD;&#xD560; &#xB54C; &#xC54C;&#xB9BC;&#xC744; &#xBC1B;&#xC544;&#xC57C; &#xD55C;&#xB2E4;&#xACE0; &#xC54C;&#xB824;&#xC90D;&#xB2C8;&#xB2E4;. &#xC0C8; &#xD328;&#xD0B7;&#xC774; &#xB3C4;&#xCC29;&#xD558;&#xAC70;&#xB098; &#xC0C8; &#xD0C0;&#xC774;&#xBA38; &#xC774;&#xBCA4;&#xD2B8;&#xAC00; &#xBC1C;&#xC0DD;&#xD558;&#xBA74; TURN &#xC11C;&#xBC84;&#xAC00; &#xAE68;&#xC5B4;&#xB098;&#xC11C; &#xCF5C;&#xBC31;&#xC744; &#xC2E4;&#xD589;&#xD569;&#xB2C8;&#xB2E4;. &#xAC01; &#xC774;&#xBCA4;&#xD2B8;&#xBCC4; &#xC791;&#xC5C5;&#xC740; &#xB9E4;&#xC6B0; &#xC9E7;&#xAE30; &#xB54C;&#xBB38;&#xC5D0; &#xC2DC;&#xC2A4;&#xD15C;&#xC740; &#xAC70;&#xC758; &#xC2E4;&#xC2DC;&#xAC04;&#xC5D0; &#xAC00;&#xAE4C;&#xC6B4; &#xBC18;&#xC751; &#xC2DC;&#xAC04;&#xC744; &#xAC16;&#xC2B5;&#xB2C8;&#xB2E4;(&#xD6A8;&#xC728;&#xC801;&#xC778; &#xBBF8;&#xB514;&#xC5B4; &#xD2B8;&#xB798;&#xD53D; &#xCC98;&#xB9AC;&#xC5D0; &#xD544;&#xC694;&#xD568;).</p>
<p>&#xBB3C;&#xB860; &#xB9CE;&#xC740; TURN &#xC138;&#xC158;&#xC774; &#xAD00;&#xB828;&#xB41C; &#xACE0;&#xBD80;&#xD558; &#xC2DC;&#xB098;&#xB9AC;&#xC624;&#xC5D0;&#xC11C; &#xD134;&#xC11C;&#xBC84; &#xD504;&#xB85C;&#xC138;&#xC2A4;&#xB294; &#xC0AC;&#xC2E4;&#xC0C1; &#xD734;&#xBA74; &#xC2DC;&#xAC04;&#xC774; &#xC5C6;&#xC73C;&#xBA70; &#xC138;&#xBBF8; &#xD480; &#xBAA8;&#xB4DC;&#xB85C; &#xC791;&#xB3D9;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>&#xBE44;&#xAD50;&#xC801; &#xC7A5;&#xAE30;&#xC801;&#xC778; &#xC791;&#xC5C5;(&#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xC0C1;&#xD638; &#xC791;&#xC6A9;, CLI &#xCC98;&#xB9AC;)&#xC758; &#xACBD;&#xC6B0; TURN &#xC11C;&#xBC84;&#xB294; &#xBCC4;&#xB3C4;&#xC758; &#xC2A4;&#xB808;&#xB4DC;&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xBBC0;&#xB85C; &#xD2B8;&#xB798;&#xD53D; &#xCC98;&#xB9AC; &#xCC98;&#xB9AC;&#xB294; &#xB354; &#xAE34; &#xC791;&#xC5C5;&#xC758; &#xC601;&#xD5A5;&#xC744; &#xBC1B;&#xC9C0; &#xC54A;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xC2DC;&#xC2A4;&#xD15C;&#xC740; &#xD6A8;&#xC728;&#xC131;&#xACFC; &#xC774;&#xC2DD;&#xC131;&#xC744; &#xC704;&#xD574; C &#xC5B8;&#xC5B4;&#xB85C; &#xAD6C;&#xD604;&#xB429;&#xB2C8;&#xB2E4;. IO &#xBC0F; &#xD0C0;&#xC774;&#xBA38; &#xC774;&#xBCA4;&#xD2B8; &#xB2E4;&#xC911;&#xD654;&#xB97C; &#xC704;&#xD574; libevent2 &#xB77C;&#xC774;&#xBE0C;&#xB7EC;&#xB9AC;&#xAC00; &#xC0AC;&#xC6A9;&#xB429;&#xB2C8;&#xB2E4;.</p>
<p>TURN &#xC11C;&#xBC84;&#xB294; &#xB610;&#xD55C; &#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xD504;&#xB85C;&#xD1A0;&#xCF5C; &#xC11C;&#xBC84;&#xC5D0; &#xD2B9;&#xC815;&#xD55C; &#xBA87; &#xAC00;&#xC9C0; &#xCD5C;&#xC801;&#xD654;&#xB97C; &#xD1B5;&#xD569;&#xD569;&#xB2C8;&#xB2E4;. &#xC608;&#xB97C; &#xB4E4;&#xC5B4; &quot;&#xD480;&quot; &#xCC98;&#xB9AC;&#xC758; &#xC77C;&#xBD80; &#xC694;&#xC18C;&#xAC00; &#xD3EC;&#xD568;&#xB429;&#xB2C8;&#xB2E4;(&#xC77C;&#xBC18;&#xC801;&#xC778; &quot;&#xD478;&#xC2DC;&quot; &#xC811;&#xADFC; &#xBC29;&#xC2DD;&#xACFC; &#xBC18;&#xB300;).</p>
<p>&#xAC01; TURN &#xC138;&#xC158;(&#xD560;&#xB2F9;)&#xC740; &#xBE44;&#xAD50;&#xC801; &#xC801;&#xC740; &#xB9AC;&#xC18C;&#xC2A4;&#xB97C; &#xC18C;&#xBE44;&#xD569;&#xB2C8;&#xB2E4;.</p>
<ul>
<li>&#xD560;&#xB2F9;&#xC5D0;&#xB294; &#xC790;&#xCCB4; &#xC2A4;&#xB808;&#xB4DC;&#xB098; &#xD504;&#xB85C;&#xC138;&#xC2A4;&#xAC00; &#xC5C6;&#xC2B5;&#xB2C8;&#xB2E4;.</li>
<li>&#xD560;&#xB2F9;&#xC740; &#xC77C;&#xBC18;&#xC801;&#xC73C;&#xB85C; &#xB3D9;&#xC77C;&#xD55C; &#xC2A4;&#xB808;&#xB4DC; &#xB0B4;&#xC5D0; &#xC720;&#xC9C0;&#xB418;&#xBBC0;&#xB85C; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xC804;&#xD658; &#xBC0F; &#xC7A0;&#xAE08;&#xC774; &#xC904;&#xC5B4;&#xB4ED;&#xB2C8;&#xB2E4;.</li>
<li>&#xD560;&#xB2F9;&#xC740; &#xB2E4;&#xB978; &#xD560;&#xB2F9;&#xACFC; &#xB9CE;&#xC740; &#xC2DC;&#xC2A4;&#xD15C; &#xB9AC;&#xC18C;&#xC2A4;&#xB97C; &#xACF5;&#xC720;&#xD569;&#xB2C8;&#xB2E4;.</li>
</ul>
<p>&#xBB3C;&#xB860; TURN &#xC138;&#xC158;&#xC5D0;&#xB294; &#xC5EC;&#xC804;&#xD788; &#xB9AC;&#xC18C;&#xC2A4;&#xAC00; &#xD544;&#xC694;&#xD558;&#xBA70; &#xC5EC;&#xC804;&#xD788; CPU &#xC804;&#xB825;&#xACFC; &#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xCC98;&#xB9AC;&#xB7C9;&#xC744; &#xC18C;&#xBE44;&#xD569;&#xB2C8;&#xB2E4;. &#xAC01; &#xC2DC;&#xC2A4;&#xD15C;&#xC740; &#xADDC;&#xBAA8;&#xC5D0; &#xC0C1;&#xAD00;&#xC5C6;&#xC774; &#xC5EC;&#xC804;&#xD788; &#xC81C;&#xD55C;&#xB41C; &#xC218;&#xC758; TURN &#xD560;&#xB2F9;(&#xC218;&#xCC9C; &#xB610;&#xB294; &#xC218;&#xB9CC; &#xAC1C;&#xC758; &#xC77C;&#xBC18; &#xD2B8;&#xB798;&#xD53D; &#xC2A4;&#xD2B8;&#xB9BC;)&#xC744; &#xCC98;&#xB9AC;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC774; &#xBB38;&#xC11C;&#xB294; &#xADF8; &#xC218;&#xB97C; &#xCD5C;&#xB300;&#xD654;&#xD558;&#xB294; &#xAC83;&#xC5D0; &#xAD00;&#xD55C; &#xAC83;&#xC785;&#xB2C8;&#xB2E4;.</p>
<h3 id="%EC%B5%9C%EB%8C%80-%EB%8F%99%EC%8B%9C-%EC%84%B8%EC%85%98-%EC%88%98%EC%97%90-%EC%98%81%ED%96%A5%EC%9D%84-%EB%AF%B8%EC%B9%98%EB%8A%94-%EC%82%AC%ED%95%AD">&#xCD5C;&#xB300; &#xB3D9;&#xC2DC; &#xC138;&#xC158; &#xC218;&#xC5D0; &#xC601;&#xD5A5;&#xC744; &#xBBF8;&#xCE58;&#xB294; &#xC0AC;&#xD56D;:</h3>
<ul>
<li>
<p>&#xBBF8;&#xB514;&#xC5B4; &#xADF8;&#xB8F9; :</p>
<ol>
<li>&#xC0AC;&#xC6A9;&#xD560; &#xCF54;&#xB371;(&#xD398;&#xC774;&#xB85C;&#xB4DC; &#xD06C;&#xAE30;).</li>
<li>&#xD328;&#xD0B7; &#xAC04;&#xACA9;.</li>
</ol>
</li>
<li>
<p>&#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xC704;&#xC0C1; &#xBC0F; &#xD504;&#xB85C;&#xD1A0;&#xCF5C; &#xADF8;&#xB8F9;</p>
<ol>
<li>ISP &#xD37C;&#xD3EC;&#xBA3C;&#xC2A4;</li>
<li>P2P &#xC138;&#xC158;</li>
<li>&#xAD00;&#xB828; &#xD504;&#xB85C;&#xD1A0;&#xCF5C; (TCP, UDP &#xB610;&#xB294; TLS)</li>
<li>TLS&#xAC00; &#xAD00;&#xB828;&#xB41C; &#xACBD;&#xC6B0; TLS &#xC138;&#xC158;&#xC758; &#xB9E4;&#xAC1C;&#xBCC0;&#xC218;(&#xBB34;&#xAC70;&#xC6B4; &#xC815;&#xB3C4;)</li>
<li>&#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8;&#xAC00; &#xBC38;&#xB7F0;&#xC2F1;&#xC744; &#xC704;&#xD574; &#xC11C;&#xBC84;&#xC758; 300&#xC624;&#xB958;(&#xB9AC;&#xB2E4;&#xC774;&#xB809;&#xC158;)&#xB97C; &#xB300;&#xCCB4;&#xD560; &#xC218; &#xC788;&#xB294;&#xC9C0; &#xC5EC;&#xBD80;(WebRTC &#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8;&#xB294; &#xD604;&#xC7AC; &#xBD88;&#xAC00;&#xB2A5;).</li>
<li>&#xB77C;&#xC6B4;&#xB4DC;&#xB85C;&#xBE48; DNS &#xBC29;&#xC2DD;&#xC744; &#xC0AC;&#xC6A9;&#xD560; &#xC218; &#xC788;&#xB294;&#xAC00;?</li>
</ol>
</li>
<li>
<p>&#xD558;&#xB4DC;&#xC6E8;&#xC5B4;, OS &#xBC0F; &#xC18C;&#xD504;&#xD2B8;&#xC6E8;&#xC5B4; &#xC124;&#xC815; &#xADF8;&#xB8F9;</p>
<ol>
<li>NIC &#xC218;</li>
<li>How advanced are the NICs.</li>
<li>&#xC2DC;&#xC2A4;&#xD15C; &#xBA54;&#xBAA8;&#xB9AC; &#xBC0F; &#xBC84;&#xC2A4; &#xC131;&#xB2A5;(&#xB9CE;&#xC740; &#xD2B8;&#xB798;&#xD53D;&#xC774; &#xD1B5;&#xACFC;&#xD568;).</li>
<li>CPU &#xC218; &#xBC0F; CPU &#xC131;&#xB2A5;(&#xCE90;&#xC2DC; &#xB4F1;).</li>
<li>OS &#xC720;&#xD615; &#xBC0F; &#xBC84;&#xC804;.</li>
<li>NIC&#xAC00; OS&#xC640; &#xC5BC;&#xB9C8;&#xB098; &#xC798; &#xD1B5;&#xD569;&#xB418;&#xC5B4; &#xC788;&#xB294;&#xC9C0;(&#xB4DC;&#xB77C;&#xC774;&#xBC84;&#xAC00; &#xC804;&#xCCB4; NIC &#xAE30;&#xB2A5;&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xB294;&#xC9C0; &#xC5EC;&#xBD80;).</li>
<li>&#xC2DC;&#xC2A4;&#xD15C;&#xC774; &#xCC98;&#xB9AC;&#xD560; &#xC218; &#xC788;&#xB294; &#xD30C;&#xC77C; &#xC124;&#xBA85;&#xC790; &#xC218;(&#xC804;&#xCCB4; &#xBC0F; &#xD504;&#xB85C;&#xC138;&#xC2A4;&#xB2F9; &#xC81C;&#xD55C;). &#xC77C;&#xBC18;&#xC801;&#xC73C;&#xB85C; &#xC774;&#xAC83;&#xC740; ulimit &#xC2DC;&#xC2A4;&#xD15C; &#xB9E4;&#xAC1C;&#xBCC0;&#xC218;&#xC785;&#xB2C8;&#xB2E4;. &#xD504;&#xB85C;&#xC138;&#xC2A4;&#xBCC4; &#xBC0F; &#xC2DC;&#xC2A4;&#xD15C; &#xC804;&#xCCB4; ulimit&#xB97C; &#xB298;&#xB9AC;&#xB294; &#xBC29;&#xBC95;&#xC740; &#xC2DC;&#xC2A4;&#xD15C; &#xC124;&#xBA85;&#xC11C;&#xB97C; &#xCC38;&#xC870;&#xD558;&#xC2ED;&#xC2DC;&#xC624;. &#xAC01; TURN &#xD560;&#xB2F9;&#xC740; &#xC801;&#xC5B4;&#xB3C4; 1&#xAC1C; &#xC774;&#xC0C1;&#xC758; &#xD30C;&#xC77C; &#xB514;&#xC2A4;&#xD06C;&#xB9BD;&#xD130;&#xB97C; &#xC0AC;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;(&#xC11C;&#xB85C; &#xB2E4;&#xB978; &#xC720;&#xD615;&#xC758; &#xC138;&#xC158;&#xC740; &#xB2E4;&#xB978; &#xC218;&#xC758; &#xD30C;&#xC77C; &#xB514;&#xC2A4;&#xD06C;&#xB9BD;&#xD130;&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xACE0; &#xB2E4;&#xB978; &#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xC5D4;&#xC9C4;&#xC740; &#xC774;&#xC640; &#xAD00;&#xB828;&#xD558;&#xC5EC; &#xB2E4;&#xB974;&#xAC8C; &#xC791;&#xB3D9;&#xD569;&#xB2C8;&#xB2E4;). &#xC2DC;&#xC2A4;&#xD15C; &#xC81C;&#xD55C;&#xC774; &#xD5C8;&#xC6A9;&#xD558;&#xB294; &#xAC83;&#xBCF4;&#xB2E4; &#xB354; &#xB9CE;&#xC740; &#xC138;&#xC158;&#xC744; &#xC5F4;&#xB824;&#xACE0; &#xD558;&#xBA74; TURN &#xC11C;&#xBC84; &#xCF58;&#xC194;&#xC774;&#xB098; &#xB85C;&#xADF8; &#xD30C;&#xC77C;&#xC5D0; &quot;Too many open files&quot;&#xC640; &#xAC19;&#xC740; &#xC624;&#xB958;&#xAC00; &#xD45C;&#xC2DC;&#xB429;&#xB2C8;&#xB2E4;.</li>
</ol>
</li>
</ul>
<h3 id="%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%B5%9C%EC%A0%81%ED%99%94">&#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xCD5C;&#xC801;&#xD654;</h3>
<ul>
<li>
<p>&#xAC00;&#xC7A5; &#xBE60;&#xB978; &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xC635;&#xC158;&#xC740; SQLite&#xC785;&#xB2C8;&#xB2E4;. &#xD504;&#xB85C;&#xC138;&#xC2A4; &#xAC04; &#xB610;&#xB294; &#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xD1B5;&#xC2E0;&#xC774; &#xD544;&#xC694;&#xD558;&#xC9C0; &#xC54A;&#xAE30; &#xB54C;&#xBB38;&#xC5D0; &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xAD00;&#xB9AC; &#xB77C;&#xC774;&#xBE0C;&#xB7EC;&#xB9AC;&#xAC00; TURN &#xC11C;&#xBC84; &#xD504;&#xB85C;&#xC138;&#xC2A4;&#xC5D0; &#xC9C1;&#xC811; &#xC5F0;&#xACB0;&#xB429;&#xB2C8;&#xB2E4;. &#xADF8;&#xB7EC;&#xB098; &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC740; &#xACBD;&#xC6B0; &#xB354; &#xAC15;&#xB825;&#xD55C; &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4; &#xAD00;&#xB9AC; &#xC2DC;&#xC2A4;&#xD15C;(&#xC608;: PostgreSQL, MySQL, Redis &#xB610;&#xB294; MongoDB)&#xC774; &#xD544;&#xC694;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<ol>
<li>&#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4;&#xB294; &#xC218;&#xCC9C; &#xAC1C; &#xC774;&#xC0C1;&#xC758; &#xB808;&#xCF54;&#xB4DC;&#xC785;&#xB2C8;&#xB2E4;.</li>
<li>&#xCD94;&#xAC00; &#xBCF4;&#xC548;&#xC774; &#xD544;&#xC694;&#xD55C; &#xACBD;&#xC6B0;</li>
<li>&#xB2E4;&#xB978; &#xD504;&#xB85C;&#xC138;&#xC2A4;&#xAC00; TURN &#xC11C;&#xBC84;&#xC640; &#xB3D9;&#xC2DC;&#xC5D0; TURN &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4;&#xC5D0; &#xB2A5;&#xB3D9;&#xC801;&#xC73C;&#xB85C; &#xC561;&#xC138;&#xC2A4;&#xD558;&#xB824;&#xB294; &#xACBD;&#xC6B0;;</li>
<li>&#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4;&#xAC00; &#xC5EC;&#xB7EC; TURN &#xC11C;&#xBC84;&#xC5D0;&#xC11C; &#xACF5;&#xC720;&#xB418;&#xB294; &#xACBD;&#xC6B0;.</li>
</ol>
</li>
<li>
<p>&#xAC04;&#xACB0;&#xD558;&#xACE0; &#xB2E8;&#xC21C;&#xD55C; &#xC124;&#xC815;&#xC5D0;&#xC11C; SQLite&#xB294; &#xAC00;&#xC7A5; &#xAC04;&#xB2E8;&#xD558;&#xACE0; &#xBE60;&#xB978; &#xC635;&#xC158;&#xC785;&#xB2C8;&#xB2E4;.</p>
</li>
</ul>
<h3 id="%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%9A%B4%EC%98%81-%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94">&#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xC6B4;&#xC601; &#xC131;&#xB2A5; &#xCD5C;&#xC801;&#xD654;</h3>
<p>TURN &#xC11C;&#xBC84; &#xC131;&#xB2A5;&#xC740; &#xC6B4;&#xC601; &#xCCB4;&#xC81C;&#xAC00; TCP/IP &#xC2A4;&#xD0DD; &#xC791;&#xC5C5;&#xC744; &#xC5BC;&#xB9C8;&#xB098; &#xD6A8;&#xC728;&#xC801;&#xC73C;&#xB85C; &#xCC98;&#xB9AC;&#xD558;&#xB294;&#xC9C0;&#xC5D0; &#xB530;&#xB77C; &#xD06C;&#xAC8C; &#xB2EC;&#xB77C;&#xC9D1;&#xB2C8;&#xB2E4;. &#xC131;&#xB2A5; &#xCD5C;&#xC801;&#xD654;&#xB294; &#xC5EC;&#xB7EC; &#xC811;&#xADFC; &#xBC29;&#xC2DD;&#xC744; &#xC870;&#xD569;&#xD558;&#xC5EC; &#xB2EC;&#xC131;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<ul>
<li>
<p>&quot;&#xC18C;&#xD504;&#xD2B8;&#xC6E8;&#xC5B4; RSS&quot;: &#xD328;&#xD0B7; &#xC870;&#xC815;(RPS)&#xC744; &#xC218;&#xC2E0;&#xD569;&#xB2C8;&#xB2E4;.<br>
&#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xCE74;&#xB4DC;&#xAC00; RSS&#xB97C; &#xC9C0;&#xC6D0;&#xD558;&#xC9C0; &#xC54A;&#xC73C;&#xBA74; &#xC18C;&#xD504;&#xD2B8;&#xC6E8;&#xC5B4;&#xC5D0;&#xC11C; &#xD574;&#xB2F9; &#xAE30;&#xB2A5;&#xC744; &#xC5D0;&#xBBAC;&#xB808;&#xC774;&#xD2B8;&#xD558;&#xB294; OS(&#xC608;: &#xCD5C;&#xC2E0; &#xBC84;&#xC804;&#xC758; BSD &#xBC0F; Linux)&#xB97C; &#xC0AC;&#xC6A9;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. RSS &#xBC0F; RPS&#xB97C; &#xCF1C;&#xB294; &#xBC29;&#xBC95;&#xC744; &#xC54C;&#xC544;&#xBCF4;&#xB824;&#xBA74; OS&#xC758; &#xC124;&#xBA85;&#xC11C;&#xB97C; &#xC77D;&#xC73C;&#xC2ED;&#xC2DC;&#xC624;. RSS &#xBC0F; RPS&#xC5D0; &#xB300;&#xD55C; &#xC77C;&#xBC18;&#xC801;&#xC778; &#xC124;&#xBA85;&#xC740; &#xB2E4;&#xC74C;&#xC5D0;&#xC11C; &#xCC3E;&#xC744; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
</li>
<li>
<p>&#xC5EC;&#xB7EC; &#xC2DC;&#xC2A4;&#xD15C; &#xAC04;&#xC758; &#xB85C;&#xB4DC; &#xBC38;&#xB7F0;&#xC2F1;.</p>
</li>
</ul>
<p>&#xC774;&#xAC83;&#xC740; &#xAC00;&#xC7A5; &#xD6A8;&#xC728;&#xC801;&#xC774;&#xACE0; &#xAC00;&#xC7A5; &#xD6A8;&#xC728;&#xC801;&#xC778; &#xC131;&#xB2A5; &#xC870;&#xC815; &#xBC29;&#xBC95;&#xC785;&#xB2C8;&#xB2E4;. &#xC0AC;&#xC6A9; &#xAC00;&#xB2A5;&#xD55C; &#xC2DC;&#xC2A4;&#xD15C; &#xC218;&#xC5D0; &#xBE44;&#xB840;&#xD558;&#xC5EC; &#xAC70;&#xC758; &#xC120;&#xD615;&#xC5D0; &#xAC00;&#xAE4C;&#xC6B4; &#xC131;&#xB2A5; &#xAC1C;&#xC120;&#xC774; &#xAC00;&#xB2A5;&#xD569;&#xB2C8;&#xB2E4;. &#xC0AC;&#xC2E4;&#xC0C1; &#xBB34;&#xC81C;&#xD55C; &#xD655;&#xC7A5;&#xC131;&#xC744; &#xB2EC;&#xC131;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xC5EC;&#xAE30;&#xC5D0;&#xB294; &#xC138; &#xAC00;&#xC9C0; &#xC635;&#xC158;&#xC774; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<ol>
<li>&#xC694;&#xCCAD;&#xC744; TURN &#xC11C;&#xBC84; &#xADF8;&#xB8F9;&#xC758; &#xAD6C;&#xC131;&#xC6D0;&#xC73C;&#xB85C; &#xB9AC;&#xB514;&#xB809;&#xC158;&#xD558;&#xB294; &#xB124;&#xD2B8;&#xC6CC;&#xD0B9; &#xBD80;&#xD558; &#xBD84;&#xC0B0; &#xC7A5;&#xBE44;&#xB97C; &#xC124;&#xC815;&#xD569;&#xB2C8;&#xB2E4;. &#xC77C;&#xBC18;&#xC801;&#xC73C;&#xB85C; &#xB3D9;&#xC77C;&#xD55C; &#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8;&#xC758; &#xC77C;&#xBD80; TURN &#xC138;&#xC158;&#xC774; &#xC815;&#xBCF4;&#xB97C; &#xACF5;&#xC720;&#xD574;&#xC57C; &#xD558;&#xAE30; &#xB54C;&#xBB38;&#xC5D0; &#xB3D9;&#xC77C;&#xD55C; &#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8; IP&#xC5D0;&#xC11C; &#xB3D9;&#xC77C;&#xD55C; &#xC11C;&#xBC84;&#xB85C; &#xC694;&#xCCAD;&#xC744; &#xB9AC;&#xB514;&#xB809;&#xC158;&#xD558;&#xB294; &#xB370; &#xC8FC;&#xC758;&#xD574;&#xC57C; &#xD569;&#xB2C8;&#xB2E4;. &#xC11C;&#xB85C; &#xB2E4;&#xB978; TURN &#xC138;&#xC158;&#xC774; &#xC0C1;&#xD638; &#xC791;&#xC6A9;&#xD574;&#xC57C; &#xD558;&#xB294; &#xB450; &#xAC00;&#xC9C0; &#xACBD;&#xC6B0;&#xAC00; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. RTP/RTCP &#xC5F0;&#xACB0; &#xC30D;(RFC 5766)&#xACFC; TCP &#xB9B4;&#xB808;&#xC774;(RFC 6062)&#xC785;&#xB2C8;&#xB2E4;. &#xC774;&#xB7EC;&#xD55C; &#xAE30;&#xB2A5;&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xC9C0; &#xC54A;&#xB294; &#xACBD;&#xC6B0; &#xAC04;&#xB2E8;&#xD55C; &#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xB85C;&#xB4DC; &#xBC38;&#xB7F0;&#xC2F1;&#xC73C;&#xB85C; &#xCDA9;&#xBD84;&#xD569;&#xB2C8;&#xB2E4;. &#xC774;&#xB7EC;&#xD55C; &#xAE30;&#xB2A5;&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xB294; &#xACBD;&#xC6B0; &#xB3D9;&#xC77C;&#xD55C; TURN &#xC11C;&#xBC84;&#xC5D0; &#xC804;&#xCCB4; &#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8; IP(&#xBAA8;&#xB4E0; &#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xD3EC;&#xD2B8; &#xD3EC;&#xD568;)&#xB97C; &#xB9E4;&#xD551;&#xD574;&#xC57C; &#xD569;&#xB2C8;&#xB2E4;. &#xB610;&#xD55C;,</li>
<li>&#xB77C;&#xC6B4;&#xB4DC; &#xB85C;&#xBE48; DNS&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; &#xB35C; &#xBCF5;&#xC7A1;&#xD55C; &#xCCB4;&#xACC4;&#xB97C; &#xC124;&#xC815;&#xD569;&#xB2C8;&#xB2E4;. &#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8;&#xB294; &#xBAA8;&#xB4E0; &#xC694;&#xCCAD;&#xC744; &#xB3D9;&#xC77C;&#xD55C; DNS &#xAC80;&#xC0C9; TURN &#xC11C;&#xBC84;&#xB85C; &#xBCF4;&#xB0B4;&#xC57C; &#xD569;&#xB2C8;&#xB2E4;. &#xC774; &#xCCB4;&#xACC4;&#xB294; &#xBAA8;&#xB4E0; &#xC0AC;&#xC6A9; &#xC0AC;&#xB840;&#xB97C; &#xC9C0;&#xC6D0;&#xD569;&#xB2C8;&#xB2E4;.</li>
<li>ALTERNATE-SERVER &#xC635;&#xC158;(--alternate-server &#xC635;&#xC158;)&#xACFC; &#xD568;&#xAED8; &#xB0B4;&#xC7A5; &#xBC38;&#xB7F0;&#xC2F1; &#xAE30;&#xB2A5;&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xC2ED;&#xC2DC;&#xC624;. &#xC774; &#xACBD;&#xC6B0; &#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8;&#xB294; &#xBAA8;&#xB4E0; &#xC694;&#xCCAD;&#xC744; &#xB3D9;&#xC77C;&#xD55C; &#xB300;&#xCCB4; &#xC11C;&#xBC84; &#xC8FC;&#xC18C;&#xB85C; &#xBCF4;&#xB0B4;&#xC57C; &#xD569;&#xB2C8;&#xB2E4;. &#xB2E8;&#xC77C; &#xC2DC;&#xC2A4;&#xD15C;&#xC744; TURN &#xC11C;&#xBC84; &#xD074;&#xB7EC;&#xC2A4;&#xD130;&#xC758; &quot;&#xD504;&#xB860;&#xD2B8; &#xC5D4;&#xB4DC;&quot;&#xB85C; &#xC124;&#xC815;&#xD558;&#xACE0; &#xD574;&#xB2F9; &quot;&#xB85C;&#xB4DC; banacer&quot; &#xC2DC;&#xC2A4;&#xD15C;&#xC740; &#xC544;&#xBB34; &#xC791;&#xC5C5;&#xB3C4; &#xC218;&#xD589;&#xD558;&#xC9C0; &#xC54A;&#xC2B5;&#xB2C8;&#xB2E4;. &#xB300;&#xCCB4; &#xC11C;&#xBC84; IP &#xC8FC;&#xC18C;&#xC640; &#xD568;&#xAED8; &#xBAA8;&#xB4E0; &#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8;&#xC5D0; 300 ALTERNATE-SERVER &#xC624;&#xB958;&#xB97C; &#xBC18;&#xD658;&#xD558;&#xBBC0;&#xB85C; &#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8;&#xAC00; &#xB2E4;&#xB978; &#xC11C;&#xBC84;&#xC5D0; &#xB2E4;&#xC2DC; &#xC5F0;&#xACB0;&#xD569;&#xB2C8;&#xB2E4;. &#xB300;&#xCCB4; &#xC11C;&#xBC84;&#xAC00; &#xB77C;&#xC6B4;&#xB4DC; &#xB85C;&#xBE48; &#xBC29;&#xC2DD;&#xC73C;&#xB85C; &#xC120;&#xD0DD;&#xB418;&#xBA74; TURN &#xC11C;&#xBC84;&#xC758; &#xB85C;&#xB4DC; &#xBC38;&#xB7F0;&#xC2F1; &#xD074;&#xB7EC;&#xC2A4;&#xD130;&#xAC00; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</li>
</ol>
<ul>
<li>&#xB2E8;&#xC77C; &#xC2DC;&#xC2A4;&#xD15C; &#xB0B4;&#xC5D0;&#xC11C; &#xB85C;&#xB4DC; &#xBC38;&#xB7F0;&#xC2F1; &#xBC0F; &#xCD5C;&#xC801;&#xD654;.</li>
</ul>
<p>&#xC774; &#xC139;&#xC158;&#xC740; &#xC8FC;&#xB85C; 2.6.32-431 &#xC774;&#xC804; &#xCEE4;&#xB110;&#xC774; &#xC788;&#xB294; Linux &#xC2DC;&#xC2A4;&#xD15C; &#xB610;&#xB294; 3.0&#xC5D0;&#xC11C; 3.8 &#xCEE4;&#xB110;&#xC744; &#xC704;&#xD55C; &#xAC83;&#xC785;&#xB2C8;&#xB2E4;. &#xC608;&#xB97C; &#xB4E4;&#xBA74; CentOS 6.4 &#xBC0F; Debian Wheezy&#xAC00; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. Cygwin &#xC0AC;&#xC6A9;&#xC790;&#xB3C4; &#xB3D9;&#xC77C;&#xD55C; &#xAE30;&#xC220;&#xC744; &#xC801;&#xC6A9;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xC774; &#xC139;&#xC158;&#xC740; &#xB2E4;&#xC74C;&#xC5D0; &#xC801;&#xC6A9; &#xB418;&#xC9C0; &#xC54A;&#xC2B5;&#xB2C8;&#xB2E4; .</p>
<ol>
<li>
<p>ArchLinux, Debian Sid, Fedora&#xC640; &#xAC19;&#xC740; Linux &#xCEE4;&#xB110; 3.9 &#xC774;&#xC0C1;&#xC774; &#xC788;&#xB294; &#xC2DC;&#xC2A4;&#xD15C;;</p>
</li>
<li>
<p>2.6 &#xB77C;&#xC778;&#xC758; &#xCD5C;&#xC2E0; Linux &#xCEE4;&#xB110;&#xC774; &#xC788;&#xB294; &#xC2DC;&#xC2A4;&#xD15C;(CentOS 6.5&#xC640; &#xAC19;&#xC740; 2.6.32-431 &#xC774;&#xC0C1;);</p>
</li>
<li>
<p>BSD &#xC2DC;&#xC2A4;&#xD15C;;</p>
</li>
<li>
<p>&#xC194;&#xB77C;&#xB9AC;&#xC2A4; &#xC2DC;&#xC2A4;&#xD15C;;</p>
</li>
<li>
<p>&#xB9E5; OS X;</p>
<ul>
<li>&#xD574;&#xB2F9; &#xC2DC;&#xC2A4;&#xD15C;&#xC758; &#xC0AC;&#xC6A9;&#xC790;&#xB294; &#xC774; &#xC139;&#xC158;&#xC744; &#xAC74;&#xB108;&#xB6F8; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xADC0;&#xD558;&#xC758; TURN &#xC11C;&#xBC84; &#xC544;&#xD0A4;&#xD14D;&#xCC98;&#xB294; &#xADC0;&#xD558;&#xC758; &#xD50C;&#xB7AB;&#xD3FC;&#xC5D0; &#xB300;&#xD574; &#xB9E4;&#xC6B0; &#xBBF8;&#xC138;&#xD558;&#xAC8C; &#xC870;&#xC815;&#xB418;&#xC5B4; &#xC788;&#xC73C;&#xBA70; &#xC774;&#xBBF8; &#xC788;&#xB294; &#xADF8;&#xB300;&#xB85C; &#xD569;&#xB9AC;&#xC801;&#xC73C;&#xB85C; &#xCD5C;&#xC801;&#xC785;&#xB2C8;&#xB2E4;. &#xD134;&#xC11C;&#xBC84; &#xD504;&#xB85C;&#xC138;&#xC2A4;&#xAC00; &#xC2DC;&#xC791;&#xB418;&#xBA74; &#xC2DC;&#xC2A4;&#xD15C;&#xC5D0; &#xAC00;&#xC7A5; &#xC801;&#xD569;&#xD55C; &#xC131;&#xB2A5; &#xC635;&#xC158;&#xC774; &#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xC120;&#xD0DD;&#xB429;&#xB2C8;&#xB2E4;.</li>
</ul>
</li>
</ol>
<p>&#xC774;&#xC804; Linux &#xC2DC;&#xC2A4;&#xD15C; &#xC2DC;&#xC2A4;&#xD15C;&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xB294; &#xACBD;&#xC6B0;&#xC5D0;&#xB3C4; &#xC5EC;&#xC804;&#xD788; &#xC6B0;&#xC218;&#xD55C; &#xC131;&#xB2A5;&#xC744; &#xC5BB;&#xC744; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xACC4;&#xC18D; &#xC77D;&#xC73C;&#xC2ED;&#xC2DC;&#xC624;.</p>
<p>&#xC774;&#xC804;&#xC5D0; &#xB9D0;&#xD588;&#xB4EF;&#xC774; TURN &#xC11C;&#xBC84; &#xC131;&#xB2A5;&#xC740; &#xC8FC;&#xB85C; &#xC6B4;&#xC601; &#xCCB4;&#xC81C;&#xAC00; TCP/IP &#xC2A4;&#xD0DD; &#xC791;&#xC5C5;&#xC744; &#xC5BC;&#xB9C8;&#xB098; &#xD6A8;&#xC728;&#xC801;&#xC73C;&#xB85C; &#xCC98;&#xB9AC;&#xD558;&#xB294;&#xC9C0;&#xC5D0; &#xB2EC;&#xB824; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC77C;&#xBC18;&#xC801;&#xC73C;&#xB85C; &#xC2A4;&#xD0DD;&#xC758; TCP &#xBD80;&#xBD84;&#xC740; &#xC801;&#xC808;&#xD558;&#xAC8C; &#xCD5C;&#xC801;&#xD654;&#xB418;&#xC9C0;&#xB9CC; UDP &#xCC98;&#xB9AC;&#xB294; &#xC885;&#xC885; &#xCC28;&#xC120;&#xCC45;&#xC785;&#xB2C8;&#xB2E4;. &#xC9C0;&#xAE08;&#xAE4C;&#xC9C0; &#xC77C;&#xBC18;&#xC801;&#xC778; UDP &#xC2A4;&#xD0DD; &#xAD6C;&#xD604;&#xC740; TURN&#xC5D0;&#xC11C; &#xC0AC;&#xC6A9;&#xB418;&#xB294; &#xAC83;&#xACFC; &#xAC19;&#xC740; &quot;&#xC601;&#xAD6C;&#xC801;&#xC778;&quot; UDP &#xC138;&#xC158;&#xC5D0; &#xB300;&#xD574; &#xC798; &#xC870;&#xC815;&#xB418;&#xC9C0; &#xC54A;&#xC558;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC608;&#xB97C; &#xB4E4;&#xC5B4;, &#xAE30;&#xBCF8;&#xC801;&#xC73C;&#xB85C; Linux &#xCEE4;&#xB110;&#xC740; 128&#xAC1C;&#xC758; &#xBC84;&#xD0B7;&#xC5D0; &#xC788;&#xB294; &#xBAA8;&#xB4E0; UDP &#xC18C;&#xCF13;&#xC744; &#xD574;&#xC2DC;&#xD569;&#xB2C8;&#xB2E4;. &#xC218;&#xCC9C; &#xAC1C;&#xC758; UDP &#xC138;&#xC158;&#xC774; &#xC788;&#xB294; &#xACBD;&#xC6B0; &#xBE44;&#xD6A8;&#xC728;&#xC801;&#xC73C;&#xB85C; &#xCC98;&#xB9AC;&#xB418;&#xB294; UDP &#xC18C;&#xCF13;&#xC774; &#xB9CE;&#xC774; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xC989;, Linux &#xCEE4;&#xB110;&#xC5D0;&#xC11C; UDP&#xB97C; &#xAD6C;&#xD604;&#xD558;&#xBA74; &#xD574;&#xC2DC; &#xD14C;&#xC774;&#xBE14;&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; &#xC18C;&#xCF13; &#xAD6C;&#xC870;&#xB97C; &#xC800;&#xC7A5;&#xD569;&#xB2C8;&#xB2E4;. &#xC774;&#xC804; 2.6.32 &#xCEE4;&#xB110;(&#xC608;: CentOS 6.0-6.4&#xC758; &#xAE30;&#xBCF8;&#xAC12;)&#xC5D0;&#xC11C; &#xC774; &#xD574;&#xC2DC; &#xD14C;&#xC774;&#xBE14;&#xC740; 128&#xAC1C;&#xC758; &#xD56D;&#xBAA9;&#xC744; &#xAC16;&#xB3C4;&#xB85D; &#xD558;&#xB4DC;&#xCF54;&#xB529;&#xB429;&#xB2C8;&#xB2E4;. &#xB530;&#xB77C;&#xC11C; &#xB9CE;&#xC740; &#xC218;&#xC758; &#xC18C;&#xCF13;&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xBA74; &#xD14C;&#xC774;&#xBE14;&#xC758; &#xC131;&#xB2A5;&#xC774; &#xAC01; &#xC218;&#xC2E0; &#xD328;&#xD0B7;&#xC5D0; &#xB300;&#xD574; &#xD1B5;&#xACFC;&#xD574;&#xC57C; &#xD558;&#xB294; &#xC5F0;&#xACB0; &#xBAA9;&#xB85D;&#xC73C;&#xB85C; &#xC800;&#xD558;&#xB429;&#xB2C8;&#xB2E4;.</p>
<p>2.6.33 &#xC774;&#xC804;&#xC758; Linux &#xCEE4;&#xB110;&#xC774; &#xC788;&#xB294; &#xACBD;&#xC6B0; &#xCEE4;&#xB110; &#xCF54;&#xB4DC;&#xC5D0;&#xC11C; &#xD558;&#xB4DC;&#xCF54;&#xB529;&#xB41C; &#xD574;&#xC2DC; &#xD06C;&#xAE30;&#xB97C; &#xBCC0;&#xACBD;&#xD558;&#xACE0; &#xCEE4;&#xB110;&#xC744; &#xB2E4;&#xC2DC; &#xCEF4;&#xD30C;&#xC77C;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xCD5C;&#xC2E0; &#xCEE4;&#xB110;&#xC774; &#xC788;&#xB294; &#xACBD;&#xC6B0; &#xCEE4;&#xB110; &#xC7AC;&#xCEF4;&#xD30C;&#xC77C; &#xC5C6;&#xC774; &#xC774;&#xB97C; &#xC218;&#xD589;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xCEE4;&#xB110; 2.6.33&#xC740; &#xAD6C;&#xC131; &#xAC00;&#xB2A5;&#xD55C; UDP &#xD574;&#xC2DC; &#xD14C;&#xC774;&#xBE14; &#xD06C;&#xAE30;&#xC640; IP+port&#xB85C; &#xD0A4;&#xAC00; &#xC9C0;&#xC815;&#xB41C; &#xB450; &#xBC88;&#xC9F8; UDP &#xD574;&#xC2DC; &#xD14C;&#xC774;&#xBE14;&#xC744; &#xB3C4;&#xC785;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;(&#xC774;&#xC804;&#xC5D0;&#xB294; &#xD3EC;&#xD2B8;&#xB9CC; &#xC0AC;&#xC6A9;). &quot;uhash_entries&quot; &#xBD80;&#xD305; &#xC2DC; &#xCEE4;&#xB110; &#xBCC0;&#xC218;&#xB97C; &#xC124;&#xC815;&#xD558;&#xC5EC; &#xD574;&#xC2DC; &#xD14C;&#xC774;&#xBE14; &#xD06C;&#xAE30;&#xB97C; &#xAD6C;&#xC131;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;(&#xC608;: /etc/grub.conf&#xC5D0;&#xC11C;). &#xCD5C;&#xC0C1;&#xC758; &#xC131;&#xB2A5;&#xC744; &#xC704;&#xD574; 65536&#xC73C;&#xB85C; &#xC124;&#xC815;&#xD558;&#xC2ED;&#xC2DC;&#xC624;.</p>
<p>&#xB2E4;&#xB978; OS&#xC5D0;&#xB3C4; &#xBE44;&#xC2B7;&#xD55C; &#xBB38;&#xC81C;&#xAC00; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xAD6C;&#xC131; &#xC9C0;&#xCE68;&#xC740; OS &#xC124;&#xBA85;&#xC11C;&#xB97C; &#xD655;&#xC778;&#xD558;&#xC2ED;&#xC2DC;&#xC624;.</p>
<p>TURN &#xC11C;&#xBC84;&#xB294; &#xB2E4;&#xC911; &#xC2A4;&#xB808;&#xB4DC; &#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xD328;&#xD0B7; &#xB77C;&#xC6B0;&#xD305; &#xC2DC;&#xC2A4;&#xD15C;&#xC73C;&#xB85C; &#xC124;&#xACC4;&#xB418;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;. &#xADF8;&#xB7EC;&#xB098; &#xBA40;&#xD2F0;&#xC2A4;&#xB808;&#xB529;&#xC774; &#xD56D;&#xC0C1; &#xD2B9;&#xC815; &#xC2DC;&#xC2A4;&#xD15C; &#xAD6C;&#xC131;&#xC5D0; &#xAC00;&#xC7A5; &#xC801;&#xD569;&#xD55C; &#xC635;&#xC158;&#xC740; &#xC544;&#xB2D9;&#xB2C8;&#xB2E4;. &#xAE30;&#xBCF8; &#xC2DC;&#xC791; TURN &#xC11C;&#xBC84; &#xAD6C;&#xC131;&#xC740; &#xBA54;&#xBAA8;&#xB9AC;, &#xC2A4;&#xB808;&#xB4DC; &#xC120;&#xD638;&#xB3C4;, &#xCE90;&#xC2DC; &#xBC0F; CPU &#xB9AC;&#xC18C;&#xC2A4; &#xAC04;, &#xADF8;&#xB9AC;&#xACE0; TCP&#xC640; UDP &#xC77C;&#xBC18;&#xC801;&#xC778; &quot;&#xBC14;&#xB2D0;&#xB77C;&quot; OS &#xB124;&#xD2B8;&#xC6CC;&#xD0B9; &#xC2A4;&#xD0DD; &#xAD6C;&#xD604; &#xAC04;&#xC758; &#xC808;&#xCDA9;&#xC548;&#xC785;&#xB2C8;&#xB2E4;. &#xC774;&#xAC83;&#xC740; &#xD2B9;&#xC815; &#xD558;&#xB4DC;&#xC6E8;&#xC5B4;, &#xD2B9;&#xC815; OS &#xB610;&#xB294; &#xD2B9;&#xC815; &#xB85C;&#xB4DC; &#xD328;&#xD134;&#xC5D0; &#xB9DE;&#xAC8C; &#xC870;&#xC815;&#xB41C; &#xD2B9;&#xC218; &#xC2DC;&#xC2A4;&#xD15C;&#xC774; &#xC544;&#xB2D9;&#xB2C8;&#xB2E4;. TURN &#xC11C;&#xBC84; &#xC124;&#xACC4;&#xB294; &#xAC00;&#xB2A5;&#xD55C; &#xC751;&#xC6A9; &#xD504;&#xB85C;&#xADF8;&#xB7A8;&#xC758; &#xBC94;&#xC704;&#xAC00; &#xB9E4;&#xC6B0; &#xB113;&#xAE30; &#xB54C;&#xBB38;&#xC5D0; &#xD2B9;&#xC815; &#xD50C;&#xB7AB;&#xD3FC;&#xC758; &#xD2B9;&#xC815; &#xC751;&#xC6A9; &#xD504;&#xB85C;&#xADF8;&#xB7A8;&#xC5D0; &#xB300;&#xD574; 100% &#xCD5C;&#xC801;&#xC774; &#xC544;&#xB2D0; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xD558;&#xC9C0;&#xB9CC; &#xC5B4;&#xB514;&#xC5D0;&#xC11C;&#xB098; &#xC0AC;&#xC6A9;&#xD560; &#xC218; &#xC788;&#xC744; &#xB9CC;&#xD07C; &#xCDA9;&#xBD84;&#xD788; &#xC88B;&#xC544;&#xC57C; &#xD569;&#xB2C8;&#xB2E4;.</p>
<p>TURN &#xC11C;&#xBC84; &#xB9E4;&#xAC1C;&#xBCC0;&#xC218; -m&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xBA74; &#xC2A4;&#xB808;&#xB529; &#xAD6C;&#xC131;&#xC744; &#xC870;&#xC815;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &quot;-m 0&quot; &#xB9E4;&#xAC1C;&#xBCC0;&#xC218;(&#xB610;&#xB294; &quot;--relay-threads=0&quot;)&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; &#xBA40;&#xD2F0;&#xC2A4;&#xB808;&#xB529;&#xC744; &#xB04C; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xBAA8;&#xB4E0; &#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xD328;&#xD0B7; &#xCC98;&#xB9AC;&#xB97C; &#xD558;&#xB098;&#xC758; &#xC2A4;&#xB808;&#xB4DC; &#xB0B4;&#xC5D0;&#xC11C; &#xC720;&#xC9C0;&#xD558;&#xC5EC; &#xCEE8;&#xD14D;&#xC2A4;&#xD2B8; &#xC804;&#xD658; &#xB4F1;&#xC744; &#xC81C;&#xAC70;&#xD569;&#xB2C8;&#xB2E4;. &#xC774;&#xB294; &#xC2DC;&#xC2A4;&#xD15C;&#xC5D0; &#xB354; &#xD6A8;&#xC728;&#xC801;&#xC778; &#xC635;&#xC158;&#xC77C; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC778;&#xC99D; &#xD504;&#xB85C;&#xC138;&#xC2A4;&#xAC00; &#xC77C;&#xBC18; &#xD328;&#xD0B7; &#xB77C;&#xC6B0;&#xD305;&#xC744; &#xBCF4;&#xC720;&#xD558;&#xC9C0; &#xC54A;&#xC544;&#xC57C; &#xD558;&#xAE30; &#xB54C;&#xBB38;&#xC5D0; &#xC5EC;&#xC804;&#xD788; &#xBCC4;&#xB3C4;&#xC758; &#xC778;&#xC99D; &#xC2A4;&#xB808;&#xB4DC;&#xAC00; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&quot;-m 0&quot; &#xC635;&#xC158;&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xACE0; CPU &#xCF54;&#xC5B4;&#xB2F9; &#xD558;&#xB098;&#xC529; &#xC2DC;&#xC2A4;&#xD15C;&#xC5D0;&#xC11C; &#xC5EC;&#xB7EC; TURN &#xC11C;&#xBC84;&#xB97C; &#xC2E4;&#xD589;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xADF8;&#xAC83;&#xC740; &#xC544;&#xB9C8;&#xB3C4; &#xD655;&#xC7A5;&#xC131; &#xCE21;&#xBA74;&#xC5D0;&#xC11C; &#xCD5C;&#xACE0;&#xC758; &#xC131;&#xB2A5; &#xC635;&#xC158;&#xC77C; &#xAC83;&#xC785;&#xB2C8;&#xB2E4;. &#xAC01; TURN &#xC11C;&#xBC84;&#xC5D0;&#xB294; &#xC790;&#xCCB4; &#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xC218;&#xC2E0; &#xC8FC;&#xC18C;&#xC640; &#xC790;&#xCCB4; &#xC911;&#xACC4; IP &#xBC0F;/&#xB610;&#xB294; &#xC911;&#xACC4; &#xD3EC;&#xD2B8; &#xBC94;&#xC704;&#xAC00; &#xC788;&#xC5B4;&#xC57C; &#xD558;&#xBBC0;&#xB85C; &#xAD6C;&#xC131;&#xC774; &#xBCF5;&#xC7A1;&#xD558;&#xC9C0;&#xB9CC; &#xC131;&#xB2A5;&#xC740; &#xCD5C;&#xACE0;&#xAC00; &#xB420; &#xAC83;&#xC785;&#xB2C8;&#xB2E4;. ALTERNATE-SERVER &#xBA54;&#xCEE4;&#xB2C8;&#xC998;&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; &#xC804;&#xCCB4; &quot;&#xD329;&quot;&#xC744; &#xC678;&#xBD80; &#xC138;&#xACC4;&#xC5D0; &#xB2E8;&#xC77C; &quot;&#xCD08;&#xAE30;&quot; TURN &#xC11C;&#xBC84; &#xD504;&#xB7F0;&#xD2B8; &#xC5D4;&#xB4DC;&#xB85C; &#xD45C;&#xC2DC;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<ul>
<li>&#xD6A8;&#xC728;&#xC801;&#xC778; &#xC774;&#xBCA4;&#xD2B8; &#xB2E4;&#xC911;&#xD654;</li>
</ul>
<p>&#xB300;&#xADDC;&#xBAA8; TURN &#xC11C;&#xBC84;&#xC758; &#xACBD;&#xC6B0; &#xB2E4;&#xC911; &#xC18C;&#xCF13;&#xC744; &#xD6A8;&#xC728;&#xC801;&#xC73C;&#xB85C; &#xCC98;&#xB9AC;&#xD558;&#xB294; &#xAC83;&#xC774; &#xAC00;&#xC7A5; &#xC2EC;&#xAC01;&#xD55C; &#xBB38;&#xC81C;&#xAC00; &#xB420; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. TURN &#xC11C;&#xBC84;&#xB294; &#xC774;&#xB97C; &#xC704;&#xD574; libevent2 &#xB3C4;&#xAD6C;&#xB97C; &#xC0AC;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;. Libevent2&#xB294; &#xD604;&#xC7AC; &#xD50C;&#xB7AB;&#xD3FC;&#xC5D0;&#xC11C; &#xC0AC;&#xC6A9; &#xAC00;&#xB2A5;&#xD55C; &#xAC00;&#xC7A5; &#xD6A8;&#xC728;&#xC801;&#xC778; &#xC774;&#xBCA4;&#xD2B8; &#xB2E4;&#xC911;&#xD654; &#xAE30;&#xB2A5;&#xC744; &#xD65C;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;. * Linux: epoll * BSD &#xBC0F; Mac OS X: kqueue * Solaris: &#xC774;&#xBCA4;&#xD2B8; &#xD3EC;&#xD2B8; * Cygwin: poll</p>
<p>&#xC774;&#xB7EC;&#xD55C; &#xAE30;&#xB2A5; &#xC911;&#xC5D0;&#xC11C; kqueue&#xB294; &#xC544;&#xB9C8;&#xB3C4; &#xAC00;&#xC7A5; &#xBC1C;&#xC804;&#xB41C; &#xAC83;&#xC785;&#xB2C8;&#xB2E4;.</p>
<p>&#xB530;&#xB77C;&#xC11C; &#xC5C4;&#xCCAD;&#xB09C; &#xC218;&#xC758; &#xC18C;&#xCF13;&#xC774; &#xC788;&#xB294; &#xACBD;&#xC6B0; BSD &#xC2DC;&#xC2A4;&#xD15C;&#xC740; &#xD2B9;&#xD788; TCP &#xD504;&#xB85C;&#xD1A0;&#xCF5C; &#xC131;&#xB2A5;&#xC774; &#xC911;&#xC694;&#xD55C; &#xACBD;&#xC6B0; &#xB9E4;&#xB825;&#xC801;&#xC778; &#xC635;&#xC158;&#xC774; &#xB420; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC608;&#xB97C; &#xB4E4;&#xC5B4; DragonFlyBSD&#xB294; &#xC131;&#xB2A5; &#xC9C0;&#xD5A5;&#xC801;&#xC778; BSD &#xBCC0;&#xD615;&#xC785;&#xB2C8;&#xB2E4;. FreeBSD&#xB3C4; &#xC88B;&#xC740; &#xC120;&#xD0DD;&#xC785;&#xB2C8;&#xB2E4;.</p>
<p>&#xD074;&#xB77C;&#xC774;&#xC5B8;&#xD2B8; &#xD2B8;&#xB798;&#xD53D;&#xC774; &#xB300;&#xBD80;&#xBD84; UDP(&#xB610;&#xB294; DTLS)&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xB294; &#xACBD;&#xC6B0; &#xCD5C;&#xC2E0; Linux &#xCEE4;&#xB110; &#xBC84;&#xC804;(Google &#xB124;&#xD2B8;&#xC6CC;&#xD0B9; &#xD328;&#xCE58; &#xD3EC;&#xD568;)&#xC774; &#xC720;&#xB9AC;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xCD5C;&#xADFC; Linux &#xCEE4;&#xB110;&#xC740; &#xBA87; &#xAC1C;&#xC758; &quot;&#xD504;&#xB860;&#xD2B8; &#xC5D4;&#xB4DC;&quot; &#xC18C;&#xCF13;&#xC744; &#xD1B5;&#xD574; &#xB2E4;&#xC911; &#xC2A4;&#xB808;&#xB4DC; &#xD658;&#xACBD;&#xC5D0;&#xC11C; UDP &#xCC98;&#xB9AC;&#xB97C; &#xD5C8;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;(&#xB3D9;&#xC77C;&#xD55C; &#xC2A4;&#xB808;&#xB4DC;&#xC5D0; &#xC18D;&#xD55C; &#xBAA8;&#xB4E0; &#xC138;&#xC158;&#xC740; &#xB3D9;&#xC77C;&#xD55C; UDP &#xC18C;&#xCF13;&#xC744; &#xACF5;&#xC720;&#xD569;&#xB2C8;&#xB2E4;). &#xC18C;&#xCF13; &#xC218;&#xAC00; &#xC801;&#xC744;&#xC218;&#xB85D; &#xC774;&#xBCA4;&#xD2B8; &#xB2E4;&#xC911;&#xD654; &#xB77C;&#xC774;&#xBE0C;&#xB7EC;&#xB9AC;&#xC5D0; &#xC758;&#xD55C; &#xD2B8;&#xB798;&#xD53D; &#xCC98;&#xB9AC;&#xAC00; &#xB354; &#xD6A8;&#xC728;&#xC801;&#xC785;&#xB2C8;&#xB2E4;. &#xB530;&#xB77C;&#xC11C; Google &#xCEE4;&#xB110; &#xD328;&#xCE58;&#xAC00; &#xC788;&#xB294; &#xC2DC;&#xC2A4;&#xD15C;&#xC740; &#xAC00;&#xC7A5;&#xC790;&#xB9AC;&#xAC00; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;(&#xC791;&#xC131; &#x200B;&#x200B;&#xB2F9;&#xC2DC; CentOS 6.5, ArchLinux &#xBC0F; Fedora).</p>
<p>&#xBAA8;&#xB4E0; &#xC720;&#xD615;&#xC758; &#xB2E4;&#xC591;&#xD55C; &#xB85C;&#xB4DC;&#xB97C; &#xD3EC;&#xD568;&#xD558;&#xB294; &#xC6B0;&#xB9AC;&#xC758; &#xACB0;&#xD569;&#xB41C; &#xD14C;&#xC2A4;&#xD2B8;&#xB294; &#xC77C;&#xBC18;&#xC801;&#xC73C;&#xB85C; FreeBSD 9.x&#xC640; DragonflyBSD&#xAC00; TURN &#xC11C;&#xBC84;&#xC6A9; &#xD50C;&#xB7AB;&#xD3FC;&#xC73C;&#xB85C;&#xC11C; &#xCD5C;&#xACE0;&#xC758; &#xC131;&#xB2A5;&#xC744; &#xBCF4;&#xC778;&#xB2E4;&#xB294; &#xAC83;&#xC744; &#xBCF4;&#xC5EC;&#xC90D;&#xB2C8;&#xB2E4;. &#xADF8; &#xC774;&#xC720;&#xB97C; &#xBD84;&#xC11D;&#xD558;&#xB294; &#xAC83;&#xC740; &#xB9E4;&#xC6B0; &#xC5B4;&#xB835;&#xC2B5;&#xB2C8;&#xB2E4;. &#xADF8;&#xB7EC;&#xB098; &#xB9C8;&#xC77C;&#xB9AC;&#xC9C0;&#xB294; &#xB2E4;&#xB97C; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<hr>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Centos8에 PHP 설치하기]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h1 id="centos8%EC%97%90-php-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0">Centos8&#xC5D0; PHP &#xC124;&#xCE58;&#xD558;&#xAE30;</h1>
<h2 id="php-74-%EC%84%A4%EC%B9%98">PHP 7.4 &#xC124;&#xCE58;</h2>
<h3 id="epel-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%B6%94%EA%B0%80">EPEL &#xC800;&#xC7A5;&#xC18C; &#xCD94;&#xAC00;</h3>
<pre><code class="language-bash">$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
</code></pre>
<h3 id="remi-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%B6%94%EA%B0%80">remi &#xC800;&#xC7A5;&#xC18C; &#xCD94;&#xAC00;</h3>
<p>WebTatic &#xC740; &#xC544;&#xC9C1; CentOS 8 &#xC744; &#xC9C0;&#xC6D0;&#xD558;&#xC9C0; &#xC54A;&#xC73C;&#xBBC0;</p>]]></description><link>http://suitmyself.com/centos8-php-seolcihagi/</link><guid isPermaLink="false">6474a7468d6496e5a2302842</guid><category><![CDATA[Server]]></category><dc:creator><![CDATA[benjamin kim]]></dc:creator><pubDate>Mon, 29 May 2023 13:24:09 GMT</pubDate><media:content url="http://suitmyself.com/content/images/2023/05/centos_php.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h1 id="centos8%EC%97%90-php-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0">Centos8&#xC5D0; PHP &#xC124;&#xCE58;&#xD558;&#xAE30;</h1>
<h2 id="php-74-%EC%84%A4%EC%B9%98">PHP 7.4 &#xC124;&#xCE58;</h2>
<h3 id="epel-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%B6%94%EA%B0%80">EPEL &#xC800;&#xC7A5;&#xC18C; &#xCD94;&#xAC00;</h3>
<pre><code class="language-bash">$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
</code></pre>
<h3 id="remi-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%B6%94%EA%B0%80">remi &#xC800;&#xC7A5;&#xC18C; &#xCD94;&#xAC00;</h3>
<img src="http://suitmyself.com/content/images/2023/05/centos_php.png" alt="Centos8&#xC5D0; PHP &#xC124;&#xCE58;&#xD558;&#xAE30;"><p>WebTatic &#xC740; &#xC544;&#xC9C1; CentOS 8 &#xC744; &#xC9C0;&#xC6D0;&#xD558;&#xC9C0; &#xC54A;&#xC73C;&#xBBC0;&#xB85C; remi &#xC800;&#xC7A5;&#xC18C;&#xB97C; &#xCD94;&#xAC00;&#xD569;&#xB2C8;&#xB2E4;</p>
<pre><code class="language-bash">$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
</code></pre>
<h3 id="module-%ED%99%9C%EC%84%B1%ED%99%94">module &#xD65C;&#xC131;&#xD654;</h3>
<p>dnf module &#xBA85;&#xB839;&#xC5B4;&#xB85C; &#xD604;&#xC7AC; &#xC0AC;&#xC6A9; &#xAC00;&#xB2A5;&#xD55C; php &#xC758; &#xBC84;&#xC804;&#xC744; &#xD655;&#xC778;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>dnf module</p>
<pre><code class="language-bash">$ sudo dnf module list php 

Last metadata expiration check: 0:01:22 ago on Tue 05 May 2020 08:44:37 AM EDT.
CentOS-8 - AppStream
Name                            Stream                              Profiles                                             Summary                                         
php                             7.2 [d]                             common [d], devel, minimal                           PHP scripting language                          
php                             7.3 [e]                             common, devel, minimal                               PHP scripting language                          

Remi&apos;s Modular repository for Enterprise Linux 8 - x86_64
Name                            Stream                              Profiles                                             Summary                                         
php                             remi-7.2                            common [d], devel, minimal                           PHP scripting language                          
php                             remi-7.3                            common [d], devel, minimal                           PHP scripting language                          
php                             remi-7.4                            common [d], devel, minimal                           PHP scripting language  
</code></pre>
<p>&#xC0C8;&#xB85C; &#xCD94;&#xAC00;&#xB41C; &#xC800;&#xC7A5;&#xC18C;&#xC778; remi &#xC5D0;&#xC11C; &#xC81C;&#xACF5;&#xD558;&#xB294; remi-7.4 &#xB97C; &#xC124;&#xCE58;&#xD558;&#xBA74; PHP 7.4 &#xB97C; &#xC0AC;&#xC6A9;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<h3 id="remi-74-%ED%99%9C%EC%84%B1%ED%99%94">remi-7.4 &#xD65C;&#xC131;&#xD654;</h3>
<p>&#xBA3C;&#xC800; module enable &#xBA85;&#xB839;&#xC5B4;&#xB85C; remi  &#xC800;&#xC7A5;&#xC18C;&#xB97C; &#xD65C;&#xC131;&#xD654;&#xD574; &#xC90D;&#xB2C8;&#xB2E4;.</p>
<pre><code class="language-bash">$ sudo  dnf module enable php:remi-7.4
</code></pre>
<p>&#xC774;&#xC81C; dnf install &#xBA85;&#xB839;&#xC73C;&#xB85C; php &#xB97C; &#xC124;&#xCE58;&#xD558;&#xBA74; &#xD65C;&#xC131;&#xD654;&#xB41C; remi-7.4 &#xC758; &#xBC84;&#xC804;&#xC774; &#xC124;&#xCE58;&#xB429;&#xB2C8;&#xB2E4;.</p>
<pre><code class="language-bash">$ sudo  dnf install php php-fpm php-intl php-mbstring php-pdo php-xml php-gd php-mysqlnd php-zip
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Centos8 "Failed to set locale"]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h3 id="failed-to-set-locale-%EC%97%90%EB%9F%AC-%EB%B0%9C%EC%83%9D%EC%8B%9C">&quot;Failed to set locale&quot; &#xC5D0;&#xB7EC; &#xBC1C;&#xC0DD;&#xC2DC;</h3>
<pre><code class="language-bash"># localectl set-locale LANG=ko_KR.UTF-8
or
# localectl set-locale LANG=en_KR.UTF-8
# yum search langpacks*
~~
</code></pre>
<p>Language Pack &#xC124;&#xCE58;</p>
<pre><code class="language-bash"># dnf install langpacks-en langpacks-kr  
# dnf install glibc-langpack-en glibc-langpack-ko  
or
# dnf install glibc-all-langpacks
</code></pre>
<pre><code class="language-bash"># dnf search glibc-langpack-en glibc-langpack-ko
</code></pre>
<!--kg-card-end: markdown-->]]></description><link>http://suitmyself.com/centos8/</link><guid isPermaLink="false">6474a5e18d6496e5a2302832</guid><category><![CDATA[Server]]></category><dc:creator><![CDATA[benjamin kim]]></dc:creator><pubDate>Mon, 29 May 2023 13:18:28 GMT</pubDate><media:content url="http://suitmyself.com/content/images/2023/05/CentOS-8-and-7-alternatives.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h3 id="failed-to-set-locale-%EC%97%90%EB%9F%AC-%EB%B0%9C%EC%83%9D%EC%8B%9C">&quot;Failed to set locale&quot; &#xC5D0;&#xB7EC; &#xBC1C;&#xC0DD;&#xC2DC;</h3>
<pre><code class="language-bash"># localectl set-locale LANG=ko_KR.UTF-8
or
# localectl set-locale LANG=en_KR.UTF-8
# yum search langpacks*
~~
</code></pre>
<img src="http://suitmyself.com/content/images/2023/05/CentOS-8-and-7-alternatives.jpg" alt="Centos8 &quot;Failed to set locale&quot;"><p>Language Pack &#xC124;&#xCE58;</p>
<pre><code class="language-bash"># dnf install langpacks-en langpacks-kr  
# dnf install glibc-langpack-en glibc-langpack-ko  
or
# dnf install glibc-all-langpacks
</code></pre>
<pre><code class="language-bash"># dnf search glibc-langpack-en glibc-langpack-ko
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[UBUNTU에 STUN/TURN서버 설치]]></title><description><![CDATA[<!--kg-card-begin: markdown--><ol>
<li>Coturn &#xD328;&#xD0A4;&#xC9C0; &#xC124;&#xCE58;</li>
</ol>
<pre><code class="language-bash">$ apt-get install coturn
</code></pre>
<ol start="2">
<li>Coturn &#xC11C;&#xBC84; &#xAD6C;&#xC131; &#xD30C;&#xC77C; &#xC900;&#xBE44;</li>
</ol>
<p>turnserver.conf &#xD30C;&#xC77C;&#xC744; &#xCC3E;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC77C;&#xBC18;&#xC801;&#xC73C;&#xB85C; &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC2B5;&#xB2C8;&#xB2E4;. /etc/turnserver.conf</p>
<p>/etc/turnserver.conf &#xD30C;&#xC77C;&#xC744; &#xC0AC;&#xC6A9;</p>]]></description><link>http://suitmyself.com/ubuntue-stun-turnseobeo-seolci/</link><guid isPermaLink="false">647484f28d6496e5a2302822</guid><category><![CDATA[WebRTC]]></category><category><![CDATA[ubuntu]]></category><category><![CDATA[Server]]></category><dc:creator><![CDATA[benjamin kim]]></dc:creator><pubDate>Mon, 29 May 2023 10:57:54 GMT</pubDate><media:content url="http://suitmyself.com/content/images/2023/05/stun-turn.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><ol>
<li>Coturn &#xD328;&#xD0A4;&#xC9C0; &#xC124;&#xCE58;</li>
</ol>
<pre><code class="language-bash">$ apt-get install coturn
</code></pre>
<ol start="2">
<li>Coturn &#xC11C;&#xBC84; &#xAD6C;&#xC131; &#xD30C;&#xC77C; &#xC900;&#xBE44;</li>
</ol>
<img src="http://suitmyself.com/content/images/2023/05/stun-turn.png" alt="UBUNTU&#xC5D0; STUN/TURN&#xC11C;&#xBC84; &#xC124;&#xCE58;"><p>turnserver.conf &#xD30C;&#xC77C;&#xC744; &#xCC3E;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC77C;&#xBC18;&#xC801;&#xC73C;&#xB85C; &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC2B5;&#xB2C8;&#xB2E4;. /etc/turnserver.conf</p>
<p>/etc/turnserver.conf &#xD30C;&#xC77C;&#xC744; &#xC0AC;&#xC6A9;&#xD560; &#xC218; &#xC5C6;&#xC9C0;&#xB9CC; &#xC608;&#xB97C; &#xB4E4;&#xC5B4; /usr/local/etc/turnserver.conf.default &#xD30C;&#xC77C;&#xC774; &#xC788;&#xC73C;&#xBA74; /usr/local/etc &#xC5D0; &#xBCF5;&#xC0AC;&#xD569;&#xB2C8;&#xB2E4;.</p>
<pre><code>$ cp -p usr / local / etc / turnserver.conf.default /usr/local/etc/turnserver.conf
</code></pre>
<p>&#xAE30;&#xBCF8;&#xC801;&#xC73C;&#xB85C; Coturn&#xC740; STUN/TURN &#xC11C;&#xBC84;&#xCC98;&#xB7FC; &#xC791;&#xB3D9;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>TURN &#xC11C;&#xBC84;&#xB85C; &#xC791;&#xB3D9;&#xD558;&#xAC8C; &#xD558;&#xB824;&#xBA74; /usr/local/etc/turnserver.conf&#xB9CC; &#xD3B8;&#xC9D1;&#xD558;&#xACE0; &#xC774; &#xD0A4;&#xC758; &#xC8FC;&#xC11D;&#xC744; &#xC81C;&#xAC70;&#xD558;&#xC2ED;&#xC2DC;&#xC624;.</p>
<p>no-stun</p>
<p>&#xC774; &#xC608;&#xB294; &#xAE30;&#xBCF8; &#xC124;&#xC815;&#xC744; &#xC0AC;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;. &#xC989;, Coturn &#xC11C;&#xBC84;&#xB294; STUN/TURN &#xC11C;&#xBC84;&#xB85C; &#xC791;&#xB3D9;&#xD569;&#xB2C8;&#xB2E4;.</p>
<ol start="3">
<li>Listening IP &#xC124;&#xC815;</li>
</ol>
<p>&#xAE30;&#xBCF8;&#xC801;&#xC73C;&#xB85C; Coturn &#xC11C;&#xBC84;&#xB294; &#xBAA8;&#xB4E0; &#xC2DC;&#xC2A4;&#xD15C; IP&#xC5D0;&#xC11C; &#xC218;&#xC2E0; &#xB300;&#xAE30;&#xD569;&#xB2C8;&#xB2E4;.<br>
(NoMachine &#xC11C;&#xBC84; &#xAD6C;&#xC131;&#xC5D0;&#xC11C; &#xC774;&#xB7EC;&#xD55C; IP&#xB97C; &#xC9C0;&#xC815;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xD0C0;&#xC0AC;&#xC194;&#xB8E8;&#xC158; &#xC774;&#xBBC0;&#xB85C; &#xC81C;&#xC678;)</p>
<p>Coturn &#xC11C;&#xBC84;&#xC758; IP&#xB97C; &#xC785;&#xB825;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>listening-ip = 10.x.x.x<br>
&#xC774; &#xC608;&#xC5D0;&#xC11C;&#xB294; &#xB2E4;&#xC74C;&#xC744; &#xC0AC;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;. Listening-ip=172.17.19.101</p>
<ul>
<li>relay-ip &#xC635;&#xC158;&#xC774; &#xC788;&#xB2E4;&#xBA74; &#xB9C8;&#xCC2C;&#xAC00;&#xC9C0;&#xB85C; &#xACF5;&#xC778;IP &#xB97C; &#xC785;&#xB825;&#xD574;&#xC90D;&#xB2C8;&#xB2E4;.</li>
</ul>
<p>relay-ip = 10.x.x.x</p>
<ol start="4">
<li>Coturn &#xC11C;&#xBC84;&#xC5D0; &#xC811;&#xC18D;&#xD558;&#xAE30; &#xC704;&#xD55C; &#xC0AC;&#xC6A9;&#xC790; &#xC774;&#xB984;&#xACFC; &#xBE44;&#xBC00;&#xBC88;&#xD638; &#xC124;&#xC815;</li>
</ol>
<p>&#xBCF8;&#xC801;&#xC73C;&#xB85C; Coturn &#xC11C;&#xBC84;&#xC5D0;&#xB294; &#xC778;&#xC99D; &#xC124;&#xC815;&#xC774; &#xC5C6;&#xC73C;&#xBBC0;&#xB85C; &#xC561;&#xC138;&#xC2A4;&#xD558;&#xAE30; &#xC704;&#xD574; &#xC0AC;&#xC6A9;&#xC790; &#xC774;&#xB984;&#xACFC; &#xC554;&#xD638;&#xB97C; &#xC124;&#xC815;&#xD558;&#xB294; &#xAC83;&#xC774; &#xC88B;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>/usr/local/etc/turnserver.conf&#xB97C; &#xD3B8;&#xC9D1;&#xD558;&#xACE0; &#xC774; &#xD0A4;&#xC5D0; &#xC0AC;&#xC6A9;&#xC790; &#xC774;&#xB984;&#xACFC; &#xC554;&#xD638;&#xB97C; &#xC124;&#xC815;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>&#xC0AC;&#xC6A9;&#xC790;=&#xC0AC;&#xC6A9;&#xC790; &#xC774;&#xB984;:&#xBE44;&#xBC00;&#xBC88;&#xD638;</p>
<p>&#xC774;&#xB7EC;&#xD55C; &#xC790;&#xACA9; &#xC99D;&#xBA85;&#xC740; (&#xB125;&#xC2A4;&#xD2B8;&#xD074;&#xB77C;&#xC6B0;&#xB4DC;&#xAC19;&#xC740; &#xC194;&#xB8E8;&#xC158;) &#xC11C;&#xBC84; &#xAD6C;&#xC131;&#xC5D0;&#xC11C; &#xC9C0;&#xC815;&#xD574;&#xC57C; &#xD569;&#xB2C8;&#xB2E4;.</p>
<p>&#xC774; &#xC608;&#xC5D0;&#xC11C;&#xB294; &#xB2E4;&#xC74C;&#xC744; &#xC124;&#xC815;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>[&#xD615;&#xC2DD;] user = &#xC0AC;&#xC6A9;&#xC790;&#xC774;&#xB984; : &#xC554;&#xD638;</p>
<p>user=testuser:usertest</p>
<ol start="5">
<li>Listening Port &#xC124;&#xC815;</li>
</ol>
<p>UDP &#xBC0F; TCP&#xC758; &#xAE30;&#xBCF8; &#xB9AC;&#xC2A4;&#xB108; &#xD3EC;&#xD2B8;&#xB294; &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>listening-port = 3478</p>
<p>tls-listening-port = 5349</p>
<p>&#xC774; &#xD3EC;&#xD2B8;&#xB294; STUN &#xBC0F; TURN &#xBAA8;&#xB450; &#xB3D9;&#xC77C;&#xD569;&#xB2C8;&#xB2E4;. TURN &#xC740; &#xC5F0;&#xACB0; &#xBC0F; &#xD2B8;&#xB798;&#xD53D; &#xB9B4;&#xB808;&#xC774;&#xC5D0; &#xAE30;&#xBCF8; &#xD3EC;&#xD2B8; &#xBC94;&#xC704; 49152-65535&#xB97C; &#xC0AC;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>&#xC5C4;&#xACA9;&#xD55C; NAT&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xAE30; &#xC704;&#xD574; &#xD3EC;&#xD2B8;&#xB97C; 80 &#xB610;&#xB294; 443&#xC73C;&#xB85C; &#xBCC0;&#xACBD;&#xD560; &#xC218; &#xC788;&#xC73C;&#xBBC0;&#xB85C; Coturn &#xC11C;&#xBC84;&#xC758; &#xACF5;&#xC2DD; &#xC124;&#xBA85;&#xC11C; ( <a href="https://github.com/coturn/coturn/wiki/turnserver?ref=suitmyself.com">https://github.com/coturn/coturn/wiki/turnserver</a>) &#xB97C; &#xCC38;&#xC870;&#xD558;&#xB294; &#xAC83;&#xC774; &#xC88B;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xC774; &#xC608;&#xC81C;&#xC5D0;&#xC11C;&#xB294; &#xAE30;&#xBCF8; &#xD3EC;&#xD2B8;&#xB97C; &#xC0AC;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;.</p>
<ol start="6">
<li>WebRTC&#xB97C; &#xC9C0;&#xC6D0; &#xC124;&#xC815;</li>
</ol>
<p>WebRTC&#xB97C; &#xC9C0;&#xC6D0;&#xD558;&#xB3C4;&#xB85D; &#xAD6C;&#xC131;&#xD558;&#xB824;&#xBA74; Coturn &#xC548;&#xB0B4;&#xC11C; &#xBC0F; &#xC0AC;&#xC6A9;&#xBC95;&#xC744; &#xCC38;&#xC870;&#xD558;&#xC2ED;&#xC2DC;&#xC624;.</p>
<p>&#xC774; &#xC608;&#xC81C;&#xC5D0;&#xC11C;&#xB294; /usr/local/etc/turnserver.conf &#xD30C;&#xC77C;&#xC744; &#xC5F4;&#xACE0; &#xC544;&#xB798; &#xB0B4;&#xC6A9; &#xC8FC;&#xC11D;&#xD574;&#xC81C;&#xB97C; &#xD569;&#xB2C8;&#xB2E4;.</p>
<p>verbose</p>
<p>fingerprint</p>
<p>lt-cred-mech</p>
<p>realm=sysdocu.com</p>
<ol start="7">
<li>Coturn &#xC11C;&#xBC84; &#xC2E4;&#xD589;</li>
</ol>
<h1 id="turnserver">turnserver &amp;</h1>
<p>&#xCC38;&#xACE0;&#xB85C; Coturn &#xB85C;&#xADF8; &#xB514;&#xB809;&#xD1A0;&#xB9AC;&#xB294; / var / log, / log /, / var / tmp, / tmp &#xB610;&#xB294; &#xD604;&#xC7AC; &#xB514;&#xB809;&#xD1A0;&#xB9AC;&#xC785;&#xB2C8;&#xB2E4;.</p>
<p>Coturn &#xC11C;&#xBC84;&#xAC00; &#xC774;&#xC81C; &#xAC00;&#xB3D9; &#xB420; &#xAC83;&#xC785;&#xB2C8;&#xB2E4;.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[UBUNTU 에 NGINX설치]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h2 id="ubuntu-%EC%97%90-nginx%EC%84%A4%EC%B9%98">UBUNTU &#xC5D0; NGINX&#xC124;&#xCE58;</h2>
<ol>
<li>&#xC11C;&#xBC84;&#xC758; &#xD328;&#xD0A4;&#xC9C0; &#xBAA9;&#xB85D; &#xC5C5;&#xB370;&#xC774;&#xD2B8;</li>
</ol>
<pre><code>sudo apt update
sudo apt upgrade
</code></pre>
<p>&#xBD88;&#xD544;&#xC694;&#xD55C; &#xD328;&#xD0A4;&#xC9C0; &#xC0AD;&#xC81C;</p>
<pre><code>sudo apt autoremove
</code></pre>
<ol start="2">
<li>Nginx &#xC124;&#xCE58;</li>
</ol>
<pre><code>sudo apt install nginx
</code></pre>
<p>&#xC81C;&#xAC70;&#xD560; &#xACBD;&#xC6B0;</p>
<pre><code>sudo apt remove</code></pre>]]></description><link>http://suitmyself.com/ubuntu-e-nginxseolci/</link><guid isPermaLink="false">6474839b8d6496e5a2302813</guid><category><![CDATA[Server]]></category><category><![CDATA[apache]]></category><category><![CDATA[ubuntu]]></category><dc:creator><![CDATA[benjamin kim]]></dc:creator><pubDate>Mon, 29 May 2023 10:52:02 GMT</pubDate><media:content url="http://suitmyself.com/content/images/2023/05/nginx-1.jpeg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="ubuntu-%EC%97%90-nginx%EC%84%A4%EC%B9%98">UBUNTU &#xC5D0; NGINX&#xC124;&#xCE58;</h2>
<ol>
<li>&#xC11C;&#xBC84;&#xC758; &#xD328;&#xD0A4;&#xC9C0; &#xBAA9;&#xB85D; &#xC5C5;&#xB370;&#xC774;&#xD2B8;</li>
</ol>
<pre><code>sudo apt update
sudo apt upgrade
</code></pre>
<img src="http://suitmyself.com/content/images/2023/05/nginx-1.jpeg" alt="UBUNTU &#xC5D0; NGINX&#xC124;&#xCE58;"><p>&#xBD88;&#xD544;&#xC694;&#xD55C; &#xD328;&#xD0A4;&#xC9C0; &#xC0AD;&#xC81C;</p>
<pre><code>sudo apt autoremove
</code></pre>
<ol start="2">
<li>Nginx &#xC124;&#xCE58;</li>
</ol>
<pre><code>sudo apt install nginx
</code></pre>
<p>&#xC81C;&#xAC70;&#xD560; &#xACBD;&#xC6B0;</p>
<pre><code>sudo apt remove nginx 
</code></pre>
<ol start="3">
<li>&#xC2E4;&#xD589;</li>
</ol>
<pre><code>sudo service start nginx
sudo service status nginx
systemctl status nginx.service
</code></pre>
<ol start="4">
<li>Nginx Version &#xD655;&#xC778;</li>
</ol>
<pre><code>sudo dpkg -l nginx
nginx -v
</code></pre>
<ol start="5">
<li>Nginx &#xACBD;&#xB85C;<br>
apt-get&#xC744; &#xC774;&#xC6A9;&#xD558;&#xC5EC; &#xD328;&#xD0A4;&#xC9C0; &#xC124;&#xCE58; &#xBC29;&#xBC95;&#xC744; &#xC774;&#xC6A9;&#xD558;&#xBA74; &#xAE30;&#xBCF8; &#xD3F4;&#xB354;&#xB294; &quot;/etc/nginx/&quot;</li>
</ol>
<pre><code>sudo find / -name nginx.conf
</code></pre>
<p>nginx.conf: nginx&#xAC00; &#xB3D9;&#xC791;&#xD574;&#xC57C; &#xD560; &#xBC29;&#xC2DD;&#xC744; &#xC124;&#xC815; &#xAC12;&#xC744; &#xD1B5;&#xD574; &#xC9C0;&#xC815;, root &#xAD8C;&#xD55C;&#xB9CC; &#xC218;&#xC815;&#xC774; &#xAC00;&#xB2A5;&#xD558;&#xB2E4;</p>
<pre><code>sudo vim nginx.conf
</code></pre>
<ol start="6">
<li>nginx &#xAD6C;&#xB3D9; &#xD14C;&#xC2A4;&#xD2B8;</li>
</ol>
<pre><code>netstat -lntp
</code></pre>
<p>80&#xBC88; &#xD3EC;&#xD2B8;&#xAC00; &#xB9AC;&#xC2A4;&#xB2DD;&#xB418;&#xACE0; &#xC788;&#xC73C;&#xBA74; &#xC2E4;&#xD589;&#xB41C; &#xC0C1;&#xD0DC;&#xC774;&#xB2E4;.</p>
<p>&#xB9CC;&#xC57D; netstat&#xC774; &#xC5C6;&#xB2E4;&#xBA74;</p>
<pre><code>apt install net-tools
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[CentOS7 에 Nginx설치]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h1 id="centos7-%EC%97%90-nginx-%EC%84%A4%EC%B9%98">CentOS7 &#xC5D0; NginX &#xC124;&#xCE58;</h1>
<hr>
<h3 id="1-yum-%EC%99%B8%EB%B6%80-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%B6%94%EA%B0%80">1. yum &#xC678;&#xBD80; &#xC800;&#xC7A5;&#xC18C; &#xCD94;&#xAC00;</h3>
<p>yum &#xC800;&#xC7A5;&#xC18C;&#xC5D0; nginx&#xAC00; &#xC5C6;&#xAE30; &#xB54C;&#xBB38;&#xC5D0; &#xAD00;&#xB828; &#xC800;&#xC7A5;&#xC18C;&#xB97C; &#xCD94;&#xAC00;&#xD55C;&#xB2E4;.</p>
<pre><code class="language-bash">[root@k5w1hcd ~]# cd etc/yum.repos.d/  
[root@k5w1hcd ~ yum.repos.d]# ls CentOS-Base.</code></pre>]]></description><link>http://suitmyself.com/nginxseolci/</link><guid isPermaLink="false">647470f88d6496e5a23027ff</guid><category><![CDATA[Server]]></category><dc:creator><![CDATA[benjamin kim]]></dc:creator><pubDate>Mon, 29 May 2023 09:34:48 GMT</pubDate><media:content url="http://suitmyself.com/content/images/2023/05/nginx.jpeg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h1 id="centos7-%EC%97%90-nginx-%EC%84%A4%EC%B9%98">CentOS7 &#xC5D0; NginX &#xC124;&#xCE58;</h1>
<hr>
<h3 id="1-yum-%EC%99%B8%EB%B6%80-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%B6%94%EA%B0%80">1. yum &#xC678;&#xBD80; &#xC800;&#xC7A5;&#xC18C; &#xCD94;&#xAC00;</h3>
<img src="http://suitmyself.com/content/images/2023/05/nginx.jpeg" alt="CentOS7 &#xC5D0; Nginx&#xC124;&#xCE58;"><p>yum &#xC800;&#xC7A5;&#xC18C;&#xC5D0; nginx&#xAC00; &#xC5C6;&#xAE30; &#xB54C;&#xBB38;&#xC5D0; &#xAD00;&#xB828; &#xC800;&#xC7A5;&#xC18C;&#xB97C; &#xCD94;&#xAC00;&#xD55C;&#xB2E4;.</p>
<pre><code class="language-bash">[root@k5w1hcd ~]# cd etc/yum.repos.d/  
[root@k5w1hcd ~ yum.repos.d]# ls CentOS-Base.repo CentOS-CR.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Sources.repo CentOS-Vault.repo CentOS-fasttrack.repo microsoft-prod.repo  
[root@k5w1hcd ~ yum.repos.d]# vi nginx.repo  
[root@k5w1hcd ~ yum.repos.d]#
</code></pre>
<p>/etc/yum.repos.d/ &#xACBD;&#xB85C;&#xC5D0; nginx.repo &#xD30C;&#xC77C;&#xC744; &#xCD94;&#xAC00;&#xD558;&#xACE0; &#xC544;&#xB798;&#xC640; &#xAC19;&#xC774; &#xC791;&#xC131;&#xD574;&#xC900;&#xB2E4;&#xB2E4;.</p>
<pre><code class="language-bash">[nginx]  
name=nginx repo  
baseurl=http://nginx.org/packages/centos/7/$basearch/  
gpgcheck=0  
enabled=1
</code></pre>
<p>&#xC704; &#xB0B4;&#xC6A9;&#xC740; &#xACF5;&#xC2DD; &#xC0AC;&#xC774;&#xD2B8;&#xC5D0; &#xC788;&#xC73C;&#xBA70;, OS&#xAC00; &#xB2E4;&#xB974;&#xB2E4;&#xBA74; &#xD574;&#xB2F9; OS&#xC5D0; &#xB9DE;&#xAC8C; &#xC218;&#xC815;&#xD574; &#xC8FC;&#xBA74; &#xB41C;&#xB2E4;.</p>
<h3 id="2-yum-install">2. yum install</h3>
<p>yum install &#xBA85;&#xB839;&#xC5B4;&#xB97C; &#xC774;&#xC6A9;&#xD574;&#xC11C; &#xC124;&#xCE58;&#xD55C;&#xB2E4;.</p>
<pre><code class="language-bash">[root@k5w1hcd ~]# yum install -y nginx
</code></pre>
<h3 id="3-%EB%B0%A9%ED%99%94%EB%B2%BD-%ED%8F%AC%ED%8A%B8-%EA%B0%9C%EB%B0%A9">3. &#xBC29;&#xD654;&#xBCBD; &#xD3EC;&#xD2B8; &#xAC1C;&#xBC29;</h3>
<pre><code class="language-bash">[root@k5w1hcd ~]#  
[root@k5w1hcd ~]#  
[root@k5w1hcd ~]# firewall-cmd --permanent --zone=public --add-port=8089/tcp  
success  
[root@k5w1hcd ~]# firewall-cmd --reload  
success  
[root@k5w1hcd ~]# firewall-cmd --list-ports  
21/tcp 5000/tcp 5001/tcp 8089/tcp  
[root@k5w1hcd ~]#  
</code></pre>
<h3 id="4-nginx-%ED%8F%AC%ED%8A%B8-%EC%84%A4%EC%A0%95">4. Nginx &#xD3EC;&#xD2B8; &#xC124;&#xC815;</h3>
<pre><code class="language-bash">[root@k5w1hcd ~]# vi /etc/nginx/conf.d/default.conf  

server { 
    listen 8080;  
    server_name localhost;  
    #charset koi8-r;  
    #access_log /var/log/nginx/host.access.log main;  
      
    location / {  
        root /usr/share/nginx/html; 
        index index.html index.htm;  
    }  
      
    #error_page 404 /404.html;  
            
    # redirect server error pages to the static page /50x.html  
    #  
    error_page 500 502 503 504 /50x.html;  
    location = /50x.html {  
        root /usr/share/nginx/html;  
    } 
      
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80  
    #  
    #location ~ \.php$ {  
    # proxy_pass http://127.0.0.1; 
    #}  
      
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000  
    #  
    #location ~ \.php$ {  
    # root html;  
    # fastcgi_pass 127.0.0.1:9000;  
    # fastcgi_index index.php;  
    # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;  
    # include fastcgi_params;  
    #}  
      
    # deny access to .htaccess files, if Apache&apos;s document root  
    # concurs with nginx&apos;s one  
    #  
    #location ~ /\.ht {  
    # deny all;  
    #} 
}
</code></pre>
<h3 id="5-nginx-%EB%8D%B0%EB%AA%AC-%EC%8B%A4%ED%96%89">5. Nginx &#xB370;&#xBAAC; &#xC2E4;&#xD589;</h3>
<pre><code class="language-bash">[root@k5w1hcd ~]# systemctl start nginx  
[root@k5w1hcd ~]# systemctl enable nginx  
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Composer 설치]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h1 id="composer-dependency-manager-for-php">Composer : Dependency Manager for PHP</h1>
<p><a href="https:%5Cphoenixnap.com%5Ckb%5Chow-to-install-and-use-php-composer-on-centos-7">How To Install and Get Started With Composer on CentOS 7</a></p>
<p>&#xC704; &#xD398;&#xC774;&#xC9C0;&#xC758; &#xB0B4;&#xC6A9;&#xC744; &#xC815;&#xB9AC;&#xD574;&#xB454; &#xB0B4;&#xC6A9;&#xC785;&#xB2C8;&#xB2E4;.</p>
<h2 id="centos7-%EC%97%90-composer%EB%A5%BC-%EC%84%A4%EC%B9%98">CentOs7 &#xC5D0; Composer&#xB97C; &#xC124;&#xCE58;</h2>
<p><strong>&#xC18C;&#xAC1C;</strong></p>
<p><strong>Composer</strong>&#xB294; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC758; &#xC885;&#xC18D;</p>]]></description><link>http://suitmyself.com/composer-seolci/</link><guid isPermaLink="false">6474627b8d6496e5a23027ba</guid><category><![CDATA[Server]]></category><dc:creator><![CDATA[benjamin kim]]></dc:creator><pubDate>Mon, 29 May 2023 08:54:04 GMT</pubDate><media:content url="http://suitmyself.com/content/images/2023/05/composer-logo.webp" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h1 id="composer-dependency-manager-for-php">Composer : Dependency Manager for PHP</h1>
<img src="http://suitmyself.com/content/images/2023/05/composer-logo.webp" alt="Composer &#xC124;&#xCE58;"><p><a href="https:%5Cphoenixnap.com%5Ckb%5Chow-to-install-and-use-php-composer-on-centos-7">How To Install and Get Started With Composer on CentOS 7</a></p>
<p>&#xC704; &#xD398;&#xC774;&#xC9C0;&#xC758; &#xB0B4;&#xC6A9;&#xC744; &#xC815;&#xB9AC;&#xD574;&#xB454; &#xB0B4;&#xC6A9;&#xC785;&#xB2C8;&#xB2E4;.</p>
<h2 id="centos7-%EC%97%90-composer%EB%A5%BC-%EC%84%A4%EC%B9%98">CentOs7 &#xC5D0; Composer&#xB97C; &#xC124;&#xCE58;</h2>
<p><strong>&#xC18C;&#xAC1C;</strong></p>
<p><strong>Composer</strong>&#xB294; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC758; &#xC885;&#xC18D;&#xC131;&#xC744; &#xCD94;&#xC801;&#xD558;&#xB294; &#xC751;&#xC6A9; &#xD504;&#xB85C;&#xADF8;&#xB7A8;&#xC774;&#xB2E4;. &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xAC00; &#xC758;&#xC874;&#xD558;&#xB294; &#xBAA8;&#xB4E0; &#xD544;&#xC218; PHP &#xD328;&#xD0A4;&#xC9C0;&#xB97C; &#xAC00;&#xC838; &#xC640;&#xC11C; &#xAD00;&#xB9AC;&#xD55C;&#xB2E4;.</p>
<p>&#xC2DC;&#xC2A4;&#xD15C; &#xD328;&#xD0A4;&#xC9C0; &#xAD00;&#xB9AC;&#xC790; (&#xC608; :<strong>apt</strong>&#xA0;&#xB610;&#xB294;&#xA0;<strong>yum</strong>)&#xB97C; &#xB300;&#xCCB4;&#xD558;&#xB294; &#xB300;&#xC2E0;Composer&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xBA74; &#xD2B9;&#xC815; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC5D0; &#xB300;&#xD55C; &#xB77C;&#xC774;&#xBE0C;&#xB7EC;&#xB9AC; &#xC138;&#xD2B8;&#xB97C; &#xC9C0;&#xC815;&#xD560; &#xC218; &#xC788;&#xB2E4;. &#xB77C;&#xC774;&#xBE0C;&#xB7EC;&#xB9AC;&#xAC00; &#xC124;&#xC815;&#xB418;&#xBA74; Composer&#xB294; &#xBC84;&#xC804;&#xACFC; &#xC885;&#xC18D;&#xC131;&#xC744; &#xC2DD;&#xBCC4;&#xD558;&#xACE0; &#xD574;&#xB2F9; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC5D0; &#xC124;&#xCE58;&#xD55C;&#xB2E4;.</p>
<p><strong>&#xC774; &#xAE30;&#xC0AC;&#xC5D0;&#xC11C;&#xB294; CentOS 7&#xC5D0; Composer&#xB97C; &#xC124;&#xCE58;&#xD558;&#xACE0; &#xC0AC;&#xC6A9;&#xD558;&#xB294; &#xBC29;&#xBC95;&#xC744; &#xC54C;&#xC544; &#xBCF8;&#xB2E4;</strong></p>
<p>&#xC804;&#xC81C; &#xC870;&#xAC74;</p>
<ul>
<li>CentOS Linux &#xC2DC;&#xC2A4;&#xD15C;</li>
<li>PHP 5.3.2 &#xC774;&#xC0C1; &#xC124;&#xCE58;</li>
<li><strong>sudo</strong>&#xA0;&#xAD8C;&#xD55C;&#xC774;&#xC788;&#xB294; &#xC0AC;&#xC6A9;&#xC790; &#xACC4;&#xC815;</li>
<li>&#xBA85;&#xB839; &#xC904; \ &#xD130;&#xBBF8;&#xB110; &#xCC3D;&#xC5D0; &#xC561;&#xC138;&#xC2A4; (<strong>Ctrl</strong>+<strong>Alt</strong>+<strong>F2</strong>)</li>
</ul>
<h2 id="centos-7%EC%97%90-php-composer%EB%A5%BC-%EC%84%A4%EC%B9%98%ED%95%98%EB%8A%94-%EB%8B%A8%EA%B3%84">CentOS 7&#xC5D0; PHP Composer&#xB97C; &#xC124;&#xCE58;&#xD558;&#xB294; &#xB2E8;&#xACC4;</h2>
<h3 id="1-%EB%8B%A8%EA%B3%84-%EB%A1%9C%EC%BB%AC-%EB%A6%AC%ED%8F%AC%EC%A7%80%ED%86%A0%EB%A6%AC-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8">1 &#xB2E8;&#xACC4; : &#xB85C;&#xCEEC; &#xB9AC;&#xD3EC;&#xC9C0;&#xD1A0;&#xB9AC; &#xC5C5;&#xB370;&#xC774;&#xD2B8;</h3>
<p>&#xC2DC;&#xC2A4;&#xD15C;&#xC5D0; &#xBB34;&#xC5C7;&#xC774;&#xB4E0; &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC;&#xD558;&#xC5EC; &#xC124;&#xCE58;&#xD558;&#xAE30; &#xC804;&#xC5D0; &#xD56D;&#xC0C1; &#xB85C;&#xCEEC; &#xC800;&#xC7A5;&#xC18C;&#xB97C; &#xC5C5;&#xB370;&#xC774;&#xD2B8;&#xD55C;&#xB2E4;.</p>
<pre><code class="language-bash">    sudo yum -y update
</code></pre>
<h3 id="2-%EB%8B%A8%EA%B3%84-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EC%A2%85%EC%86%8D%EC%84%B1-%EC%84%A4%EC%B9%98">2 &#xB2E8;&#xACC4; : &#xC18C;&#xD504;&#xD2B8;&#xC6E8;&#xC5B4; &#xC885;&#xC18D;&#xC131; &#xC124;&#xCE58;</h3>
<p>&#xC9C0;&#xC6D0; &#xC18C;&#xD504;&#xD2B8;&#xC6E8;&#xC5B4; &#xC124;&#xCE58;&#xBD80;&#xD130; &#xC2DC;&#xC791;&#xD558;&#xC2ED;&#xC2DC;&#xC624;.&#xD130;&#xBBF8;&#xB110;&#xC5D0; &#xB2E4;&#xC74C; &#xBA85;&#xB839;&#xC744; &#xC785;&#xB825;&#xD55C;&#xB2E4;.</p>
<pre><code class="language-bash">    yum install php-cli php-zip wget unzip
</code></pre>
<p>&#xD544;&#xC694;&#xD55C; &#xC885;&#xC18D;&#xC131;&#xC774; &#xC774;&#xBBF8;&#xC788;&#xB294; &#xACBD;&#xC6B0; &#xD328;&#xD0A4;&#xC9C0;&#xC758; &#xCD5C;&#xC2E0; &#xBC84;&#xC804;&#xC778;&#xC9C0; &#xD655;&#xC778;&#xD55C;&#xB2E4;.</p>
<p><img src="http://suitmyself.com/content/images/2023/05/install-supporting-software-for-composer-for-centos7.jpg" alt="Composer &#xC124;&#xCE58;" loading="lazy"></p>
<h3 id="3-%EB%8B%A8%EA%B3%84-composer-%EC%84%A4%EC%B9%98-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C">3 &#xB2E8;&#xACC4; : Composer &#xC124;&#xCE58; &#xD504;&#xB85C;&#xADF8;&#xB7A8; &#xC2A4;&#xD06C;&#xB9BD;&#xD2B8; &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC;</h3>
<p>&#xB2E4;&#xC74C;&#xC73C;&#xB85C; &#xC124;&#xCE58; &#xC2A4;&#xD06C;&#xB9BD;&#xD2B8;&#xB97C; &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC;&#xD574;&#xC57C;&#xD569;&#xB2C8;&#xB2E4;.&#xB2E4;&#xC74C; &#xBA85;&#xB839;&#xC740; &#xD604;&#xC7AC;&#xC788;&#xB294; &#xB514;&#xB809;&#xD1A0;&#xB9AC;&#xC5D0; &#xD30C;&#xC77C;&#xC744; &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC;&#xD55C;&#xB2E4;.</p>
<pre><code class="language-bash">    php -r &quot;copy(&apos;https:\\getcomposer.org\installer&apos;, &apos;composer-setup.php&apos;);&quot;
</code></pre>
<p><img src="http://suitmyself.com/content/images/2023/05/donwload-composer-installer.jpg" alt="Composer &#xC124;&#xCE58;" loading="lazy"></p>
<h3 id="4-%EB%8B%A8%EA%B3%84-%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C-%EB%AC%B4%EA%B2%B0%EC%84%B1-%ED%99%95%EC%9D%B8">4 &#xB2E8;&#xACC4; : &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC; &#xBB34;&#xACB0;&#xC131; &#xD655;&#xC778;</h3>
<p>&#xC124;&#xCE58; &#xC2A4;&#xD06C;&#xB9BD;&#xD2B8;&#xAC00; &#xC788;&#xC73C;&#xBA74; &#xBB34;&#xACB0;&#xC131;&#xC744; &#xD655;&#xC778;&#xD574;&#xC57C;&#xD55C;&#xB2E4;.</p>
<p>&#xC774;&#xB807;&#xAC8C;&#xD558;&#xB824;&#xBA74; SHA-384 &#xD574;&#xC2DC;&#xAC00; &#xACF5;&#xC2DD;<a href="https:%5Ccomposer.github.io%5Cpubkeys.html">Composer &#xACF5;&#xAC1C; &#xD0A4;</a>&#xD398;&#xC774;&#xC9C0;&#xC5D0;&#xC788;&#xB294; &#xC124;&#xCE58;&#xC790; &#xC11C;&#xBA85; (SHA-384)&#xACFC; &#xC77C;&#xCE58;&#xD558;&#xB294;&#xC9C0; &#xD655;&#xC778;&#xD574;&#xC57C;&#xD55C;&#xB2E4;.</p>
<p>Composer&#xC758; Github &#xD398;&#xC774;&#xC9C0;&#xC5D0;&#xC11C; HASH &#xBCC0;&#xC218;&#xC758; &#xC2B9;&#xC778; &#xB41C; &#xC11C;&#xBA85;&#xC744; &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC;&#xD55C;&#xB2E4;.</p>
<pre><code class="language-bash">    HASH=&quot;$(wget -q -O - https:\\composer.github.io\installer.sig)&quot;
</code></pre>
<p>&#xADF8;&#xB7F0; &#xB2E4;&#xC74C; &#xB2E4;&#xC74C; &#xC2A4;&#xD06C;&#xB9BD;&#xD2B8;&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; &#xACF5;&#xC2DD; &#xD574;&#xC2DC;&#xB97C; &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC; &#xD55C; &#xD574;&#xC2DC;&#xC640; &#xBE44;&#xAD50;&#xD55C;&#xB2E4;.</p>
<pre><code class="language-bash">    php -r &quot;if (hash_file(&apos;SHA384&apos;, &apos;composer-setup.php&apos;) === &apos;$HASH&apos;) { echo &apos;Installer verified&apos;; } else { echo &apos;Installer corrupt&apos;; unlink(&apos;composer-setup.php&apos;); } echo PHP_EOL;&quot;
</code></pre>
<p>&#xB450; &#xC11C;&#xBA85;&#xC774; &#xC77C;&#xCE58;&#xD558;&#xBA74; &#xCD9C;&#xB825;&#xC5D0;<strong>&#xC124;&#xCE58; &#xD504;&#xB85C;&#xADF8;&#xB7A8; &#xD655;&#xC778;</strong>&#xBA54;&#xC2DC;&#xC9C0;&#xAC00; &#xD45C;&#xC2DC;&#xB429;&#xB2C8;&#xB2E4;.</p>
<p>&#xBC18;&#xBA74;&#xC5D0; &#xC2A4;&#xD06C;&#xB9BD;&#xD2B8;&#xAC00; &#xBA87; &#xAC00;&#xC9C0; &#xCC28;&#xC774;&#xC810;&#xC744; &#xAC10;&#xC9C0;&#xD558;&#xBA74; &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC774; &#xD45C;&#xC2DC;&#xB429;&#xB2C8;&#xB2E4;.<strong>&#xC124;&#xCE58; &#xD504;&#xB85C;&#xADF8;&#xB7A8; &#xC190;&#xC0C1;</strong>.&#xC774; &#xBB38;&#xC81C;&#xB97C; &#xD574;&#xACB0;&#xD558;&#xB824;&#xBA74; Composer &#xC124;&#xCE58; &#xD504;&#xB85C;&#xADF8;&#xB7A8;&#xC744; &#xB2E4;&#xC2DC; &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC;&#xD574;&#xC57C;&#xD55C;&#xB2E4;.</p>
<h3 id="5-%EB%8B%A8%EA%B3%84-composer-%EC%84%A4%EC%B9%98">5 &#xB2E8;&#xACC4; : Composer &#xC124;&#xCE58;</h3>
<p>&#xD30C;&#xC77C;&#xC758; &#xBB34;&#xACB0;&#xC131;&#xC744; &#xD655;&#xC778;&#xD55C; &#xD6C4; Composer &#xC124;&#xCE58;&#xB85C; &#xC774;&#xB3D9;&#xD560; &#xC218; &#xC788;&#xB2E4;.</p>
<p>&#xC804;&#xCCB4; &#xC2DC;&#xC2A4;&#xD15C;&#xC5D0;&#xC11C; &#xC561;&#xC138;&#xC2A4; &#xD560; &#xC218;&#xC788;&#xB294; &#xBA85;&#xB839;&#xC73C;&#xB85C;**\ usr \ local \ bin**&#xB514;&#xB809;&#xD1A0;&#xB9AC;&#xC5D0;Composer&#xB97C; &#xC124;&#xCE58;&#xD558;&#xB824;&#xACE0; &#xD55C;&#xB2E4;.</p>
<p>1. composer&#xB97C; &#xC124;&#xCE58;&#xD558;&#xB824;&#xBA74; &#xB2E4;&#xC74C; &#xBA85;&#xB839;&#xC744; &#xC0AC;&#xC6A9;&#xD55C;&#xB2E4;..</p>
<pre><code class="language-bash">    php composer-setup.php --install-dir=\usr\local\bin --filename=composer
</code></pre>
<p>&#xC124;&#xCE58;&#xAC00; &#xCD08;&#xAE30;&#xD654;&#xB418;&#xBA74; &#xB2E4;&#xC74C; &#xBA54;&#xC2DC;&#xC9C0;&#xAC00; &#xB098;&#xD0C0;&#xB09C;&#xB2E4;.</p>
<pre><code class="language-bash">    All settings correct for using Composer
    Downloading...
    
    Composer (version 1.6.5) successfully installed to: \usr\local\bin\composer
    Use it: php \usr\local\bin\composer
</code></pre>
<p>2. &#xC124;&#xCE58; &#xD504;&#xB85C;&#xADF8;&#xB7A8;&#xC774; &#xD504;&#xB85C;&#xC138;&#xC2A4;&#xB97C; &#xC644;&#xB8CC;&#xD558;&#xBA74; &#xC62C;&#xBC14;&#xB974;&#xAC8C; &#xC2E4;&#xD589;&#xB418;&#xACE0; &#xC788;&#xB294;&#xC9C0; &#xD655;&#xC778;&#xD55C;&#xB2E4;.</p>
<pre><code class="language-bash">    composer

* &#xC2DC;&#xC2A4;&#xD15C;&#xC740; &#xAD6C;&#xBB38; &#xBC0F; &#xC0AC;&#xC6A9; &#xAC00;&#xB2A5;&#xD55C; &#xC635;&#xC158;&#xACFC; &#xD568;&#xAED8; &#xC2E4;&#xD589;&#xC911;&#xC778; &#xBC84;&#xC804;&#xC744; &#xD45C;&#xC2DC;&#xD574;&#xC57C;&#xD55C;&#xB2E4;.
       ______
      \ ____\___  ____ ___  ____  ____  ________  _____
     \ \   \ __ \\ __ `__ \\ __ \\ __ \\ ___\ _ \\ ___\
    \ \___\ \_\ \ \ \ \ \ \ \_\ \ \_\ (__  )  __\ \
    \____\\____\_\ \_\ \_\ .___\\____\____\\___\_\
                        \_\
    Composer version 1.9.0 2019-08-28 11:45:23
    
    Usage:
      command [options] [arguments]
    
    Options:
      -h, --help                     Display this help message
      -q, --quiet                    Do not output any message
      -V, --version                  Display this application version
          --ansi                     Force ANSI output
          --no-ansi                  Disable ANSI output
      -n, --no-interaction           Do not ask any interactive question
          --profile                  Display timing and memory usage information
          --no-plugins               Whether to disable plugins.
</code></pre>
<p>3. &#xB9C8;&#xC9C0;&#xB9C9;&#xC73C;&#xB85C; &#xC124;&#xCE58; &#xD504;&#xB85C;&#xADF8;&#xB7A8;&#xC744; &#xC0AD;&#xC81C;&#xD55C;&#xB2E4;.</p>
<pre><code class="language-bash">    php &#x2013;r &#x201C;unlink(&#x2018;composer-setup.php&#x2019;);&#x201D;
</code></pre>
<hr>
<h2 id="%EA%B8%B0%EB%B3%B8-composer-%EC%82%AC%EC%9A%A9%EB%B2%95">&#xAE30;&#xBCF8; Composer &#xC0AC;&#xC6A9;&#xBC95;</h2>
<p>Composer&#xB294; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xBCC4;&#xB85C; &#xC885;&#xC18D;&#xC131;&#xC744; &#xCD94;&#xC801;&#xD558;&#xC5EC; &#xB2E4;&#xB978; &#xC0AC;&#xC6A9;&#xC790;&#xAC00; &#xB3D9;&#xC77C;&#xD55C; &#xD658;&#xACBD;&#xC744; &#xC27D;&#xAC8C; &#xB9CC;&#xB4E4; &#xC218; &#xC788;&#xB3C4;&#xB85D; &#xB3C4;&#xC640;&#xC90D;&#xB2C8;&#xB2E4;.<strong>composer.json</strong>&#xD30C;&#xC77C;&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; &#xD544;&#xC218; &#xC18C;&#xD504;&#xD2B8;&#xC6E8;&#xC5B4; &#xBC0F; &#xD5C8;&#xC6A9; &#xB41C; &#xBC84;&#xC804;&#xC744; &#xCD94;&#xC801;&#xD55C;&#xB2E4;.</p>
<p>&#xB610;&#xD55C; &#xB204;&#xAD70;&#xAC00; &#xBA85;&#xB839;&#xC744;&#xC0AC;&#xC6A9;&#xD558;&#xC5EC; &#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xC0DD;&#xC131;&#xB418;&#xB294;<strong>composer.lock</strong>&#xD30C;&#xC77C;&#xC744;&#xD1B5;&#xD574; &#xB514;&#xB809;&#xD1A0;&#xB9AC;&#xB97C; &#xBCF5;&#xC0AC;&#xD558; &#xB294; &#xACBD;&#xC6B0; &#xC77C;&#xAD00;&#xC131;&#xC744; &#xC720;&#xC9C0;&#xD55C;&#xB2E4;<code>**require**</code>.</p>
<p>&#xC774;&#xC81C;<strong>&#xC0C8; PHP &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xB97C; &#xC2DC;&#xC791;&#xD560; &#xB54C; Composer&#xB97C; &#xD65C;&#xC6A9;&#xD558;&#xB294; &#xBC29;&#xBC95;&#xC744;</strong>&#xC0B4;&#xD3B4; &#xBCF8;&#xB2E4;**.**</p>
<p>1. &#xD130;&#xBBF8;&#xB110;&#xC744; &#xC5F4;&#xACE0; &#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xC124;&#xBA85;, &#xC885;&#xC18D;&#xC131; &#xBC0F; &#xAE30;&#xD0C0; &#xCD94;&#xAC00; &#xC815;&#xBCF4; (<strong>composer.json</strong>&#xD30C;&#xC77C;)&#xAC00;&#xC788;&#xB294; &#xD30C;&#xC77C;&#xC5D0; &#xB300;&#xD55C; &#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xB8E8;&#xD2B8; &#xB514;&#xB809;&#xD1A0;&#xB9AC;&#xB97C; &#xB9CC;&#xB4E0;&#xB2E4;.</p>
<pre><code class="language-bash">    mkdir c_sample
</code></pre>
<p>2. &#xADF8;&#xB7F0; &#xB2E4;&#xC74C; &#xC0C8; &#xB514;&#xB809;&#xD130;&#xB9AC;&#xB85C; &#xC774;&#xB3D9;&#xD55C;&#xB2E4;.</p>
<pre><code class="language-bash">    cd c_sample
</code></pre>
<p>3. &#xB2E4;&#xC74C; &#xB2E8;&#xACC4;&#xB294; &#xD328;&#xD0A4;&#xC9C0;&#xB97C; &#xB85C;&#xB4DC;&#xD55C;&#xB2E4;.&#xC6F9; &#xC0AC;&#xC774;&#xD2B8;**[packagist.org](https:\packagist.org)**&#xC5D0;&#xB294; &#xC120;&#xD0DD;&#xD560; &#xC218;&#xC788;&#xB294; &#xB2E4;&#xC591;&#xD55C; PHP &#xD328;&#xD0A4;&#xC9C0;&#xAC00; &#xC788;&#xB2E4;.</p>
<p>&#xC774; &#xC608;&#xC5D0;&#xC11C;&#xB294;&#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xC6A9;<strong>monolog \ monolog</strong>&#xD328;&#xD0A4;&#xC9C0;&#xB97C;&#xB2E4;&#xC6B4;&#xB85C;&#xB4DC;&#xD558;&#xC5EC; &#xC0AC;&#xC6A9;&#xD55C;&#xB2E4;. &#xC2AC;&#xB798;&#xC2DC; &#xB4A4;&#xC758; &#xC815;&#xBCF4;&#xB294;<strong>&#xD328;&#xD0A4;&#xC9C0; &#xC774;&#xB984;</strong>&#xC774;&#xACE0; &#xC2AC;&#xB798;&#xC2DC; &#xC55E;&#xC758; &#xC774;&#xB984;&#xC740;<strong>&#xACF5;&#xAE09; &#xC5C5;&#xCCB4;</strong>&#xB2E4;.</p>
<p>&#xC18C;&#xD504;&#xD2B8;&#xC6E8;&#xC5B4;&#xB97C; &#xB2E4;&#xC6B4;&#xB85C;&#xB4DC;&#xC640; &#xD568;&#xAED8;, &#xC2DC;&#xC2A4;&#xD15C;&#xC774; &#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xC0DD;&#xC131;&#xB429;&#xB2C8;&#xB2E4;<strong>composer.json&#xC758;</strong>&#xD30C;&#xC77C;&#xACFC;<strong>composer.lock&#xC758;</strong>&#xBA85;&#xB839;&#xC73C;&#xB85C; &#xD30C;&#xC77C; :</p>
<pre><code class="language-bash">    composer require monolog\monolog
</code></pre>
<p>4. &#xC774;&#xC81C; &#xB514;&#xB809;&#xD1A0;&#xB9AC;&#xC758; &#xB0B4;&#xC6A9;&#xC744; &#xB098;&#xC5F4;&#xD558;&#xC5EC; &#xBAA8;&#xB4E0; &#xD30C;&#xC77C;&#xC774; &#xC0DD;&#xC131;&#xB418;&#xC5C8;&#xB294;&#xC9C0; &#xD655;&#xC778;&#xD55C;&#xB2E4;.</p>
<pre><code class="language-bash">    ls -l
</code></pre>
<p>&#xCF58;&#xD150;&#xCE20; &#xC911;<strong>composer.json</strong>&#xA0;&#xBC0F;<strong>composer.lock</strong>&#xD30C;&#xC77C;&#xACFC;&#xA0;<strong>&#xACF5;&#xAE09; &#xC5C5;&#xCCB4;</strong>&#xB514;&#xB809;&#xD130;&#xB9AC;&#xAC00; &#xD45C;&#xC2DC;&#xB418;&#xC5B4;&#xC57C;&#xD55C;&#xB2E4;.</p>
<p>5. &#xB2E4;&#xC74C;&#xC73C;&#xB85C;<strong>composer.json</strong>&#xD30C;&#xC77C;&#xC744; &#xC5F0;&#xB2E4;.</p>
<pre><code class="language-bash">    cat composer.json
</code></pre>
<p>&#xC0C8;&#xB85C; &#xCD94;&#xAC00; &#xB41C; &#xBAA8;&#xB178;&#xB85C;&#xADF8; &#xC18C;&#xD504;&#xD2B8;&#xC6E8;&#xC5B4;&#xC758; &#xBC84;&#xC804; &#xBC88;&#xD638; &#xC606;&#xC5D0; &#xC18C;&#xD504;&#xD2B8;&#xC6E8;&#xC5B4;&#xC758; &#xCD5C;&#xC18C; &#xBC84;&#xC804;&#xC744; &#xB098;&#xD0C0;&#xB0B4;&#xB294;&#xCE90;&#xB7FF; (<strong>^</strong>) &#xAE30;&#xD638;&#xAC00; &#xD45C;&#xC2DC;&#xB41C;&#xB2E4;.</p>
<h3 id="%EC%9E%90%EB%8F%99-%EB%A1%9C%EB%94%A9%EC%9D%84-%EC%84%A4%EC%A0%95%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95">&#xC790;&#xB3D9; &#xB85C;&#xB529;&#xC744; &#xC124;&#xC815;&#xD558;&#xB294; &#xBC29;&#xBC95;</h3>
<p>&#xD074;&#xB798;&#xC2A4;&#xB97C;<strong>&#xC790;&#xB3D9;&#xB85C;&#xB4DC;</strong>&#xD558;&#xB3C4;&#xB85D; Composer&#xB97C; &#xAD6C;&#xC131;&#xD558;&#xC5EC; &#xC885;&#xC18D;&#xC131; &#xC791;&#xC5C5;&#xC744; &#xB2E8;&#xC21C;&#xD654; &#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;(PHP&#xB294;&#xC774;&#xB97C; &#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xC218;&#xD589;&#xD558;&#xC9C0; &#xC54A;&#xAE30; &#xB54C;&#xBB38;&#xC774;&#xB2E4;).</p>
<p>1. &#xC6D0;&#xD558;&#xB294; &#xD14D;&#xC2A4;&#xD2B8; &#xD3B8;&#xC9D1;&#xAE30;&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; &#xC0C8; &#xD30C;&#xC77C;&#xC744; &#xB9CC;&#xB4E0;&#xB2E4; (&#xC774; &#xC608;&#xC5D0;&#xC11C;&#xB294; &#xC774;&#xB984; &#xC544;&#xB798;&#xC5D0; &#xC788;&#xC74C;<code>**composer_sample**</code>).</p>
<pre><code class="language-bash">    vi composer_sample.php
</code></pre>
<p>2. &#xD30C;&#xC77C;&#xC5D0; &#xB2E4;&#xC74C;&#xC744; &#xCD94;&#xAC00;&#xD55C;&#xB2E4;.</p>
<pre><code class="language-bash">    &lt;?php
    
    require __DIR__ . &apos;\vendor\autoload.php&apos;;
    use Monolog\Logger;
    use Monolog\Handler\StreamHandler;
    
    \\ create a log channel
    $log = new Logger(&apos;name&apos;);
    $log-&gt;pushHandler(new StreamHandler(&apos;\~\c_sample\text.log&apos;, Logger::WARNING));
    
    \\ add records to the log
    $log-&gt;warning(&apos;Foo&apos;);
    $log-&gt;error(&apos;Bar&apos;);
</code></pre>
<p><img src="http://suitmyself.com/content/images/2023/05/configure-composer-to-autoload.jpg" alt="Composer &#xC124;&#xCE58;" loading="lazy"></p>
<p>3.<strong>&#xC800;&#xC7A5;</strong>&#xD558;&#xACE0;<strong>&#xC885;&#xB8CC;</strong>&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>4. &#xC774;&#xAC83;&#xC73C;&#xB85C; &#xB2E4;&#xC74C; &#xBA85;&#xB839;&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC;<strong>monolog</strong>&#xB97C;<strong>&#xC790;&#xB3D9;&#xB85C;&#xB4DC;</strong>&#xD560; &#xC218; &#xC788;&#xB2E4;.</p>
<pre><code class="language-bash">    php composer_sample.php
</code></pre>
<h3 id="%EC%A2%85%EC%86%8D%EC%84%B1-%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8">&#xC885;&#xC18D;&#xC131; &#xC5C5;&#xB370;&#xC774;&#xD2B8;</h3>
<p><strong>composer.json</strong>&#xD30C;&#xC77C;&#xC758;&#xBAA8;&#xB4E0; &#xC885;&#xC18D;&#xC131;&#xC744; &#xC5C5;&#xB370;&#xC774;&#xD2B8;&#xD574;&#xC57C; &#xD558;&#xB294; &#xACBD;&#xC6B0; &#xB2E4;&#xC74C;&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; &#xC218;&#xD589; &#xD560; &#xC218; &#xC788;&#xB2E4;.</p>
<pre><code class="language-bash">    composer update
</code></pre>
<p>&#xC774; &#xBA85;&#xB839;&#xC740; &#xD30C;&#xC77C;&#xC5D0; &#xC9C0;&#xC815;&#xB41C; &#xBC84;&#xC804;&#xC5D0; &#xB530;&#xB77C; &#xC885;&#xC18D;&#xC131;&#xC744; &#xC5C5;&#xB370;&#xC774;&#xD2B8;&#xD55C;&#xB2E4;.</p>
<p>&#xD558;&#xB098; &#xC774;&#xC0C1;&#xC758; &#xC885;&#xC18D;&#xC131;&#xC744; &#xAC1C;&#xBCC4;&#xC801;&#xC73C;&#xB85C; &#xC5C5;&#xB370;&#xC774;&#xD2B8; &#xD560; &#xC218;&#xB3C4; &#xC788;&#xB2E4;.</p>
<pre><code class="language-bash">    composer update vendor\package vendor_b\package_b
</code></pre>
<hr>
<p>&#xACB0;&#xB860;</p>
<p>&#xC774; &#xAC00;&#xC774;&#xB4DC;&#xB97C; &#xC77D;&#xC740; &#xD6C4;&#xC5D0;&#xB294; CentOS 7&#xC5D0;&#xC11C; Composer&#xB97C; &#xC548;&#xC804;&#xD558;&#xAC8C; &#xC124;&#xC815;&#xD558;&#xACE0; &#xAD6C;&#xC131;&#xD558;&#xB294; &#xBC29;&#xBC95;&#xC744; &#xC54C;&#xAC8C;&#xB418;&#xC5C8;&#xB2E4;.&#xB610;&#xD55C; PHP &#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xC0DD;&#xC131;, &#xC790;&#xB3D9;&#xB85C;&#xB4DC; &#xC124;&#xC815;, &#xC885;&#xC18D;&#xC131; &#xC5C5;&#xB370;&#xC774;&#xD2B8;&#xB97C; &#xD3EC;&#xD568;&#xD55C; Composer&#xC758; &#xAE30;&#xBCF8; &#xC0AC;&#xC6A9;&#xBC95;&#xC744; &#xBC30;&#xC6E0;&#xB2E4;.</p>
<!--kg-card-end: markdown--><p></p>]]></content:encoded></item><item><title><![CDATA[Pycharm Study 004]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h2 id="python-%EB%AA%A8%EB%93%88-import%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95">Python &#xBAA8;&#xB4C8; import&#xD558;&#xB294; &#xBC29;&#xBC95;</h2>
<h3 id="%EB%AA%A8%EB%93%88-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC">&#xBAA8;&#xB4C8;? &#xB77C;&#xC774;&#xBE0C;&#xB7EC;&#xB9AC;?</h3>
<blockquote>
<p>&#xD30C;&#xC774;&#xC36C;&#xC5D0;&#xC11C; &#xBAA8;&#xB4C8;&#xC774;&#xB77C;&#xACE0; &#xBD80;&#xB974;&#xB294; &#xAC83;&#xC740; C&#xC5B8;&#xC5B4;&#xC5D0;&#xC11C; &#xB77C;&#xC774;&#xBE0C;&#xB7EC;&#xB9AC;&#xB77C;&#xACE0; &#xBD80;&#xB974;&#xB294; &#xAC83;&#xACFC; &#xB3D9;&#xC77C;&#xD558;</p></blockquote>]]></description><link>http://suitmyself.com/pythoneseo-dareun-wiciyi-pail-importhaneun-bangbeob/</link><guid isPermaLink="false">646a3695bec44232aa42f2da</guid><category><![CDATA[Python]]></category><category><![CDATA[Programming]]></category><dc:creator><![CDATA[benjamin kim]]></dc:creator><pubDate>Wed, 24 May 2023 04:56:59 GMT</pubDate><media:content url="http://suitmyself.com/content/images/2023/05/preview-4.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="python-%EB%AA%A8%EB%93%88-import%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95">Python &#xBAA8;&#xB4C8; import&#xD558;&#xB294; &#xBC29;&#xBC95;</h2>
<h3 id="%EB%AA%A8%EB%93%88-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC">&#xBAA8;&#xB4C8;? &#xB77C;&#xC774;&#xBE0C;&#xB7EC;&#xB9AC;?</h3>
<blockquote>
<img src="http://suitmyself.com/content/images/2023/05/preview-4.png" alt="Pycharm Study 004"><p>&#xD30C;&#xC774;&#xC36C;&#xC5D0;&#xC11C; &#xBAA8;&#xB4C8;&#xC774;&#xB77C;&#xACE0; &#xBD80;&#xB974;&#xB294; &#xAC83;&#xC740; C&#xC5B8;&#xC5B4;&#xC5D0;&#xC11C; &#xB77C;&#xC774;&#xBE0C;&#xB7EC;&#xB9AC;&#xB77C;&#xACE0; &#xBD80;&#xB974;&#xB294; &#xAC83;&#xACFC; &#xB3D9;&#xC77C;&#xD558;&#xB2E4;&#xACE0; &#xBCF4;&#xBA74; &#xB420;&#xAC83; &#xAC19;&#xB2E4;. &#xC790;&#xC8FC; &#xC0AC;&#xC6A9;&#xD558;&#xB294; &#xC18C;&#xC2A4;&#xCF54;&#xB4DC;&#xB4E4;&#xC744; &#xBBF8;&#xB9AC; &#xC791;&#xC131;&#xD558;&#xC5EC; &#xD504;&#xB85C;&#xADF8;&#xB798;&#xBA38;&#xAC00; &#xC6D0;&#xD560; &#xB54C; &#xBE60;&#xB974;&#xAC8C; &#xC0AC;&#xC6A9;&#xD560; &#xC218; &#xC788;&#xAC8C; &#xAC00;&#xACF5;&#xB41C; &#xD615;&#xD0DC;&#xB97C; &#xB9D0;&#xD55C;&#xB2E4;. &#xADF8;&#xC678;&#xC5D0;&#xB3C4; &#xC720;&#xC6A9;&#xD55C; &#xCF54;&#xB4DC;&#xB97C; &#xAD00;&#xB9AC;&#xD558;&#xACE0; &#xBC0F; &#xC0AC;&#xC6A9;&#xD560; &#xC218; &#xC788;&#xAC8C; &#xBB36;&#xC5B4;&#xB454; &#xD30C;&#xC77C;&#xC774;&#xB77C;&#xACE0; &#xBCF4;&#xBA74; &#xB420;&#xAC83; &#xAC19;&#xB2E4;.</p>
</blockquote>
<h3 id="%ED%98%84%EC%9E%AC-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%97%90-%EC%9E%88%EB%8A%94-%EB%AA%A8%EB%93%88-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0">&#xD604;&#xC7AC; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC5D0; &#xC788;&#xB294; &#xBAA8;&#xB4C8; &#xD655;&#xC778;&#xD558;&#xAE30;</h3>
<pre><code class="language-python">&gt;&gt;&gt;import pkg_resources; 
&gt;&gt;&gt;installed_packages = [(d.project_name, d.version) for d in pkg_resources.working_set]
</code></pre>
<p>&#xD30C;&#xC774;&#xC36C;&#xCF58;&#xC194;&#xC5D0;&#xC11C; &#xD655;&#xC778;&#xD558;&#xB294; &#xBC29;&#xBC95;</p>
<p><img src="http://suitmyself.com/content/images/2023/05/python_module.png" alt="Pycharm Study 004" loading="lazy"></p>
<ul>
<li>&#xD30C;&#xC774;&#xCC38;&#xC5D0;&#xC11C; &#xD655;&#xC778;&#xD558;&#xB294; &#xBC29;&#xBC95;<br>
<code>Ctrl+Alt+s</code>(&#xC14B;&#xD305;&#xD654;&#xBA74;) &#xC5D0;&#xC11C; Project: &#xD604;&#xC7AC; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xBA85; &gt; Python Interpreter &#xB97C; &#xC120;&#xD0DD;&#xD558;&#xBA74; &#xD604;&#xC7AC; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC758; &#xBAA8;&#xB4C8;&#xC744; &#xD655;&#xC778;&#xD560; &#xC218; &#xC788;&#xB2E4;.</li>
</ul>
<p>&#xC704;&#xC758; &#xD30C;&#xC774;&#xC36C; &#xCF58;&#xC194; &#xACB0;&#xACFC;&#xCC3D;&#xC758; Installed_packages &#xB97C; &#xBCF4;&#xBA74; &#xB3D9;&#xC77C;&#xD55C; &#xAC83;&#xC744; &#xC54C; &#xC218; &#xC788;&#xB2E4;.</p>
<p><img src="http://suitmyself.com/content/images/2023/05/pycharm_module.png" alt="Pycharm Study 004" loading="lazy"></p>
<p><a href="https://docs.python.org/3/py-modindex.html?ref=suitmyself.com">&#xD30C;&#xC774;&#xC36C;&#xC758; &#xC804;&#xCCB4; &#xBAA8;&#xB4C8;&#xB9AC;&#xC2A4;&#xD2B8;</a></p>
<hr>
<h3 id="%EB%AA%A8%EB%93%88%EC%9D%98-%EC%84%A4%EC%B9%98">&#xBAA8;&#xB4C8;&#xC758; &#xC124;&#xCE58;</h3>
<p>&#xBAA8;&#xB4C8;&#xC758; import&#xB97C; &#xD558;&#xAE30;&#xC804;&#xC5D0; &#xC6B0;&#xC120; &#xC124;&#xCE58;&#xB97C; &#xBA3C;&#xC800;&#xD574;&#xC57C; &#xD558;&#xB294;&#xB370; &#xC774; &#xBC29;&#xBC95;&#xC740; <code>Study 001</code>&#xC5D0;&#xC11C; tqdm&#xC758; &#xC124;&#xCE58;&#xB97C; &#xD655;&#xC778;&#xD574;&#xBCF4;&#xBA74; &#xC54C; &#xC218; &#xC788;&#xB2E4;. &#xC544;&#xB798; <code>Install Package</code>&#xB97C; &#xC120;&#xD0DD;&#xD558;&#xBA74; &#xD574;&#xB2F9; &#xBAA8;&#xB4C8;&#xC774; &#xC124;&#xCE58;&#xB41C;&#xB2E4;.</p>
<p><code>Ctrl+Alt+s</code>(&#xC14B;&#xD305;&#xD654;&#xBA74;) &#xC5D0;&#xC11C; Project: &#xD604;&#xC7AC; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xBA85; &gt; Python Interpreter &#xB97C; &#xC120;&#xD0DD;&#xD6C4; <code>+</code> &#xD0A4;&#xB97C; &#xB20C;&#xB7EC;&#xC11C; Available Packages &#xCC3D;&#xC744; &#xC5F4;&#xC5B4; &#xAC80;&#xC0C9;&#xC5D0; &#xC124;&#xCE58;&#xD558;&#xACE0;&#xC790; &#xD558;&#xB294; &#xBAA8;&#xB4C8;&#xC758; &#xC774;&#xB984;&#xC744; &#xC785;&#xB825;&#xD55C;&#xD6C4; &#xD574;&#xB2F9; &#xBAA8;&#xB4C8;&#xC744; &#xC120;&#xD0DD;&#xD558;&#xACE0; <code>Install Package</code>&#xB97C; &#xC120;&#xD0DD;&#xD55C;&#xB2E4;.</p>
<p><img src="http://suitmyself.com/content/images/2023/05/install_tqdm_comp-1.png" alt="Pycharm Study 004" loading="lazy"></p>
<pre><code class="language-python">pip install [&#xC124;&#xCE58;&#xD560; &#xBAA8;&#xB4C8;&#xC774;&#xB984;]
</code></pre>
<p>&#xADF8;&#xC678;&#xC5D0; &#xCF58;&#xC194;(Terminal)&#xC5D0;&#xC11C; &#xD558;&#xB294; &#xACBD;&#xC6B0; <code>pip</code> &#xBA85;&#xB839;&#xC744; &#xC774;&#xC6A9;&#xD560; &#xC218; &#xC788;&#xB2E4;.</p>
<hr>
<h3 id="%EB%AA%A8%EB%93%88%EC%9D%98-import">&#xBAA8;&#xB4C8;&#xC758; import</h3>
<p><strong>Automatically add import statements(&#xC790;&#xB3D9;&#xC73C;&#xB85C; import&#xBB38; &#xCD94;&#xAC00;&#xD558;&#xAE30;</strong></p>
<ol>
<li><code>Ctrl_Alt+s</code>&#xB97C; &#xB20C;&#xB7EC;&#xC11C; &#xC14B;&#xD305;&#xD654;&#xBA74;&#xC744; &#xD638;&#xCD9C;&#xD6C4; Editor &gt; General &gt; Auto Import &#xB97C; &#xC120;&#xD0DD;&#xD55C;&#xB2E4;.</li>
<li><code>Python</code> &#xC744; &#xC120;&#xD0DD;&#xD558;&#xACE0;, &#xC124;&#xC815;&#xD55C;&#xB2E4;.
<ul>
<li><code>Show import popup</code> - import &#xBB38; &#xC774; &#xC5C6;&#xB294; &#xD074;&#xB798;&#xC2A4;&#xC758; &#xC774;&#xB984;&#xC744; &#xBB36;&#xC744; &#xB54C; &#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xD31D;&#xC5C5;&#xC744; &#xD45C;&#xC2DC;&#xD558;&#xB824;&#xBA74; &#xC120;&#xD0DD;&#xD55C;&#xB2E4;.</li>
<li><code>Preferred import style</code> - &#xC635;&#xC158; &#xC911; &#xD558;&#xB098;&#xB97C; &#xC120;&#xD0DD;&#xD558;&#xC5EC; &#xAC00;&#xC838;&#xC624;&#xAE30; &#xBB38;&#xC744; &#xC0DD;&#xC131;&#xD558;&#xB294; &#xBC29;&#xBC95;&#xC744; &#xC815;&#xC758;&#xD55C;&#xB2E4;.</li>
</ul>
</li>
</ol>
<p><img src="http://suitmyself.com/content/images/2023/05/auto_import.png" alt="Pycharm Study 004" loading="lazy"></p>
<p><strong>import&#xBB38; &#xC0AC;&#xC6A9;&#xBC95;</strong></p>
<pre><code class="language-python">PS F:\MyProject\Pycharm_001&gt; cd..
PS F:\MyProject&gt; tree
STUDY &#xBCFC;&#xB968;&#xC5D0; &#xB300;&#xD55C; &#xD3F4;&#xB354; &#xACBD;&#xB85C;&#xC758; &#xBAA9;&#xB85D;&#xC785;&#xB2C8;&#xB2E4;.
&#xBCFC;&#xB968; &#xC77C;&#xB828; &#xBC88;&#xD638;&#xB294; E89B-937C&#xC785;&#xB2C8;&#xB2E4;.
.
&#x251C;&#x2500;&#xC0C1;&#xC704;&#xD3F4;&#xB354;
&#x251C;&#x2500;Pycharm_001(&#xD604;&#xC7AC;&#xD3F4;&#xB354;)
&#x2502;  &#x251C;&#x2500;.idea
&#x2502;  &#x2502;  &#x251C;&#x2500;inspectionProfiles
&#x2502;  &#x2502;  &#x2514;&#x2500;ZeppelinRemoteNotebooks
&#x2502;  &#x251C;&#x2500;venv
&#x2502;  &#x2502;  &#x251C;&#x2500;Lib
&#x2502;  &#x2502;  &#x2502;  &#x2514;&#x2500;site-packages
&#x2502;  &#x2502;  &#x2502;      &#x251C;&#x2500;colorama
&#x2502;  &#x2502;  &#x2502;      &#x2502;  &#x251C;&#x2500;tests
&#x2502;  &#x2502;  &#x2502;      &#x2502;  &#x2502;  &#x2514;&#x2500;__pycache__
&#x2502;  &#x2502;  &#x2502;      &#x2502;  &#x2514;&#x2500;__pycache__
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&#x2502;  &#x2502;  &#x2502;      &#x251C;&#x2500;tqdm
&#x2502;  &#x2502;  &#x2502;      &#x2502;  &#x251C;&#x2500;contrib
&#x2502;  &#x2502;  &#x2502;      &#x2502;  &#x2502;  &#x2514;&#x2500;__pycache__
&#x2502;  &#x2502;  &#x2502;      &#x2502;  &#x2514;&#x2500;__pycache__
&#x2502;  &#x2502;  &#x2502;      &#x251C;&#x2500;tqdm-4.65.0.dist-info
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&#x2502;  &#x2502;  &#x2502;      &#x2502;  &#x2514;&#x2500;__pycache__
&#x2502;  &#x2502;  &#x2502;      &#x2514;&#x2500;__pycache__
&#x2502;  &#x2502;  &#x2514;&#x2500;Scripts
&#x2502;  &#x2502;      &#x2514;&#x2500;venv
&#x2502;  &#x2502;          &#x251C;&#x2500;Include
&#x2502;  &#x2502;          &#x251C;&#x2500;Lib
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
&#x2502;  &#x251C;&#x2500;&#xD558;&#xC704;&#xD3F4;&#xB354;
</code></pre>
<pre><code class="language-python">import tqdm
from colorama import *
</code></pre>
<p>&#xD30C;&#xC774;&#xC36C;&#xC5D0; &#xAE30;&#xBCF8;&#xC73C;&#xB85C; &#xC124;&#xCE58;&#xB41C; &#xBAA8;&#xB4C8;&#xACFC; &#xD328;&#xD0A4;&#xC9C0;&#xC5D0;&#xC11C; import&#xD560;&#xB54C;</p>
<pre><code class="language-python">from tdqm import tqdm
from colorama import just_fix_windows_console
</code></pre>
<p>&#xBAA8;&#xB4C8;&#xC5D0;&#xC11C; &#xD544;&#xC694;&#xD55C; &#xD568;&#xC218;&#xB9CC; import&#xD560;&#xB54C;</p>
<pre><code class="language-python">import math as m
m.sqrt(4.0)
</code></pre>
<p><code>import as</code>&#xB97C; &#xC774;&#xC6A9;&#xD558;&#xC5EC; &#xBAA8;&#xB4C8;&#xBA85;&#xC744; &#xBCC0;&#xACBD;&#xD560; &#xC218; &#xC788;&#xB2E4;.</p>
<pre><code class="language-python">$ from . import modulename
</code></pre>
<p>&#xB9CC;&#xC57D; &#xC6D0;&#xD558;&#xB294; &#xBAA8;&#xB4C8;&#xC774; &#xB3D9;&#xC77C;&#xD55C; &#xACBD;&#xB85C;&#xC5D0; &#xC788;&#xC744; &#xACBD;&#xC6B0;&#xC5D4;, &#xC704;&#xC640; &#xAC19;&#xC774; .&#xC744; &#xC0AC;&#xC6A9;&#xD574;&#xC11C; import &#xD560; &#xC218; &#xC788;&#xB2E4;.</p>
<pre><code class="language-python">$ from [&#xD558;&#xC704;&#xD3F4;&#xB354;] import modulename
</code></pre>
<p>&#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC758; &#xBA54;&#xC778; &#xD3F4;&#xB354;&#xBCF4;&#xB2E4; &#xD558;&#xC704; &#xACBD;&#xB85C;&#xC5D0; &#xC788;&#xC744; &#xACBD;&#xC6B0;&#xC5D4;, &#xC544;&#xB798;&#xC640; &#xAC19;&#xC774; &#xD558;&#xC704;&#xD3F4;&#xB354;&#xBA85;&#xC744; &#xC9C0;&#xC815;&#xD558;&#xC5EC; import &#xD560; &#xC218; &#xC788;&#xB2E4;. (&#xD558;&#xC704;&#xD3F4;&#xB354; &#xC548;&#xC5D0; &#xC788;&#xB294; &#xBAA8;&#xB4C8;&#xC744; &#xC0AC;&#xC6A9;&#xD560;&#xB54C; &#xC704;&#xC640; &#xAC19;&#xC774; &#xD558;&#xBA74;&#xB41C;&#xB2E4;.)</p>
<pre><code class="language-python">$ import sys, os
sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(__file__))))
from [&#xC0C1;&#xC704;&#xD3F4;&#xB354;&#xC5D0; &#xC18D;&#xD558;&#xB294; &#xD3F4;&#xB354;&#xBA85;] import modulename
</code></pre>
<p>&#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC758; &#xBA54;&#xC778; &#xD3F4;&#xB354;&#xBCF4;&#xB2E4; &#xC0C1;&#xC704; &#xACBD;&#xB85C;&#xC5D0; &#xC788;&#xC744; &#xACBD;&#xC6B0;&#xC5D4;, sys&#xC640; os&#xB97C; import&#xD558;&#xC5EC; &#xC0C1;&#xC704; &#xD3F4;&#xB354;&#xC758; &#xC704;&#xCE58;&#xB97C; &#xC124;&#xC815;&#xD558;&#xC5EC; &#xC0AC;&#xC6A9;&#xD55C;&#xB2E4;.(&#xC0C1;&#xC704; &#xD3F4;&#xB354;&#xC5D0; &#xC788;&#xB294; &#xBAA8;&#xB4C8;&#xC744; import&#xD560; &#xC218; &#xC788;&#xB2E4;.)</p>
<pre><code class="language-python">$ import sys, os
sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(__file__))))
from . import modulename
</code></pre>
<p>&#xC0C1;&#xC704;&#xD3F4;&#xB354;&#xC5D0; &#xBAA8;&#xB4C8;&#xC774; &#xC874;&#xC7AC;&#xD558;&#xB294; &#xACBD;&#xC6B0;</p>
<pre><code class="language-python">$ import sys, os
sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(os.path.abspath(os.path.dirname(__file__))))))
from . import want_to_import
</code></pre>
<p>&#xB450;&#xB2E8;&#xACC4; &#xC0C1;&#xC704;&#xD3F4;&#xB354;&#xC758; &#xACBD;&#xC6B0; &#xC704;&#xC640; &#xAC19;&#xC774; &#xC9C0;&#xC815;&#xD55C;&#xB2E4;.</p>
<pre><code class="language-python">import sys
sys.path.append([&#xD30C;&#xC77C;&#xC774; &#xD30C;&#xC77C;&#xC774; &#xC788;&#xB294; &#xACBD;&#xB85C;])
from . import want_to_import
</code></pre>
<p>&#xC678;&#xBD80;&#xACBD;&#xB85C;&#xC5D0; &#xC788;&#xB294; &#xBAA8;&#xB4C8;&#xB97C; import&#xD558;&#xB824;&#xBA74; sys.path.append&#xC5D0; &#xD574;&#xB2F9; &#xACBD;&#xB85C;&#xB97C; &#xC785;&#xB825;&#xD55C;&#xB2E4;.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Pycharm Study 003]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h2 id="pycharm%EC%9D%98-%EC%BD%94%EB%94%A9-%EC%A7%80%EC%9B%90-%EA%B8%B0%EB%8A%A5-2">Pycharm&#xC758; &#xCF54;&#xB529; &#xC9C0;&#xC6D0; &#xAE30;&#xB2A5; 2</h2>
<h3 id="code-reference-information">Code reference information</h3>
<p><strong>&#xB9E4;&#xAC1C;&#xBCC0;&#xC218; &#xC815;&#xBCF4;</strong></p>
<p>&#xB9E4;&#xAC1C; &#xBCC0;&#xC218; &#xC815;&#xBCF4; &#xD31D;&#xC5C5;&#xC5D0;&#xB294; &#xBA54;&#xC11C;&#xB4DC; &#xBC0F; &#xD568;&#xC218; &#xD638;&#xCD9C;&#xC758; &#xB9E4;&#xAC1C;&#xBCC0;&#xC218; &#xC774;&#xB984;&#xC774; &#xD45C;&#xC2DC;&#xB41C;&#xB2E4;. PyCharm&#xC740;</p>]]></description><link>http://suitmyself.com/pycharm-study-003/</link><guid isPermaLink="false">6469cf52bec44232aa42f2b7</guid><category><![CDATA[Python]]></category><category><![CDATA[Programming]]></category><dc:creator><![CDATA[benjamin kim]]></dc:creator><pubDate>Sun, 21 May 2023 08:01:59 GMT</pubDate><media:content url="http://suitmyself.com/content/images/2023/05/preview-2.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="pycharm%EC%9D%98-%EC%BD%94%EB%94%A9-%EC%A7%80%EC%9B%90-%EA%B8%B0%EB%8A%A5-2">Pycharm&#xC758; &#xCF54;&#xB529; &#xC9C0;&#xC6D0; &#xAE30;&#xB2A5; 2</h2>
<h3 id="code-reference-information">Code reference information</h3>
<img src="http://suitmyself.com/content/images/2023/05/preview-2.png" alt="Pycharm Study 003"><p><strong>&#xB9E4;&#xAC1C;&#xBCC0;&#xC218; &#xC815;&#xBCF4;</strong></p>
<p>&#xB9E4;&#xAC1C; &#xBCC0;&#xC218; &#xC815;&#xBCF4; &#xD31D;&#xC5C5;&#xC5D0;&#xB294; &#xBA54;&#xC11C;&#xB4DC; &#xBC0F; &#xD568;&#xC218; &#xD638;&#xCD9C;&#xC758; &#xB9E4;&#xAC1C;&#xBCC0;&#xC218; &#xC774;&#xB984;&#xC774; &#xD45C;&#xC2DC;&#xB41C;&#xB2E4;. PyCharm&#xC740; &#xD3B8;&#xC9D1;&#xAE30;&#xC5D0;&#xC11C; &#xC5EC;&#xB294; &#xAD04;&#xD638;&#xB97C; &#xC785;&#xB825;&#xD558;&#xAC70;&#xB098; &#xC81C;&#xC548; &#xBAA9;&#xB85D;&#xC5D0;&#xC11C; &#xBA54;&#xC11C;&#xB4DC;&#xB97C; &#xC120;&#xD0DD;&#xD55C; &#xD6C4; 1&#xCD08;(1000&#xBC00;&#xB9AC;&#xCD08;) &#xC774;&#xB0B4;&#xC5D0; &#xC0AC;&#xC6A9; &#xAC00;&#xB2A5;&#xD55C; &#xBAA8;&#xB4E0; &#xBA54;&#xC11C;&#xB4DC; &#xC2DC;&#xADF8;&#xB2C8;&#xCC98;&#xAC00; &#xD3EC;&#xD568;&#xB41C; &#xD31D;&#xC5C5;&#xC744; &#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xD45C;&#xC2DC;&#xD55C;&#xB2E4;.</p>
<p>&#xD31D;&#xC5C5;&#xC774; &#xB2EB;&#xD788;&#xAC70;&#xB098; IDE&#xAC00; &#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xD31D;&#xC5C5;&#xC744; &#xD45C;&#xC2DC;&#xD558;&#xC9C0; &#xC54A;&#xB3C4;&#xB85D; &#xAD6C;&#xC131;&#xB41C; &#xACBD;&#xC6B0; &#xD31D;&#xC5C5;&#xC744; &#xBA85;&#xC2DC;&#xC801;&#xC73C;&#xB85C; &#xD638;&#xCD9C;&#xD560; &#xC218; &#xC788;&#xB2E4; . &#xADF8;&#xB807;&#xAC8C; &#xD558;&#xB824;&#xBA74; <code>Ctrl+P</code>&#xD0A4;&#xB97C; &#xB204;&#xB974;&#xBA74;&#xB41C;&#xB2E4;. (&#xB610;&#xB294; &#xBCF4;&#xAE30; | &#xB9E4;&#xAC1C;&#xBCC0;&#xC218; &#xC815;&#xBCF4; &#xD074;&#xB9AD; ).</p>
<p><img src="http://suitmyself.com/content/images/2023/05/Show-full-method-signatures_01.png" alt="Pycharm Study 003" loading="lazy"></p>
<p><strong>&#xC804;&#xCCB4; &#xBA54;&#xC11C;&#xB4DC; &#xB610;&#xB294; &#xD568;&#xC218; &#xC11C;&#xBA85; &#xD45C;&#xC2DC;</strong><br>
&#xAE30;&#xBCF8;&#xC801;&#xC73C;&#xB85C; &#xB9E4;&#xAC1C;&#xBCC0;&#xC218; &#xC815;&#xBCF4; &#xD31D;&#xC5C5;&#xC5D0;&#xB294; &#xAC04;&#xB2E8;&#xD55C; &#xC2DC;&#xADF8;&#xB2C8;&#xCCD0;&#xAC00; &#xD45C;&#xC2DC;&#xB429;&#xB2C8;&#xB2E4;. &#xBA54;&#xC11C;&#xB4DC; &#xC774;&#xB984;&#xACFC; &#xBC18;&#xD658;&#xB41C; &#xC720;&#xD615;&#xC744; &#xD3EC;&#xD568;&#xD558;&#xB294; &#xC804;&#xCCB4; &#xC11C;&#xBA85;&#xC744; &#xD45C;&#xC2DC;&#xD558;&#xB3C4;&#xB85D; IDE&#xB97C; &#xAD6C;&#xC131;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xC14B;&#xD305;&#xD654;&#xBA74; <code>Ctrl+Alt+S</code> &#xC5D0;&#xC11C; Editor &gt; General &gt; Code Completion &#xC5D0;&#xC11C; Parameter Info &#xD56D;&#xBAA9;&#xC758; Show full method signatures &#xCCB4;&#xD06C;&#xBC15;&#xC2A4;&#xB97C; &#xCCB4;&#xD06C;&#xD55C;&#xB2E4;.</p>
<p>&#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xC18C;&#xC2A4; &#xACBD;&#xB85C;&#xC5D0; &#xD544;&#xC694;&#xD55C; &#xC368;&#xB4DC;&#xD30C;&#xD2F0; JavaScript &#xB77C;&#xC774;&#xBE0C;&#xB7EC;&#xB9AC;&#xB97C; &#xD3EC;&#xD568;&#xD574;&#xC57C; &#xD55C;&#xB2E4;. &#xADF8;&#xB807;&#xC9C0; &#xC54A;&#xC73C;&#xBA74; &#xB9E4;&#xAC1C;&#xBCC0;&#xC218; &#xC774;&#xB984;&#xC774; &#xD45C;&#xC2DC;&#xB418;&#xC9C0; &#xC54A;&#xB294;&#xB2E4;.</p>
<p><img src="http://suitmyself.com/content/images/2023/05/Show-full-method-signatures_02.png" alt="Pycharm Study 003" loading="lazy"></p>
<hr>
<h3 id="code-inspections%EC%BD%94%EB%93%9C-%EA%B2%80%EC%82%AC">Code inspections(&#xCF54;&#xB4DC; &#xAC80;&#xC0AC;)</h3>
<p>PyCharm&#xC5D0;&#xB294; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC758; &#xBE44;&#xC815;&#xC0C1;&#xC801;&#xC778; &#xCF54;&#xB4DC;&#xB97C; &#xAC10;&#xC9C0;&#xD558;&#xACE0; &#xC218;&#xC815;&#xD558;&#xB294; &#xC77C;&#xB828;&#xC758; &#xCF54;&#xB4DC; &#xAC80;&#xC0AC;&#xAC00; &#xC788;&#xB2E4;. IDE&#xB294; &#xB2E4;&#xC591;&#xD55C; &#xBB38;&#xC81C;&#xB97C; &#xCC3E;&#xC544; &#xAC15;&#xC870; &#xD45C;&#xC2DC;&#xD558;&#xACE0;, &#xC8FD;&#xC740; &#xCF54;&#xB4DC;&#xB97C; &#xCC3E;&#xACE0;, &#xAC00;&#xB2A5;&#xD55C; &#xBC84;&#xADF8;&#xB97C; &#xCC3E;&#xACE0;, &#xB9DE;&#xCDA4;&#xBC95; &#xBB38;&#xC81C;&#xB97C; &#xCC3E;&#xACE0;, &#xC804;&#xCCB4; &#xCF54;&#xB4DC; &#xAD6C;&#xC870;&#xB97C; &#xAC1C;&#xC120;&#xD560; &#xC218; &#xC788;&#xB2E4;.</p>
<p>&#xAC80;&#xC0AC;&#xB294; <a href="https://www.jetbrains.com/help/pycharm/configuring-scopes-and-file-colors.html?ref=suitmyself.com">&#xBAA8;&#xB4E0; &#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xD30C;&#xC77C; &#xB610;&#xB294; &#xD2B9;&#xC815; &#xBC94;&#xC704;</a> (&#xC608;: &#xD504;&#xB85C;&#xB355;&#xC158; &#xCF54;&#xB4DC; &#xB610;&#xB294; &#xC218;&#xC815;&#xB41C; &#xD30C;&#xC77C;) &#xC5D0;&#xC11C;&#xB9CC; &#xCF54;&#xB4DC;&#xB97C; &#xC2A4;&#xCE94;&#xD560; &#xC218; &#xC788;&#xB2E4; .</p>
<p>&#xBAA8;&#xB4E0; &#xAC80;&#xC0AC;&#xC5D0;&#xB294; &#xBB38;&#xC81C;&#xAC00; &#xCF54;&#xB4DC;&#xC5D0; &#xC601;&#xD5A5;&#xC744; &#xBBF8;&#xCE60; &#xC218; &#xC788;&#xB294; &#xC815;&#xB3C4;&#xC778; <a href="https://www.jetbrains.com/help/pycharm/configuring-inspection-severities.html?ref=suitmyself.com">inspection severity(&#xC2EC;&#xAC01;&#xB3C4; &#xC218;&#xC900;)</a> &#xC774; &#xC788;&#xB2E4;. &#xC2EC;&#xAC01;&#xD55C; &#xBB38;&#xC81C;&#xC640; &#xB35C; &#xC911;&#xC694;&#xD55C; &#xBB38;&#xC81C;&#xB97C; &#xBE60;&#xB974;&#xAC8C; &#xAD6C;&#xBD84;&#xD560; &#xC218; &#xC788;&#xB3C4;&#xB85D; &#xD3B8;&#xC9D1;&#xAE30;&#xC5D0;&#xC11C; &#xC2EC;&#xAC01;&#xB3C4;&#xAC00; &#xB2E4;&#xB974;&#xAC8C; &#xAC15;&#xC870; &#xD45C;&#xC2DC;&#xB41C;&#xB2E4;. PyCharm&#xC740; &#xBBF8;&#xB9AC; &#xC815;&#xC758;&#xB41C; &#xC2EC;&#xAC01;&#xB3C4; &#xC218;&#xC900; &#xC138;&#xD2B8;&#xC640; &#xD568;&#xAED8; &#xC81C;&#xACF5;&#xB418;&#xBA70; &#xC774;&#xB97C; &#xD1B5;&#xD574; &#xC790;&#xC2E0;&#xB9CC;&#xC758; &#xC2EC;&#xAC01;&#xB3C4; &#xC218;&#xC900;&#xC744; &#xB9CC;&#xB4E4; &#xC218; &#xC788;&#xB2E4;.</p>
<p><a href="https://www.jetbrains.com/help/pycharm/customizing-profiles.html?ref=suitmyself.com">&#xAC80;&#xC0AC; &#xBC0F; &#xD574;&#xB2F9; &#xC124;&#xC815;</a>&#xC740; &#xD504;&#xB85C;&#xD544; &#xC5D0; &#xADF8;&#xB8F9;&#xD654;&#xB429;&#xB2C8;&#xB2E4; . &#xAC01; &#xD504;&#xB85C;&#xD544;&#xC5D0;&#xB294; &#xD65C;&#xC131;&#xD654;&#xB41C; &#xAC80;&#xC0AC;, &#xBD84;&#xC11D;&#xD558;&#xB294; &#xD30C;&#xC77C; &#xBC94;&#xC704; &#xBC0F; &#xD574;&#xB2F9; &#xC2EC;&#xAC01;&#xB3C4; &#xC218;&#xC900;&#xC5D0; &#xB300;&#xD55C; &#xC815;&#xBCF4;&#xAC00; &#xD3EC;&#xD568;&#xB418;&#xC5B4; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xC14B;&#xD305;&#xD654;&#xBA74;&#xC5D0;&#xC11C; Editor &gt; Inspections &#xC5D0;&#xC11C; Python &#xD56D;&#xBAA9;&#xC744; &#xC5F4;&#xC5B4; &#xD544;&#xC694;&#xD55C; &#xD56D;&#xBAA9;&#xC758; &#xCCB4;&#xD06C;&#xBC15;&#xC2A4;&#xB97C; &#xCCB4;&#xD06C;&#xD55C;&#xB2E4;.</p>
<p><img src="http://suitmyself.com/content/images/2023/05/inspection-severity_001.png" alt="Pycharm Study 003" loading="lazy"></p>
<ul>
<li>&#xAC80;&#xC0AC; &#xBAA9;&#xB85D;&#xC744; &#xD544;&#xD130;&#xB9C1;&#xD558;&#xB294; &#xB370; &#xC0AC;&#xC6A9;&#xD55C;&#xB2E4;. &#xC608;&#xB97C; &#xB4E4;&#xC5B4; &#xC2EC;&#xAC01;&#xB3C4; &#xB610;&#xB294; &#xC5B8;&#xC5B4;&#xBCC4;&#xB85C; &#xAC80;&#xC0AC;&#xB97C; &#xD544;&#xD130;&#xB9C1;&#xD560; &#xC218; &#xC788;&#xB2E4;.</li>
</ul>
<pre><code>&#xAC80;&#xC0AC; &#xD504;&#xB85C;&#xD544;&#xC758; &#xAD6C;&#xC131;&#xC5D0; &#xC601;&#xD5A5;&#xC744; &#xC904; &#xC218; &#xC788;&#xC73C;&#xBBC0;&#xB85C; &#xC124;&#xCE58;&#xB41C; &#xD50C;&#xB7EC;&#xADF8;&#xC778;&#xC5D0;&#xC11C; &#xC81C;&#xACF5;&#xB418;&#xB294; &#xC0C8; &#xAC80;&#xC0AC;&#xB97C; &#xBE44;&#xD65C;&#xC131;&#xD654;
&#xD558;&#xB824;&#xBA74; Disable new inspections by default&#xB97C; &#xC120;&#xD0DD;&#xD55C;&#xB2E4; .
</code></pre>
<hr>
<h3 id="pycharm-debug-console-%EC%9D%98-%ED%95%9C%EA%B8%80%EA%B9%A8%EC%A7%90-%EB%AC%B8%EC%A0%9C">Pycharm Debug Console &#xC758; &#xD55C;&#xAE00;&#xAE68;&#xC9D0; &#xBB38;&#xC81C;</h3>
<p>&#xD30C;&#xC774;&#xCC38;&#xC744; &#xC124;&#xCE58;&#xD558;&#xACE0;&#xB098;&#xC11C; &#xBC14;&#xB85C; &#xCF54;&#xB529;&#xD6C4; &#xC2E4;&#xD589;&#xC744; &#xD558;&#xBA74; &#xB514;&#xBC84;&#xADF8;&#xCF58;&#xC194;&#xC758; &#xD55C;&#xAE00;&#xC774; &#xAE68;&#xC838;&#xC11C; &#xB098;&#xC628;&#xB2E4;. &#xC774;&#xB97C; &#xD574;&#xACB0;&#xD558;&#xB294; &#xBC29;&#xBC95;&#xC740; <code>Ctrl+Alt+s</code> &#xB97C; &#xB20C;&#xB7EC; &#xC14B;&#xD305;&#xCC3D;&#xC744; &#xC5F4;&#xC5B4; Editor &gt; File Encodings &#xD654;&#xBA74;&#xC5D0;&#xC11C; &#xC544;&#xB798; &#xADF8;&#xB9BC;&#xC5D0; &#xD45C;&#xC2DC;&#xB41C; &#xBD80;&#xBD84;&#xC758; &#xB0B4;&#xC6A9;&#xC744; <code>UTF-8</code> &#xB85C; &#xBCC0;&#xACBD;&#xD55C;&#xB2E4;.</p>
<blockquote>
<p>Project Encoding : UTF-8<br>
Default encoding for properties files : UTF-8</p>
</blockquote>
<p><img src="http://suitmyself.com/content/images/2023/05/debug_consol.png" alt="Pycharm Study 003" loading="lazy"></p>
<p>&#xC704;&#xC758; &#xB0B4;&#xC6A9;&#xB300;&#xB85C; &#xC218;&#xC815;&#xC744; &#xD558;&#xBA74; &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC774; &#xD55C;&#xAE00;&#xC774; &#xAE68;&#xC9C0;&#xC9C0; &#xC54A;&#xACE0; &#xCD9C;&#xB825;&#xB41C;&#xB2E4;.</p>
<p><img src="http://suitmyself.com/content/images/2023/05/debug_consol_display.png" alt="Pycharm Study 003" loading="lazy"></p>
<p>&#xD574;&#xB2F9; &#xBC29;&#xBC95;&#xC774;&#xC678;&#xC5D0;&#xB3C4; &#xCF54;&#xB4DC; &#xC0BD;&#xC785;&#xC73C;&#xB85C;&#xB3C4; &#xD574;&#xACB0;&#xC774; &#xB418;&#xAE30;&#xB294; &#xD558;&#xC9C0;&#xB9CC; &#xD30C;&#xC774;&#xCC38;&#xC5D0; &#xB300;&#xD55C; &#xAC83;&#xB9CC; &#xAE30;&#xB85D;&#xD558;&#xACE0;&#xC790; &#xD558;&#xBBC0;&#xB85C; &#xC704; &#xBC29;&#xBC95;&#xB9CC; &#xC801;&#xC5B4;&#xB454;&#xB2E4;.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Pycharm Study 002]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#xB450;&#xBC88;&#xC9F8; &#xC785;&#xB2C8;&#xB2E4;. &#xC791;&#xC131;&#xC911;&#xC785;&#xB2C8;&#xB2E4;.<br>
&#xCC9C;&#xCC9C;&#xD788; &#xC0AC;&#xC6A9;&#xBC95;&#xC744; &#xC775;&#xD788;&#xB2E4;&#xBCF4;&#xB2C8; &#xC2DC;&#xAC04;&#xC774; &#xAC78;&#xB9AC;&#xB124;&#xC694;. &#xD63C;&#xC790;&#xC11C; &#xD558;&#xB294;&#xAC70;&#xB77C; &#xC55E;&#xC73C;&#xB85C;&#xB3C4; &#xBE60;&#xB974;&#xC9C0;&#xB294; &#xC54A;&#xC744; &#xAC83; &#xAC19;</p>]]></description><link>http://suitmyself.com/pycharm-study-002/</link><guid isPermaLink="false">6469af6fbec44232aa42f250</guid><category><![CDATA[Python]]></category><category><![CDATA[Programming]]></category><dc:creator><![CDATA[benjamin kim]]></dc:creator><pubDate>Sun, 21 May 2023 06:32:25 GMT</pubDate><media:content url="http://suitmyself.com/content/images/2023/05/preview-1.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="http://suitmyself.com/content/images/2023/05/preview-1.png" alt="Pycharm Study 002"><p>&#xB450;&#xBC88;&#xC9F8; &#xC785;&#xB2C8;&#xB2E4;. &#xC791;&#xC131;&#xC911;&#xC785;&#xB2C8;&#xB2E4;.<br>
&#xCC9C;&#xCC9C;&#xD788; &#xC0AC;&#xC6A9;&#xBC95;&#xC744; &#xC775;&#xD788;&#xB2E4;&#xBCF4;&#xB2C8; &#xC2DC;&#xAC04;&#xC774; &#xAC78;&#xB9AC;&#xB124;&#xC694;. &#xD63C;&#xC790;&#xC11C; &#xD558;&#xB294;&#xAC70;&#xB77C; &#xC55E;&#xC73C;&#xB85C;&#xB3C4; &#xBE60;&#xB974;&#xC9C0;&#xB294; &#xC54A;&#xC744; &#xAC83; &#xAC19;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC791;&#xC131;&#xC911;&#xC778; &#xBB38;&#xC11C;&#xB97C; &#xD3EC;&#xC2A4;&#xD305;&#xD558;&#xB294; &#xAC83;&#xC740; &#xC9C0;&#xAE08; &#xC124;&#xCE58;&#xD55C; &#xACE0;&#xC2A4;&#xD2B8;&#xC758; &#xD504;&#xB9AC;&#xBDF0; &#xAE30;&#xB2A5;&#xC774; &#xC81C;&#xB300;&#xB85C; &#xB418;&#xC9C0;&#xB97C; &#xC54A;&#xC544;&#xC11C; &#xADF8;&#xB0E5; &#xD3EC;&#xC2A4;&#xD305;&#xC744; &#xD558;&#xBA74;&#xC11C; &#xBB38;&#xC11C;&#xB97C; &#xC218;&#xC815;&#xD558;&#xACE0; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<hr>
<h2 id="pycharm%EC%9D%98-%EC%BD%94%EB%94%A9-%EC%A7%80%EC%9B%90-%EA%B8%B0%EB%8A%A5-1">Pycharm&#xC758; &#xCF54;&#xB529; &#xC9C0;&#xC6D0; &#xAE30;&#xB2A5; 1</h2>
<h3 id="viewing-inline-documentation">Viewing Inline Documentation</h3>
<p>&#xACC4;&#xC18D;&#xD574;&#xC11C; tqdm&#xC744; &#xC0AC;&#xC6A9;&#xD574;&#xBCF4;&#xACE0; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xB300;&#xB2E8;&#xD55C; &#xAE30;&#xB2A5;&#xC774; &#xC788;&#xB2E4;&#xACE0; &#xC0DD;&#xAC01;&#xB418;&#xC9C0;&#xB294; &#xC54A;&#xC9C0;&#xB9CC; &#xB9AC;&#xB205;&#xC2A4;&#xC5D0;&#xC11C; &#xD328;&#xD0A4;&#xC9C0;&#xB97C; &#xC124;&#xCE58;&#xD560;&#xB54C; &#xD14D;&#xC2A4;&#xD2B8;&#xC0C1;&#xC5D0;&#xC11C;&#xB3C4; &#xD504;&#xB85C;&#xADF8;&#xB808;&#xC2A4;&#xBC14;&#xAC00; &#xB098;&#xC624;&#xB294; &#xAC83;&#xC774; &#xC778;&#xC0C1;&#xC801;&#xC774;&#xC5B4;&#xC11C; &#xBA87;&#xBC88;&#xC740; &#xB354; &#xC368;&#xBCF4;&#xACE0; &#xC2F6;&#xC740; &#xB77C;&#xC774;&#xBE0C;&#xB7EC;&#xB9AC;&#xB124;&#xC694;. &#xCF54;&#xB529;&#xC744; &#xD558;&#xB2E4;&#xBCF4;&#xBA74; &#xC790;&#xC8FC; &#xC0AC;&#xC6A9;&#xD558;&#xB294; &#xD568;&#xC218;&#xB098; &#xBA85;&#xB839;&#xC5B4;&#xB77C;&#xB3C4; &#xC0AC;&#xC6A9;&#xBC95;&#xC744; &#xD655;&#xC778;&#xD560; &#xD544;&#xC694;&#xAC00; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC774;&#xC804;&#xC5D0; &#xB378;&#xD30C;&#xC774;&#xB97C; &#xC0AC;&#xC6A9;&#xD560;&#xB54C;&#xC5D0;&#xB3C4; &#xC790;&#xC8FC; &#xC0AC;&#xC6A9;&#xD588;&#xB358; &#xAE30;&#xB2A5;&#xC774;&#xB77C; &#xD574;&#xB2F9; &#xAE30;&#xB2A5;&#xC774; &#xC788;&#xC744;&#xAE4C; &#xD588;&#xB294;&#xB370; &#xD30C;&#xC774;&#xCC38;&#xC5D0;&#xB3C4; &#xC774; &#xAE30;&#xB2A5;&#xC774; &#xC788;&#xB124;&#xC694;. &#xC54C;&#xACE0;&#xC2F6;&#xC740; &#xD568;&#xC218;(<code>function</code>)&#xC5D0; &#xB9C8;&#xC6B0;&#xC2A4; &#xCEE4;&#xC11C;&#xB97C; &#xAC00;&#xC838;&#xB2E4; &#xB193;&#xACE0;  <code>ctrl</code>&#xD0A4;&#xC640; &#xD568;&#xAED8; &#xC88C;&#xD074;&#xB9AD;&#xC744; &#xD574;&#xC90D;&#xB2C8;&#xB2E4;. &#xADF8;&#xB7EC;&#xBA74; &#xC544;&#xB798; &#xADF8;&#xB9BC;&#xACFC; &#xAC19;&#xC774; &#xD574;&#xB2F9; &#xD568;&#xC218;(&apos;function&apos;)&#xC758; &#xC815;&#xC758; &#xBD80;&#xBD84;&#xC774; &#xB098;&#xC635;&#xB2C8;&#xB2E4;.</p>
<p><img src="http://suitmyself.com/content/images/2023/05/help_doc_001.png" alt="Pycharm Study 002" loading="lazy"></p>
<p>&#xADF8;&#xB7F0;&#xB370; &#xD574;&#xB2F9; &#xC18C;&#xC2A4;&#xB97C; &#xC9C1;&#xC811; &#xC218;&#xC815;&#xD560;&#xAC8C; &#xC544;&#xB2C8;&#xB77C;&#xBA74; &#xC870;&#xAE08; &#xB354; &#xAC04;&#xD3B8;&#xD55C; &#xBC29;&#xBC95;&#xC774; &#xC788;&#xB124;&#xC694;. &#xBB3C;&#xB860; &#xB2E4;&#xB978; &#xD234;&#xC5D0;&#xB3C4; &#xC788;&#xB294; &#xAE30;&#xB2A5;&#xB4E4;&#xC785;&#xB2C8;&#xB2E4;.</p>
<p>&#xC54C;&#xACE0;&#xC2F6;&#xC740; &#xD568;&#xC218;(<code>function</code>)&#xC5D0; &#xB9C8;&#xC6B0;&#xC2A4; &#xCEE4;&#xC11C;&#xB97C; &#xAC00;&#xC838;&#xB2E4; &#xB193;&#xACE0; <code>ctrl+q</code>&#xB97C; &#xB20C;&#xB7EC;&#xC90D;&#xB2C8;&#xB2E4;. &#xADF8;&#xB7EC;&#xBA74; &#xC544;&#xB798;&#xC640; &#xAC19;&#xC774; &#xD48D;&#xC120;&#xB3C4;&#xC6C0;&#xB9D0;&#xC774; &#xB098;&#xC635;&#xB2C8;&#xB2E4;.</p>
<p><img src="http://suitmyself.com/content/images/2023/05/help_doc_002.png" alt="Pycharm Study 002" loading="lazy"></p>
<p>&#xADF8;&#xB7F0;&#xB370; &#xC774; &#xACBD;&#xC6B0;&#xB3C4; &#xC870;&#xAE08; &#xBD88;&#xD3B8;&#xD558;&#xB2E4; &#xC2F6;&#xC73C;&#xBA74; &#xD574;&#xB2F9; &#xB3C4;&#xC6C0;&#xB9D0;&#xC774; &#xBCF4;&#xC774;&#xB294; &#xC0C1;&#xD0DC;&#xC5D0;&#xC11C; <code>ctrl+q</code>&#xB97C; &#xD55C;&#xBC88; &#xB354; &#xB20C;&#xB7EC;&#xC90D;&#xB2C8;&#xB2E4;. &#xADF8;&#xB7EC;&#xBA74; &#xC544;&#xB798;&#xC640; &#xAC19;&#xC774; &#xC6B0;&#xCE21;&#xC5D0; &#xD574;&#xB2F9; &#xB0B4;&#xC6A9;&#xC774; &#xCD9C;&#xB825;&#xB429;&#xB2C8;&#xB2E4;.</p>
<p><img src="http://suitmyself.com/content/images/2023/05/help_doc_003.png" alt="Pycharm Study 002" loading="lazy"></p>
<p>&#xD30C;&#xB77C;&#xBA54;&#xD130;&#xC640; &#xD30C;&#xB77C;&#xBA54;&#xD130;&#xC5D0; &#xB300;&#xD55C; &#xC124;&#xBA85;&#xC774; &#xAC19;&#xC774; &#xBCF4;&#xC785;&#xB2C8;&#xB2E4;.</p>
<p><code>tqdm</code>&#xC758; &#xD30C;&#xB77C;&#xBA54;&#xD130;&#xC640; &#xADF8; &#xC124;&#xBA85;&#xC785;&#xB2C8;&#xB2E4;.</p>
<pre><code class="language-python">tqdm.std.tqdm def __init__(self,
             iterable: Any = None,
             desc: Any = None,
             total: Any = None,
             leave: Any = True,
             file: Any = None,
             ncols: Any = None,
             mininterval: Any = 0.1,
             maxinterval: Any = 10.0,
             miniters: Any = None,
             ascii: Any = None,
             disable: Any = False,
             unit: Any = &apos;it&apos;,
             unit_scale: Any = False,
             dynamic_ncols: Any = False,
             smoothing: Any = 0.3,
             bar_format: Any = None,
             initial: Any = 0,
             position: Any = None,
             postfix: Any = None,
             unit_divisor: Any = 1000,
             write_bytes: Any = False,
             lock_args: Any = None,
             nrows: Any = None,
             colour: Any = None,
             delay: Any = 0,
             gui: Any = False,
             **kwargs: Any) -&gt; Any
</code></pre>
<blockquote>
<p><strong>iterable</strong> &#x2013; &#xC9C4;&#xD589;&#xB960; &#xD45C;&#xC2DC;&#xC904;&#xB85C; &#xC7A5;&#xC2DD;&#xD558;&#xB294; &#xBC18;&#xBCF5; &#xAC00;&#xB2A5;. &#xC5C5;&#xB370;&#xC774;&#xD2B8;&#xB97C; &#xC218;&#xB3D9;&#xC73C;&#xB85C; &#xAD00;&#xB9AC;&#xD558;&#xB824;&#xBA74; &#xACF5;&#xBC31;&#xC73C;&#xB85C; &#xB450;&#xC2ED;&#xC2DC;&#xC624;.<br>
<strong>desc</strong> &#x2013; &#xC9C4;&#xD589;&#xB960; &#xD45C;&#xC2DC;&#xC904;&#xC758; &#xC811;&#xB450;&#xC0AC;&#xC785;&#xB2C8;&#xB2E4;. &#xD504;&#xB85C;&#xADF8;&#xB808;&#xC2A4;&#xBC14; &#xC55E;&#xC5D0; &#xD14D;&#xC2A4;&#xD2B8;&#xB97C; &#xCD9C;&#xB825;&#xD569;&#xB2C8;&#xB2E4;.<br>
<strong>total</strong> &#x2013; &#xC608;&#xC0C1;&#xB418;&#xB294; &#xBC18;&#xBCF5; &#xD69F;&#xC218;&#xC785;&#xB2C8;&#xB2E4;. &#xC9C0;&#xC815;&#xD558;&#xC9C0; &#xC54A;&#xC73C;&#xBA74; &#xAC00;&#xB2A5;&#xD55C;len(iterable)&#xC774; &#xC0AC;&#xC6A9;&#xB429;&#xB2C8;&#xB2E4;. float(&quot;inf&quot;)&#xC778; &#xACBD;&#xC6B0; &#xB610;&#xB294; &#xCD5C;&#xD6C4;&#xC758; &#xC218;&#xB2E8;&#xC73C;&#xB85C; &#xAE30;&#xBCF8; &#xC9C4;&#xD589;&#xB960; &#xD1B5;&#xACC4;&#xB9CC; &#xD45C;&#xC2DC;&#xB429;&#xB2C8;&#xB2E4;(ETA &#xC5C6;&#xC74C;, &#xC9C4;&#xD589;&#xB960; &#xD45C;&#xC2DC;&#xC904; &#xC5C6;&#xC74C;). gui&#xAC00; True&#xC774;&#xACE0; &#xC774; &#xB9E4;&#xAC1C;&#xBCC0;&#xC218;&#xAC00; &#xD6C4;&#xC18D; &#xC5C5;&#xB370;&#xC774;&#xD2B8;&#xAC00; &#xD544;&#xC694;&#xD55C; &#xACBD;&#xC6B0; &#xCD08;&#xAE30; &#xC784;&#xC758;&#xC758; &#xD070; &#xC591;&#xC218;&#xB97C; &#xC9C0;&#xC815;&#xD569;&#xB2C8;&#xB2E4;.<br>
<strong>leave</strong> &#x2013; [&#xAE30;&#xBCF8;&#xAC12;: True]&#xC778; &#xACBD;&#xC6B0; &#xBC18;&#xBCF5; &#xC885;&#xB8CC; &#xC2DC; &#xC9C4;&#xD589;&#xB960; &#xD45C;&#xC2DC;&#xC904;&#xC758; &#xBAA8;&#xB4E0; &#xCD94;&#xC801;&#xC744; &#xC720;&#xC9C0;&#xD569;&#xB2C8;&#xB2E4;. None&#xC774;&#xBA74; &#xC704;&#xCE58;&#xAC00; 0&#xC778; &#xACBD;&#xC6B0;&#xC5D0;&#xB9CC; &#xB5A0;&#xB0A9;&#xB2C8;&#xB2E4;.<br>
<strong>file</strong> &#x2013; &#xC9C4;&#xD589;&#xB960; &#xBA54;&#xC2DC;&#xC9C0;&#xB97C; &#xCD9C;&#xB825;&#xD560; &#xC704;&#xCE58;&#xB97C; &#xC9C0;&#xC815;&#xD569;&#xB2C8;&#xB2E4;(&#xAE30;&#xBCF8;&#xAC12;: sys.stderr). file.write(str) &#xBC0F; file.flush() &#xBA54;&#xC11C;&#xB4DC;&#xB97C; &#xC0AC;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;. &#xC778;&#xCF54;&#xB529;&#xC5D0; &#xB300;&#xD574;&#xC11C;&#xB294; write_bytes&#xB97C; &#xCC38;&#xC870;&#xD558;&#xC2ED;&#xC2DC;&#xC624;.<br>
<strong>ncols</strong> &#x2013; &#xC804;&#xCCB4; &#xCD9C;&#xB825; &#xBA54;&#xC2DC;&#xC9C0;&#xC758; &#xB108;&#xBE44;&#xC785;&#xB2C8;&#xB2E4;. &#xC9C0;&#xC815;&#xB41C; &#xACBD;&#xC6B0; &#xC774; &#xBC94;&#xC704; &#xB0B4;&#xC5D0; &#xC788;&#xB3C4;&#xB85D; &#xC9C4;&#xD589;&#xB960; &#xD45C;&#xC2DC;&#xC904;&#xC758; &#xD06C;&#xAE30;&#xB97C; &#xB3D9;&#xC801;&#xC73C;&#xB85C; &#xC870;&#xC815;&#xD569;&#xB2C8;&#xB2E4;. &#xC9C0;&#xC815;&#xD558;&#xC9C0; &#xC54A;&#xC73C;&#xBA74; &#xD658;&#xACBD; &#xB108;&#xBE44;&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xB824;&#xACE0; &#xC2DC;&#xB3C4;&#xD569;&#xB2C8;&#xB2E4;. &#xD3F4;&#xBC31;&#xC740; &#xBBF8;&#xD130; &#xB108;&#xBE44; 10&#xC774;&#xBA70; &#xCE74;&#xC6B4;&#xD130; &#xBC0F; &#xD1B5;&#xACC4;&#xC5D0; &#xB300;&#xD55C; &#xC81C;&#xD55C;&#xC774; &#xC5C6;&#xC2B5;&#xB2C8;&#xB2E4;. 0&#xC774;&#xBA74; &#xBBF8;&#xD130;&#xB97C; &#xC778;&#xC1C4;&#xD558;&#xC9C0; &#xC54A;&#xC2B5;&#xB2C8;&#xB2E4;(&#xD1B5;&#xACC4;&#xB9CC;).<br>
<strong>mininterval</strong> &#x2013; &#xCD5C;&#xC18C; &#xC9C4;&#xD589;&#xB960; &#xD45C;&#xC2DC; &#xC5C5;&#xB370;&#xC774;&#xD2B8; &#xAC04;&#xACA9;[&#xAE30;&#xBCF8;&#xAC12;: 0.1]&#xCD08;.<br>
<strong>maxinterval</strong> &#x2013; &#xCD5C;&#xB300; &#xC9C4;&#xD589;&#xB960; &#xD45C;&#xC2DC; &#xC5C5;&#xB370;&#xC774;&#xD2B8; &#xAC04;&#xACA9;[&#xAE30;&#xBCF8;&#xAC12;: 10]&#xCD08;. &#xAE34; &#xB514;&#xC2A4;&#xD50C;&#xB808;&#xC774; &#xC5C5;&#xB370;&#xC774;&#xD2B8; &#xC9C0;&#xC5F0; &#xD6C4; &#xCD5C;&#xC18C; &#xAC04;&#xACA9;&#xC5D0; &#xD574;&#xB2F9;&#xD558;&#xB3C4;&#xB85D; &#xBBF8;&#xB2C8;&#xD130;&#xB97C; &#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xC870;&#xC815;&#xD569;&#xB2C8;&#xB2E4;. dynamic_miniters &#xB610;&#xB294; &#xBAA8;&#xB2C8;&#xD130; &#xC2A4;&#xB808;&#xB4DC;&#xAC00; &#xD65C;&#xC131;&#xD654;&#xB41C; &#xACBD;&#xC6B0;&#xC5D0;&#xB9CC; &#xC791;&#xB3D9;&#xD569;&#xB2C8;&#xB2E4;.<br>
<strong>miniters</strong> &#x2013; &#xCD5C;&#xC18C; &#xC9C4;&#xD589;&#xB960; &#xD45C;&#xC2DC; &#xC5C5;&#xB370;&#xC774;&#xD2B8; &#xAC04;&#xACA9;(&#xBC18;&#xBCF5;). 0 &#xBC0F; dynamic_miniters&#xC778; &#xACBD;&#xC6B0; &#xB3D9;&#xC77C;&#xD55C; mininterval&#xB85C; &#xC790;&#xB3D9; &#xC870;&#xC815;&#xB429;&#xB2C8;&#xB2E4;(CPU &#xD6A8;&#xC728;&#xC774; &#xB354; &#xB192;&#xACE0; &#xD0C0;&#xC774;&#xD2B8;&#xD55C; &#xB8E8;&#xD504;&#xC5D0; &#xC801;&#xD569;). &gt;0 &#xC778; &#xACBD;&#xC6B0; &#xC9C0;&#xC815;&#xB41C; &#xBC18;&#xBCF5; &#xD69F;&#xC218; &#xD45C;&#xC2DC;&#xB97C; &#xAC74;&#xB108;&#xB701;&#xB2C8;&#xB2E4;. &#xB9E4;&#xC6B0; &#xD6A8;&#xC728;&#xC801;&#xC778; &#xB8E8;&#xD504;&#xB97C; &#xC5BB;&#xC73C;&#xB824;&#xBA74; &#xC774;&#xAC83;&#xACFC; &#xCD5C;&#xC18C; &#xAC04;&#xACA9;&#xC744; &#xC870;&#xC815;&#xD558;&#xC2ED;&#xC2DC;&#xC624;. &#xBE60;&#xB978; &#xBC18;&#xBCF5;&#xACFC; &#xB290;&#xB9B0; &#xBC18;&#xBCF5;(&#xB124;&#xD2B8;&#xC6CC;&#xD06C;, &#xD56D;&#xBAA9; &#xAC74;&#xB108;&#xB6F0;&#xAE30; &#xB4F1;)&#xC73C;&#xB85C; &#xC9C4;&#xD589; &#xC0C1;&#xD669;&#xC774; &#xBD88;&#xADDC;&#xCE59;&#xD55C; &#xACBD;&#xC6B0; miniters=1&#xB85C; &#xC124;&#xC815;&#xD574;&#xC57C; &#xD569;&#xB2C8;&#xB2E4;.<br>
<strong>ascii</strong> &#x2013; &#xC9C0;&#xC815;&#xB418;&#xC9C0; &#xC54A;&#xC558;&#xAC70;&#xB098; False&#xC778; &#xACBD;&#xC6B0; &#xC720;&#xB2C8;&#xCF54;&#xB4DC;(&#xBD80;&#xB4DC;&#xB7EC;&#xC6B4; &#xBE14;&#xB85D;)&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; &#xBBF8;&#xD130;&#xB97C; &#xCC44;&#xC6C1;&#xB2C8;&#xB2E4;. &#xD3F4;&#xBC31;&#xC740; ASCII &#xBB38;&#xC790; &quot;123456789#&quot;&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xB294; &#xAC83;&#xC785;&#xB2C8;&#xB2E4;.<br>
<strong>disable</strong> &#x2013; &#xC804;&#xCCB4; &#xC9C4;&#xD589;&#xB960; &#xD45C;&#xC2DC;&#xC904; &#xB798;&#xD37C;&#xB97C; &#xBE44;&#xD65C;&#xC131;&#xD654;&#xD560;&#xC9C0; &#xC5EC;&#xBD80;[&#xAE30;&#xBCF8;&#xAC12;: False]. None&#xC73C;&#xB85C; &#xC124;&#xC815;&#xD558;&#xBA74; TTY&#xAC00; &#xC544;&#xB2CC; &#xACBD;&#xC6B0; &#xBE44;&#xD65C;&#xC131;&#xD654;&#xD569;&#xB2C8;&#xB2E4;.<br>
<strong>unit</strong> &#x2013; &#xAC01; &#xBC18;&#xBCF5;&#xC758; &#xB2E8;&#xC704;&#xB97C; &#xC815;&#xC758;&#xD558;&#xB294; &#xB370; &#xC0AC;&#xC6A9;&#xD560; &#xBB38;&#xC790;&#xC5F4; [&#xAE30;&#xBCF8;&#xAC12;: it].<br>
<strong>unit_scale</strong> &#x2013; 1 &#xB610;&#xB294; True&#xC778; &#xACBD;&#xC6B0; &#xBC18;&#xBCF5; &#xD69F;&#xC218;&#xAC00; &#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xCD95;&#xC18C;/&#xD655;&#xB300;&#xB418;&#xACE0; &#xAD6D;&#xC81C; &#xB2E8;&#xC704;&#xACC4; &#xD45C;&#xC900;&#xC744; &#xB530;&#xB974;&#xB294; &#xBA54;&#xD2B8;&#xB9AD; &#xC811;&#xB450;&#xC5B4;&#xAC00; &#xCD94;&#xAC00;&#xB429;&#xB2C8;&#xB2E4;(&#xD0AC;&#xB85C;, &#xBA54;&#xAC00; &#xB4F1;)[&#xAE30;&#xBCF8;&#xAC12;: False]. 0&#xC774; &#xC544;&#xB2CC; &#xB2E4;&#xB978; &#xC22B;&#xC790;&#xAC00; &#xC788;&#xC73C;&#xBA74; &#xD569;&#xACC4;&#xC640; n&#xC744; &#xC870;&#xC815;&#xD569;&#xB2C8;&#xB2E4;.<br>
<strong>dynamic_ncols</strong> &#x2013; &#xC124;&#xC815;&#xB41C; &#xACBD;&#xC6B0; ncols &#xBC0F; nrows&#xB97C; &#xD658;&#xACBD;&#xC5D0; &#xB9DE;&#xAC8C; &#xC9C0;&#xC18D;&#xC801;&#xC73C;&#xB85C; &#xBCC0;&#xACBD;&#xD569;&#xB2C8;&#xB2E4;(&#xCC3D; &#xD06C;&#xAE30; &#xC870;&#xC815; &#xD5C8;&#xC6A9;)[&#xAE30;&#xBCF8;&#xAC12;: False].<br>
<strong>smoothing</strong> &#x2013; &#xC18D;&#xB3C4; &#xCD94;&#xC815;&#xC744; &#xC704;&#xD55C; &#xC9C0;&#xC218; &#xC774;&#xB3D9; &#xD3C9;&#xADE0; &#xD3C9;&#xD65C; &#xACC4;&#xC218;(GUI &#xBAA8;&#xB4DC;&#xC5D0;&#xC11C;&#xB294; &#xBB34;&#xC2DC;&#xB428;). &#xBC94;&#xC704;&#xB294; 0(&#xD3C9;&#xADE0; &#xC18D;&#xB3C4;)&#xC5D0;&#xC11C; 1(&#xD604;&#xC7AC;/&#xC21C;&#xAC04; &#xC18D;&#xB3C4;)&#xAE4C;&#xC9C0;&#xC785;&#xB2C8;&#xB2E4;[&#xAE30;&#xBCF8;&#xAC12;: 0.3].<br>
<strong>bar_format</strong> &#x2013; &#xC0AC;&#xC6A9;&#xC790; &#xC9C0;&#xC815; &#xB9C9;&#xB300; &#xBB38;&#xC790;&#xC5F4; &#xD615;&#xC2DD;&#xC744; &#xC9C0;&#xC815;&#xD569;&#xB2C8;&#xB2E4;. &#xC131;&#xB2A5;&#xC5D0; &#xC601;&#xD5A5;&#xC744; &#xC904; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. [&#xAE30;&#xBCF8;&#xAC12;: &apos;{l_bar}{bar}{r_bar}&apos;], where l_bar=&apos;{desc}: {percentage:3.0f}%|&apos; &#xADF8;&#xB9AC;&#xACE0; r_bar=&apos;| {n_fmt}/{total_fmt} [{elapsed}&lt;{remaining},&apos; &apos;{rate_fmt}{postfix}]&apos;<br>
&#xAC00;&#xB2A5;&#xD55C; &#xBCC0;&#xC218;: l_bar, bar, r_bar, n, n_fmt, total, total_fmt, &#xBC31;&#xBD84;&#xC728;, &#xACBD;&#xACFC;, elapsed_s, ncols, nrows, desc, &#xB2E8;&#xC704;, &#xC18D;&#xB3C4;, rate_fmt, rate_noinv, rate_noinv_fmt, rate_inv, rate_inv_fmt, &#xC811;&#xBBF8;&#xC0AC;, unit_divisor, &#xB0A8;&#xC740;, &#xC794;&#xC5EC;_s, &#xC5D0;&#xD0C0;.{desc}&#xAC00; &#xBE44;&#xC5B4; &#xC788;&#xC73C;&#xBA74; &#xD6C4;&#xD589; &quot;:&quot;&#xC774; &#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xC81C;&#xAC70;&#xB429;&#xB2C8;&#xB2E4;.<br>
<strong>initial</strong>  &#x2013; &#xCD08;&#xAE30; &#xCE74;&#xC6B4;&#xD130; &#xAC12;&#xC785;&#xB2C8;&#xB2E4;. &#xC9C4;&#xD589;&#xB960; &#xD45C;&#xC2DC;&#xC904;&#xC744; &#xB2E4;&#xC2DC; &#xC2DC;&#xC791;&#xD560; &#xB54C; &#xC720;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;[&#xAE30;&#xBCF8;&#xAC12;: 0]. float&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xB294; &#xACBD;&#xC6B0; bar_format&#xC5D0;&#xC11C; {n:.3f} &#xB610;&#xB294; &#xC720;&#xC0AC; &#xD56D;&#xBAA9;&#xC744; &#xC9C0;&#xC815;&#xD558;&#xAC70;&#xB098; unit_scale&#xC744; &#xC9C0;&#xC815;&#xD558;&#xB294; &#xAC83;&#xC774; &#xC88B;&#xC2B5;&#xB2C8;&#xB2E4;.<br>
<strong>position</strong> &#x2013; &#xC774; &#xB9C9;&#xB300;&#xB97C; &#xC778;&#xC1C4;&#xD560; &#xB77C;&#xC778; &#xC624;&#xD504;&#xC14B;&#xC744; &#xC9C0;&#xC815;&#xD569;&#xB2C8;&#xB2E4;(0&#xBD80;&#xD130; &#xC2DC;&#xC791;) &#xC9C0;&#xC815;&#xD558;&#xC9C0; &#xC54A;&#xC73C;&#xBA74; &#xC790;&#xB3D9;&#xC785;&#xB2C8;&#xB2E4;. &#xD55C; &#xBC88;&#xC5D0; &#xC5EC;&#xB7EC; &#xB9C9;&#xB300;&#xB97C; &#xAD00;&#xB9AC;&#xD558;&#xB294; &#xB370; &#xC720;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;(&#xC608;: &#xC2A4;&#xB808;&#xB4DC;&#xC5D0;&#xC11C;).<br>
<strong>postfix </strong>&#x2013; &#xB9C9;&#xB300; &#xB05D;&#xC5D0; &#xD45C;&#xC2DC;&#xD560; &#xCD94;&#xAC00; &#xD1B5;&#xACC4;&#xB97C; &#xC9C0;&#xC815;&#xD569;&#xB2C8;&#xB2E4;. &#xAC00;&#xB2A5;&#xD55C; &#xACBD;&#xC6B0; set_postfix(**postfix)&#xB97C; &#xD638;&#xCD9C;&#xD569;&#xB2C8;&#xB2E4;(dict).<br>
<strong>unit_divisor</strong>&#x2013; [&#xAE30;&#xBCF8;&#xAC12;: 1000], unit_scale&#xC774; True&#xAC00; &#xC544;&#xB2C8;&#xBA74; &#xBB34;&#xC2DC;&#xB429;&#xB2C8;&#xB2E4;.<br>
<strong>write_bytes</strong> &#x2013; &#xBC14;&#xC774;&#xD2B8; &#xC4F0;&#xAE30; &#xC5EC;&#xBD80;. If(&#xAE30;&#xBCF8;&#xAC12;: False)&#xB294; &#xC720;&#xB2C8;&#xCF54;&#xB4DC;&#xB97C; &#xC791;&#xC131;&#xD569;&#xB2C8;&#xB2E4;.<br>
<strong>lock_args</strong> &#x2013; &#xC911;&#xAC04; &#xCD9C;&#xB825;(&#xCD08;&#xAE30;&#xD654;, &#xBC18;&#xBCF5; &#xBC0F; &#xC5C5;&#xB370;&#xC774;&#xD2B8;)&#xC744; &#xC704;&#xD55C; &#xC0C8;&#xB85C; &#xACE0;&#xCE68;&#xC5D0; &#xC804;&#xB2EC;&#xB429;&#xB2C8;&#xB2E4;.<br>
<strong>nrows</strong> &#x2013; &#xD654;&#xBA74; &#xB192;&#xC774;. &#xC9C0;&#xC815;&#xB41C; &#xACBD;&#xC6B0; &#xC774; &#xACBD;&#xACC4; &#xC678;&#xBD80;&#xC5D0; &#xC911;&#xCCA9;&#xB41C; &#xB9C9;&#xB300;&#xB97C; &#xC228;&#xAE41;&#xB2C8;&#xB2E4;. &#xC9C0;&#xC815;&#xD558;&#xC9C0; &#xC54A;&#xC73C;&#xBA74; &#xD658;&#xACBD; &#xB192;&#xC774;&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xB824;&#xACE0; &#xC2DC;&#xB3C4;&#xD569;&#xB2C8;&#xB2E4;. &#xB300;&#xCCB4;&#xB294; 20&#xC785;&#xB2C8;&#xB2E4;.<br>
<strong>color</strong> &#x2013; &#xB9C9;&#xB300; &#xC0C9;&#xC0C1;(&#xC608;: &apos;&#xB179;&#xC0C9;&apos;, &apos;#00ff00&apos;).<br>
<strong>delay</strong> &#x2013; [&#xAE30;&#xBCF8;&#xAC12;: 0]&#xCD08;&#xAC00; &#xACBD;&#xACFC;&#xD560; &#xB54C;&#xAE4C;&#xC9C0; &#xD45C;&#xC2DC;&#xD558;&#xC9C0; &#xC54A;&#xC2B5;&#xB2C8;&#xB2E4;.<br>
<strong>gui</strong> &#x2013; &#xACBD;&#xACE0;: &#xB0B4;&#xBD80; &#xB9E4;&#xAC1C;&#xBCC0;&#xC218; - &#xC0AC;&#xC6A9;&#xD558;&#xC9C0; &#xB9C8;&#xC2ED;&#xC2DC;&#xC624;. &#xB300;&#xC2E0; tqdm.gui.tqdm(...)&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xC2ED;&#xC2DC;&#xC624;. &#xC124;&#xC815;&#xD558;&#xBA74; &#xADF8;&#xB798;&#xD53D; &#xCD9C;&#xB825;&#xC5D0; matplotlib &#xC560;&#xB2C8;&#xBA54;&#xC774;&#xC158;&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xB824;&#xACE0; &#xC2DC;&#xB3C4;&#xD569;&#xB2C8;&#xB2E4;[&#xAE30;&#xBCF8;&#xAC12;: False].</p>
</blockquote>
<p><strong>&#xD504;&#xB85C;&#xADF8;&#xB808;&#xC2A4;&#xBC14;&#xB97C; &#xC218;&#xB3D9;&#xC73C;&#xB85C; &#xC5C5;&#xB370;&#xC774;&#xD2B8; &#xD558;&#xB294; &#xACBD;&#xC6B0;</strong></p>
<blockquote>
<p><strong>update</strong> - &#xC804;&#xCCB4; &#xC9C4;&#xD589;&#xB3C4;&#xB97C; &#xC54C;&#xACE0;, &#xC9C4;&#xD589;&#xB41C;&#xB9CC;&#xD07C; &#xC9C4;&#xD589;&#xBC14;&#xB97C; &#xD45C;&#xC2DC;&#xD560; &#xACBD;&#xC6B0; update &#xC5D0; &#xC9C4;&#xD589;&#xB3C4;&#xB97C; &#xD30C;&#xB77C;&#xBA54;&#xD130;&#xB85C; &#xCD94;&#xAC00;&#xD560; &#xC218; &#xC788;&#xB2E4;.<br>
<strong>clear()</strong> - &#xD654;&#xBA74; &#xC0AD;&#xC81C;<br>
<strong>refresh()</strong>- &#xAC15;&#xC81C;&#xB85C; &#xD654;&#xBA74;&#xC744; &#xAC31;&#xC2E0;&#xD569;&#xB2C8;&#xB2E4;.</p>
</blockquote>
<pre><code class="language-python">prog = tqdm(total=500, initial=200, ascii=True)
for i in range(200):
    time.sleep(0.1)
    prog.update( 400/200 )
prog.close()
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Pycharm Study 001]]></title><description><![CDATA[<!--kg-card-begin: markdown--><hr>
<p>&#xD30C;&#xC774;&#xC36C; &#xACF5;&#xBD80;&#xB97C; &#xC704;&#xD574; &#xD30C;&#xC774;&#xCC38;&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xBA74;&#xC11C; &#xC0AC;&#xC6A9;&#xBC95;&#xC744; &#xAE30;&#xB85D;&#xD574;&#xB461;&#xB2C8;&#xB2E4;.<br>
&#xC0AC;&#xC2E4;&#xC0C1; &#xACF5;&#xBD80;&#xAE4C;&#xC9C0; &#xD560; &#xD544;&#xC694;&#xB294; &#xC5C6;&#xC9C0;&#xB9CC; &#xD234;&#xC744; &#xC798; &#xC368;&#xBCF4;&#xACE0; &#xC2F6;&#xC744; &#xB54C;</p>]]></description><link>http://suitmyself.com/pycharm-manual/</link><guid isPermaLink="false">6462f6edbec44232aa42f1b6</guid><category><![CDATA[Python]]></category><category><![CDATA[Programming]]></category><dc:creator><![CDATA[benjamin kim]]></dc:creator><pubDate>Tue, 16 May 2023 06:11:47 GMT</pubDate><media:content url="http://suitmyself.com/content/images/2023/05/preview.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><hr>
<img src="http://suitmyself.com/content/images/2023/05/preview.png" alt="Pycharm Study 001"><p>&#xD30C;&#xC774;&#xC36C; &#xACF5;&#xBD80;&#xB97C; &#xC704;&#xD574; &#xD30C;&#xC774;&#xCC38;&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xBA74;&#xC11C; &#xC0AC;&#xC6A9;&#xBC95;&#xC744; &#xAE30;&#xB85D;&#xD574;&#xB461;&#xB2C8;&#xB2E4;.<br>
&#xC0AC;&#xC2E4;&#xC0C1; &#xACF5;&#xBD80;&#xAE4C;&#xC9C0; &#xD560; &#xD544;&#xC694;&#xB294; &#xC5C6;&#xC9C0;&#xB9CC; &#xD234;&#xC744; &#xC798; &#xC368;&#xBCF4;&#xACE0; &#xC2F6;&#xC744; &#xB54C;&#xAC00; &#xC788;&#xC5B4;&#xC11C;.<br>
VsCode &#xB3C4; &#xCDA9;&#xBD84;&#xD788; &#xC88B;&#xC9C0;&#xB9CC; Pycharm&#xC774; &#xC368;&#xBCF4;&#xACE0; &#xC2F6;&#xC5B4;&#xC11C;~~</p>
<p>&#xC544;&#xB798; &#xB0B4;&#xC6A9;&#xC758; &#xC55E;&#xBD80;&#xBD84;&#xC740; Jetbrains.com &#xC758; &#xB0B4;&#xC6A9;&#xC744; &#xBC88;&#xC5ED;&#xD6C4; &#xC815;&#xB9AC;&#xD55C; &#xAC83;&#xC785;&#xB2C8;&#xB2E4;.</p>
<h2 id="0-%EC%84%A4%EC%B9%98">0. &#xC124;&#xCE58;</h2>
<h2 id="1-%EC%83%88%EB%A1%9C%EC%9A%B4-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EC%83%9D%EC%84%B1">1. &#xC0C8;&#xB85C;&#xC6B4; &#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xC0DD;&#xC131;</h2>
<p><img src="http://suitmyself.com/content/images/2023/05/new_prj.png" alt="Pycharm Study 001" loading="lazy"></p>
<p>1-1. &#xD658;&#xC601; &#xD654;&#xBA74; &#xC5D0; &#xC788;&#xB294; &#xACBD;&#xC6B0; &#xC0C8; &#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xB97C; &#xD074;&#xB9AD;&#xD569;&#xB2C8;&#xB2E4; . &#xC774;&#xBBF8; &#xC5F4;&#xB824; &#xC788;&#xB294; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xAC00; &#xC788;&#xC73C;&#xBA74; &#xD30C;&#xC77C; | &#xBA54;&#xC778; &#xBA54;&#xB274;&#xC5D0;&#xC11C; &#xC0C8; &#xD504;&#xB85C;&#xC81D;&#xD2B8; .</p>
<p>1-2. PyCharm&#xC5D0;&#xC11C; &#xB2E4;&#xC591;&#xD55C; &#xC720;&#xD615;&#xC758; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xB97C; &#xB9CC;&#xB4E4; &#xC218; &#xC788;&#xC9C0;&#xB9CC; &#xC774; &#xC790;&#xC2B5;&#xC11C;&#xC5D0;&#xC11C;&#xB294; &#xAC04;&#xB2E8;&#xD55C; Pure Python &#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xB97C; &#xB9CC;&#xB4E4;&#xC5B4; &#xBCF4;&#xACA0;&#xC2B5;&#xB2C8;&#xB2E4; . &#xC774; &#xD15C;&#xD50C;&#xB9BF;&#xC740; &#xBE48; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xB97C; &#xC0DD;&#xC131;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>1-3. &#xD504;&#xB85C;&#xC81D;&#xD2B8; &#xC704;&#xCE58;&#xB97C; &#xC120;&#xD0DD;&#xD569;&#xB2C8;&#xB2E4;. Location&#xCC3E;&#xC544;&#xBCF4;&#xAE30; &#xBC84;&#xD2BC; &#xD544;&#xB4DC; &#xC606;&#xC5D0; &#xC788;&#xB294; &#xBC84;&#xD2BC;&#xC744; &#xD074;&#xB9AD; &#xD558;&#xACE0; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC758; &#xB514;&#xB809;&#xD1A0;&#xB9AC;&#xB97C; &#xC9C0;&#xC815;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>1-4. &#xB610;&#xD55C; &#xC774; &#xC790;&#xC2B5;&#xC11C;&#xB97C; &#xC704;&#xD574; &#xC0C8; Python &#xD30C;&#xC77C;&#xC744; &#xB9CC;&#xB4E4; &#xAC83;&#xC774;&#xBBC0;&#xB85C; main.py &#xC2DC;&#xC791; &#xC2A4;&#xD06C;&#xB9BD;&#xD2B8; &#xB9CC;&#xB4E4;&#xAE30; &#xD655;&#xC778;&#xB780;&#xC744; &#xC120;&#xD0DD; &#xCDE8;&#xC18C;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>1-5. Python &#xC758; &#xAE30;&#xBCF8; &#xC124;&#xC815;&#xC740; &#xAC01; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC5D0; &#xB300;&#xD574; virtualenv&#xB97C; &#xB9CC;&#xB4DC;&#xB294; &#xAC83;&#xC785;&#xB2C8;&#xB2E4;. &#xB300;&#xBD80;&#xBD84;&#xC758; &#xACBD;&#xC6B0; PyCharm&#xC740; &#xC0C8;&#xB85C;&#xC6B4; &#xAC00;&#xC0C1; &#xD658;&#xACBD;&#xC744; &#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xC0DD;&#xC131;&#xD558;&#xBBC0;&#xB85C; &#xC544;&#xBB34; &#xAC83;&#xB3C4; &#xAD6C;&#xC131;&#xD560; &#xD544;&#xC694;&#xAC00; &#xC5C6;&#xC2B5;&#xB2C8;&#xB2E4;. &#xADF8;&#xB798;&#xB3C4; venv &#xC635;&#xC158;&#xC744; &#xBBF8;&#xB9AC; &#xBCF4;&#xACE0; &#xC218;&#xC815;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. Python Interpreter: New Virtualenv Environment &#xB178;&#xB4DC;&#xB97C; &#xD655;&#xC7A5; &#xD558;&#xACE0; &#xC0C8; &#xAC00;&#xC0C1; &#xD658;&#xACBD;&#xC744; &#xB9CC;&#xB4DC;&#xB294; &#xB370; &#xC0AC;&#xC6A9;&#xB418;&#xB294; &#xD234;&#xC744; &#xC120;&#xD0DD;&#xD569;&#xB2C8;&#xB2E4;.(Virtualenv&#xAC00; &#xAE30;&#xBCF8;&#xC801;&#xC73C;&#xB85C; &#xC120;&#xD0DD;&#xB418;&#xC5B4; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC544;&#xB9C8;&#xCF58;&#xB2E4;&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xB294; &#xACBD;&#xC6B0; Conda&#xB97C; &#xC120;&#xD0DD;&#xD560; &#xC218;&#xB3C4; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.) &#xB3C4;&#xAD6C;&#xB97C; &#xC120;&#xD0DD; &#xD558;&#xACE0; &#xC0C8; &#xAC00;&#xC0C1; &#xD658;&#xACBD;&#xC5D0; &#xC0AC;&#xC6A9;&#xB418;&#xB294; &#xD658;&#xACBD; &#xBC0F; &#xAE30;&#xBCF8; Python &#xC778;&#xD130;&#xD504;&#xB9AC;&#xD130;&#xC758; &#xC704;&#xCE58;&#xB97C; &#xC9C0;&#xC815;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p><img src="http://suitmyself.com/content/images/2023/05/new_prj01.png" alt="Pycharm Study 001" loading="lazy"></p>
<blockquote>
<p>&#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xAC00; &#xC774;&#xBBF8; &#xC5F4;&#xB824; &#xC788;&#xB294; &#xACBD;&#xC6B0; PyCharm &#xB9CC;&#xB4E4;&#xAE30;&#xB97C; &#xD074;&#xB9AD;&#xD558;&#xBA74; &#xD604;&#xC7AC; &#xCC3D;&#xC5D0;&#xC11C; &#xC0C8; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xB97C; &#xC5F4; &#xAC83;&#xC778;&#xC9C0; &#xC0C8; &#xCC3D;&#xC5D0;&#xC11C; &#xC5F4; &#xAC83;&#xC778;&#xC9C0; &#xBB3B;&#xB294; &#xBA54;&#xC2DC;&#xC9C0;&#xAC00; &#xD45C;&#xC2DC;&#xB429;&#xB2C8;&#xB2E4;. &#xD604;&#xC7AC; &#xCC3D;&#xC5D0;&#xC11C; &#xC5F4;&#xAE30;&#xB97C; &#xC120;&#xD0DD;&#xD569;&#xB2C8;&#xB2E4; . &#xADF8;&#xB7EC;&#xBA74; &#xD604;&#xC7AC; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xAC00; &#xB2EB;&#xD788;&#xC9C0;&#xB9CC; &#xB098;&#xC911;&#xC5D0; &#xB2E4;&#xC2DC; &#xC5F4; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
</blockquote>
<p>Base interpreter &#xB294; &#xD30C;&#xC774;&#xC36C; &#xBC84;&#xC83C;&#xC774; &#xC5EC;&#xB7EC;&#xAC00;&#xC9C0; &#xC124;&#xCE58;&#xB41C; &#xACBD;&#xC6B0; &#xD574;&#xB2F9; &#xBC84;&#xC83C;&#xC744; &#xC120;&#xD0DD;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.<br>
2.x, &#xB610;&#xB294; 3.x &#xB97C; &#xBC84;&#xC83C;&#xC5D0;&#xC11C; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC5D0; &#xC0AC;&#xC6A9;&#xD560; &#xBC84;&#xC83C;&#xC744; &#xC120;&#xD0DD;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xCC98;&#xC74C;&#xACF5;&#xBD80;&#xD558;&#xB294; &#xC785;&#xC7A5;&#xC5D0;&#xC11C; &#xAD73;&#xC774; &#xBC84;&#xC83C;&#xC744; &#xC120;&#xD0DD;&#xD560; &#xD544;&#xC694;&#xB294; &#xC5C6;&#xC744; &#xB4EF; &#xD558;&#xACE0; &#xD604;&#xC7AC;&#xB294; 3.10.4 &#xB97C; &#xC124;&#xCE58;&#xD574;&#xB450;&#xC5B4;&#xC11C; &#xD574;&#xB2F9; &#xBC84;&#xC83C;&#xC744; &#xC120;&#xD0DD;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<ul>
<li>&#xD30C;&#xC774;&#xC36C;&#xC758; &#xBC84;&#xC83C;&#xC740; &#xD558;&#xB2E8;&#xC758; <code>Terminal</code> &#xD0ED;&#xC744; &#xB20C;&#xB7EC;&#xC11C; &#xD130;&#xBBF8;&#xB110;&#xCC3D;&#xC744; &#xC5F4;&#xC5B4; &#xC544;&#xB798;&#xC640; &#xAC19;&#xC774; &#xC785;&#xB825;&#xD558;&#xBA74; &#xD655;&#xC778;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</li>
</ul>
<pre><code class="language-python">PS F:\MyProject\Pycharm_001&gt; python --version
Python 3.10.4
PS F:\MyProject\Pycharm_001&gt;
</code></pre>
<p><img src="http://suitmyself.com/content/images/2023/05/terminal.png" alt="Pycharm Study 001" loading="lazy"></p>
<p><img src="http://suitmyself.com/content/images/2023/05/terminal_rightbottom-1.png" alt="Pycharm Study 001" loading="lazy"></p>
<ul>
<li>&#xAC01;&#xCC3D;&#xC758; &#xD1B1;&#xB2C8;&#xBC14;&#xD034; &#xC544;&#xC774;&#xCF58;&#xC744; &#xC120;&#xD0DD;&#xD558;&#xBA74; &#xCC3D;&#xC758; &#xC704;&#xCE58;&#xB4F1;&#xC744; &#xBCC0;&#xACBD;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xCD94;&#xD6C4;&#xC5D0; &#xBCF8;&#xC778;&#xC774; &#xB514;&#xBC84;&#xAE45;&#xC744; &#xD558;&#xBA74;&#xC11C; &#xD3B8;&#xD55C; &#xC0C1;&#xD0DC;&#xB85C; &#xAD6C;&#xC131;&#xD574;&#xC11C; &#xC0AC;&#xC6A9;&#xD558;&#xBA74; &#xB429;&#xB2C8;&#xB2E4;.</li>
</ul>
<hr>
<h2 id="2-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EB%B3%84-%ED%8C%A8%ED%82%A4%EC%A7%80-%EC%B6%94%EA%B0%80">2. &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xBCC4; &#xD328;&#xD0A4;&#xC9C0; &#xCD94;&#xAC00;</h2>
<p>&#xCD08;&#xAE30;&#xC5D0; &#xACF5;&#xBD80;&#xD558;&#xB2E4; &#xBCF4;&#xBA74; <code>tqdm</code> &#xC774;&#xB77C;&#xB294; &#xB77C;&#xC774;&#xBE0C;&#xB7EC;&#xB9AC;&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xAC8C; &#xB429;&#xB2C8;&#xB2E4;. <a href="https://tqdm.github.io/?ref=suitmyself.com"><code>tqdm</code></a>&#xC5D0; &#xB300;&#xD574;&#xC11C;&#xB294; &#xB2E4;&#xC74C; &#xAE30;&#xD68C;&#xC5D0; &#xACF5;&#xBD80;&#xD558;&#xB294; &#xAC78;&#xB85C; &#xD558;&#xACE0; &#xC27D;&#xAC8C; &#xC124;&#xBA85;&#xD558;&#xBA74; &#xD14D;&#xC2A4;&#xD2B8;&#xC0C1;&#xC5D0;&#xC11C; &#xD504;&#xB85C;&#xADF8;&#xB798;&#xC2A4;&#xBC14;&#xB97C; &#xCD9C;&#xB825;&#xD574;&#xC8FC;&#xB294; &#xB77C;&#xC774;&#xBE0C;&#xB7EC;&#xB9AC;&#xC785;&#xB2C8;&#xB2E4;. <code>for</code> &#xBB38;&#xC744; &#xBC30;&#xC6B0;&#xBA74;&#xC11C; &#xB2E4;&#xB4E4; &#xC0AC;&#xC6A9;&#xC608;&#xC81C;&#xB97C; <code>tqdm</code>&#xC73C;&#xB85C; &#xC608;&#xC81C;&#xB97C; &#xBCF4;&#xC5EC;&#xC8FC;&#xB354;&#xAD70;&#xC694;. &#xADF8;&#xB7F0;&#xB370; &#xC774;&#xAC8C; &#xC124;&#xCE58;&#xAC00; &#xB418;&#xC5B4; &#xC788;&#xB294; &#xB77C;&#xC774;&#xBE0C;&#xB7EC;&#xB9AC;&#xAC00; &#xC544;&#xB2C8;&#xB124;&#xC694;. PyCharm&#xC5D0;&#xC11C; &#xC5B4;&#xB5BB;&#xAC8C; &#xD560;&#xAE4C; &#xACE0;&#xBBFC;&#xD558;&#xB2E4;&#xAC00; <code>tqdm</code> &#xAE43;&#xD5C8;&#xBE0C;&#xD398;&#xC774;&#xC9C0;&#xC5D0; &#xC124;&#xCE58;&#xBC29;&#xBC95;&#xC774; &#xB098;&#xC640; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>Stable&#xBC84;&#xC83C;&#xC758; &#xC124;&#xCE58;</p>
<pre><code class="language-Python">pip install tqdm
</code></pre>
<p>&#xAE43;&#xD5C8;&#xBE0C;&#xC0C1;&#xC758; &#xCD5C;&#xC2E0;&#xBC84;&#xC83C; &#xC124;&#xCE58;</p>
<pre><code class="language-Python">pip install &quot;git+https://github.com/tqdm/tqdm.git@devel#egg=tqdm&quot;
</code></pre>
<p>&#xADF8;&#xC678;&#xC5D0;&#xB294; <a href="https://github.com/tqdm/tqdm?ref=suitmyself.com#installation">https://github.com/tqdm/tqdm#installation</a> &#xB97C; &#xCC38;&#xACE0;&#xD558;&#xBA74; &#xB429;&#xB2C8;&#xB2E4;.</p>
<p><code>pip</code> &#xBA85;&#xB839;&#xC740; python&#xC5D0;&#xC11C; &#xC774;&#xC6A9;&#xD558;&#xB294; &#xD328;&#xD0A4;&#xC9C0; &#xAD00;&#xB9AC;&#xC790;&#xC785;&#xB2C8;&#xB2E4;. &#xC774;&#xB97C; &#xC774;&#xC6A9;&#xD560;&#xB54C;&#xC5D0;&#xB294; &#xB2E4;&#xC74C; &#xADF8;&#xB9BC;&#xC5D0;&#xC11C; &#xBCF4;&#xC774;&#xB294; &#xD558;&#xB2E8;&#xC758; <code>terminal</code>&#xC744; &#xB20C;&#xB7EC;&#xC11C; &#xD130;&#xBBF8;&#xB110;&#xCC3D;&#xC5D0; &#xC9C1;&#xC811;&#xC785;&#xB825;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p><img src="http://suitmyself.com/content/images/2023/05/console_terminal-1.png" alt="Pycharm Study 001" loading="lazy"></p>
<p>&#xC124;&#xCE58;&#xD588;&#xB354;&#xB2C8; &apos;pip&apos;&#xAC00; &#xC5C5;&#xADF8;&#xB808;&#xC774;&#xB4DC;&#xAC00; &#xAC00;&#xB2A5;&#xD558;&#xB2E4;&#xACE0; &#xD558;&#xAE38;&#xB798; &apos;pip&apos;&#xB3C4; &#xC5C5;&#xADF8;&#xB808;&#xC774;&#xB4DC;&#xB97C; &#xD588;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC124;&#xCE58;&#xB97C; &#xD588;&#xB294;&#xB370;&#xB3C4; &#xBB38;&#xC81C;&#xAC00; &#xACC4;&#xC18D; &#xC0DD;&#xAE41;&#xB2C8;&#xB2E4;. <code>module not found</code> &#xB77C;&#xB294; &#xBA54;&#xC138;&#xC9C0;&#xAC00; &#xB098;&#xC624;&#xB124;&#xC694;. &#xC774; &#xBD80;&#xBD84;&#xC5D0;&#xC11C; &#xD55C;&#xCC38; &#xB9C9;&#xD788;&#xB354;&#xAD70;&#xC694;. &#xADF8;&#xB7EC;&#xB2E4;&#xAC00; <code>Pycharm</code>&#xC5D0;&#xC11C; &#xAD00;&#xB828;&#xB41C; &#xBD80;&#xBD84;&#xC744; &#xCC3E;&#xC558;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>File &gt; Settings &gt; Project:&#xD604;&#xC7AC;&#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xBA85; &gt; Python Interpreter &#xC744; &#xC120;&#xD0DD;&#xD558;&#xBA74; &#xC544;&#xB798; &#xD654;&#xBA74;&#xC774; &#xB098;&#xC635;&#xB2C8;&#xB2E4;. (&#xB2E8;&#xCD95;&#xD0A4; <code>Ctrl+Alt+S</code>)</p>
<p><img src="http://suitmyself.com/content/images/2023/05/Package_add_001.png" alt="Pycharm Study 001" loading="lazy"></p>
<p>&#xC5EC;&#xAE30;&#xC11C; &#xC704;&#xC5D0; &#xD45C;&#xC2DC;&#xB41C; <code>+</code> &#xD45C;&#xC2DC;&#xB97C; &#xB204;&#xB974;&#xBA74; &#xB2E4;&#xC74C; &#xD654;&#xBA74;&#xC774; &#xB098;&#xC624;&#xB124;&#xC694;.</p>
<p><img src="http://suitmyself.com/content/images/2023/05/package_add_002.png" alt="Pycharm Study 001" loading="lazy"></p>
<p>&#xAC80;&#xC0C9;&#xB77C;&#xC778;&#xC5D0; <code>tqdm</code>&#xC744; &#xC785;&#xB825;&#xD558;&#xBA74; <code>tqmd</code> &#xB77C;&#xC774;&#xBE0C;&#xB7EC;&#xB9AC;&#xAC00; &#xD655;&#xC778;&#xB429;&#xB2C8;&#xB2E4;. <code>tqdm</code>&#xC744; &#xC120;&#xD0DD;&#xD55C;&#xD6C4; &#xC544;&#xB798;&#xC5D0; &#xC788;&#xB294; <code>Install Package</code> &#xB97C; &#xB204;&#xB974;&#xACE0; &#xB2EB;&#xC73C;&#xBA74; &#xC544;&#xB798;&#xC640; &#xAC19;&#xC774; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xC758; &#xB77C;&#xC774;&#xBE0C;&#xB7EC;&#xB9AC;&#xC5D0; <code>tqdm</code>&#xC774; &#xC124;&#xCE58;&#xB429;&#xB2C8;&#xB2E4;.</p>
<p><img src="http://suitmyself.com/content/images/2023/05/package_add_003.png" alt="Pycharm Study 001" loading="lazy"></p>
<p>&#xC774;&#xC81C; &#xCF54;&#xB4DC;&#xB97C; &#xB2E4;&#xC2DC; &#xC2E4;&#xD589;&#xD574; &#xBD05;&#xB2C8;&#xB2E4;.</p>
<p><img src="http://suitmyself.com/content/images/2023/05/install_tqdm_comp.png" alt="Pycharm Study 001" loading="lazy"></p>
<p>&#xC81C;&#xB300;&#xB85C; &#xC2E4;&#xD589;&#xC774; &#xB418;&#xB294; &#xAC83;&#xC744; &#xD655;&#xC778;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p><code>tqdm</code> &#xB54C;&#xBB38;&#xC5D0; &#xCC3E;&#xAC8C; &#xB418;&#xC5C8;&#xC9C0;&#xB9CC; Pycharm&#xC5D0;&#xC11C; &#xD504;&#xB85C;&#xC81D;&#xD2B8;&#xBCC4; &#xB77C;&#xC774;&#xBE0C;&#xB7EC;&#xB9AC;&#xC758; &#xAD00;&#xB9AC;&#xAC00; &#xC5B4;&#xB514;&#xC11C; &#xB418;&#xB294;&#xC9C0; &#xCC3E;&#xC558;&#xB124;&#xC694;. &#xC870;&#xAE08;&#xC529; &#xC0AC;&#xC6A9;&#xD558;&#xB294; &#xAC83;&#xC5D0; &#xD765;&#xBBF8;&#xAC00; &#xC0DD;&#xAE30;&#xAE30; &#xC2DC;&#xC791;&#xD588;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<hr>
<p>&#xC0AC;&#xC2E4;&#xC0C1; &#xD30C;&#xC774;&#xCC38;&#xC758; &#xC0AC;&#xC6A9;&#xBC95;&#xC774;&#xB77C;&#xACE0; &#xC801;&#xAE30;&#xB294; &#xD588;&#xC9C0;&#xB9CC; &#xC870;&#xAE08; &#xD558;&#xB2E4;&#xBCF4;&#xB2C8; &#xC791;&#xC740; &#xD504;&#xB85C;&#xADF8;&#xB7A8;&#xC774;&#xB77C;&#xB3C4; &#xD558;&#xB098; &#xB9CC;&#xB4E4;&#xC5B4;&#xBCF4;&#xBA74;&#xC11C; &#xD574;&#xBCF4;&#xBA74; &#xC7AC;&#xBBF8;&#xC788;&#xC5B4;&#xC9C8; &#xAC83; &#xAC19;&#xC2B5;&#xB2C8;&#xB2E4;. Vscode&#xAC19;&#xC740; &#xC5D0;&#xB514;&#xD130;&#xB3C4; &#xBB50; &#xB098;&#xB984; &#xAD1C;&#xCC2E;&#xC9C0;&#xB9CC; IDE &#xC5D0; &#xAD00;&#xC2EC;&#xC774; &#xB9CE;&#xC740; &#xC800;&#xB85C;&#xC11C;&#xB294; Pycharm&#xC744; &#xC0AC;&#xC6A9;&#xD574;&#xBCF4;&#xB824;&#xACE0; &#xD558;&#xB294; &#xC911;&#xC785;&#xB2C8;&#xB2E4;.</p>
<p>&#xCF54;&#xB529;&#xD558;&#xBA74;&#xC11C; &#xAC00;&#xC7A5; &#xD5F7;&#xAC08;&#xB838;&#xB358; &#xAC83;&#xC911; &#xD558;&#xB098;&#xAC00; &#xD50C;&#xB7EC;&#xADF8;&#xC778;&#xC758; &#xC124;&#xCE58;&#xC640; &#xD50C;&#xB7EC;&#xADF8;&#xC778;&#xBCC4; &#xC14B;&#xD305;&#xC774;&#xB354;&#xAD70;&#xC694;. &#xD0A4;&#xBCF4;&#xB4DC;&#xC640; &#xAD00;&#xB828;&#xD574;&#xC11C;&#xB3C4; IdeaVIM &#xAC19;&#xC740; &#xD50C;&#xB7EC;&#xADF8;&#xC778;&#xC740; &#xAC1C;&#xC778;&#xC801;&#xC778; &#xCDE8;&#xD5A5;&#xC5D0; &#xB530;&#xB77C; &#xC120;&#xD0DD;&#xD558;&#xB294; &#xAC83;&#xC774; &#xC88B;&#xC744; &#xAC83; &#xAC19;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xC55E;&#xC73C;&#xB85C;&#xB294; Python &#xC73C;&#xB85C; &#xC708;&#xB3C4;&#xC6B0; &#xC5B4;&#xD50C;&#xB9AC;&#xCF00;&#xC774;&#xC158;&#xC744; &#xB9CC;&#xB4E4;&#xC5B4;&#xAC08;&#xAE4C; &#xD569;&#xB2C8;&#xB2E4;. &#xC544;&#xC9C1;&#xC740; &#xBB50; &#xC900;&#xBE44;&#xB2E8;&#xACC4;&#xC785;&#xB2C8;&#xB2E4;. Python&#xC73C;&#xB85C; &#xC5B4;&#xD50C;&#xB9AC;&#xCF00;&#xC774;&#xC158; &#xC791;&#xC5C5;&#xC744; &#xD574;&#xBCF4;&#xAE30;&#xB294; &#xD588;&#xC9C0;&#xB9CC; &#xCC98;&#xC74C;&#xBD80;&#xD130; &#xCC28;&#xADFC;&#xCC28;&#xADFC; &#xB2E4;&#xC2DC; &#xC2DC;&#xC791;&#xD569;&#xB2C8;&#xB2E4;.</p>
<hr>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[우분투 사용팁]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h2 id="%EC%82%AC%EC%9A%A9%EC%9E%90%EC%B6%94%EA%B0%80-%EB%B0%8F-%EA%B6%8C%ED%95%9C%EB%B6%80%EC%97%AC">&#xC0AC;&#xC6A9;&#xC790;&#xCD94;&#xAC00; &#xBC0F; &#xAD8C;&#xD55C;&#xBD80;&#xC5EC;</h2>
<pre><code class="language-bash"># adduser &lt;id&gt;
$ sudo adduser new_user

# usermod &lt;options&gt; &lt;group&gt; &lt;id&gt;
$ sudo usermod -a -G sudo new_user
</code></pre>
<p>adduser &#xB85C; &#xC0AC;&#xC6A9;&#xC790;&#xB97C; &#xCD94;&#xAC00;&#xD558;&#xBA74; &#xC5EC;&#xB7EC;&#xAC00;&#xC9C0; &#xAC1C;</p>]]></description><link>http://suitmyself.com/ubuntu-2/</link><guid isPermaLink="false">6462da23bec44232aa42f163</guid><category><![CDATA[Server]]></category><category><![CDATA[ubuntu]]></category><category><![CDATA[network]]></category><category><![CDATA[Secure]]></category><dc:creator><![CDATA[benjamin kim]]></dc:creator><pubDate>Tue, 16 May 2023 01:46:03 GMT</pubDate><media:content url="http://suitmyself.com/content/images/2023/05/tip_bg.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="%EC%82%AC%EC%9A%A9%EC%9E%90%EC%B6%94%EA%B0%80-%EB%B0%8F-%EA%B6%8C%ED%95%9C%EB%B6%80%EC%97%AC">&#xC0AC;&#xC6A9;&#xC790;&#xCD94;&#xAC00; &#xBC0F; &#xAD8C;&#xD55C;&#xBD80;&#xC5EC;</h2>
<pre><code class="language-bash"># adduser &lt;id&gt;
$ sudo adduser new_user

# usermod &lt;options&gt; &lt;group&gt; &lt;id&gt;
$ sudo usermod -a -G sudo new_user
</code></pre>
<img src="http://suitmyself.com/content/images/2023/05/tip_bg.png" alt="&#xC6B0;&#xBD84;&#xD22C; &#xC0AC;&#xC6A9;&#xD301;"><p>adduser &#xB85C; &#xC0AC;&#xC6A9;&#xC790;&#xB97C; &#xCD94;&#xAC00;&#xD558;&#xBA74; &#xC5EC;&#xB7EC;&#xAC00;&#xC9C0; &#xAC1C;&#xC778;&#xC815;&#xBCF4;, &#xBE44;&#xBC00;&#xBC88;&#xD638; &#xC0DD;&#xC131; &#xBC0F; home &#xB514;&#xB809;&#xD1A0;&#xB9AC; &#xC0DD;&#xC131;&#xC744; &#xC790;&#xB3D9;&#xC73C;&#xB85C; &#xC9C4;&#xD589;&#xD574; &#xC90D;&#xB2C8;&#xB2E4;.</p>
<p>cd /home &#xC73C;&#xB85C; &#xC774;&#xB3D9;&#xD558;&#xC5EC; ls &#xBA85;&#xB839;&#xC5B4;&#xB97C; &#xD1B5;&#xD574; new_user &#xB514;&#xB809;&#xD1A0;&#xB9AC;&#xAC00; &#xC0DD;&#xC131;&#xB418;&#xC5C8;&#xC74C;&#xC744; &#xD655;&#xC778;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>sudo &#xAD8C;&#xD55C; &#xCD94;&#xAC00;&#xAC00; &#xC81C;&#xB300;&#xB85C; &#xB410;&#xB294;&#xC9C0;&#xB294; groups&#xB098; getent &#xBA85;&#xB839;&#xC5B4;&#xB97C; &#xD1B5;&#xD574; &#xD655;&#xC778;&#xD560; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<pre><code class="language-bash"># groups &lt;id&gt;
$ groups new_user

# &#xB610;&#xB294; getent group &lt;group name&gt;
$ getent group sudo
</code></pre>
<p>&#xC0AC;&#xC6A9;&#xC790; &#xC0AD;&#xC81C;&#xB294; userdel &#xBA85;&#xB839;&#xC5B4;&#xB97C; &#xC0AC;&#xC6A9;&#xD569;&#xB2C8;&#xB2E4;.</p>
<pre><code class="language-bash"># userdel &lt;options&gt; &lt;id&gt;
$ sudo userdel -r new_user
</code></pre>
<hr>
<h2 id="%EB%B0%A9%ED%99%94%EB%B2%BD-%EC%84%A4%EC%B9%98"><a href="https://lindarex.github.io/ubuntu/ubuntu-firewalld-installation/?ref=suitmyself.com">&#xBC29;&#xD654;&#xBCBD; &#xC124;&#xCE58;</a></h2>
<pre><code class="language-bash">sudo apt update &amp;&amp; sudo apt install firewalld -y
sudo firewall-cmd --version
</code></pre>
<p>&#xB8F0; &#xCD94;&#xAC00;</p>
<pre><code class="language-bash">sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
</code></pre>
<p>&#xB8F0; &#xC801;&#xC6A9;</p>
<pre><code class="language-bash">sudo firewall-cmd --reload
</code></pre>
<p>&#xBC29;&#xD654;&#xBCBD; &#xC124;&#xC815;&#xAC12; &#xC870;&#xD68C;</p>
<pre><code class="language-bash">sudo firewall-cmd --list-all
</code></pre>
<hr>
<h2 id="ufw-%EB%B0%A9%ED%99%94%EB%B2%BD-%EC%9A%B0%EB%B6%84%ED%88%AC-1804-lts-%EC%9D%B4%ED%9B%84-%EC%A7%80%EC%9B%90"><a href="https://lindarex.github.io/ubuntu/ubuntu-ufw-setting/?ref=suitmyself.com">ufw &#xBC29;&#xD654;&#xBCBD; (&#xC6B0;&#xBD84;&#xD22C; 18.04 LTS &#xC774;&#xD6C4; &#xC9C0;&#xC6D0;)</a></h2>
<p>&#xD65C;&#xC131;&#xD654;</p>
<pre><code class="language-bash">sudo ufw enable
</code></pre>
<p>&#xBE44;&#xD65C;&#xC131;&#xD654;</p>
<pre><code class="language-bash">sudo ufw disable
</code></pre>
<p>&#xC0C1;&#xD0DC;&#xC870;&#xD68C;</p>
<pre><code class="language-bash">sudo ufw status verbose
</code></pre>
<p>&#xAE30;&#xBCF8; &#xB8F0; &#xC870;&#xD68C;</p>
<pre><code class="language-bash">sudo ufw show raw
</code></pre>
<p>or</p>
<pre><code class="language-bash">sudo cat /etc/ufw/user.rules
</code></pre>
<hr>
<h3 id="ufw-default-rules-%ED%97%88%EC%9A%A9-%EB%98%90%EB%8A%94-%EC%B0%A8%EB%8B%A8">ufw default rules &#xD5C8;&#xC6A9; &#xB610;&#xB294; &#xCC28;&#xB2E8;</h3>
<p>ufw default rules &#xD5C8;&#xC6A9;</p>
<pre><code class="language-bash">sudo ufw default allow
</code></pre>
<p>ufw default rules &#xCC28;&#xB2E8;</p>
<pre><code class="language-bash">sudo ufw default deny
</code></pre>
<hr>
<h3 id="ufw-rule-%ED%97%88%EC%9A%A9-%EB%98%90%EB%8A%94-%EC%B0%A8%EB%8B%A8">ufw rule &#xD5C8;&#xC6A9; &#xB610;&#xB294; &#xCC28;&#xB2E8;</h3>
<p>TCP 8080 &#xD3EC;&#xD2B8;(port) &#xD5C8;&#xC6A9;</p>
<pre><code class="language-bash">sudo ufw allow 8080/tcp
</code></pre>
<p>TCP 8080 port &#xCC28;&#xB2E8;</p>
<pre><code class="language-bash">sudo ufw deny 8080/tcp
</code></pre>
<p>UDP 22 port &#xD5C8;&#xC6A9;</p>
<pre><code class="language-bash">sudo ufw allow 22/udp
</code></pre>
<p>UDP 22 port &#xCC28;&#xB2E8;</p>
<pre><code class="language-bash">sudo ufw deny 22/udp
</code></pre>
<p>TCP/UDP 53 port &#xD5C8;&#xC6A9;</p>
<pre><code class="language-bash">sudo ufw allow 53
</code></pre>
<p>TCP/UDP 53 port &#xCC28;&#xB2E8;</p>
<pre><code class="language-bash">sudo ufw deny 53
</code></pre>
<hr>
<p>&#xB124;&#xD2B8;&#xC6CC;&#xD06C; &#xCE74;&#xB4DC; &#xC774;&#xB984; &#xD655;&#xC778;</p>
<pre><code class="language-bash">ls /sys/class/net
</code></pre>
<hr>
<h3 id="mkpassword-%EC%82%AC%EC%9A%A9%EC%9D%84-%EC%9C%84%ED%95%9C-whois-%EC%84%A4%EC%B9%98">mkpassword &#xC0AC;&#xC6A9;&#xC744; &#xC704;&#xD55C; whois &#xC124;&#xCE58;</h3>
<p>mkpasswd &#xC0AC;&#xC6A9;&#xC744; &#xC704;&#xD574;&#xC11C;  whois&#xB97C; &#xC124;&#xCE58;</p>
<pre><code class="language-bash">$ sudo apt-get install whois
</code></pre>
<p>&#xD574;&#xC2DC;&#xB41C; &#xC554;&#xD638; &#xC0DD;&#xC131;. &#xC0AC;&#xC6A9;&#xAC00;&#xB2A5;&#xD55C; &#xD574;&#xC2DC;&#xD568;&#xC218;(DES, MD5, SHA-256 or SHA-512.)</p>
<pre><code class="language-bash">$ printf &quot;password&quot; | mkpasswd --stdin --method=des
ASYRtiLFCipT6
</code></pre>
<pre><code class="language-bash">$ printf &quot;secondarypassword&quot; | mkpasswd --stdin --method=md5
$1$R29iAdV/$1QUKx8eo6e5pcMIEgaZwt0
</code></pre>
<pre><code class="language-bash">$ printf &quot;thirdpassword&quot; | mkpasswd --stdin --method=sha-256
$5$gZZsvtRWI$9JIU8pfHLG8BtYW5tceAKD1oNAjjfL5e4LwUfAW1sqA
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[UBUNTU20.04 LTS 에 APACHE웹서버  설치]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>&#xD14C;&#xC2A4;&#xD2B8; &#xC11C;&#xBC84; &#xAD6C;&#xCD95;&#xC744; &#xC704;&#xD55C; &#xAC83;&#xC774;&#xAE30; &#xB54C;&#xBB38;&#xC5D0; &#xAE30;&#xBCF8; &#xB808;&#xD3EC;&#xC9C0;&#xD1A0;&#xB9AC;&#xC5D0; &#xC788;&#xB294;&#xAC83;&#xC744; &#xC774;&#xC6A9;&#xD558;&#xC5EC; &#xC124;&#xCE58;&#xD55C;&#xB2E4;.</p>
<h2 id="1-%EC%95%84%ED%8C%8C%EC%B9%98-%EC%84%9C%EB%B2%84-%EC%84%A4%EC%B9%98">1. &#xC544;&#xD30C;&#xCE58; &#xC11C;&#xBC84; &#xC124;&#xCE58;</h2>
<p>&#xC124;&#xCE58;&#xC804;</p>
<p>init.d &#xC5D0;</p>]]></description><link>http://suitmyself.com/ubuntu/</link><guid isPermaLink="false">64623427bec44232aa42f146</guid><category><![CDATA[Server]]></category><category><![CDATA[ubuntu]]></category><category><![CDATA[apache]]></category><dc:creator><![CDATA[benjamin kim]]></dc:creator><pubDate>Mon, 15 May 2023 13:35:43 GMT</pubDate><media:content url="http://suitmyself.com/content/images/2023/05/Apache_HTTP_server_logo_-2019-present-.svg.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="http://suitmyself.com/content/images/2023/05/Apache_HTTP_server_logo_-2019-present-.svg.png" alt="UBUNTU20.04 LTS &#xC5D0; APACHE&#xC6F9;&#xC11C;&#xBC84;  &#xC124;&#xCE58;"><p>&#xD14C;&#xC2A4;&#xD2B8; &#xC11C;&#xBC84; &#xAD6C;&#xCD95;&#xC744; &#xC704;&#xD55C; &#xAC83;&#xC774;&#xAE30; &#xB54C;&#xBB38;&#xC5D0; &#xAE30;&#xBCF8; &#xB808;&#xD3EC;&#xC9C0;&#xD1A0;&#xB9AC;&#xC5D0; &#xC788;&#xB294;&#xAC83;&#xC744; &#xC774;&#xC6A9;&#xD558;&#xC5EC; &#xC124;&#xCE58;&#xD55C;&#xB2E4;.</p>
<h2 id="1-%EC%95%84%ED%8C%8C%EC%B9%98-%EC%84%9C%EB%B2%84-%EC%84%A4%EC%B9%98">1. &#xC544;&#xD30C;&#xCE58; &#xC11C;&#xBC84; &#xC124;&#xCE58;</h2>
<p>&#xC124;&#xCE58;&#xC804;</p>
<p>init.d &#xC5D0; &#xC788;&#xB294; daemon&#xB4E4;&#xC758; &#xBAA9;&#xB85D;&#xC744; &#xD655;&#xC778;&#xD574;&#xBCF8;&#xB2E4;.</p>
<pre><code class="language-bash">root@k5w1hcd-155105:/etc/init.d# ll
total 140
drwxr-xr-x  2 root root 4096 Dec 31 06:27 ./
drwxr-xr-x 92 root root 4096 Dec 31 06:34 ../
-rwxr-xr-x  1 root root 3740 Apr  1  2020 apparmor*
-rwxr-xr-x  1 root root 2964 Dec  7  2019 apport*
-rwxr-xr-x  1 root root 1071 Jul 24  2018 atd*
-rwxr-xr-x  1 root root 1232 Mar 27  2020 console-setup.sh*
-rwxr-xr-x  1 root root 3059 Feb 11  2020 cron*
-rwxr-xr-x  1 root root  937 Feb  4  2020 cryptdisks*
-rwxr-xr-x  1 root root  896 Feb  4  2020 cryptdisks-early*
-rwxr-xr-x  1 root root 3152 Sep 30  2019 dbus*
-rwxr-xr-x  1 root root  985 Apr 15  2020 grub-common*
-rwxr-xr-x  1 root root 3809 Jul 29  2019 hwclock.sh*
-rwxr-xr-x  1 root root 2638 Dec 14  2019 irqbalance*
-rwxr-xr-x  1 root root 1503 Apr  2  2019 iscsid*
-rwxr-xr-x  1 root root 1479 Nov 27  2019 keyboard-setup.sh*
-rwxr-xr-x  1 root root 2044 Feb 19  2020 kmod*
-rwxr-xr-x  1 root root  695 Jan 28  2020 lvm2*
-rwxr-xr-x  1 root root  586 Jan 28  2020 lvm2-lvmpolld*
-rwxr-xr-x  1 root root 2827 Jan 10  2020 multipath-tools*
-rwxr-xr-x  1 root root 1364 Sep 14  2019 netfilter-persistent*
-rwxr-xr-x  1 root root 2503 Apr  2  2019 open-iscsi*
-rwxr-xr-x  1 root root 1846 Mar 10  2020 open-vm-tools*
-rwxr-xr-x  1 root root 1366 Mar 23  2020 plymouth*
-rwxr-xr-x  1 root root  752 Mar 23  2020 plymouth-log*
-rwxr-xr-x  1 root root  924 Feb 14  2020 procps*
-rwxr-xr-x  1 root root 4417 Oct 15  2019 rsync*
-rwxr-xr-x  1 root root 2864 Mar  7  2019 rsyslog*
-rwxr-xr-x  1 root root 1222 Apr  3  2017 screen-cleanup*
-rwxr-xr-x  1 root root 3939 Feb 26  2020 ssh*
-rwxr-xr-x  1 root root 6872 Apr 22  2020 udev*
-rwxr-xr-x  1 root root 2083 Jan 22  2020 ufw*
-rwxr-xr-x  1 root root 1391 Apr 14  2020 unattended-upgrades*
-rwxr-xr-x  1 root root 1306 Apr  3  2020 uuidd*
root@k5w1hcd-155105:/etc/init.d#
</code></pre>
<p>systemctl status &#xBA85;&#xB839;&#xC73C;&#xB85C; &#xD604;&#xC7AC; &#xB3D9;&#xC791;&#xC5EC;&#xBD80;&#xB3C4; &#xD655;&#xC778;&#xD574;&#xBCF8;&#xB2E4;.</p>
<pre><code class="language-bash">root@k5w1hcd-155105:/etc/init.d# systemctl status
&#x25CF; k5w1hcd-155105
    State: running
     Jobs: 0 queued
   Failed: 0 units
    Since: Wed 2021-12-29 23:31:28 KST; 2 weeks 0 days ago
   CGroup: /
           &#x251C;&#x2500;user.slice
           &#x2502; &#x2514;&#x2500;user-0.slice
           &#x2502;   &#x251C;&#x2500;session-408.scope
           &#x2502;   &#x2502; &#x251C;&#x2500;286317 sshd: root@notty
           &#x2502;   &#x2502; &#x2514;&#x2500;286511 /usr/lib/openssh/sftp-server
           &#x2502;   &#x251C;&#x2500;session-406.scope
           &#x2502;   &#x2502; &#x251C;&#x2500;286315 sshd: root@pts/0
           &#x2502;   &#x2502; &#x251C;&#x2500;286516 -bash
           &#x2502;   &#x2502; &#x251C;&#x2500;286519 bash -c while [ -d /proc/$PPID ]; do sleep 1;head -v -n 8 /proc/meminfo; head -v -n 2 /proc/stat /proc/version /proc/uptime /proc/loadavg /proc/sys/fs/file-&gt;
           &#x2502;   &#x2502; &#x251C;&#x2500;290640 sleep 1
           &#x2502;   &#x2502; &#x251C;&#x2500;290641 systemctl status
           &#x2502;   &#x2502; &#x2514;&#x2500;290642 pager
           &#x2502;   &#x2514;&#x2500;user@0.service &#x2026;
           &#x2502;     &#x2514;&#x2500;init.scope
           &#x2502;       &#x251C;&#x2500;286334 /lib/systemd/systemd --user
           &#x2502;       &#x2514;&#x2500;286335 (sd-pam)
           &#x251C;&#x2500;init.scope
           &#x2502; &#x251C;&#x2500;  1 /lib/systemd/systemd --system --deserialize 32
           &#x2502; &#x2514;&#x2500;543 bpfilter_umh
           &#x2514;&#x2500;system.slice
             &#x251C;&#x2500;irqbalance.service
             &#x2502; &#x2514;&#x2500;705 /usr/sbin/irqbalance --foreground
             &#x251C;&#x2500;packagekit.service
             &#x2502; &#x2514;&#x2500;288728 /usr/lib/packagekit/packagekitd
             &#x251C;&#x2500;systemd-networkd.service
             &#x2502; &#x2514;&#x2500;120896 /lib/systemd/systemd-networkd
             &#x251C;&#x2500;systemd-udevd.service
             &#x2502; &#x2514;&#x2500;114375 /lib/systemd/systemd-udevd
             &#x251C;&#x2500;cron.service
             &#x2502; &#x2514;&#x2500;693 /usr/sbin/cron -f
             &#x251C;&#x2500;system-serial\x2dgetty.slice
             &#x2502; &#x2514;&#x2500;serial-getty@ttyS0.service
             &#x2502;   &#x2514;&#x2500;775 /sbin/agetty -o -p -- \u --keep-baud 115200,38400,9600 ttyS0 vt220
             &#x251C;&#x2500;polkit.service
             &#x2502; &#x2514;&#x2500;155881 /usr/lib/policykit-1/polkitd --no-debug
             &#x251C;&#x2500;networkd-dispatcher.service
             &#x2502; &#x2514;&#x2500;706 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
             &#x251C;&#x2500;multipathd.service
             &#x2502; &#x2514;&#x2500;501 /sbin/multipathd -d -s
             &#x251C;&#x2500;accounts-daemon.service
             &#x2502; &#x2514;&#x2500;129171 /usr/lib/accountsservice/accounts-daemon
             &#x251C;&#x2500;systemd-journald.service
             &#x2502; &#x2514;&#x2500;120922 /lib/systemd/systemd-journald
             &#x251C;&#x2500;atd.service
             &#x2502; &#x2514;&#x2500;732 /usr/sbin/atd -f
             &#x251C;&#x2500;unattended-upgrades.service
             &#x2502; &#x2514;&#x2500;839 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
             &#x251C;&#x2500;ssh.service
             &#x2502; &#x2514;&#x2500;130082 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
             &#x251C;&#x2500;fwupd.service
             &#x2502; &#x2514;&#x2500;287035 /usr/libexec/fwupd/fwupd
             &#x251C;&#x2500;snapd.service
             &#x2502; &#x2514;&#x2500;112215 /usr/lib/snapd/snapd
             &#x251C;&#x2500;rsyslog.service
             &#x2502; &#x2514;&#x2500;709 /usr/sbin/rsyslogd -n -iNONE
             &#x251C;&#x2500;systemd-resolved.service
             &#x2502; &#x2514;&#x2500;120916 /lib/systemd/systemd-resolved
             &#x251C;&#x2500;dbus.service
             &#x2502; &#x2514;&#x2500;695 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
             &#x251C;&#x2500;systemd-timesyncd.service
             &#x2502; &#x2514;&#x2500;121015 /lib/systemd/systemd-timesyncd
             &#x251C;&#x2500;system-getty.slice
             &#x2502; &#x2514;&#x2500;getty@tty1.service
             &#x2502;   &#x2514;&#x2500;783 /sbin/agetty -o -p -- \u --noclear tty1 linux
             &#x2514;&#x2500;systemd-logind.service
               &#x2514;&#x2500;727 /lib/systemd/systemd-logind

root@k5w1hcd-155105:/etc/init.d#

</code></pre>
<p>apt-get &#xC744; &#xC774;&#xC6A9;&#xD558;&#xC5EC; &#xC124;&#xCE58;&#xD55C;&#xB2E4;.</p>
<pre><code class="language-bash">$ sudo apt-get update
$ sudo apt-get install apache2
</code></pre>
<p>&#xC124;&#xCE58;&#xD6C4; &#xD655;&#xC778;&#xC744; &#xD574;&#xBCF4;&#xBA74; apache2 &#xAC00; &#xC788;&#xB294; &#xAC83;&#xC744; &#xD655;&#xC778;&#xD560; &#xC218; &#xC788;&#xB2E4;.</p>
<pre><code class="language-bash">root@k5w1hcd-155105:/etc/init.d# ll /etc/init.d/
total 152
drwxr-xr-x  2 root root 4096 Jan 13 13:40 ./
drwxr-xr-x 93 root root 4096 Jan 13 13:40 ../
-rwxr-xr-x  1 root root 2489 Oct  1  2020 apache-htcacheclean*
-rwxr-xr-x  1 root root 8181 Oct  1  2020 apache2*
-rwxr-xr-x  1 root root 3740 Apr  1  2020 apparmor*
-rwxr-xr-x  1 root root 2964 Dec  7  2019 apport*
-rwxr-xr-x  1 root root 1071 Jul 24  2018 atd*
-rwxr-xr-x  1 root root 1232 Mar 27  2020 console-setup.sh*
-rwxr-xr-x  1 root root 3059 Feb 11  2020 cron*
-rwxr-xr-x  1 root root  937 Feb  4  2020 cryptdisks*
-rwxr-xr-x  1 root root  896 Feb  4  2020 cryptdisks-early*
-rwxr-xr-x  1 root root 3152 Sep 30  2019 dbus*
-rwxr-xr-x  1 root root  985 Apr 15  2020 grub-common*
-rwxr-xr-x  1 root root 3809 Jul 29  2019 hwclock.sh*
-rwxr-xr-x  1 root root 2638 Dec 14  2019 irqbalance*
-rwxr-xr-x  1 root root 1503 Apr  2  2019 iscsid*
-rwxr-xr-x  1 root root 1479 Nov 27  2019 keyboard-setup.sh*
-rwxr-xr-x  1 root root 2044 Feb 19  2020 kmod*
-rwxr-xr-x  1 root root  695 Jan 28  2020 lvm2*
-rwxr-xr-x  1 root root  586 Jan 28  2020 lvm2-lvmpolld*
-rwxr-xr-x  1 root root 2827 Jan 10  2020 multipath-tools*
-rwxr-xr-x  1 root root 1364 Sep 14  2019 netfilter-persistent*
-rwxr-xr-x  1 root root 2503 Apr  2  2019 open-iscsi*
-rwxr-xr-x  1 root root 1846 Mar 10  2020 open-vm-tools*
-rwxr-xr-x  1 root root 1366 Mar 23  2020 plymouth*
-rwxr-xr-x  1 root root  752 Mar 23  2020 plymouth-log*
-rwxr-xr-x  1 root root  924 Feb 14  2020 procps*
-rwxr-xr-x  1 root root 4417 Oct 15  2019 rsync*
-rwxr-xr-x  1 root root 2864 Mar  7  2019 rsyslog*
-rwxr-xr-x  1 root root 1222 Apr  3  2017 screen-cleanup*
-rwxr-xr-x  1 root root 3939 Feb 26  2020 ssh*
-rwxr-xr-x  1 root root 6872 Apr 22  2020 udev*
-rwxr-xr-x  1 root root 2083 Jan 22  2020 ufw*
-rwxr-xr-x  1 root root 1391 Apr 14  2020 unattended-upgrades*
-rwxr-xr-x  1 root root 1306 Apr  3  2020 uuidd*
root@k5w1hcd-155105:/etc/init.d#
</code></pre>
<h2 id="2-%EC%95%84%ED%8C%8C%EC%B9%98-%EC%84%9C%EB%B2%84-%EC%8B%A4%ED%96%89">2. &#xC544;&#xD30C;&#xCE58; &#xC11C;&#xBC84; &#xC2E4;&#xD589;</h2>
<pre><code class="language-bash">$ sudo service apache2 start
</code></pre>
<p>&#xB610;&#xB294;</p>
<pre><code class="language-bash">sudo systemctl start apache2
</code></pre>
<p>&#xC2E4;&#xD589; &#xC5EC;&#xBD80;&#xB97C; &#xD655;&#xC778;&#xD574;&#xBCF4;&#xBA74;</p>
<pre><code class="language-bash">root@k5w1hcd-155105:~# ps aux | grep apache2
root      292093  0.0  0.2   6672  4780 ?        Ss   13:40   0:00 /usr/sbin/apache2 -k start
www-data  292096  0.0  0.2 1211560 4452 ?        Sl   13:40   0:00 /usr/sbin/apache2 -k start
www-data  292097  0.0  0.2 1211560 4452 ?        Sl   13:40   0:00 /usr/sbin/apache2 -k start
root      294053  0.0  0.0   8160   736 pts/0    S+   13:44   0:00 grep --color=auto apache2
root@k5w1hcd-155105:~# 
</code></pre>
<p>&#xB610;&#xB294;</p>
<pre><code class="language-bash">root@k5w1hcd-155105:~# systemctl status apache2
&#x25CF; apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2022-01-13 13:40:36 KST; 6min ago
       Docs: https://httpd.apache.org/docs/2.4/
   Main PID: 292093 (apache2)
      Tasks: 55 (limit: 2344)
     Memory: 5.8M
     CGroup: /system.slice/apache2.service
             &#x251C;&#x2500;292093 /usr/sbin/apache2 -k start
             &#x251C;&#x2500;292096 /usr/sbin/apache2 -k start
             &#x2514;&#x2500;292097 /usr/sbin/apache2 -k start

Jan 13 13:40:36 k5w1hcd-155105 systemd[1]: Starting The Apache HTTP Server...
Jan 13 13:40:36 k5w1hcd-155105 apachectl[292086]: AH00558: apache2: Could not reliably determine the server&apos;s fully qualified domain name, using 10.6.2.160. Set the &apos;ServerName&apos; dire&gt;
Jan 13 13:40:36 k5w1hcd-155105 systemd[1]: Started The Apache HTTP Server.

root@k5w1hcd-155105:~#
</code></pre>
<h2 id="3-%EC%95%84%ED%8C%8C%EC%B9%98-%EC%84%A4%EC%A0%95">3. &#xC544;&#xD30C;&#xCE58; &#xC124;&#xC815;</h2>
<h3 id="3-1-%EC%84%A4%EC%A0%95-%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC-%EB%B0%8F-%ED%8C%8C%EC%9D%BC">3-1. &#xC124;&#xC815; &#xB514;&#xB809;&#xD1A0;&#xB9AC; &#xBC0F; &#xD30C;&#xC77C;</h3>
<p>/etc/apache2<br>
config &#xD30C;&#xC77C; &#xC704;&#xCE58;&#xB85C;, config &#xD30C;&#xC77C;&#xB4E4;&#xC774; &#xC774; &#xB514;&#xB809;&#xD1A0;&#xB9AC; &#xBC11;&#xC5D0; &#xC704;&#xCE58;&#xD558;&#xACE0; &#xC788;&#xB2E4;.</p>
<p>/etc/apache2/apache2.conf<br>
&#xAE30;&#xBCF8; config &#xD30C;&#xC77C;&#xB85C;, &#xB2E4;&#xB978; &#xB9AC;&#xB205;&#xC2A4; &#xBC30;&#xD3EC;&#xD310;&#xC5D0;&#xC11C;&#xB294; <code>httpd.conf</code>&#xB97C; config &#xD30C;&#xC77C;&#xB85C; &#xC0AC;&#xC6A9;&#xD558;&#xACE0; &#xC788;&#xC9C0;&#xB9CC; &#xC6B0;&#xBD84;&#xD22C;&#xC5D0;&#xC11C;&#xB294; <code>apache2.conf</code>&#xB97C; &#xC0AC;&#xC6A9;&#xD55C;&#xB2E4;.</p>
<p>/etc/apache2/conf.d<br>
&#xACE0;&#xAE09; config &#xD30C;&#xC77C;&#xB85C;, &#xB2E4;&#xB978; &#xB9AC;&#xB205;&#xC2A4; &#xBC30;&#xD3EC;&#xD310;&#xC5D0;&#xC11C; <code>httpd.conf</code> &#xD30C;&#xC77C; &#xD558;&#xB098;&#xC5D0; &#xC124;&#xC815;&#xB418;&#xC5B4; &#xC788;&#xB358; &#xBB38;&#xC790;&#xC14B;&#xACFC; &#xC5D0;&#xB7EC;&#xBA54;&#xC2DC;&#xC9C0;, &#xBCF4;&#xC548;&#xACFC; &#xAD00;&#xB828;&#xB41C; &#xC124;&#xC815;&#xC744; &#xB530;&#xB85C; &#xB530;&#xB85C; &#xBD84;&#xB9AC;&#xD558;&#xC5EC; <code>conf.d</code> &#xB514;&#xB809;&#xD1A0;&#xB9AC;&#xBC11;&#xC5D0;&#xC11C; &#xC124;&#xC815;&#xD558;&#xACE0; &#xC788;&#xB2E4;. &#xB610;&#xD55C; &#xC0AC;&#xC6A9;&#xC790;&#xAC00; &#xC124;&#xCE58;&#xD558;&#xAC8C; &#xB418;&#xB294; Apache&#xC640; &#xAD00;&#xB828;&#xB41C; &#xC560;&#xD50C;&#xB9AC;&#xCF00;&#xC774;&#xC158;&#xB4E4;&#xC758; &#xC124;&#xC815;&#xD30C;&#xC77C;&#xB4E4;&#xB3C4; &#xC704;&#xCE58;&#xD558;&#xAC8C; &#xB41C;&#xB2E4;.</p>
<p>/etc/apache2/envvars<br>
apache2ctl &#xD658;&#xACBD;&#xC124;&#xC815; &#xD30C;&#xC77C;&#xC774;&#xB2E4;.</p>
<p>/etc/apache2/httpd.conf<br>
&#xC0AC;&#xC6A9;&#xC790;&#xC758; &#xD2B9;&#xC815; &#xC124;&#xC815; &#xD30C;&#xC77C;&#xB85C;, &#xC5ED;&#xC0AC;&#xC801;&#xC73C;&#xB85C; <code>httpd.conf</code> &#xAC00; config &#xD30C;&#xC77C;&#xC774;&#xC600;&#xB294;&#xB370; &#xC9C0;&#xAE08;&#xC740; &#xBE48;&#xD30C;&#xC77C;&#xC774;&#xB2E4;. &#xC0AC;&#xC6A9;&#xC790;&#xAC00; &#xD2B9;&#xC815; &#xC124;&#xC815;&#xC744; &#xBD80;&#xC5EC;&#xD574;&#xC11C; &#xC0AC;&#xC6A9;&#xD560; &#xC218; &#xC787;&#xB2E4;.</p>
<p>/etc/apache2/magic<br>
&#xD30C;&#xC77C;&#xC758; &#xC2DC;&#xC791;&#xAC12;(magic number) &#xB370;&#xC774;&#xD130;&#xBCA0;&#xC774;&#xC2A4;. &#xC774; &#xAC12;&#xC5D0; &#xAE30;&#xBC18;&#xD574; &#xC804;&#xC1A1;&#xD558;&#xB294; &#xD30C;&#xC77C;&#xC758; MIME Type&#xC744; &#xACB0;&#xC815;&#xD55C;&#xB2E4;. &#xAC00;&#xAE09;&#xC801; &#xC218;&#xC815;&#xD558;&#xC9C0; &#xB9D0; &#xAC83;.</p>
<p>/etc/apache2/mods-available<br>
&#xC0AC;&#xC6A9;&#xAC00;&#xB2A5;&#xD55C; Apache &#xBAA8;&#xB4C8;&#xC744; &#xBD88;&#xB7EC;&#xC624;&#xB294; &#xACF3;&#xC774;&#xB2E4;.</p>
<p>/etc/apache2/mods-enabled<br>
&#xC704;&#xC758; /etc/apache2/mods-available &#xC758; &#xBAA8;&#xB4C8;&#xC911;&#xC5D0; &#xC0AC;&#xC6A9;&#xD560; &#xBAA8;&#xB4C8;&#xC744; &#xC2EC;&#xBCFC;&#xB9AD; &#xB9C1;&#xD06C;&#xB85C; &#xCD94;&#xAC00;&#xD558;&#xC5EC; &#xC2E4;&#xC81C; &#xB3D9;&#xC791;&#xD558;&#xAC8C; &#xB9CC;&#xB4E0;&#xB2E4;.</p>
<p>/etc/apache2/ports.conf<br>
Apache &#xC11C;&#xBC84;&#xC758; &#xC11C;&#xBE44;&#xC2A4; &#xD3EC;&#xD2B8; &#xC124;&#xC815;&#xC73C;&#xB85C; http&#xC758; &#xAE30;&#xBCF8;&#xAC12; 80 &#xACFC; https&#xC758; &#xAE30;&#xBCF8;&#xAC12; 443, &#xAC00;&#xC0C1;&#xD638;&#xC2A4;&#xD2B8;&#xC758; &#xD3EC;&#xD2B8;&#xB4E4;&#xC744; &#xC124;&#xC815;&#xD560; &#xC218; &#xC788;&#xB2E4;.</p>
<p>/etc/apache2/sites-available<br>
&#xC11C;&#xBC84;&#xC5D0;&#xC11C; &#xC6B4;&#xC601;&#xD560; &#xC0AC;&#xC774;&#xD2B8;&#xC758; &#xC124;&#xC815;&#xD30C;&#xC77C;&#xC774;&#xB2E4;.</p>
<p>/etc/apache2/sites-enabled<br>
&#xC704;&#xC758; /etc/apache2/sites-available&#xC5D0;&#xC11C; &#xC124;&#xC815;&#xD55C; &#xD30C;&#xC77C;&#xC744; &#xC2EC;&#xBCFC;&#xB9AD; &#xB9C1;&#xD06C;&#xB85C; &#xCD94;&#xAC00;&#xD558;&#xC5EC; &#xC2E4;&#xC81C; &#xC6B4;&#xC601;&#xC5D0; &#xC0AC;&#xC6A9;&#xD560; &#xC124;&#xC815;&#xD30C;&#xC77C;&#xB4E4;&#xC774;&#xB2E4;.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Send Data between Process]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p><a href="https://www.thoughtco.com/send-information-between-applications-1058476?ref=suitmyself.com">WM_COPYDATA AND TCOPYDATASTRUCT</a></p>
<p>&#xC704;&#xB9C1;&#xD06C;&#xC758; &#xB0B4;&#xC6A9;&#xC744; &#xAC04;&#xB7B5;&#xD558;&#xAC8C; &#xBC88;&#xC5ED;&#xD574;&#xB450;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>WM_COPYDATA &#xBA54;&#xC2DC;&#xC9C0;&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xBA74; &#xD55C; &#xC751;&#xC6A9; &#xD504;&#xB85C;&#xADF8;&#xB7A8;&#xC5D0;&#xC11C; &#xB2E4;&#xB978; &#xC751;&#xC6A9; &#xD504;&#xB85C;&#xADF8;&#xB7A8;</p>]]></description><link>http://suitmyself.com/send-data-between-process/</link><guid isPermaLink="false">6461caa7bec44232aa42f106</guid><category><![CDATA[Programming]]></category><dc:creator><![CDATA[benjamin kim]]></dc:creator><pubDate>Mon, 15 May 2023 06:05:59 GMT</pubDate><media:content url="http://suitmyself.com/content/images/2023/05/Send-Data-between-Process.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="http://suitmyself.com/content/images/2023/05/Send-Data-between-Process.png" alt="Send Data between Process"><p><a href="https://www.thoughtco.com/send-information-between-applications-1058476?ref=suitmyself.com">WM_COPYDATA AND TCOPYDATASTRUCT</a></p>
<p>&#xC704;&#xB9C1;&#xD06C;&#xC758; &#xB0B4;&#xC6A9;&#xC744; &#xAC04;&#xB7B5;&#xD558;&#xAC8C; &#xBC88;&#xC5ED;&#xD574;&#xB450;&#xC5C8;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>WM_COPYDATA &#xBA54;&#xC2DC;&#xC9C0;&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xBA74; &#xD55C; &#xC751;&#xC6A9; &#xD504;&#xB85C;&#xADF8;&#xB7A8;&#xC5D0;&#xC11C; &#xB2E4;&#xB978; &#xC751;&#xC6A9; &#xD504;&#xB85C;&#xADF8;&#xB7A8;&#xC73C;&#xB85C; &#xB370;&#xC774;&#xD130;&#xB97C; &#xBCF4;&#xB0BC; &#xC218; &#xC788;&#xC2B5;&#xB2C8;&#xB2E4;. &#xC218;&#xC2E0; &#xC751;&#xC6A9; &#xD504;&#xB85C;&#xADF8;&#xB7A8;&#xC740; TCopyDataStruct &#xB808;&#xCF54;&#xB4DC;&#xB85C; &#xB370;&#xC774;&#xD130;&#xB97C; &#xC218;&#xC2E0;&#xD569;&#xB2C8;&#xB2E4;. TCopyDataStruct&#xB294; Windows.pas &#xC720;&#xB2DB;&#xC5D0; &#xC815;&#xC758;&#xB418;&#xC5B4; &#xC788;&#xC73C;&#xBA70; &#xC804;&#xB2EC;&#xD560; &#xB370;&#xC774;&#xD130;&#xAC00; &#xB4E4;&#xC5B4;&#xC788;&#xB294; COPYDATASTRUCT &#xAD6C;&#xC870;&#xCCB4;&#xB97C; &#xB798;&#xD551;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>&#xB2E4;&#xC74C;&#xC740; TCopyDataStruct &#xB808;&#xCF54;&#xB4DC;&#xC758; &#xC120;&#xC5B8;&#xACFC; &#xC124;&#xBA85;&#xC785;&#xB2C8;&#xB2E4;.</p>
<pre><code class="language-pascaligo"> type
 TCopyDataStruct = packed record
 dwData: DWORD; //up to 32 bits of data to be passed to the receiving application
 cbData: DWORD; //the size, in bytes, of the data pointed to by the lpData member
 lpData: Pointer; //Points to data to be passed to the receiving application. This member can be nil.
 end; 
</code></pre>
<p>WM_COPYDATA &#xC774;&#xC6A9;&#xD558;&#xC5EC; &#xBB38;&#xC790;&#xC5F4; &#xC804;&#xC1A1;&#xD558;&#xAE30;</p>
<p>Sender&#xD504;&#xB85C;&#xC138;&#xC2A4;&#xC5D0;&#xC11C; Receiver&#xC5D0;&#xAC8C; &#xB370;&#xC774;&#xD130;&#xB97C; &#xBCF4;&#xB0B4;&#xB824;&#xBA74; CopyDataStruct &#xC5D0; &#xBCC0;&#xC218;&#xB97C; &#xC800;&#xC7A5;&#xD558;&#xC5EC; SendMessage &#xD568;&#xC218;&#xB97C; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; &#xC804;&#xB2EC;&#xD574;&#xC57C;&#xD569;&#xB2C8;&#xB2E4;. WM_CopyData&#xC5D0; &#xBB38;&#xC790;&#xC5F4; &#xAC12;&#xC744; &#xBCF4;&#xB0B4;&#xB294; &#xBC29;&#xBC95;&#xC740; &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<pre><code class="language-pascaligo"> procedure TSenderMainForm.SendString() ;
 var
 stringToSend : string;
 copyDataStruct : TCopyDataStruct;
 begin
 stringToSend := &apos;About Delphi Programming&apos;;

 copyDataStruct.dwData := 0; //use it to identify the message contents
 copyDataStruct.cbData := 1 + Length(stringToSend) ;
 copyDataStruct.lpData := PChar(stringToSend) ;

 SendData(copyDataStruct) ;
 end;
</code></pre>
<p>SendData &#xC0AC;&#xC6A9;&#xC790; &#xC9C0;&#xC815; &#xD568;&#xC218;&#xB294; FindWindow API &#xD638;&#xCD9C;&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; Receiver &#xD504;&#xB85C;&#xC138;&#xC2A4;&#xB97C; &#xCC3E;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<pre><code class="language-pascaligo"> procedure TSenderMainForm.SendData(const copyDataStruct: TCopyDataStruct) ;
 var
   receiverHandle : THandle;
   res : integer;
 begin
   receiverHandle := FindWindow(PChar(&apos;TReceiverMainForm&apos;),PChar(&apos;ReceiverMainForm&apos;)) ;
   if receiverHandle = 0 then
   begin
     ShowMessage(&apos;CopyData Receiver NOT found!&apos;) ;
     Exit;
   end;

   res := SendMessage(receiverHandle, WM_COPYDATA, Integer(Handle), Integer(@copyDataStruct)) ;
 end;
</code></pre>
<p>&#xC704;&#xC758; &#xCF54;&#xB4DC;&#xC5D0;&#xC11C; &#xAE30;&#xBCF8; &#xD3FC; ( &quot;TReceiverMainForm&quot;)&#xC758; &#xD074;&#xB798;&#xC2A4; &#xC774;&#xB984;&#xACFC; Windows &#xCEA1;&#xC158; ( &quot;ReceiverMainForm&quot;)&#xC744; &#xC804;&#xB2EC;&#xD558;&#xC5EC; FindWindow API &#xD638;&#xCD9C;&#xC744; &#xC0AC;&#xC6A9;&#xD558;&#xC5EC; Receiver &#xC5B4;&#xD50C;&#xB9AC;&#xCF00;&#xC774;&#xC158;&#xC744; &#xCC3E;&#xC558;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<p>&#xCC38;&#xACE0; : SendMessage&#xB294; WM_CopyData &#xBA54;&#xC2DC;&#xC9C0;&#xB97C; &#xCC98;&#xB9AC;&#xD558;&#xB294; &#xCF54;&#xB4DC;&#xC5D0;&#xC11C; &#xD560;&#xB2F9; &#xD55C; &#xC815;&#xC218; &#xAC12;&#xC744; &#xBC18;&#xD658;&#xD569;&#xB2C8;&#xB2E4;.</p>
<p>HANDLING WM_COPYDATA - RECEIVING A STRING</p>
<p>Receiver &#xC5B4;&#xD50C;&#xB9AC;&#xCF00;&#xC774;&#xC158;&#xC740; &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC774; WM_CopyData &#xBA54;&#xC2DC;&#xC9C0;&#xB97C; &#xCC98;&#xB9AC;&#xD569;&#xB2C8;&#xB2E4;.</p>
<pre><code class="language-pascaligo"> type
 TReceiverMainForm = class(TForm)
 private
 procedure WMCopyData(var Msg : TWMCopyData) ; message WM_COPYDATA;
 ...
 implementation
 ...
 procedure TReceiverMainForm.WMCopyData(var Msg: TWMCopyData) ;
 var
 s : string;
 begin
 s := PChar(Msg.CopyDataStruct.lpData) ;

 //Send something back
 msg.Result := 2006;
 end;
</code></pre>
<p>TWMCopyData &#xB808;&#xCF54;&#xB4DC;&#xB294; &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC774; &#xC120;&#xC5B8;&#xB429;&#xB2C8;&#xB2E4;.</p>
<pre><code class="language-pascaligo"> TWMCopyData = packed record
 Msg: Cardinal;
 From: HWND;//Handle of the Window that passed the data
 CopyDataStruct: PCopyDataStruct; //data passed
 Result: Longint;//Use it to send a value back to the &quot;Sender&quot;
 end;
</code></pre>
<p>&#xBB38;&#xC790;&#xC5F4; &#xC804;&#xC1A1;, &#xC77C;&#xBC18;&#xD654;&#xB41C; &#xB808;&#xCF54;&#xB4DC; or &#xC774;&#xBBF8;&#xC9C0;?<br>
&#xC544;&#xB798; &#xC18C;&#xC2A4; &#xCF54;&#xB4DC;&#xB294; &#xBB38;&#xC790;&#xC5F4;, &#xB808;&#xCF54;&#xB4DC;(&#xBCF5;&#xD569; &#xB370;&#xC774;&#xD130; &#xD615;&#xC2DD;) &#xBC0F; &#xADF8;&#xB798;&#xD53D; (&#xBE44;&#xD2B8;&#xB9F5;)&#xC744; &#xB2E4;&#xB978; &#xC5B4;&#xD50C;&#xB9AC;&#xCF00;&#xC774;&#xC158;&#xC73C;&#xB85C; &#xBCF4;&#xB0B4;&#xB294; &#xBC29;&#xBC95;&#xC744; &#xBCF4;&#xC5EC;&#xC90D;&#xB2C8;&#xB2E4;.</p>
<p>&#xB2E4;&#xC6B4;&#xB85C;&#xB4DC;&#xB97C; &#xAE30;&#xB2E4;&#xB9B4; &#xC218;&#xC5C6;&#xB294; &#xACBD;&#xC6B0; TBitmap &#xADF8;&#xB798;&#xD53D;&#xC744; &#xBCF4;&#xB0B4;&#xB294; &#xBC29;&#xBC95;&#xC740; &#xB2E4;&#xC74C;&#xACFC; &#xAC19;&#xC2B5;&#xB2C8;&#xB2E4;.</p>
<pre><code class="language-pascaligo"> procedure TSenderMainForm.SendImage() ;
 var
 ms : TMemoryStream;
 bmp : TBitmap;
 copyDataStruct : TCopyDataStruct;
 begin
 ms := TMemoryStream.Create;
 try
 bmp := self.GetFormImage;
 try
 bmp.SaveToStream(ms) ;
 finally
 bmp.Free;
 end;

 copyDataStruct.dwData := Integer(cdtImage) ; // identify the data
 copyDataStruct.cbData := ms.Size;
 copyDataStruct.lpData := ms.Memory;

 SendData(copyDataStruct) ;
 finally
 ms.Free;
 end;
 end;
</code></pre>
<p>&#xBC1B;&#xB294; &#xBC29;&#xBC95; :</p>
<pre><code class="language-pascaligo"> procedure TReceiverMainForm.HandleCopyDataImage(
 copyDataStruct: PCopyDataStruct) ;
 var
 ms: TMemoryStream;
 begin
 ms := TMemoryStream.Create;
 try
 ms.Write(copyDataStruct.lpData^, copyDataStruct.cbData) ;
 ms.Position := 0;
 receivedImage.Picture.Bitmap.LoadFromStream(ms) ;
 finally
 ms.Free;
 end;
 end;
</code></pre>
<p><a href="https://www.thoughtco.com/message-in-the-bottle-1058444?ref=suitmyself.com">Message in the Bottle</a><br>
<a href="http://forum.codecall.net/topic/66869-monitoring-registry-changes/?ref=suitmyself.com">Monitoring Registry Changes</a><br>
<a href="https://www.codeproject.com/Articles/2082/API-hooking-revealed?ref=suitmyself.com">API hooking revealed</a><br>
<a href="https://forum.lazarus.freepascal.org/index.php?topic=37371.0&amp;ref=suitmyself.com">How to monitor directory / file changes on network share</a><br>
<a href="http://www.shellplus.com/examples/change-notifier/change-notifier-example.html?ref=suitmyself.com">Change Notifier Component Example</a><br>
<a href="http://www.scalabium.com/faq/dct0110.htm?ref=suitmyself.com">How can I increase a performance of standard TTreeView/TListView?</a></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Guardians of the Galaxy Vol. 3]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h2 id="%EA%B0%80%EB%94%94%EC%96%B8-%EC%98%A4%EB%B8%8C-%EA%B0%A4%EB%9F%AD%EC%8B%9C-3">&#xAC00;&#xB514;&#xC5B8; &#xC624;&#xBE0C; &#xAC24;&#xB7ED;&#xC2DC; 3</h2>
<iframe width="560" height="315" src="https://www.youtube.com/embed/JqcncLPi9zw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<p><code>&#xAC00;&#xB514;&#xC5B8;&#xC2A4; &#xC624;&#xBE0C; &#xAC24;&#xB7ED;&#xC2DC; 1</code>&#xC744; &#xBCF8; &#xAC83;&#xC774; &#xC5CA;&#xADF8;&#xC81C; &#xAC19;&#xC740;&#xB370; &#xBC8C;&#xC368; &#xC138;&#xBC88;&#xC9F8;&#xAC00; &#xB098;&#xC624;&#xB2E4;&#xB2C8;...<br>
&#xC544;&#xC774;&#xC5B8;&#xB9E8;&#xACFC; &#xC564;&#xD2B8;&#xB9E8;3&#xBC88;&#xC9F8;</p>]]></description><link>http://suitmyself.com/guardians-of-the-galaxy-vol-3/</link><guid isPermaLink="false">6461c235bec44232aa42f09f</guid><category><![CDATA[Travel]]></category><category><![CDATA[Etc]]></category><dc:creator><![CDATA[benjamin kim]]></dc:creator><pubDate>Mon, 15 May 2023 05:58:54 GMT</pubDate><media:content url="http://suitmyself.com/content/images/2023/05/knowhere_title.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="%EA%B0%80%EB%94%94%EC%96%B8-%EC%98%A4%EB%B8%8C-%EA%B0%A4%EB%9F%AD%EC%8B%9C-3">&#xAC00;&#xB514;&#xC5B8; &#xC624;&#xBE0C; &#xAC24;&#xB7ED;&#xC2DC; 3</h2>
<iframe width="560" height="315" src="https://www.youtube.com/embed/JqcncLPi9zw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<img src="http://suitmyself.com/content/images/2023/05/knowhere_title.png" alt="Guardians of the Galaxy Vol. 3"><p><code>&#xAC00;&#xB514;&#xC5B8;&#xC2A4; &#xC624;&#xBE0C; &#xAC24;&#xB7ED;&#xC2DC; 1</code>&#xC744; &#xBCF8; &#xAC83;&#xC774; &#xC5CA;&#xADF8;&#xC81C; &#xAC19;&#xC740;&#xB370; &#xBC8C;&#xC368; &#xC138;&#xBC88;&#xC9F8;&#xAC00; &#xB098;&#xC624;&#xB2E4;&#xB2C8;...<br>
&#xC544;&#xC774;&#xC5B8;&#xB9E8;&#xACFC; &#xC564;&#xD2B8;&#xB9E8;3&#xBC88;&#xC9F8;&#xB97C; &#xC81C;&#xC678;&#xD558;&#xACE0;&#xB294; &#xBAA8;&#xB450; &#xBA54;&#xAC00;&#xBC15;&#xC2A4;&#xC758; MX&#xAD00;&#xC5D0;&#xC11C; &#xBD10;&#xC654;&#xB2E4;.</p>
<p>&#xADF8;&#xB7F0;&#xB370; &#xC720;&#xC77C;&#xD558;&#xAC8C; IMAX&#xB85C; &#xBCF8;&#xAC83;&#xC774; <code>&#xAC00;&#xB514;&#xC5B8;&#xC2A4; &#xC624;&#xBE0C; &#xAC24;&#xB7ED;&#xC2DC; 1</code> &#xC774;&#xC5C8;&#xB2E4;.<br>
<code>&#xD53C;&#xD130; &#xD03C;</code>&#xC758; &#xCCAB; &#xC7A5;&#xBA74; &#xBCF4;&#xC11D;&#xC744; &#xD6D4;&#xCE58;&#xB7EC;&#xAC00;&#xBA74;&#xC11C; &#xAE30;&#xBD84;&#xC88B;&#xAC8C; &#xB178;&#xB798;&#xD558;&#xB294; &#xADF8; &#xC7A5;&#xBA74;&#xC758; &#xB290;&#xB08C;&#xC774; &#xC88B;&#xC544;&#xC11C; 2D&#xB85C; &#xD55C;&#xBC88; &#xB354; &#xBCF8; &#xC2DC;&#xB9AC;&#xC988;&#xC600;&#xB2E4;.</p>
<p>&#xB9C8;&#xBE14; &#xC2DC;&#xB124;&#xB9C8;&#xD2F1; &#xC720;&#xB2C8;&#xBC84;&#xC2A4;&#xC5D0;&#xC11C; <code>&#xC2A4;&#xD0C0;&#xB85C;&#xB4DC;</code>&#xB294; &#xAC00;&#xC7A5; &#xB9E4;&#xB825;&#xC801;&#xC778; &#xD788;&#xC5B4;&#xB85C;&#xC774;&#xBA74;&#xC11C; &#xAC00;&#xC7A5; &#xB2A5;&#xB825;&#xC774; &#xB5A8;&#xC5B4;&#xC9C0;&#xB294; &#xD788;&#xC5B4;&#xB85C;&#xAC00; &#xC544;&#xB2D0;&#xAE4C; &#xC2F6;&#xB2E4;.</p>
<p>&#xADF8;&#xB7EC;&#xB098; &#xADF8; &#xB3D9;&#xB8CC;&#xB4E4;&#xACFC; &#xD568;&#xAED8; &#xD558;&#xBA74;&#xC11C; &#xD558;&#xB098;&#xC758; &#xD788;&#xC5B4;&#xB85C; &#xC5ED;&#xD560;&#xC744; &#xD558;&#xAC8C; &#xB418;&#xB294; &#xC9D1;&#xB2E8;&#xC774;&#xACE0; &#xB9C8;&#xBE14; &#xC2DC;&#xB124;&#xB9C8;&#xD2F1; &#xC720;&#xB2C8;&#xBC84;&#xC2A4;&#xC5D0;&#xC11C; &#xAC00;&#xC7A5; &#xC911;&#xC694;&#xD55C; &#xC5ED;&#xD560;&#xC744; &#xD558;&#xB294; &#xC9D1;&#xB2E8;&#xC774;&#xB77C;&#xB294; &#xB290;&#xB08C;&#xC774; &#xB4E0;&#xB2E4;.</p>
<p>&#xC74C;&#xC545;&#xACFC; &#xC601;&#xC0C1;&#xC758; &#xC990;&#xAC70;&#xC6C0;&#xC774; &#xAC00;&#xC7A5; &#xD070; &#xC601;&#xD654;&#xC600;&#xAE30;&#xC5D0; &#xBCF4;&#xB7EC;&#xAC08; &#xC608;&#xC815;&#xC774;&#xB2E4;. &#xB9C8;&#xBE14; &#xC2DC;&#xB124;&#xB9C8;&#xD2F1; &#xC720;&#xB2C8;&#xBC84;&#xC2A4;&#xC5D0; &#xB300;&#xD574;&#xC11C;&#xB3C4; &#xB9CE;&#xC774; &#xC77D;&#xC5B4;&#xBCF4;&#xBA74; &#xC7AC;&#xBBF8;&#xC788;&#xC744; &#xB4EF; &#xD558;&#xB2E4;.</p>
<h3 id="%EC%9E%90%EC%A3%BC-%EA%B0%80%EB%8A%94-%EC%86%A1%EB%8F%84%EA%B5%AD%EC%A0%9C%EB%8F%84%EC%8B%9C-%EB%A9%94%EA%B0%80%EB%B0%95%EC%8A%A4">&#xC790;&#xC8FC; &#xAC00;&#xB294; &#xC1A1;&#xB3C4;&#xAD6D;&#xC81C;&#xB3C4;&#xC2DC; &#xBA54;&#xAC00;&#xBC15;&#xC2A4;</h3>
<p><a href="https://en.wikipedia.org/wiki/Marvel_Cinematic_Universe?ref=suitmyself.com#Books">Marvel Cinematic Universe</a></p>
<p><img src="http://suitmyself.com/content/images/2023/05/KakaoTalk_20230515_144853052_01.jpg" alt="Guardians of the Galaxy Vol. 3" loading="lazy"></p>
<p>&#xC601;&#xD654;&#xAD00;&#xC740; &#xCF8C;&#xC801;&#xD55C; &#xBA54;&#xAC00;&#xBC15;&#xC2A4;MX&#xAD00;&#xC774; &#xC88B;&#xB2E4;. &#xC758;&#xC790;&#xB3C4; &#xB113;&#xC5B4;&#xC11C; &#xC88B;&#xAD6C;, &#xC0AC;&#xC6B4;&#xB4DC;&#xB294; &#xC601;&#xC0C1;&#xC758; &#xC785;&#xCCB4;&#xAC10;&#xAE4C;&#xC9C0; &#xC0B4;&#xB824;&#xC8FC;&#xAE30; &#xB54C;&#xBB38;&#xC5D0; 3D&#xB97C; &#xBCF4;&#xB294; &#xAC83;&#xBCF4;&#xB2E4; &#xB354;&#xC6B1; &#xC88B;&#xC740; &#xB290;&#xB08C;&#xC744; &#xC900;&#xB2E4;...(&#xAC1C;&#xC778;&#xC801;&#xC73C;&#xB85C;)</p>
<p>&#xC774;&#xBC88;&#xC5D0; &#xAC00;&#xC624;&#xAC24;3&#xB97C; &#xBCF4;&#xB7EC;&#xAC00;&#xBA74;&#xC11C; &#xC0AC;&#xC9C4;&#xB3C4; &#xC880; &#xCC0D;&#xC5B4;&#xB46C;&#xC57C;&#xACA0;&#xB2E4;..</p>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>