<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>개발 note</title>
    <link>https://maze910.tistory.com/</link>
    <description>개발자를 꿈꾸는 민경이의 기록 블로그</description>
    <language>ko</language>
    <pubDate>Tue, 26 May 2026 02:23:33 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>미로910</managingEditor>
    <image>
      <title>개발 note</title>
      <url>https://tistory1.daumcdn.net/tistory/7022537/attach/dfa4cd95bdb140d790bc940c3d6e22ff</url>
      <link>https://maze910.tistory.com</link>
    </image>
    <item>
      <title>Node.js 설치  &amp;amp;  간단한 웹 서버 실행하기(localhost:3000)</title>
      <link>https://maze910.tistory.com/318</link>
      <description>&lt;div&gt;
&lt;div id=&quot;model-response-message-contentr_fcbc0651b723bf1b&quot; style=&quot;color: #e3e3e3;&quot;&gt;
&lt;h3 data-path-to-node=&quot;0&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;Node.js는&lt;/b&gt; 자바스크립트를 브라우저 밖에서도 실행할 수 있게 해주는 런타임 환경입니다.&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;20,0&quot;&gt;자바스크립트 하나로 프론트부터 서버까지 다 끝내고 싶고, 가볍고 빠른 실시간 서비스를 만들고 싶을 때&quot;&lt;/b&gt;&amp;nbsp;➡️&amp;nbsp;&lt;b&gt;Node.js를 선택 &lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt; &lt;b&gt; npm&lt;/b&gt; (Node Package Manager)&lt;br /&gt;Node.js를 설치하면 npm이라는 강력한 도구가 함께 따라옵니다.&lt;br /&gt;전 세계 개발자들이 미리 만들어 놓은 코드 뭉치(패키지)들을 명령어 한 줄로 가져다 쓸 수 있게 해주는데, 이게 Node.js 생태계를 세계 최대 규모로 만든 일등 공신이다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;왜 Spring 대신 Node.js를 쓰는걸까?&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Spring은 매우 훌륭하고 안정적인 프레임워크지만, Node.js는 Spring이 갖지 못한 독보적인 '가벼움'과 '속도'가 있기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,0,0&quot;&gt;Java:&lt;/b&gt; 언어&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,1,0&quot;&gt;Spring:&lt;/b&gt; 프레임워크&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,2,0&quot;&gt;JavaScript:&lt;/b&gt; 언어&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;4,3,0&quot;&gt;Node.js:&lt;/b&gt; 자바스크립트가 돌아가는 &lt;b data-index-in-node=&quot;22&quot; data-path-to-node=&quot;4,3,0&quot;&gt;공간(환경)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt; 설치&lt;/b&gt;&lt;/h2&gt;
&lt;figure id=&quot;og_1772536078180&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Node.js &amp;mdash; Run JavaScript Everywhere&quot; data-og-description=&quot;Node.js&amp;reg; is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.&quot; data-og-host=&quot;nodejs.org&quot; data-og-source-url=&quot;https://nodejs.org/ko&quot; data-og-url=&quot;https://nodejs.org/ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ngLvw/dJMb9lL894I/pMdFObYd2oCkEsy4DMXwKK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bmb22w/dJMb9g48Mzx/lHYPXsCk76YwG1O2C23tx0/img.png?width=224&amp;amp;height=256&amp;amp;face=0_0_224_256&quot;&gt;&lt;a href=&quot;https://nodejs.org/ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://nodejs.org/ko&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ngLvw/dJMb9lL894I/pMdFObYd2oCkEsy4DMXwKK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bmb22w/dJMb9g48Mzx/lHYPXsCk76YwG1O2C23tx0/img.png?width=224&amp;amp;height=256&amp;amp;face=0_0_224_256');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Node.js &amp;mdash; Run JavaScript Everywhere&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Node.js&amp;reg; is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;nodejs.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1️⃣ &lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1861&quot; data-origin-height=&quot;1360&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lTdx2/dJMb99ZPSS4/kgCwsDJRfx4w4l5scssckK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lTdx2/dJMb99ZPSS4/kgCwsDJRfx4w4l5scssckK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lTdx2/dJMb99ZPSS4/kgCwsDJRfx4w4l5scssckK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlTdx2%2FdJMb99ZPSS4%2FkgCwsDJRfx4w4l5scssckK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1861&quot; height=&quot;1360&quot; data-origin-width=&quot;1861&quot; data-origin-height=&quot;1360&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2️⃣&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bP6BNM/dJMb99MfuXo/qbHsDDWB5x0PFD99g4o8P1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bP6BNM/dJMb99MfuXo/qbHsDDWB5x0PFD99g4o8P1/img.png&quot; data-origin-width=&quot;963&quot; data-origin-height=&quot;756&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.0799%; margin-right: 10px;&quot; data-widthpercent=&quot;49.66&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bP6BNM/dJMb99MfuXo/qbHsDDWB5x0PFD99g4o8P1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbP6BNM%2FdJMb99MfuXo%2FqbHsDDWB5x0PFD99g4o8P1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;963&quot; height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WVHhS/dJMcaa5ueA3/QpoUDSHoybyFvYM2LcEzzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WVHhS/dJMcaa5ueA3/QpoUDSHoybyFvYM2LcEzzK/img.png&quot; data-origin-width=&quot;975&quot; data-origin-height=&quot;755&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.7573%;&quot; data-widthpercent=&quot;50.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WVHhS/dJMcaa5ueA3/QpoUDSHoybyFvYM2LcEzzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWVHhS%2FdJMcaa5ueA3%2FQpoUDSHoybyFvYM2LcEzzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;975&quot; height=&quot;755&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;첫번 째는 체크를 해주고 두번 째는 체크 해도 되는데 저는 복잡해질 거 같아 체크하지 않았습니다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;976&quot; data-origin-height=&quot;753&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ngEZO/dJMcafFJaLI/Hk1wwn6Kw3Kki4XyYspCvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ngEZO/dJMcafFJaLI/Hk1wwn6Kw3Kki4XyYspCvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ngEZO/dJMcafFJaLI/Hk1wwn6Kw3Kki4XyYspCvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FngEZO%2FdJMcafFJaLI%2FHk1wwn6Kw3Kki4XyYspCvk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;976&quot; height=&quot;753&quot; data-origin-width=&quot;976&quot; data-origin-height=&quot;753&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;설치 완료 후 &lt;b&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;cmd&lt;/span&gt;&lt;/b&gt; 열기&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;node&lt;/span&gt; 입력 후 엔터&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1067&quot; data-origin-height=&quot;621&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WRI4X/dJMcahQ4jXn/g2cFTOKmiXEKQsaFRQXKk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WRI4X/dJMcahQ4jXn/g2cFTOKmiXEKQsaFRQXKk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WRI4X/dJMcahQ4jXn/g2cFTOKmiXEKQsaFRQXKk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWRI4X%2FdJMcahQ4jXn%2Fg2cFTOKmiXEKQsaFRQXKk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1067&quot; height=&quot;621&quot; data-origin-width=&quot;1067&quot; data-origin-height=&quot;621&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt; 다음과 같은 프롬프트를 얻으면 설치가 완료&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3️⃣&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt; VS Code&lt;/span&gt;&lt;/b&gt; 다운로드 하기&amp;nbsp;&lt;/h3&gt;
&lt;figure id=&quot;og_1772540448852&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Visual Studio Code - The open source AI code editor&quot; data-og-description=&quot;Visual Studio Code redefines AI-powered coding with GitHub Copilot for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.&quot; data-og-host=&quot;code.visualstudio.com&quot; data-og-source-url=&quot;https://code.visualstudio.com/&quot; data-og-url=&quot;https://code.visualstudio.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/C03to/dJMb9efbxTJ/B7rhsni2elMDDqymUmDk61/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://code.visualstudio.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://code.visualstudio.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/C03to/dJMb9efbxTJ/B7rhsni2elMDDqymUmDk61/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Visual Studio Code - The open source AI code editor&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Visual Studio Code redefines AI-powered coding with GitHub Copilot for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;code.visualstudio.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;vs code 설치 해줍니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;4️⃣&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; 폴더 만들고 초기화하기 &lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;폴더 만들기&amp;nbsp; (ex | 폴더명:c:\nodejs\myContacts)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;366&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJdLi4/dJMcacI1j5q/gPQMRkY5S2O0Ty3agl0a0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJdLi4/dJMcacI1j5q/gPQMRkY5S2O0Ty3agl0a0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJdLi4/dJMcacI1j5q/gPQMRkY5S2O0Ty3agl0a0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJdLi4%2FdJMcacI1j5q%2FgPQMRkY5S2O0Ty3agl0a0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1125&quot; height=&quot;366&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;366&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;cmd 창을 열어서 다음을 입력&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;npm init&lt;/b&gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp;(초기화하는 것)&lt;br /&gt;&lt;br /&gt;(단 폴더 만들었던 경로로 설정해서 검색해주세요)&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1550&quot; data-origin-height=&quot;650&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SjdTP/dJMcafeGWgF/I7WnTaX9yq5CBW8VtxoTD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SjdTP/dJMcafeGWgF/I7WnTaX9yq5CBW8VtxoTD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SjdTP/dJMcafeGWgF/I7WnTaX9yq5CBW8VtxoTD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSjdTP%2FdJMcafeGWgF%2FI7WnTaX9yq5CBW8VtxoTD1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1550&quot; height=&quot;650&quot; data-origin-width=&quot;1550&quot; data-origin-height=&quot;650&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;package name: contacts-manager등 아래와 같이 초기화하기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;881&quot; data-origin-height=&quot;419&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNuNkg/dJMcagSa2ml/LvmKodmfhTm5DUbk4T7bL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNuNkg/dJMcagSa2ml/LvmKodmfhTm5DUbk4T7bL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNuNkg/dJMcagSa2ml/LvmKodmfhTm5DUbk4T7bL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNuNkg%2FdJMcagSa2ml%2FLvmKodmfhTm5DUbk4T7bL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;881&quot; height=&quot;419&quot; data-origin-width=&quot;881&quot; data-origin-height=&quot;419&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Is this OK? (yes) 에서 엔터 누르면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1415&quot; data-origin-height=&quot;341&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btJwCk/dJMcah4Cady/N3Hc2PaBHiPrSiJeMkTrH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btJwCk/dJMcah4Cady/N3Hc2PaBHiPrSiJeMkTrH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btJwCk/dJMcah4Cady/N3Hc2PaBHiPrSiJeMkTrH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtJwCk%2FdJMcah4Cady%2FN3Hc2PaBHiPrSiJeMkTrH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1415&quot; height=&quot;341&quot; data-origin-width=&quot;1415&quot; data-origin-height=&quot;341&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5️⃣&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt; express 설치&lt;/b&gt;&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;npm install express&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;861&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FoCgJ/dJMcagxQlMz/qSQ1Lu8eGVgEUEeKCRAqVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FoCgJ/dJMcagxQlMz/qSQ1Lu8eGVgEUEeKCRAqVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FoCgJ/dJMcagxQlMz/qSQ1Lu8eGVgEUEeKCRAqVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFoCgJ%2FdJMcagxQlMz%2FqSQ1Lu8eGVgEUEeKCRAqVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;861&quot; height=&quot;214&quot; data-origin-width=&quot;861&quot; data-origin-height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6️⃣&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;nodemon 설치&lt;/b&gt;&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;npm install nodemon -g --save-dev&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;145&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqtTmu/dJMcaioVsQI/keEkf50k4KS5W1FQkJ63kK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqtTmu/dJMcaioVsQI/keEkf50k4KS5W1FQkJ63kK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqtTmu/dJMcaioVsQI/keEkf50k4KS5W1FQkJ63kK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqtTmu%2FdJMcaioVsQI%2FkeEkf50k4KS5W1FQkJ63kK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1102&quot; height=&quot;145&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;145&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt; Node.js 실행&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. vscode를 열어 test.js 파일 만들기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. 밑에 코드 붙여 넣기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1772541652741&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const http = require(&quot;http&quot;);

const server = http.createServer((req, res) =&amp;gt; {
    console.log(&quot;request received&quot;);
});

server.listen(3000, () =&amp;gt; {
    console.log(&quot;server started&quot;);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3. 터미널 열어서&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;node test.js&lt;/span&gt;&amp;nbsp; 입력&amp;nbsp;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1978&quot; data-origin-height=&quot;1191&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBX5Y8/dJMcacWvZU2/x4sQVH83rvL2IgA7DqM2B0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBX5Y8/dJMcacWvZU2/x4sQVH83rvL2IgA7DqM2B0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBX5Y8/dJMcacWvZU2/x4sQVH83rvL2IgA7DqM2B0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBX5Y8%2FdJMcacWvZU2%2Fx4sQVH83rvL2IgA7DqM2B0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1978&quot; height=&quot;1191&quot; data-origin-width=&quot;1978&quot; data-origin-height=&quot;1191&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #ee2323;&quot;&gt;❌ 오류 해결 ❌&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 오류가 나면 &lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;현재 경로&lt;/span&gt;&lt;/b&gt;를 확인해보기!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1335&quot; data-origin-height=&quot;708&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8MBeV/dJMcadVoEGp/cxYfVZNFec0YueI50J3er1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8MBeV/dJMcadVoEGp/cxYfVZNFec0YueI50J3er1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8MBeV/dJMcadVoEGp/cxYfVZNFec0YueI50J3er1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8MBeV%2FdJMcadVoEGp%2FcxYfVZNFec0YueI50J3er1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1335&quot; height=&quot;708&quot; data-origin-width=&quot;1335&quot; data-origin-height=&quot;708&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CXxX7/dJMcaih8Bq0/ajFSq5w3kQgyiwUKVE88F0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CXxX7/dJMcaih8Bq0/ajFSq5w3kQgyiwUKVE88F0/img.png&quot; data-origin-width=&quot;512&quot; data-origin-height=&quot;307&quot; data-is-animation=&quot;false&quot; style=&quot;width: 28.8932%; margin-right: 10px;&quot; data-widthpercent=&quot;29.23&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CXxX7/dJMcaih8Bq0/ajFSq5w3kQgyiwUKVE88F0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCXxX7%2FdJMcaih8Bq0%2FajFSq5w3kQgyiwUKVE88F0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;307&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rTHx0/dJMcafMv7fx/SPfv3xcJYeuRB4eGmK7zb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rTHx0/dJMcafMv7fx/SPfv3xcJYeuRB4eGmK7zb0/img.png&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;161&quot; data-is-animation=&quot;false&quot; style=&quot;width: 69.9441%;&quot; data-widthpercent=&quot;70.77&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rTHx0/dJMcafMv7fx/SPfv3xcJYeuRB4eGmK7zb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrTHx0%2FdJMcafMv7fx%2FSPfv3xcJYeuRB4eGmK7zb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;161&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt; 서버에 요청을 보내기&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HrDQt/dJMcabDkLxZ/a0Q36vGc9jUxKnI9shEiQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HrDQt/dJMcabDkLxZ/a0Q36vGc9jUxKnI9shEiQ1/img.png&quot; data-origin-width=&quot;361&quot; data-origin-height=&quot;82&quot; data-is-animation=&quot;false&quot; style=&quot;width: 55.9706%; margin-right: 10px;&quot; data-widthpercent=&quot;56.63&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HrDQt/dJMcabDkLxZ/a0Q36vGc9jUxKnI9shEiQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHrDQt%2FdJMcabDkLxZ%2Fa0Q36vGc9jUxKnI9shEiQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;361&quot; height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSVs0y/dJMcahXQaWP/mIzOE20tE6rgwSDjXboDMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSVs0y/dJMcahXQaWP/mIzOE20tE6rgwSDjXboDMK/img.png&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;191&quot; data-is-animation=&quot;false&quot; style=&quot;width: 42.8666%;&quot; data-widthpercent=&quot;43.37&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSVs0y/dJMcahXQaWP/mIzOE20tE6rgwSDjXboDMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSVs0y%2FdJMcahXQaWP%2FmIzOE20tE6rgwSDjXboDMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;644&quot; height=&quot;191&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버에 요청을 보내기 -&amp;gt; localhost:3000&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;server 응답 -&amp;gt; request received (성공!)&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; app.js라는 파일 만들기 &lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(package.json에서 시작파일로 설정하였기 때문에)&amp;nbsp; app.js 파일 생성 후 코드 붙여넣기&lt;/p&gt;
&lt;pre id=&quot;code_1772542724472&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const express = require('express'); // Express 프레임워크 가져오기
const app = express();
const port = 3000;

app.get('/', (req, res) =&amp;gt; {
    res.status(200);           // 성공했다는 상태 코드 보내기
    res.send(&quot;Hello Node!&quot;);    // 브라우저 화면에 &quot;Hello Node!&quot; 출력하기
});

app.listen(port, () =&amp;gt; {
    console.log(`Server start running at ${port}`);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nodemon app로 서버실행하기&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;nodemon app&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;✨실행화면&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;&lt;b&gt;----------------------------------------------------------------------------------------------------------------&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1659&quot; data-origin-height=&quot;1215&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KkTN3/dJMcahp0Qqn/G5DUbTJ8DCmMDajuaIZ64K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KkTN3/dJMcahp0Qqn/G5DUbTJ8DCmMDajuaIZ64K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KkTN3/dJMcahp0Qqn/G5DUbTJ8DCmMDajuaIZ64K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKkTN3%2FdJMcahp0Qqn%2FG5DUbTJ8DCmMDajuaIZ64K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1659&quot; height=&quot;1215&quot; data-origin-width=&quot;1659&quot; data-origin-height=&quot;1215&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt; &lt;b&gt;----------------------------------------------------------------------------------------------------------------&lt;/b&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;결과화면&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1107&quot; data-origin-height=&quot;728&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbdToZ/dJMcajnKzZR/oBW70irKyLI7VFYsLCzxrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbdToZ/dJMcajnKzZR/oBW70irKyLI7VFYsLCzxrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbdToZ/dJMcajnKzZR/oBW70irKyLI7VFYsLCzxrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbdToZ%2FdJMcajnKzZR%2FoBW70irKyLI7VFYsLCzxrK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1107&quot; height=&quot;728&quot; data-origin-width=&quot;1107&quot; data-origin-height=&quot;728&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>설치 메뉴얼</category>
      <author>미로910</author>
      <guid isPermaLink="true">https://maze910.tistory.com/318</guid>
      <comments>https://maze910.tistory.com/318#entry318comment</comments>
      <pubDate>Tue, 3 Mar 2026 22:44:35 +0900</pubDate>
    </item>
    <item>
      <title>[연구회/OpenCV] 실시간 움직임 추적 마우스 컨트롤러</title>
      <link>https://maze910.tistory.com/319</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;웹캠 영상에서 움직임이 발생하는 영역을 찾아내고, 그 중심점으로 &lt;b data-index-in-node=&quot;58&quot; data-path-to-node=&quot;3&quot;&gt;마우스 커서를 실시간 이동&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;1. 핵심 동작 원리&lt;/h3&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;이 프로그램은 크게 세 가지 단계로 작동한다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,0&quot;&gt;차영상(Frame Differencing) 감지&lt;/b&gt;: 이전 프레임과 현재 프레임의 차이를 계산하여 움직임이 있는 픽셀을 찾아낸다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;absdiff(grayprev, gray, diff); 함수가 핵심&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,1,0&quot;&gt;좌표 평활화(Smoothing)&lt;/b&gt;: 마우스 커서가 너무 가늘게 떨리는 것을 방지하기 위해 deque 자료구조를 사용하여 최근 7개 좌표의 평균값을 계산한다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,2,0&quot;&gt;윈도우 좌표 변환&lt;/b&gt;: OpenCV 창 내부의 좌표를 Windows 전체 화면 좌표로 변환하여 SetCursorPos로 마우스를 제어한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre id=&quot;code_1772544883219&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &quot;opencv2/opencv.hpp&quot;
#include &amp;lt;iostream&amp;gt;
#include &amp;lt;windows.h&amp;gt;
#include &amp;lt;vector&amp;gt;
#include &amp;lt;numeric&amp;gt;
#include &amp;lt;deque&amp;gt;

/*
웹캠을 사용하여 움직임을 감지하고 -&amp;gt; 움직임이 있는 영역의 중심 좌표로 마우스 커서를 실시간으로 이동
*/

using namespace cv;
using namespace std;

int main() {
    VideoCapture capture(0); // 카메라 (비디오 캡처 객체 생성)
    if (!capture.isOpened()) {
        cout &amp;lt;&amp;lt; &quot;ERROR: unable to open camera&quot; &amp;lt;&amp;lt; std::endl;
        return -1;
    }
/*
frame: 현재 시점의 컬러 프레임
prev: 이전 시점의 컬러 프레임
gray: 현재 시점의 흑백(grayscale) 프레임
grayprev: 이전 시점의 흑백 프레임
diff: 두 흑백 프레임 간의 차이를 저장할 프레임
*/

    Mat frame, prev, gray, grayprev, diff; // 비디오  프레임을 저장할 객체 선언
    capture &amp;gt;&amp;gt; prev; // prev에 저장
    cvtColor(prev, grayprev, COLOR_BGR2GRAY); // 흑백 변환

    const char* WINDOW_NAME = &quot;main&quot;; // 창 이름을 상수로 관리
    namedWindow(WINDOW_NAME, 1); // 창 생성

    const int SMOOTHING_WINDOW_SIZE = 7; // 좌표 7개 (평균)
    deque&amp;lt;Point&amp;gt; recent_centers;

    HWND hwnd = NULL; // 창 핸들을 저장할 변수

    while (true) {
        capture &amp;gt;&amp;gt; frame; // 새로운 프레임 저장
        if (frame.empty()) break;

        // --- 창 핸들을 한 번만 가져오도록 수정 ---
        if (hwnd == NULL) {
            // &quot;main&quot;이라는 이름의 창을 찾아 핸들(고유 ID)을 가져옵니다.
            hwnd = FindWindowA(NULL, WINDOW_NAME);
        }
        // ------------------------------------

        cvtColor(frame, gray, COLOR_BGR2GRAY); // 흑백 변환 -&amp;gt; gray에 저장
        absdiff(grayprev, gray, diff); // 움직임 감지 (절댓값 계산 -&amp;gt; diff 저장)

        int minx = frame.cols, maxx = 0, miny = frame.rows, maxy = 0;

        // 픽셀 순회
        // 픽셀 &amp;gt; 30 움직임
        for (int y = 0; y &amp;lt; diff.rows; y++) {
            for (int x = 0; x &amp;lt; diff.cols; x++) {
                if (diff.at&amp;lt;uchar&amp;gt;(y, x) &amp;gt; 30) {
                    if (x &amp;lt; minx) minx = x;
                    if (x &amp;gt; maxx) maxx = x;
                    if (y &amp;lt; miny) miny = y;
                    if (y &amp;gt; maxy) maxy = y;
                }
            }
        }

        // 움직임 감지 되었을 때만 실행
        if (maxx &amp;gt; minx &amp;amp;&amp;amp; maxy &amp;gt; miny) {
            rectangle(frame, Point(minx, miny), Point(maxx, maxy), Scalar(0, 0, 255), 2); // frame에 감지 -&amp;gt; 빨간색 사각형

            // 현재 중심점 계산
            Point current_center(minx + (maxx - minx) / 2, miny + (maxy - miny) / 2);
            
            // 최근 중심점 목록 생신
            // SMOOTHING_WINDOW_SIZE(7개)를 초과하면 가장 오래된 데이터 삭제 (7개 좌표만 유지)
            recent_centers.push_back(current_center);
            if (recent_centers.size() &amp;gt; SMOOTHING_WINDOW_SIZE) {
                recent_centers.pop_front();
            }

            // 평균 중심점 계산
            Point smoothed_center(0, 0);
            for (const auto&amp;amp; pt : recent_centers) {
                smoothed_center += pt;
            }
            smoothed_center.x /= recent_centers.size();
            smoothed_center.y /= recent_centers.size();


            // 화면 좌표로 변환 및 마우스 커서 이동
            if (hwnd != NULL) {
                // 1. 창의 클라이언트 영역(실제 영상이 나오는 부분)의 시작점을 찾습니다.
                POINT client_top_left = { 0, 0 };
                ClientToScreen(hwnd, &amp;amp;client_top_left); // 창 좌표(0,0)을 스크린 좌표로 변환

                // 2. 창의 스크린 위치 + 사각형의 창 내부 위치 = 최종 스크린 위치 (화면 절대 좌표 계산)
                int final_screen_x = client_top_left.x + smoothed_center.x;
                int final_screen_y = client_top_left.y + smoothed_center.y;

                // 3. 계산된 최종 위치로 마우스 커서를 이동시킵니다.
                SetCursorPos(final_screen_x, final_screen_y);
            }
       
        }

        imshow(WINDOW_NAME, frame);

        if (waitKey(30) == 27) break;

        grayprev = gray.clone();
    }
    capture.release();
    destroyAllWindows();
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2026-01-26 231241.png&quot; data-origin-width=&quot;2559&quot; data-origin-height=&quot;1012&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boeN3h/dJMcacvuouP/vOBNZcQStuMDUUsVtFgGcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boeN3h/dJMcacvuouP/vOBNZcQStuMDUUsVtFgGcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boeN3h/dJMcacvuouP/vOBNZcQStuMDUUsVtFgGcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboeN3h%2FdJMcacvuouP%2FvOBNZcQStuMDUUsVtFgGcK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2559&quot; height=&quot;1012&quot; data-filename=&quot;화면 캡처 2026-01-26 231241.png&quot; data-origin-width=&quot;2559&quot; data-origin-height=&quot;1012&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;2&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  실행 결과 및 동작 설명&lt;/b&gt;&lt;/h2&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;프로그램을 실행하면 위 스크린샷과 같이 두 개의 창(main, Grayscale Cam)&lt;/p&gt;
&lt;h4 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. 실시간 움직임 영역 표시 (main 창)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;5&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,0,0&quot;&gt;빨간색 사각형(Bounding Box)&lt;/b&gt;: 웹캠 영상에서 이전 프레임과 비교해 움직임이 발생한 지점을 찾아 실시간으로 감싸준다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;5,1,0&quot;&gt;중심점 추적&lt;/b&gt;: 사각형의 정중앙 좌표를 계산하여 마우스 커서의 위치로 사용한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. 영상 처리 과정 (Grayscale Cam 창)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;7&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정확한 움직임 계산을 위해 원본 컬러 영상을 흑백으로 변환한 상태이다.&lt;/li&gt;
&lt;li&gt;이 흑백 영상의 픽셀 값 차이를 분석하여 어디가 움직였는지&quot;를 컴퓨터가 판단하게 된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3. 마우스 커서 제어 현황&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;영상 속 사각형이 움직이면 윈도우의 &lt;b data-index-in-node=&quot;20&quot; data-path-to-node=&quot;9,0,0&quot;&gt;마우스 커서가 해당 위치를 부드럽게 따라간다.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;평균값 필터(Smoothing) 덕분에 미세한 떨림 없이 안정적으로 커서가 이동한다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>공부 노트/연구회</category>
      <author>미로910</author>
      <guid isPermaLink="true">https://maze910.tistory.com/319</guid>
      <comments>https://maze910.tistory.com/319#entry319comment</comments>
      <pubDate>Tue, 3 Mar 2026 22:42:06 +0900</pubDate>
    </item>
    <item>
      <title>Processing 설치</title>
      <link>https://maze910.tistory.com/317</link>
      <description>&lt;figure id=&quot;og_1760362063376&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Welcome to Processing!&quot; data-og-description=&quot;Processing is a flexible software sketchbook and a language for learning how to code. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology&amp;hellip;&quot; data-og-host=&quot;processing.org&quot; data-og-source-url=&quot;https://processing.org/&quot; data-og-url=&quot;https://processing.org//&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bRr5Es/hyZKfX4iGa/c3LzgpdZ8QdUjHL3S1YfR0/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/btafTm/hyZLuMU8Sn/B9J2RKNop4mkUL41GsPCN0/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640&quot;&gt;&lt;a href=&quot;https://processing.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://processing.org/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bRr5Es/hyZKfX4iGa/c3LzgpdZ8QdUjHL3S1YfR0/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640,https://scrap.kakaocdn.net/dn/btafTm/hyZLuMU8Sn/B9J2RKNop4mkUL41GsPCN0/img.png?width=1280&amp;amp;height=640&amp;amp;face=0_0_1280_640');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Welcome to Processing!&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Processing is a flexible software sketchbook and a language for learning how to code. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology&amp;hellip;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;processing.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Processing이란?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp; &amp;ldquo;&lt;b&gt;코드로 그림을 그리는 도화지&lt;/b&gt;&amp;rdquo; &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-size: 1.12em; letter-spacing: 0px;&quot;&gt;- 코딩을 이용해서 그림&amp;middot;영상&amp;middot;인터랙티브 아트 등을 만드는 개발 환경&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-size: 1.12em; letter-spacing: 0px;&quot;&gt;- 예술 + 프로그래밍을 결합한 도구 &lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;설치 하기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DPB30/btsQ60hkZyo/KGqe8v5kc3F3PkKcy6RB1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DPB30/btsQ60hkZyo/KGqe8v5kc3F3PkKcy6RB1k/img.png&quot; data-origin-width=&quot;965&quot; data-origin-height=&quot;755&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.42%; margin-right: 10px;&quot; data-widthpercent=&quot;33.19&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DPB30/btsQ60hkZyo/KGqe8v5kc3F3PkKcy6RB1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDPB30%2FbtsQ60hkZyo%2FKGqe8v5kc3F3PkKcy6RB1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;965&quot; height=&quot;755&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sf28v/btsQ9xStFgL/8s06ugKI8lJ069foZqhzy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sf28v/btsQ9xStFgL/8s06ugKI8lJ069foZqhzy1/img.png&quot; data-origin-width=&quot;969&quot; data-origin-height=&quot;750&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.7714%; margin-right: 10px;&quot; data-widthpercent=&quot;33.55&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sf28v/btsQ9xStFgL/8s06ugKI8lJ069foZqhzy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsf28v%2FbtsQ9xStFgL%2F8s06ugKI8lJ069foZqhzy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;969&quot; height=&quot;750&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ecOoxB/btsQ84348Tx/vyBnAqPzmLaZNbcYc0L2uK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ecOoxB/btsQ84348Tx/vyBnAqPzmLaZNbcYc0L2uK/img.png&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;759&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.4831%;&quot; data-widthpercent=&quot;33.26&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ecOoxB/btsQ84348Tx/vyBnAqPzmLaZNbcYc0L2uK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FecOoxB%2FbtsQ84348Tx%2FvyBnAqPzmLaZNbcYc0L2uK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;972&quot; height=&quot;759&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;177&quot; data-origin-height=&quot;129&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfj5WE/btsQ7e8bCGF/KykoVWkfFcsRKPvf0256r1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfj5WE/btsQ7e8bCGF/KykoVWkfFcsRKPvf0256r1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfj5WE/btsQ7e8bCGF/KykoVWkfFcsRKPvf0256r1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbfj5WE%2FbtsQ7e8bCGF%2FKykoVWkfFcsRKPvf0256r1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;177&quot; height=&quot;129&quot; data-origin-width=&quot;177&quot; data-origin-height=&quot;129&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;설치가 완료 되었습니다&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bINQIJ/btsQ8rSWCWv/Nbud3wk90zPWcbwvvY9k5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bINQIJ/btsQ8rSWCWv/Nbud3wk90zPWcbwvvY9k5K/img.png&quot; data-origin-width=&quot;1354&quot; data-origin-height=&quot;1169&quot; data-is-animation=&quot;false&quot; style=&quot;width: 44.0812%; margin-right: 10px;&quot; data-widthpercent=&quot;44.6&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bINQIJ/btsQ8rSWCWv/Nbud3wk90zPWcbwvvY9k5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbINQIJ%2FbtsQ8rSWCWv%2FNbud3wk90zPWcbwvvY9k5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1354&quot; height=&quot;1169&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IKWam/btsQ74xdfWX/68XgKaKOiBqErWoFtmMjbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IKWam/btsQ74xdfWX/68XgKaKOiBqErWoFtmMjbk/img.png&quot; data-origin-width=&quot;1738&quot; data-origin-height=&quot;1208&quot; data-is-animation=&quot;false&quot; style=&quot;width: 54.756%;&quot; data-widthpercent=&quot;55.4&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IKWam/btsQ74xdfWX/68XgKaKOiBqErWoFtmMjbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIKWam%2FbtsQ74xdfWX%2F68XgKaKOiBqErWoFtmMjbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1738&quot; height=&quot;1208&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>설치 메뉴얼</category>
      <author>미로910</author>
      <guid isPermaLink="true">https://maze910.tistory.com/317</guid>
      <comments>https://maze910.tistory.com/317#entry317comment</comments>
      <pubDate>Mon, 13 Oct 2025 22:43:07 +0900</pubDate>
    </item>
    <item>
      <title>[연구회/OpenCV] 원본 사진 흑백 사진으로 출력하기</title>
      <link>https://maze910.tistory.com/314</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20250915_223334700.jpg&quot; data-origin-width=&quot;1668&quot; data-origin-height=&quot;2157&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3Y2LL/btsQAn4Gjdr/4jX7aOOpJkovyf7o45dDe1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3Y2LL/btsQAn4Gjdr/4jX7aOOpJkovyf7o45dDe1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3Y2LL/btsQAn4Gjdr/4jX7aOOpJkovyf7o45dDe1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3Y2LL%2FbtsQAn4Gjdr%2F4jX7aOOpJkovyf7o45dDe1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1668&quot; height=&quot;2157&quot; data-filename=&quot;KakaoTalk_20250915_223334700.jpg&quot; data-origin-width=&quot;1668&quot; data-origin-height=&quot;2157&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt; &lt;br /&gt;B-G-R 더한 후 나누기 3을 해주면 gray 값이 나옴&lt;br /&gt;--------------------------------------------------------------------&lt;br /&gt;1. B-G-R 순회하며 더함&lt;br /&gt;2. /3 해서 gray 값 획득&lt;br /&gt;3. 다시 B-G-R 돌며 값 나눠줌&lt;br /&gt;&lt;br /&gt;다시&lt;br /&gt;1. B-G-R 순회하며 더함&lt;br /&gt;2. /3 해서 gray 값 획득&lt;br /&gt;3 다시 B-G-R 돌며 값 나눠줌&amp;nbsp;&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;pre id=&quot;code_1757897086613&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;opencv2/opencv.hpp&amp;gt;
#include &amp;lt;iostream&amp;gt;

using namespace cv;
using namespace std;

int main(int ac, char** av)
{
    Mat img = imread(&quot;mario.jpg&quot;, IMREAD_ANYCOLOR);
    Mat res = imread(&quot;mario.jpg&quot;, IMREAD_ANYCOLOR);

    uchar* res_data = res.data;

    int light = -50; // 밝기 조절값

    for (int row = 0; row &amp;lt; res.rows; row++) {      // 첫 번째 순회
        for (int col = 0; col &amp;lt; res.cols; col++) {
            int index = row * img.cols * 3 + col * 3; // BGR &amp;rarr; 3칸 차지

            int gray = 0; // gray 값 저장 변수

            // 1. BGR 순회하며 값 더하고 밝기 보정
            for (int i = 0; i &amp;lt; 3; i++) {
                int value = res_data[index + i] + light;

                if (value &amp;gt; 255) value = 255;
                else if (value &amp;lt; 0) value = 0;

                gray += value; // 더하기
            }

            // 2. 나누기 3 해서 gray 값 획득
            gray /= 3;

            // 3. 다시 BGR 순회하며 gray 값 나눠줌 (흑백화)
            for (int i = 0; i &amp;lt; 3; i++) {
                res_data[index + i] = gray;
            }
        }
    }

    imshow(&quot;mario&quot;, img);
    imshow(&quot;res&quot;, res);
    waitKey(0);
    destroyAllWindows();

    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1353&quot; data-origin-height=&quot;730&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/37FnI/btsQxAjDfMe/JhDXa03XOdUaAYHn0J9eNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/37FnI/btsQxAjDfMe/JhDXa03XOdUaAYHn0J9eNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/37FnI/btsQxAjDfMe/JhDXa03XOdUaAYHn0J9eNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F37FnI%2FbtsQxAjDfMe%2FJhDXa03XOdUaAYHn0J9eNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1353&quot; height=&quot;730&quot; data-origin-width=&quot;1353&quot; data-origin-height=&quot;730&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;문제점!!&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캐릭터만 흑백으로 해야 되는데 사진 전체를 흑백으로 함&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1757942491266&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;opencv2/opencv.hpp&amp;gt;
#include &amp;lt;iostream&amp;gt;

using namespace cv;
using namespace std;

int main(int ac, char** av)
{
    /*
    img에서 캐릭터 찾아 흑백으로 만드는 것
    - 만약 흰색이 아니라면 -&amp;gt; 흑백
        - 평균 값을 구하고 평균값을 res의 픽셀 위치에 BGR 값으로 똑같이 덮어 씌움 (반복)
    */


    // Mat(행렬), imread -&amp;gt; 이미지 파일 읽어오기
    Mat img = imread(&quot;mario3.png&quot;, IMREAD_ANYCOLOR);
    Mat res = imread(&quot;mario3.png&quot;, IMREAD_ANYCOLOR);

    // 이미지의 실제 픽셀 데이터에 직접 접근 / uchar* -&amp;gt; 포인터 도구
    uchar* img_data = img.data;
    uchar* res_data = res.data;

    int light = 0; 

    // 모든 픽셀을 하나씩 순회하는 반복문
    for (int row = 0; row &amp;lt; res.rows; row++) {
        for (int col = 0; col &amp;lt; res.cols; col++) {
            int index = row * img.cols * 3 + col * 3;

            // 원본 픽셀의 BGR 값을 가져오기
            uchar b = img_data[index];
            uchar g = img_data[index + 1];
            uchar r = img_data[index + 2];

            
            // 만약 현재 픽셀이 흰색이 아니라면 
            if (!(b == 255 &amp;amp;&amp;amp; g == 255 &amp;amp;&amp;amp; r == 255)) {
              

                // 평균값 계산
                int gray = 0; 

                
                for (int i = 0; i &amp;lt; 3; i++) {
                    int value = res_data[index + i] + light;
                    if (value &amp;gt; 255) value = 255;
                    else if (value &amp;lt; 0) value = 0;
                    gray += value;
                }

                
                gray /= 3;

                // BGR -&amp;gt; gray 값을 적용
                for (int i = 0; i &amp;lt; 3; i++) {
                    res_data[index + i] = gray;
                }
            }
        
        }
    }

    imshow(&quot;mario&quot;, img);
    imshow(&quot;res&quot;, res);
    waitKey(0);
    destroyAllWindows();

    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1490&quot; data-origin-height=&quot;845&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lFrz8/btsQzaY4T0p/4Sm2FtZI77VvjFS9CTDqj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lFrz8/btsQzaY4T0p/4Sm2FtZI77VvjFS9CTDqj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lFrz8/btsQzaY4T0p/4Sm2FtZI77VvjFS9CTDqj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlFrz8%2FbtsQzaY4T0p%2F4Sm2FtZI77VvjFS9CTDqj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1490&quot; height=&quot;845&quot; data-origin-width=&quot;1490&quot; data-origin-height=&quot;845&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;해결!!&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. mario 배경을 투명 말고 흰색으로 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 어떤 픽셀을 흑백으로 바꿀 것인가'에 대한 기준(조건)을 추가&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>공부 노트/연구회</category>
      <author>미로910</author>
      <guid isPermaLink="true">https://maze910.tistory.com/314</guid>
      <comments>https://maze910.tistory.com/314#entry314comment</comments>
      <pubDate>Mon, 15 Sep 2025 22:35:25 +0900</pubDate>
    </item>
    <item>
      <title>[개념] OpenCV란?</title>
      <link>https://maze910.tistory.com/313</link>
      <description>&lt;h2 data-end=&quot;38&quot; data-start=&quot;25&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;✅ &lt;span style=&quot;background-color: #9feec3;&quot;&gt;OpenCV란?&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;224&quot; data-start=&quot;39&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;88&quot; data-start=&quot;39&quot;&gt;&lt;b&gt;Open Source Computer Vision Library&lt;/b&gt;의 줄임말.&lt;/li&gt;
&lt;li data-end=&quot;178&quot; data-start=&quot;89&quot;&gt;&amp;ldquo;오픈 소스 컴퓨터 비전 라이브러리&amp;rdquo; &amp;rarr; 카메라 영상, 이미지 처리, 객체 인식 등을 쉽게 할 수 있도록 만들어진 &lt;b&gt;C++/Python 라이브러리&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;252&quot; data-start=&quot;231&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;✅ &lt;span style=&quot;background-color: #9feec3;&quot;&gt;OpenCV로 할 수 있는 것&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;465&quot; data-start=&quot;253&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;309&quot; data-start=&quot;253&quot;&gt;&lt;b&gt;이미지 처리&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;309&quot; data-start=&quot;272&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;309&quot; data-start=&quot;272&quot;&gt;흑백 변환, 밝기/대비 조절, 블러, 에지 검출(Canny)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;359&quot; data-start=&quot;310&quot;&gt;&lt;b&gt;영상 처리(비디오)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;359&quot; data-start=&quot;333&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;359&quot; data-start=&quot;333&quot;&gt;웹캠 연결해서 프레임 읽기, 실시간 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;404&quot; data-start=&quot;360&quot;&gt;&lt;b&gt;객체 인식&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;404&quot; data-start=&quot;378&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;404&quot; data-start=&quot;378&quot;&gt;얼굴 인식, 물체 추적, 손 제스처 인식&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;465&quot; data-start=&quot;405&quot;&gt;&lt;b&gt;딥러닝/AI 연동&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;465&quot; data-start=&quot;427&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;465&quot; data-start=&quot;427&quot;&gt;TensorFlow, PyTorch 모델이랑 붙여서 영상 분석&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;[OpenCV 활용]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;/p&gt;
&lt;figure id=&quot;og_1757943348299&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[연구회/OpenCV] 원본 사진 흑백 사진으로 출력하기&quot; data-og-description=&quot; B-G-R 더한 후 나누기 3을 해주면 gray 값이 나옴--------------------------------------------------------------------1. B-G-R 순회하며 더함2. /3 해서 gray 값 획득3. 다시 B-G-R 돌며 값 나눠줌다시1. B-G-R 순회하며 더&quot; data-og-host=&quot;maze910.tistory.com&quot; data-og-source-url=&quot;https://maze910.tistory.com/314&quot; data-og-url=&quot;https://maze910.tistory.com/314&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bMKXTF/hyZIRJMbOt/BbDk52Hdd3EkeqdKFKcpk1/img.png?width=800&amp;amp;height=453&amp;amp;face=0_0_800_453,https://scrap.kakaocdn.net/dn/cXErtt/hyZJvE41j5/9aOLGkz65EbvuHvGjmKkBk/img.png?width=800&amp;amp;height=453&amp;amp;face=0_0_800_453,https://scrap.kakaocdn.net/dn/Au0En/hyZJlCs0pf/H1MJqk0Dja0HEfbLfSn4RK/img.jpg?width=1668&amp;amp;height=2157&amp;amp;face=0_0_1668_2157&quot;&gt;&lt;a href=&quot;https://maze910.tistory.com/314&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://maze910.tistory.com/314&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bMKXTF/hyZIRJMbOt/BbDk52Hdd3EkeqdKFKcpk1/img.png?width=800&amp;amp;height=453&amp;amp;face=0_0_800_453,https://scrap.kakaocdn.net/dn/cXErtt/hyZJvE41j5/9aOLGkz65EbvuHvGjmKkBk/img.png?width=800&amp;amp;height=453&amp;amp;face=0_0_800_453,https://scrap.kakaocdn.net/dn/Au0En/hyZJlCs0pf/H1MJqk0Dja0HEfbLfSn4RK/img.jpg?width=1668&amp;amp;height=2157&amp;amp;face=0_0_1668_2157');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[연구회/OpenCV] 원본 사진 흑백 사진으로 출력하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt; B-G-R 더한 후 나누기 3을 해주면 gray 값이 나옴--------------------------------------------------------------------1. B-G-R 순회하며 더함2. /3 해서 gray 값 획득3. 다시 B-G-R 돌며 값 나눠줌다시1. B-G-R 순회하며 더&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;maze910.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.&lt;/p&gt;
&lt;figure id=&quot;og_1772545409815&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[연구회/OpenCV] 실시간 움직임 추적 마우스 컨트롤러&quot; data-og-description=&quot;웹캠 영상에서 움직임이 발생하는 영역을 찾아내고, 그 중심점으로 마우스 커서를 실시간 이동 1. 핵심 동작 원리이 프로그램은 크게 세 가지 단계로 작동한다.차영상(Frame Differencing) 감지: 이전 &quot; data-og-host=&quot;maze910.tistory.com&quot; data-og-source-url=&quot;https://maze910.tistory.com/319&quot; data-og-url=&quot;https://maze910.tistory.com/319&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/MoGRP/dJMb8WexfJ6/kTPoYu0kkhYAYyxx98Ep1K/img.png?width=800&amp;amp;height=316&amp;amp;face=0_0_800_316,https://scrap.kakaocdn.net/dn/NqlTQ/dJMb9jOkAfk/dwEw17Ugdt9txpeyLAUr01/img.png?width=800&amp;amp;height=316&amp;amp;face=0_0_800_316,https://scrap.kakaocdn.net/dn/AGoPZ/dJMb8YXI6ID/kHoDrFrTa9Uk1LQBrqYFK0/img.png?width=2559&amp;amp;height=1012&amp;amp;face=0_0_2559_1012&quot;&gt;&lt;a href=&quot;https://maze910.tistory.com/319&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://maze910.tistory.com/319&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/MoGRP/dJMb8WexfJ6/kTPoYu0kkhYAYyxx98Ep1K/img.png?width=800&amp;amp;height=316&amp;amp;face=0_0_800_316,https://scrap.kakaocdn.net/dn/NqlTQ/dJMb9jOkAfk/dwEw17Ugdt9txpeyLAUr01/img.png?width=800&amp;amp;height=316&amp;amp;face=0_0_800_316,https://scrap.kakaocdn.net/dn/AGoPZ/dJMb8YXI6ID/kHoDrFrTa9Uk1LQBrqYFK0/img.png?width=2559&amp;amp;height=1012&amp;amp;face=0_0_2559_1012');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[연구회/OpenCV] 실시간 움직임 추적 마우스 컨트롤러&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;웹캠 영상에서 움직임이 발생하는 영역을 찾아내고, 그 중심점으로 마우스 커서를 실시간 이동 1. 핵심 동작 원리이 프로그램은 크게 세 가지 단계로 작동한다.차영상(Frame Differencing) 감지: 이전&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;maze910.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>공부 노트/연구회</category>
      <author>미로910</author>
      <guid isPermaLink="true">https://maze910.tistory.com/313</guid>
      <comments>https://maze910.tistory.com/313#entry313comment</comments>
      <pubDate>Mon, 15 Sep 2025 22:20:02 +0900</pubDate>
    </item>
    <item>
      <title>[기초] class 개념</title>
      <link>https://maze910.tistory.com/312</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;car a = &amp;lsquo;kia&amp;rsquo; (car라는 데이터 타입..)&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffc9af;&quot;&gt;&lt;b&gt;데이터타입을 만들어야 됨 &amp;rarr; class &amp;rArr; 데이터타입을 만드는 것.&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1757941823359&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class car {

	int p;
	char g;

};

car a;
a p =5;
a.g =&amp;rsquo;k&amp;rsquo;;&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Truck b; 는 될까? &lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1757941853470&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Truck{
	car;  &amp;rarr; 확대할 수 있다.
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 확대할 수 있다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;lib&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1757941876610&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class car{
	tire p;
	wirdow g;
	frame r;
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tire, wirdow, frame class는 어디에 있냐.. 컴퓨터에 &amp;rArr; lib에서 들고 오기&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffc9af;&quot;&gt;&lt;b&gt;main -&amp;gt; 실제 세상&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1757941956492&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// main &amp;rarr; 실제 세상 (만들어서 동작 시키겠다)

main{
	Trnck test; 
};

// 인스턴스(ex: 실제로 존재하는 것 | 라면) &amp;rarr; 객체

// Trnck test;  &amp;rarr; test가 객체  // Trnck &amp;rarr; 데이터타입&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt; ✨개념 파악이 중요! &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[정리]&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20250915_220759724.jpg&quot; data-origin-width=&quot;1668&quot; data-origin-height=&quot;2157&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buGo12/btsQza5SEGk/kIRyyvSyBItzf5HvC8Jsk0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buGo12/btsQza5SEGk/kIRyyvSyBItzf5HvC8Jsk0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buGo12/btsQza5SEGk/kIRyyvSyBItzf5HvC8Jsk0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuGo12%2FbtsQza5SEGk%2FkIRyyvSyBItzf5HvC8Jsk0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1668&quot; height=&quot;2157&quot; data-filename=&quot;KakaoTalk_20250915_220759724.jpg&quot; data-origin-width=&quot;1668&quot; data-origin-height=&quot;2157&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>공부 노트/연구회</category>
      <author>미로910</author>
      <guid isPermaLink="true">https://maze910.tistory.com/312</guid>
      <comments>https://maze910.tistory.com/312#entry312comment</comments>
      <pubDate>Mon, 15 Sep 2025 22:15:45 +0900</pubDate>
    </item>
    <item>
      <title>오라클 설치</title>
      <link>https://maze910.tistory.com/311</link>
      <description>&lt;figure id=&quot;og_1757337969053&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Oracle 소프트웨어 다운로드&quot; data-og-description=&quot;클라우드 무료 체험과 소프트웨어 다운로드에서 Oracle의 애플리케이션, 미들웨어, 데이터베이스, Java, 개발자 도구를 확인해 보세요.&quot; data-og-host=&quot;www.oracle.com&quot; data-og-source-url=&quot;https://www.oracle.com/kr/downloads/&quot; data-og-url=&quot;https://www.oracle.com/kr/downloads/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bXwx5e/hyZGiAMEYJ/2csBuPnuSpoQLqQEfQhCd1/img.jpg?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628,https://scrap.kakaocdn.net/dn/bU91Ca/hyZJcZwJeU/KJMQpYzIogFOZM1ar61l91/img.jpg?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200&quot;&gt;&lt;a href=&quot;https://www.oracle.com/kr/downloads/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.oracle.com/kr/downloads/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bXwx5e/hyZGiAMEYJ/2csBuPnuSpoQLqQEfQhCd1/img.jpg?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628,https://scrap.kakaocdn.net/dn/bU91Ca/hyZJcZwJeU/KJMQpYzIogFOZM1ar61l91/img.jpg?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Oracle 소프트웨어 다운로드&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;클라우드 무료 체험과 소프트웨어 다운로드에서 Oracle의 애플리케이션, 미들웨어, 데이터베이스, Java, 개발자 도구를 확인해 보세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.oracle.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;➡️(회원가입 후 다운로드)&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;216&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/le7fm/btsQo7BwPuq/C4M5a21mt8tE0QpSdZwOHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/le7fm/btsQo7BwPuq/C4M5a21mt8tE0QpSdZwOHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/le7fm/btsQo7BwPuq/C4M5a21mt8tE0QpSdZwOHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fle7fm%2FbtsQo7BwPuq%2FC4M5a21mt8tE0QpSdZwOHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;406&quot; height=&quot;216&quot; data-origin-width=&quot;406&quot; data-origin-height=&quot;216&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;압축 해제 후 &lt;b&gt;setup.exe&lt;/b&gt; 실행해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동의 &amp;gt; 경로 선택 &amp;gt; 비밀번호 설정&lt;span style=&quot;color: #9d9d9d;&quot;&gt;(&lt;u&gt;기억하기 쉬운 것으로 설정하기!&lt;/u&gt;)&lt;/span&gt; &amp;gt; 설치 완료&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;✅ORACLE_HOME 환경 변수 추가&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: left;&quot;&gt;Oracle이 설치된 폴더에서 아래 경로까지 입력해준다&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCYuuX/btsQoHiHJXR/H1t4lvMLrF5snMGphdrrm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCYuuX/btsQoHiHJXR/H1t4lvMLrF5snMGphdrrm0/img.png&quot; data-origin-width=&quot;923&quot; data-origin-height=&quot;1095&quot; data-is-animation=&quot;false&quot; style=&quot;width: 45.145%; margin-right: 10px;&quot; data-widthpercent=&quot;45.68&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCYuuX/btsQoHiHJXR/H1t4lvMLrF5snMGphdrrm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCYuuX%2FbtsQoHiHJXR%2FH1t4lvMLrF5snMGphdrrm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;923&quot; height=&quot;1095&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qOdxm/btsQro23YD0/LwfnhEkDruGatsxumkb3m1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qOdxm/btsQro23YD0/LwfnhEkDruGatsxumkb3m1/img.png&quot; data-origin-width=&quot;1197&quot; data-origin-height=&quot;1194&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;54.32&quot; style=&quot;width: 53.6922%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qOdxm/btsQro23YD0/LwfnhEkDruGatsxumkb3m1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqOdxm%2FbtsQro23YD0%2FLwfnhEkDruGatsxumkb3m1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1197&quot; height=&quot;1194&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dm2OjB/btsQqHvfVFi/ftfeZNeZKaoamD20vcxFL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dm2OjB/btsQqHvfVFi/ftfeZNeZKaoamD20vcxFL0/img.png&quot; data-origin-width=&quot;1131&quot; data-origin-height=&quot;704&quot; data-is-animation=&quot;false&quot; style=&quot;width: 28.6172%; margin-right: 10px;&quot; data-widthpercent=&quot;28.95&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dm2OjB/btsQqHvfVFi/ftfeZNeZKaoamD20vcxFL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdm2OjB%2FbtsQqHvfVFi%2FftfeZNeZKaoamD20vcxFL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1131&quot; height=&quot;704&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cN3jXA/btsQoMqMXtg/5cmtZC3MzhdL6rtKMhyVm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cN3jXA/btsQoMqMXtg/5cmtZC3MzhdL6rtKMhyVm0/img.png&quot; data-origin-width=&quot;1293&quot; data-origin-height=&quot;328&quot; data-is-animation=&quot;false&quot; style=&quot;width: 70.2201%;&quot; data-widthpercent=&quot;71.05&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cN3jXA/btsQoMqMXtg/5cmtZC3MzhdL6rtKMhyVm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcN3jXA%2FbtsQoMqMXtg%2F5cmtZC3MzhdL6rtKMhyVm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1293&quot; height=&quot;328&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt; &lt;b&gt;✅&lt;/b&gt; Oracle Database 11g Express Edition 폴더&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;➡️ &lt;/span&gt;&lt;/b&gt;&lt;u&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt; &lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;'Run SQL Command Line' 실행&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5yuj3/btsQrlrJgTJ/kZ0vWzj7uinielbZPFSbS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5yuj3/btsQrlrJgTJ/kZ0vWzj7uinielbZPFSbS0/img.png&quot; data-origin-width=&quot;575&quot; data-origin-height=&quot;448&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.8912%; margin-right: 10px;&quot; data-widthpercent=&quot;50.48&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5yuj3/btsQrlrJgTJ/kZ0vWzj7uinielbZPFSbS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5yuj3%2FbtsQrlrJgTJ%2FkZ0vWzj7uinielbZPFSbS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;575&quot; height=&quot;448&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/by67fi/btsQoBCPfq0/wbb42Qumdc9smuhVEWcZF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/by67fi/btsQoBCPfq0/wbb42Qumdc9smuhVEWcZF1/img.png&quot; data-origin-width=&quot;515&quot; data-origin-height=&quot;409&quot; data-is-animation=&quot;false&quot; style=&quot;width: 48.9461%;&quot; data-widthpercent=&quot;49.52&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/by67fi/btsQoBCPfq0/wbb42Qumdc9smuhVEWcZF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fby67fi%2FbtsQoBCPfq0%2Fwbb42Qumdc9smuhVEWcZF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;515&quot; height=&quot;409&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; &lt;b&gt;✅&lt;/b&gt; 사용자 계정 생성 및 권한 부여&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. &lt;u&gt;conn /as sysdba&lt;/u&gt; 를 입력 &amp;gt; sysdba 접속&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. &lt;u&gt;CREATE USER [유저네임] IDENTIFIED BY [패스워드];&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;nbsp; &amp;nbsp;- 유저네임에 사용할 계정이름 입력&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;nbsp; &amp;nbsp;- 패스워드에 사용할 패스워드 입력&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. &lt;u&gt;GRANT CONNECT, RESOURCE, DBA TO [유저네임];&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;nbsp; &amp;nbsp;- 해당 유저에 모든 권한 부여&lt;/span&gt;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1315&quot; data-origin-height=&quot;729&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r4EUN/btsQpdBGNYW/kXlKo1sPkoKKRlhmW7w9iK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r4EUN/btsQpdBGNYW/kXlKo1sPkoKKRlhmW7w9iK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r4EUN/btsQpdBGNYW/kXlKo1sPkoKKRlhmW7w9iK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr4EUN%2FbtsQpdBGNYW%2FkXlKo1sPkoKKRlhmW7w9iK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1315&quot; height=&quot;729&quot; data-origin-width=&quot;1315&quot; data-origin-height=&quot;729&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt; &lt;b&gt;✅&lt;/b&gt; SQL*Plus에서 system 계정으로 접속&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1420&quot; data-origin-height=&quot;450&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uBr6j/btsQpFLuFit/NSJkVk14V5FtKKlQblEo4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uBr6j/btsQpFLuFit/NSJkVk14V5FtKKlQblEo4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uBr6j/btsQpFLuFit/NSJkVk14V5FtKKlQblEo4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuBr6j%2FbtsQpFLuFit%2FNSJkVk14V5FtKKlQblEo4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1420&quot; height=&quot;450&quot; data-origin-width=&quot;1420&quot; data-origin-height=&quot;450&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Connected. ➡️ 로그인에 &lt;b&gt;성공&lt;/b&gt;&lt;/p&gt;</description>
      <category>설치 메뉴얼</category>
      <author>미로910</author>
      <guid isPermaLink="true">https://maze910.tistory.com/311</guid>
      <comments>https://maze910.tistory.com/311#entry311comment</comments>
      <pubDate>Mon, 8 Sep 2025 22:44:17 +0900</pubDate>
    </item>
    <item>
      <title>MySQL Workbench에서 ERD(테이블 간 관계도) 보는 방법</title>
      <link>https://maze910.tistory.com/309</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;기존 연결된 스키마로 바로 리버스 엔지니어링 하는 법&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;1.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Database &amp;rarr; Reverse Engineer&amp;hellip;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;462&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/npKuc/btsOuNc4fnO/GwHBTZ6hp5oOFQFzGPODd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/npKuc/btsOuNc4fnO/GwHBTZ6hp5oOFQFzGPODd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/npKuc/btsOuNc4fnO/GwHBTZ6hp5oOFQFzGPODd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnpKuc%2FbtsOuNc4fnO%2FGwHBTZ6hp5oOFQFzGPODd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;966&quot; height=&quot;462&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;462&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 연결 선택 &amp;rarr; Next&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1577&quot; data-origin-height=&quot;1240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bI2nUt/btsOuLl2ILw/RTTlTSifjr4rtn6s5YKYpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bI2nUt/btsOuLl2ILw/RTTlTSifjr4rtn6s5YKYpK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bI2nUt/btsOuLl2ILw/RTTlTSifjr4rtn6s5YKYpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbI2nUt%2FbtsOuLl2ILw%2FRTTlTSifjr4rtn6s5YKYpK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1577&quot; height=&quot;1240&quot; data-origin-width=&quot;1577&quot; data-origin-height=&quot;1240&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 스키마 선택 &amp;rarr; Next &amp;rarr; Execute &amp;rarr; Next &amp;rarr; Finish&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1726&quot; data-origin-height=&quot;1353&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEV2s5/btsOtoMAcYa/uhNOuB5wa1hrs66rXDvfb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEV2s5/btsOtoMAcYa/uhNOuB5wa1hrs66rXDvfb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEV2s5/btsOtoMAcYa/uhNOuB5wa1hrs66rXDvfb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEV2s5%2FbtsOtoMAcYa%2FuhNOuB5wa1hrs66rXDvfb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1726&quot; height=&quot;1353&quot; data-origin-width=&quot;1726&quot; data-origin-height=&quot;1353&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블 박스와 관계선이 그려진 ERD를 볼 수 있다 &lt;/p&gt;</description>
      <category>MySQL</category>
      <author>미로910</author>
      <guid isPermaLink="true">https://maze910.tistory.com/309</guid>
      <comments>https://maze910.tistory.com/309#entry309comment</comments>
      <pubDate>Tue, 10 Jun 2025 12:11:10 +0900</pubDate>
    </item>
    <item>
      <title>[딥러닝] 맵플롯립 그래프</title>
      <link>https://maze910.tistory.com/306</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;맵플롯립( Matplotlib )&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;파이썬&lt;/b&gt;에서 가장 널리 사용되는 &lt;b&gt;데이터 시각화 라이브러리&lt;/b&gt; 중 하나입니다. 데이터를 그래프나 차트 형태로 시각적으로 표현할 수 있는 도구입니다.( 그래프를 그리는 라이브러리이다)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;285&quot; data-start=&quot;203&quot;&gt;&lt;b&gt;다양한 시각화 옵션&lt;/b&gt;: 선 그래프, 막대 그래프, 산점도, 히스토그램, 파이 차트, 서브플롯 등 다양한 형태의 그래프를 만들 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;347&quot; data-start=&quot;286&quot;&gt;&lt;b&gt;세부적인 제어&lt;/b&gt;: 각 그래프의 스타일, 색상, 크기, 범례, 제목 등을 세밀하게 조정할 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;414&quot; data-start=&quot;348&quot;&gt;&lt;b&gt;다양한 출력 형식 지원&lt;/b&gt;: 그래프를 PNG, PDF, SVG, EPS 등 다양한 포맷으로 저장할 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;487&quot; data-start=&quot;415&quot;&gt;&lt;b&gt;인터랙티브 기능&lt;/b&gt;: IPython 및 Jupyter 환경에서 인터랙티브한 방식으로 데이터를 시각화하고 다룰 수 있습니다.&lt;/li&gt;
&lt;li data-end=&quot;586&quot; data-start=&quot;488&quot;&gt;&lt;b&gt;쉽고 직관적인 사용법&lt;/b&gt;: Matplotlib는 사용법이 비교적 간단하고, 필요한 대부분의 기능을 제공하기 때문에 데이터 분석, 과학적 연구 등에서 자주 사용됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;직선그래프&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;matplotlib의 하위 모듈인 &lt;b&gt;pyplot을 사용한다&lt;/b&gt;. pyplot은 객체 지향적인 인터페이스를 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;matplotlib.pyplot를 plt 이름으로 사용하는 것은 거의 표준 관행이 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 값들의 리스트를 plot() 함수로 전달하면, plot() 함수는 이것을 y축 값으로 생각하여 그래프를 그린다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;x축 값은 리스트의 인덱스라고 생각한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;matplotlib&amp;nbsp; 라이브러리 설치하기 &lt;br /&gt;&amp;gt; pip install matplotlib &lt;br /&gt;&lt;br /&gt;설치가 완료되면 오류 없이 사용할 수 있다.&lt;br /&gt;import matplotlib.pyplot as plt&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1741477548158&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import matplotlib.pyplot as plt
%matplotlib inline

plt.rcParams['font.family']='Malgun Gothic'
plt.rcParams['axes.unicode_minus']=False

X=[&quot;월&quot;, &quot;화&quot;, &quot;수&quot;, &quot;목&quot;, &quot;금&quot;, &quot;토&quot;, &quot;일&quot;]
Y1=[15.6, 14.2, 16.3, 18.2, 17.1, 20.2, 22.4]
Y2=[20.1, 23.1, 23.8, 25.9, 23.4, 25.1, 26.3]

plt.plot(X,Y1, label=&quot;서울&quot;) #X축 값 (범례)
plt.plot(X,Y2, label=&quot;부산&quot;) #Y축 값 (범례)
plt.xlabel(&quot;일 (Day)&quot;) #가로측라벨
plt.ylabel(&quot;온도&quot;) #세로측라벨
plt.legend(loc=&quot;upper left&quot;) #그래프의 범례를 추가/범례를 그래프의 왼쪽 상단에 위치
plt.title(&quot;도시 별 온도&quot;) #그래프제목
plt.show() #그래프출력&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;736&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FriXd/btsMFvd9x3w/fvZS9z5x3EhHjgJJWIjexK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FriXd/btsMFvd9x3w/fvZS9z5x3EhHjgJJWIjexK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FriXd/btsMFvd9x3w/fvZS9z5x3EhHjgJJWIjexK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFriXd%2FbtsMFvd9x3w%2FfvZS9z5x3EhHjgJJWIjexK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1164&quot; height=&quot;736&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시그모이드 함수를 그려보자&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1741477771832&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import matplotlib.pyplot as plt #그래프를 그리기 위한 라이브러리
import numpy as np #numpy는 수학적 연산을 위한 라이브러리

def sigmoid(x):
    s=1/(1+np.exp(-x)) # 시그모이드 함수
    ds=s*(1-s)  # 시그모이드 함수의 미분
    return s,ds
X = np.linspace(-10, 10, 100)
Y1, Y2 = sigmoid(X)

plt.xlabel(&quot;x&quot;)
plt.plot(X,Y1, label=&quot;Sigmoid(X)&quot;)
plt.plot(X,Y2, label=&quot;Sigmoid'(X)&quot;)
plt.ylabel(&quot;Sigmoid(X), Sigmoid'(X)&quot;)
plt.legend(loc=&quot;upper left&quot;) #범례 
plt.plot(X, Y1, X, Y2)
plt.show()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt; 시그모이드 함수(Sigmoid(x))와 그 미분(Sigmoid'(x))의 그래프를 시각화하는 코드&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1070&quot; data-origin-height=&quot;675&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5OD7Z/btsMErxir0e/6D2fHQ728FbZvAbsDwo0e0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5OD7Z/btsMErxir0e/6D2fHQ728FbZvAbsDwo0e0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5OD7Z/btsMErxir0e/6D2fHQ728FbZvAbsDwo0e0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5OD7Z%2FbtsMErxir0e%2F6D2fHQ728FbZvAbsDwo0e0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1070&quot; height=&quot;675&quot; data-origin-width=&quot;1070&quot; data-origin-height=&quot;675&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>딥러닝</category>
      <author>미로910</author>
      <guid isPermaLink="true">https://maze910.tistory.com/306</guid>
      <comments>https://maze910.tistory.com/306#entry306comment</comments>
      <pubDate>Wed, 12 Mar 2025 14:20:04 +0900</pubDate>
    </item>
    <item>
      <title>[딥러닝] 라이브러리 설치 및 사용 예제</title>
      <link>https://maze910.tistory.com/305</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;파이썬에서 라이브러리 모듈을 설치하는 가장 쉬운 방법은&lt;span style=&quot;color: #f89009;&quot;&gt; pip 명령어&lt;/span&gt;를 사용하는 것이다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gtts를 설치해본다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&amp;gt; pip install gtts&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2313&quot; data-origin-height=&quot;758&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qqNVk/btsMEzaJpya/5gpfxf3CVl5xkBoNXN7VQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qqNVk/btsMEzaJpya/5gpfxf3CVl5xkBoNXN7VQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qqNVk/btsMEzaJpya/5gpfxf3CVl5xkBoNXN7VQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqqNVk%2FbtsMEzaJpya%2F5gpfxf3CVl5xkBoNXN7VQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2313&quot; height=&quot;758&quot; data-origin-width=&quot;2313&quot; data-origin-height=&quot;758&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스파이더로 작성하여 실행한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2879&quot; data-origin-height=&quot;1306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Xi4b6/btsMElX1NZc/dKd5Qjkrgnot9YwoQkWqG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Xi4b6/btsMElX1NZc/dKd5Qjkrgnot9YwoQkWqG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Xi4b6/btsMElX1NZc/dKd5Qjkrgnot9YwoQkWqG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXi4b6%2FbtsMElX1NZc%2FdKd5Qjkrgnot9YwoQkWqG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2879&quot; height=&quot;1306&quot; data-origin-width=&quot;2879&quot; data-origin-height=&quot;1306&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;음성을 인식하여 텍스트로 만들어주는 라이브러리들을 설치하고 예제 프로그램을 실행해보자.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&amp;gt; pip install SpeechRecognition&lt;br /&gt;&amp;gt; pip install pyaudio&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2308&quot; data-origin-height=&quot;589&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bU3H1C/btsMET7OTNC/8Y2sjq6nptwkoYxhJdKYGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bU3H1C/btsMET7OTNC/8Y2sjq6nptwkoYxhJdKYGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bU3H1C/btsMET7OTNC/8Y2sjq6nptwkoYxhJdKYGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU3H1C%2FbtsMET7OTNC%2F8Y2sjq6nptwkoYxhJdKYGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2308&quot; height=&quot;589&quot; data-origin-width=&quot;2308&quot; data-origin-height=&quot;589&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;939&quot; data-origin-height=&quot;429&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4buxg/btsME6y56wd/gZxt4Pz5S0K7UKFUk49YhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4buxg/btsME6y56wd/gZxt4Pz5S0K7UKFUk49YhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4buxg/btsME6y56wd/gZxt4Pz5S0K7UKFUk49YhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4buxg%2FbtsME6y56wd%2FgZxt4Pz5S0K7UKFUk49YhK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;939&quot; height=&quot;429&quot; data-origin-width=&quot;939&quot; data-origin-height=&quot;429&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>딥러닝</category>
      <author>미로910</author>
      <guid isPermaLink="true">https://maze910.tistory.com/305</guid>
      <comments>https://maze910.tistory.com/305#entry305comment</comments>
      <pubDate>Sun, 9 Mar 2025 07:43:42 +0900</pubDate>
    </item>
  </channel>
</rss>