<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>랩장 labzang</title>
    <link>https://parksrazor.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Thu, 9 Apr 2026 08:20:35 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>랩장 labzang</managingEditor>
    <image>
      <title>랩장 labzang</title>
      <url>https://tistory1.daumcdn.net/tistory/3892679/attach/5d45c4cd716c4b7aa63cc03241b65a5f</url>
      <link>https://parksrazor.tistory.com</link>
    </image>
    <item>
      <title>251113 스프링 유레카 , 마이크로 서비스 구축하기</title>
      <link>https://parksrazor.tistory.com/895</link>
      <description>&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-filename=&quot;spring.png&quot; data-origin-width=&quot;848&quot; data-origin-height=&quot;907&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kw86x/dJMcafSt8il/2rIrc2gMjcRWwl6BYYMrJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kw86x/dJMcafSt8il/2rIrc2gMjcRWwl6BYYMrJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kw86x/dJMcafSt8il/2rIrc2gMjcRWwl6BYYMrJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fkw86x%2FdJMcafSt8il%2F2rIrc2gMjcRWwl6BYYMrJ0%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;848&quot; height=&quot;907&quot; data-filename=&quot;spring.png&quot; data-origin-width=&quot;848&quot; data-origin-height=&quot;907&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;br /&gt;&lt;a href=&quot;https://github.com/labzang/251112-hague-spring-eureka-template&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/labzang/251112-hague-spring-eureka-template&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1763021203702&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - labzang/251112-hague-spring-eureka-template&quot; data-og-description=&quot;Contribute to labzang/251112-hague-spring-eureka-template development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/labzang/251112-hague-spring-eureka-template&quot; data-og-url=&quot;https://github.com/labzang/251112-hague-spring-eureka-template&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/AST8w/hyZNRnyWvR/5t0YrIBZpfxscY9Zj7Arq0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/b9S831/hyZNqkNKUd/bk3fSjKQi5KoNKK6KD3Pl1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/labzang/251112-hague-spring-eureka-template&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/labzang/251112-hague-spring-eureka-template&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/AST8w/hyZNRnyWvR/5t0YrIBZpfxscY9Zj7Arq0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/b9S831/hyZNqkNKUd/bk3fSjKQi5KoNKK6KD3Pl1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;GitHub - labzang/251112-hague-spring-eureka-template&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Contribute to labzang/251112-hague-spring-eureka-template development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.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;
&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;</description>
      <category>1. 자바</category>
      <author>랩장 labzang</author>
      <guid isPermaLink="true">https://parksrazor.tistory.com/895</guid>
      <comments>https://parksrazor.tistory.com/895#entry895comment</comments>
      <pubDate>Thu, 13 Nov 2025 09:30:30 +0900</pubDate>
    </item>
    <item>
      <title>251112 스프링 MSA 처음 유레카 띄우기</title>
      <link>https://parksrazor.tistory.com/894</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&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-filename=&quot;spring.png&quot; data-origin-width=&quot;765&quot; data-origin-height=&quot;401&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l0qgi/dJMcabJjf6S/gX1inW5H1Rum1Pfpip0K2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l0qgi/dJMcabJjf6S/gX1inW5H1Rum1Pfpip0K2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l0qgi/dJMcabJjf6S/gX1inW5H1Rum1Pfpip0K2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl0qgi%2FdJMcabJjf6S%2FgX1inW5H1Rum1Pfpip0K2K%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;765&quot; height=&quot;401&quot; data-filename=&quot;spring.png&quot; data-origin-width=&quot;765&quot; data-origin-height=&quot;401&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div data-en-clipboard=&quot;true&quot; data-pm-slice=&quot;1 1 []&quot;&gt;처음 실행하면 &quot;블라블라&quot; 오류가 뜹니다. 한번에 되는 경우는 거의 없습니다.&lt;/div&gt;
&lt;div&gt;If you want to disable this check, just set the property [&lt;a href=&quot;https://spring.cloud.compatibility-verifier.enabled=false&quot;&gt;spring.cloud.compatibility-verifier.enabled=false&lt;/a&gt;]&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;  지금 마이크로서비스에서 EUREKA빌드하려고 하는데, 오류뜨는데?&lt;/div&gt;
&lt;div&gt;커서에서 요청하는 문제를 직접 해결하지 않고, 지속적으로 요구..&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;에러가 없어지면 , 브라우저에 다음 포트를 입력 후 엔터&amp;nbsp;&lt;br /&gt;&lt;br /&gt;http://localhost:8761/&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1208&quot; data-origin-height=&quot;715&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzmuoR/dJMcaacyW5R/7wxuKrjbDfKKeSrfJZgPwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzmuoR/dJMcaacyW5R/7wxuKrjbDfKKeSrfJZgPwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzmuoR/dJMcaacyW5R/7wxuKrjbDfKKeSrfJZgPwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzmuoR%2FdJMcaacyW5R%2F7wxuKrjbDfKKeSrfJZgPwk%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;1208&quot; height=&quot;715&quot; data-origin-width=&quot;1208&quot; data-origin-height=&quot;715&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&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;span style=&quot;color: #333333; text-align: start;&quot;&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE. --&amp;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 data-ke-size=&quot;size16&quot;&gt;이 에러 메시지는 &lt;b&gt;Eureka 서버가 인스턴스 상태를 실제보다 &amp;ldquo;정상(UP)&amp;rdquo;으로 잘못 표시하고 있을 가능성&lt;/b&gt;을 경고하는 로그입니다.&lt;br /&gt;하나씩 풀어보면 다음과 같습니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 메시지 원문 분석&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT.&quot;&lt;/b&gt;&lt;br /&gt;&amp;rarr; &amp;ldquo;긴급 상황! Eureka가 실제로 죽은 인스턴스를 살아 있다고 잘못 표시하고 있을 수 있습니다.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;RENEWALS ARE LESSER THAN THRESHOLD...&quot;&lt;/b&gt;&lt;br /&gt;&amp;rarr; &amp;ldquo;현재 인스턴스들의 갱신(renewal, 즉 heart-beat) 횟수가 임계치(threshold)보다 적습니다.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;...AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.&quot;&lt;/b&gt;&lt;br /&gt;&amp;rarr; &amp;ldquo;그래서 안전을 위해 인스턴스들을 만료(expire)시키지 않고 있습니다.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 상황 요약&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Eureka는 클라이언트(마이크로서비스)들이 주기적으로 &lt;b&gt;&amp;ldquo;renew&amp;rdquo; 요청(heartbeat)&lt;/b&gt; 을 보내는 것을 기준으로 인스턴스가 살아 있는지를 판단합니다.&lt;br /&gt;보통 eureka.instance.lease-renewal-interval-in-seconds(기본 30초) 간격으로 renew가 들어오고, 서버는 이를 일정 기간(lease-expiration-duration-in-seconds, 기본 90초) 동안 받지 못하면 &amp;ldquo;죽었다(OUT_OF_SERVICE)&amp;rdquo;로 처리합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 지금 메시지는,&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;등록된 인스턴스 수 대비 renew(heartbeat) 횟수가 &lt;b&gt;너무 적게 들어오고&lt;/b&gt; 있어서,&lt;/li&gt;
&lt;li&gt;Eureka가 &lt;b&gt;정상적인 네트워크/성능 문제일 수도 있으니 조심하자&lt;/b&gt;며&lt;br /&gt;인스턴스를 바로 만료시키지 않고 &amp;ldquo;살아 있는 것으로 간주&amp;rdquo;하고 있다는 의미입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 왜 이런 일이 생기는가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대표적인 원인은 다음과 같습니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트 서비스(Eureka Client)에서 heartbeat 요청이 중단됨&lt;br /&gt;(예: 애플리케이션 멈춤, 네트워크 단절, Docker 내에서 Health check 실패 등)&lt;/li&gt;
&lt;li&gt;Eureka 서버 부하 또는 GC로 인한 heartbeat 처리 지연&lt;/li&gt;
&lt;li&gt;클러스터링된 Eureka 간 동기화 지연 (replication 지연)&lt;/li&gt;
&lt;li&gt;renewalPercentThreshold 설정값이 너무 높음&lt;br /&gt;(기본은 0.85, 즉 85% 이상이 renew를 보내야 정상으로 판단)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. 해결 방법&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;클라이언트 측 확인&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;로그에서 DiscoveryClient가 Renewing lease for ... 로그를 주기적으로 남기는지 확인&lt;/li&gt;
&lt;li&gt;네트워크 단절 여부, Eureka 서버 URL 설정 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;서버 설정 점검&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;eureka.server.renewal-percent-threshold를 0.5 정도로 완화 (기본 0.85 &amp;rarr; 0.5)&lt;/li&gt;
&lt;li&gt;eureka.server.enable-self-preservation=false 설정 &amp;rarr;&lt;br /&gt;(임시 조치: 자동 보호 모드 비활성화, 테스트 환경에서만 권장)&lt;/li&gt;
&lt;li&gt;서버 부하나 GC로 인해 heartbeat가 밀리는 경우 &amp;rarr; 인스턴스 수나 JVM 튜닝 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Eureka 로그 레벨 조정&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;logging.level.com.netflix.eureka=DEBUG 로 상세한 heart-beat 상태 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. 정리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉,&lt;br /&gt;&lt;b&gt;Eureka가 인스턴스들의 heartbeat가 일정 이하로 떨어졌음을 감지했지만, &amp;lsquo;혹시 네트워크 지연일 수도 있으니&amp;rsquo; 일단 죽이지 않고 유지하고 있다&lt;/b&gt;는 경고입니다.&lt;br /&gt;이 상태가 지속되면 실제 죽은 인스턴스가 계속 &amp;ldquo;UP&amp;rdquo;으로 남아 장애를 유발할 수 있으니,&lt;br /&gt;self-preservation 설정과 클라이언트 renew 상태를 점검해야 합니다.&lt;/p&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원하신다면 실제 application.yml 에서&lt;br /&gt;Eureka의 self-preservation 비활성화와 threshold 튜닝 예시도 같이 제시해드릴까요?&lt;/p&gt;</description>
      <category>1. 자바</category>
      <author>랩장 labzang</author>
      <guid isPermaLink="true">https://parksrazor.tistory.com/894</guid>
      <comments>https://parksrazor.tistory.com/894#entry894comment</comments>
      <pubDate>Wed, 12 Nov 2025 17:41:36 +0900</pubDate>
    </item>
    <item>
      <title>251112 스프링 MSA , 그래들 멀티모듈 구성하기</title>
      <link>https://parksrazor.tistory.com/893</link>
      <description>&lt;div data-en-clipboard=&quot;true&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;span&gt;빈 프로젝트에서 시작하기&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;spring.png&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;751&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3iSbt/dJMcabCxxCH/jaU8ppTdttrrFSUhJkLFz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3iSbt/dJMcabCxxCH/jaU8ppTdttrrFSUhJkLFz1/img.png&quot; data-alt=&quot;2025년 11월 현재 자바는 21 버전으로 상향되었습니다&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3iSbt/dJMcabCxxCH/jaU8ppTdttrrFSUhJkLFz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3iSbt%2FdJMcabCxxCH%2FjaU8ppTdttrrFSUhJkLFz1%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;731&quot; height=&quot;751&quot; data-filename=&quot;spring.png&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;751&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2025년 11월 현재 자바는 21 버전으로 상향되었습니다&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;최초 기본 구조입니다. 같은 템플릿을 복사 해서 다음과 같이 구성합니다.&lt;/div&gt;
&lt;div&gt;본인은 백엔드로 이름을 주었지만 api-server 로 하는 것이 더 나은 명명법 입니다.&amp;nbsp;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;spring.png&quot; data-origin-width=&quot;217&quot; data-origin-height=&quot;287&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DGeZP/dJMcafkDGIC/O0JrV5sjjLR0NmPPjtrgWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DGeZP/dJMcafkDGIC/O0JrV5sjjLR0NmPPjtrgWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DGeZP/dJMcafkDGIC/O0JrV5sjjLR0NmPPjtrgWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDGeZP%2FdJMcafkDGIC%2FO0JrV5sjjLR0NmPPjtrgWK%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;217&quot; height=&quot;287&quot; data-filename=&quot;spring.png&quot; data-origin-width=&quot;217&quot; data-origin-height=&quot;287&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div data-en-clipboard=&quot;true&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;이름은 config-service, eureka-service, gateway-service 라고 합니다.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;secret-service 는 그냥 빈 폴더, 나머지 service 는 이니셜라이저 프로젝트로 생성합니다.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;spring.png&quot; data-origin-width=&quot;316&quot; data-origin-height=&quot;550&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rVYGq/dJMcacVKD8m/uW76iiD1esrrY9xdIhLtiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rVYGq/dJMcacVKD8m/uW76iiD1esrrY9xdIhLtiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rVYGq/dJMcacVKD8m/uW76iiD1esrrY9xdIhLtiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrVYGq%2FdJMcacVKD8m%2FuW76iiD1esrrY9xdIhLtiK%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;316&quot; height=&quot;550&quot; data-filename=&quot;spring.png&quot; data-origin-width=&quot;316&quot; data-origin-height=&quot;550&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-filename=&quot;spring.png&quot; data-origin-width=&quot;320&quot; data-origin-height=&quot;730&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MmeZi/dJMcacanuGN/fY0R7I4A3sL1DTdZcrTOz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MmeZi/dJMcacanuGN/fY0R7I4A3sL1DTdZcrTOz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MmeZi/dJMcacanuGN/fY0R7I4A3sL1DTdZcrTOz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMmeZi%2FdJMcacanuGN%2FfY0R7I4A3sL1DTdZcrTOz0%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;320&quot; height=&quot;730&quot; data-filename=&quot;spring.png&quot; data-origin-width=&quot;320&quot; data-origin-height=&quot;730&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div data-en-clipboard=&quot;true&quot; data-pm-slice=&quot;1 1 []&quot;&gt;서비스도 아래 사각형을 동일하게 삭제해 주세요.&lt;/div&gt;
&lt;div data-en-clipboard=&quot;true&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;spring.png&quot; data-origin-width=&quot;188&quot; data-origin-height=&quot;245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBr3pv/dJMcaiBFfna/j1KFy8qJ7FyGZ4fim8lht0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBr3pv/dJMcaiBFfna/j1KFy8qJ7FyGZ4fim8lht0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBr3pv/dJMcaiBFfna/j1KFy8qJ7FyGZ4fim8lht0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBr3pv%2FdJMcaiBFfna%2Fj1KFy8qJ7FyGZ4fim8lht0%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;188&quot; height=&quot;245&quot; data-filename=&quot;spring.png&quot; data-origin-width=&quot;188&quot; data-origin-height=&quot;245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&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-filename=&quot;spring.png&quot; data-origin-width=&quot;321&quot; data-origin-height=&quot;253&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d1sZZH/dJMcaawRIuh/KRYrqYlgA8HDktSKX731fk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d1sZZH/dJMcaawRIuh/KRYrqYlgA8HDktSKX731fk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d1sZZH/dJMcaawRIuh/KRYrqYlgA8HDktSKX731fk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd1sZZH%2FdJMcaawRIuh%2FKRYrqYlgA8HDktSKX731fk%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;321&quot; height=&quot;253&quot; data-filename=&quot;spring.png&quot; data-origin-width=&quot;321&quot; data-origin-height=&quot;253&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div data-en-clipboard=&quot;true&quot; data-pm-slice=&quot;1 1 []&quot;&gt;.gitignore 파일 맨 아래쪽에 다음 구문을 붙여 넣습니다.&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1762926092939&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;./src/main/resources/application.yml&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div data-en-clipboard=&quot;true&quot; data-pm-slice=&quot;1 1 []&quot;&gt;삭제 후 모양은 다음과 같습니다.&lt;/div&gt;
&lt;div data-en-clipboard=&quot;true&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;spring.png&quot; data-origin-width=&quot;202&quot; data-origin-height=&quot;731&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTjBUF/dJMcagDQI5D/rHHrqKAdH7BM03pHmN44nK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTjBUF/dJMcagDQI5D/rHHrqKAdH7BM03pHmN44nK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTjBUF/dJMcagDQI5D/rHHrqKAdH7BM03pHmN44nK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTjBUF%2FdJMcagDQI5D%2FrHHrqKAdH7BM03pHmN44nK%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;202&quot; height=&quot;731&quot; data-filename=&quot;spring.png&quot; data-origin-width=&quot;202&quot; data-origin-height=&quot;731&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div data-en-clipboard=&quot;true&quot; data-pm-slice=&quot;1 1 []&quot;&gt;루트 에는 docker-compose.yml&lt;/div&gt;
&lt;div&gt;모듈에는 Dockerfile 추가합니다.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;spring.png&quot; data-origin-width=&quot;217&quot; data-origin-height=&quot;886&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdQxxg/dJMcai2JF5A/erp6fK5JcWM0QEuKrDrPMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdQxxg/dJMcai2JF5A/erp6fK5JcWM0QEuKrDrPMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdQxxg/dJMcai2JF5A/erp6fK5JcWM0QEuKrDrPMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdQxxg%2FdJMcai2JF5A%2Ferp6fK5JcWM0QEuKrDrPMK%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;217&quot; height=&quot;886&quot; data-filename=&quot;spring.png&quot; data-origin-width=&quot;217&quot; data-origin-height=&quot;886&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;div data-en-clipboard=&quot;true&quot; data-pm-slice=&quot;1 1 []&quot;&gt;docker-compose.yml 과 각 Dockerfile 을 붙입니다.&lt;/div&gt;
&lt;div data-en-clipboard=&quot;true&quot; data-pm-slice=&quot;1 1 []&quot;&gt;(해당 내용은 이미 독자가 구현했다는 가정입니다)&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;이제,&amp;nbsp; 각 모듈마다 build.grade 을 붙입니다.&lt;/div&gt;
&lt;div&gt;모듈마다 다르니, 각각 붙여야 합니다.&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>7. 클라우드</category>
      <author>랩장 labzang</author>
      <guid isPermaLink="true">https://parksrazor.tistory.com/893</guid>
      <comments>https://parksrazor.tistory.com/893#entry893comment</comments>
      <pubDate>Wed, 12 Nov 2025 14:48:11 +0900</pubDate>
    </item>
    <item>
      <title>[파이썬] SQLAlchemy - AdminOrderListOrm.py #0661231116</title>
      <link>https://parksrazor.tistory.com/889</link>
      <description>&lt;script src=&quot;https://gist.github.com/parkjungkwan/6ed992ae6e3a5d5f0cbb5515b1d803fc.js&quot;&gt;&lt;/script&gt;</description>
      <category>5. 파이썬</category>
      <author>랩장 labzang</author>
      <guid isPermaLink="true">https://parksrazor.tistory.com/889</guid>
      <comments>https://parksrazor.tistory.com/889#entry889comment</comments>
      <pubDate>Thu, 16 Nov 2023 08:24:36 +0900</pubDate>
    </item>
    <item>
      <title>[파이썬] Python을 이용한 웹 크롤링 및 비즈니스 활용</title>
      <link>https://parksrazor.tistory.com/887</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1700626354687&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;https://google-chrome.en.uptodown.com/windows/versions&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주제: Python을&amp;nbsp;이용한&amp;nbsp;웹&amp;nbsp;크롤링&amp;nbsp;및&amp;nbsp;비즈니스&amp;nbsp;활용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/parkjungkwan/crawling-231120&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;소스코드 깃허브 바로가기&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발환경: 윈도우즈 10, 크롬 브라우저, 파이참 개발도구, 파이썬 10버전, 아나콘다 라이브러리 외&lt;/p&gt;
&lt;div data-en-clipboard=&quot;true&quot; data-pm-slice=&quot;1 1 []&quot;&gt;학습목표
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;웹크롤링으로 데이터를 수집하는 프로세스를 파이썬의 다양한 라이브러리를 활용하여 처리할 수 있다.&lt;/li&gt;
&lt;li&gt;다양한 웹사이트와 공공데이터 포탈에서 제공되는 데이터 중에서 필요한 데이터를 쉽게 크롤링 할 수 있다.&lt;/li&gt;
&lt;li&gt;단순 반복 업무를 &lt;span style=&quot;color: #ee2323;&quot;&gt;자동화 프로그램&lt;/span&gt;으로 만듦으로써 효율적인 업무처리를 할 수 있다.&lt;/li&gt;
&lt;li&gt;크롤링에 주로 사용되는 객체는 BeautifulSoup 이다&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;BeautifulSoup&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;은 태그(name)와 속성(attribute) 를 반환한다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;셀레니움 라이브러리는 options에 headers 를 추가하여 설정한다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;셀레니움은 브라우저를 종료하기 위해 close() 메소드를 사용한다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;셀레니움은 send_keys() 를 통해 키보드의 키를 입력한다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;webdriver 은 웹브라우저를 실행시키는 라이브러리이다.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;requests 는 get() 함수를 사용한다&lt;/li&gt;
&lt;li style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;css 셀러터에서 id 는 # 을사용하고, 클래스는 . 을 사용한다.&lt;/li&gt;
&lt;li style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;BeautifulSoup&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;은 find(), find_all(), selelct() 메소드를 사용한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;i&gt;데이터 수집의 방식이 변화하고 있습니다.&lt;/i&gt;&lt;/u&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;챗GPT 를 활용한 크롤링의 예시&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://izy.codes/crawling-etf-python-chatgpt/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://izy.codes/crawling-etf-python-chatgpt/&lt;/a&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프롬프트 엔지니어링 예시 &lt;a href=&quot;https://mokeya.tistory.com/398&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://mokeya.tistory.com/398&lt;/a&gt;&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;구글미트 주소 : To&amp;nbsp;join&amp;nbsp;the&amp;nbsp;video&amp;nbsp;meeting,&amp;nbsp;click&amp;nbsp;this&amp;nbsp;link:&amp;nbsp;&lt;a href=&quot;https://meet.google.com/erk-qkqd-bsd&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://meet.google.com/erk-qkqd-bsd&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/fastcodekr/answerbook-crawling-231120&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;깃허브 포크 주소&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://codechacha.com/ko/git-add-ssh-key-in-windows/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;깃허브 등록 SSH 방식&lt;/a&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;br /&gt;Chapter 01 파이썬 시작하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;01&amp;nbsp;_&amp;nbsp;01&amp;nbsp;파이썬&amp;nbsp;살펴보기&lt;br /&gt;파이썬이란?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬 언어의 특징 및 장점&lt;br /&gt;&lt;a href=&quot;https://joyfuls.tistory.com/48&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[참조] 클라우드와 로컬머신&lt;/a&gt;&lt;br /&gt;01 _ 02 파이썬 개발환경 구성&lt;br /&gt;&lt;a href=&quot;https://parksrazor.tistory.com/203&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;파이참&amp;nbsp;설치&amp;nbsp;및&amp;nbsp;아나콘다&amp;nbsp;연동&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;https://parksrazor.tistory.com/13&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;깃허브 가입 및 깃 설치&lt;/a&gt;&lt;br /&gt;구글시트 연동하기&lt;br /&gt;Chapter&amp;nbsp;02&lt;a href=&quot;https://www.w3schools.com/python/default.asp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&amp;nbsp;파이썬의&amp;nbsp;기본&amp;nbsp;문법&amp;nbsp;익히기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체(object, instance)는 서로 연관된 데이터와 그 데이터를 조작하기 위한 함수를 하나의 집합에 모아놓은 것이다.&lt;br /&gt;02&amp;nbsp;_&amp;nbsp;01&amp;nbsp;출력&amp;nbsp;print&lt;br /&gt;02&amp;nbsp;_&amp;nbsp;02&amp;nbsp;입력&amp;nbsp;input&lt;br /&gt;02&amp;nbsp;_&amp;nbsp;03&amp;nbsp;변수&amp;nbsp;-&amp;nbsp;숫자형,&amp;nbsp;문자형,&amp;nbsp;소수점형,&amp;nbsp;BOOL형&lt;br /&gt;02&amp;nbsp;_&amp;nbsp;04&amp;nbsp;자료형&amp;nbsp;-&amp;nbsp;&lt;span style=&quot;color: #ee2323;&quot;&gt;리스트,&amp;nbsp;튜플,&amp;nbsp;딕셔너리,&amp;nbsp;집합&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://datascienceschool.net/01%20python/02.12%20%ED%8C%8C%EC%9D%B4%EC%8D%AC%20%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;변수와 자료형에 대한 이해 : 파이썬 객체지향 개념&lt;/a&gt;&lt;br /&gt;02&amp;nbsp;_&amp;nbsp;05&amp;nbsp;연산&amp;nbsp;-&amp;nbsp;사칙연산,&amp;nbsp;논리연산,&amp;nbsp;비교연산&lt;br /&gt;02&amp;nbsp;_&amp;nbsp;06&amp;nbsp;조건문&lt;br /&gt;02&amp;nbsp;_&amp;nbsp;07&amp;nbsp;반복문&amp;nbsp;while문,&amp;nbsp;for문&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/parkjungkwan/telaviv-python-basic/blob/master/chapter_1/gugudan.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;구구단 예제를 통한 while 문으로 메뉴제작하기&lt;/a&gt;&lt;br /&gt;02&amp;nbsp;_&amp;nbsp;08&amp;nbsp;오류&amp;nbsp;및&amp;nbsp;예외처리&lt;br /&gt;02&amp;nbsp;_&amp;nbsp;09&amp;nbsp;함수&lt;br /&gt;02&amp;nbsp;_&amp;nbsp;10&amp;nbsp;클래스&lt;br /&gt;02&amp;nbsp;_&amp;nbsp;11&amp;nbsp;데이터프레임&lt;br /&gt;02&amp;nbsp;_&amp;nbsp;12&amp;nbsp;import&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;178&quot; data-origin-height=&quot;809&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q8wHn/btsAjTyIBD5/7ePindMcQ6SgCNeKmauhhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q8wHn/btsAjTyIBD5/7ePindMcQ6SgCNeKmauhhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q8wHn/btsAjTyIBD5/7ePindMcQ6SgCNeKmauhhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq8wHn%2FbtsAjTyIBD5%2F7ePindMcQ6SgCNeKmauhhk%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;178&quot; height=&quot;809&quot; data-origin-width=&quot;178&quot; data-origin-height=&quot;809&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Chapter&amp;nbsp;03&amp;nbsp;기초&amp;nbsp;프로그램&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;01&amp;nbsp;_&amp;nbsp;숫자&amp;nbsp;맞추기&amp;nbsp;게임&amp;nbsp;만들기&lt;br /&gt;임의의&amp;nbsp;숫자&amp;nbsp;생성&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;숫자&amp;nbsp;맞추는&amp;nbsp;게임&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;게임&amp;nbsp;코드&amp;nbsp;트러블슈팅&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;02&amp;nbsp;_&amp;nbsp;컴퓨터의&amp;nbsp;외부&amp;nbsp;및&amp;nbsp;내부&amp;nbsp;IP&amp;nbsp;확인하기&lt;br /&gt;컴퓨터&amp;nbsp;내부&amp;nbsp;IP&amp;nbsp;알아보는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;컴퓨터&amp;nbsp;외부&amp;nbsp;IP&amp;nbsp;알아보는&amp;nbsp;코드&amp;nbsp;만들고&amp;nbsp;실행&lt;br /&gt;내부,&amp;nbsp;외부&amp;nbsp;IP&amp;nbsp;한&amp;nbsp;번에&amp;nbsp;출력하는&amp;nbsp;코드&amp;nbsp;만들고&amp;nbsp;실행&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;03&amp;nbsp;_&amp;nbsp;텍스트를&amp;nbsp;음성으로&amp;nbsp;변환하기&lt;br /&gt;텍스트를&amp;nbsp;음성으로&amp;nbsp;변환하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;파일에서&amp;nbsp;문자를&amp;nbsp;읽어&amp;nbsp;음성으로&amp;nbsp;출력하는&amp;nbsp;코드&amp;nbsp;만들고&amp;nbsp;실행&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;04&amp;nbsp;_&amp;nbsp;QR코드&amp;nbsp;생성기&lt;br /&gt;QR코드&amp;nbsp;생성&amp;nbsp;코드&amp;nbsp;만들고&amp;nbsp;실행&lt;br /&gt;여러&amp;nbsp;개의&amp;nbsp;QR코드를&amp;nbsp;한&amp;nbsp;번에&amp;nbsp;생성하는&amp;nbsp;코드&amp;nbsp;만들고&amp;nbsp;실행&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;05&amp;nbsp;_&amp;nbsp;컴퓨터의&amp;nbsp;정보&amp;nbsp;확인&lt;br /&gt;컴퓨터&amp;nbsp;정보&amp;nbsp;확인&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;필요한&amp;nbsp;정보만&amp;nbsp;출력하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;1초당&amp;nbsp;반복해서&amp;nbsp;정보를&amp;nbsp;출력하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;06&amp;nbsp;_&amp;nbsp;압축파일&amp;nbsp;암호&amp;nbsp;푸는&amp;nbsp;프로그램&lt;br /&gt;압축파일&amp;nbsp;생성하기&lt;br /&gt;압축&amp;nbsp;푸는&amp;nbsp;코드&amp;nbsp;만들고&amp;nbsp;실행&lt;br /&gt;비밀번호를&amp;nbsp;찾으면&amp;nbsp;프로그램이&amp;nbsp;종료되는&amp;nbsp;코드&amp;nbsp;만들고&amp;nbsp;실행&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;07&amp;nbsp;_&amp;nbsp;환율&amp;nbsp;변환기&lt;br /&gt;지원되는&amp;nbsp;통화목록&amp;nbsp;출력&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;1달러를&amp;nbsp;원화로&amp;nbsp;변환한&amp;nbsp;결과&amp;nbsp;출력&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;실시간&amp;nbsp;환율&amp;nbsp;정보&amp;nbsp;크롤링&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;08&amp;nbsp;_&amp;nbsp;쓰레드를&amp;nbsp;사용한&amp;nbsp;프로그램&lt;br /&gt;2가지&amp;nbsp;동작이&amp;nbsp;동시에&amp;nbsp;실행되는&amp;nbsp;코드&amp;nbsp;만들고&amp;nbsp;실행&lt;br /&gt;메인코드가&amp;nbsp;동작할&amp;nbsp;때에만&amp;nbsp;쓰레드&amp;nbsp;동작하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;다수의&amp;nbsp;쓰레드를&amp;nbsp;동작시키는&amp;nbsp;코드&amp;nbsp;만들고&amp;nbsp;실행&lt;br /&gt;&lt;br /&gt;Chapter&amp;nbsp;04&amp;nbsp;자동화&amp;nbsp;프로그램&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;09&amp;nbsp;_&amp;nbsp;영어&amp;nbsp;문서를&amp;nbsp;한글로&amp;nbsp;자동번역&lt;br /&gt;번역&amp;nbsp;프로그램&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;영어&amp;nbsp;문서를&amp;nbsp;한글로&amp;nbsp;번역하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;번역&amp;nbsp;내용을&amp;nbsp;새&amp;nbsp;파일로&amp;nbsp;저장하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;10&amp;nbsp;_&amp;nbsp;오토마우스를&amp;nbsp;활용한&amp;nbsp;웹페이지&amp;nbsp;자동화&lt;br /&gt;마우스의&amp;nbsp;좌표를&amp;nbsp;출력하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;네이버에서&amp;nbsp;자동으로&amp;nbsp;서울&amp;nbsp;날씨&amp;nbsp;검색하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;서울&amp;nbsp;날씨&amp;nbsp;화면&amp;nbsp;자동&amp;nbsp;캡처&amp;nbsp;후&amp;nbsp;저장하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;여러&amp;nbsp;지역&amp;nbsp;날씨를&amp;nbsp;자동으로&amp;nbsp;검색&amp;nbsp;후&amp;nbsp;저장하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;11&amp;nbsp;_&amp;nbsp;오토마우스를&amp;nbsp;활용한&amp;nbsp;PC카카오톡&amp;nbsp;자동화&lt;br /&gt;PC카카오톡에서&amp;nbsp;내&amp;nbsp;사진&amp;nbsp;캡처&amp;nbsp;후&amp;nbsp;저장&lt;br /&gt;사진에서&amp;nbsp;좌표&amp;nbsp;추출하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;좌표를&amp;nbsp;이용하여&amp;nbsp;메시지를&amp;nbsp;자동으로&amp;nbsp;보내는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;일정&amp;nbsp;시간마다&amp;nbsp;동작하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;일정&amp;nbsp;간격마다&amp;nbsp;보내는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;12&amp;nbsp;_&amp;nbsp;엑셀의&amp;nbsp;정보를&amp;nbsp;불러와&amp;nbsp;수료증&amp;nbsp;자동&amp;nbsp;생성&lt;br /&gt;수료증명단&amp;nbsp;엑셀&amp;nbsp;파일&amp;nbsp;만들기&lt;br /&gt;판다스&amp;nbsp;라이브러리로&amp;nbsp;값을&amp;nbsp;엑셀로&amp;nbsp;저장&amp;nbsp;후&amp;nbsp;불러오는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;수료증&amp;nbsp;레이아웃을&amp;nbsp;워드&amp;nbsp;문서로&amp;nbsp;만들기&lt;br /&gt;수료증&amp;nbsp;내용을&amp;nbsp;채운&amp;nbsp;후&amp;nbsp;저장하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;수료증&amp;nbsp;생성&amp;nbsp;후&amp;nbsp;PDF로&amp;nbsp;변환하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;13&amp;nbsp;_&amp;nbsp;이메일을&amp;nbsp;수집하여&amp;nbsp;엑셀에&amp;nbsp;기록하기&lt;br /&gt;이메일&amp;nbsp;형식을&amp;nbsp;추출하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;리스트에서&amp;nbsp;중복&amp;nbsp;내용&amp;nbsp;제거하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;사이트에서&amp;nbsp;이메일&amp;nbsp;수집하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;수집한&amp;nbsp;이메일&amp;nbsp;주소를&amp;nbsp;엑셀에&amp;nbsp;저장하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;14&amp;nbsp;_&amp;nbsp;구글&amp;nbsp;및&amp;nbsp;네이버&amp;nbsp;이메일&amp;nbsp;보내기&amp;nbsp;및&amp;nbsp;대량&amp;nbsp;이메일&amp;nbsp;전송&lt;br /&gt;네이버와&amp;nbsp;구글&amp;nbsp;이메일&amp;nbsp;설정&lt;br /&gt;네이버&amp;nbsp;메일을&amp;nbsp;보내는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;구글&amp;nbsp;메일을&amp;nbsp;보내는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;파일을&amp;nbsp;첨부하여&amp;nbsp;메일&amp;nbsp;보내는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;html&amp;nbsp;형식&amp;nbsp;메일&amp;nbsp;보내는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;엑셀&amp;nbsp;파일에서&amp;nbsp;대량으로&amp;nbsp;이메일&amp;nbsp;보내는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;15&amp;nbsp;_&amp;nbsp;slack으로&amp;nbsp;스마트폰에&amp;nbsp;메시지&amp;nbsp;보내기&lt;br /&gt;워크스페이스&amp;nbsp;생성과&amp;nbsp;봇(로봇)&amp;nbsp;만들기&lt;br /&gt;봇(로봇)&amp;nbsp;채널로&amp;nbsp;메시지&amp;nbsp;보내는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;스마트폰에서도&amp;nbsp;봇(로봇)이&amp;nbsp;보낸&amp;nbsp;메시지&amp;nbsp;확인&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;16&amp;nbsp;_&amp;nbsp;이메일로&amp;nbsp;특정&amp;nbsp;키워드가&amp;nbsp;오면&amp;nbsp;스마트폰으로&amp;nbsp;알림&amp;nbsp;보내기&lt;br /&gt;네이버&amp;nbsp;이메일을&amp;nbsp;읽는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;이메일&amp;nbsp;본문&amp;nbsp;내용을&amp;nbsp;읽는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;특정&amp;nbsp;키워드의&amp;nbsp;이메일을&amp;nbsp;받으면&amp;nbsp;메시지&amp;nbsp;보내는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;반복&amp;nbsp;실행하여&amp;nbsp;새로운&amp;nbsp;이메일이&amp;nbsp;있을&amp;nbsp;경우에만&amp;nbsp;메시지&amp;nbsp;보내는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;17&amp;nbsp;_&amp;nbsp;텔레그램으로&amp;nbsp;스마트폰에&amp;nbsp;메지시&amp;nbsp;보내기&lt;br /&gt;라이브럴리&amp;nbsp;설치&lt;br /&gt;텔레그램을&amp;nbsp;통해&amp;nbsp;BotFather&amp;nbsp;봇&amp;nbsp;설치&lt;br /&gt;API&amp;nbsp;Token을&amp;nbsp;이용하여&amp;nbsp;bot의&amp;nbsp;ID&amp;nbsp;알아내는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;텔레그램&amp;nbsp;bot&amp;nbsp;기능을&amp;nbsp;활용하여&amp;nbsp;메시지의&amp;nbsp;자동응답&amp;nbsp;보내는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;18&amp;nbsp;_&amp;nbsp;스마트폰&amp;nbsp;자동화&lt;br /&gt;adb&amp;nbsp;서버&amp;nbsp;실행&lt;br /&gt;스마트폰을&amp;nbsp;제어하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;웹&amp;nbsp;브라우저&amp;nbsp;화면&amp;nbsp;캡쳐&amp;nbsp;후&amp;nbsp;저장하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;Chapter&amp;nbsp;05&amp;nbsp;크롤링,&amp;nbsp;이미지처리,&amp;nbsp;데이터분석&amp;nbsp;시각화&amp;nbsp;프로그램&amp;nbsp;만들기&lt;br /&gt;&lt;a href=&quot;https://parksrazor.tistory.com/516&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;웹크롤링 개발 환경 설정하기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://parksrazor.tistory.com/516&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;데이터 크롤링&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://parksrazor.tistory.com/672&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;데이터프레임 생성방법 3가지&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://gist.github.com/parkjungkwan/9ae0a94384127c99019f06aef016fb11&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;뷰티플숩 사이트에서 예제 테스트하기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 2&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://gist.github.com/parkjungkwan/3af25c6d274b9227d4a0f3d5684c9c99&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;벅스뮤직 랭킹을 엑셀파일로 저장하기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실습 1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://gist.github.com/parkjungkwan/b088894c48ff677f46fe686ff399de6a&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;멜론뮤직 랭킹을 엑셀파일로 저장하기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 3 : &lt;a href=&quot;https://movie.daum.net/ranking/reservation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;다음영화 사이트 바로가기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://gist.github.com/parkjungkwan/3d0cf6cc19734ea427b3aa4d159b24e7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;다음영화 리뷰를 엑셀파일로 저장하기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예제 4&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://gist.github.com/parkjungkwan/9e3a123da8196dcd2118ce6b9bea5f2b&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Kind 에서 종목코드 얻고, 네이버증권에서 시세정보 엑셀로 저장하기&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PROJECT&amp;nbsp;19&amp;nbsp;_&amp;nbsp;구글&amp;nbsp;이미지&amp;nbsp;크롤링&lt;br /&gt;크롬&amp;nbsp;드라이버를&amp;nbsp;자동으로&amp;nbsp;설치하는&amp;nbsp;코드&amp;nbsp;만들기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://chromedriver.chromium.org/downloads&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;크롬드라이버 다운로드&lt;/a&gt;&lt;br /&gt;구글&amp;nbsp;상에서&amp;nbsp;이미지&amp;nbsp;크롤링하는&amp;nbsp;코드&amp;nbsp;만들기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://parksrazor.tistory.com/661&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;구글 api 설정하기&lt;/a&gt;&lt;br /&gt;크롤링한&amp;nbsp;이미지&amp;nbsp;다운로드&amp;nbsp;받는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;주피터&amp;nbsp;노트북&amp;nbsp;코드를&amp;nbsp;py&amp;nbsp;코드로&amp;nbsp;변경&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;# 이미지 조회하는 구글 URL&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;a style=&quot;color: #ee2323;&quot; href=&quot;https://www.google.co.kr/imghp?hl=ko&amp;amp;tab=wi&amp;amp;authuser=0&amp;amp;ogbl&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.google.co.kr/imghp?hl=ko&amp;amp;tab=wi&amp;amp;authuser=0&amp;amp;ogbl&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://gist.github.com/parkjungkwan/40bd7dd0b04a6838bdbb2f1a6f600ec1&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;조회 완성된 소스코드&lt;/a&gt;&lt;br /&gt;PROJECT&amp;nbsp;20&amp;nbsp;_&amp;nbsp;실시간&amp;nbsp;검색어&amp;nbsp;모아보기&lt;br /&gt;크롬에서&amp;nbsp;실시간&amp;nbsp;검색&amp;nbsp;사이트&amp;nbsp;확인하기&lt;br /&gt;파이썬&amp;nbsp;코드로&amp;nbsp;제어할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;크롬&amp;nbsp;창&amp;nbsp;띄우는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;실시간&amp;nbsp;검색어&amp;nbsp;원소를&amp;nbsp;찾아&amp;nbsp;저장하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;검색&amp;nbsp;포털사이트에서&amp;nbsp;실시간&amp;nbsp;검색을&amp;nbsp;확인하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;검색&amp;nbsp;포털의&amp;nbsp;실시간&amp;nbsp;검색어&amp;nbsp;출력하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;21&amp;nbsp;_&amp;nbsp;핫딜&amp;nbsp;알리미&lt;br /&gt;사이트의&amp;nbsp;특정&amp;nbsp;게시판에서&amp;nbsp;원하는&amp;nbsp;키워드가&amp;nbsp;검색되면&amp;nbsp;알림&amp;nbsp;보내는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;22&amp;nbsp;_&amp;nbsp;이미지에서&amp;nbsp;글자&amp;nbsp;추출하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://drive.google.com/file/d/10jIiVoDaTsZz9S4uCg1agosslJkR1kcP/view?usp=drive_link&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;테서렉트 다운로드 받은 후 C:\Program Files (x86) 에 두고 실행해야 함.&lt;/a&gt;&lt;br /&gt;OCR 프로그램 설치 [&lt;a href=&quot;https://green-late7.tistory.com/179&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;참조블로그&lt;/a&gt;]&lt;br /&gt;이미지에서&amp;nbsp;한글&amp;nbsp;찾아&amp;nbsp;추출하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;사용&amp;nbsp;가능한&amp;nbsp;언어&amp;nbsp;확인하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;변환된&amp;nbsp;언어를&amp;nbsp;파일로&amp;nbsp;저장하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;23&amp;nbsp;_&amp;nbsp;사진에&amp;nbsp;얼굴만&amp;nbsp;찾아&amp;nbsp;모자이크처리(OpenCV)&lt;br /&gt;OpenCV로&amp;nbsp;얼굴&amp;nbsp;사진&amp;nbsp;찾는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;사진&amp;nbsp;속&amp;nbsp;얼굴을&amp;nbsp;모자이크&amp;nbsp;처리하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;24&amp;nbsp;_&amp;nbsp;사진을&amp;nbsp;그림으로&amp;nbsp;변환하기(OpenCV)&lt;br /&gt;여행사진을&amp;nbsp;그림으로&amp;nbsp;변환하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;25&amp;nbsp;_&amp;nbsp;가상화폐&amp;nbsp;데이터&amp;nbsp;획득하여&amp;nbsp;데이터베이스&amp;nbsp;저장&lt;br /&gt;DB&amp;nbsp;Browser&amp;nbsp;for&amp;nbsp;SQLite&amp;nbsp;설치&lt;br /&gt;가상화폐&amp;nbsp;시세&amp;nbsp;조회&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;비트코인의&amp;nbsp;분봉&amp;nbsp;데이터를&amp;nbsp;데이터베이스에&amp;nbsp;저장하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;데이터베이스의&amp;nbsp;데이터&amp;nbsp;읽고&amp;nbsp;출력하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;비트코인&amp;nbsp;데이터를&amp;nbsp;읽어&amp;nbsp;데이터베이스에&amp;nbsp;저장하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;26&amp;nbsp;_&amp;nbsp;로또번호&amp;nbsp;시각화하기&lt;br /&gt;로또&amp;nbsp;당첨번호&amp;nbsp;자료&amp;nbsp;엑셀&amp;nbsp;파일&amp;nbsp;다운받기&lt;br /&gt;판다스로&amp;nbsp;값&amp;nbsp;읽고&amp;nbsp;그래프로&amp;nbsp;그리는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;당첨번호의&amp;nbsp;빈도수를&amp;nbsp;출력하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;27&amp;nbsp;_&amp;nbsp;전국의&amp;nbsp;대학교&amp;nbsp;위치&amp;nbsp;시각화하기&lt;br /&gt;전국의&amp;nbsp;대학교&amp;nbsp;주소록&amp;nbsp;엑셀&amp;nbsp;파일&amp;nbsp;자료&amp;nbsp;받기&lt;br /&gt;판다스에서&amp;nbsp;학교명과&amp;nbsp;주소&amp;nbsp;찾는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;오픈&amp;nbsp;API를&amp;nbsp;이용해&amp;nbsp;주소를&amp;nbsp;좌표로&amp;nbsp;변환하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;특정&amp;nbsp;학교의&amp;nbsp;위치에&amp;nbsp;마커를&amp;nbsp;표시하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;live&amp;nbsp;server를&amp;nbsp;vs&amp;nbsp;code에&amp;nbsp;설치&lt;br /&gt;자료의&amp;nbsp;모든&amp;nbsp;대학교&amp;nbsp;주소에&amp;nbsp;마커&amp;nbsp;표시하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;Chapter&amp;nbsp;06&amp;nbsp;웹&amp;nbsp;페이지&amp;nbsp;제작&amp;nbsp;및&amp;nbsp;GUI&amp;nbsp;프로그램&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;28&amp;nbsp;_&amp;nbsp;플라스크&amp;nbsp;웹서버&amp;nbsp;만들기&lt;br /&gt;flask로&amp;nbsp;간단한&amp;nbsp;웹서버&amp;nbsp;만들고&amp;nbsp;구동하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;flask에&amp;nbsp;페이지를&amp;nbsp;추가하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;flask을&amp;nbsp;이용하여&amp;nbsp;html&amp;nbsp;파일을&amp;nbsp;서버로&amp;nbsp;만들어&amp;nbsp;보여주는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;29&amp;nbsp;_&amp;nbsp;쉬운&amp;nbsp;웹앱만들기&lt;br /&gt;streamlit을&amp;nbsp;이용하여&amp;nbsp;차트&amp;nbsp;그리는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;달력에서&amp;nbsp;날짜를&amp;nbsp;선택하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;선택한&amp;nbsp;날짜의&amp;nbsp;비트코인&amp;nbsp;시세를&amp;nbsp;그래프로&amp;nbsp;출력해주는&amp;nbsp;웹앱&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;30&amp;nbsp;_&amp;nbsp;가상화폐&amp;nbsp;금액표시&amp;nbsp;GUI&amp;nbsp;프로그램&amp;nbsp;만들기&lt;br /&gt;tkinter를&amp;nbsp;사용하여&amp;nbsp;GUI&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;글자&amp;nbsp;크기를&amp;nbsp;키우는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;1초마다&amp;nbsp;반복해서&amp;nbsp;동작하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;1초마다&amp;nbsp;반복해서&amp;nbsp;동작하는&amp;nbsp;GUI&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;exe&amp;nbsp;실행파일&amp;nbsp;만들고&amp;nbsp;응용프로그램으로&amp;nbsp;실행&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;31&amp;nbsp;_&amp;nbsp;로또번호&amp;nbsp;생성기&amp;nbsp;GUI&amp;nbsp;프로그램&amp;nbsp;만들기&lt;br /&gt;랜덤&amp;nbsp;번호&amp;nbsp;중&amp;nbsp;5개의&amp;nbsp;번호를&amp;nbsp;출력하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;tkinter를&amp;nbsp;이용하여&amp;nbsp;버튼을&amp;nbsp;누를&amp;nbsp;때마다&amp;nbsp;6개의&amp;nbsp;랜덤&amp;nbsp;번호를&amp;nbsp;출력하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;번호를&amp;nbsp;누르면&amp;nbsp;번호를&amp;nbsp;자동&amp;nbsp;생성하여&amp;nbsp;GUI에&amp;nbsp;표시하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;32&amp;nbsp;_&amp;nbsp;메모장&amp;nbsp;만들기&lt;br /&gt;tkinter&amp;nbsp;GUI를&amp;nbsp;이용하여&amp;nbsp;메모장&amp;nbsp;뻐대와&amp;nbsp;메뉴&amp;nbsp;구성하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;PROJECT&amp;nbsp;33&amp;nbsp;_&amp;nbsp;계산기&amp;nbsp;만들기(PYQT)&lt;br /&gt;Qt&amp;nbsp;Designer로&amp;nbsp;계산기&amp;nbsp;Widget&amp;nbsp;만들기&lt;br /&gt;Qt&amp;nbsp;Designer로&amp;nbsp;계산기&amp;nbsp;Widget&amp;nbsp;만들기&lt;br /&gt;버튼&amp;nbsp;입력받아&amp;nbsp;출력하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;수식을&amp;nbsp;계산&amp;nbsp;코드&amp;nbsp;추가하여&amp;nbsp;계산기&amp;nbsp;코드&amp;nbsp;완성&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;34&amp;nbsp;_&amp;nbsp;그림판&amp;nbsp;만들기(PYQT)&lt;br /&gt;Qt&amp;nbsp;Designer로&amp;nbsp;그림판&amp;nbsp;Widget&amp;nbsp;만들기&lt;br /&gt;버튼과&amp;nbsp;마우스&amp;nbsp;동작에&amp;nbsp;반응하는&amp;nbsp;그림판&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;Chapter&amp;nbsp;07&amp;nbsp;게임&amp;nbsp;및&amp;nbsp;인공지능&amp;nbsp;프로그램&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;35&amp;nbsp;_&amp;nbsp;점프&amp;nbsp;게임&amp;nbsp;만들기&lt;br /&gt;게임화면&amp;nbsp;구성하고&amp;nbsp;스페이스바를&amp;nbsp;입력받는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;게임&amp;nbsp;플레이어&amp;nbsp;만드는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;적을&amp;nbsp;만들고&amp;nbsp;적과&amp;nbsp;닿으면&amp;nbsp;종료하는&amp;nbsp;게임&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;36&amp;nbsp;_&amp;nbsp;똥&amp;nbsp;피하기&amp;nbsp;게임&amp;nbsp;만들기&lt;br /&gt;게임&amp;nbsp;화면&amp;nbsp;만드는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;플레이어&amp;nbsp;클래스&amp;nbsp;생성하고&amp;nbsp;구현하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;적을&amp;nbsp;만들고&amp;nbsp;적과&amp;nbsp;닿으면&amp;nbsp;게임을&amp;nbsp;종료하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;적을&amp;nbsp;만들고&amp;nbsp;적과&amp;nbsp;닿으면&amp;nbsp;게임을&amp;nbsp;종료하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;사진을&amp;nbsp;게임에&amp;nbsp;적용시키는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;37&amp;nbsp;_&amp;nbsp;인공지능&amp;nbsp;사과와&amp;nbsp;오렌지&amp;nbsp;구분하기&lt;br /&gt;가상환경&amp;nbsp;구성&lt;br /&gt;터미널&amp;nbsp;설정&amp;nbsp;구성&lt;br /&gt;터미널&amp;nbsp;생성과&amp;nbsp;라이브러리&amp;nbsp;설치&lt;br /&gt;라이브러리&amp;nbsp;설치&lt;br /&gt;학습용&amp;nbsp;사진&amp;nbsp;다운로드&amp;nbsp;받기&lt;br /&gt;학습데이터&amp;nbsp;생성하기&lt;br /&gt;사진을&amp;nbsp;구분하고&amp;nbsp;분류하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;38&amp;nbsp;_&amp;nbsp;음성인식&amp;nbsp;비서&amp;nbsp;만들기&lt;br /&gt;음성&amp;nbsp;녹음하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;음성을&amp;nbsp;텍스트로&amp;nbsp;변환하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;특정&amp;nbsp;키워드에&amp;nbsp;답변하는&amp;nbsp;음성인식&amp;nbsp;비서&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;39&amp;nbsp;_&amp;nbsp;삼성전자의&amp;nbsp;주식&amp;nbsp;예측하기&lt;br /&gt;삼성전자&amp;nbsp;주식의&amp;nbsp;10년간&amp;nbsp;주식&amp;nbsp;데이터를&amp;nbsp;불러오는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;주식&amp;nbsp;예측&amp;nbsp;모델&amp;nbsp;구성&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;특정&amp;nbsp;주식의&amp;nbsp;실제값과&amp;nbsp;예측값을&amp;nbsp;그리는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;&lt;br /&gt;PROJECT&amp;nbsp;40&amp;nbsp;_&amp;nbsp;사진에서&amp;nbsp;사람을&amp;nbsp;인식하여&amp;nbsp;분류하기&lt;br /&gt;이미지를&amp;nbsp;찾아&amp;nbsp;리스트의&amp;nbsp;형태로&amp;nbsp;변환하는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;파이토치를&amp;nbsp;이용해서&amp;nbsp;사진&amp;nbsp;폴더에서&amp;nbsp;특정&amp;nbsp;사진을&amp;nbsp;찾는&amp;nbsp;코드&amp;nbsp;만들기&lt;br /&gt;특정&amp;nbsp;사진을&amp;nbsp;찾아&amp;nbsp;특정&amp;nbsp;폴더로&amp;nbsp;이동하는&amp;nbsp;코드&amp;nbsp;만들기&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-filename=&quot;trss.JPG&quot; data-origin-width=&quot;636&quot; data-origin-height=&quot;636&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p5cXk/btsAyV4Va1K/4rToyNt5o0NV4OZ3vYxe01/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p5cXk/btsAyV4Va1K/4rToyNt5o0NV4OZ3vYxe01/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p5cXk/btsAyV4Va1K/4rToyNt5o0NV4OZ3vYxe01/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp5cXk%2FbtsAyV4Va1K%2F4rToyNt5o0NV4OZ3vYxe01%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;636&quot; height=&quot;636&quot; data-filename=&quot;trss.JPG&quot; data-origin-width=&quot;636&quot; data-origin-height=&quot;636&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;T2.JPG&quot; data-origin-width=&quot;547&quot; data-origin-height=&quot;471&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kykSB/btsAF0chLLn/rKSAFL8AkU3Wdx5TNmwBW0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kykSB/btsAF0chLLn/rKSAFL8AkU3Wdx5TNmwBW0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kykSB/btsAF0chLLn/rKSAFL8AkU3Wdx5TNmwBW0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkykSB%2FbtsAF0chLLn%2FrKSAFL8AkU3Wdx5TNmwBW0%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;547&quot; height=&quot;471&quot; data-filename=&quot;T2.JPG&quot; data-origin-width=&quot;547&quot; data-origin-height=&quot;471&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;pre id=&quot;code_1700625690543&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
# pip install selenium
from selenium.webdriver.common.keys import Keys
import time
import urllib.request
class GoogleImage:
    
    def __init__(self):
        self.search_word = ''
    
    def set_search_word(self, search_word):
        self.search = search_word
        
    def execute_search(self):
        pass
        
    
    
if __name__ == '__main__':

    g = GoogleImage()
    while 1:
        menu = input(f'''0. EXIT\n
              '1. 구글 이미지에 검색어 입력\n
              '2. 구글 이미지 조회하기\n''')
        if menu == '0':
            print('프로그램 종료')
            break
        elif menu == '1':
            s = input('검색어 입력: ')
     
        elif menu == '2':
            g.execute_search()
            
        else:
            print('다시 입력')
            continue&lt;/code&gt;&lt;/pre&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;pre id=&quot;code_1700626392335&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
import time
if __name__ == '__main__':

    chrome_options = Options()
    chrome_options.add_experimental_option(&quot;detach&quot;, True)

    # 불필요한 에러 메시지 없애기
    chrome_options.add_experimental_option(&quot;excludeSwitches&quot;, [&quot;enable-logging&quot;])

    # 브라우저 생성
    browser = webdriver.Chrome(options=chrome_options)
    browser.get('https://www.naver.com')&lt;/code&gt;&lt;/pre&gt;</description>
      <category>5. 파이썬</category>
      <author>랩장 labzang</author>
      <guid isPermaLink="true">https://parksrazor.tistory.com/887</guid>
      <comments>https://parksrazor.tistory.com/887#entry887comment</comments>
      <pubDate>Tue, 14 Nov 2023 20:10:59 +0900</pubDate>
    </item>
    <item>
      <title>[파이썬] S3업로드 쿼리</title>
      <link>https://parksrazor.tistory.com/885</link>
      <description>&lt;div&gt;코드: &lt;b&gt;0661231111&lt;/b&gt;&lt;/div&gt;
&lt;script src=&quot;https://gist.github.com/parkjungkwan/3077e79649f843ce9c26829c0de289ff.js&quot;&gt;&lt;/script&gt;</description>
      <category>5. 파이썬</category>
      <author>랩장 labzang</author>
      <guid isPermaLink="true">https://parksrazor.tistory.com/885</guid>
      <comments>https://parksrazor.tistory.com/885#entry885comment</comments>
      <pubDate>Sat, 11 Nov 2023 08:42:54 +0900</pubDate>
    </item>
    <item>
      <title>[파이썬] Vo 생성없이 카멜케이스로 리턴하기</title>
      <link>https://parksrazor.tistory.com/884</link>
      <description>&lt;script src=&quot;https://gist.github.com/parkjungkwan/6ee721a4728a1bee00dff339c494aceb.js&quot;&gt;&lt;/script&gt;</description>
      <category>5. 파이썬</category>
      <author>랩장 labzang</author>
      <guid isPermaLink="true">https://parksrazor.tistory.com/884</guid>
      <comments>https://parksrazor.tistory.com/884#entry884comment</comments>
      <pubDate>Fri, 10 Nov 2023 10:28:06 +0900</pubDate>
    </item>
    <item>
      <title>SQL 개발자 이론서</title>
      <link>https://parksrazor.tistory.com/882</link>
      <description>&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;목차&lt;/h2&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;color: #595959;&quot;&gt;PART 1 SQL Developer&lt;br /&gt;1.1 SQL Developer 소개&lt;br /&gt;1.2 Oracle Database 사용&lt;br /&gt;1.3 Toad&lt;br /&gt;1.4 Oracle SQL Developer&lt;br /&gt;1.5 MySQL&lt;br /&gt;1.6 Live SQL&lt;br /&gt;&lt;br /&gt;PART 2 데이터 모델링의 이해&lt;br /&gt;2.1 데이터 모델링(Data Modeling)&lt;br /&gt;2.2 데이터 모델과 성능&lt;br /&gt;&lt;br /&gt;PART 3 SQL 기본과 활용&lt;br /&gt;3.1 SQL 기본&lt;br /&gt;3.2 SQL 활용&lt;br /&gt;3.3 SQL 최적화의 원리&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;1.1 SQL Developer 소개&lt;br /&gt;1.2 Oracle Database 사용&lt;br /&gt;1.3 Toad&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://hec-ker.tistory.com/102&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;토드 설치하기&lt;/a&gt;&lt;br /&gt;1.4 Oracle SQL Developer&lt;br /&gt;1.5 MySQL&lt;br /&gt;1.6 Live SQL&lt;br /&gt;&lt;br /&gt;PART 2 데이터 모델링의 이해&lt;br /&gt;2.1 데이터 모델링(Data Modeling)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.erdcloud.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ERD클라우드 회원가입&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://mangkyu.tistory.com/27&quot;&gt;데이터모델링의 이해&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: start;&quot; href=&quot;https://parksrazor.tistory.com/178&quot;&gt;정규화&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://m.blog.naver.com/skrock/60037189135&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;데이터베이스 객체&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;객체지향프로그래밍(위키)&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.2 데이터 모델과 성능&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: start;&quot; href=&quot;https://parksrazor.tistory.com/655&quot;&gt;교차엔티티 ERD&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://parksrazor.tistory.com/405&quot;&gt;POS ERD&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://parksrazor.tistory.com/418&quot;&gt;주식/축구 ERD&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://parksrazor.tistory.com/689&quot;&gt;쇼핑몰 ERD&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;background-color: #e6f5ff; color: #0070d1;&quot; href=&quot;https://parksrazor.tistory.com/499&quot;&gt;축구단 정보와 ERD&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://parksrazor.tistory.com/500&quot;&gt;부서와 사원의 관계도&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PART 3 SQL 기본과 활용&lt;br /&gt;3.1 SQL 기본&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: start;&quot; href=&quot;https://parksrazor.tistory.com/420&quot;&gt;SQL CRUD 에 대한 설명&lt;/a&gt;&lt;br /&gt;3.2 SQL 활용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: start;&quot; href=&quot;https://parksrazor.tistory.com/607&quot;&gt;오라클 출판 예제 DDL&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: start;&quot; href=&quot;https://parksrazor.tistory.com/503&quot;&gt;오라클 사원부서 예제 DDL, DML&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: start;&quot; href=&quot;https://parksrazor.tistory.com/501&quot;&gt;오라클 축구 예제 DDL&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://parksrazor.tistory.com/117&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;오라클 축구 예제 DML&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3.3 SQL 최적화의 원리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://yunamom.tistory.com/353&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;스칼라, 인라인뷰, 서브쿼리&amp;nbsp;&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://seeminglyjs.tistory.com/270&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;카티잔 프로덕트&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.w3schools.com/sql/sql_join.asp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;조인&lt;/a&gt;(w2school)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://m.blog.naver.com/regenesis90/222190494489&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;셀프조인&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ju-hy.tistory.com/102#:~:text=Natural%20Join%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%A9%B4,%ED%95%B4%EB%8B%B9%20%ED%95%AD%EB%AA%A9%EC%9D%80%20%EC%A0%9C%EC%99%B8%ED%95%9C%EB%8B%A4.&amp;amp;text=SQL%EC%9D%80%20%EB%A7%88%EC%B0%AC%EA%B0%80%EC%A7%80%EB%A1%9C%20FROM%20%EC%A0%88%EC%9D%98,%ED%82%A4%EC%9B%8C%EB%93%9C%EB%A5%BC%20%EB%84%A3%EC%96%B4%EC%A3%BC%EB%A9%B4%20%EB%90%9C%EB%8B%A4.&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;내추럴조인&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스 용어:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://hoyeonkim795.github.io/posts/db-%EC%9A%A9%EC%96%B4/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;릴레이션, 어트리뷰트,튜플,도메인, 차수, 카디널리티, 스키마&lt;/a&gt;&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;762&quot; data-origin-height=&quot;703&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oHRm3/btszC1xmHhL/tb3bKRhglxNAMfkPFNANpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oHRm3/btszC1xmHhL/tb3bKRhglxNAMfkPFNANpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oHRm3/btszC1xmHhL/tb3bKRhglxNAMfkPFNANpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoHRm3%2FbtszC1xmHhL%2Ftb3bKRhglxNAMfkPFNANpk%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;762&quot; height=&quot;703&quot; data-origin-width=&quot;762&quot; data-origin-height=&quot;703&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&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;&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;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 style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://parksrazor.tistory.com/419&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;ERD&amp;nbsp;작성&amp;nbsp;Oralce&amp;nbsp;스키마&amp;nbsp;cmd&amp;nbsp;에서&amp;nbsp;생성하기&amp;nbsp;37th&lt;/a&gt;&lt;/p&gt;
&lt;span&gt;---&lt;/span&gt;&lt;/div&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 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 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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>2. SQL</category>
      <author>랩장 labzang</author>
      <guid isPermaLink="true">https://parksrazor.tistory.com/882</guid>
      <comments>https://parksrazor.tistory.com/882#entry882comment</comments>
      <pubDate>Tue, 31 Oct 2023 14:30:56 +0900</pubDate>
    </item>
    <item>
      <title>라이트세일(LightSail) 에 도커 설치 후 Fast API 실행</title>
      <link>https://parksrazor.tistory.com/881</link>
      <description>&lt;div&gt;참조 [코일블로그 &lt;a href=&quot;https://velog.io/@_koiil/Docker-compose%EB%A1%9C-LightSail%EC%97%90-Flask-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://velog.io/@_koiil/Docker-compose%EB%A1%9C-LightSail%EC%97%90-Flask-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0&lt;/a&gt;]&lt;/div&gt;
&lt;div&gt;-- Docker&lt;/div&gt;
&lt;div&gt;# apt install apt-transport-https ca-certificates curl software-properties-common&lt;/div&gt;
&lt;div&gt;# curl -fsSL &lt;a href=&quot;https://download.docker.com/linux/ubuntu/gpg&quot;&gt;https://download.docker.com/linux/ubuntu/gpg&lt;/a&gt; | sudo apt-key add -&lt;/div&gt;
&lt;div&gt;# add-apt-repository &quot;deb [arch=amd64] &lt;a href=&quot;https://download.docker.com/linux/ubuntu&quot;&gt;https://download.docker.com/linux/ubuntu&lt;/a&gt; bionic stable&quot;&lt;/div&gt;
&lt;div&gt;# apt update&lt;/div&gt;
&lt;div&gt;# apt-cache policy docker-ce&lt;/div&gt;
&lt;div&gt;# apt install docker-ce&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;-- Docker에 sudo 권한 부여&lt;/div&gt;
&lt;div&gt;# usermod -aG docker $USER&lt;/div&gt;
&lt;div&gt;# newgrp docker&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;-- 설치 확인&lt;/div&gt;
&lt;div&gt;# systemctl status docker&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;-- Docker-compose&lt;/div&gt;
&lt;div&gt;# curl -L &quot;&lt;a href=&quot;https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname&quot;&gt;https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname&lt;/a&gt; -s)-$(uname -m)&quot; -o /usr/local/bin/docker-compose&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;-- Docker-compose에 실행권한 부여&lt;/div&gt;
&lt;div&gt;# chmod +x /usr/local/bin/docker-compose&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;-- 설치확인&lt;/div&gt;
&lt;div&gt;# systemctl status docker&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;# docker-compose version&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;-- 가상 환경 설치&lt;/div&gt;
&lt;div&gt;# cd /&lt;/div&gt;
&lt;div&gt;# sudo apt install python3-venv&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# python3 -m venv base&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# cd base&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# ll&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#&amp;nbsp; sudo pwd&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# [ ... 파일 전체 경로 ]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# source [ ... 파일 전체 경로 ]/bin/activate&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;(base)&lt;/b&gt; &lt;/span&gt;fastcode:~/base#&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>7. 클라우드</category>
      <author>랩장 labzang</author>
      <guid isPermaLink="true">https://parksrazor.tistory.com/881</guid>
      <comments>https://parksrazor.tistory.com/881#entry881comment</comments>
      <pubDate>Wed, 8 Mar 2023 17:42:01 +0900</pubDate>
    </item>
    <item>
      <title>AWS 라이트세일(LightSail) 도메인 연결하기</title>
      <link>https://parksrazor.tistory.com/880</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;i&gt;&quot;&quot;&quot;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;i&gt;주의 ! 해당 포스트 대로 작업하기 위해서는 최소 매월 2만원대의 비용이 1년간 발생합니다.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;i&gt;AWS 라이트세일은 유료 서비스입니다. Free Tier 서비스가 아님을 상기시켜 드립니다.&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;i&gt;&quot;&quot;&quot;&lt;/i&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조사이트: 라이트세일 도커 용량으로 메모리용량 결정하기 &lt;a href=&quot;https://roseline.oopy.io/dev/lightsail-install-docker&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;로즈라인 블로그&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조사이트: 라이트세일 설치&amp;nbsp;&lt;a href=&quot;https://lightsail.aws.amazon.com/ls/docs/en_us/articles/lightsail-how-to-create-dns-entry&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AWS 라이트세일 홈페이지&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조사이트:&amp;nbsp; &lt;a href=&quot;https://wikidocs.net/177244&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;점프 투 Fast API&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;&quot;&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Domain name Specify your registered domain name: *****.shop &lt;br /&gt;ns-*146.awsdns-15.org &lt;br /&gt;ns-*98.awsdns-60.net &lt;br /&gt;ns-*775.awsdns-29.co.uk &lt;br /&gt;ns-*86.awsdns-23.com &lt;br /&gt;가비아&amp;nbsp;도메인&amp;nbsp;정보&amp;nbsp;변경 &lt;br /&gt;Create&amp;nbsp;a&amp;nbsp;DNS&amp;nbsp;Zone &lt;br /&gt;Select&amp;nbsp;your&amp;nbsp;static&amp;nbsp;IP&amp;nbsp;location &lt;br /&gt;Attach&amp;nbsp;to&amp;nbsp;an&amp;nbsp;instance &lt;br /&gt;Identify&amp;nbsp;your&amp;nbsp;static&amp;nbsp;IP&amp;nbsp;(도메인과&amp;nbsp;같게) &lt;br /&gt;Static IP: 3.36.218.***&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;393&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c5QBj2/btr2D5ka9JA/m6XOzrwLgbJS5x8ziKoXRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c5QBj2/btr2D5ka9JA/m6XOzrwLgbJS5x8ziKoXRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c5QBj2/btr2D5ka9JA/m6XOzrwLgbJS5x8ziKoXRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5QBj2%2Fbtr2D5ka9JA%2Fm6XOzrwLgbJS5x8ziKoXRk%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;1024&quot; height=&quot;393&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;393&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Create&amp;nbsp;a&amp;nbsp;DNS&amp;nbsp;Zone&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JTyWr/btr2vUYqNoH/6KgAJtZV0PWwJ9bHlA2DS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JTyWr/btr2vUYqNoH/6KgAJtZV0PWwJ9bHlA2DS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JTyWr/btr2vUYqNoH/6KgAJtZV0PWwJ9bHlA2DS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJTyWr%2Fbtr2vUYqNoH%2F6KgAJtZV0PWwJ9bHlA2DS0%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;608&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;683&quot; data-origin-height=&quot;519&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciubF1/btr2voeXSJU/d9QPEmLmVugQ9BlIxdjMXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciubF1/btr2voeXSJU/d9QPEmLmVugQ9BlIxdjMXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciubF1/btr2voeXSJU/d9QPEmLmVugQ9BlIxdjMXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciubF1%2Fbtr2voeXSJU%2Fd9QPEmLmVugQ9BlIxdjMXK%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;683&quot; height=&quot;519&quot; data-origin-width=&quot;683&quot; data-origin-height=&quot;519&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;679&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bw9WLD/btr2D0KNv43/10N61uHicCsStIGeZgVFD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bw9WLD/btr2D0KNv43/10N61uHicCsStIGeZgVFD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bw9WLD/btr2D0KNv43/10N61uHicCsStIGeZgVFD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbw9WLD%2Fbtr2D0KNv43%2F10N61uHicCsStIGeZgVFD1%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;932&quot; height=&quot;679&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;679&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Create static IP&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;745&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOiYsK/btr2sYmXYM0/iGIy69e8MZpDQpLOmD3sc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOiYsK/btr2sYmXYM0/iGIy69e8MZpDQpLOmD3sc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOiYsK/btr2sYmXYM0/iGIy69e8MZpDQpLOmD3sc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOiYsK%2Fbtr2sYmXYM0%2FiGIy69e8MZpDQpLOmD3sc1%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;1087&quot; height=&quot;745&quot; data-origin-width=&quot;1087&quot; data-origin-height=&quot;745&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;size14&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;i&gt;&quot;&quot;&quot; 여기까지 마쳤으면, 서버 설정을 위해 같은 계정 블로그 중 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;a style=&quot;color: #ee2323;&quot; href=&quot;https://parksrazor.tistory.com/879&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기&lt;/a&gt;를&lt;/span&gt; 가서 설정을 하고 옵니다. &quot;&quot;&quot;&lt;/i&gt;&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;760&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k0irW/btr2D0iWBve/AXkHEGdmzeIAqpZQdakvdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k0irW/btr2D0iWBve/AXkHEGdmzeIAqpZQdakvdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k0irW/btr2D0iWBve/AXkHEGdmzeIAqpZQdakvdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk0irW%2Fbtr2D0iWBve%2FAXkHEGdmzeIAqpZQdakvdK%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;760&quot; height=&quot;402&quot; data-origin-width=&quot;760&quot; data-origin-height=&quot;402&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;418&quot; data-origin-height=&quot;86&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I5oy4/btr2GuxVpVC/aEYAFO9Ycl6L2iEUXhneK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I5oy4/btr2GuxVpVC/aEYAFO9Ycl6L2iEUXhneK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I5oy4/btr2GuxVpVC/aEYAFO9Ycl6L2iEUXhneK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI5oy4%2Fbtr2GuxVpVC%2FaEYAFO9Ycl6L2iEUXhneK1%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;418&quot; height=&quot;86&quot; data-origin-width=&quot;418&quot; data-origin-height=&quot;86&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;732&quot; data-origin-height=&quot;286&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dBnZtu/btr2FdQGlrM/u62K8SbVTuqtpwC59cKszK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dBnZtu/btr2FdQGlrM/u62K8SbVTuqtpwC59cKszK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dBnZtu/btr2FdQGlrM/u62K8SbVTuqtpwC59cKszK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdBnZtu%2Fbtr2FdQGlrM%2Fu62K8SbVTuqtpwC59cKszK%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;732&quot; height=&quot;286&quot; data-origin-width=&quot;732&quot; data-origin-height=&quot;286&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;945&quot; data-origin-height=&quot;470&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Rq2gD/btr2DFfUqJn/bNSlUKC2MRkFdkANlowEIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Rq2gD/btr2DFfUqJn/bNSlUKC2MRkFdkANlowEIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Rq2gD/btr2DFfUqJn/bNSlUKC2MRkFdkANlowEIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRq2gD%2Fbtr2DFfUqJn%2FbNSlUKC2MRkFdkANlowEIk%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;945&quot; height=&quot;470&quot; data-origin-width=&quot;945&quot; data-origin-height=&quot;470&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://mobaxterm.mobatek.net/download.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://mobaxterm.mobatek.net/download.html&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1678251581055&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;MobaXterm free Xserver and tabbed SSH client for Windows&quot; data-og-description=&quot;The ultimate toolbox for remote computing - includes X server, enhanced SSH client and much more!&quot; data-og-host=&quot;mobaxterm.mobatek.net&quot; data-og-source-url=&quot;https://mobaxterm.mobatek.net/download.html&quot; data-og-url=&quot;https://mobaxterm.mobatek.net/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/T3Uyi/hyRSGtFsiI/kQgttvY6gM6kHArec0xF4K/img.png?width=764&amp;amp;height=489&amp;amp;face=0_0_764_489,https://scrap.kakaocdn.net/dn/bJ5dxI/hyRRJZPxfJ/sLhjCxtGUHEZKmy2YLZOUK/img.png?width=768&amp;amp;height=443&amp;amp;face=0_0_768_443,https://scrap.kakaocdn.net/dn/oTQDv/hyRSLaFStJ/VP1iR5bcnwRROeH0lqqv31/img.png?width=768&amp;amp;height=443&amp;amp;face=0_0_768_443&quot;&gt;&lt;a href=&quot;https://mobaxterm.mobatek.net/download.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://mobaxterm.mobatek.net/download.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/T3Uyi/hyRSGtFsiI/kQgttvY6gM6kHArec0xF4K/img.png?width=764&amp;amp;height=489&amp;amp;face=0_0_764_489,https://scrap.kakaocdn.net/dn/bJ5dxI/hyRRJZPxfJ/sLhjCxtGUHEZKmy2YLZOUK/img.png?width=768&amp;amp;height=443&amp;amp;face=0_0_768_443,https://scrap.kakaocdn.net/dn/oTQDv/hyRSLaFStJ/VP1iR5bcnwRROeH0lqqv31/img.png?width=768&amp;amp;height=443&amp;amp;face=0_0_768_443');&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;MobaXterm free Xserver and tabbed SSH client for Windows&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The ultimate toolbox for remote computing - includes X server, enhanced SSH client and much more!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;mobaxterm.mobatek.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 과정은 &lt;a href=&quot;https://wikidocs.net/177244&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;점프 투 Fast API&lt;/a&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;// SSH 연동 과정&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;주의요함을 제거하기 위해 아마존 라이트세일에 https 적용하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[&lt;a href=&quot;https://blog.projectdh.link/99&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;참조블로그&lt;/a&gt;] 보면 상세내용이 잘 설명되어 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 짧게 줄여서 명령어만 나열했습니다...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;SSL&amp;nbsp;인증서를&amp;nbsp;발급 &lt;br /&gt;sudo&amp;nbsp;apt&amp;nbsp;install&amp;nbsp;-y&amp;nbsp;certbot&amp;nbsp; &lt;br /&gt;sudo&amp;nbsp;apt&amp;nbsp;install&amp;nbsp;-y&amp;nbsp;python3-certbot-nginx &lt;br /&gt;sudo&amp;nbsp;certbot&amp;nbsp;--nginx&amp;nbsp;-d&amp;nbsp;fastcode.shop&amp;nbsp;--no-eff-email&amp;nbsp;--agree-tos&amp;nbsp;-m&amp;nbsp;seoul@fastcode.kr &lt;br /&gt;중간에&amp;nbsp;redirect를&amp;nbsp;할거냐&amp;nbsp;하면&amp;nbsp;2를&amp;nbsp;입력하시고&amp;nbsp;엔터 &lt;br /&gt;Congratulations!&amp;nbsp;Your&amp;nbsp;certificate&amp;nbsp;and&amp;nbsp;chain&amp;nbsp;have&amp;nbsp;been&amp;nbsp;saved&amp;nbsp;at:&amp;nbsp;이런&amp;nbsp;메세지가&amp;nbsp;보이면&amp;nbsp;인증서&amp;nbsp;발급 &lt;br /&gt;&amp;nbsp;인증서를&amp;nbsp;자동으로&amp;nbsp;연장시키는&amp;nbsp;방법 &lt;br /&gt;sudo&amp;nbsp;certbot&amp;nbsp;renew&amp;nbsp;--dry-run &lt;br /&gt;기다리면&amp;nbsp;보임&amp;nbsp;:&amp;nbsp;Congratulations,&amp;nbsp;all&amp;nbsp;renewals&amp;nbsp;succeeded.&amp;nbsp;The&amp;nbsp;following&amp;nbsp;certs&amp;nbsp;have&amp;nbsp;been&amp;nbsp;renewed&amp;nbsp; &lt;br /&gt;sudo&amp;nbsp;certbot&amp;nbsp;renew &lt;br /&gt;sudo&amp;nbsp;crontab&amp;nbsp;-e &lt;br /&gt;보임&amp;nbsp;:&amp;nbsp;select&amp;nbsp;an&amp;nbsp;editor &lt;br /&gt;2&amp;nbsp;vim&amp;nbsp;선택 &lt;br /&gt;제일&amp;nbsp;아래로&amp;nbsp;내려가서&amp;nbsp;아래와&amp;nbsp;같이&amp;nbsp;추가 &lt;br /&gt;0&amp;nbsp;0&amp;nbsp;*&amp;nbsp;*&amp;nbsp;*&amp;nbsp;certbot&amp;nbsp;renew&amp;nbsp;--pre-hook&amp;nbsp;&quot;systemctl&amp;nbsp;stop&amp;nbsp;nginx&quot;&amp;nbsp;--post-hook&amp;nbsp;&quot;systemctl&amp;nbsp;start&amp;nbsp;nginx&quot; &lt;br /&gt;esc&amp;nbsp;:wq! &lt;br /&gt;&lt;br /&gt;Reboot&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>7. 클라우드</category>
      <author>랩장 labzang</author>
      <guid isPermaLink="true">https://parksrazor.tistory.com/880</guid>
      <comments>https://parksrazor.tistory.com/880#entry880comment</comments>
      <pubDate>Tue, 7 Mar 2023 18:02:01 +0900</pubDate>
    </item>
  </channel>
</rss>