<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>코딩유치원</title>
    <link>https://coding-kindergarten.tistory.com/</link>
    <description>코딩에 코자도 모르는 비전공자 코린이들을 위한 코딩 블로그</description>
    <language>ko</language>
    <pubDate>Tue, 19 May 2026 12:15:23 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>손생</managingEditor>
    <image>
      <title>코딩유치원</title>
      <url>https://tistory1.daumcdn.net/tistory/4602888/attach/61ac3a5be5324269b357b7973c6b2652</url>
      <link>https://coding-kindergarten.tistory.com</link>
    </image>
    <item>
      <title>[라이선스] GPL-3.0</title>
      <link>https://coding-kindergarten.tistory.com/249</link>
      <description>&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;1. GPL-3.0 라이선스란?  &amp;nbsp;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPL-3.0(General Public License version 3.0)은 자유 소프트웨어 재단(FSF, Free Software Foundation)이 만든 오픈소스 라이선스입니다. 2007년에 발표되었으며, 기존 GPL-2.0의 한계를 보완하여 더욱 강력한 자유 소프트웨어 보호와 사용자의 권리 보장을 목표로 합니다.&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;DALL&amp;amp;middot;E 2025-02-06 22.13.45 - A cute and colorful illustration of an open-source software license concept. A friendly cartoon-style laptop with a smiling face holds a 'GPL-3.0' lic.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zxe7y/btsMaec4qjC/PGQAFifm5TUteeBLRshxO0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zxe7y/btsMaec4qjC/PGQAFifm5TUteeBLRshxO0/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zxe7y/btsMaec4qjC/PGQAFifm5TUteeBLRshxO0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fzxe7y%2FbtsMaec4qjC%2FPGQAFifm5TUteeBLRshxO0%2Fimg.webp&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;640&quot; height=&quot;640&quot; data-filename=&quot;DALL&amp;middot;E 2025-02-06 22.13.45 - A cute and colorful illustration of an open-source software license concept. A friendly cartoon-style laptop with a smiling face holds a 'GPL-3.0' lic.webp&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;2. GPL-3.0의 주요 특징&lt;/span&gt;&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1) 소스 코드 공개 의무&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPL-3.0 라이선스를 따르는 소프트웨어를 배포할 경우, 반드시 &lt;b&gt;소스 코드 전체를 공개&lt;/b&gt;해야 합니다.&lt;br /&gt;즉, 누구나 소프트웨어의 내부를 보고, 수정할 수 있습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2) 코드 수정 및 배포 허용&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;누구나 자유롭게 소프트웨어를 &lt;b&gt;수정하고, 변경된 버전을 배포할 수 있습니다.&lt;/b&gt;&lt;br /&gt;그러나 변경된 소프트웨어도 &lt;b&gt;GPL-3.0 라이선스를 유지해야 합니다.&lt;/b&gt; (즉, 폐쇄 소스로 만들 수 없음)&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3) 라이선스 전파성 (강력한 Copyleft)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPL-3.0 라이선스를 가진 소프트웨어를 활용해 만든 &lt;b&gt;모든 소프트웨어도 반드시 GPL-3.0을 따라야 합니다.&lt;/b&gt;&lt;br /&gt;(예: GPL-3.0 코드가 포함된 프로그램을 만들면, 그 프로그램도 GPL-3.0으로 배포해야 함)&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4) 특허 문제 해결&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPL-3.0은 &lt;b&gt;특허 소송을 방지&lt;/b&gt;하는 조항을 포함하고 있습니다.&lt;br /&gt;즉, 만약 소프트웨어를 이용하는 사람이 특허 관련 소송을 제기하면, 그는 해당 소프트웨어를 사용할 권리를 상실합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;5. Tivoization 방지&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일부 회사(예: TiVo)는 GPL 소프트웨어를 사용하면서도, 사용자가 시스템을 수정하지 못하도록 잠그는 방식을 사용했습니다. GPL-3.0에서는 이를 방지하기 위해 &lt;b&gt;소프트웨어를 실행하는 하드웨어도 개조할 수 있도록 허용해야 합니다.&lt;/b&gt;&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;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;3. GPL-3.0을 사용할 때 주의할 점 ⚠️ &lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  1. GPL-3.0 코드와 함께 폐쇄 소프트웨어를 만들 수 없음&lt;br /&gt;GPL-3.0 코드를 포함한 소프트웨어는 반드시 GPL-3.0을 따라야 합니다.&lt;br /&gt;즉, 기업이 독점적인 상용 소프트웨어를 만들 때 사용하기 어렵습니다.&lt;br /&gt;(예: 회사가 GPL-3.0 라이브러리를 사용하여 특정 소프트웨어를 만들었다면 그 소프트웨어는 소스 코드를 공개해야 함)&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;2. GPL-2.0과 호환되지 않음&lt;/b&gt;&lt;br /&gt;GPL-3.0은 GPL-2.0과 완전히 호환되지 않습니다.&lt;br /&gt;즉, GPL-2.0 소프트웨어와 혼합하여 사용할 경우 법적인 문제가 발생할 수 있습니다.&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;3. 배포할 경우 소스 코드 제공 필요&lt;/b&gt;&lt;br /&gt;소프트웨어를 배포할 때, 반드시 &lt;b&gt;소스 코드도 제공해야 합니다.&lt;/b&gt;&lt;br /&gt;웹 서비스(SaaS)는 GPL-3.0의 영향을 받지 않지만, 소프트웨어 형태로 배포하면 적용됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;4. GPL-3.0을 적용하면 좋은 경우   &lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;소프트웨어를 &lt;b&gt;완전한 오픈소스로 배포&lt;/b&gt;하고 싶을 때&lt;/li&gt;
&lt;li&gt;사람들이 자유롭게 &lt;b&gt;코드를 수정하고, 개선할 수 있도록 장려&lt;/b&gt;할 때&lt;/li&gt;
&lt;li&gt;독점 소프트웨어 회사들이 코드만 가져가고 기여하지 않는 것을 방지하고 싶을 때&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;5. GPL-3.0을 피해야 하는 경우 ❌&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;소프트웨어를 상업적으로 판매하려는 경우&lt;/b&gt;&lt;br /&gt;(소스 코드를 공개해야 하므로, 판매가 어렵거나 불가능해질 수 있음)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;GPL 라이선스가 부담스러운 경우&lt;/b&gt;&lt;br /&gt;(대체 라이선스인 &lt;b&gt;MIT, Apache, BSD&lt;/b&gt; 등을 고려 가능)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6. GPL-3.0 vs 기타 라이선스 비교&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라이선스소스 코드 공개 필요상업적 사용 가능폐쇄 소스 가능 여부특허 보호&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;GPL-3.0&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;✅ (필수)&lt;/td&gt;
&lt;td&gt;✅ (가능)&lt;/td&gt;
&lt;td&gt;❌ (불가능)&lt;/td&gt;
&lt;td&gt;✅ (보호)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;GPL-2.0&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;✅ (필수)&lt;/td&gt;
&lt;td&gt;✅ (가능)&lt;/td&gt;
&lt;td&gt;❌ (불가능)&lt;/td&gt;
&lt;td&gt;❌ (보호 없음)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;MIT&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;❌ (선택)&lt;/td&gt;
&lt;td&gt;✅ (가능)&lt;/td&gt;
&lt;td&gt;✅ (가능)&lt;/td&gt;
&lt;td&gt;❌ (보호 없음)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Apache 2.0&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;❌ (선택)&lt;/td&gt;
&lt;td&gt;✅ (가능)&lt;/td&gt;
&lt;td&gt;✅ (가능)&lt;/td&gt;
&lt;td&gt;✅ (보호)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;BSD&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;❌ (선택)&lt;/td&gt;
&lt;td&gt;✅ (가능)&lt;/td&gt;
&lt;td&gt;✅ (가능)&lt;/td&gt;
&lt;td&gt;❌ (보호 없음)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;7. 결론&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) GPL-3.0은 강력한 오픈소스 보호를 제공하는 라이선스입니다.&lt;br /&gt;2)&amp;nbsp; 그러나 라이선스 전파성이 강하기 때문에, 상업적으로 판매할 소프트웨어에는 적합하지 않을 수도 있습니다.&lt;br /&gt;3) 기업용 소프트웨어를 만든다면, MIT, Apache, BSD 등의 라이선스를 고려하는 것이 더 나을 수 있습니다.&lt;br /&gt;4)&amp;nbsp; 반면, 완전한 오픈소스를 목표로 한다면 GPL-3.0은 강력한 선택지가 될 수 있습니다.&lt;/p&gt;</description>
      <category>라이선스</category>
      <category>chatboxai 라이선스</category>
      <category>copyleft</category>
      <category>Freesoftware</category>
      <category>GPL3</category>
      <category>라이선스</category>
      <category>소스코드 공개</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/249</guid>
      <comments>https://coding-kindergarten.tistory.com/249#entry249comment</comments>
      <pubDate>Thu, 6 Feb 2025 22:14:08 +0900</pubDate>
    </item>
    <item>
      <title>[Python/GUI] CustomTkinter 위젯 총정리: 사용법과 예제 코드 한눈에 보기!</title>
      <link>https://coding-kindergarten.tistory.com/248</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfrLNr/btsL5iGh1Gm/p1aK0K6z8wKZ0BUSVkFPP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfrLNr/btsL5iGh1Gm/p1aK0K6z8wKZ0BUSVkFPP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfrLNr/btsL5iGh1Gm/p1aK0K6z8wKZ0BUSVkFPP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfrLNr%2FbtsL5iGh1Gm%2Fp1aK0K6z8wKZ0BUSVkFPP0%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;GUI(Graphical User Interface) 애플리케이션을 개발할 때, Python의 기본 GUI 라이브러리인 &lt;/span&gt;&lt;span&gt;&lt;b&gt;Tkinter&lt;/b&gt;&lt;/span&gt;&lt;span&gt;를 많이 사용합니다. 하지만 Tkinter의 기본 스타일은 오래되어 모던한 디자인을 적용하기 어렵습니다. 이를 보완하기 위해 등장한 것이 &lt;/span&gt;&lt;span&gt;&lt;b&gt;CustomTkinter&lt;/b&gt;&lt;/span&gt;&lt;span&gt;입니다!&lt;/span&gt;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;CustomTkinter는 Tkinter를 기반으로 하면서도 &lt;/span&gt;&lt;span&gt;&lt;b&gt;더 세련된 디자인과 다크 모드 지원, 커스텀 스타일 적용&lt;/b&gt;&lt;/span&gt;&lt;span&gt;이 가능한 강력한 GUI 라이브러리입니다. 특히, 기본적으로 반응형 UI 요소를 제공하여 더욱 깔끔하고 현대적인 인터페이스를 구현할 수 있습니다.&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;span&gt;이 글에서는 지난 글에서 다루었던 CustomTkinter 기초에 이어서 &lt;/span&gt;&lt;span&gt;&lt;b&gt;CustomTkinter의 다양한 위젯을 소개하고, 각 위젯을 어떻게 사용할 수 있는지 코드 예제와 함께 설명&lt;/b&gt;&lt;/span&gt;&lt;span&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;span&gt;아래는 CustomTkinter에서 제공하는 주요 위젯들을 한 번에 보여주는 코드입니다. 이 후 각 위젯을 개별적으로 설명하겠습니다.&lt;/span&gt;&lt;span&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;span&gt;[코드]&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import customtkinter as ctk

# CustomTkinter 설정
ctk.set_appearance_mode(&quot;Dark&quot;)
ctk.set_default_color_theme(&quot;blue&quot;)

# 메인 윈도우 생성
root = ctk.CTk()
root.geometry(&quot;600x800&quot;)
root.title(&quot;CustomTkinter 위젯 예제&quot;)

# Switch 위젯 (모드 토글)
def toggle_mode():
    if ctk.get_appearance_mode() == &quot;Dark&quot;:
        ctk.set_appearance_mode(&quot;Light&quot;)

    else:
        ctk.set_appearance_mode(&quot;Dark&quot;)

mode_toggle = ctk.CTkSwitch(root, text=&quot;모드 변경&quot;, command=toggle_mode)
mode_toggle.pack(pady=10, anchor=&quot;se&quot;, padx=10)

# Entry 위젯
entry = ctk.CTkEntry(root, placeholder_text=&quot;이름을 입력하세요&quot;)
entry.pack(pady=10)

# Slider 위젯 (라벨 위젯으로 슬라이더 값 표시)
label = ctk.CTkLabel(root, text=&quot;슬라이더 값: &quot;)
label.pack(pady=10)

def slider_event(value):
    label.configure(text=f&quot;슬라이더 값: {int(value)}&quot;)

slider = ctk.CTkSlider(root, from_=0, to=100, command=slider_event)
slider.pack(pady=10)

# CheckBox 위젯
checkbox = ctk.CTkCheckBox(root, text=&quot;동의합니다&quot;)
checkbox.pack(pady=10)

# RadioButton 위젯
radio_var = ctk.StringVar(value=&quot;옵션1&quot;)
radiobutton1 = ctk.CTkRadioButton(root, text=&quot;옵션 1&quot;, variable=radio_var, value=&quot;옵션1&quot;)
radiobutton2 = ctk.CTkRadioButton(root, text=&quot;옵션 2&quot;, variable=radio_var, value=&quot;옵션2&quot;)
radiobutton1.pack()
radiobutton2.pack()

# ComboBox 위젯
combobox = ctk.CTkComboBox(root, values=[&quot;선택 1&quot;, &quot;선택 2&quot;, &quot;선택 3&quot;])
combobox.pack(pady=10)

# ProgressBar 위젯
progressbar = ctk.CTkProgressBar(root)
progressbar.pack(pady=10)
progressbar.set(0.5)  # 50% 진행 상태

# TabView 위젯
tabview = ctk.CTkTabview(root)
tabview.pack(pady=10)

# 탭 추가
tab1 = tabview.add(&quot;탭 1&quot;)
tab2 = tabview.add(&quot;탭 2&quot;)

# 각 탭에 내용 추가
ctk.CTkLabel(tab1, text=&quot;탭 1의 내용입니다&quot;).pack(pady=10)
ctk.CTkLabel(tab2, text=&quot;탭 2의 내용입니다&quot;).pack(pady=10) 

# ScrollableFrame 위젯
scrollable_frame = ctk.CTkScrollableFrame(root, width=300, height=150)
scrollable_frame.pack(pady=10)
for i in range(10):
    ctk.CTkLabel(scrollable_frame, text=f&quot;항목 {i+1}&quot;).pack()

# 실행
root.mainloop()&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;[결과]&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;902&quot; data-origin-height=&quot;1246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ow916/btsL5CkfbBe/RKvv92xtelLAXRq3wfiGJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ow916/btsL5CkfbBe/RKvv92xtelLAXRq3wfiGJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ow916/btsL5CkfbBe/RKvv92xtelLAXRq3wfiGJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fow916%2FbtsL5CkfbBe%2FRKvv92xtelLAXRq3wfiGJK%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;600&quot; height=&quot;829&quot; data-origin-width=&quot;902&quot; data-origin-height=&quot;1246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;1. &lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;Switch 위젯&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전환 가능한 스위치 버튼으로, ON/OFF 상태를 가집니다. CTkSwitch( ) 클래스를 이용해서 추가 가능하며, 이 스위치를 조작했을 때, 다크/라이트 모드가 변경되도록 함수를 정의하고 스위치 클래스와 연결해 보았습니다.&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;참고로 스위치는 pack( ) 메소드의 anchor 파라미터를 &quot;e&quot;로 설정해서 우측에 위치하도록 하였습니다.&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;span style=&quot;color: #000000;&quot;&gt;&quot;n&quot;&lt;/span&gt;: north (위) / &lt;span style=&quot;color: #000000;&quot;&gt;&quot;s&quot;&lt;/span&gt;: south (아래) / &lt;span style=&quot;color: #000000;&quot;&gt;&quot;e&quot;&lt;/span&gt;: east (오른쪽) / &lt;span style=&quot;color: #000000;&quot;&gt;&quot;w&quot;&lt;/span&gt;: west (왼쪽)&amp;nbsp; --&amp;gt; 조합도 가능 (ex. &quot;ne&quot;)&lt;/li&gt;
&lt;/ul&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;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&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;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&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;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&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;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;# Switch 위젯 (모드 토글)
def toggle_mode():
    if ctk.get_appearance_mode() == &quot;Dark&quot;:
        ctk.set_appearance_mode(&quot;Light&quot;)

    else:
        ctk.set_appearance_mode(&quot;Dark&quot;)

mode_toggle = ctk.CTkSwitch(root, text=&quot;모드 변경&quot;, command=toggle_mode)
mode_toggle.pack(pady=10, anchor=&quot;ne&quot;, padx=10)&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;[결과]&lt;/p&gt;
&lt;figure data-ke-type=&quot;image&quot; data-ke-style=&quot;alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;span&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Switch.gif&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;1248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyRqvc/btsL4oHmomO/5YUlMIbhtB2Czwkb7Or020/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyRqvc/btsL4oHmomO/5YUlMIbhtB2Czwkb7Or020/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyRqvc/btsL4oHmomO/5YUlMIbhtB2Czwkb7Or020/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/cyRqvc/btsL4oHmomO/5YUlMIbhtB2Czwkb7Or020/img.gif&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;600&quot; height=&quot;1248&quot; data-filename=&quot;Switch.gif&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;1248&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;2. Entry 위젯&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Entry 위젯은 사용자가 텍스트를 입력할 수 있는 입력 필드입니다. Entry라는 용어가 익숙하지 않으신 분들은 Input 위젯이라고 생각하시면 되겠습니다. 이번 시간에는 입력 받은 값을 어떻게 사용하는지는 다루지 않고 이런 위젯이 있다는 것만 언급하고 넘어가도록 하겠습니다.&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;pre class=&quot;routeros&quot;&gt;&lt;code&gt;entry = ctk.CTkEntry(root, placeholder_text=&quot;이름을 입력하세요&quot;)
entry.pack(pady=10)&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;[결과]&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Entry.gif&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNNKbz/btsL5liL2tk/cmX8FTClChKGf9khzpoYg1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNNKbz/btsL5liL2tk/cmX8FTClChKGf9khzpoYg1/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNNKbz/btsL5liL2tk/cmX8FTClChKGf9khzpoYg1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bNNKbz/btsL5liL2tk/cmX8FTClChKGf9khzpoYg1/img.gif&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;300&quot; height=&quot;111&quot; data-filename=&quot;Entry.gif&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;111&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;3. Slider 위젯&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;사용자가 드래그하여 값을 조정할 수 있는 슬라이더입니다. 슬라이더가 조정될 때 변하는 값을 관찰하기 위해서 지난 시간에 배웠던 Label 위젯을 먼저 추가해주었습니다. slider_event 함수는 CTkSlider의 값을 받아서 그 값을 포함한 Label을 출력해주도록 정의하였습니다.&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;CTkSlider는 &quot;from_&quot; 과 &quot;to&quot; 파라미터로 시작과 끝 값을 지정해주며, command 파라미터의 인자로 위에서 정의한 slider_event 함수를 입력해주었습니다.&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;여기서 slider_event의 파라미터인 value는 어떻게 입력되는지 잘 이해가 되지 않아서 찾아보니, 슬라이더의 현재 값이 자동으로 command 파라미터로 지정된 함수(slider_event)로 입력된다고 합니다.&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;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;# Slider 위젯 (라벨 위젯으로 슬라이더 값 표시)
label = ctk.CTkLabel(root, text=&quot;슬라이더 값: &quot;)
label.pack(pady=10)

def slider_event(value):
    label.configure(text=f&quot;슬라이더 값: {int(value)}&quot;)

slider = ctk.CTkSlider(root, from_=0, to=100, command=slider_event)
slider.pack(pady=10)&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;&lt;span&gt;[결과]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;slider.gif&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lH7BK/btsL36mHo4Y/0f5kioHRShY3bCDOPlC5Tk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lH7BK/btsL36mHo4Y/0f5kioHRShY3bCDOPlC5Tk/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lH7BK/btsL36mHo4Y/0f5kioHRShY3bCDOPlC5Tk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/lH7BK/btsL36mHo4Y/0f5kioHRShY3bCDOPlC5Tk/img.gif&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;300&quot; height=&quot;140&quot; data-filename=&quot;slider.gif&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;140&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;4. CheckBox 위젯&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;사용자가 체크할 수 있는 체크박스입니다. 체크 박스 옆의 메시지를 &quot;text&quot; 파라미터로 설정할 수 있습니다.&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;span&gt;[코드]&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;checkbox = ctk.CTkCheckBox(root, text=&quot;동의합니다&quot;)
checkbox.pack(pady=10)&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;&lt;span&gt;[결과]&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;position: absolute;&quot; 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-filename=&quot;Checkbox.gif&quot; data-origin-width=&quot;246&quot; data-origin-height=&quot;64&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEOc1V/btsL4b9dWYD/ZWoKcFCULRXv6GekU4VeDk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEOc1V/btsL4b9dWYD/ZWoKcFCULRXv6GekU4VeDk/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEOc1V/btsL4b9dWYD/ZWoKcFCULRXv6GekU4VeDk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bEOc1V/btsL4b9dWYD/ZWoKcFCULRXv6GekU4VeDk/img.gif&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;170&quot; height=&quot;44&quot; data-filename=&quot;Checkbox.gif&quot; data-origin-width=&quot;246&quot; data-origin-height=&quot;64&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;5. RadioButton 위젯&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;여러 개의 옵션 중 하나를 선택할 수 있는 버튼입니다. radio_var이란 변수를 설정해주고, 그 값을 CTkRadioButton( )의 variable 파라미터의 인자로 넣어주는 이유는 옵션을 선택했을 때 그 옵션의 &quot;value&quot;를 저장하기 위함입니다. 이 값을 다른 코드에서 입력으로 받아서 사용할 수 있도록 말입니다. 참고로 value는 문자열이 아니라 숫자도 가능합니다.&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;span&gt;[코드]&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;radio_var = ctk.StringVar(value=&quot;옵션1&quot;)
radiobutton1 = ctk.CTkRadioButton(root, text=&quot;옵션 1&quot;, variable=radio_var, value=&quot;옵션1&quot;)
radiobutton2 = ctk.CTkRadioButton(root, text=&quot;옵션 2&quot;, variable=radio_var, value=&quot;옵션2&quot;)
radiobutton1.pack()
radiobutton2.pack()&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;[결과]&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;RadioButton.gif&quot; data-origin-width=&quot;246&quot; data-origin-height=&quot;86&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FyoYn/btsL5QimWfd/dk0a2PIlxcFNy8x0PZfu0k/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FyoYn/btsL5QimWfd/dk0a2PIlxcFNy8x0PZfu0k/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FyoYn/btsL5QimWfd/dk0a2PIlxcFNy8x0PZfu0k/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/FyoYn/btsL5QimWfd/dk0a2PIlxcFNy8x0PZfu0k/img.gif&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;180&quot; height=&quot;63&quot; data-filename=&quot;RadioButton.gif&quot; data-origin-width=&quot;246&quot; data-origin-height=&quot;86&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;6. ComboBox 위젯&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;드롭다운 목록을 통해 값을 선택할 수 있는 콤보박스입니다. values 파라미터에 선택지를 리스트 타입으로 입력합니다.&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;span&gt;[코드]&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;combobox = ctk.CTkComboBox(root, values=[&quot;선택 1&quot;, &quot;선택 2&quot;, &quot;선택 3&quot;])
combobox.pack(pady=10)&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;&lt;span&gt;[결과]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ComboBox.gif&quot; data-origin-width=&quot;341&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lIlLD/btsL5liL4Sx/AChUpfJGKowgYI56BFMTHk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lIlLD/btsL5liL4Sx/AChUpfJGKowgYI56BFMTHk/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lIlLD/btsL5liL4Sx/AChUpfJGKowgYI56BFMTHk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/lIlLD/btsL5liL4Sx/AChUpfJGKowgYI56BFMTHk/img.gif&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;250&quot; height=&quot;202&quot; data-filename=&quot;ComboBox.gif&quot; data-origin-width=&quot;341&quot; data-origin-height=&quot;202&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;h3 data-ke-type=&quot;image&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;7. ProgressBar 위젯&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;진행 상태를 표시하는 프로그레스 바입니다. 프로그레스 바는 무언가 진행되는 정도를 보여주기 위한 위젯이기 때문에 해당 위젯 이외에 프로그레스 바의 수치를 10초간 10%씩 증가시키는 update_progress( ) 함수와 해당 함수를 실행하기 위한 버튼을 추가해주었습니다.&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;여기서 조금 어려운 포인트는 lambda 함수를 사용해 준 부분입니다. 여기서 lambda 함수를 써준 이유는 버튼 한 번의 클릭으로 두 가지 기능을 수행하기 위함입니다. progressbar.set(0)로 프로그레스 바의 값을 0으로 초기화 해준 다음 update_progress( ) 함수를 수행하게 됩니다.&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;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;# ProgressBar 위젯
progressbar = ctk.CTkProgressBar(root)
progressbar.pack(pady=10)
progressbar.set(0)  # 초기값 0%

def update_progress():
    current_value = progressbar.get()
    if current_value &amp;lt; 1.0:
        progressbar.set(current_value + 0.1)  # 10% 증가
        root.after(1000, update_progress)  # 1초 후 다시 실행

# 실행 버튼
start_button = ctk.CTkButton(root, text=&quot;실행&quot;, command=lambda: [progressbar.set(0), update_progress()])
start_button.pack(pady=10)&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;&lt;span&gt;[결과]&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;progressbar.gif&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9V17L/btsL4QQTYcs/IadQMiEWjpLlQp8VLq6Ek1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9V17L/btsL4QQTYcs/IadQMiEWjpLlQp8VLq6Ek1/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9V17L/btsL4QQTYcs/IadQMiEWjpLlQp8VLq6Ek1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/b9V17L/btsL4QQTYcs/IadQMiEWjpLlQp8VLq6Ek1/img.gif&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;300&quot; height=&quot;140&quot; data-filename=&quot;progressbar.gif&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;140&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;8. TabView 위젯&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;여러 개의 탭을 포함하여 다양한 화면을 제공하는 위젯입니다. 먼저 CTkTabview( ) 클래스로 TabView 위젯을 하나 생성합니다. 메인 윈도우창인 root만 인자로 입력 받네요. 바로 이어서 방금 생성한 tabview 객체에 add( ) 메소드를 활용하여 &quot;탭 1&quot;과 &quot;탭 2&quot;를 생성해줍니다.&lt;br /&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;span&gt;여기까지가 TabView 위젯을 생성하는 것이고, 다음 코드는 생성한 탭 안에 라벨 위젯을 넣는 코드입니다. 익숙한 코드인데 조금 다른 점은 pack( ) 메소드를 곧바로 붙여서 작성했다는 것과, 첫번째 인자를 root가 아니라 tab1과 tab2로 입력해주었다는 것입니다.&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;span&gt;[코드]&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;# TabView 위젯
tabview = ctk.CTkTabview(root)
tabview.pack(pady=10)

# 탭 추가
tab1 = tabview.add(&quot;탭 1&quot;)
tab2 = tabview.add(&quot;탭 2&quot;)

# 각 탭에 내용 추가
ctk.CTkLabel(tab1, text=&quot;탭 1의 내용입니다&quot;).pack(pady=10)
ctk.CTkLabel(tab2, text=&quot;탭 2의 내용입니다&quot;).pack(pady=10)&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;[결과]&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;TabView.gif&quot; data-origin-width=&quot;471&quot; data-origin-height=&quot;372&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEyI4K/btsL31sgBE1/0DWznYkORoHseWhKiQNL10/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEyI4K/btsL31sgBE1/0DWznYkORoHseWhKiQNL10/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEyI4K/btsL31sgBE1/0DWznYkORoHseWhKiQNL10/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bEyI4K/btsL31sgBE1/0DWznYkORoHseWhKiQNL10/img.gif&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;350&quot; height=&quot;372&quot; data-filename=&quot;TabView.gif&quot; data-origin-width=&quot;471&quot; data-origin-height=&quot;372&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;9. ScrollableFrame 위젯&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;스크롤 가능한 프레임으로, 많은 항목을 표시할 때 유용합니다. CTkScrollableFrame( ) 클래스는 width와 height 파라미터에 정수형 자료를 입력해서 크기를 조절할 수 있습니다. 그리고 그 안에 내용을 넣을 때는 위에서 탭에 내용을 추가 했을 때 처럼 Label 위젯의 첫번째 인자를 root가 아닌 방금 생성한 scrollable_frame 객체로 해주면 됩니다.&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;span&gt;[코드]&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;scrollable_frame = ctk.CTkScrollableFrame(root, width=300, height=150)
scrollable_frame.pack(pady=10)
for i in range(10):
    ctk.CTkLabel(scrollable_frame, text=f&quot;항목 {i+1}&quot;).pack()&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;[결과]&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;ScrollableFrame.gif&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;207&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3QknW/btsL4YVEV18/4JKxj07smyTyXL1F70B6hk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3QknW/btsL4YVEV18/4JKxj07smyTyXL1F70B6hk/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3QknW/btsL4YVEV18/4JKxj07smyTyXL1F70B6hk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/3QknW/btsL4YVEV18/4JKxj07smyTyXL1F70B6hk/img.gif&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;350&quot; height=&quot;144&quot; data-filename=&quot;ScrollableFrame.gif&quot; data-origin-width=&quot;502&quot; data-origin-height=&quot;207&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;p data-ke-size=&quot;size16&quot;&gt;이번 글에서는 CustomTkinter의 다양한 위젯들을 살펴보며 각각의 기능과 사용법을 익혔습니다. 이제 기본적인 위젯 사용법을 이해했으니, 다음 글에서는 &lt;b&gt;간단한 프로젝트를 통해 실제로 GUI 프로그램을 어떻게 활용할 수 있는지&lt;/b&gt; 알아보겠습니다. CustomTkinter를 사용하여 실용적인 애플리케이션을 만들고, 이를 통해 GUI 개발의 흐름과 응용 방법을 배워보도록 하겠습니다.&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>파이썬 패키지/GUI 프로그램</category>
      <category>customtkinter</category>
      <category>customtkinter 위젯</category>
      <category>PyQt</category>
      <category>pyQT5</category>
      <category>pyside</category>
      <category>python GUI</category>
      <category>PythonGUI</category>
      <category>TKinter</category>
      <category>tkinter 대체</category>
      <category>가벼운 gui</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/248</guid>
      <comments>https://coding-kindergarten.tistory.com/248#entry248comment</comments>
      <pubDate>Sun, 2 Feb 2025 18:46:08 +0900</pubDate>
    </item>
    <item>
      <title>[Python/GUI] 파이썬 GUI 초보도 쉽게! CustomTkinter로 깔끔한 UI 만들기(feat.다크 모드 지원)</title>
      <link>https://coding-kindergarten.tistory.com/247</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHrQS4/btsL5kD4Xnt/XeBwa2vv9XEo5yahtCheK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHrQS4/btsL5kD4Xnt/XeBwa2vv9XEo5yahtCheK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHrQS4/btsL5kD4Xnt/XeBwa2vv9XEo5yahtCheK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHrQS4%2FbtsL5kD4Xnt%2FXeBwa2vv9XEo5yahtCheK0%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 우리가 .py 파일에 작성한 코드를 GUI(Graphical User Interface)를 기반으로 사용자 입력을 받아서 실행시킬 수 있는 방법에 대해서 알아보겠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;예전 글에서는 PyQT에 대해서 주로 다루었습니다. 하지만 PyQT의 경우 기능이 많고 예쁜 GUI를 만들 수 있다는 장점이 있는 반면 라이브러리가 무거워서 불필요하게 프로그램 사이즈가 커지는 경우가 자주 발생했습니다. 비유를 들자면 아주 간단한 과자를 주문했는데 그걸 포장한 박스가 아주 비싸고 화려하고 무거운 느낌이랄까요?&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그래서 이번 시간에는 파이썬에서 기본적으로 제공하지만 너무 못 생겨서 잘 사용하지 않는 Tkinter를 쓸만 할 정도로 예쁘게 만든 CustomTkinter에 대해서 알아보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;1. CustomTkinter란?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;CustomTkinter는 Tkinter의 확장 버전으로, 보다 현대적인 UI 디자인을 쉽게 적용할 수 있도록 만들어진 GUI 라이브러리입니다. 기존 Tkinter의 제한적인 디자인을 보완하며, 다크 모드 및 다양한 색상 테마를 지원합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이 글에서는 CustomTkinter의 주요 기능, 장점과 단점, 그리고 간단한 사용법을 소개합니다.&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;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;2. CustomTkinter의 장점과 단점&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;&lt;b&gt;[장점]&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;1) &lt;/span&gt;&lt;span&gt;&lt;b&gt;모던한 UI 디자인&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 기존 Tkinter보다 세련된 스타일을 제공하며, 기본적으로 다크 모드를 지원합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;2) &lt;/span&gt;&lt;span&gt;&lt;b&gt;Tkinter와의 높은 호환성&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 기존 Tkinter 코드와 호환되며, 추가적인 스타일링 기능을 제공합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;3) &lt;/span&gt;&lt;span&gt;&lt;b&gt;간단한 코드 작성&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 보다 직관적인 API를 제공하여 코드 작성을 단순화합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;4) &lt;/span&gt;&lt;span&gt;&lt;b&gt;다크 모드 및 테마 지원&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 애플리케이션의 전체적인 색상 테마를 쉽게 조정할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;5) &lt;/span&gt;&lt;span&gt;&lt;b&gt;크로스 플랫폼 지원&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: Windows, Mac, Linux에서 원활하게 작동합니다.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;[단점]&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;1) &lt;/span&gt;&lt;span&gt;&lt;b&gt;Tkinter의 한계를 가짐&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: Tkinter 기반이므로 PyQt나 PySide 같은 고급 GUI 프레임워크보다는 기능이 제한적입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;2) &lt;/span&gt;&lt;span&gt;&lt;b&gt;커뮤니티 자료가 적음&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 비교적 새로운 라이브러리라 CustomTkinter에 대한 예제나 문서가 많지 않습니다.&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;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;3. CustomTkinter 설치&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널(또는 명령 프롬프트)에서 아래 명령어를 실행하세요.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1738472298596&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install customtkinter&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&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;style6&quot; /&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;4. CustomTkinter 간단한 사용법&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;CustomTkinter는 Tkinter와 유사하지만 보다 현대적인 UI 디자인을 쉽게 적용할 수 있습니다. 이번 시간에는 아주 간단히 CustomTkinter 창을 띄우고 라벨과 버튼 하나씩을 창에 추가하는 코드로 CustomTkinter와 친해져보는 시간을 가져보겠습니다.&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;span&gt;[코드]&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738471250616&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import customtkinter as ctk

# 1) 기본 설정
ctk.set_appearance_mode(&quot;Light&quot;)  # 창 모드 설정 (System, Light, Dark)
ctk.set_default_color_theme(&quot;blue&quot;)  # UI 테마 설정 (blue, dark-blue, green)

# 2) 메인 윈도우 생성
root = ctk.CTk()
root.geometry(&quot;400x300&quot;)
root.title(&quot;CustomTkinter 예제&quot;)

# 3) 라벨 추가
label = ctk.CTkLabel(root, text=&quot;Hello, CustomTkinter!&quot;, font=(&quot;Arial&quot;, 20))
label.pack(pady=20)

# 4) 버튼 추가
def on_click():
    label.configure(text=&quot;버튼이 클릭됨!&quot;)

button = ctk.CTkButton(root, text=&quot;클릭하세요&quot;, command=on_click)
button.pack(pady=10)

# 5) 실행
root.mainloop()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1) 기본 설정&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[코드]&lt;/p&gt;
&lt;pre id=&quot;code_1738472235587&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 기본 설정
ctk.set_appearance_mode(&quot;Dark&quot;)  # 다크 모드 설정 (System, Light, Dark)
ctk.set_default_color_theme(&quot;green&quot;)  # 테마 설정 (blue, dark-blue, green)&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;CustomTkinter는 3가지 창 모드와 3가지 UI 색상 테마를 설정할 수 있습니다.&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;창 모드는 set_appearance_mode( ) 클래스로 설정 가능하며, &quot;System&quot;, &quot;Light&quot;, &quot;Dark&quot; 모드를 괄호 안에 넣어서 설정 가능합니다. 여기서 &quot;System&quot; 모드는 사용자의 운영체제(OS) 설정에 따라서 자동으로 다크 또는 라이트 모드가 적용되는 모드입니다.&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;span style=&quot;color: #333333; text-align: start;&quot;&gt;&quot;blue&quot;, &quot;dark-blue&quot;, &quot;green&quot; 모드를 괄호 안에 넣어서 설정 가능합니다. 개인적인 취향이지만 저는 &quot;green&quot;은 별로라서 안쓸 것 같네요.&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-origin-width=&quot;1266&quot; data-origin-height=&quot;880&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3Kxfm/btsL5DDq3ac/409CdKMQjZPPPaMsPtfs6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3Kxfm/btsL5DDq3ac/409CdKMQjZPPPaMsPtfs6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3Kxfm/btsL5DDq3ac/409CdKMQjZPPPaMsPtfs6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3Kxfm%2FbtsL5DDq3ac%2F409CdKMQjZPPPaMsPtfs6K%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;1266&quot; height=&quot;880&quot; data-origin-width=&quot;1266&quot; data-origin-height=&quot;880&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;h4 data-ke-size=&quot;size20&quot;&gt;2) 메인 윈도우 생성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[코드]&lt;/p&gt;
&lt;pre id=&quot;code_1738472379797&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 메인 윈도우 생성
root = ctk.CTk()
root.geometry(&quot;400x300&quot;)
root.title(&quot;CustomTkinter 예제&quot;)&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;메인 윈도우 생성은 CTk( ) 클래스를 이용합니다. 보통 GUI 프로그래밍을 할 때, 관례적으로 메인창을 나타내는 변수명은 'root'로 지어줍니다.&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;창 크기는 geometry( ) 메소드의 괄호 안에 &quot;가로x세로&quot;를 입력함으로써 설정 가능하며, 창의 타이틀은 title( ) 메소드의 괄호 안에 &quot;원하는 타이틀&quot;을 문자열로 입력함으로써 설정 가능합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1031&quot; data-origin-height=&quot;785&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KILwv/btsL35VyAW5/iiOPmHpMFKHH5DJdAdKTj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KILwv/btsL35VyAW5/iiOPmHpMFKHH5DJdAdKTj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KILwv/btsL35VyAW5/iiOPmHpMFKHH5DJdAdKTj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKILwv%2FbtsL35VyAW5%2FiiOPmHpMFKHH5DJdAdKTj0%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;500&quot; height=&quot;381&quot; data-origin-width=&quot;1031&quot; data-origin-height=&quot;785&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;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;3) 라벨 추가&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[코드]&lt;/p&gt;
&lt;pre id=&quot;code_1738472920915&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 라벨 추가
label = ctk.CTkLabel(root, text=&quot;Hello, CustomTkinter!&quot;, font=(&quot;Arial&quot;, 20))
label.pack(pady=20) # pady: 위아래 여백&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; GUI 프로그래밍에서는 창 존재하는 텍스트를 &quot;Label&quot;이라고 부르는 편입니다. CTkLabel( ) 클래스를 이용하며 괄호 안에 들어가는 이번 시간에는 3가지만 알아보겠습니다.&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;버튼, 라벨 등의 위젯(Widget) 관련 클래스는 모두 가장 처음 root를 입력 받습니다. 가장 기본이 되는 규칙이니 기억해주세요. 다음은 라벨의 내용을 text 파라미터에 문자열로 입력해주었으며, 폰트의 글꼴과 사이즈를 튜플 형태로 입력해주었습니다.&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;pack( ) 메소드의 pady 파라미터를 통해서 텍스트의 위아래 여백도 넣어주었습니다. pack 메소드는 위젯을 창에 배치하는 역할로 넣어주지 않으면 안되는 코드입니다. 항상 어떤 위젯이든지 넣어준다고 생각하면 되겠습니다.&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;이 외에도 폰트 색상, 텍스트 배경 색상, 텍스트 상자의 크기, 그에 따른 자동 줄바꿈 설정까지 존재하지만, 아마도 이 CustomTkinter를 사용하는 이유가 심플하게 GUI를 구현하는 것이라서 큰 의미는 없을 것이라 생각되네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;4) 버튼 추가&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;[코드]&lt;/p&gt;
&lt;pre id=&quot;code_1738473699510&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 버튼 추가
def on_click():
    label.configure(text=&quot;버튼이 클릭됨!&quot;)

button = ctk.CTkButton(root, text=&quot;클릭하세요&quot;, command=on_click)
button.pack(pady=10)&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;버튼을 추가하기 전에, 버튼을 눌렀을 때 실행되기 원하는 함수를 정의해주어야 합니다. on_click( )이라는 함수를 정의해주었고 그 기능은 위에서 만들어 주었던 label의 텍스트를 &quot;버튼이 클릭됨!&quot;으로 수정해주는 것입니다.&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;함수를 정의해주었으니 이제 버튼을 추가해보겠습니다. 버튼 추가 역시 라벨을 추가했을 때와 거의 동일합니다. CTkButton( ) 클래스로 추가해주며, 필수 요소인 root를 첫번째 인자로 넣어주고 그 다음 버튼을 나타낼 텍스트, 버튼을 눌렀을 때 실행될 함수명을 입력해줍니다. 마지막으로는 라벨 때와 마찬가지로 pack( )을 메소드로 버튼을 창에 배치해줍니다.&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;버튼을 클릭하니까 위에 있던 라벨이 &quot;버튼이 클릭됨!&quot;으로 변경된 것이 보이시나요?&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-origin-width=&quot;680&quot; data-origin-height=&quot;560&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kIVZ2/btsL36fO9Sw/f9vDZvnv8KYQQk4jWNaAOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kIVZ2/btsL36fO9Sw/f9vDZvnv8KYQQk4jWNaAOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kIVZ2/btsL36fO9Sw/f9vDZvnv8KYQQk4jWNaAOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkIVZ2%2FbtsL36fO9Sw%2Ff9vDZvnv8KYQQk4jWNaAOK%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;400&quot; height=&quot;329&quot; data-origin-width=&quot;680&quot; data-origin-height=&quot;560&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;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;5) 버튼 추가&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;[코드]&lt;/p&gt;
&lt;pre id=&quot;code_1738474501247&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 실행
root.mainloop()&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;매우 간단하지만 코드지만 이 코드 한줄이 없으면 GUI 창이 열렸다가 바로 꺼질 정도로 필수적인 코드입니다. 참고로 mainloop()는 GUI 프로그램이 실행되는 동안 계속 동작하면서 &lt;b&gt;사용자의 입력(클릭, 키보드 입력 등)을 감지하고 처리하는 역할&lt;/b&gt;을 합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;span&gt;&lt;b&gt;5. CustomTkinter 위젯 종류들&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;CustomTkinter에는 위에서 소개드린 위젯 (라벨, 버튼) 외에 여러가지 위젯들이 존재합니다. 이러한 위젯들을 활용하면 프로그램 실행에 필요한 변수들을 사용자가 쉽게 조정 가능하죠. 추가적인 위젯들에 대한 내용은 다음 글에서 소개드리도록 하겠습니다.&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;1080&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOYc0a/btsL5OLAPRk/iqCCRke2I7aZrK6hHqQoik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOYc0a/btsL5OLAPRk/iqCCRke2I7aZrK6hHqQoik/img.png&quot; data-alt=&quot;CustomTkinter 위젯들&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOYc0a/btsL5OLAPRk/iqCCRke2I7aZrK6hHqQoik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOYc0a%2FbtsL5OLAPRk%2FiqCCRke2I7aZrK6hHqQoik%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;700&quot; height=&quot;294&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;454&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;CustomTkinter 위젯들&lt;/figcaption&gt;
&lt;/figure&gt;
&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;size16&quot;&gt;오늘 준비한 내용은 여기까지입니다. 다음에도 코딩유치원을 찾아주세요~&lt;/p&gt;</description>
      <category>파이썬 패키지/GUI 프로그램</category>
      <category>customtkinter</category>
      <category>PyQt</category>
      <category>pyQT5</category>
      <category>pyside</category>
      <category>python GUI</category>
      <category>PythonGUI</category>
      <category>TKinter</category>
      <category>가벼운 gui</category>
      <category>파이썬 GUI</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/247</guid>
      <comments>https://coding-kindergarten.tistory.com/247#entry247comment</comments>
      <pubDate>Sun, 2 Feb 2025 14:43:02 +0900</pubDate>
    </item>
    <item>
      <title>[Chatbox AI] 오픈소스 LLM을 로컬에서 사용하는 방법 (feat.Ollama)</title>
      <link>https://coding-kindergarten.tistory.com/246</link>
      <description>&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;Chatbox AI&lt;/b&gt;&lt;/span&gt;&lt;span&gt;는 대형 언어 모델(LLM)을 로컬 환경에서 쉽게 실행하고 관리할 수 있도록 도와주는 &lt;/span&gt;&lt;span&gt;&lt;b&gt;그래픽 사용자 인터페이스(GUI)&lt;/b&gt;&lt;/span&gt;&lt;span&gt; 도구입니다. 이 도구는 기술적 경험이 부족한 사용자도 쉽게 AI 모델을 활용할 수 있도록 설계되었습니다. 이 글에서는 Chatbox AI의 주요 기능, 설치 방법, 활용법을 알아보겠습니다.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;1. Chatbox AI란?&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Chatbox AI는 &lt;/span&gt;&lt;span&gt;&lt;b&gt;로컬 및 클라우드 기반 AI 모델&lt;/b&gt;&lt;/span&gt;&lt;span&gt;을 직관적인 사용자 인터페이스를 통해 실행하고 관리할 수 있도록 도와주는 도구입니다. 터미널 명령어 대신 클릭만으로 다양한 AI 모델을 활용할 수 있습니다. GPL-3.0 라이선스를 따르고 있어 상업적으로 배포하지만 않으면 기업에서도 사용하는 것은 문제가 없습니다. &lt;/span&gt;&lt;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://coding-kindergarten.tistory.com/249&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2025.02.06 - [라이선스] - [라이선스] GPL-3.0&lt;/a&gt;&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;1142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZGQuq/btsL2GBnR6b/9KaO4yvCFdAU1CjWJNbvhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZGQuq/btsL2GBnR6b/9KaO4yvCFdAU1CjWJNbvhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZGQuq/btsL2GBnR6b/9KaO4yvCFdAU1CjWJNbvhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZGQuq%2FbtsL2GBnR6b%2F9KaO4yvCFdAU1CjWJNbvhK%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;1516&quot; height=&quot;1142&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;1142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;주요 특징&lt;/span&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-spread=&quot;true&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;로컬 모델 실행&lt;/b&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;OpenAI, Hugging Face, Ollama와 같은 다양한 플랫폼의 AI 모델을 지원합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;인터넷 연결 없이도 AI 모델 실행 가능.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;사용자 친화적 인터페이스&lt;/b&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;복잡한 명령어 없이 클릭만으로 모델 실행 및 관리.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;초보자도 쉽게 사용할 수 있는 직관적인 UI 제공.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;다중 모델 관리&lt;/b&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;여러 모델을 동시에 실행하고 전환할 수 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;프로젝트별로 다른 AI 모델을 선택해 활용 가능.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;대화 기록 관리&lt;/b&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;AI와의 대화를 자동으로 기록하고 저장.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;기록된 대화를 내보내거나 복원할 수 있는 기능 포함.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;설정 커스터마이징&lt;/b&gt;&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;모델의 주요 파라미터(온도, 토큰 수 등)를 GUI에서 조정 가능.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;2. Chatbox AI 설치하기&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;2.1. 시스템 요구 사항&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;운영 체제&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: Windows, MacOS, Linux 지원&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;RAM&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 최소 8GB 이상&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;디스크 공간&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 최소 10GB 이상 (모델에 따라 다를 수 있음)&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;2.2. 설치 방법&lt;/span&gt;&lt;span&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;Step1. Chatbox AI 다운로드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Chatbox AI 홈페이지를 방문해 운영 체제에 맞는 설치 파일을 다운로드합니다. (&lt;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://chatboxai.app/en&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://chatboxai.app/en&lt;/a&gt;&lt;/span&gt;&lt;/u&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1938&quot; data-origin-height=&quot;1049&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HHlFi/btsL1XcGiC2/p6hRqNTH2MhkH8ofyLNcMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HHlFi/btsL1XcGiC2/p6hRqNTH2MhkH8ofyLNcMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HHlFi/btsL1XcGiC2/p6hRqNTH2MhkH8ofyLNcMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHHlFi%2FbtsL1XcGiC2%2Fp6hRqNTH2MhkH8ofyLNcMk%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;860&quot; height=&quot;466&quot; data-origin-width=&quot;1938&quot; data-origin-height=&quot;1049&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;span&gt;&lt;b&gt;Step2. 설치 진행&lt;/b&gt;&lt;/span&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;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;539&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I9GN6/btsL1igW4uP/1n5XpdsN71tHYJc8YHjDS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I9GN6/btsL1igW4uP/1n5XpdsN71tHYJc8YHjDS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I9GN6/btsL1igW4uP/1n5XpdsN71tHYJc8YHjDS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI9GN6%2FbtsL1igW4uP%2F1n5XpdsN71tHYJc8YHjDS0%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;640&quot; height=&quot;397&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;539&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;870&quot; data-origin-height=&quot;539&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/berWrQ/btsL3x4Kalg/Yk8lurzr1hvk9Ntwnk0Du0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/berWrQ/btsL3x4Kalg/Yk8lurzr1hvk9Ntwnk0Du0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/berWrQ/btsL3x4Kalg/Yk8lurzr1hvk9Ntwnk0Du0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FberWrQ%2FbtsL3x4Kalg%2FYk8lurzr1hvk9Ntwnk0Du0%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;640&quot; height=&quot;397&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;539&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;870&quot; data-origin-height=&quot;539&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/W1rhF/btsL1jUxfdp/panWLcQ20l0yD6khaDD57K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/W1rhF/btsL1jUxfdp/panWLcQ20l0yD6khaDD57K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/W1rhF/btsL1jUxfdp/panWLcQ20l0yD6khaDD57K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FW1rhF%2FbtsL1jUxfdp%2FpanWLcQ20l0yD6khaDD57K%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;640&quot; height=&quot;397&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;539&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;Step3. 프로그램 실행&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;설치가 완료되면 바탕화면 또는 애플리케이션 메뉴에서 &quot;Chatbox AI&quot;를 실행합니다. 만약 위에서 &quot;Chatbox 실행하기&quot; 옵션을 체크하고 설치를 마치셨다면 자동으로 Chatbox 창이 나타나게 됩니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;3. Chatbox AI 활용하기&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;3.1. AI 모델 설정하기&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;Step1. 모델 추가&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;처음 Chatbox AI를 실행하면 &quot;AI 모델 공급자를 선택하고 구성하세요.&quot;라는 안내 상자가 나오게 됩니다. 여기서 Chatbox AI Cloud는 해당 앱에서 제공하는 유료 버전의 AI 모델이므로, 로컬 AI 모델을 사용하기 위해서는 아래의 &quot;내 자체 API 키 / 로컬 모델 사용&quot; 버튼을 눌러주시면 됩니다.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;1142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0YCjH/btsL1zW8xoA/kUYki0K497N8fkCQvZKDc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0YCjH/btsL1zW8xoA/kUYki0K497N8fkCQvZKDc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0YCjH/btsL1zW8xoA/kUYki0K497N8fkCQvZKDc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0YCjH%2FbtsL1zW8xoA%2FkUYki0K497N8fkCQvZKDc1%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;640&quot; height=&quot;482&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;1142&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;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;원하는API 방식을 선택합니다. 저의 경우엔 지난 시간에 Ollama를 통해서 설치했던 &quot;Deepseek-r1&quot; 모델을 사용하기 위해서 &quot;Ollama API&quot;를 선택해 주겠습니다.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;1142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EmCRT/btsL2SBnRV7/eRbaWkJUpWcDm77HYqaer0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EmCRT/btsL2SBnRV7/eRbaWkJUpWcDm77HYqaer0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EmCRT/btsL2SBnRV7/eRbaWkJUpWcDm77HYqaer0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEmCRT%2FbtsL2SBnRV7%2FeRbaWkJUpWcDm77HYqaer0%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;640&quot; height=&quot;482&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;1142&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;span&gt;&lt;b&gt;Step2. Ollama의 로컬 모델 실행&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지난 시간 Ollama를 통해서 설치한 deepseek-r1:8b 모델을 선택합니다. 저의 경우에는 컴퓨터 사양이 감당 가능한 선에서 14b 모델을 설치해서 사용해보았습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;1142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/edigTC/btsL2cAh2fR/MsxWcSHmQtQKvES6IPlLM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/edigTC/btsL2cAh2fR/MsxWcSHmQtQKvES6IPlLM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/edigTC/btsL2cAh2fR/MsxWcSHmQtQKvES6IPlLM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FedigTC%2FbtsL2cAh2fR%2FMsxWcSHmQtQKvES6IPlLM1%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;640&quot; height=&quot;482&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;1142&quot;/&gt;&lt;/span&gt;&lt;/figure&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;span&gt;입력 창에 질문을 입력하고 Enter 키를 눌러 AI와 대화할 수 있습니다. 무슨 모델이냐고 물어보니 자신은 DeepSeek-R1-Lite-Preview라고 대답하네요.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;1142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3NEky/btsL1F4qX9w/V8K8qPdkqXSF8zInWkbykK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3NEky/btsL1F4qX9w/V8K8qPdkqXSF8zInWkbykK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3NEky/btsL1F4qX9w/V8K8qPdkqXSF8zInWkbykK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3NEky%2FbtsL1F4qX9w%2FV8K8qPdkqXSF8zInWkbykK%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;640&quot; height=&quot;482&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;1142&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;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;이후에 다른 API를 사용하고 싶으시다면 좌측 하단의 &quot;설정&quot; 탭을 클릭하시면 다시 API를 설정가능하며, &quot;컨텍스트 내 최대 메시지 수&quot;와 &quot;온도&quot;와 같은 옵션을 손쉽게 설정 가능합니다. 참고로 온도(Teperature)의 경우 값이 높을수록 창의적이고 다양한 답을 합니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;1042&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIb1Av/btsL1Xw5k2L/GRVFe0cf7gB4t4fJSCGRr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIb1Av/btsL1Xw5k2L/GRVFe0cf7gB4t4fJSCGRr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIb1Av/btsL1Xw5k2L/GRVFe0cf7gB4t4fJSCGRr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIb1Av%2FbtsL1Xw5k2L%2FGRVFe0cf7gB4t4fJSCGRr1%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;640&quot; height=&quot;440&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;1042&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;size16&quot;&gt;&lt;span&gt;이번 시간에는 Chatbox AI라는 앱을 활용해서 LLM을 쉽게 활용하고 관리하는 방법에 대해서 알아 보았습니다. 터미널 명령어에 익숙하지 않으신 코딩 초보분들도 GUI 환경에서 간단히 AI 모델을 실행하고, 대화 기록을 관리하며, 다양한 설정을 커스터마이징할 수 있을거예요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;position: absolute;&quot; 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;position: absolute;&quot; 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;</description>
      <category>AI</category>
      <category>ai 초보</category>
      <category>ai도구</category>
      <category>ai활용</category>
      <category>chatbox ai</category>
      <category>GUI</category>
      <category>llm</category>
      <category>ollama연동</category>
      <category>대형언어모델</category>
      <category>로컬 LLM</category>
      <category>로컬ai</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/246</guid>
      <comments>https://coding-kindergarten.tistory.com/246#entry246comment</comments>
      <pubDate>Thu, 30 Jan 2025 21:01:45 +0900</pubDate>
    </item>
    <item>
      <title>Ollama 설치 방법: 초보자도 따라할 수 있는 가이드 (deepseek-r1 로컬에서 사용하기)</title>
      <link>https://coding-kindergarten.tistory.com/245</link>
      <description>&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Ollama는 로컬에서 대형 언어 모델(LLM)을 실행할 수 있도록 도와주는 도구입니다. 이번 시간에는 초보자도 쉽게 Ollama를 설치하고 실행할 수 있도록 단계별로 설명드려 보겠습니다.&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;1. Ollama란?&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Ollama는 로컬 환경에서 AI 모델을 실행할 수 있도록 도와주는 프로그램으로, 인터넷 연결 없이도 AI 기능을 활용할 수 있습니다. MacOS, Windows, Linux에서 사용할 수 있으며, 다양한 AI 모델을 쉽게 다운로드하고 실행할 수 있습니다. Ollama 이외에도 LM Studio, GPT4All, Msty 등의 더 사용자 친화적인 프로그램들이 있지만 Ollama는 회사에서도 무료로 사용할 수 있는 라이선스라는 것이 장점이라고 할 수 있습니다.&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;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qjz5E/btsL1Wx1Inm/z3DYwwAXIcQSkPvVe7vl7k/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qjz5E/btsL1Wx1Inm/z3DYwwAXIcQSkPvVe7vl7k/img.webp&quot; data-alt=&quot;DALL-E로 생성&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qjz5E/btsL1Wx1Inm/z3DYwwAXIcQSkPvVe7vl7k/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqjz5E%2FbtsL1Wx1Inm%2Fz3DYwwAXIcQSkPvVe7vl7k%2Fimg.webp&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;640&quot; height=&quot;640&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;DALL-E로 생성&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;2. Ollama 설치하기&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;Step1. &lt;/span&gt;&lt;/b&gt;&lt;a href=&quot;https://ollama.com/&quot;&gt;&lt;span&gt;Ollama 공식 웹사이트&lt;/span&gt;&lt;/a&gt;&lt;span&gt;에 접속한 후, Download 버튼을 클릭합니다.&lt;/span&gt;&lt;span&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;1586&quot; data-origin-height=&quot;960&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYJzDj/btsL2S2q3Fz/JxgDaj4E51kVPjl5xwUcXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYJzDj/btsL2S2q3Fz/JxgDaj4E51kVPjl5xwUcXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYJzDj/btsL2S2q3Fz/JxgDaj4E51kVPjl5xwUcXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYJzDj%2FbtsL2S2q3Fz%2FJxgDaj4E51kVPjl5xwUcXK%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;640&quot; height=&quot;387&quot; data-origin-width=&quot;1586&quot; data-origin-height=&quot;960&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;Step2.&lt;/b&gt;&amp;nbsp;&lt;span&gt;&quot;Download for Windows&quot; 버튼을 클릭하여 설치 파일을 다운로드합니다.&amp;nbsp;&lt;/span&gt;&lt;span&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;1581&quot; data-origin-height=&quot;1078&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhiJU0/btsL10tm0TQ/y1TL6wMS5FMyL5uj45YDZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhiJU0/btsL10tm0TQ/y1TL6wMS5FMyL5uj45YDZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhiJU0/btsL10tm0TQ/y1TL6wMS5FMyL5uj45YDZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhiJU0%2FbtsL10tm0TQ%2Fy1TL6wMS5FMyL5uj45YDZ1%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;640&quot; height=&quot;436&quot; data-origin-width=&quot;1581&quot; data-origin-height=&quot;1078&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;Step3. &lt;/b&gt;&lt;span&gt;다운로드한 파일을 실행하시고 &quot;Install&quot; 버튼을 클릭해주세요.&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;1294&quot; data-origin-height=&quot;1010&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/omo33/btsL1BUP1WH/rn5gmrTrPKATbd2lULOOc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/omo33/btsL1BUP1WH/rn5gmrTrPKATbd2lULOOc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/omo33/btsL1BUP1WH/rn5gmrTrPKATbd2lULOOc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fomo33%2FbtsL1BUP1WH%2Frn5gmrTrPKATbd2lULOOc0%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;640&quot; height=&quot;500&quot; data-origin-width=&quot;1294&quot; data-origin-height=&quot;1010&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;1294&quot; data-origin-height=&quot;1010&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GTc6t/btsL2SnP60p/F3GA9dMXzlRCS3a92xb1Wk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GTc6t/btsL2SnP60p/F3GA9dMXzlRCS3a92xb1Wk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GTc6t/btsL2SnP60p/F3GA9dMXzlRCS3a92xb1Wk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGTc6t%2FbtsL2SnP60p%2FF3GA9dMXzlRCS3a92xb1Wk%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;640&quot; height=&quot;500&quot; data-origin-width=&quot;1294&quot; data-origin-height=&quot;1010&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;Step4.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;설치가 완료되면 설치창이 사라지고 화면 우측 하단에 &quot;Ollama is running&quot; 이라는 팝업창이 출력됩니다.&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;586&quot; data-origin-height=&quot;184&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pT6ai/btsL1FXHANl/K4vJK4K5m8qXepxuA0HVm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pT6ai/btsL1FXHANl/K4vJK4K5m8qXepxuA0HVm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pT6ai/btsL1FXHANl/K4vJK4K5m8qXepxuA0HVm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpT6ai%2FbtsL1FXHANl%2FK4vJK4K5m8qXepxuA0HVm0%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;400&quot; height=&quot;126&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;184&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 data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;b&gt;Step5.&lt;span&gt; &lt;/span&gt;&lt;/b&gt;&quot;명령 프롬프트(CMD)&quot;를 열고 다음 명령어를 입력하여 설치 여부를 확인합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738217226136&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ollama&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;1257&quot; data-origin-height=&quot;766&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NLedi/btsL3hHN7R1/u68m20KDjbJgPDLfKIe9r1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NLedi/btsL3hHN7R1/u68m20KDjbJgPDLfKIe9r1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NLedi/btsL3hHN7R1/u68m20KDjbJgPDLfKIe9r1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNLedi%2FbtsL3hHN7R1%2Fu68m20KDjbJgPDLfKIe9r1%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;1257&quot; height=&quot;766&quot; data-origin-width=&quot;1257&quot; data-origin-height=&quot;766&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 data-ke-size=&quot;size16&quot;&gt;아래 명령어로 설치된 ollama 버전을 확인할 수 있습니다. ('25.01.30 기준 0.5.7 버전)&lt;/p&gt;
&lt;pre id=&quot;code_1738217297066&quot; class=&quot;shell&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;ollama -v&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;1257&quot; data-origin-height=&quot;766&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTjTsU/btsL31drVkU/ZudkQV9dIUHa6wIIcnqVRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTjTsU/btsL31drVkU/ZudkQV9dIUHa6wIIcnqVRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTjTsU/btsL31drVkU/ZudkQV9dIUHa6wIIcnqVRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTjTsU%2FbtsL31drVkU%2FZudkQV9dIUHa6wIIcnqVRK%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;1257&quot; height=&quot;766&quot; data-origin-width=&quot;1257&quot; data-origin-height=&quot;766&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;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;3. Ollama AI 모델 선택해서 설치하기&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Ollama 페이지에서 &quot;Models&quot; 탭을 클릭해보면 Ollama를 통해 사용가능한 Local AI 모델들이 있습니다. 최근 중국에서 저비용으로 ChatGPT o1 수준의 로컬 모델을 발표해서 많은 화제가 되었던 deepseek 모델도 보입니다. &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;span&gt;참고로 각 모델의 하단에 파란색 사각형으로 표시된 1.5b, 7b, 8b, 14b, 32b, 70b, 671b는 AI 모델의 파라미터 개수를 뜻합니다. 쉽게 말해서 모델의 크기라고 생각하시면 되는데 보통 10b 정도가 일반적인 컴퓨터에서 실행되면서도 의미 있는 대답을 받을 수 있는 파라미터 크기라고 보시면 되겠습니다. 다만 일반적인 컴퓨터가 다소 주관적인 표현이므로 적당한 파라미터부터 설치해서 사용해보시면서 내 컴퓨터에서 돌아갈 수 있는 가장 좋은 모델을 찾아서 사용하시는 것을 추천드립니다.&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;b&gt;Step1.&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&quot;Models&quot; 탭을 클릭한 후, 마음에 드는 모델을 클릭해주세요. 저의 경우에는 가장 성능이 좋다고 소문난 deepseek-r1 모델을 선택했습니다.&lt;/p&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1619&quot; data-origin-height=&quot;1115&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpFcF8/btsL3kR5uAV/8PwDEXgJ5KXwyKG17hKNAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpFcF8/btsL3kR5uAV/8PwDEXgJ5KXwyKG17hKNAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpFcF8/btsL3kR5uAV/8PwDEXgJ5KXwyKG17hKNAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpFcF8%2FbtsL3kR5uAV%2F8PwDEXgJ5KXwyKG17hKNAk%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;1619&quot; height=&quot;1115&quot; data-origin-width=&quot;1619&quot; data-origin-height=&quot;1115&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;b&gt;Step2.&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;span&gt;적당한 파라미터를 선택한 후, 우측의 ollama 명령을 복사하기 버튼을 클릭해서 복사해주세요. (저는 8b를 선택하였습니다.)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1630&quot; data-origin-height=&quot;1528&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EbDy1/btsL2R3tR59/Z3RxclMbHvcceKBW5cK1cK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EbDy1/btsL2R3tR59/Z3RxclMbHvcceKBW5cK1cK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EbDy1/btsL2R3tR59/Z3RxclMbHvcceKBW5cK1cK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEbDy1%2FbtsL2R3tR59%2FZ3RxclMbHvcceKBW5cK1cK%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;640&quot; height=&quot;600&quot; data-origin-width=&quot;1630&quot; data-origin-height=&quot;1528&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div&gt;&lt;b&gt;Step3.&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;복사한 명령어를 명령 프롬프트(CMD) 창에 붙여넣고 엔터를 눌러주시면 설치가 진행됩니다. 다만, 설치가 안되어 있을 때 pull 명령어 대신 실행 명령어인 run을 하여도 설치가 진행됩니다.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;1) pull 명령: 설치&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;2) run 명령: 실행 (미설치 시 설치 후 실행)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;pre class=&quot;shell&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;ollama pull deepseek-r1:8b&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1272&quot; data-origin-height=&quot;599&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dT3GQr/btsL25HAGSF/DTQpz0FFwNwhjCN1AUGWl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dT3GQr/btsL25HAGSF/DTQpz0FFwNwhjCN1AUGWl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dT3GQr/btsL25HAGSF/DTQpz0FFwNwhjCN1AUGWl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdT3GQr%2FbtsL25HAGSF%2FDTQpz0FFwNwhjCN1AUGWl0%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;1272&quot; height=&quot;599&quot; data-origin-width=&quot;1272&quot; data-origin-height=&quot;599&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 data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;b&gt;Step4.&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;모델 다운로드가 완료되면 다음 명령어를 입력하여 실행할 수 있습니다. 저의 경우 설치를 run으로 이미 진행했기 때문에 아래와 같이 &quot;success&quot;라는 설치 완료를 알리는 메시지 후에 바로 &quot;&amp;gt;&amp;gt;&amp;gt; Send a message (/? for help)&quot;라는 메시지가 나타났습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;dockerfile&quot;&gt;&lt;code&gt;ollama run deepseek-r1:8b&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;1272&quot; data-origin-height=&quot;599&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xumxZ/btsL3AtCTzB/Ks8um16BIFYA6I4TnKhRZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xumxZ/btsL3AtCTzB/Ks8um16BIFYA6I4TnKhRZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xumxZ/btsL3AtCTzB/Ks8um16BIFYA6I4TnKhRZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxumxZ%2FbtsL3AtCTzB%2FKs8um16BIFYA6I4TnKhRZk%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;1272&quot; height=&quot;599&quot; data-origin-width=&quot;1272&quot; data-origin-height=&quot;599&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;span&gt;이제 Ollama가 AI 모델을 실행하며, 터미널에서 AI와 직접 대화할 수 있습니다. &lt;/span&gt;&lt;span&gt;질문을 입력하고 Enter를 눌러 AI의 응답을 받아볼 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;swift&quot;&gt;&lt;code&gt;&amp;gt; What is DeepSeek-R1?&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;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;4. Ollama 추가 명령어&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;1) 실행 중인 모델을 종료하려면 &lt;/span&gt;&lt;span&gt;Ctrl + C&lt;/span&gt;&lt;span&gt;를 누릅니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;2) 모델 목록을 확인하려면 &quot;ollama list&quot;를 입력합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738219331636&quot; class=&quot;shell&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;ollama list&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;span&gt;이번 시간에는 Ollama를 성공적으로 설치하고, AI 모델을 실행하는 방법을 익혀보았습니다. 이를 통해 로컬 환경에서 강력한 AI 모델을 활용하여 생산성을 높이고, 데이터를 보호하면서 AI를 사용할 수 있습니다. 다음 시간에는 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;터미널이 익숙하지 않은 사용자분들을 위해서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;b&gt;Ollama UI&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;또는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;b&gt;Chatbox AI&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;같은 GUI 프로그램을 통해서 로컬 AI 모델을 사용하는 방법에 대해서 알아보겠습니다.&lt;/span&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;span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;[이어서 보면 좋은 글]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://coding-kindergarten.tistory.com/246&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2025.01.30 - [AI] - [Chatbox AI] 오픈소스 LLM을 로컬에서 사용하는 방법 (feat.Ollama)&lt;/a&gt;&lt;/p&gt;</description>
      <category>AI</category>
      <category>deepseek</category>
      <category>deepseek r1 설치</category>
      <category>deepseek 설치</category>
      <category>deepseek-r1</category>
      <category>LLM활용</category>
      <category>Ollama</category>
      <category>ollama deepseek</category>
      <category>ollama 설치</category>
      <category>olllama run</category>
      <category>로컬 LLM</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/245</guid>
      <comments>https://coding-kindergarten.tistory.com/245#entry245comment</comments>
      <pubDate>Thu, 30 Jan 2025 15:47:37 +0900</pubDate>
    </item>
    <item>
      <title>생성형 AI 시대, 코딩 공부가 더 쉬워졌어요!  </title>
      <link>https://coding-kindergarten.tistory.com/244</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&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;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;오늘은 생성형 AI와 코딩 공부에 대한 내용을 정리해보려합니다.&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;b&gt;ChatGPT&lt;/b&gt;와 같은 &lt;b&gt;생성형 AI&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;하지만 이제는 AI가 여러분의 선생님, 동료, 디버깅 전문가가 되어서 우리의 많은 어려움을 뚝닥뚝닥 해결해줍니다.&amp;nbsp; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;저는 주로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬&lt;/b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;을 위주로 배워 왔습니다. 특히 파이썬을 활용한 업무 자동화를 현업에 적용해서 정말 많은 도움을 받았죠. 하지만 이제는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;AI의 도움을 받아&lt;b&gt; 웹 개발&lt;/b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;, 그리고&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;생성형 AI를 접목한 업무 자동화&lt;/b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&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;h3 data-ke-size=&quot;size23&quot;&gt;1. &lt;b&gt;생성형 AI란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성형 AI는 텍스트, 이미지, 코드 등 다양한 콘텐츠를 생성해주는 인공지능 기술입니다. 이 기술은 사용자가 입력한 요청이나 질문을 분석해 적절한 답변을 제공하거나, 새로운 내용을 만들어내는 데 도움을 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, &quot;자바스크립트로 숫자 합계를 계산하는 코드를 작성해줘&quot;라고 요청하면, 생성형 AI가 실제 코드를 작성해 주거나 예제를 보여줄 수 있답니다.&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;특히 생성형 AI가 코딩에 접목되어서 코딩 생산성이 아주 크게 올라갔습니다. VSCODE에서 사용할 수 있는 깃허브 코파일럿, 그리고 요즘 핫한 Cursor AI를 활용하면 AI가 코드를 &quot;알잘딱깔센&quot;으로 제안해준답니다. 이제 사람은 이 코드를 이해하고 적절히 선택만 하면 되는 시대가 온 것이죠.&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;600&quot; data-origin-height=&quot;338&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buvK7w/btsLUmJuIVV/C7m1o1SYKboXQibJBinF0k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buvK7w/btsLUmJuIVV/C7m1o1SYKboXQibJBinF0k/img.jpg&quot; data-alt=&quot;깃허브 코파일럿&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buvK7w/btsLUmJuIVV/C7m1o1SYKboXQibJBinF0k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuvK7w%2FbtsLUmJuIVV%2FC7m1o1SYKboXQibJBinF0k%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;600&quot; height=&quot;338&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;338&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;깃허브 코파일럿&lt;/figcaption&gt;
&lt;/figure&gt;
&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;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. &lt;b&gt;생성형 AI로 코딩 공부하기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI는 코딩 공부의 모든 과정에서 여러분을 도와줄 수 있습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(1) &lt;b&gt;기초 문법 배우기&lt;/b&gt;&lt;/h4&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;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&amp;nbsp;파이썬의 전반적인 개념과 간단한 예제를 유튜브 무료 강의를 통해 가볍게 학습합니다. (나도코딩 파이썬 추천)&lt;/li&gt;
&lt;li&gt;기본 문법을 빠르게 훑어본 뒤, 간단한 프로젝트를 시작합니다. 예를 들어, &quot;계산기 만들기&quot;와 같은 작은 목표를 설정합니다.&lt;/li&gt;
&lt;li&gt;프로젝트를 진행하며 모르는 문법이나 사용법이 나올 때마다 AI에게 질문합니다.&lt;/li&gt;
&lt;/ol&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;h4 data-ke-size=&quot;size20&quot;&gt;(2) &lt;b&gt;코드 이해 및 디버깅&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작성한 코드가 왜 작동하지 않는지 고민 중이라면 AI에게 질문하세요! 코드의 오류를 분석하고, 수정 방향을 제안해줍니다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;// 예제: 오류가 있는 코드
let numbers = [1, 2, 3];
console.log(number[0]); // AI가 'number'를 'numbers'로 수정하라고 제안
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;(3) &lt;b&gt;실습 과제 및 프로젝트 아이디어&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;초보자를 위한 간단한 프로젝트 아이디어를 추천해줘&quot;라고 물어보면, AI가 여러분의 수준에 맞는 프로젝트를 추천하거나 필요한 코드를 작성하는 데 도움을 줄 수 있습니다.&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&gt;간단한 계산기&lt;/b&gt;: 덧셈, 뺄셈, 곱셈, 나눗셈 기능이 있는 계산기 제작.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;할 일 목록(To-Do List)&lt;/b&gt;: 사용자가 할 일을 추가, 삭제, 완료 표시할 수 있는 간단한 앱.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;랜덤 명언 생성기&lt;/b&gt;: 버튼을 누를 때마다 명언이 랜덤으로 출력되는 프로그램.&lt;/li&gt;
&lt;/ul&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. &lt;b&gt;생성형 AI의 장점&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성형 AI의 장점을 요약해보자면 아래와 같습니다.&lt;/p&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;/li&gt;
&lt;li&gt;&lt;b&gt;맞춤형 학습&lt;/b&gt;: 여러분의 실력에 맞는 예제와 설명을 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;무제한 연습&lt;/b&gt;: AI와 함께 끝없이 연습하고 코드를 실험할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;다양한 언어 지원&lt;/b&gt;: 파이썬, 자바스크립트, C++, HTML 등 어떤 언어든 AI가 도와줍니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. &lt;b&gt;주의할 점&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성형 AI는 할루시네이션(쉽게 말해서 거짓말)이라는 치명적인 단점을 가지고 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;생성된 코드가 항상 완벽하거나 효율적이지 않을 수 있습니다. 따라서 AI가 제공한 답변이나 코드를 이해하려고 노력하고, 개선하는 과정을 거쳐야 합니다.&lt;/li&gt;
&lt;li&gt;AI는 여러분의 질문에 따라 답변의 품질이 달라질 수 있으니, 구체적이고 명확하게 질문하는 연습도 필요합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;5. &lt;b&gt;함께 공부해요!&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성형 AI는 단순히 질문에 답하는 것을 넘어, 코딩 공부에 새로운 가능성을 열어줍니다. 여러분이 초보라 해도 괜찮습니다. AI는 언제나 인내심을 가지고 여러분의 동료가 되어줄 테니까요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저 역시 코딩 여정을 계속하면서 새로운 영역에 도전하고 있습니다. 여러분도 저와 함께 AI의 도움을 받아 더 넓은 개발 세계로 발을 내디뎌 보지 않으시겠어요? 함께 배우고, 성장하고, 멋진 프로젝트를 만들어 나가길 기대합니다.&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;&quot;시작이 반이다&quot;&lt;/b&gt;라는 말처럼, 오늘 AI와 함께 첫 코드를 작성하며 한 걸음을 내디뎌 보세요. 코딩의 즐거움을 느끼고 성장하는 여러분의 모습을 기대합니다!  &lt;/p&gt;</description>
      <category>AI</category>
      <category>AI</category>
      <category>ai 코딩</category>
      <category>ai활용</category>
      <category>ChatGPT</category>
      <category>생성형 AI</category>
      <category>생성형AI</category>
      <category>시작이 반이다</category>
      <category>웹개발도전</category>
      <category>코딩 공부</category>
      <category>파이썬학습</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/244</guid>
      <comments>https://coding-kindergarten.tistory.com/244#entry244comment</comments>
      <pubDate>Tue, 21 Jan 2025 00:33:57 +0900</pubDate>
    </item>
    <item>
      <title>스마트한 업무를 위한 선택: 최신 자동화 툴 4종 비교 (Zapier, IFTTT, Make, n8n)</title>
      <link>https://coding-kindergarten.tistory.com/242</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&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;span&gt;오늘은 노코드 자&lt;/span&gt;&lt;span&gt;동화 툴&lt;/span&gt;&lt;span&gt;에 관&lt;/span&gt;&lt;span&gt;심&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;있는&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;분들을&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;위해&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;4가지 인&lt;/span&gt;&lt;span&gt;기 있는&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;자동화&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;툴을 비교&lt;/span&gt;&lt;span&gt;해&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;보았&lt;/span&gt;&lt;span&gt;습니다.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;각 툴의&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;특징과&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;장단점을&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;살&lt;/span&gt;&lt;span&gt;펴보&lt;/span&gt;&lt;span&gt;겠습니다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;font-size: 1.62em; letter-spacing: -1px; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif;&quot;&gt;1. Make&lt;/span&gt;&lt;span style=&quot;font-size: 1.62em; letter-spacing: -1px; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 1.62em; letter-spacing: -1px; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif;&quot;&gt;(구&lt;/span&gt;&lt;span style=&quot;font-size: 1.62em; letter-spacing: -1px; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif;&quot;&gt;&amp;nbsp;Integ&lt;/span&gt;&lt;span style=&quot;font-size: 1.62em; letter-spacing: -1px; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif;&quot;&gt;romat)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;Make&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;는 현&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;재 가장&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;많&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;이 사용되&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;는 자동화&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;툴&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;중 하나입&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;니다&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;img style=&quot;text-align: center; caret-color: transparent; color: #000000; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot; src=&quot;https://blog.kakaocdn.net/dn/4s2dk/btsJRQNgArU/GQgQ8CZB5aFg2rqKv1Acdk/img.png&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;500&quot; data-is-animation=&quot;false&quot; /&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-10-01 오후 10.55.02.png&quot; data-origin-width=&quot;2192&quot; data-origin-height=&quot;1398&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n5HmK/btsJSQFmtDE/DmYR3S9H1IOOfo6AknJOYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n5HmK/btsJSQFmtDE/DmYR3S9H1IOOfo6AknJOYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n5HmK/btsJSQFmtDE/DmYR3S9H1IOOfo6AknJOYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn5HmK%2FbtsJSQFmtDE%2FDmYR3S9H1IOOfo6AknJOYk%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;2192&quot; height=&quot;1398&quot; data-filename=&quot;스크린샷 2024-10-01 오후 10.55.02.png&quot; data-origin-width=&quot;2192&quot; data-origin-height=&quot;1398&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;장점:&lt;/span&gt;&lt;/b&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;span&gt;비&lt;/span&gt;&lt;span&gt;교적 저&lt;/span&gt;&lt;span&gt;렴한 가&lt;/span&gt;&lt;span&gt;격&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;직&lt;/span&gt;&lt;span&gt;관적인 워&lt;/span&gt;&lt;span&gt;크플로우&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;시&lt;/span&gt;&lt;span&gt;나&lt;/span&gt;&lt;span&gt;리오 시&lt;/span&gt;&lt;span&gt;각화&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;강&lt;/span&gt;&lt;span&gt;력한 기&lt;/span&gt;&lt;span&gt;능과 유&lt;/span&gt;&lt;span&gt;연성&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;단점&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;초&lt;/span&gt;&lt;span&gt;보자에게는&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;다&lt;/span&gt;&lt;span&gt;소 복잡&lt;/span&gt;&lt;span&gt;할 수 있&lt;/span&gt;&lt;span&gt;음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;Make&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;는 기업&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;용으&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;로 특&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;히&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;적&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;합하며,&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;복&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;잡한 자&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;동화 시&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;나리오를&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;구&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;현하기&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;에 좋습&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;니다&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;font-size: 1.62em; letter-spacing: -1px; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;font-size: 1.62em; letter-spacing: -1px; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif;&quot;&gt;. Zapier&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;Zapier는 자&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;동화 분&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;야의&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;선구&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;자로 널&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;리 알려져&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;있습니다&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1520&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lrROZ/btsJRSj1TUc/AJnUDdvFs8LF48bFFbm3NK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lrROZ/btsJRSj1TUc/AJnUDdvFs8LF48bFFbm3NK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lrROZ/btsJRSj1TUc/AJnUDdvFs8LF48bFFbm3NK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlrROZ%2FbtsJRSj1TUc%2FAJnUDdvFs8LF48bFFbm3NK%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;1520&quot; height=&quot;760&quot; data-origin-width=&quot;1520&quot; data-origin-height=&quot;760&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&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;스크린샷 2024-10-01 오후 10.57.01.png&quot; data-origin-width=&quot;2474&quot; data-origin-height=&quot;1422&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/27SBP/btsJSvO6fbp/0iSmtRjDfNrQXgXuoGbm3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/27SBP/btsJSvO6fbp/0iSmtRjDfNrQXgXuoGbm3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/27SBP/btsJSvO6fbp/0iSmtRjDfNrQXgXuoGbm3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F27SBP%2FbtsJSvO6fbp%2F0iSmtRjDfNrQXgXuoGbm3K%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;2474&quot; height=&quot;1422&quot; data-filename=&quot;스크린샷 2024-10-01 오후 10.57.01.png&quot; data-origin-width=&quot;2474&quot; data-origin-height=&quot;1422&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;장점&lt;/span&gt;&lt;span&gt;:&lt;/span&gt;&lt;/b&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;span&gt;3,000개 이&lt;/span&gt;&lt;span&gt;상의 앱&lt;/span&gt;&lt;span&gt;과 연&lt;/span&gt;&lt;span&gt;동 가능&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;사&lt;/span&gt;&lt;span&gt;용자 친화&lt;/span&gt;&lt;span&gt;적인 인터&lt;/span&gt;&lt;span&gt;페이스&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Zap&lt;/span&gt;&lt;span&gt;ier AI&lt;/span&gt;&lt;span&gt;를&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;통한&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;쉬운 시&lt;/span&gt;&lt;span&gt;나리오 생&lt;/span&gt;&lt;span&gt;성&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;단점&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;상&lt;/span&gt;&lt;span&gt;대적으로&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;높은 가격&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;일&lt;/span&gt;&lt;span&gt;부 고&lt;/span&gt;&lt;span&gt;급 기능의&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;제&lt;/span&gt;&lt;span&gt;한&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;Zapier&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;는 개&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;인 사용자&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;나&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;소규모&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;비&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;즈니스에&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;적합하며&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;, 특&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;히 다&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;양한 앱&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;연동이&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;필요한&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;경우에 유&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;용합니다&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;font-size: 1.62em; letter-spacing: -1px; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;font-size: 1.62em; letter-spacing: -1px; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif;&quot;&gt;. IFTTT&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-size: 1.62em; letter-spacing: -1px; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif;&quot;&gt;(If This Then That&lt;/span&gt;&lt;span style=&quot;font-size: 1.62em; letter-spacing: -1px; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;IFTTT&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;는 간&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;단하&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;고 직관적&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;인 자동화&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;툴입&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;니다.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;747&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dCZCMJ/btsJSInhljp/naRxkq5Tfs8xoKqap9CAlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dCZCMJ/btsJSInhljp/naRxkq5Tfs8xoKqap9CAlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dCZCMJ/btsJSInhljp/naRxkq5Tfs8xoKqap9CAlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdCZCMJ%2FbtsJSInhljp%2FnaRxkq5Tfs8xoKqap9CAlK%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;747&quot; height=&quot;480&quot; data-origin-width=&quot;747&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-10-01 오후 11.00.15.png&quot; data-origin-width=&quot;1840&quot; data-origin-height=&quot;1338&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/509Xh/btsJS5oTCnu/XivfJzK0kvkHPdjy7AEsr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/509Xh/btsJS5oTCnu/XivfJzK0kvkHPdjy7AEsr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/509Xh/btsJS5oTCnu/XivfJzK0kvkHPdjy7AEsr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F509Xh%2FbtsJS5oTCnu%2FXivfJzK0kvkHPdjy7AEsr1%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;1840&quot; height=&quot;1338&quot; data-filename=&quot;스크린샷 2024-10-01 오후 11.00.15.png&quot; data-origin-width=&quot;1840&quot; data-origin-height=&quot;1338&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;장&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;점:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&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;span&gt;사&lt;/span&gt;&lt;span&gt;용량&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;제한이&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;없는&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;합&lt;/span&gt;&lt;span&gt;리적인 가&lt;/span&gt;&lt;span&gt;격&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(월&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;12달&lt;/span&gt;&lt;span&gt;러)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;사&lt;/span&gt;&lt;span&gt;용자들&lt;/span&gt;&lt;span&gt;이 만&lt;/span&gt;&lt;span&gt;든 시나리&lt;/span&gt;&lt;span&gt;오&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;공유&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;기능&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;초&lt;/span&gt;&lt;span&gt;보자도&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;쉽게 사&lt;/span&gt;&lt;span&gt;용&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;가능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;단점&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;복&lt;/span&gt;&lt;span&gt;잡한 워&lt;/span&gt;&lt;span&gt;크플로우&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;구현에 제&lt;/span&gt;&lt;span&gt;한이 있을&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;수 있음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;IFTTT&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;는 개인&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;사용자나&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;간&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;단한 자동&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;화&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;작&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;업에 적합&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;합&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;니다.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;font-size: 1.62em; letter-spacing: -1px; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;font-size: 1.62em; letter-spacing: -1px; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif;&quot;&gt;. n&lt;/span&gt;&lt;span style=&quot;font-size: 1.62em; letter-spacing: -1px; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif;&quot;&gt;8n&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;n&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;8n은 오&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;픈&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;소스 기&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;반의 자동&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;화 툴입&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;니다.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1016&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d4aF3G/btsJSdVMlLC/G2q0CkwDLwVCSExTmzZACK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d4aF3G/btsJSdVMlLC/G2q0CkwDLwVCSExTmzZACK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d4aF3G/btsJSdVMlLC/G2q0CkwDLwVCSExTmzZACK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd4aF3G%2FbtsJSdVMlLC%2FG2q0CkwDLwVCSExTmzZACK%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;1016&quot; height=&quot;512&quot; data-origin-width=&quot;1016&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-10-01 오후 11.04.04.png&quot; data-origin-width=&quot;1810&quot; data-origin-height=&quot;1262&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cE2i82/btsJTCNoEqO/g7XgN4q5mng9kjUr8YWArk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cE2i82/btsJTCNoEqO/g7XgN4q5mng9kjUr8YWArk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cE2i82/btsJTCNoEqO/g7XgN4q5mng9kjUr8YWArk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcE2i82%2FbtsJTCNoEqO%2Fg7XgN4q5mng9kjUr8YWArk%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;1810&quot; height=&quot;1262&quot; data-filename=&quot;스크린샷 2024-10-01 오후 11.04.04.png&quot; data-origin-width=&quot;1810&quot; data-origin-height=&quot;1262&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;b&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;장&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;점:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;로컬로 사용 시, 오&lt;/span&gt;&lt;span&gt;픈 소스&lt;/span&gt;&lt;span&gt;로&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;무료 사&lt;/span&gt;&lt;span&gt;용 가능 &lt;/span&gt;&lt;span&gt;(위의 가격은 n8n에서 제공하는 호스팅 서비스 이용 시 가격)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;높&lt;/span&gt;&lt;span&gt;은 커&lt;/span&gt;&lt;span&gt;스터마이징&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;가능성&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;프&lt;/span&gt;&lt;span&gt;라&lt;/span&gt;&lt;span&gt;이버시 중&lt;/span&gt;&lt;span&gt;시&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(데이터를&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;자체 서&lt;/span&gt;&lt;span&gt;버에서&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;처&lt;/span&gt;&lt;span&gt;리&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;가능)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;단&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;점:&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;기&lt;/span&gt;&lt;span&gt;술&lt;/span&gt;&lt;span&gt;적 지식이&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;필요할&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;수 있음&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;상&lt;/span&gt;&lt;span&gt;대적으로&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;적&lt;/span&gt;&lt;span&gt;은 사&lt;/span&gt;&lt;span&gt;전&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;제&lt;/span&gt;&lt;span&gt;작&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;통&lt;/span&gt;&lt;span&gt;합 기&lt;/span&gt;&lt;span&gt;능&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;n8n&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;은 기&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;술적 배&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;경이 있는&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;사&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;용자나&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;데&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;이터 프&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;라이버시를&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp;중요&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;시하는 기&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;업에 적합&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;합니다&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;결론&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;왕초보면서 돈이 많다면 Zapier, 프로그래밍 지식이 있으면서 무료를 원하면 n8n.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;한국에서 유명한 건 Zapier와 Make&lt;/span&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;span&gt;사&lt;/span&gt;&lt;span&gt;용 편&lt;/span&gt;&lt;span&gt;의성&lt;/span&gt;&lt;span&gt;: Zapier&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;gt; IFTTT &amp;gt; Make&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt; n8n&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;가격&lt;/span&gt;&lt;span&gt;: n&lt;/span&gt;&lt;span&gt;8n&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(무료)&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;gt; IFTTT&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;gt; Make&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt; Zapier&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;기능의&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;다&lt;/span&gt;&lt;span&gt;양성: Make&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt; Zapier&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;gt; n&lt;/span&gt;&lt;span&gt;8n &amp;gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;IFTTT&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;커&lt;/span&gt;&lt;span&gt;스터마이징&lt;/span&gt;&lt;span&gt;: n8n &amp;gt; Make&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt; Zapier&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;gt; IFTTT&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>유용한 팁</category>
      <category>ifttt</category>
      <category>Make</category>
      <category>n8n</category>
      <category>zapier</category>
      <category>노코드</category>
      <category>노코드 자동화툴</category>
      <category>생산성향상</category>
      <category>스마트워크</category>
      <category>업무자동화</category>
      <category>자동화툴</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/242</guid>
      <comments>https://coding-kindergarten.tistory.com/242#entry242comment</comments>
      <pubDate>Tue, 1 Oct 2024 23:09:27 +0900</pubDate>
    </item>
    <item>
      <title>[python/selenium] HTML의 클래스명이 요상할 때 사용가능한 find_element(By.XPATH) 활용법 (feat.유틸리티 퍼스트 CSS)</title>
      <link>https://coding-kindergarten.tistory.com/239</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #ef5369;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://coding-kindergarten.tistory.com/203&quot;&gt;2022.03.11 - [파이썬 패키지/라이브러리&amp;amp;패키지 소개] - 파이썬 주요 라이브러리 정리&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; 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;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHzTLO/btsJEQzjuff/LB4QCuRq31MrLuomN6ena1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHzTLO/btsJEQzjuff/LB4QCuRq31MrLuomN6ena1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHzTLO/btsJEQzjuff/LB4QCuRq31MrLuomN6ena1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHzTLO%2FbtsJEQzjuff%2FLB4QCuRq31MrLuomN6ena1%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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 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-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; 요상한 클래스명이란?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;최근 들어 아래와 같은 길고 빈칸이 많은 클래스 명을 사용해서 웹사이트를 구현하는 곳이 많아졌습니다. 저는 Web 개발자가 아니다 보니 도대체 어쩌다가 이런 요상한 클래스명을 사용하는지 궁금해져서 ChatGPT에게 물어봤습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; 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;스크린샷 2024-09-19 오전 11.04.41.png&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lQuOV/btsJE2Gg6cu/6dQQdJ5waOAEdcJh3ySaak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lQuOV/btsJE2Gg6cu/6dQQdJ5waOAEdcJh3ySaak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lQuOV/btsJE2Gg6cu/6dQQdJ5waOAEdcJh3ySaak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlQuOV%2FbtsJE2Gg6cu%2F6dQQdJ5waOAEdcJh3ySaak%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;640&quot; height=&quot;449&quot; data-filename=&quot;스크린샷 2024-09-19 오전 11.04.41.png&quot; data-origin-width=&quot;832&quot; data-origin-height=&quot;584&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;답변 받은 내용을 요약하자면 다음과 같습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. 이러한 CSS 선택자 방식을 &quot;유틸리티 클래스&quot; 또는 &quot;유틸리티 퍼스트 CSS&quot;라고 합니다. 이는 주로 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;Tailwind CSS 프레임워크에서 사용되는 접근 방식&lt;/b&gt;&lt;/span&gt;입니다. (참고로 CSS란 웹페이지를 꾸며주는 문법을 뜻합니다.)&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. 이러한 방식을 웹사이트 개발자가 사용하는 이유는 클래스 이름이 직관적이며 HTML 요소에 직접 스타일을 적용할 수 있어 빠른 개발이 가능하기 때문이라고 합니다. 또한 반응형 디자인과 테마 변경 등에 유연하게 대응할 수 있다고 합니다.&amp;nbsp;&lt;b&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;한마디로 웹사이트 개발자가 웹 프로그래밍 할 때 편한 방식이라 이해하시면 될 것 같습니다&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;이&amp;nbsp;방식은&amp;nbsp;CSS&amp;nbsp;작성&amp;nbsp;시간을&amp;nbsp;줄이고&amp;nbsp;일관된&amp;nbsp;디자인을&amp;nbsp;유지하는&amp;nbsp;데&amp;nbsp;도움이&amp;nbsp;되지만,&amp;nbsp;HTML이&amp;nbsp;다소&amp;nbsp;복잡해&amp;nbsp;보일&amp;nbsp;수&amp;nbsp;있다는&amp;nbsp;단점도&amp;nbsp;있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; 유틸리티 퍼스트 CSS가 웹크롤링 할 때 까다로운 이유&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;안타깝게도 &quot;유틸리스 클래스&quot; 방식의 웹 사이트는 제가 지금까지 블로그나 책을 통해서 알려드린 방법으로 웹크롤링하기가 매우 까다롭습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이유는 많지만 딱하나만 꼽아도 충분할 것 같습니다. 그 이유는 바로 띄어쓰기가 많다는 것입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래와 같이 class name이나 id에 가끔 띄어쓰기가 존재하는 경우에는&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&amp;nbsp;빈칸 대신 . (dot)을 입력해 주어야 합니다.&lt;span&gt; 모를 때는 정말 고생하는 내용이고 알더라도 위에서 보신 클래스명과 같은 경우는 모든 빈칸들을 .으로 변경해줘야하기 때문에 매우 번거롭습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;247&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I1IxL/btsJFEdT3cB/Wieb06ibqQkGeWO183ku71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I1IxL/btsJFEdT3cB/Wieb06ibqQkGeWO183ku71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I1IxL/btsJFEdT3cB/Wieb06ibqQkGeWO183ku71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI1IxL%2FbtsJFEdT3cB%2FWieb06ibqQkGeWO183ku71%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;524&quot; height=&quot;247&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;247&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1726712696705&quot; class=&quot;python&quot; style=&quot;background-color: #fafafa; color: #000000; text-align: start;&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;driver.find_element(By.CLASS_NAME, &quot;thumb.api_get&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; text-align: justify;&quot; 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: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; XPATH를 이용한 CLASS_NAME 인덱싱&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그럼 기존 방식과 새로 알려드릴 방식을 비교하며 설명드려 보겠습니다. &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;자세히 보시면 &quot; &quot;로 쌓여진 클래스명에는 7개의 띄어쓰기가 존재합니다. 기존 방식으로는 이 띄어쓰기를 하나씩 찾아서 .으로 바꿔줘야 하죠.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[크롤링할 HTML 요소]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1726713377737&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;a class=&quot;btn_pgnext inline-block h-[38px] w-[37px] bg-[url(https://common.jobplanet.co.kr/images/common/global_spt.png)] bg-[-96px_0] bg-no-repeat hover:bg-[-96px_-48px]&quot; href=&quot;&quot;&amp;gt;&amp;lt;span class=&quot;sr-only&quot;&amp;gt;Next&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[기존 방식]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1726713159432&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;driver.find_element(By.CLASS_NAME, &quot;btn_pgnext.inline-block.h-[38px].w-[37px].bg-[url(https://common.jobplanet.co.kr/images/common/global_spt.png)].bg-[-96px_0].bg-no-repeat.hover:bg-[-96px_-48px]&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[BY.XPATH 방식]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1726711148946&quot; class=&quot;python&quot; style=&quot;background-color: #fafafa; color: #000000; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;driver.find_element(By.XPATH, &quot;//*[@class='btn_pgnext inline-block h-[38px] w-[37px] bg-[url(https://common.jobplanet.co.kr/images/common/global_spt.png)] bg-[-96px_0] bg-no-repeat hover:bg-[-96px_-48px]']&quot;)&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;하지만 driver.find_element(By.XPATH,&amp;nbsp;&quot;//*[@class=&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;'btn_pgnext&amp;nbsp;inline-block&amp;nbsp;h-[38px]&amp;nbsp;w-[37px]&amp;nbsp;bg-[url(&lt;a style=&quot;color: #ef5369;&quot; href=&quot;https://common.jobplanet.co.kr/images/common/global_spt.png)]&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://common.jobplanet.co.kr/images/common/global_spt.png)]&lt;/a&gt;&amp;nbsp;bg-[-96px_0]&amp;nbsp;bg-no-repeat&amp;nbsp;hover:bg-[-96px_-48px]'&lt;/b&gt;&lt;/span&gt;]&quot;) 와 같이 붉은색으로 표시된 부분에 클래스명을 그대로 붙여넣어 주기만 하면 띄어쓰기에 대한 고민 없이 웹 크롤링이 가능합니다.&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;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이외에도 XPATH를 활용해서 HTML 요소를 찾는 방법들을&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;오늘 준비한 내용은 여기까지입니다. 오늘도 코딩유치원을 찾아주셔서 감사합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>파이썬 패키지/웹 크롤링</category>
      <category>class_name</category>
      <category>find_element(by.class_name)</category>
      <category>find_element(by.xpath)</category>
      <category>NoSuchElementException</category>
      <category>Python</category>
      <category>Selenium</category>
      <category>XPath</category>
      <category>유틸리티 퍼스트 css</category>
      <category>클래스명 빈칸</category>
      <category>테일윈드css</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/239</guid>
      <comments>https://coding-kindergarten.tistory.com/239#entry239comment</comments>
      <pubDate>Thu, 19 Sep 2024 11:53:13 +0900</pubDate>
    </item>
    <item>
      <title>[Python/PyMuPDF] 파이썬으로 PDF 문서에서 특정 텍스트 형광펜으로 표시하기</title>
      <link>https://coding-kindergarten.tistory.com/236</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;도 배울 수 있으니 많은 관심 부탁드립니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; 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;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l9YOH/btsFFPEMvj3/C8CC6KBP0g0rXg3zJU4KyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l9YOH/btsFFPEMvj3/C8CC6KBP0g0rXg3zJU4KyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l9YOH/btsFFPEMvj3/C8CC6KBP0g0rXg3zJU4KyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl9YOH%2FbtsFFPEMvj3%2FC8CC6KBP0g0rXg3zJU4KyK%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 어느 독자분의 질문에 답해드리기 위해서 글을 써보려 합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;질문의 핵심은 다음과 같았습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;u&gt; &lt;span style=&quot;background-color: #ffffff; color: #222222; text-align: start;&quot;&gt;파이썬으로 PDF 파일을 읽어서 검색으로 특정 문자를 찾고 그 문제에 대해 형광펜으로 강조하고 싶은데, 어떻게 해야할지 몰라 문의드립니다.&lt;/span&gt; &lt;/u&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;자 그럼 이 문제를 해결하기 위해서 함께 방법을 알아보겠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;PyMuPDF란?&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot;&gt;PyMuPDF는 Python용 PDF 처리 라이브러리로, PDF 파일의 생성, 수정, 추출, 텍스트 검색, 이미지 추출 등 다양한 작업을 수행할 수 있습니다. 챗GPT에게 물어보니 제가 항상 사용하던 PyPDF2 보다 더&amp;nbsp; &lt;span style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot;&gt;빠른 속도와 더 많은 기능을 제공하며, 특히 큰 규모의 PDF 파일에 대해서도 효율적으로 작동하는 &lt;span style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot;&gt;패키지라고 하네요.&lt;/span&gt; &lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #0d0d0d;&quot;&gt;패키지 설치는 터미널에 아래의 코드를 입력 후 엔터를 눌러주시면 진행 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1710075819386&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install pymupdf&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;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1219&quot; data-origin-height=&quot;154&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2hmDr/btsFFMHM62d/sUEHSC3Z0Gq9yiJOW6Gb01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2hmDr/btsFFMHM62d/sUEHSC3Z0Gq9yiJOW6Gb01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2hmDr/btsFFMHM62d/sUEHSC3Z0Gq9yiJOW6Gb01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2hmDr%2FbtsFFMHM62d%2FsUEHSC3Z0Gq9yiJOW6Gb01%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;640&quot; height=&quot;154&quot; data-origin-width=&quot;1219&quot; data-origin-height=&quot;154&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;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;형광펜으로 특정 문자 강조하기&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;새롭게 알게 된 PyMuPDF의 전체적인 기능에 대해서는 차차 알아가는 걸로 하고, 오늘은 바로 독자분의 궁금증을 해결해보도록 하겠습니다. 전체적인 코드는 아래와 같습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;주석을 자세하게 달아 두었으니 코드의 흐름만 간단히 써보겠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1) PyMuPDF 패키지 import (불러올 때는 fitz라는 이름으로 불러옴에 주의!)&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2) 불러올 pdf 경로, 저장할 경로, 검색할 텍스트 변수에 입력&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3) 앞서 정의한 함수(higlight_text_in_pdf)에 인자 입력하여 함수 실행&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4) 함수 내부 동작&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; - 강조하고 싶은 PDF 불러오기&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; - 전체 페이지 각각 가져오면서 텍스트 검색&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; - 검색 텍스트와 일치된 텍스트 강조 (색상은 R, G, B 순이며 1,1,0은 노란색, 0,1,0은 초록색)&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; - 저장 후 닫기&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1710076005786&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# PyMuPDF 패키지 불러오기
import fitz  

# 함수 정의
def highlight_text_in_pdf(input_pdf_path, output_pdf_path, search_text):

    # PDF 파일 열기
    pdf_document = fitz.open(input_pdf_path)

    # PDF의 각 페이지를 순회하며
    for page_number in range(len(pdf_document)):
        # 페이지 가져오기
        page = pdf_document.load_page(page_number)

        # 페이지에서 텍스트 검색
        matches = page.search_for(search_text)

        # 각 일치 항목을 강조
        for match in matches:
            # 일치 항목의 사각형 좌표 가져오기
            highlight = page.add_highlight_annot(match)

            # 강조의 색상 설정 (예: 노란색)
            highlight.set_colors({&quot;stroke&quot;: (1, 1, 0), &quot;fill&quot;: (1, 1, 0)})

    # 수정된 PDF 저장
    pdf_document.save(output_pdf_path)
    pdf_document.close()

# 사용 예시
input_pdf_path = &quot;input.pdf&quot;  # 입력 PDF 파일 경로
output_pdf_path = &quot;output.pdf&quot;  # 출력 PDF 파일 경로
search_text = &quot;검색할_텍스트&quot;  # 검색하고자 하는 텍스트

# 함수 실행
highlight_text_in_pdf(input_pdf_path, output_pdf_path, search_text)&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;&lt;b&gt;[실행 결과] _ 보유하고 있던 PDF 문서에서 '빅데이터'만 노란색 형광펜 표시&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;1143&quot; data-origin-height=&quot;522&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Wbux1/btsFDGPlrSd/OWSWic21MtnMn9kGRe6mCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Wbux1/btsFDGPlrSd/OWSWic21MtnMn9kGRe6mCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Wbux1/btsFDGPlrSd/OWSWic21MtnMn9kGRe6mCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWbux1%2FbtsFDGPlrSd%2FOWSWic21MtnMn9kGRe6mCK%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;1143&quot; height=&quot;522&quot; data-origin-width=&quot;1143&quot; data-origin-height=&quot;522&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;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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 준비한 내용은 여기까지 입니다. 오늘 배운 PyMuPDF를 이용해 텍스트나 이미지도 추출 가능하다고 하니 빨리 공부해서 포스팅 해보도록 하겠습니다.&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;</description>
      <category>파이썬 패키지/PDF</category>
      <category>PDF 자동화</category>
      <category>PDF 텍스트 강조</category>
      <category>PDF 형광펜</category>
      <category>PyMuPDF</category>
      <category>pymupdf fitz</category>
      <category>pymupdf hilight</category>
      <category>python pymupdf</category>
      <category>PythonPDF</category>
      <category>파이썬 pdf</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/236</guid>
      <comments>https://coding-kindergarten.tistory.com/236#entry236comment</comments>
      <pubDate>Sun, 10 Mar 2024 22:23:14 +0900</pubDate>
    </item>
    <item>
      <title>[qrcode/segno] 파이썬으로 qrcode 자동 생성하기</title>
      <link>https://coding-kindergarten.tistory.com/235</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;코딩유치원에서는&amp;nbsp;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;부터&amp;nbsp;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;nbsp;등의&amp;nbsp;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #333333;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://coding-kindergarten.tistory.com/203&quot;&gt;2022.03.11 - [파이썬 패키지/라이브러리&amp;amp;패키지 소개] - 파이썬 주요 라이브러리 정리&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;업무는 물론 투자에도 도움이 될만한&amp;nbsp;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;나&amp;nbsp;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;도 배울 수 있으니 많은 관심 부탁드립니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; 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;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brRwNm/btsEZCMjUZT/GxXSZV8InT5gMykXlu7kY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brRwNm/btsEZCMjUZT/GxXSZV8InT5gMykXlu7kY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brRwNm/btsEZCMjUZT/GxXSZV8InT5gMykXlu7kY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrRwNm%2FbtsEZCMjUZT%2FGxXSZV8InT5gMykXlu7kY0%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt; 이번 시간에는  qrcode와 segno 패키지로 qrcode를 생성하는 방법을 공부해보겠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;두 패키지를 모두 학습하는 이유는 qrcode는 png, jpeg, bmp 등의 이미지 형식의 확장자로만 qrcode가 저장되며, 여러 옵션을 선택할 수 있지만 SVG 형태로 저장이 불가능하기 때문입니다. 확대 시에도 이미지가 깨지지 않는 SVG 확장자로 저장하기 위해서는 segno 패키지를 사용하여야 합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&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;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; qrcode 라이브러리&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1) 설치&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;설치는 pip install qrcode 명령을 cmd 창 혹은 주피터노트북 창에 입력하시면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1708250353111&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install qrcode&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2) 초간단 사용법&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;사용법은 매우 간단합니다. 아래의 코드가 qrcode 라이브러리의 거의 전부거든요.&lt;/p&gt;
&lt;pre id=&quot;code_1708250372319&quot; class=&quot;python&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import qrcode

# 데이터 생성
data = &quot;https://www.example.com&quot;
qr = qrcode.QRCode(
    version=1,
    error_correction=qrcode.constants.ERROR_CORRECT_L,
    box_size=10,
    border=4,
)

# 데이터 추가
qr.add_data(data)
qr.make(fit=True)

# QR 코드 이미지 생성
img = qr.make_image(fill='black', back_color='white')

# 이미지 파일로 저장
img.save(&quot;example_qr.png&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;보시면 다양한 옵션이 있는데 이 옵션들이 무엇을 의미하는지 하나씩 설명드리겠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[version]&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;QR 코드의 버전을 지정합니다. 값은 1에서 40 사이여야 하며, 숫자가 높을수록 QR 코드의 크기가 커지고 더 많은 데이터를 저장할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-02-18 오후 7.09.25.png&quot; data-origin-width=&quot;3396&quot; data-origin-height=&quot;2092&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpOii2/btsEZl43u60/UbP97U9kN3t8JdiGyLxKc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpOii2/btsEZl43u60/UbP97U9kN3t8JdiGyLxKc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpOii2/btsEZl43u60/UbP97U9kN3t8JdiGyLxKc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpOii2%2FbtsEZl43u60%2FUbP97U9kN3t8JdiGyLxKc1%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;640&quot; height=&quot;394&quot; data-filename=&quot;스크린샷 2024-02-18 오후 7.09.25.png&quot; data-origin-width=&quot;3396&quot; data-origin-height=&quot;2092&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;[error_correction]&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;QR 코드의 오류 보정 수준을 설정합니다. 즉 QR 코드가 더럽혀지거나 손상되었을 때도 원하는 url 페이지로 이동할 수 있게 해주는 수준에 대한 옵션입니다. 다음 네 가지 수준 중 하나를 선택할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;ERROR_CORRECT_L: 약 7%의 오류를 복구&lt;br /&gt;ERROR_CORRECT_M (기본값): 약 15%의 오류를 복구&lt;br /&gt;ERROR_CORRECT_Q: 약 25%의 오류를 복구&lt;br /&gt;ERROR_CORRECT_H: 약 30%의 오류를 복구&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;참고로 오류 복구 수준이 높아질 수록 Data Size가 커진다고 하지만 제가 테스트 해보니 유의미한 차이는 없었습니다. 또한 ChatGPT에게 오류 복구 수준이 높아지만 훼손된 QR코드가 원하지 않는 url로 이동하는 링크로 복구 해주는 것이 아니냐는 질문에는 그렇지는 않다고 하네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-02-18 오후 7.15.28.png&quot; data-origin-width=&quot;1146&quot; data-origin-height=&quot;162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAJjzk/btsEZbVK2ib/KKadu2d20FKoEOLHozXn41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAJjzk/btsEZbVK2ib/KKadu2d20FKoEOLHozXn41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAJjzk/btsEZbVK2ib/KKadu2d20FKoEOLHozXn41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAJjzk%2FbtsEZbVK2ib%2FKKadu2d20FKoEOLHozXn41%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;640&quot; height=&quot;90&quot; data-filename=&quot;스크린샷 2024-02-18 오후 7.15.28.png&quot; data-origin-width=&quot;1146&quot; data-origin-height=&quot;162&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[box_size]&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;QR 코드의 각 박스(픽셀)의 크기를 지정합니다. 이 값은 생성되는 이미지의 전체 크기에 영향을 미칩니다. 아래는 box_size를 10으로 했을 때와 100으로 했을 때의 크기 차이입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-02-18 오후 7.22.34.png&quot; data-origin-width=&quot;2814&quot; data-origin-height=&quot;1650&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uotzq/btsEXqMSO8h/dIwMC35IkkuK1fABqkSXF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uotzq/btsEXqMSO8h/dIwMC35IkkuK1fABqkSXF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uotzq/btsEXqMSO8h/dIwMC35IkkuK1fABqkSXF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fuotzq%2FbtsEXqMSO8h%2FdIwMC35IkkuK1fABqkSXF1%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;640&quot; height=&quot;375&quot; data-filename=&quot;스크린샷 2024-02-18 오후 7.22.34.png&quot; data-origin-width=&quot;2814&quot; data-origin-height=&quot;1650&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;[border]&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;QR 코드 이미지 주변의 테두리 크기를 박스 단위로 지정합니다. 기본값은 4입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-02-18 오후 7.28.51.png&quot; data-origin-width=&quot;3564&quot; data-origin-height=&quot;1974&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAWCN7/btsEYDL0Fxf/FFJn6sMpaUd3Z4YPWTNFOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAWCN7/btsEYDL0Fxf/FFJn6sMpaUd3Z4YPWTNFOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAWCN7/btsEYDL0Fxf/FFJn6sMpaUd3Z4YPWTNFOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAWCN7%2FbtsEYDL0Fxf%2FFFJn6sMpaUd3Z4YPWTNFOk%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;3564&quot; height=&quot;1974&quot; data-filename=&quot;스크린샷 2024-02-18 오후 7.28.51.png&quot; data-origin-width=&quot;3564&quot; data-origin-height=&quot;1974&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; segno 라이브러리&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1) 설치&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;설치는 pip install qrcode 명령을 cmd 창 혹은 주피터노트북 창에 입력하시면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1708252291855&quot; class=&quot;python&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;pip install segno&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;b&gt;2) 초간단 사용법&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;segno의 사용법은 더 간단합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1708252823673&quot; class=&quot;python&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import segno

# QR 코드 생성
qr = segno.make(&quot;https://www.google.com&quot;, error='H', version=3)

# SVG 형식으로 저장
qr.save('qr-segno.svg', scale=10)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;segno 패키지는 크게 make 함수와 save 함수가 있습니다. qrcode 패키지와 마찬가지로 다양한 옵션이 있는데 필요한 옵션들 위주로 각각 무엇을 의미하는지 하나씩 설명드리겠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;make 함수의 옵션&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[error]&lt;/b&gt;&lt;br /&gt;QR 코드의 오류 보정 수준을 설정합니다. 가능한 값은 'L', 'M', 'Q', 'H' 입니다. 위에서 배운 qrcode와 동일한 개념이므로 자세한 설명은 생략하겠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;[version]&lt;/b&gt;&lt;br /&gt;QR 코드의 버전을 설정합니다. 별도로 설정하지 않으면 기본적으로 segno가 자동으로 적절한 버전을 선택합니다. 마찬가지로 &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;위에서 배운 qrcode와 동일한 개념이므로 자세한 설명은 생략하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[micro]&lt;/b&gt;&lt;br /&gt;True로 설정하면 마이크로 QR 코드를 생성합니다. 마이크로 QR 코드는 작은 양의 데이터를 위해 최적화된 작은 QR 코드입니다. 제가 테스트 해보니 url 데이터는 담지 못하고 숫자나 문자 정도만 담을 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; save 함수의 옵션&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;save 함수의 경우에는 위에서 배웠던 box_size 옵션과 비슷하게 scale 옵션을 이용하여 qrcode의 사이즈를 조절할 수 있고, bolder 옵션과 같이 quiet_zone 옵션을 이용하여 여백의 사이즈를 조절할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[scale]&lt;/b&gt;&lt;br /&gt;QR&amp;nbsp;코드의&amp;nbsp;크기를&amp;nbsp;조정합니다.&amp;nbsp;scale&amp;nbsp;값은&amp;nbsp;QR&amp;nbsp;코드의&amp;nbsp;각&amp;nbsp;모듈(픽셀)의&amp;nbsp;크기를&amp;nbsp;결정합니다.&amp;nbsp;예를&amp;nbsp;들어,&amp;nbsp;scale=2는&amp;nbsp;기본&amp;nbsp;크기의&amp;nbsp;두&amp;nbsp;배&amp;nbsp;크기로&amp;nbsp;QR&amp;nbsp;코드를&amp;nbsp;생성합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[quiet_zone]&lt;/b&gt;&lt;br /&gt;QR&amp;nbsp;코드&amp;nbsp;주변의&amp;nbsp;여백(quiet&amp;nbsp;zone)의&amp;nbsp;크기를&amp;nbsp;설정합니다.&amp;nbsp;이&amp;nbsp;값은&amp;nbsp;모듈의&amp;nbsp;수로&amp;nbsp;지정되며,&amp;nbsp;QR&amp;nbsp;코드&amp;nbsp;표준에&amp;nbsp;따라&amp;nbsp;기본값은&amp;nbsp;4입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[kind]&lt;/b&gt;&lt;br /&gt;저장할&amp;nbsp;파일의&amp;nbsp;형식을&amp;nbsp;지정합니다.&amp;nbsp;예를&amp;nbsp;들어,&amp;nbsp;'png',&amp;nbsp;'svg',&amp;nbsp;'eps',&amp;nbsp;'pdf'&amp;nbsp;등을&amp;nbsp;지정할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;파일&amp;nbsp;확장자를&amp;nbsp;통해&amp;nbsp;자동으로&amp;nbsp;결정되기도&amp;nbsp;하지만,&amp;nbsp;이&amp;nbsp;옵션을&amp;nbsp;통해&amp;nbsp;명시적으로&amp;nbsp;형식을&amp;nbsp;지정할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; 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 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘 준비한 내용은 여기까지입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;최근 글을 블로그에 소홀해서 글을 많이 올리지 않았는데 좀 더 분발해 보도록 해보겠습니다.&lt;/p&gt;</description>
      <category>파이썬 패키지/이미지 처리</category>
      <category>python qrcode</category>
      <category>python qrcode library</category>
      <category>python qrcode 생성</category>
      <category>Qrcode</category>
      <category>qrcode generator</category>
      <category>qrcode svg</category>
      <category>QRCode 만들기</category>
      <category>qrcode 생성</category>
      <category>segno</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/235</guid>
      <comments>https://coding-kindergarten.tistory.com/235#entry235comment</comments>
      <pubDate>Sun, 18 Feb 2024 20:10:02 +0900</pubDate>
    </item>
    <item>
      <title>[python/selenium] Chromdriver 115 버전 이후의 에러의 발생원인과 해결방법</title>
      <link>https://coding-kindergarten.tistory.com/233</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #ef5369;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://coding-kindergarten.tistory.com/203&quot;&gt;2022.03.11 - [파이썬 패키지/라이브러리&amp;amp;패키지 소개] - 파이썬 주요 라이브러리 정리&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; 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;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4Dgvc/btsueLfcwVu/k4ZTOy2790bzkkAKWolpa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4Dgvc/btsueLfcwVu/k4ZTOy2790bzkkAKWolpa1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4Dgvc/btsueLfcwVu/k4ZTOy2790bzkkAKWolpa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4Dgvc%2FbtsueLfcwVu%2Fk4ZTOy2790bzkkAKWolpa1%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 23년 7월경 부터 발생하기 시작한 Chromedriver 에러의 원인과 해결법에 대해서 알아보겠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;[요약]&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1) 크롬 드라이버는 114 버전 이후 배포 방식을 다르게 변경하여서 webdriver_manager로는 자동 다운로드가 되지 않음.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2) 사실은 selenium 4.6 버전 (&lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;2022년 4월) 이후로 webdriver_manager 없이 크롬 드라이버 자동 다운로드가 가능함.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot;&gt;3) 현재 2023년 9월 16일 기준, selenium 버전은 4.12이며, pip install --upgrade selenium으로 업그레이드 한 후, 아래의 코드로 실행하면 크롬 드라이버 115버전 이상도 자동 다운로드가 됨.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1694855949247&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from selenium import webdriver

# chromedriver 자동 다운로드 됨
driver = webdriver.Chrome()

driver.get('https://www.naver.com')&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; 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;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;History&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1) 직접 다운로드 방식&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;Chromedriver를 처음 배울 때에는 크롬이 업데이트 될 때마다 크롬 드라이버를 다운로드하는 곳에서 매번 크롬과 동일한 버전의 Chromedriver를 다운로드 받아서 사용했습니다. 다운로드 경로를 설정해줘야 하고, 크롬 버전이 자동 업데이트 되면 코드가 에러가 나는 불편함이 있었죠.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(참고글: &amp;nbsp;&lt;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://coding-kindergarten.tistory.com/23&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2021.03.23 - [파이썬 패키지/웹 크롤링] - [Python/웹 크롤링] 크롬드라이버 크롬 버전에 맞춰서 설치하는법&lt;/a&gt;&lt;/span&gt;&lt;/u&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_1694852949498&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from selenium import webdriver

# chromedriver가 저장된 경로 직접 입력
driver = webdriver.Chrome(r'C:\users\chromedriver.exe')

driver.get('https://www.naver.com')&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;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2) 자동 다운로드 방식 (With webdriver_manager)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;매번 크롬 버전에 맞춰서 다운로드 받아야하는 불편함을 해결하기 위해서, webdriver_manager라는 모듈을 설치해서 코드를 실행할 때마다 사용자의 크롬 버전에 맞는 크롬 드라이버를 자동 설치하는 방식으로 변경하였습니다. 저도 이 방식으로 최근까지 사용해왔습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1694853790595&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

chrome_service = Service(executable_path=ChromeDriverManager().install())
driver = webdriver.Chrome(service=chrome_service)

driver.get('https://www.naver.com')&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; Chromdriver 버전 에러 발생 원인&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;webdriver_manager는 Chromedriver를 다운로드 받는 사이트(&lt;a href=&quot;https://chromedriver.chromium.org/downloads&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;https://chromedriver.chromium.org/downloads&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;)에서 자동으로 크롬 버전에 맞는 크롬 드라이버를 다운로드 받습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그러나 114버전 (23년 5월 31일 릴리즈)를 마지막으로 해당 사이트에서는 크롬 드라이버를 배포 하지 않고, 7월 중순경 부터 &lt;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://googlechromelabs.github.io/chrome-for-testing/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://googlechromelabs.github.io/chrome-for-testing/&lt;/a&gt;&lt;/span&gt;&lt;/u&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;1713&quot; data-origin-height=&quot;891&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLS4eC/btst6jxwZvc/nnECNy2Ibiu9BVdlki8KCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLS4eC/btst6jxwZvc/nnECNy2Ibiu9BVdlki8KCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLS4eC/btst6jxwZvc/nnECNy2Ibiu9BVdlki8KCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLS4eC%2Fbtst6jxwZvc%2FnnECNy2Ibiu9BVdlki8KCK%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;1713&quot; height=&quot;891&quot; data-origin-width=&quot;1713&quot; data-origin-height=&quot;891&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이러한 이유로 webdriver_manger를 통한 자동 다운로드 방식은 더 이상 사용하지 못하게 되었습니다. 이로 인해 전세계적으로 수 많은 selenium 유저들이 혼란을 겪기 시작했죠.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;Chromdriver 버전 에러 해결 방법&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;정말 많은 해결 방법들이 여러 블로그를 통해서 나오고 있지만 명료하지가 않습니다. 결론만 말씀드리면 현재 글을 작성하는 2023년 9월 16일 기준으로 selenium 최신 버전은 4.12.0이며, 4.6.0 미만의 버전을 사용하시는 경우는 버전을 업그레이드 하시고 아래의 코드를 사용하시면 됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[버전 확인 방법]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1694854958787&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip show selenium&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[실행 결과]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1694855038538&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Name: selenium
Version: 4.5.0
Summary:
Home-page: https://www.selenium.dev
Author:
Author-email:
License: Apache 2.0
Location: C:\Users\SANGWOO\AppData\Local\Programs\Python\Python311\Lib\site-packages
Requires: certifi, trio, trio-websocket, urllib3
Required-by:&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[버전 업그레이드 방법]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1694854815947&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install --upgrade selenium&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[실행 결과]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1694855142137&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Installing collected packages: selenium
  Attempting uninstall: selenium
    Found existing installation: selenium 4.5.0
    Uninstalling selenium-4.5.0:
      Successfully uninstalled selenium-4.5.0
Successfully installed selenium-4.12.0&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;selenium 버전을 업그레이드 하셨다면 사용하시는 IDE를 종료했다가 재시작 해주시고, 아래의 코드로 chromedriver를 실행해보세요. webdriver 모듈만으로도 크롬 드라이버 자동 다운로드가 되고 실행되는 것을 확인하실 수 있을거예요.&lt;/p&gt;
&lt;pre id=&quot;code_1694855232882&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from selenium import webdriver

# chromedriver가 저장된 경로 직접 입력
driver = webdriver.Chrome()

driver.get('https://www.naver.com')&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; 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 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이상으로 최근 selenium 사용자들이 가장 많이 겪는, 모르면 너무 답답한 문제의 원인과 해결방법에 대해서 알아보았습니다. 많은 분들께 도움이 되기를 바랍니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>파이썬 패키지/웹 크롤링</category>
      <category>chromedriver 115</category>
      <category>chromedriver 116</category>
      <category>chromedriver 117</category>
      <category>chromedriver 118</category>
      <category>chromedriver download</category>
      <category>chromedriver version 115</category>
      <category>chromedriver 설치</category>
      <category>chromedriver' executable needs to be in path</category>
      <category>selenium chromedriver</category>
      <category>크롬 드라이버 115</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/233</guid>
      <comments>https://coding-kindergarten.tistory.com/233#entry233comment</comments>
      <pubDate>Sat, 16 Sep 2023 18:20:13 +0900</pubDate>
    </item>
    <item>
      <title>[Windows 작업 스케줄러] 파이썬 파일 원하는 시간에 맞춰 실행하기</title>
      <link>https://coding-kindergarten.tistory.com/230</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;코딩유치원에서는&amp;nbsp;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;부터&amp;nbsp;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;nbsp;등의&amp;nbsp;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #333333;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://coding-kindergarten.tistory.com/203&quot;&gt;2022.03.11 - [파이썬 패키지/라이브러리&amp;amp;패키지 소개] - 파이썬 주요 라이브러리 정리&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; 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;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bC1SW6/btspjV2yUz0/lXf0qEygV4q4PbKsuKRGgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bC1SW6/btspjV2yUz0/lXf0qEygV4q4PbKsuKRGgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bC1SW6/btspjV2yUz0/lXf0qEygV4q4PbKsuKRGgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbC1SW6%2FbtspjV2yUz0%2FlXf0qEygV4q4PbKsuKRGgK%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번 시간에는 Windows 환경에서 파이썬 코드를 주기적으로 작동시킬 수 있는 방법에 대해서 소개 드리겠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;예전 글에서 schedule 모듈에 대해 다루어 보았었는데요. schedule 모듈의 경우에는 파이썬 파일이 while문을 통해서 계속 실행되고 있어야 하기 때문에 실제로 적용할 때에는 한계점이 보이는 듯 합니다. 아직 제가 schedule 모듈의 활용법을 잘 몰라서 그런지 모르겠습니다ㅎㅎ&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://coding-kindergarten.tistory.com/164&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2021.11.19 - [파이썬 패키지/스케쥴러] - [Python/Schedule] 정해진 주기(초, 분, 시간, 요일, 특정 시각)마다 함수 실행하기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1690790170693&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;[Python/Schedule] 정해진 주기(초, 분, 시간, 요일, 특정 시각)마다 함수 실행하기&quot; data-og-description=&quot;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다. 코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록 &quot; data-og-host=&quot;coding-kindergarten.tistory.com&quot; data-og-source-url=&quot;https://coding-kindergarten.tistory.com/164&quot; data-og-url=&quot;https://coding-kindergarten.tistory.com/164&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bZsy2q/hyTtoUzNq8/n5CM7oX2wvnZK6DfoCjND1/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/c9Lx58/hyTtmoYmHH/ZlPnJZvlBaZhXY8FCsW071/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/L5LfP/hyTvfPfXYo/i48aCtnUECh7DwNj6YhVg0/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640&quot;&gt;&lt;a href=&quot;https://coding-kindergarten.tistory.com/164&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://coding-kindergarten.tistory.com/164&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bZsy2q/hyTtoUzNq8/n5CM7oX2wvnZK6DfoCjND1/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/c9Lx58/hyTtmoYmHH/ZlPnJZvlBaZhXY8FCsW071/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/L5LfP/hyTvfPfXYo/i48aCtnUECh7DwNj6YhVg0/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_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;[Python/Schedule] 정해진 주기(초, 분, 시간, 요일, 특정 시각)마다 함수 실행하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다. 코딩유치원에서는 파이썬 기초부터 사무자동화, 웹크롤링, 데이터 분석 등의 다양한 패키지까지 초보자도 알기 쉽도록&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;coding-kindergarten.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&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;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt;&lt;span&gt; python 파일을 실행할 batch 파일 만들기&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;python 파일, 그러니깐 .py 파일을 바로 작업 스케줄러로 실행시켜줘도 되지만 이건 경로설정이 초보자에게 조금 어려운 것 같아서 bat 파일을 만드는 방법으로 소개드려보려 합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;1) batch 파일이란?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;배치 파일은 일련의 명령 또는 지침을 포함하는 &quot;.bat&quot; 확장자를 가진 간단한 텍스트 파일입니다. Windows 운영 체제에서 작업을 자동화하거나 여러 명령을 순서대로 실행하는 데 사용됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2) batch 파일 만드는 법&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;batch 파일(.bat)은 텍스트 파일(.txt)을 이용해서 만들기 때문에 어려울 것이 전혀 없어요. 우선 실행시키고자 하는 파이썬 파일과 동일한 폴더에 txt 파일을 만들어 주세요. 폴더의 빈 공간에 우클릭해서 아래의 그림을 참고하셔서 '텍스트 문서'를 클릭하시면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;841&quot; data-origin-height=&quot;947&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/edDIJY/btspnjO0keG/Kx5SMHvyaxfXCLafs1eQQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/edDIJY/btspnjO0keG/Kx5SMHvyaxfXCLafs1eQQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/edDIJY/btspnjO0keG/Kx5SMHvyaxfXCLafs1eQQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FedDIJY%2FbtspnjO0keG%2FKx5SMHvyaxfXCLafs1eQQK%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;480&quot; height=&quot;540&quot; data-origin-width=&quot;841&quot; data-origin-height=&quot;947&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;클릭하시면 새 텍스트 문서.txt가 생성되고, 이름을 바로 바꿀 수가 있는데 편의상 python 파일의 이름과 동일하게 작성해줍니다. 이 때 중요한 것은 .txt 확장자를 .bat로 변경해주는 것입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; 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;504&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzACx5/btspxcheBjP/hT94oK3CxLd5M6NWuog9A0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzACx5/btspxcheBjP/hT94oK3CxLd5M6NWuog9A0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzACx5/btspxcheBjP/hT94oK3CxLd5M6NWuog9A0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzACx5%2FbtspxcheBjP%2FhT94oK3CxLd5M6NWuog9A0%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;400&quot; height=&quot;213&quot; data-origin-width=&quot;945&quot; data-origin-height=&quot;504&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이름을 바꾸신 후에 batch 파일을 그냥 더블 클릭하시면 열리지 않고, 우클릭을 하신 후 편집을 클릭해주셔야해요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;625&quot; data-origin-height=&quot;273&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baCJt4/btspokGRunM/UoKIekccLZR0KN2PjGBDik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baCJt4/btspokGRunM/UoKIekccLZR0KN2PjGBDik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baCJt4/btspokGRunM/UoKIekccLZR0KN2PjGBDik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaCJt4%2FbtspokGRunM%2FUoKIekccLZR0KN2PjGBDik%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;400&quot; height=&quot;175&quot; data-origin-width=&quot;625&quot; data-origin-height=&quot;273&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;편집을 클릭 하셨다면 아래와 같은 메모장 화면이 출력되는데, 아래와 같이 python &quot;실행하고자 하는 파이썬 파일 이름.py&quot;을 입력하시면 됩니다. 잘 입력하셨으면 저장 후 파일을 닫아주세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;385&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m0LrZ/btspCmqeZm7/ayXBEyfElCaVVUNocCKbkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m0LrZ/btspCmqeZm7/ayXBEyfElCaVVUNocCKbkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m0LrZ/btspCmqeZm7/ayXBEyfElCaVVUNocCKbkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm0LrZ%2FbtspCmqeZm7%2FayXBEyfElCaVVUNocCKbkK%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;400&quot; height=&quot;243&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;385&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 이렇게 생성된 batch 파일을 더블 클릭하시면 방금 저장한 python 파일이 실행된답니다.&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;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;u&gt;&lt;b&gt;여기서 잠깐!&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;만약 파이썬 파일의 이름에 공백이 들어가있다면 무조건 쌍따옴표 (&quot; &quot;)를 붙여주셔야 합니다. 컴퓨터는 쌍따옴표가 없으면 띄어쓰기를 문자열의 끝으로 인식하므로 제대로 파이썬 파일을 실행시키지 못합니다.&lt;br /&gt;하지만 여러분들의 파이썬 파일 이름에 공백이 없다면 쌍따옴표를 붙여주지 않으셔도 됩니다.&lt;/blockquote&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;batch 파일을 작업 스케줄러에 등록하기&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;step1.&lt;/b&gt; &lt;/span&gt;batch 파일을 만들었으니, 우리가 원하는 시간에 python 파일이 실행 될 수 있도록 작업 스케줄러에 등록해보겠습니다. 우선 좌측 하단의 '찾기' 창에 작업 스케줄러를 검색하셔서 클릭해주세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1179&quot; data-origin-height=&quot;1021&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dldQ75/btspolFOKYZ/bQ2BqMN7tQw10Uj5GpOkaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dldQ75/btspolFOKYZ/bQ2BqMN7tQw10Uj5GpOkaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dldQ75/btspolFOKYZ/bQ2BqMN7tQw10Uj5GpOkaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdldQ75%2FbtspolFOKYZ%2FbQ2BqMN7tQw10Uj5GpOkaK%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;640&quot; height=&quot;554&quot; data-origin-width=&quot;1179&quot; data-origin-height=&quot;1021&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;step2.&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #f89009; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&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;1526&quot; data-origin-height=&quot;1039&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pH5Q9/btsppIVoxxm/YVRgi3mCR91eOqdwv0UybK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pH5Q9/btsppIVoxxm/YVRgi3mCR91eOqdwv0UybK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pH5Q9/btsppIVoxxm/YVRgi3mCR91eOqdwv0UybK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpH5Q9%2FbtsppIVoxxm%2FYVRgi3mCR91eOqdwv0UybK%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;640&quot; height=&quot;436&quot; data-origin-width=&quot;1526&quot; data-origin-height=&quot;1039&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;step3.&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #f89009; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&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;1043&quot; data-origin-height=&quot;732&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beJOBJ/btspmhDWNDz/7n5lOOz015JWjpfkWevX3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beJOBJ/btspmhDWNDz/7n5lOOz015JWjpfkWevX3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beJOBJ/btspmhDWNDz/7n5lOOz015JWjpfkWevX3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeJOBJ%2FbtspmhDWNDz%2F7n5lOOz015JWjpfkWevX3k%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;640&quot; height=&quot;449&quot; data-origin-width=&quot;1043&quot; data-origin-height=&quot;732&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;step4.&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #f89009; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&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-origin-width=&quot;1043&quot; data-origin-height=&quot;732&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/U6TYk/btspxcuQoem/wwoK3BlvqMAkpS74q2xGDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/U6TYk/btspxcuQoem/wwoK3BlvqMAkpS74q2xGDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/U6TYk/btspxcuQoem/wwoK3BlvqMAkpS74q2xGDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU6TYk%2FbtspxcuQoem%2FwwoK3BlvqMAkpS74q2xGDK%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;640&quot; height=&quot;449&quot; data-origin-width=&quot;1043&quot; data-origin-height=&quot;732&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;step5.&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #f89009; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;앞서 '매일' 옵션을 선택했기 때문에 아래와 같이 매일 언제 작업을 실행할지 설정하는 단계가 나옵니다. 각자 원하시는 시간을 설정하시면 됩니다. 그 아래에 몇일 간격으로 실행할 지도 나오는걸 보니 2를 입력한다면 격일 단위로도 가능하겠네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1043&quot; data-origin-height=&quot;732&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKR4Au/btsplOWh6Ph/sX7cIJUa9GEKxazUVKIez1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKR4Au/btsplOWh6Ph/sX7cIJUa9GEKxazUVKIez1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKR4Au/btsplOWh6Ph/sX7cIJUa9GEKxazUVKIez1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKR4Au%2FbtsplOWh6Ph%2FsX7cIJUa9GEKxazUVKIez1%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;640&quot; height=&quot;449&quot; data-origin-width=&quot;1043&quot; data-origin-height=&quot;732&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;step6.&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #f89009; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&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;1043&quot; data-origin-height=&quot;732&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPKToc/btspCnbH3dS/5OPMfifi7a7eddVDwgk17k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPKToc/btspCnbH3dS/5OPMfifi7a7eddVDwgk17k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPKToc/btspCnbH3dS/5OPMfifi7a7eddVDwgk17k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPKToc%2FbtspCnbH3dS%2F5OPMfifi7a7eddVDwgk17k%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;640&quot; height=&quot;449&quot; data-origin-width=&quot;1043&quot; data-origin-height=&quot;732&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;step7.&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #f89009; text-align: start;&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;가장 어려운(?) 단계입니다. 프로그램/스크립트 칸에는 방금 전 만들었던 batch 파일의 절대 경로를 입력해줍니다. 찾아보기 버튼으로 해당 파일을 GUI 방식으로 선택하셔도 되고, 파일 경로를 복붙해주셔도 됩니다. 단, 복붙하실 때는 쌍따옴표(&quot; &quot;) 안에 경로를 넣어주세요. 이유는 위에서 설명드렸던 이유와 동일합니다.&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;그리고 시작 위치(옵션)는 batch 파일이 위치하는 폴더의 경로를 입력해줍니다. 이때는 쌍따옴표를 넣어주면 안됩니다. 이랬다 저랬다 헷갈리시죠?ㅎㅎ&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1043&quot; data-origin-height=&quot;732&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDPQcE/btsplbRPu17/911Cj2qfSVjlZJMtG0nFX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDPQcE/btsplbRPu17/911Cj2qfSVjlZJMtG0nFX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDPQcE/btsplbRPu17/911Cj2qfSVjlZJMtG0nFX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDPQcE%2FbtsplbRPu17%2F911Cj2qfSVjlZJMtG0nFX0%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;640&quot; height=&quot;449&quot; data-origin-width=&quot;1043&quot; data-origin-height=&quot;732&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;step8.&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #f89009; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&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;1043&quot; data-origin-height=&quot;732&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nxOlV/btspsGJJKB9/JGEKfk2UMDFE89mUrzeXtK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nxOlV/btspsGJJKB9/JGEKfk2UMDFE89mUrzeXtK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nxOlV/btspsGJJKB9/JGEKfk2UMDFE89mUrzeXtK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnxOlV%2FbtspsGJJKB9%2FJGEKfk2UMDFE89mUrzeXtK%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;640&quot; height=&quot;449&quot; data-origin-width=&quot;1043&quot; data-origin-height=&quot;732&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;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1526&quot; data-origin-height=&quot;1039&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ca1eEG/btspxbiuPWO/YvKW3G4TnEgb83IPHtakl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ca1eEG/btspxbiuPWO/YvKW3G4TnEgb83IPHtakl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ca1eEG/btspxbiuPWO/YvKW3G4TnEgb83IPHtakl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fca1eEG%2FbtspxbiuPWO%2FYvKW3G4TnEgb83IPHtakl0%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;640&quot; height=&quot;436&quot; data-origin-width=&quot;1526&quot; data-origin-height=&quot;1039&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;정해진 시간이 되면 아래와 같이 cmd 창이 뜨면서 제가 출력하고자 했던 &quot;Hello Python&quot; 문자열이 출력되는 것을 확인할 수 있습니다. 테스트 하실 때는 현재 시간의 1분 뒤로 설정하시면서 확인해보세요!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;913&quot; data-origin-height=&quot;320&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWkfos/btspE4JPCIq/lKCtoN0YWSlwWiWSfARBRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWkfos/btspE4JPCIq/lKCtoN0YWSlwWiWSfARBRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWkfos/btspE4JPCIq/lKCtoN0YWSlwWiWSfARBRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWkfos%2FbtspE4JPCIq%2FlKCtoN0YWSlwWiWSfARBRk%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;640&quot; height=&quot;224&quot; data-origin-width=&quot;913&quot; data-origin-height=&quot;320&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 테스트를 위해서 만들었던 코드는 아래와 같고 참고로 time.sleep(10)은 cmd 창이 바로 종료되면 확인을 못하기 때문에 추가해주었답니다.&lt;/p&gt;
&lt;pre id=&quot;code_1690789229806&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import time

print(&quot;Hello Python&quot;)
time.sleep(10)&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;오늘 준비한 내용은 여기까지입니다.&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>파이썬 패키지/스케쥴러</category>
      <category>Schedule</category>
      <category>윈도우 작업 스케줄러</category>
      <category>작업 스케줄러</category>
      <category>작업스케줄러 실행</category>
      <category>작업스케줄러 파이썬 실행안됨</category>
      <category>파이썬 자동 실행</category>
      <category>파이썬 작업스케줄러</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/230</guid>
      <comments>https://coding-kindergarten.tistory.com/230#entry230comment</comments>
      <pubDate>Mon, 31 Jul 2023 16:56:18 +0900</pubDate>
    </item>
    <item>
      <title>[AICodeHelper] GPT3.5 Turbo 기반의 VSCODE 익스텐션 소개</title>
      <link>https://coding-kindergarten.tistory.com/229</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;코딩유치원에서는&amp;nbsp;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;부터&amp;nbsp;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;nbsp;등의&amp;nbsp;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #333333;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://coding-kindergarten.tistory.com/203&quot;&gt;2022.03.11 - [파이썬 패키지/라이브러리&amp;amp;패키지 소개] - 파이썬 주요 라이브러리 정리&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;업무는 물론 투자에도 도움이 될만한&amp;nbsp;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;나&amp;nbsp;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;도 배울 수 있으니 많은 관심 부탁드립니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; 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;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/P4Vy3/btsplP13MoP/bXH4acBsdcWOq8jFc5fstk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P4Vy3/btsplP13MoP/bXH4acBsdcWOq8jFc5fstk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P4Vy3/btsplP13MoP/bXH4acBsdcWOq8jFc5fstk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP4Vy3%2FbtsplP13MoP%2FbXH4acBsdcWOq8jFc5fstk%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;지난 시간에 요즘 너무나도 핫한 ChatGPT를 우리가 코드로 직접 사용할 수 있도록 만들어진 OpenAI API의 사용법을 알아보았습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;오늘은 유튜버 코드깎는노인님께서 OpenAI API를 이용해서 개발하신 VSCODE에서 코드와 주석 작성을 도와주거나, 코드 리뷰까지 해주는 정말 유용한 Extension을 소개드리려고 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이 Extension 역시 OpenAI API를 기반으로 만들어졌기 때문에 개인이 발급받은 API key가 필요하며, 사용량에 따라서 비용이 나가게 되는 점 참고 부탁드립니다. &lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; background-color: #ffffff; text-align: start;&quot;&gt;(gpt-3.5-turbo 모델 기준: 1000개의 토큰에 약 0.002달러)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;당연한 이야기지만 이번 내용을 따라오기 위해서는 당연히 VSCODE와 Python 개발환경이 갖추어져 있어야 합니다. 혹시나 설치가 되지 않으신분들은 '개발환경 구축(VScode)' 카테고리의 글들을 참고해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그럼 본론으로 들어가보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;  VSCODE에서 AICodeHelper 설치하기&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt; VSCODE의 좌측에 테트리스 모양의 아이콘을 클릭한 후, 검색창에 'aicodehelper'를 입력하시고 install 버튼을 클릭해서 설치를 해주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-10 오후 10.36.57.png&quot; data-origin-width=&quot;744&quot; data-origin-height=&quot;882&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d9q41n/btr9qBJ9NZG/gB14wsaLNjh6K5qgpJm0fk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d9q41n/btr9qBJ9NZG/gB14wsaLNjh6K5qgpJm0fk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d9q41n/btr9qBJ9NZG/gB14wsaLNjh6K5qgpJm0fk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd9q41n%2Fbtr9qBJ9NZG%2FgB14wsaLNjh6K5qgpJm0fk%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;400&quot; height=&quot;474&quot; data-filename=&quot;스크린샷 2023-04-10 오후 10.36.57.png&quot; data-origin-width=&quot;744&quot; data-origin-height=&quot;882&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;화면이 아래와 같이 바뀌면 설치가 완료된 상태입니다. 설치가 완료되었다면 VSCODE를 종료 후 재시작 해주세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-10 오후 10.42.06.png&quot; data-origin-width=&quot;1804&quot; data-origin-height=&quot;1098&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsx7KA/btr9kjK2u1n/HRxiCEAuBDkAPgSK3zrlmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsx7KA/btr9kjK2u1n/HRxiCEAuBDkAPgSK3zrlmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsx7KA/btr9kjK2u1n/HRxiCEAuBDkAPgSK3zrlmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbsx7KA%2Fbtr9kjK2u1n%2FHRxiCEAuBDkAPgSK3zrlmK%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;1804&quot; height=&quot;1098&quot; data-filename=&quot;스크린샷 2023-04-10 오후 10.42.06.png&quot; data-origin-width=&quot;1804&quot; data-origin-height=&quot;1098&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;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;  AICodeHelper 설정하기&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 완료되었다면 기본 설정에 들어가서 Settings를 클릭해주세요. 윈도우는 어디에 있는지 추후에 찾아서 업데이트 하겠습니다.&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;스크린샷 2023-04-11 오후 11.37.50.png&quot; data-origin-width=&quot;1692&quot; data-origin-height=&quot;914&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PQxoz/btr9DVuP2L7/Dmh5umtUqiWzGTvY41beBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PQxoz/btr9DVuP2L7/Dmh5umtUqiWzGTvY41beBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PQxoz/btr9DVuP2L7/Dmh5umtUqiWzGTvY41beBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPQxoz%2Fbtr9DVuP2L7%2FDmh5umtUqiWzGTvY41beBk%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;1692&quot; height=&quot;914&quot; data-filename=&quot;스크린샷 2023-04-11 오후 11.37.50.png&quot; data-origin-width=&quot;1692&quot; data-origin-height=&quot;914&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;셋팅 해줄 것은 두 가지입니다. 첫번째는 API key를 등록해주는 것이고, 두번째는 언어를 설정해주는 거예요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언어는 선택적인 것이니깐 API key만 잘 등록해주시면 사용하시는데에는 문제가 없답니다.&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;스크린샷 2023-04-11 오후 11.41.04.png&quot; data-origin-width=&quot;2256&quot; data-origin-height=&quot;1592&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBaR4b/btr9Akh9lP2/2x5Lms7arKgOUP5PutjIuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBaR4b/btr9Akh9lP2/2x5Lms7arKgOUP5PutjIuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBaR4b/btr9Akh9lP2/2x5Lms7arKgOUP5PutjIuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBaR4b%2Fbtr9Akh9lP2%2F2x5Lms7arKgOUP5PutjIuK%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;2256&quot; height=&quot;1592&quot; data-filename=&quot;스크린샷 2023-04-11 오후 11.41.04.png&quot; data-origin-width=&quot;2256&quot; data-origin-height=&quot;1592&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;API key를 등록하는 법은 간단합니다. Ctrl+Alt+Shift+Q를 입력 후, 지난 시간 발급 받았던 API Key를 아래의 창에 입력해주시면 됩니다. 만약 까먹으셨다면 다시 발급하시면 되니깐 걱정마세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-11 오후 11.45.36.png&quot; data-origin-width=&quot;2150&quot; data-origin-height=&quot;938&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qNjhr/btr9qCK1Bkl/UTs0IUIptZ4D550yOFGjrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qNjhr/btr9qCK1Bkl/UTs0IUIptZ4D550yOFGjrk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qNjhr/btr9qCK1Bkl/UTs0IUIptZ4D550yOFGjrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqNjhr%2Fbtr9qCK1Bkl%2FUTs0IUIptZ4D550yOFGjrk%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;2150&quot; height=&quot;938&quot; data-filename=&quot;스크린샷 2023-04-11 오후 11.45.36.png&quot; data-origin-width=&quot;2150&quot; data-origin-height=&quot;938&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;span style=&quot;color: #333333; text-align: start;&quot;&gt;입력 후 엔터를 누르시면 화면 우측 하단에 아래와 같은 메세지가 출력됩니다. 그러면 API Key가 정상적으로 등록된 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-11 오후 11.48.01.png&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;118&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IWqW5/btr9zwDlpKd/SqNrSQGoF0biLxwvT2Wcn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IWqW5/btr9zwDlpKd/SqNrSQGoF0biLxwvT2Wcn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IWqW5/btr9zwDlpKd/SqNrSQGoF0biLxwvT2Wcn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIWqW5%2Fbtr9zwDlpKd%2FSqNrSQGoF0biLxwvT2Wcn1%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;400&quot; height=&quot;118&quot; data-filename=&quot;스크린샷 2023-04-11 오후 11.48.01.png&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;118&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;설정창을 조금 아래로 내려보시면 Language 설정창이 나오는데요. 기본으로 들어가 있는 값을 korean으로 바꾸어 주시면 저같은 한국어 능통한 사람이 잘 사용할 수 있답니다ㅎㅎ.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-11 오후 11.50.19.png&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;320&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEjW69/btr9C4r17YH/kw9BJg8jVpTot18tUpZPb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEjW69/btr9C4r17YH/kw9BJg8jVpTot18tUpZPb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEjW69/btr9C4r17YH/kw9BJg8jVpTot18tUpZPb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEjW69%2Fbtr9C4r17YH%2Fkw9BJg8jVpTot18tUpZPb1%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;1584&quot; height=&quot;320&quot; data-filename=&quot;스크린샷 2023-04-11 오후 11.50.19.png&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;320&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;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;  AICodeHelper의 여러가지 기능&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 여기까지 따라 오셨다면 AICodeHelper의 놀라운 성능을 확인해보실 차례입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1) 코드 작성 (단축키: Ctrl+Alt+Shift+g)&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;1부터 10까지의 숫자를 모두 더한 합을 리턴해주는 함수를 만들어 줘&quot;라고 부탁했더니 아래와 같은 함수를 만들어 주네요. 흠잡을 데 없는 함수를 작성해주었습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1681311431177&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def sum_of_numbers():
    # 1부터 10까지의 숫자를 리스트로 만든다.
    numbers = list(range(1, 11))
    # 리스트의 모든 요소를 더한 값을 리턴한다.
    return sum(numbers)&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;Apr-11-2023 23-58-54.gif&quot; data-origin-width=&quot;1002&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ljz57/btr9A0cDpcn/j60cUA4FJjuLR7CsuOdWOK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ljz57/btr9A0cDpcn/j60cUA4FJjuLR7CsuOdWOK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ljz57/btr9A0cDpcn/j60cUA4FJjuLR7CsuOdWOK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/ljz57/btr9A0cDpcn/j60cUA4FJjuLR7CsuOdWOK/img.gif&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;1002&quot; height=&quot;600&quot; data-filename=&quot;Apr-11-2023 23-58-54.gif&quot; data-origin-width=&quot;1002&quot; data-origin-height=&quot;600&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2) &lt;b&gt;&amp;nbsp;주석 작성 (단축키: &lt;/b&gt;Ctrl+Alt+Shift+z)&lt;/b&gt;&lt;/h4&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;Apr-12-2023 00-13-34.gif&quot; data-origin-width=&quot;1004&quot; data-origin-height=&quot;818&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsFvZD/btr9A0XZ1Rn/UYqJ9qA9vbFQI9F9AlYugk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsFvZD/btr9A0XZ1Rn/UYqJ9qA9vbFQI9F9AlYugk/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsFvZD/btr9A0XZ1Rn/UYqJ9qA9vbFQI9F9AlYugk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bsFvZD/btr9A0XZ1Rn/UYqJ9qA9vbFQI9F9AlYugk/img.gif&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;1004&quot; height=&quot;818&quot; data-filename=&quot;Apr-12-2023 00-13-34.gif&quot; data-origin-width=&quot;1004&quot; data-origin-height=&quot;818&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3) &lt;b&gt;리팩토링 (단축키: &lt;/b&gt;Ctrl+Alt+Shift+r )&lt;/b&gt;&lt;/h4&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;Apr-12-2023 00-22-01.gif&quot; data-origin-width=&quot;1004&quot; data-origin-height=&quot;818&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqMsKS/btr9GgS1OmW/MioYNPvNz530Fy1R5zn9G1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqMsKS/btr9GgS1OmW/MioYNPvNz530Fy1R5zn9G1/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqMsKS/btr9GgS1OmW/MioYNPvNz530Fy1R5zn9G1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/cqMsKS/btr9GgS1OmW/MioYNPvNz530Fy1R5zn9G1/img.gif&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;1004&quot; height=&quot;818&quot; data-filename=&quot;Apr-12-2023 00-22-01.gif&quot; data-origin-width=&quot;1004&quot; data-origin-height=&quot;818&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4) &lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;코드 리뷰 (단축키: &lt;/b&gt;Ctrl+Alt+Shift+c)&lt;/b&gt;&lt;/h4&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;lt;코드 리뷰 결과&amp;gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# |이 코드의 좋은 점은 함수가 잘 구성되어 있다는 것입니다. 함수는 1부터 10까지의 숫자를 리스트로 만들고, 그 리스트의 모든 요소를 더한 값을 리턴합니다. 이렇게 함수를 작성하면 코드의 재사용성이 높아지고, 유지보수가 쉬워집니다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# |&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# |하지만 이 코드의 단점은 함수의 이름이 명확하지 않다는 것입니다. 함수 이름이 &quot;sum_of_numbers&quot;인데, 실제로는 1부터 10까지의 숫자를 더한 값을 리턴하는 함수입니다. 함수 이름을 &quot;sum_1_to_10&quot;과 같이 더 명확하게 지정하는 것이 좋을 것입니다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;sum_of_numbers():&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 1부터 10까지의 숫자를 리스트로 만든다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;numbers = list(range(&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;))&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# 리스트의 모든 요소를 더한 값을 리턴한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;sum(numbers)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;sum_1_10 = sum_of_numbers()&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;print(sum_1_10)&lt;/span&gt;&lt;/div&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;Apr-12-2023 00-24-54.gif&quot; data-origin-width=&quot;830&quot; data-origin-height=&quot;558&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTqpVG/btr9F97rt9K/LLQu9xBlxKvOK9UFKAf2vK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTqpVG/btr9F97rt9K/LLQu9xBlxKvOK9UFKAf2vK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTqpVG/btr9F97rt9K/LLQu9xBlxKvOK9UFKAf2vK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/cTqpVG/btr9F97rt9K/LLQu9xBlxKvOK9UFKAf2vK/img.gif&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;830&quot; height=&quot;558&quot; data-filename=&quot;Apr-12-2023 00-24-54.gif&quot; data-origin-width=&quot;830&quot; data-origin-height=&quot;558&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 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;Ctrl+Alt+Shift+z&amp;nbsp;주석달기&lt;br /&gt;Ctrl+Alt+Shift+r&amp;nbsp;리팩토링&lt;br /&gt;Ctrl+Alt+Shift+c&amp;nbsp;코드리뷰&lt;br /&gt;Ctrl+Alt+Shift+g&amp;nbsp;자연어명령-&amp;gt;코드&lt;br /&gt;Ctrl+Alt+Shift+m&amp;nbsp;개발&amp;nbsp;이외&amp;nbsp;일반적인&amp;nbsp;질문&lt;br /&gt;(맥 : Shift+Ctrl+Option)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>파이썬 패키지/ChatGPT</category>
      <category>AICodeHelper</category>
      <category>ChatGPT</category>
      <category>chatgpt api</category>
      <category>chatgpt vscode</category>
      <category>vscode</category>
      <category>vscode chatgpt</category>
      <category>vscode extension</category>
      <category>vscode 익스텐션</category>
      <category>코드깎는노인</category>
      <category>파이썬 chatgpt</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/229</guid>
      <comments>https://coding-kindergarten.tistory.com/229#entry229comment</comments>
      <pubDate>Thu, 13 Apr 2023 00:03:29 +0900</pubDate>
    </item>
    <item>
      <title>[Python / OpenAI API] 파이썬으로 ChatGPT 사용하는 법</title>
      <link>https://coding-kindergarten.tistory.com/228</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;코딩유치원에서는&amp;nbsp;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;부터&amp;nbsp;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;&amp;nbsp;등의&amp;nbsp;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #333333;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://coding-kindergarten.tistory.com/203&quot;&gt;2022.03.11 - [파이썬 패키지/라이브러리&amp;amp;패키지 소개] - 파이썬 주요 라이브러리 정리&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;업무는 물론 투자에도 도움이 될만한&amp;nbsp;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;나&amp;nbsp;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;도 배울 수 있으니 많은 관심 부탁드립니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; 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;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NXhbV/btr8MqDjT9c/JhVjfh97jn6mgZeJHwhtsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NXhbV/btr8MqDjT9c/JhVjfh97jn6mgZeJHwhtsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NXhbV/btr8MqDjT9c/JhVjfh97jn6mgZeJHwhtsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNXhbV%2Fbtr8MqDjT9c%2FJhVjfh97jn6mgZeJHwhtsk%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;오늘은 요즘 너무나도 핫한 ChatGPT를 우리가 코드로 직접 사용할 수 있도록 만들어진 OpenAI API의 사용법을 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;개인적으로 ChatGPT를 사용해보면서 너무나도 빨리 변해가는 세상에 두려움도 느끼지만 그만큼 새로운 기회도 많이 생길 것이라 생각합니다. 비록 AI 연구자들만큼 AI의 원리나 이를 구현할 능력은 부족하지만, 그들이 만들어놓은 멋진 서비스들을 이용해서 저의 일에 활용할 수 있다면 그것 역시 큰 가치를 가질 것이라 믿습니다. 마치 자동차를 만들지 못해도 운전을 기가 막히게 잘하는 카레이서들 처럼 말이죠.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;본론으로 들어가기에 앞서, OpenAI API는 사용하는 모델 및 토큰의 양에 따라서 비용이 나가게 됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;(gpt-3.5-turbo 모델 기준: 1000개의 토큰에 약 0.002달러)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;토큰이란 용어가 익숙하지 않으실텐데요. 예를 들어&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt; &quot;The quick brown fox jumped over the lazy dog&quot;이란 무장이 있다고 할 때,&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;토큰은 &quot;The&quot;, &quot;quick&quot;, &quot;brown&quot;, &quot;fox&quot;, &quot;jumped&quot;, &quot;over&quot;, &quot;the&quot;, &quot;lazy&quot;, &quot;dog&quot;. 총 9개라고 할 수 있습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;처음 가입을 하면 5달러를 무료로 제공해주니, 해당 내용을 따라하고 여러분들이 실습해보시는데에 아주아주 충분할 것이라 생각합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그럼 본론으로 들어가보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;  OpenAI API&amp;nbsp; 페이지 접속 및 로그인&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;호랑이를 잡기 위해서는 호랑이 굴로 들어가야겠죠? 맞는 비유인지 모르겠지만 ChatGPT를 잡으러 ChatGPT를 만든 OpenAI 사의 웹페이지로 들어가봅시다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;저는 구글에서 'chatgpt'를 검색했을 때 가장 상단에 나오는 페이지로 들어간 후, 아래의 사진과 같이 'Developers' 메뉴를 클릭하면 나타나는 'API reference'를 클릭했습니다.&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; 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;스크린샷 2023-04-09 오후 12.44.19.png&quot; data-origin-width=&quot;1416&quot; data-origin-height=&quot;1158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rvZRa/btr822nF1so/xDFOuvCcDKhGA7wdaFyebK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rvZRa/btr822nF1so/xDFOuvCcDKhGA7wdaFyebK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rvZRa/btr822nF1so/xDFOuvCcDKhGA7wdaFyebK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrvZRa%2Fbtr822nF1so%2FxDFOuvCcDKhGA7wdaFyebK%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;640&quot; height=&quot;523&quot; data-filename=&quot;스크린샷 2023-04-09 오후 12.44.19.png&quot; data-origin-width=&quot;1416&quot; data-origin-height=&quot;1158&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;편의를 위해서 API 페이지로 바로 가는 링크를 달아두겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://platform.openai.com/docs/api-reference&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://platform.openai.com/docs/api-reference&lt;/a&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;span style=&quot;color: #333333;&quot;&gt;그러면 아래와 같이 로그인(Log in)과 가입(Sign up) 버튼이 나오는데, 가입한 적이 없으시다면 가입해주시고, 이미 가입하셨더면 로그인 해주시면 됩니다. 참고로 구글이나 마이크로소프트 계정을 이용해서 가입하실 수도 있어요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-09 오후 12.51.11.png&quot; data-origin-width=&quot;1750&quot; data-origin-height=&quot;478&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/deqXdn/btr8T5rMxSl/3Jkqqo1c1l7duvR0JAGdM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/deqXdn/btr8T5rMxSl/3Jkqqo1c1l7duvR0JAGdM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/deqXdn/btr8T5rMxSl/3Jkqqo1c1l7duvR0JAGdM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeqXdn%2Fbtr8T5rMxSl%2F3Jkqqo1c1l7duvR0JAGdM0%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;1750&quot; height=&quot;478&quot; data-filename=&quot;스크린샷 2023-04-09 오후 12.51.11.png&quot; data-origin-width=&quot;1750&quot; data-origin-height=&quot;478&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;로그인이 완료되면 아래와 같이 우측 상단에 Personal 버튼이 생깁니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-09 오후 12.51.49.png&quot; data-origin-width=&quot;2312&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRhVjf/btr8OWomQmG/kPaKHKAqq6VblpkUKZL0qK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRhVjf/btr8OWomQmG/kPaKHKAqq6VblpkUKZL0qK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRhVjf/btr8OWomQmG/kPaKHKAqq6VblpkUKZL0qK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRhVjf%2Fbtr8OWomQmG%2FkPaKHKAqq6VblpkUKZL0qK%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;2312&quot; height=&quot;380&quot; data-filename=&quot;스크린샷 2023-04-09 오후 12.51.49.png&quot; data-origin-width=&quot;2312&quot; data-origin-height=&quot;380&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;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt; OpenAI API&amp;nbsp; key 발급받기&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VScode로 넘어가서 OpenAI API를 코드로 다루기 전에 해야할 일이 있습니다. 바로 API key를 발급받는 것입니다.&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;1) 우측 상단에 있는 'Personal'을 클릭하시고, 'View API keys'를 클릭해주세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-09 오후 3.38.11.png&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;948&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crIx7i/btr8Mosc2MU/qd2z8VfNNTXyKcFPhIuqwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crIx7i/btr8Mosc2MU/qd2z8VfNNTXyKcFPhIuqwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crIx7i/btr8Mosc2MU/qd2z8VfNNTXyKcFPhIuqwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrIx7i%2Fbtr8Mosc2MU%2Fqd2z8VfNNTXyKcFPhIuqwK%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;300&quot; height=&quot;948&quot; data-filename=&quot;스크린샷 2023-04-09 오후 3.38.11.png&quot; data-origin-width=&quot;784&quot; data-origin-height=&quot;948&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 그러면 아래와 같은 화면이 나오는데 'Create new secret key' 버튼을 눌러주세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-09 오후 3.39.58.png&quot; data-origin-width=&quot;1684&quot; data-origin-height=&quot;1068&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Tz0eW/btr8Mp5z5Go/wEdknqKIy2D58KWEzRnWWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Tz0eW/btr8Mp5z5Go/wEdknqKIy2D58KWEzRnWWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Tz0eW/btr8Mp5z5Go/wEdknqKIy2D58KWEzRnWWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTz0eW%2Fbtr8Mp5z5Go%2FwEdknqKIy2D58KWEzRnWWk%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;640&quot; height=&quot;406&quot; data-filename=&quot;스크린샷 2023-04-09 오후 3.39.58.png&quot; data-origin-width=&quot;1684&quot; data-origin-height=&quot;1068&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 생성된 키는 아래에 표시된 곳에 생성됩니다. 여기서 'OK'를 바로 누르시면 다시 발급받아야 하므로, 꼭 초록색 버튼을 눌러서 복사한 뒤에, 메모장 같은 곳에 따로 붙여넣어서 저장해주세요. 그리고 다른 사람에게 노출되지 않도록 주의해주세요!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-09 오후 3.47.05.png&quot; data-origin-width=&quot;1350&quot; data-origin-height=&quot;1208&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvHWfG/btr8Lr34rlL/xhXsQFsY3aLDw1sV45xZ40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvHWfG/btr8Lr34rlL/xhXsQFsY3aLDw1sV45xZ40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvHWfG/btr8Lr34rlL/xhXsQFsY3aLDw1sV45xZ40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvHWfG%2Fbtr8Lr34rlL%2FxhXsQFsY3aLDw1sV45xZ40%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;640&quot; height=&quot;573&quot; data-filename=&quot;스크린샷 2023-04-09 오후 3.47.05.png&quot; data-origin-width=&quot;1350&quot; data-origin-height=&quot;1208&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;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt; OpenAI API&amp;nbsp; 설치하기&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 OpenAI API를 파이썬 코드를 이용해서 사용하기 위해서 VSCODE를 켜주세요. 켜셨다면 터미널 창에 아래의 코드를 작성하고 엔터를 눌러주세요.&lt;/p&gt;
&lt;div style=&quot;color: #353740; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;cmake&quot; style=&quot;color: #000000;&quot;&gt;&lt;code&gt;pip install openai&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&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;스크린샷 2023-04-09 오후 4.02.56.png&quot; data-origin-width=&quot;2088&quot; data-origin-height=&quot;436&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cs8rTS/btr8NDP1WLO/Jb9cjrsK8SFMIbbVi4jFU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cs8rTS/btr8NDP1WLO/Jb9cjrsK8SFMIbbVi4jFU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cs8rTS/btr8NDP1WLO/Jb9cjrsK8SFMIbbVi4jFU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcs8rTS%2Fbtr8NDP1WLO%2FJb9cjrsK8SFMIbbVi4jFU0%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;2088&quot; height=&quot;436&quot; data-filename=&quot;스크린샷 2023-04-09 오후 4.02.56.png&quot; data-origin-width=&quot;2088&quot; data-origin-height=&quot;436&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;h3 style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;4.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt; VSCODE 개발환경에서 ChatGPT 구현하기&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 파이썬 코드를 통해서 ChatGPT 페이지가 아닌 터미널에서 ChatGPT와 질문을 주고 받아 보겠습니다.&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;lt;코드&amp;gt;&lt;/p&gt;
&lt;pre class=&quot;python&quot; style=&quot;color: #000000; text-align: start;&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;# openai api를 불러오고, 발급 받은 api key를 문자열로 입력
import openai
openai.api_key = &quot;OPENAI_API_KEY&quot;

# gpt와 주고받은 메세지를 저장할 빈 리스트 생성
messages = []

# 무한 루프 생성 (질문과 답변을 계속 반복)
while True:
    # 사용자의 질문을 입력받고, messages 리스트에 저장
    user_content = input(&quot;사용자: &quot;)
    messages.append({&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: f&quot;{user_content}&quot;})

    # OpenAI의 Chat API 생성
    completion = openai.ChatCompletion.create(
        model=&quot;gpt-3.5-turbo&quot;, messages=messages)

    # 답변 받은 메세지를 messages 리스트에 저장
    assistant_content = completion.choices[0].message[&quot;content&quot;].strip()
    messages.append({&quot;role&quot;: &quot;assistant&quot;, &quot;content&quot;: f&quot;{assistant_content}&quot;})

    # ChatGPT의 답변 출력
    print(f&quot;ChatGPT: {assistant_content}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;출력&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-09 오후 6.32.27.png&quot; data-origin-width=&quot;2146&quot; data-origin-height=&quot;474&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4L7JY/btr8KHMMjvW/jm5zIAsgn94rIvqBqelk9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4L7JY/btr8KHMMjvW/jm5zIAsgn94rIvqBqelk9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4L7JY/btr8KHMMjvW/jm5zIAsgn94rIvqBqelk9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4L7JY%2Fbtr8KHMMjvW%2Fjm5zIAsgn94rIvqBqelk9k%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;2146&quot; height=&quot;474&quot; data-filename=&quot;스크린샷 2023-04-09 오후 6.32.27.png&quot; data-origin-width=&quot;2146&quot; data-origin-height=&quot;474&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 ChatCompletion.create( ) 함수에는 여러가지 파라미터들이 있고, 이것들을 목적에 따라서 조금씩 바꿔가면서 다른 결과를 낼 수 있다고 합니다. 공부를 더 해서 추후에 해당 파라미터들의 의미에 대해서 소개드릴 수 있도록 하겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-09 오후 6.53.03.png&quot; data-origin-width=&quot;1872&quot; data-origin-height=&quot;1994&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDSDti/btr88r8JYSK/UR2zezzwgF15NbnyUHHxmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDSDti/btr88r8JYSK/UR2zezzwgF15NbnyUHHxmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDSDti/btr88r8JYSK/UR2zezzwgF15NbnyUHHxmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDSDti%2Fbtr88r8JYSK%2FUR2zezzwgF15NbnyUHHxmK%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;1872&quot; height=&quot;1994&quot; data-filename=&quot;스크린샷 2023-04-09 오후 6.53.03.png&quot; data-origin-width=&quot;1872&quot; data-origin-height=&quot;1994&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;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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;참고 자료&amp;gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0f0f0f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;파이썬 chatgpt API 사용법(gpt-3.5-turbo) 코드 10줄로 챗GPT 만들기_프로그래머 김플 스튜디오&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=b-QeMi1A2go&quot;&gt;https://www.youtube.com/watch?v=b-QeMi1A2go&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; 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>파이썬 패키지/ChatGPT</category>
      <category>ChatGPT</category>
      <category>chatgpt api</category>
      <category>chatgpt api 요금</category>
      <category>chatgpt api 활용법</category>
      <category>chatgpt python</category>
      <category>chatgpt vscode</category>
      <category>ChatGPT 활용법</category>
      <category>openai api</category>
      <category>python chatgpt</category>
      <category>python chatgpt api</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/228</guid>
      <comments>https://coding-kindergarten.tistory.com/228#entry228comment</comments>
      <pubDate>Sun, 9 Apr 2023 19:01:03 +0900</pubDate>
    </item>
    <item>
      <title>[Python/Serial] 파이썬과 아두이노로 스텝모터 제어하기</title>
      <link>https://coding-kindergarten.tistory.com/227</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;코딩유치원에서는&amp;nbsp;&lt;b&gt;파이썬 기초&lt;/b&gt;부터&amp;nbsp;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석, 머신러닝&lt;/b&gt;&amp;nbsp;등의&amp;nbsp;&lt;b&gt;다양한 패키지&lt;/b&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;업무는 물론 투자에도 도움이 될만한&amp;nbsp;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;나&amp;nbsp;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Au1pE/btrNf9DuVRU/LnMd0eSok5Rh7eh42Ehrdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Au1pE/btrNf9DuVRU/LnMd0eSok5Rh7eh42Ehrdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Au1pE/btrNf9DuVRU/LnMd0eSok5Rh7eh42Ehrdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAu1pE%2FbtrNf9DuVRU%2FLnMd0eSok5Rh7eh42Ehrdk%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;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;a href=&quot;https://coding-kindergarten.tistory.com/179&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2021.12.18 - [파이썬 패키지/아두이노] - [Python/Serial] 파이썬으로 아두이노 제어하기&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664373971265&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;[Python/Serial] 파이썬으로 아두이노 제어하기&quot; data-og-description=&quot;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다. 코딩유치원에서는&amp;nbsp;파이썬 기초부터&amp;nbsp;사무자동화, 웹크롤링, 데이터 분석, 머신러닝&amp;nbsp;등의&amp;nbsp;다양한 패키지까지 초보자도&quot; data-og-host=&quot;coding-kindergarten.tistory.com&quot; data-og-source-url=&quot;https://coding-kindergarten.tistory.com/179&quot; data-og-url=&quot;https://coding-kindergarten.tistory.com/179&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/FANc5/hyPXHBhIJh/EMz7NyZSNjVF39kcV36eck/img.png?width=800&amp;amp;height=430&amp;amp;face=0_0_800_430,https://scrap.kakaocdn.net/dn/brlDL1/hyPXN9lmGL/qacjGaXPJA7XjYtmBkku6k/img.png?width=800&amp;amp;height=430&amp;amp;face=0_0_800_430,https://scrap.kakaocdn.net/dn/bhoF1g/hyPWKsRtpS/943VGCk9kavz8tGC6DpfsK/img.png?width=1022&amp;amp;height=550&amp;amp;face=0_0_1022_550&quot;&gt;&lt;a href=&quot;https://coding-kindergarten.tistory.com/179&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://coding-kindergarten.tistory.com/179&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/FANc5/hyPXHBhIJh/EMz7NyZSNjVF39kcV36eck/img.png?width=800&amp;amp;height=430&amp;amp;face=0_0_800_430,https://scrap.kakaocdn.net/dn/brlDL1/hyPXN9lmGL/qacjGaXPJA7XjYtmBkku6k/img.png?width=800&amp;amp;height=430&amp;amp;face=0_0_800_430,https://scrap.kakaocdn.net/dn/bhoF1g/hyPWKsRtpS/943VGCk9kavz8tGC6DpfsK/img.png?width=1022&amp;amp;height=550&amp;amp;face=0_0_1022_550');&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;[Python/Serial] 파이썬으로 아두이노 제어하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다. 코딩유치원에서는&amp;nbsp;파이썬 기초부터&amp;nbsp;사무자동화, 웹크롤링, 데이터 분석, 머신러닝&amp;nbsp;등의&amp;nbsp;다양한 패키지까지 초보자도&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;coding-kindergarten.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;
&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;개념도&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저의 경우엔 차트를 180도 회전시키는 프로젝트를 진행했었는데 전원이 꺼지면 원점 정보를 잃어버리는 스텝 모터를 보완해주기 위해서 리미트 센서도 함께 사용했었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;432&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Exs8J/btrM6KDjRJ6/KaFtOz29IkpwrbjUBCWDFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Exs8J/btrM6KDjRJ6/KaFtOz29IkpwrbjUBCWDFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Exs8J/btrM6KDjRJ6/KaFtOz29IkpwrbjUBCWDFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FExs8J%2FbtrM6KDjRJ6%2FKaFtOz29IkpwrbjUBCWDFK%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;940&quot; height=&quot;432&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;432&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;준비물&lt;/b&gt;&lt;/h3&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&gt;1) 스테핑모터&lt;span&gt; NK243-01AT 2&lt;/span&gt;상스테핑모터&lt;span&gt;, 23,100&lt;/span&gt;원&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;a href=&quot;https://motorbank.co.kr/product/%EC%8A%A4%ED%85%8C%ED%95%91%EB%AA%A8%ED%84%B0-nk243-01at-2%EC%83%81%EC%8A%A4%ED%85%8C%ED%95%91%EB%AA%A8%ED%84%B0/5618/#none&quot;&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;모터&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;구매&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;링크)&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2) 아두이노 우노&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222;&quot;&gt;3) 아두이노&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222;&quot;&gt; L293D &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222;&quot;&gt;모터&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222;&quot;&gt;드라이버&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #222222;&quot;&gt;쉴드&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;434&quot; data-origin-height=&quot;392&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tvJdt/btrM98WWky9/yWR2zcvmyLAY6UwDA2uqTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tvJdt/btrM98WWky9/yWR2zcvmyLAY6UwDA2uqTK/img.png&quot; data-alt=&quot;DC모터 최대 4개, 스탭모터 최대 2개까지 제어 가능&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tvJdt/btrM98WWky9/yWR2zcvmyLAY6UwDA2uqTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtvJdt%2FbtrM98WWky9%2FyWR2zcvmyLAY6UwDA2uqTK%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;300&quot; height=&quot;271&quot; data-origin-width=&quot;434&quot; data-origin-height=&quot;392&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;DC모터 최대 4개, 스탭모터 최대 2개까지 제어 가능&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4) 리미트 센서&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;280&quot; data-origin-height=&quot;517&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxbE23/btrNhg3kwu5/o7ZJW7Jt8GQHINwkRtvWm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxbE23/btrNhg3kwu5/o7ZJW7Jt8GQHINwkRtvWm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxbE23/btrNhg3kwu5/o7ZJW7Jt8GQHINwkRtvWm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxbE23%2FbtrNhg3kwu5%2Fo7ZJW7Jt8GQHINwkRtvWm0%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;120&quot; height=&quot;222&quot; data-origin-width=&quot;280&quot; data-origin-height=&quot;517&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;size18&quot;&gt;&lt;b&gt;&lt;span&gt;5) 9V 1A &lt;/span&gt;전원 어댑터&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;291&quot; data-origin-height=&quot;397&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LDqiA/btrNhcGM1M6/ZyKfAJmR4dZvbkfC3hho81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LDqiA/btrNhcGM1M6/ZyKfAJmR4dZvbkfC3hho81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LDqiA/btrNhcGM1M6/ZyKfAJmR4dZvbkfC3hho81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLDqiA%2FbtrNhcGM1M6%2FZyKfAJmR4dZvbkfC3hho81%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;150&quot; height=&quot;205&quot; data-origin-width=&quot;291&quot; data-origin-height=&quot;397&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;배선&lt;/b&gt;&lt;/h3&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;참고로 GND에 빨간색과 파란색 선을 연결해주지 않아도 모터가 돌아는 가지만 소음이 심하고 힘도 부족합니다.&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;940&quot; data-origin-height=&quot;302&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEG7YO/btrM5QRiLJA/24QqPleSKhfGbrY1qot3G0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEG7YO/btrM5QRiLJA/24QqPleSKhfGbrY1qot3G0/img.png&quot; data-alt=&quot;모터 드라이버 쉴드&amp;amp;amp;nbsp; &amp;amp;amp;ndash;&amp;amp;amp;nbsp; 모터&amp;amp;amp;nbsp; ( 방향에 주의할 것 )&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEG7YO/btrM5QRiLJA/24QqPleSKhfGbrY1qot3G0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEG7YO%2FbtrM5QRiLJA%2F24QqPleSKhfGbrY1qot3G0%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;640&quot; height=&quot;302&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;302&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;모터 드라이버 쉴드&amp;amp;nbsp; &amp;amp;ndash;&amp;amp;nbsp; 모터&amp;amp;nbsp; ( 방향에 주의할 것 )&lt;/figcaption&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;527&quot; data-origin-height=&quot;371&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q9GEm/btrM6X3rqSe/NPhUB4ifaKR3gQBr7cqYNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q9GEm/btrM6X3rqSe/NPhUB4ifaKR3gQBr7cqYNK/img.png&quot; data-alt=&quot;아두이노 - 리미트 센서&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q9GEm/btrM6X3rqSe/NPhUB4ifaKR3gQBr7cqYNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq9GEm%2FbtrM6X3rqSe%2FNPhUB4ifaKR3gQBr7cqYNK%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;527&quot; height=&quot;371&quot; data-origin-width=&quot;527&quot; data-origin-height=&quot;371&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;아두이노 - 리미트 센서&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;4.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;아두이노&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아두이노 모터 드라이버 쉴드를 사용하기 위해서는 Adafruit Motor Shield library라는 라이브러리를 설치해주어야 합니다.&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;940&quot; data-origin-height=&quot;420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c8vnqK/btrM7nguG1Y/qwQvV6X6Uk8RKsk2mDTIDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c8vnqK/btrM7nguG1Y/qwQvV6X6Uk8RKsk2mDTIDk/img.png&quot; data-alt=&quot;라이브러리 설치방법&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c8vnqK/btrM7nguG1Y/qwQvV6X6Uk8RKsk2mDTIDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc8vnqK%2FbtrM7nguG1Y%2FqwQvV6X6Uk8RKsk2mDTIDk%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;940&quot; height=&quot;420&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;420&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;라이브러리 설치방법&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGFpdC/btrM5O6Z380/XBjfQKAGTTL1Koio2L7aKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGFpdC/btrM5O6Z380/XBjfQKAGTTL1Koio2L7aKK/img.png&quot; data-alt=&quot;검색 후 설치 버튼 클릭&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGFpdC/btrM5O6Z380/XBjfQKAGTTL1Koio2L7aKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGFpdC%2FbtrM5O6Z380%2FXBjfQKAGTTL1Koio2L7aKK%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;940&quot; height=&quot;530&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;530&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;검색 후 설치 버튼 클릭&lt;/figcaption&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;p data-ke-size=&quot;size16&quot;&gt;혹시나 필요하실 분들을 위해 함께 남겼고, 스텝모터만 제어하실 분들은 더 아래의 코드를 이용해주세요.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1664203347003&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#define OFFMODE 0
#define CW 1
#define CCW 2

#include &amp;lt;AFMotor.h&amp;gt;

int sensorPin = 2;
int flag_start;

AF_Stepper motor(200, 2);

char cmd;
int state = OFFMODE;

void setup() {
  Serial.begin(9600);
  motor.setSpeed(8);
  pinMode(sensorPin, INPUT);

  // 가장 처음 스텝모터의 원점을 잡기 위한 코드
  while(true){

    int val = digitalRead(sensorPin);

    if(val==1){
      break;
    }

    Serial.println(val);

    if(val==0){
      motor.step(1, FORWARD, MICROSTEP);
    }
    
    Serial.println(val);
  
    if(val==1){
      break;
    }
  }

}

void loop() {

  if(Serial.available()){
  cmd = Serial.read();
  }
  if(cmd=='a'){
    state=CW;
  }else if(cmd=='b'){
    state=CCW;
  }else{
    state=OFFMODE;
  }

  if(state==CW){
  motor.step(100, FORWARD, MICROSTEP);
  delay(1000);
  state=OFFMODE;
  }
  
  else if(state==CCW){
  motor.step(100, BACKWARD, MICROSTEP);
  delay(1000);
  state=OFFMODE;
  }
  
  else{
  state=OFFMODE;
  }
}&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;lt;리미트 센서 제외한 스텝모터 제어 코드&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1664373250874&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#define OFFMODE 0
#define CW 1
#define CCW 2

#include &amp;lt;AFMotor.h&amp;gt;

//모터 셋팅(360도를 200step으로 설정, 모터 드라이버 쉴드 2번 포트 사용)
AF_Stepper motor(200, 2);

char cmd;
int state = OFFMODE;

void setup() {
  Serial.begin(9600);
  motor.setSpeed(8);
  pinMode(sensorPin, INPUT);
}

void loop() {

  if(Serial.available()){
  cmd = Serial.read();
  }
  if(cmd=='a'){
    state=CW;
  }else if(cmd=='b'){
    state=CCW;
  }else{
    state=OFFMODE;
  }

  //모터 정회전(180도)
  if(state==CW){
  motor.step(100, FORWARD, MICROSTEP);
  delay(1000);
  state=OFFMODE;
  }
  
  //모터 역회전(180도)
  else if(state==CCW){
  motor.step(100, BACKWARD, MICROSTEP);
  delay(1000);
  state=OFFMODE;
  }
  
  else{
  state=OFFMODE;
  }
}&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;5.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;파이썬 코드&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1664203322151&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import serial
import time

py_serial = serial.Serial(

    # serial port 설정
    port = &quot;com3&quot;,
    # 보드 레이트 (통신 속도)
    baudrate=9600
)

while True:

    commend = input('아두이노에게 내릴 명령:')
    
    #정회전
    commend = 'a'
    py_serial.write(commend.encode())
    
    #역회전
    commend = 'b'
    py_serial.write(commend.encode())&lt;/code&gt;&lt;/pre&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;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;</description>
      <category>파이썬 패키지/아두이노</category>
      <category>리미트센서 스텝모터</category>
      <category>아두이노 스텝모터 제어</category>
      <category>아두이노 파이썬</category>
      <category>파이썬 모터 제어</category>
      <category>파이썬 스텝모터</category>
      <category>파이썬 아두이노</category>
      <category>파이썬 아두이노 스텝모터</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/227</guid>
      <comments>https://coding-kindergarten.tistory.com/227#entry227comment</comments>
      <pubDate>Wed, 28 Sep 2022 23:06:15 +0900</pubDate>
    </item>
    <item>
      <title>[파이썬 프로젝트] 파이썬으로 홈쇼핑 편성표 크롤링하기 (날짜, 상품, 가격, 시간대)</title>
      <link>https://coding-kindergarten.tistory.com/226</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&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;size18&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #ef5369;&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://coding-kindergarten.tistory.com/203&quot;&gt;2022.03.11 - [파이썬 패키지/라이브러리&amp;amp;패키지 소개] - 파이썬 주요 라이브러리 정리&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z15au/btrNjAlOJvg/ga4wKYqehwwTSfUKx1HhZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z15au/btrNjAlOJvg/ga4wKYqehwwTSfUKx1HhZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z15au/btrNjAlOJvg/ga4wKYqehwwTSfUKx1HhZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz15au%2FbtrNjAlOJvg%2Fga4wKYqehwwTSfUKx1HhZk%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt;&lt;span&gt; 프로젝트 목표&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;1) 목표 사이트&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://hsmoa.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://hsmoa.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1664367586276&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;홈쇼핑모아 - 모든 홈쇼핑을 한눈에!&quot; data-og-description=&quot;| 5시 14분 ~ 5시 19분 사계절 착용 가능, 클래식 스타일, 트윌 솔리드 셔츠 예작 22FW 최신상 컴포트 셔츠 3종 백화점 매장 동일 정상 제품 109,000원&quot; data-og-host=&quot;hsmoa.com&quot; data-og-source-url=&quot;https://hsmoa.com/&quot; data-og-url=&quot;https://hsmoa.com/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://hsmoa.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://hsmoa.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;홈쇼핑모아 - 모든 홈쇼핑을 한눈에!&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;| 5시 14분 ~ 5시 19분 사계절 착용 가능, 클래식 스타일, 트윌 솔리드 셔츠 예작 22FW 최신상 컴포트 셔츠 3종 백화점 매장 동일 정상 제품 109,000원&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;hsmoa.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;&lt;b&gt;2) 목표 데이터&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 이후 5일간 편성표의 날짜, 상품명, 방송시간, 가격 (사진도 요청하셨지만 난이도가 확 달라지므로 보류)&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;1898&quot; data-origin-height=&quot;572&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B33nl/btrNi5Nbixs/5BsrGY158tTzDFHozVZvq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B33nl/btrNi5Nbixs/5BsrGY158tTzDFHozVZvq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B33nl/btrNi5Nbixs/5BsrGY158tTzDFHozVZvq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB33nl%2FbtrNi5Nbixs%2F5BsrGY158tTzDFHozVZvq1%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;1898&quot; height=&quot;572&quot; data-origin-width=&quot;1898&quot; data-origin-height=&quot;572&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;프로젝트 코드&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1664367477274&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# step1.필요한 패키지와 모듈 불러오기
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import time
import pandas as pd

# step2.오늘 이후의 5일만 선택하기 위한 오늘 날짜 파악
info_time = time.localtime()
today = str(info_time.tm_year) + '0' +str(info_time.tm_mon) + str(info_time.tm_mday) #중간에 0은 태그의 속성값과 포맷 일치를 위함
print(today)

# step3.크롬 웹드라이버 실행 &amp;amp; 홈쇼핑 사이트 접속
driver = webdriver.Chrome(r&quot;C:\Users\SANGWOO\Desktop\chromedriver.exe&quot;)
url = &quot;https://hsmoa.com/?date=&quot;+today+&quot;&amp;amp;site=&amp;amp;cate=식품&amp;middot;건강&quot; #식품건강 카테고리
driver.get(url)
time.sleep(1)

# step4.오늘 이후 날짜 정보 획득 함수 정의
def get_target_date(driver, today):
    
    list_temp = []

    # 날짜 선택
    btn_date = driver.find_elements_by_class_name(&quot;date&quot;)

    for i in btn_date:
        if int(i.get_attribute(&quot;data-date&quot;)) &amp;gt; int(today):
            list_temp.append(i.get_attribute(&quot;data-date&quot;))

    return(list_temp)


# step5.총 5일동안의 쇼핑몰 편성표 크롤링

# 날짜, 상품명, 방송시간, 가격을 담을 리스트 선언
list_date = []
list_title = []
list_airtime = []
list_price = []

# 날짜 5일이 입력된 리스트
list_five_days = get_target_date(driver, today)
print(list_five_days)

for day in list_five_days:

    url = &quot;https://hsmoa.com/?date=&quot;+day+&quot;&amp;amp;site=&amp;amp;cate=식품&amp;middot;건강&quot;
    driver.get(url)
    time.sleep(2)

    #날짜 &amp;amp; 제목
    title = driver.find_elements_by_class_name(&quot;font-15&quot;)
    for i in title:
        if i.text != &quot;&quot;: #공백 제거
            list_date.append(day)
            list_title.append(i.text)
    
    #방송시간
    airtime = driver.find_elements_by_class_name(&quot;font-12.c-midgray&quot;)
    for i in airtime:
        if i.text != &quot;&quot;: #공백 제거
            list_airtime.append(i.text)
    
    # 가격
    price = driver.find_elements_by_class_name(&quot;strong.font-17.c-black&quot;)
    for i in price:
        if i.text != &quot;&quot;: #공백 제거
            list_price.append(i.text)

# step6.zip 모듈을 이용해서 list를 묶어주기        
list_sum = list(zip(list_date, list_title, list_airtime, list_price))

# step7.데이터프레임의 첫행에 들어갈 컬럼명
col = ['날짜','제품명','방송시간','가격']

# step8.pandas 데이터 프레임 형태로 가공
df = pd.DataFrame(list_sum, columns=col)

# step9.엑셀에 저장
df.to_excel('쇼핑몰 편성표_5일.xlsx')

driver.quit()&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;lt;코드 실행 결과&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2459&quot; data-origin-height=&quot;1082&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1ejFz/btrNjrJm0BT/k8LaBElZsa7tJV5SWLlwF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1ejFz/btrNjrJm0BT/k8LaBElZsa7tJV5SWLlwF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1ejFz/btrNjrJm0BT/k8LaBElZsa7tJV5SWLlwF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1ejFz%2FbtrNjrJm0BT%2Fk8LaBElZsa7tJV5SWLlwF0%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;2459&quot; height=&quot;1082&quot; data-origin-width=&quot;2459&quot; data-origin-height=&quot;1082&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;프로젝트 후기&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&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&gt;&lt;span&gt;1) 아무 생각없이 동적 웹크롤링 방식을 사용해서 코드 실행 시간이 2분 50초나 걸렸음. (어제는 1분 10초 정도)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; --&amp;gt; 다음엔 requests와 bs4 패키지를 쓰는 정적 웹크롤링 방식을 사용해서 시간을 줄여야겠음.&lt;/span&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;span&gt;&lt;span&gt;2) 사진을 함께 크롤링해서 엑셀에 차례대로 삽입하는 것은 아직 효율적인 방법을 모르겠음.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; --&amp;gt; 추후에 도전해봐야겠음.&amp;nbsp;&lt;/span&gt;&lt;/span&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;/p&gt;</description>
      <category>파이썬 프로젝트</category>
      <category>웹크롤링</category>
      <category>코딩유치원</category>
      <category>파이썬 웹크롤링</category>
      <category>파이썬 크롤링</category>
      <category>파이썬 크롤링 예제</category>
      <category>홈쇼핑 방송 편성표</category>
      <category>홈쇼핑 편성표 크롤링</category>
      <category>홈쇼핑모아</category>
      <category>홈페이지 크롤링</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/226</guid>
      <comments>https://coding-kindergarten.tistory.com/226#entry226comment</comments>
      <pubDate>Wed, 28 Sep 2022 21:32:01 +0900</pubDate>
    </item>
    <item>
      <title>[python/selenium] 파이썬으로 인스타그램 크롤링하기 1편. 로그인하기</title>
      <link>https://coding-kindergarten.tistory.com/224</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&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;size18&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #ef5369;&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://coding-kindergarten.tistory.com/203&quot;&gt;2022.03.11 - [파이썬 패키지/라이브러리&amp;amp;패키지 소개] - 파이썬 주요 라이브러리 정리&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E0UmT/btrMUjrZmr5/CPyvoaxFtxdl2KG5vvuO5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E0UmT/btrMUjrZmr5/CPyvoaxFtxdl2KG5vvuO5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E0UmT/btrMUjrZmr5/CPyvoaxFtxdl2KG5vvuO5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE0UmT%2FbtrMUjrZmr5%2FCPyvoaxFtxdl2KG5vvuO5K%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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; selenium으로 자동 로그인하는 방법에 대해서 알아보겠습니다.&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;(facebook 계정으로도 로그인 하는 방법이 있지만 그 방법은 다루지 않았습니다.)&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;a href=&quot;https://coding-kindergarten.tistory.com/23&quot;&gt;2021.03.23 - [파이썬 패키지/웹 크롤링] - [Python/웹 크롤링] 크롬드라이버 크롬 버전에 맞춰서 설치하는법&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1663943282013&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;[Python/웹 크롤링] 크롬드라이버 크롬 버전에 맞춰서 설치하는법&quot; data-og-description=&quot;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다. 코딩유치원에서는&amp;nbsp;파이썬 기초부터&amp;nbsp;사무자동화, 웹크롤링, 데이터 분석, 머신러닝&amp;nbsp;등의&amp;nbsp;다양한 패키지까지 초보자도&quot; data-og-host=&quot;coding-kindergarten.tistory.com&quot; data-og-source-url=&quot;https://coding-kindergarten.tistory.com/23&quot; data-og-url=&quot;https://coding-kindergarten.tistory.com/23&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/mxCuV/hyPSYEXJne/ZDSclAEeuOZqO5pb30cKhK/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/fHMIJ/hyPT5bq0hx/FYoiLkx5DCf51vbHDBRP4k/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/i5Q8w/hyPT1UpMs0/r2C4pT5YHxUm24s63WsxL1/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640&quot;&gt;&lt;a href=&quot;https://coding-kindergarten.tistory.com/23&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://coding-kindergarten.tistory.com/23&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/mxCuV/hyPSYEXJne/ZDSclAEeuOZqO5pb30cKhK/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/fHMIJ/hyPT5bq0hx/FYoiLkx5DCf51vbHDBRP4k/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_640,https://scrap.kakaocdn.net/dn/i5Q8w/hyPT1UpMs0/r2C4pT5YHxUm24s63WsxL1/img.png?width=640&amp;amp;height=640&amp;amp;face=0_0_640_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;[Python/웹 크롤링] 크롬드라이버 크롬 버전에 맞춰서 설치하는법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다. 코딩유치원에서는&amp;nbsp;파이썬 기초부터&amp;nbsp;사무자동화, 웹크롤링, 데이터 분석, 머신러닝&amp;nbsp;등의&amp;nbsp;다양한 패키지까지 초보자도&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;coding-kindergarten.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;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt; 패키지 import&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;pre id=&quot;code_1663942511544&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# step1. 필요한 패키지와 모듈 불러오기
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&lt;span&gt; 크롬 드라이버 실행 및 인스타그램 로그인 화면 출력&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 다음은 크롬 드라이버를 실행하고, 인스타그램 로그인 url로 이동해보겠습니다. 아래의 코드의 경로 대신에 여러분들의 크롬 드라이버(chromedriver.exe)가 있는 경로를 입력해주어야 한다는 것 주의해주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1663943169623&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;driver = webdriver.Chrome(r&quot;C:\Users\SANGWOO\Desktop\chromedriver.exe&quot;)

driver.get(&quot;https://www.instagram.com/accounts/login/&quot;)

time.sleep(1)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;아이디 &amp;amp; 비밀번호 입력 후 엔터&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;706&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R4CJZ/btrMS3wZADn/JoWr2fbb6k5AXi29YnEwoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R4CJZ/btrMS3wZADn/JoWr2fbb6k5AXi29YnEwoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R4CJZ/btrMS3wZADn/JoWr2fbb6k5AXi29YnEwoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR4CJZ%2FbtrMS3wZADn%2FJoWr2fbb6k5AXi29YnEwoK%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;500&quot; height=&quot;706&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;706&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_1663943685481&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 인스타 아이디
id = &quot;여러분의 아이디를 입력해주세요&quot;
# 비밀번호
pw = &quot;여러분의 비밀번호를 입력해주세요&quot;

# id와 pw를 입력하는 창의 요소 정보 획득
input = driver.find_elements_by_tag_name(&quot;input&quot;)

# 아이디를 입력
input[0].send_keys(id)

# 비밀번호 입력
input[1].send_keys(pw)

# 엔터
input[1].send_keys(Keys.RETURN)
time.sleep(5)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;4.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; 옵션 설정&lt;/span&gt; 단계 통과하기&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&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&gt;&lt;span&gt;위에서 로그인을 하고나면 아래와 같은 화면이 출력됩니다. 그것도 2개나 말이죠.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;둘 모두 '나중에 하기' 버튼을 찾아서 클릭해서 장애물을 극복해줍시다!&lt;/span&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;898&quot; data-origin-height=&quot;496&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JtgJ3/btrMU6ZQ9kz/W5aFxRo8ijrypHwtFUVH4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JtgJ3/btrMU6ZQ9kz/W5aFxRo8ijrypHwtFUVH4k/img.png&quot; data-alt=&quot;첫번째 장애물. 로그인 정보 저장 여부&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JtgJ3/btrMU6ZQ9kz/W5aFxRo8ijrypHwtFUVH4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJtgJ3%2FbtrMU6ZQ9kz%2FW5aFxRo8ijrypHwtFUVH4k%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;500&quot; height=&quot;496&quot; data-origin-width=&quot;898&quot; data-origin-height=&quot;496&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;첫번째 장애물. 로그인 정보 저장 여부&lt;/figcaption&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;인스타 알림 설정.PNG&quot; data-origin-width=&quot;804&quot; data-origin-height=&quot;664&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpu6Dm/btrMTDR7fDR/yrxW2rJQZ9SkkkyXkn63R1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpu6Dm/btrMTDR7fDR/yrxW2rJQZ9SkkkyXkn63R1/img.png&quot; data-alt=&quot;두번째 장애물. 알림 설정 여부&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpu6Dm/btrMTDR7fDR/yrxW2rJQZ9SkkkyXkn63R1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbpu6Dm%2FbtrMTDR7fDR%2FyrxW2rJQZ9SkkkyXkn63R1%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;400&quot; height=&quot;664&quot; data-filename=&quot;인스타 알림 설정.PNG&quot; data-origin-width=&quot;804&quot; data-origin-height=&quot;664&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;두번째 장애물. 알림 설정 여부&lt;/figcaption&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_1663944193942&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 로그인 정보 저장 여부 (&quot;나중에 하기 버튼 클릭&quot;)
btn_later1 = driver.find_element_by_class_name('_acan._acao._acas')
btn_later1.click()
time.sleep(5)

# 알림 설정 (&quot;나중에 하기 버튼 클릭&quot;)
btn_later2 = driver.find_element_by_class_name('_a9--._a9_1')
btn_later2.click()&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;참고로 저는 보통 xpath로 element를 찾는 방식을 선호하는데, 하루만에 xpath가 변경되거나 알림 설정의 '나중에 하기' 버튼을 클릭할 때는 잘 작동하지 않아서 class_name을 이용했습니다.&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;5.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; 전체코드 (좀 더 세련된 코드)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;pre id=&quot;code_1663944788805&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# step1.필요한 패키지와 모듈 불러오기
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

# step2.아이디, 비밀번호 설정
id = &quot;여러분의 아이디를 입력해주세요&quot;
pw = &quot;여러분의 비밀번호를 입력해주세요&quot;

# step3.크롬 웹드라이버 실행
driver = webdriver.Chrome(r&quot;C:\Users\SANGWOO\Desktop\chromedriver.exe&quot;)

# step4.인스타그램 로그인 함수 정의
def login(id, pw):
    # 로그인 페이지로 이동
    driver.get(&quot;https://www.instagram.com/accounts/login/&quot;)
    time.sleep(1)
    
    # id와 pw를 입력하는 창의 요소 정보 획득
    input = driver.find_elements_by_tag_name(&quot;input&quot;)

    # 아이디를 입력
    input[0].send_keys(id)

    # 비밀번호 입력
    input[1].send_keys(pw)

    # 엔터
    input[1].send_keys(Keys.RETURN)
    time.sleep(5)

    # 로그인 정보 저장 여부 팝업창 제거 (&quot;나중에 하기 버튼 클릭&quot;)
    btn_later1 = driver.find_element_by_class_name('_acan._acao._acas')
    btn_later1.click()
    time.sleep(5)

    # 알림 설정 팝업창 제거 (&quot;나중에 하기 버튼 클릭&quot;)
    btn_later2 = driver.find_element_by_class_name('_a9--._a9_1')
    btn_later2.click()

# step5.로그인 함수 실행
login(id,pw)&lt;/code&gt;&lt;/pre&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;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;</description>
      <category>파이썬 패키지/웹 크롤링</category>
      <category>python instagram</category>
      <category>인스타그램 크롤링</category>
      <category>코딩유치원</category>
      <category>파이썬 웹크롤링</category>
      <category>파이썬 인스타그램</category>
      <category>파이썬 인스타그램 로그인</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/224</guid>
      <comments>https://coding-kindergarten.tistory.com/224#entry224comment</comments>
      <pubDate>Fri, 23 Sep 2022 23:57:12 +0900</pubDate>
    </item>
    <item>
      <title>[Python-pptx] 파이썬으로 PPT 문서 다루기 2편. ppt 슬라이드 기본 템플릿에 글과 그림 추가하기(feat.placeholder)</title>
      <link>https://coding-kindergarten.tistory.com/222</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 data-ke-size=&quot;size16&quot;&gt;코딩유치원에서는&amp;nbsp;&lt;b&gt;파이썬 기초&lt;/b&gt;부터&amp;nbsp;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&amp;nbsp;등의&amp;nbsp;&lt;b&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;업무는 물론 투자에도 도움이 될만한&amp;nbsp;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;나&amp;nbsp;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&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;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPEbIc/btrIxS7lRdM/sXH4IKdT4vDHUA3nDhoAkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPEbIc/btrIxS7lRdM/sXH4IKdT4vDHUA3nDhoAkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPEbIc/btrIxS7lRdM/sXH4IKdT4vDHUA3nDhoAkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPEbIc%2FbtrIxS7lRdM%2FsXH4IKdT4vDHUA3nDhoAkK%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 지난 시간에 잠시 언급하였던 placeholder, 쉽게 말해 &quot;글자, 그림과 같은 컨텐츠를 담는 틀&quot;에 대하여 알아보고, 틀 안에 내용을 채우는 법에 대해서 공부해보겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;placeholder의 종류&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;placeholder의 종류는 총 18가지가 있다고 합니다만, 우선 기본 레이아웃들에 들어있는 7가지만 소개드려보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉬운 이해를 돕기 위해 우리에게 익숙한 ppt 화면을 바탕으로 설명드리겠습니다.&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: #ee2323;&quot;&gt;&lt;b&gt;1) Tilte: 제목 상자&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;2) Subtitle: 부제목 상자&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1549&quot; data-origin-height=&quot;896&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWN4ob/btrICY7AZMj/Gknj8b7C4b4StCKx9WZY41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWN4ob/btrICY7AZMj/Gknj8b7C4b4StCKx9WZY41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWN4ob/btrICY7AZMj/Gknj8b7C4b4StCKx9WZY41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWN4ob%2FbtrICY7AZMj%2FGknj8b7C4b4StCKx9WZY41%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;640&quot; height=&quot;896&quot; data-origin-width=&quot;1549&quot; data-origin-height=&quot;896&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;size18&quot;&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;&lt;b&gt;3) Content Placeholder: 콘텐츠 상자&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1535&quot; data-origin-height=&quot;901&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mdyaG/btrIxvkfoim/qB61klYkw3t1SQB8sAjkbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mdyaG/btrIxvkfoim/qB61klYkw3t1SQB8sAjkbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mdyaG/btrIxvkfoim/qB61klYkw3t1SQB8sAjkbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmdyaG%2FbtrIxvkfoim%2FqB61klYkw3t1SQB8sAjkbK%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;640&quot; height=&quot;901&quot; data-origin-width=&quot;1535&quot; data-origin-height=&quot;901&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;size18&quot;&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;4) Picture Placeholder: 그림 상자&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;5) Text Placeholder: 텍스트 상자&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1556&quot; data-origin-height=&quot;891&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3qfCx/btrIEZrsBqV/2c2HaCqJF1Qmc47kYQP3rk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3qfCx/btrIEZrsBqV/2c2HaCqJF1Qmc47kYQP3rk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3qfCx/btrIEZrsBqV/2c2HaCqJF1Qmc47kYQP3rk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3qfCx%2FbtrIEZrsBqV%2F2c2HaCqJF1Qmc47kYQP3rk%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;640&quot; height=&quot;891&quot; data-origin-width=&quot;1556&quot; data-origin-height=&quot;891&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;size18&quot;&gt;&lt;span style=&quot;color: #1a5490;&quot;&gt;&lt;b&gt;6) Vertical Text Placeholder: 세로 텍스트 상자&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #5733b1;&quot;&gt;&lt;b&gt;7) Vertical Title: 세로 제목&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1582&quot; data-origin-height=&quot;918&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9GAN1/btrIGzspBoV/TcWZeaxhLdeiXeoBl8hEIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9GAN1/btrIGzspBoV/TcWZeaxhLdeiXeoBl8hEIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9GAN1/btrIGzspBoV/TcWZeaxhLdeiXeoBl8hEIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9GAN1%2FbtrIGzspBoV%2FTcWZeaxhLdeiXeoBl8hEIK%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;640&quot; height=&quot;918&quot; data-origin-width=&quot;1582&quot; data-origin-height=&quot;918&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 data-ke-size=&quot;size16&quot;&gt;만약 11가지 레이아웃가 어떤 Placeholder들을 갖고 있는지 확인해보고 싶으시다면 아래의 코드를 실행시켜 보세요.&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;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;코드&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;pre id=&quot;code_1659356392122&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#python-pptx의 가장 기본이 되는 Presentation 클래스 불러오기
from pptx import Presentation

#Presentation 객체 생성
prs = Presentation()

# 반복문으로 기본 레이아웃 11가지 만들기
for i in range(0, 11):
    print(&quot;\n=======&quot;+&quot;%d&quot;%(i+1)+&quot;번 슬라이드=======&quot;)
    slide = prs.slides.add_slide(prs.slide_layouts[i])
    
    # 생성한 레이아웃 안의 모든 placeholder 이름 확인
    for shape in slide.placeholders:
        print('%s' % (shape.name))&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;placeholder에 내용 넣기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1) 텍스트&lt;/b&gt;&lt;/h4&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;placeholders[인덱싱 번호]로 각 상자들을 변수에 넣어서 객체화 해준 다음, text 함수를 이용해서 텍스트를 입력해주시면 된답니다. 간단하죠?&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;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;u&gt;코드&lt;/u&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1659697344755&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from pptx import Presentation

prs = Presentation()

slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(slide_layout)

# 제목과 부제 박스를 선택해서 변수에 대입
title = slide.placeholders[0]   # title = slide.shapes.title와 동일
subtitle = slide.placeholders[1]

# 제목과 부제에 글자 입력
title.text = &quot;안녕하세요, 여기는 코딩유치원입니다.&quot;
subtitle.text = &quot;python-pptx 강의입니다.&quot;

# 추가 문단 입력하고 싶을 때 해당 코드 사용
tf = subtitle.text_frame
p = tf.add_paragraph()
p.text = '추가 문단'

#ppt 저장
prs.save('test.pptx')&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2) 그림&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 그림을 넣어보기 위해서 Picture Placeholder가 있는 9번째 레이아웃을 사용했답니다. 그리고 저는 현재 실행하고 있는 파이썬 파일과 같은 경로에 그림 상자에 넣어 줄 고양이 사진을 따로 저장해주었습니다.&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;size18&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;* 참고&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1659699537992&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;=======9번 슬라이드=======
Title 1
Picture Placeholder 2
Text Placeholder 3&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;기본 슬라이드 11개 중에 9번째 슬라이드인 '캡션 있는 그림' 슬라이드입니다. 아래 그림을 보시면 위에서부터 순서대로 '그림 - 제목 - 텍스트' 상자 순일 것 같지만 코드로 해당 슬라이드의 placeholders 인덱싱을 보면 Title이 1번, 그림상자가 2번, 텍스트 상자가 3번인 것을 확인하실 수 있어요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1054&quot; data-origin-height=&quot;1091&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sLoBV/btrIXP3I5gr/hAgQFRA6HKkzLFXS3DYFJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sLoBV/btrIXP3I5gr/hAgQFRA6HKkzLFXS3DYFJ1/img.png&quot; data-alt=&quot;기본 9번 슬라이드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sLoBV/btrIXP3I5gr/hAgQFRA6HKkzLFXS3DYFJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsLoBV%2FbtrIXP3I5gr%2FhAgQFRA6HKkzLFXS3DYFJ1%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;468&quot; height=&quot;1091&quot; data-origin-width=&quot;1054&quot; data-origin-height=&quot;1091&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;기본 9번 슬라이드&lt;/figcaption&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;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;코드&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1659699758876&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from pptx import Presentation

prs = Presentation()

slide_layout = prs.slide_layouts[8]  # 그림 상자가 있는 슬라이드
slide = prs.slides.add_slide(slide_layout)

# Picture Placeholder 선택
ph_picture = slide.placeholders[1] # 0:title, 1:Picture, 2:Text

# 현재 경로에 있는 cat.jpt를 그림 상자에 추가
picture = ph_picture.insert_picture('cat.jpg')

# 저장
prs.save('test_picture.pptx')&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;size18&quot;&gt;&lt;u&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;결과&lt;/b&gt;&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1347&quot; data-origin-height=&quot;1051&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/naQyy/btrI2doxh23/mr30xBvufh5LtYy4yGnYb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/naQyy/btrI2doxh23/mr30xBvufh5LtYy4yGnYb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/naQyy/btrI2doxh23/mr30xBvufh5LtYy4yGnYb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnaQyy%2FbtrI2doxh23%2Fmr30xBvufh5LtYy4yGnYb0%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;640&quot; height=&quot;1051&quot; data-origin-width=&quot;1347&quot; data-origin-height=&quot;1051&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;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;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;&amp;lt;참고 자료&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;python-pptx 공식문서_Working with placeholders 부분&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://python-pptx.readthedocs.io/en/latest/user/placeholders-using.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://python-pptx.readthedocs.io/en/latest/user/placeholders-using.html&lt;/a&gt;&lt;/p&gt;</description>
      <category>파이썬 패키지/파워포인트</category>
      <category>python pptx</category>
      <category>python-pptx</category>
      <category>python-pptx placeholder</category>
      <category>코딩유치원</category>
      <category>파워포인트 자동화</category>
      <category>파이썬 ppt</category>
      <category>파이썬 ppt 템플릿</category>
      <category>파이썬 pptx</category>
      <category>파이썬 파워포인트 라이브러리</category>
      <category>파이썬 파워포인트 자동화</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/222</guid>
      <comments>https://coding-kindergarten.tistory.com/222#entry222comment</comments>
      <pubDate>Fri, 5 Aug 2022 22:38:09 +0900</pubDate>
    </item>
    <item>
      <title>[Python-pptx] 파이썬으로 PPT 문서 다루기 1편. ppt 슬라이드 생성하고 텍스트 입력하기</title>
      <link>https://coding-kindergarten.tistory.com/221</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 data-ke-size=&quot;size16&quot;&gt;코딩유치원에서는&amp;nbsp;&lt;b&gt;파이썬 기초&lt;/b&gt;부터&amp;nbsp;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&amp;nbsp;등의&amp;nbsp;&lt;b&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;업무는 물론 투자에도 도움이 될만한&amp;nbsp;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;나&amp;nbsp;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&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;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/briSps/btrIekg0GSK/Cj6WU31A5mc3v1Ra3bCLl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/briSps/btrIekg0GSK/Cj6WU31A5mc3v1Ra3bCLl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/briSps/btrIekg0GSK/Cj6WU31A5mc3v1Ra3bCLl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbriSps%2FbtrIekg0GSK%2FCj6WU31A5mc3v1Ra3bCLl1%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt; python-pptx 설치하기&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQf0K6/btrH75MPrfu/EWEWd8EdhUH0mbf4ojCpr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQf0K6/btrH75MPrfu/EWEWd8EdhUH0mbf4ojCpr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQf0K6/btrH75MPrfu/EWEWd8EdhUH0mbf4ojCpr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQf0K6%2FbtrH75MPrfu%2FEWEWd8EdhUH0mbf4ojCpr0%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;500&quot; height=&quot;286&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;352&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt; ppt 생성하고 슬라이드 추가하기&lt;/b&gt;&lt;/h3&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;&amp;lt;코드&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1658750803635&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#python-pptx의 가장 기본이 되는 Presentation 클래스 불러오기
from pptx import Presentation

#Presentation 객체 생성
prs = Presentation()

#슬라이드의 레이아웃 선택
slide_layout = prs.slide_layouts[0]

#선택한 레이아웃의 슬라이드 추가
slide = prs.slides.add_slide(slide_layout)

#pptx 파일 저장
prs.save('test.pptx')&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;lt;결과&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;559&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnEwSY/btrIdWU47jy/vpqlauEDQaC1l5m1RODb6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnEwSY/btrIdWU47jy/vpqlauEDQaC1l5m1RODb6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnEwSY/btrIdWU47jy/vpqlauEDQaC1l5m1RODb6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnEwSY%2FbtrIdWU47jy%2FvpqlauEDQaC1l5m1RODb6k%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;640&quot; height=&quot;532&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;559&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 data-ke-size=&quot;size16&quot;&gt;아시다시피 ppt의 기본 레이아웃(Office Theme)는 11개가 있습니다. 아래의 순서대로 prs.slide_layouts[ ]의 괄호 안에 0~11 중 숫자 하나를 선택해서 넣어주면 해당 레이아웃을 사용할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;346&quot; data-origin-height=&quot;571&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MOUaR/btrIbNkqHHg/AKvughzjbknYoNoIIoEGr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MOUaR/btrIbNkqHHg/AKvughzjbknYoNoIIoEGr0/img.png&quot; data-alt=&quot;다양한 레이아웃&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MOUaR/btrIbNkqHHg/AKvughzjbknYoNoIIoEGr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMOUaR%2FbtrIbNkqHHg%2FAKvughzjbknYoNoIIoEGr0%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;346&quot; height=&quot;571&quot; data-origin-width=&quot;346&quot; data-origin-height=&quot;571&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;다양한 레이아웃&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt; &lt;/span&gt;슬라이드에 글자 쓰기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방금 전 추가했던 '제목+부제' 레이아웃(혹은 템플릿)에는 두 가지 placeholder가 존재합니다. 여기서 placeholder는 그냥 상자라고 생각하시면 간단합니다. (다음시간에 placeholder의 여러 종류에 대해서 자세히 알아보겠습니다.)&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;우리는 이 placeholder를 선택해서 글자를 입력해주면 됩니다. 긴 설명보다는 코드를 실행해보시고 결과와 비교해보시는게 빠를 것 같아요.&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;lt;코드&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1658753994272&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from pptx import Presentation

prs = Presentation()

slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(slide_layout)

# 제목과 부제 박스를 선택해서 변수에 대입
title = slide.placeholders[0]   # title = slide.shapes.title와 동일
subtitle = slide.placeholders[1]

# 제목과 부제에 글자 입력
title.text = &quot;안녕하세요, 여기는 코딩유치원입니다.&quot;
subtitle.text = &quot;python-pptx 강의입니다.&quot;

# 추가 문단 입력하고 싶을 때 해당 코드 사용
tf = subtitle.text_frame
p = tf.add_paragraph()
p.text = '추가 문단'

#ppt 저장
prs.save('test.pptx')&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;lt;결과&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;673&quot; data-origin-height=&quot;561&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CjRLa/btrH2mOOMNs/6gShgDNMDl18jcas1iGR51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CjRLa/btrH2mOOMNs/6gShgDNMDl18jcas1iGR51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CjRLa/btrH2mOOMNs/6gShgDNMDl18jcas1iGR51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCjRLa%2FbtrH2mOOMNs%2F6gShgDNMDl18jcas1iGR51%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;673&quot; height=&quot;561&quot; data-origin-width=&quot;673&quot; data-origin-height=&quot;561&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;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;/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>파이썬 패키지/파워포인트</category>
      <category>python-pptx</category>
      <category>파워포인트 자동화</category>
      <category>파이썬 ppt</category>
      <category>파이썬 ppt 모듈</category>
      <category>파이썬 ppt 템플릿</category>
      <category>파이썬 pptx</category>
      <category>파이썬 pptx 설치</category>
      <category>파이썬 파워포인트</category>
      <category>파이썬 파워포인트 라이브러리</category>
      <category>파이썬 파워포인트 자동화</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/221</guid>
      <comments>https://coding-kindergarten.tistory.com/221#entry221comment</comments>
      <pubDate>Mon, 25 Jul 2022 22:21:26 +0900</pubDate>
    </item>
    <item>
      <title>[자바 독학] 7강.자바 조건문과 반복문_if문/for문/while문</title>
      <link>https://coding-kindergarten.tistory.com/220</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&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 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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목을 입력해주세요_-001.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4fYXw/btrGarixqoa/p652yyV0089Tga0ADXHgrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4fYXw/btrGarixqoa/p652yyV0089Tga0ADXHgrk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4fYXw/btrGarixqoa/p652yyV0089Tga0ADXHgrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4fYXw%2FbtrGarixqoa%2Fp652yyV0089Tga0ADXHgrk%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;640&quot; height=&quot;640&quot; data-filename=&quot;제목을 입력해주세요_-001.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; if문&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조건문은 컴퓨터가 어떤 조건에 따라서 다른 행동들을 할 수 있도록 해주는 코드입니다. 주로 if문을 사용하며, switch/case문도 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1656581359446&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if (조건식) {
    // code
} else if (조건식) {

} else {

}&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;당연한 이야기지만 if와 else는 하나씩만 가능하고, else if는 여러 개를 입력 가능합니다.&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;&amp;lt;비교연산자 &amp;amp; 비교연산자 정리&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 53.1395%; height: 207px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;b&gt;비교연산자 &amp;amp; 논리연산자&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;b&gt;x &amp;lt; y&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;b&gt;x가 y보다 작으면 참&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;b&gt;x &amp;gt; y&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;b&gt;x가 y보다 크면 참&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;b&gt;x == y&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;b&gt;x와 y가 같으면 참&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;b&gt;x != y&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;b&gt;x와 y가 같지 않으면 참&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;b&gt;x &amp;gt;= y&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;b&gt;x가 y보다 크거나 같으면 참&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;b&gt;x &amp;lt;= y&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;b&gt;x가 y보다 작거나 같으면 참&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;b&gt;x &amp;amp;&amp;amp; y&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;b&gt;x와 y 둘 모두가 참이면 참&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #efefef;&quot;&gt;x || y&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 21px;&quot;&gt;&lt;b&gt;x와 y 둘 중 하나가 참이면 참&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;&lt;b&gt;!x&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 18px;&quot;&gt;&lt;b&gt;x가 거짓이면 참&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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_1656586517632&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class IfApp {

	public static void main(String[] args) {

        int x = 1;

        if(x&amp;gt;2) {
            System.out.println(&quot;코딩유치원&quot;);
        } else {
            System.out.println(&quot;손생 자바공부중&quot;);
        }
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; while문 / for&lt;/span&gt;문&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조건에 따라 특정한 작업을 반복하게 하는 제어문을 반복문이라고 하며, while문과 for문이 있습니다.&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;두 반복문의 주요한 차이점으로는 while문은 조건식이 참이면 무한히 반복할 수 있다는 점입니다. 보통 외부에서 어떤 입력이 들어올 때까지 대기할 때 while문을 사용하고, 그 외에는 반복 횟수가 정해진 for문을 주로 사용하는 것으로 알고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1656593522171&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;while (조건식) {

    // 반복할 코드
    
}


for (초기값; 조건문; 증가값) {

    // 초기값이 증가값만큼씩 증가하면서 조건문을 만족하지 않을 때까지 반복
    
}&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1656594115985&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class LoopApp {
 
    public static void main(String[] args) {
         
        System.out.println(&quot;===== while문 =====&quot;);
        int i = 0;
        while(i &amp;lt; 3) {
            System.out.println(i+1);
            i++;
        }
        
        System.out.println(&quot;====== for문 ======&quot;);
        for(int j=4; j &amp;lt; 6; j++) {
            System.out.println(j);
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;while문의 경우엔 무한루프에 빠지는 것을 방지하기 위해서 조건문의 변수를 1씩 증가 시키는 ++연산자를 사용한 점 참고해주세요.&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;lt;실행 결과&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1656594188998&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;===== while문 =====
1
2
3
====== for문 ======
4
5
6&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;for&lt;/span&gt;문과 배열&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for문은 주로 배열과 함께 사용됩니다. 배열의 요소를 하나씩 참조하며 어떤 처리를 해야할 때 사용하죠.&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;아래의 코드는 for문과 배열을 함께 사용하는 아주 기본적인 방법입니다. 배열을 하나씩 참조하면서 배열 안의 요소를 하나씩 출력하는 코드입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1656597922657&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class LoopApp {
	 
    public static void main(String[] args) {
         
    	String[] numbers = {&quot;one&quot;, &quot;two&quot;, &quot;three&quot;};

    	for(int i=0; i&amp;lt;numbers.length; i++) {

    	    System.out.println(numbers[i]);
    	}
    }
}&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;lt;실행 결과&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1656598263798&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;one
two
three&lt;/code&gt;&lt;/pre&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;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;</description>
      <category>자바(Java)</category>
      <category>자바 for</category>
      <category>자바 if</category>
      <category>자바 while</category>
      <category>자바 독학</category>
      <category>자바 반복문</category>
      <category>자바 제어문</category>
      <category>자바 조건문</category>
      <category>코딩유치원</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/220</guid>
      <comments>https://coding-kindergarten.tistory.com/220#entry220comment</comments>
      <pubDate>Thu, 30 Jun 2022 23:12:59 +0900</pubDate>
    </item>
    <item>
      <title>[python/smtplib/email] 파이썬으로 여러명에게 첨부파일 포함된 메일 보내기(ft. 이론상 구글, 네이버, 아웃룩 모두 가능)</title>
      <link>https://coding-kindergarten.tistory.com/219</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&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;size18&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #ef5369;&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://coding-kindergarten.tistory.com/203&quot;&gt;2022.03.11 - [파이썬 패키지/라이브러리&amp;amp;패키지 소개] - 파이썬 주요 라이브러리 정리&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blyaKq/btrEYh3jwDX/Yk5JwqEs7MVjtu2kaCTjlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blyaKq/btrEYh3jwDX/Yk5JwqEs7MVjtu2kaCTjlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blyaKq/btrEYh3jwDX/Yk5JwqEs7MVjtu2kaCTjlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblyaKq%2FbtrEYh3jwDX%2FYk5JwqEs7MVjtu2kaCTjlk%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;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;&amp;lt;파이썬으로 이메일 보내기 관련 글&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://coding-kindergarten.tistory.com/205&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.03.23 - [파이썬 패키지/이메일] - [python/smtplib] 파이썬으로 구글 Gmail 보내기 2편. smtplib와 email 모듈&lt;/a&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://coding-kindergarten.tistory.com/210&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.06.01 - [파이썬 패키지/이메일] - [python/imaplib] 파이썬으로 구글 Gmail 읽기&lt;/a&gt;&lt;/span&gt;&lt;/u&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;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;1. 구글 메일 자동화를 위한 설정&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://coding-kindergarten.tistory.com/204&quot;&gt;2022.03.17 - [파이썬 패키지/이메일] - [python/smtplib] 파이썬으로 구글 Gmail 보내기 1편. SMTP의 개념과 구글 앱 비밀번호 발급받기&lt;/a&gt;&lt;/span&gt;&lt;/u&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;&lt;b&gt;2. 네이버 메일 자동화를 위한 설정&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://coding-kindergarten.tistory.com/218&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.06.15 - [파이썬 패키지/이메일] - [#shorts] 파이썬으로 네이버 메일 보내기 위한 초간단 설정&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/u&gt;&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;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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-23 오후 10.24.46.png&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q5rWi/btrEX10G9Nk/c0EeRhrBLpK7irfHQD52ZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q5rWi/btrEX10G9Nk/c0EeRhrBLpK7irfHQD52ZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q5rWi/btrEX10G9Nk/c0EeRhrBLpK7irfHQD52ZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq5rWi%2FbtrEX10G9Nk%2Fc0EeRhrBLpK7irfHQD52ZK%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;300&quot; height=&quot;454&quot; data-filename=&quot;스크린샷 2022-03-23 오후 10.24.46.png&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;454&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;span style=&quot;color: #ef5369;&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;1478&quot; data-origin-height=&quot;800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdRCEc/btrEYBtsQ0Y/Chek3ktzs252oSBOZl33K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdRCEc/btrEYBtsQ0Y/Chek3ktzs252oSBOZl33K0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdRCEc/btrEYBtsQ0Y/Chek3ktzs252oSBOZl33K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdRCEc%2FbtrEYBtsQ0Y%2FChek3ktzs252oSBOZl33K0%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;1478&quot; height=&quot;800&quot; data-origin-width=&quot;1478&quot; data-origin-height=&quot;800&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt; 관련 모듈, 클래스 불러오기&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;size18&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;MIMEBase:&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첨부파일이 포함된 메일은 멀티파트(Multipart)로 구성되어 있으며, MIMEBase가 기본 포맷의 역할을 합니다. 즉, MIMEBase라는 종이 위에 텍스트도 넣고, 첨부파일도 넣는 느낌인 것입니다.&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: #409d00;&quot;&gt;&lt;b&gt;Header:&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Header는 사람의 문장을 컴퓨터가 이해할 수 있는 문장으로 변환해줄 때 사용하는 모듈로 전반적으로 사용합니다.&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: #f3c000;&quot;&gt;&lt;b&gt;MIMEText:&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난 시간에도 사용했던 MIMEText 클래스는 '본문 메세지'를 작성할 때 사용합니다.&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: #0593d3;&quot;&gt;&lt;b&gt;MIMEApplication:&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MIMEApplication 클래스는 파일을 첨부해줄 때 사용합니다.&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;1071&quot; data-origin-height=&quot;1415&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Kml3U/btrEZc1uWZs/WLM9H813kabzQGCtp8g0hK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Kml3U/btrEZc1uWZs/WLM9H813kabzQGCtp8g0hK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Kml3U/btrEZc1uWZs/WLM9H813kabzQGCtp8g0hK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKml3U%2FbtrEZc1uWZs%2FWLM9H813kabzQGCtp8g0hK%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;640&quot; height=&quot;1415&quot; data-origin-width=&quot;1071&quot; data-origin-height=&quot;1415&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&amp;nbsp;전체&lt;/span&gt;&amp;nbsp;코드&lt;/b&gt;&lt;/h3&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;/p&gt;
&lt;pre id=&quot;code_1655389096850&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#step1.관련 모듈, 클래스 불러오기
import os
import smtplib
from email.header import Header
from email.mime.base import MIMEBase
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication


#step2.SMTP 서버를 dictionary로 정의
smtp_info = {
    'gmail.com': ('smtp.gamil.com', 587),
    'naver.com': ('smtp.naver.com', 587),
    'outlook.com': ('smtp-mail.outlook.com', 587),
    'hotmail.com': ('smtp-mail.outlook.com', 587),
    'yahoo.com': ('smtp.mail.yahoo.com', 587),
    'nate.com': ('smtp.mail.nate.com', 465),
    'daum.net': ('smtp.daum.net', 465),
    'hanmail.net': ('smtp.daum.net',465)
}

#step3.메일 보내는 함수 정의 (발신 메일, 수신 메일(여러개 가능), 제목, 본문, 첨부파일 경로, 비밀번호)
def send_email(From, To, subject, message, attach_files=(), passwd='', subtype='plain'):
    
    
    #step4.멀티파트로 메일을 만들기 위한 포맷 생성
    form = MIMEBase('multipart', 'mixed')
    
    #step5.입력받은 메일주소와 제목, 본문 등의 문자열을 인코딩해서 form에 입력
    form['From'] = From
    form['To'] = ', '.join(To) #수신 메일 리스트를 문자열로 변환 (,와 한칸 공백을 추가해서 구분)
    form['Subject'] = Header(subject.encode('utf-8'), 'utf-8')
    msg = MIMEText(message.encode('utf-8'), _subtype=subtype, _charset='utf-8')
    form.attach(msg)
    
    #step6.여러개의 파일을 하나씩 첨부
    for fpath in attach_files:
        
        folder, file = os.path.split(fpath) # 파일의 절대 경로를 입력하면, 두 가지 문자열을 나눠서 반환
                                            # (ex./home/User/Desktop/file.txt --&amp;gt; (/home/User/Desktop/, file.txt)
        
        with open(fpath, 'rb') as f: # 첨부 파일을 열어서 내용을 가져옴
            body = f.read()
        
        msg = MIMEApplication(body, _subtype=subtype)
        
        msg.add_header('Content-Disposition', 'attatchment',
                        filename=(Header(file, 'utf-8').encode()))
        form.attach(msg)
        
    #step7.SMTP 서버 로그인 및 작성된 메일 보내기
    id, host = From.rsplit(&quot;@&quot;,1) #발신인 메일 주소의 @를 기준으로 id와 host로 나눔
    
    smtp_server, port = smtp_info[host] #step2의 dict를 이용해서 host와 port 정보들을 받아옴
    
    # SMTP 서버 접속 여부 확인
    if port == 587:
        smtp = smtplib.SMTP(smtp_server, port)
        rcode1, _ = smtp.ehlo()
        rcode2, _ = smtp.starttls()
    
    else:
        smtp = smtplib.SMTP_SSL(smtp_server, port)
        rcode1, _ = smtp.ehlo()
        rcode2 = 220 
        
    if rcode1 != 250 or rcode2 != 220:
        smtp.quit()
        return '연결에 실패하였습니다.'
    
    smtp.login(From, passwd)
    smtp.sendmail(From, To, form.as_string())    
    smtp.quit
    

#step8.실제 함수 실행 부분
me = 'continent9@naver.com'
receivers = ['codingswson@gmail.com','sonsangwoo91@gmail.com']

subject = '파이썬으로 메일 보내기 테스트'
message = &quot;&quot;&quot;
안녕하세요, 코딩유치원에서 제작한 '메일 전송 봇'입니다.

첨부드리는 파일 참고 부탁드립니다.

감사합니다.
&quot;&quot;&quot;

attatch_files = ['5.png', 'test_excel.xlsx','Excel_sum.py','text파일.txt']
send_email(me, receivers, subject, message, attatch_files, passwd='네이버 로그인 비밀번호')&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;글을 마치며, 제가 네이버 메일로 발신했을 땐 정상작동 하는 코드가, 이상하게도 구글 메일로 발신하려고 하면 에러가 납니다. 당연히 구글 비밀번호를 '앱 비밀번호'로 하였는데도 말이죠.&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>파이썬 패키지/이메일</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/219</guid>
      <comments>https://coding-kindergarten.tistory.com/219#entry219comment</comments>
      <pubDate>Thu, 16 Jun 2022 23:57:13 +0900</pubDate>
    </item>
    <item>
      <title>[#shorts] 파이썬으로 네이버 메일 보내기 위한 초간단 설정</title>
      <link>https://coding-kindergarten.tistory.com/218</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&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;size18&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #ef5369;&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://coding-kindergarten.tistory.com/203&quot;&gt;2022.03.11 - [파이썬 패키지/라이브러리&amp;amp;패키지 소개] - 파이썬 주요 라이브러리 정리&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z97gt/btrESm4UVXr/VpfebXg8C3BreXXclxl2Nk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z97gt/btrESm4UVXr/VpfebXg8C3BreXXclxl2Nk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z97gt/btrESm4UVXr/VpfebXg8C3BreXXclxl2Nk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz97gt%2FbtrESm4UVXr%2FVpfebXg8C3BreXXclxl2Nk%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;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;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;SMTPAuthenticationError&lt;/b&gt;&lt;/span&gt;: (535, b'5.7.1 Username and Password not accepted wIKXs+XGQSmZsM0dOtS9cA - nsmtp')&lt;/b&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;step1. &lt;/span&gt;사용하고자 하시는 네이버 메일에 로그인 하신 후, 화면 왼쪽에 위치한 '외부메일 가져오기' 탭 오른쪽에 위치한 톱니바퀴 아이콘을 클릭해주세요.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;420&quot; data-origin-height=&quot;975&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxOSKW/btrESnvWLlA/JbTk6mqdoGMkWVPEVmS2Ek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxOSKW/btrESnvWLlA/JbTk6mqdoGMkWVPEVmS2Ek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxOSKW/btrESnvWLlA/JbTk6mqdoGMkWVPEVmS2Ek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxOSKW%2FbtrESnvWLlA%2FJbTk6mqdoGMkWVPEVmS2Ek%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;300&quot; height=&quot;696&quot; data-origin-width=&quot;420&quot; data-origin-height=&quot;975&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 data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;step2.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;화면이 전환되었다면 아마 '외부 메일 가져오기' 탭이 클릭된 상태일 거예요. 'POP3/IMAP 설정' 탭을 클릭하신 후, 아래 그림과 같이 사용함을 클릭해주세요.&lt;/b&gt;&lt;b&gt;&lt;/b&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;1891&quot; data-origin-height=&quot;1116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FSCJ8/btrEO4p9WAV/AX9kDC3fg6kskKNUuRGiCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FSCJ8/btrEO4p9WAV/AX9kDC3fg6kskKNUuRGiCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FSCJ8/btrEO4p9WAV/AX9kDC3fg6kskKNUuRGiCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFSCJ8%2FbtrEO4p9WAV%2FAX9kDC3fg6kskKNUuRGiCk%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;1891&quot; height=&quot;1116&quot; data-origin-width=&quot;1891&quot; data-origin-height=&quot;1116&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>파이썬 패키지/이메일</category>
      <category>네이버 smtp</category>
      <category>네이버 smtp 메일 보내기</category>
      <category>네이버 파이썬 메일</category>
      <category>파이썬 네이버 메일 보내기</category>
      <category>파이썬 메일</category>
      <category>파이썬 메일 보내기</category>
      <category>파이썬 메일 자동</category>
      <category>파이썬 메일 자동화</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/218</guid>
      <comments>https://coding-kindergarten.tistory.com/218#entry218comment</comments>
      <pubDate>Wed, 15 Jun 2022 22:56:16 +0900</pubDate>
    </item>
    <item>
      <title>[꿀팁] VS CODE 괄호, 따옴표 자동 완성 후, 커서를 탭으로 이동시키는 Extension 소개</title>
      <link>https://coding-kindergarten.tistory.com/217</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vYvSQ/btrEObHD7w2/Wb0DXHWs3id41K14Kpn9c0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vYvSQ/btrEObHD7w2/Wb0DXHWs3id41K14Kpn9c0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vYvSQ/btrEObHD7w2/Wb0DXHWs3id41K14Kpn9c0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvYvSQ%2FbtrEObHD7w2%2FWb0DXHWs3id41K14Kpn9c0%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;span style=&quot;background-color: #ffffff; color: #000000;&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;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;VS CODE를 사용하시다 보면 아래와 같이&amp;nbsp;&lt;b&gt;&lt;span&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;괄호나 따옴표를 하나만 입력해도 쌍(Pair)으로 자동 완성&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&amp;nbsp;되는 상황을 무조건 겪게 됩니다.&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-filename=&quot;Animation23.gif&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuZTf1/btrEMSPSXNz/8jeHvAQQnDxShmvnJHbBX0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuZTf1/btrEMSPSXNz/8jeHvAQQnDxShmvnJHbBX0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuZTf1/btrEMSPSXNz/8jeHvAQQnDxShmvnJHbBX0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/cuZTf1/btrEMSPSXNz/8jeHvAQQnDxShmvnJHbBX0/img.gif&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;1049&quot; height=&quot;258&quot; data-filename=&quot;Animation23.gif&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;258&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;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;만약 다음 줄에 이어서 코드를 작성하기 위해서 여러분들은 어떻게 해오셨나요? 아마도 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;대부분은 저처럼 오른쪽 방향키로 &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;오른손을 가져가서 눌러주신 후, 다시 손을 복귀&lt;/b&gt;&lt;/span&gt;시키셨을거예요.&lt;/span&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;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;오늘 소개 드릴 내용은 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;'Tap을 눌러서 커서를 오른쪽으로 한칸씩 이동시키는 방법'&lt;/b&gt;&lt;/span&gt;입니다.&lt;/span&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;셋팅 방법은 정말 간단합니다. VS CODE에서 아래와 같은 순서로 확장(Extension)을 설치해주시면 됩니다. 설치만 하시면 바로 적용이 됩니다.&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;1217&quot; data-origin-height=&quot;488&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n6kEf/btrENDR3UQf/u1FmQTLujWO3Q5ffy2cdV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n6kEf/btrENDR3UQf/u1FmQTLujWO3Q5ffy2cdV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n6kEf/btrENDR3UQf/u1FmQTLujWO3Q5ffy2cdV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn6kEf%2FbtrENDR3UQf%2Fu1FmQTLujWO3Q5ffy2cdV0%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;1217&quot; height=&quot;488&quot; data-origin-width=&quot;1217&quot; data-origin-height=&quot;488&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;설치가 완료 되셨다면 같은 상황에서 살포시 왼쪽 새끼손가락을 움직여 tap을 눌러보세요!&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;여러분들의 코딩 속도가 10%는 상승할거라고 자신합니다.&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;size16&quot;&gt;&amp;lt;참고 자료&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;1. vscode 자동완성 함수안에서 괄호밖으로 탭키로 나가기_개인블로그(PABBURI)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.pabburi.co.kr/content/pds/vscode-%EC%9E%90%EB%8F%99%EC%99%84%EC%84%B1-%ED%95%A8%EC%88%98%EC%95%88%EC%97%90%EC%84%9C-%EA%B4%84%ED%98%B8%EB%B0%96%EC%9C%BC%EB%A1%9C-%ED%83%AD%ED%82%A4%EB%A1%9C-%EB%82%98%EA%B0%80%EA%B8%B0/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.pabburi.co.kr/content/pds/vscode-%EC%9E%90%EB%8F%99%EC%99%84%EC%84%B1-%ED%95%A8%EC%88%98%EC%95%88%EC%97%90%EC%84%9C-%EA%B4%84%ED%98%B8%EB%B0%96%EC%9C%BC%EB%A1%9C-%ED%83%AD%ED%82%A4%EB%A1%9C-%EB%82%98%EA%B0%80%EA%B8%B0/&lt;/a&gt;&lt;/p&gt;</description>
      <category>유용한 팁</category>
      <category>vscode 괄호 이동</category>
      <category>vscode 괄호 자동완성</category>
      <category>vscode 꿀팁</category>
      <category>vscode 자동완성</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/217</guid>
      <comments>https://coding-kindergarten.tistory.com/217#entry217comment</comments>
      <pubDate>Tue, 14 Jun 2022 16:43:55 +0900</pubDate>
    </item>
    <item>
      <title>[자바 독학] 6강.자바 자료형 요약 정리 2편 (ft. 배열, 리스트, 맵)</title>
      <link>https://coding-kindergarten.tistory.com/216</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&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 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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목을 입력해주세요_-001.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9cc8h/btrEou32obf/9qVKAmG5BZbIzO6kcgyha0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9cc8h/btrEou32obf/9qVKAmG5BZbIzO6kcgyha0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9cc8h/btrEou32obf/9qVKAmG5BZbIzO6kcgyha0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9cc8h%2FbtrEou32obf%2F9qVKAmG5BZbIzO6kcgyha0%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;640&quot; height=&quot;640&quot; data-filename=&quot;제목을 입력해주세요_-001.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;자바의 자료형&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&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;blockquote data-ke-style=&quot;style3&quot;&gt;1) 숫자 (byte, short, long, int, float, double)&lt;br /&gt;2) 문자 (char,&amp;nbsp;String, StringBuffer)&lt;br /&gt;3) 불 (boolean)&lt;br /&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;4) 배열 (Array)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;5) 리스트 (ArrayList)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;6) 맵 (Map)&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;7) 집합 (Set)&lt;br /&gt;8) 상수집합 (Enum)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;4) 배열 (Array)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h4&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;즉, int[ ]는 int 객체들을 꾸러미로 가질 수 있는 Array 객체이며, String[ ]는 String 객체들을 꾸러미로 가질 수 있는 Array 객체입니다. (객체의 개념은 아직 어려운 개념일 수 있으니, 코드가 이렇게 생겼구나라고 생각하고 넘어가셔도 좋습니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1654841748662&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class Datatype {

	public static void main(String[] args) {
				
		int[] numbers = {1,2,3,4,5};
		String[] strings = {&quot;월&quot;,&quot;화&quot;,&quot;수&quot;,&quot;목&quot;,&quot;금&quot;,&quot;토&quot;,&quot;일&quot;};
		
		System.out.println(numbers);
		System.out.println(strings);
	}
}&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;위의 &lt;span style=&quot;color: #409d00;&quot;&gt;String[] strings = {&quot;월&quot;,&quot;화&quot;,&quot;수&quot;,&quot;목&quot;,&quot;금&quot;,&quot;토&quot;,&quot;일&quot;}&lt;/span&gt; 코드는 아래와 같이 먼저 Array 객체를 생성해주고 그 값들을 하나씩 대입해주는 방식으로도 표현 가능합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1654842080886&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String[] strings = new String[7];
strings[0] = &quot;월&quot;;
strings[1] = &quot;화&quot;;
strings[2] = &quot;수&quot;;
strings[3] = &quot;목&quot;;
strings[4] = &quot;금&quot;;
strings[5] = &quot;토&quot;;
strings[6] = &quot;일&quot;;&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;여기서 String[&lt;span style=&quot;color: #ee2323;&quot;&gt;7&lt;/span&gt;]이라고 표현해준 부분을 보시면, Array 객체는 필요한 공간의 갯수를 딱 정해놓고 내용을 채워넣는 다는 것을 알 수 있습니다. 이러한 특징은 C언어와 같고 파이썬과는 다른 부분이네요.&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;참고로 &quot;금&quot;이라는 문자열을 출력하고 싶다면, 아래와 같이 코딩 하시면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1654842556418&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 인덱싱 개념
System.out.println(strings[4]);&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;5) 리스트 (ArrayList)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h4&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&gt;&lt;span&gt;&lt;span&gt;리스트는 배열과 비슷하면서도 편리한 점이 많은 자료형입니다. 앞서 공부했던 배열은 공간의 크기가 정해져서 변하지 않았다면 리스트는 그 크기가 정해져있지 않고 변한다는 것이 가장 큰 특징입니다.&lt;/span&gt;&lt;/span&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;span&gt;&lt;span&gt;&lt;span&gt;쉽게 말해서 무언가 담는 그릇이 있는데, 배열은 딱딱한 그릇이고, 리스트는 늘어나는 소재의 그릇이라고 할 수 있겠네요.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1654843336123&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// ArrayList를 사용하려면 아래의 클래스를 import 해주어야 함
import java.util.ArrayList;

public class Datatype {
    public static void main(String[] args) {
    	
        ArrayList season = new ArrayList();
        
        season.add(&quot;Spring&quot;);
        season.add(&quot;Autumn&quot;);
        season.add(&quot;Winter&quot;);
        
        System.out.println(season);
    }
}&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;&lt;b&gt;&amp;lt;실행 결과&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1654844210570&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[Spring, Autumn, Winter]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;add&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자, 여기서 제가 실수로 Summer를 빠트렸다고 해봅시다. 이럴 때 두번째, 즉 Spring과 Autumn 사이에 Summer를 넣고 싶다면 어떻게 해야 할까요?&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;season을 출력해보기 전에 아래의 코드를 Winter 아래에 넣어보세요.&lt;/p&gt;
&lt;pre id=&quot;code_1654844352112&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;season.add(1,&quot;Summer&quot;);&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;&lt;b&gt;&amp;lt;실행 결과&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1654844405054&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[Spring, Summer, Autumn, Winter]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;get, size, remove&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약&amp;nbsp; 리스트 내에서 요소 하나만 출력하고 싶을 때, 리스트 내의 요소 갯수를 출력하고 싶을 때, 요소 하나를 없애고 싶을 땐 다음과 같이 하시면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1654844652324&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 하나만 선택해서 출력
System.out.println(season.get(3));

// 리스트 안에 담긴 요소들의 갯수 출력
System.out.println(season.size());

// 하나만 선택해서 삭제 (둘다 모두 삭제되지만 return 결과가 조금씩 다름)
System.out.println(season.remove(&quot;Autumn&quot;));
System.out.println(season.remove(2));&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;하나씩 실행 시켜보면서 확인해보시면 이해하시는데에 도움이 되실거예요.&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;6) 맵 (map)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h4&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;자바의 맵 자료형은 아래 표와 같이 Key와 Value 한 쌍으로 이루어진 요소들을 객체로 가지는 자료형입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬에서의 dictionary 자료형과 같은 개념입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;270&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zjWWN/btrEtlkLVoD/TRHnKsYFfnDH8rlHYAvj9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zjWWN/btrEtlkLVoD/TRHnKsYFfnDH8rlHYAvj9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zjWWN/btrEtlkLVoD/TRHnKsYFfnDH8rlHYAvj9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzjWWN%2FbtrEtlkLVoD%2FTRHnKsYFfnDH8rlHYAvj9k%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;200&quot; height=&quot;144&quot; data-origin-width=&quot;376&quot; data-origin-height=&quot;270&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;자바에서 map은 아래와 같이 만들 수 있습니다. 참고로 HashMap 객체를 사용해서 map을 만들어줄 때, 지금까지 못보던 &amp;lt;&amp;gt;가 들어가는 것을 볼 수 있는데 이는 &quot;제네릭스&quot; 문법으로 추후에 시간을 내서 공부해보겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1654847239830&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.HashMap;

public class Datatype {
    public static void main(String[] args) {
    	
        HashMap&amp;lt;String, String&amp;gt; map = new HashMap&amp;lt;&amp;gt;();
        map.put(&quot;남자&quot;, &quot;Male&quot;);
        map.put(&quot;여자&quot;, &quot;Female&quot;);
        
        System.out.println(map);
    }
}&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;&lt;b&gt;&amp;lt;실행 결과&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1654847256547&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{여자=Female, 남자=Male}&lt;/code&gt;&lt;/pre&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;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;get, size, remove&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;map 역시 list와 마찬가지로 get, size, remove 메소드를 사용할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1654847469563&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// key를 선택해서 value값을 출력
System.out.println(map.get(&quot;남자&quot;));    //&quot;Male&quot; 출력

// 맵 안에 담긴 요소들의 갯수 출력
System.out.println(map.size());        // 2 출력

// key를 선택해서 key,value 세트를 삭제  --&amp;gt; 삭제 후 value값 리턴
System.out.println(map.remove(&quot;여자&quot;));    // &quot;Female&quot; 출력&lt;/code&gt;&lt;/pre&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;size16&quot;&gt;&amp;lt;참고 자료&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;b&gt;1. 점프 투 자바_위키독스&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://wikidocs.net/276&quot;&gt;https://wikidocs.net/276&lt;/a&gt;&lt;/p&gt;</description>
      <category>자바(Java)</category>
      <category>자바 기초 공부</category>
      <category>자바 독학</category>
      <category>자바 리스트</category>
      <category>자바 맵</category>
      <category>자바 배열</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/216</guid>
      <comments>https://coding-kindergarten.tistory.com/216#entry216comment</comments>
      <pubDate>Fri, 10 Jun 2022 16:56:59 +0900</pubDate>
    </item>
    <item>
      <title>[자바 독학] 5강.자바 자료형 요약 정리 1편 (ft. 숫자, 문자, 불리언)</title>
      <link>https://coding-kindergarten.tistory.com/215</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&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 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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목을 입력해주세요_-001.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbb1Zi/btrEjMaRNmx/FJVibUZN9Cwou7JFlkghaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbb1Zi/btrEjMaRNmx/FJVibUZN9Cwou7JFlkghaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbb1Zi/btrEjMaRNmx/FJVibUZN9Cwou7JFlkghaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbbb1Zi%2FbtrEjMaRNmx%2FFJVibUZN9Cwou7JFlkghaK%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;640&quot; height=&quot;640&quot; data-filename=&quot;제목을 입력해주세요_-001.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;프로그래밍에서 자료형의 의미&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&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;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;우리에게 TV 프로그램이란 단어로 익숙한 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;프로그램&lt;/b&gt;&lt;/span&gt;의 사전적 의미는&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;지시 사항들이 나열된 순서&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;를 의미합니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;즉,&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;프로그래밍&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이란&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;특정 작업을 수행하는 일련의 명령들을 만드는 행위&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;를 뜻합니다.&lt;/span&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2021-03-09 오후 9.28.11.png&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;328&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BqH28/btrEhYRbQUy/rfMYu0B3DXwaklNjcKSCL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BqH28/btrEhYRbQUy/rfMYu0B3DXwaklNjcKSCL1/img.png&quot; data-alt=&quot;출처. 프로그래머가 필요한 수학 (brunch)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BqH28/btrEhYRbQUy/rfMYu0B3DXwaklNjcKSCL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBqH28%2FbtrEhYRbQUy%2FrfMYu0B3DXwaklNjcKSCL1%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;676&quot; height=&quot;328&quot; data-filename=&quot;스크린샷 2021-03-09 오후 9.28.11.png&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;328&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처. 프로그래머가 필요한 수학 (brunch)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bK8llz/btqZFuWcCLE/dzzfkr11Rbezycmfi36UrK/img.png&quot; data-lightbox=&quot;lightbox&quot; data-alt=&quot;출처. 프로그래머가 필요한 수학 (brunch)&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;위의 그림에서 프로그램은 f(x)입니다. 빵 만드는 기계를 일종의 빵을 만드는 프로그램으로 볼 수 있죠.&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;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;프로그래밍(Programing)&lt;/b&gt;을 한마디로 f(x)를 구현하는 것입니다. 참고로 &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;코딩(Coding)&lt;/b&gt;은 이러한 f(x)를 컴퓨터가 알아들을 수 있는 코드로 작성하는 행위를 뜻하죠.&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;span style=&quot;color: #333333;&quot;&gt;이때, f(x)를 설계하면서 반드시 고려해야할 부분은&lt;span style=&quot;color: #0593d3;&quot;&gt;&amp;nbsp;&lt;b&gt;'어떤 입력값 a를 함수에 넣어 어떤 출력값 f(a)를 받을 것인지'&lt;/b&gt;&lt;/span&gt;입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;여기서&amp;nbsp;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;입력값과 출력값의 형태&lt;/b&gt;&lt;/span&gt;를&amp;nbsp;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;자료형&lt;/b&gt;&lt;/span&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;span style=&quot;color: #333333;&quot;&gt;우리는 자료형에 대해 파악하고, 우리가 혹은 남이 만들어 놓은 함수 f(x)에 적절한 자료형을 넣어줄 필요가 있습니다. 물론 처리된 자료형을 다시 어떤 함수로 넣어주어야 하니 어떤 자료형이 나오는지도 잘 파악해야하죠.&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;span style=&quot;color: #333333;&quot;&gt;위의 그림에서 만약 빵 만드는 기계에 밀가루 대신에 시멘트 가루를 넣으면 기계가 망가지겠죠?&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;자바의 자료형&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&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;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;1) 숫자 (byte, short, long, int, float, double)&lt;/b&gt;&lt;br /&gt;&lt;b&gt;2) 문자 (char,&amp;nbsp;String, StringBuffer)&lt;/b&gt;&lt;br /&gt;&lt;b&gt;3) 불 (boolean)&lt;/b&gt;&lt;br /&gt;&lt;b&gt;4) 배열 (Array)&lt;/b&gt;&lt;br /&gt;&lt;b&gt;5) 리스트 (ArrayList)&lt;/b&gt;&lt;br /&gt;&lt;b&gt;6) 맵 (Map)&lt;/b&gt;&lt;br /&gt;&lt;b&gt;7) 집합 (Set)&lt;/b&gt;&lt;br /&gt;&lt;b&gt;8) 상수집합 (Enum)&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;1) 숫자&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h4&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&gt;&lt;span&gt;&lt;span&gt;숫자 자료형에서 가장 많이 사용하는 것은 int와 double 두 가지 입니다. int는 정수, double은 실수를 표현할 때 사용합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;일단 다른 문법은 신경쓰지 마시고 자료형의 생김새와 출력 결과만 봐주세요.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1654695710874&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class Datatype {

	public static void main(String[] args) {
				
		int num1 = 10;
		double num2 = 1.0;
		
		System.out.println(num1);
		System.out.println(num2);
	}
}&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;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;lt;실행 결과&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1654695745796&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;10
1.0&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;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;참고&amp;gt; 각 자료형의 메모리 크기와 데이터 표현 범위&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QSnqU/btrEhYjpSXu/Kstqg4qkZ4DB2j2JMkNpc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QSnqU/btrEhYjpSXu/Kstqg4qkZ4DB2j2JMkNpc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QSnqU/btrEhYjpSXu/Kstqg4qkZ4DB2j2JMkNpc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQSnqU%2FbtrEhYjpSXu%2FKstqg4qkZ4DB2j2JMkNpc1%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;800&quot; height=&quot;380&quot; data-origin-width=&quot;936&quot; data-origin-height=&quot;380&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;750&quot; data-origin-height=&quot;150&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpPjMj/btrEjLJWkMx/OHefMSl2EH8MiPddSzsVSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpPjMj/btrEjLJWkMx/OHefMSl2EH8MiPddSzsVSk/img.png&quot; data-alt=&quot;출처. TCP 스쿨&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpPjMj/btrEjLJWkMx/OHefMSl2EH8MiPddSzsVSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpPjMj%2FbtrEjLJWkMx%2FOHefMSl2EH8MiPddSzsVSk%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;640&quot; height=&quot;150&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;150&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처. TCP 스쿨&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;2) 문자&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자 자료형은 크게 문자 하나만 나타내는 char와 문자 여러개를 나타내는 String으로 나뉩니다. (StringBuffe는 일단 생략)&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;여기서 주의하실 점은 2가지입니다.&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;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;하나. char는 작은따옴표(' ')로 표현하고, String은 큰따옴표(&quot; &quot;)로 표현&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;둘. 자료형 String의 가장 첫글자는 꼭 대문자로 표현&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1654696198208&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class Datatype {

	public static void main(String[] args) {
				
		char a = 'x';
		String b = &quot;yyyyyy&quot;;
		
		System.out.println(a);
		System.out.println(b);
	}
}&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;lt;실행 결과&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1654696213621&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;x
yyyyyy&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;3) 불 (Boolean)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h4&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&gt;&lt;span&gt;&lt;span&gt;참(true) 또는 거짓(false)의 값을 갖는 자료형을 불 자료형이라고 하며, boolean이라고 표기합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;불 자료형은 아래와 같이 비교연산을 통해 참/거짓의 판단 결과값을 대입 받습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1654696812210&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class Datatype {

	public static void main(String[] args) {
				
		boolean a = 2&amp;gt;1;
		boolean b = 1==2;
		
		System.out.println(a);
		System.out.println(b);
	}
}&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;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;lt;실행 결과&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1654696835362&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;true
false&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;&lt;span&gt;&lt;span&gt;&lt;span&gt;다음 시간에 이어서 남은 자료형에 대해서 공부해보겠습니다.&lt;/span&gt;&lt;/span&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;span&gt;&lt;span&gt;&lt;span&gt;감사합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&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;&amp;lt;참고 자료&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;b&gt;1. 점프 투 자바_위키독스&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://wikidocs.net/276&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://wikidocs.net/276&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;b&gt;2. JAVA 기본타입 강의_TCP스쿨&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://www.tcpschool.com/java/java_datatype_basic&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://www.tcpschool.com/java/java_datatype_basic&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>자바(Java)</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/215</guid>
      <comments>https://coding-kindergarten.tistory.com/215#entry215comment</comments>
      <pubDate>Wed, 8 Jun 2022 23:23:30 +0900</pubDate>
    </item>
    <item>
      <title>[자바 독학] 4강.이클립스 IDE에서 Hello World 출력해보기(ft. 프로젝트, 클래스 생성)</title>
      <link>https://coding-kindergarten.tistory.com/214</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&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 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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목을 입력해주세요_-001.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QO0gY/btrEaoWH8rc/qISCkrzl35uVyjsy7T31I1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QO0gY/btrEaoWH8rc/qISCkrzl35uVyjsy7T31I1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QO0gY/btrEaoWH8rc/qISCkrzl35uVyjsy7T31I1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQO0gY%2FbtrEaoWH8rc%2FqISCkrzl35uVyjsy7T31I1%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;640&quot; height=&quot;640&quot; data-filename=&quot;제목을 입력해주세요_-001.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&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;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이번 시간에는 &lt;span style=&quot;background-color: #ffffff;&quot;&gt;워크스페이스, 프로젝트를 생성하고, HelloWorld를 출력하는 자바 소스 코드 파일, 클래스 등을 다루어 보도록 하겠습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt;&lt;span&gt; 이클립스 인터페이스 구성&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 이클립스의 화면 구성은 다음과 같습니다. 가장 처음 실행하면 패키지 탐색기, 코드 작성 영역, Outline, 콘솔창으로 나뉘어 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1045&quot; data-origin-height=&quot;729&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pg1vO/btrEeXcjYZo/pi6QKZx3lTuOx4QLjoksf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pg1vO/btrEeXcjYZo/pi6QKZx3lTuOx4QLjoksf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pg1vO/btrEeXcjYZo/pi6QKZx3lTuOx4QLjoksf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpg1vO%2FbtrEeXcjYZo%2Fpi6QKZx3lTuOx4QLjoksf0%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;1045&quot; height=&quot;729&quot; data-origin-width=&quot;1045&quot; data-origin-height=&quot;729&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;패키지 탐색기&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 프로젝트, 패키지, 클래스 등을 관리하는 영역&lt;/p&gt;
&lt;p 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;span&gt;&amp;nbsp;&lt;/span&gt;: 소스 코드(.java)를 작성할 수 있는 영역&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;콘솔&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 코드 실행 결과를 보여주는 영역&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;Outline&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 소스 코드의 문법적 요소를 시각적으로 보여주는 영역&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 여기다가 디렉토리를 관리해주는 Navigator 창을 추가해서 사용하기로 하였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baBt2K/btrEeXDoDq0/6a3ALDtcdBKd5QpDj8UrNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baBt2K/btrEeXDoDq0/6a3ALDtcdBKd5QpDj8UrNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baBt2K/btrEeXDoDq0/6a3ALDtcdBKd5QpDj8UrNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaBt2K%2FbtrEeXDoDq0%2F6a3ALDtcdBKd5QpDj8UrNk%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;860&quot; height=&quot;598&quot; data-origin-width=&quot;829&quot; data-origin-height=&quot;576&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&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;875&quot; data-origin-height=&quot;689&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2MtWA/btrEeLplijg/K7kmA9uTsksmbRXKlqtqfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2MtWA/btrEeLplijg/K7kmA9uTsksmbRXKlqtqfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2MtWA/btrEeLplijg/K7kmA9uTsksmbRXKlqtqfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2MtWA%2FbtrEeLplijg%2FK7kmA9uTsksmbRXKlqtqfK%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;875&quot; height=&quot;689&quot; data-origin-width=&quot;875&quot; data-origin-height=&quot;689&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; 자바 프로젝트 생성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&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;b&gt;1) 아래 그림과 같이 File-New-Java Project를 클릭해주세요.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;743&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCcgB0/btrEbEFAYNE/AvBoIQAvjdZf56leXnjskK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCcgB0/btrEbEFAYNE/AvBoIQAvjdZf56leXnjskK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCcgB0/btrEbEFAYNE/AvBoIQAvjdZf56leXnjskK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCcgB0%2FbtrEbEFAYNE%2FAvBoIQAvjdZf56leXnjskK%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;743&quot; height=&quot;214&quot; data-origin-width=&quot;743&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2) 클릭하시면 아래와 같은 창이 나옵니다. 설명을 따라서 워크스페이스를 설정하고, 프로젝트 이름과 형태를 설정해주시면 됩니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;951&quot; data-origin-height=&quot;718&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WMNyB/btrEdRcB9V3/i0VTqjEfyIeW36tn8PExxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WMNyB/btrEdRcB9V3/i0VTqjEfyIeW36tn8PExxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WMNyB/btrEdRcB9V3/i0VTqjEfyIeW36tn8PExxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWMNyB%2FbtrEdRcB9V3%2Fi0VTqjEfyIeW36tn8PExxk%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;951&quot; height=&quot;718&quot; data-origin-width=&quot;951&quot; data-origin-height=&quot;718&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;889&quot; data-origin-height=&quot;131&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LcEac/btrEcPfcPxi/8shE6nL66sAbe0LkuTx2k0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LcEac/btrEcPfcPxi/8shE6nL66sAbe0LkuTx2k0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LcEac/btrEcPfcPxi/8shE6nL66sAbe0LkuTx2k0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLcEac%2FbtrEcPfcPxi%2F8shE6nL66sAbe0LkuTx2k0%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;700&quot; height=&quot;131&quot; data-origin-width=&quot;889&quot; data-origin-height=&quot;131&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;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;156&quot; data-origin-height=&quot;94&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H3TFz/btrEc4DsNgz/EMm1wDHGHDaAo1QCIeLZsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H3TFz/btrEc4DsNgz/EMm1wDHGHDaAo1QCIeLZsk/img.png&quot; data-alt=&quot;네비게이터 창에서 확인 가능&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H3TFz/btrEc4DsNgz/EMm1wDHGHDaAo1QCIeLZsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH3TFz%2FbtrEc4DsNgz%2FEMm1wDHGHDaAo1QCIeLZsk%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;200&quot; height=&quot;121&quot; data-origin-width=&quot;156&quot; data-origin-height=&quot;94&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;네비게이터 창에서 확인 가능&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;자바 클래스 생성&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로 해줄 일은 자바 클래스를 생성해주는 일입니다. 클래스(.class) 파일을 생성하면 자바 소스 코드 파일(.java)도 생성됩니다.&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;1) 방금 생성한 프로젝트 폴더를 우클릭해서 아래 그림과 같이 'Class'를 클릭해줍니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;275&quot; data-origin-height=&quot;180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4upe0/btrEfCMznlW/WRSbLzeZ983FkwIS63Iz61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4upe0/btrEfCMznlW/WRSbLzeZ983FkwIS63Iz61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4upe0/btrEfCMznlW/WRSbLzeZ983FkwIS63Iz61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4upe0%2FbtrEfCMznlW%2FWRSbLzeZ983FkwIS63Iz61%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;200&quot; height=&quot;131&quot; data-origin-width=&quot;275&quot; data-origin-height=&quot;180&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;443&quot; data-origin-height=&quot;505&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHUfyq/btrEeKqty1E/CP1c4z2ZHX0UhpIG0jrvHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHUfyq/btrEeKqty1E/CP1c4z2ZHX0UhpIG0jrvHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHUfyq/btrEeKqty1E/CP1c4z2ZHX0UhpIG0jrvHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHUfyq%2FbtrEeKqty1E%2FCP1c4z2ZHX0UhpIG0jrvHK%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;443&quot; height=&quot;505&quot; data-origin-width=&quot;443&quot; data-origin-height=&quot;505&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;2) 클래스명을 입력해주고, 'public static void main(String[ ] args) 옵션을 체크 후, 'Finish'를 클릭해줍니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;659&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwOnKw/btrEeK444ui/Z65FBqXXP3SMsrfQk14p5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwOnKw/btrEeK444ui/Z65FBqXXP3SMsrfQk14p5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwOnKw/btrEeK444ui/Z65FBqXXP3SMsrfQk14p5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwOnKw%2FbtrEeK444ui%2FZ65FBqXXP3SMsrfQk14p5k%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;567&quot; height=&quot;659&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;659&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;저의 경우엔 'HelloWorld'라는 이름으로 클래스를 생성해 주었고, 그 결과는 아래와 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;371&quot; data-origin-height=&quot;175&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFMrVN/btrEcyE893F/xRfaLcaWN3s1rudMG7fnWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFMrVN/btrEcyE893F/xRfaLcaWN3s1rudMG7fnWk/img.png&quot; data-alt=&quot;코드 작성 영역&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFMrVN/btrEcyE893F/xRfaLcaWN3s1rudMG7fnWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFMrVN%2FbtrEcyE893F%2FxRfaLcaWN3s1rudMG7fnWk%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;371&quot; height=&quot;175&quot; data-origin-width=&quot;371&quot; data-origin-height=&quot;175&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;코드 작성 영역&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;256&quot; data-origin-height=&quot;204&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XDIq3/btrEdRKsUHr/9Xmhp749HNzGkjYKL2R5O1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XDIq3/btrEdRKsUHr/9Xmhp749HNzGkjYKL2R5O1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XDIq3/btrEdRKsUHr/9Xmhp749HNzGkjYKL2R5O1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXDIq3%2FbtrEdRKsUHr%2F9Xmhp749HNzGkjYKL2R5O1%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;230&quot; height=&quot;183&quot; data-origin-width=&quot;256&quot; data-origin-height=&quot;204&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;4.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; Hello World 출력하기&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 &quot;Hello World!!&quot;를 출력해보겠습니다.&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;1) 일단 코드의 의미는 몰라도 아래와 같이 코드를 입력해봅시다.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1654615642581&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class HelloWorld {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(&quot;Hello World!!&quot;);
	}
}&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;&lt;b&gt;2) Run 버튼을 눌러서 실행시켜봅시다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dSgoS8/btrEfC6TsO0/NopwXoNtT5vGCIV0Uluf1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dSgoS8/btrEfC6TsO0/NopwXoNtT5vGCIV0Uluf1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dSgoS8/btrEfC6TsO0/NopwXoNtT5vGCIV0Uluf1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdSgoS8%2FbtrEfC6TsO0%2FNopwXoNtT5vGCIV0Uluf1k%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;733&quot; height=&quot;254&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;254&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;아래와 같은 창이 뜰 수 있는데 'OK'를 눌러줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;295&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwITsU/btrEaNW8Jvo/t0kKKUd9UQnX3JvkcNYvYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwITsU/btrEaNW8Jvo/t0kKKUd9UQnX3JvkcNYvYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwITsU/btrEaNW8Jvo/t0kKKUd9UQnX3JvkcNYvYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwITsU%2FbtrEaNW8Jvo%2Ft0kKKUd9UQnX3JvkcNYvYk%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;295&quot; height=&quot;370&quot; data-origin-width=&quot;295&quot; data-origin-height=&quot;370&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;&amp;lt;콘솔창 출력 결과&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;343&quot; data-origin-height=&quot;96&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3Wwo7/btrEeXXJ2Zv/K2t8OrG3Ur3dgkATLSpdPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3Wwo7/btrEeXXJ2Zv/K2t8OrG3Ur3dgkATLSpdPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3Wwo7/btrEeXXJ2Zv/K2t8OrG3Ur3dgkATLSpdPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3Wwo7%2FbtrEeXXJ2Zv%2FK2t8OrG3Ur3dgkATLSpdPk%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;343&quot; height=&quot;96&quot; data-origin-width=&quot;343&quot; data-origin-height=&quot;96&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;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;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;b&gt;&amp;lt;참고 자료&amp;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;1. 네이버 부스트코스 강의_쉽게 배우는 자바1&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>자바(Java)</category>
      <category>이클립스 기초</category>
      <category>이클립스 사용법</category>
      <category>이클립스 자바</category>
      <category>이클립스 자바 hello world</category>
      <category>자바 hello world</category>
      <category>자바 hello world 출력</category>
      <category>자바 클래스 생성</category>
      <category>자바 프로젝트 생성</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/214</guid>
      <comments>https://coding-kindergarten.tistory.com/214#entry214comment</comments>
      <pubDate>Tue, 7 Jun 2022 23:56:57 +0900</pubDate>
    </item>
    <item>
      <title>[자바 독학] 3강.자바 개발환경의 기본구조 (ft. JDK,JRE,JVM &amp;amp; 워크스페이스,프로젝트,패키지,클래스)</title>
      <link>https://coding-kindergarten.tistory.com/213</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&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 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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목을 입력해주세요_-001.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/owKif/btrD3Q6bkbJ/E9ldooBf2zje6QPFFy9vk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/owKif/btrD3Q6bkbJ/E9ldooBf2zje6QPFFy9vk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/owKif/btrD3Q6bkbJ/E9ldooBf2zje6QPFFy9vk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FowKif%2FbtrD3Q6bkbJ%2FE9ldooBf2zje6QPFFy9vk1%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;640&quot; height=&quot;640&quot; data-filename=&quot;제목을 입력해주세요_-001.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&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;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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt; JVM이&lt;/span&gt;란?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 첫 시간에 자바의 장점에 대해서 이야기 할 때, &lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;자바 가상 머신(JVM, Java Virtual Machine)&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;을 사용하여, 운영체제와는 독립적으로 동작할 수 있다고 말씀드렸었습니다.&lt;/span&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;이 JVM을 설명 드리려면 그 전에 소스 코드와 바이트 코드의 차이에 대해서 이해하셔야 하는데요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1309&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GtF9r/btrDZvPHF3N/gUX2KexY6yqYIeIyBrxwdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GtF9r/btrDZvPHF3N/gUX2KexY6yqYIeIyBrxwdK/img.png&quot; data-alt=&quot;바이트 코드는 바이너리 코드라고도 부름&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GtF9r/btrDZvPHF3N/gUX2KexY6yqYIeIyBrxwdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGtF9r%2FbtrDZvPHF3N%2FgUX2KexY6yqYIeIyBrxwdK%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;1309&quot; height=&quot;352&quot; data-origin-width=&quot;1309&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;바이트 코드는 바이너리 코드라고도 부름&lt;/figcaption&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;우리가 앞으로 배울 자바 문법을 이용해서 작성할 코드를 자바 소스 코드라고 합니다. 그 코드가 저장된 파일의 확장자는 .java이구요.&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;우리가 지난 시간에 선택했던 eclipse IDE에서는 코드를 작성하고 저장을 하면, 자동으로 자바 바이트 코드(.class) 파일이 생성되어 저장되는데요. 이 과정을 컴파일(Compile)이라 부르며 사람이 짠 코드를 컴퓨터가 알아들을 수 있는 코드로 변환되는 과정입니다.&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;정확히는 JVM이 알아들을 수 있는 코드이며, JVM은 이를 해석해서 실행시켜 주는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(참고로 Windows, Linux, Mac OS 마다 각각의 JVM이 있으며,&amp;nbsp; class 파일만 같다면 동일한 결과를 출력하게 됩니다.)&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;JRE와 JDK&lt;/span&gt;란?&lt;/b&gt;&lt;/span&gt;&lt;/h3&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;&quot;&gt;JRE란 Java Runtime Environment의 약자로 자바 실행환경을 의미합니다. 아래 그림에서 보시는 것과 같이 방금 전 배웠던 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;JVM과 JVM이 동작하는데에 필요한 각종 자바 라이브러리&lt;/b&gt;&lt;/span&gt;를 의미합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;384&quot; data-origin-height=&quot;346&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sOZcz/btrD5TamNYl/ibDYKFSG8AqGSkOm5fsGTk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sOZcz/btrD5TamNYl/ibDYKFSG8AqGSkOm5fsGTk/img.jpg&quot; data-alt=&quot;JVM, JRE, JDK의 관계 (출처.programiz.com)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sOZcz/btrD5TamNYl/ibDYKFSG8AqGSkOm5fsGTk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsOZcz%2FbtrD5TamNYl%2FibDYKFSG8AqGSkOm5fsGTk%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;384&quot; height=&quot;346&quot; data-origin-width=&quot;384&quot; data-origin-height=&quot;346&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;JVM, JRE, JDK의 관계 (출처.programiz.com)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;마지막으로 가장 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;JRE에 컴파일러, 디버거, JavaDoc 등을 포함하는 개념&lt;/b&gt;&lt;/span&gt;이 가장 첫 시간에 설치했던 JDK(Java Development Kit)입니다.&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;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt;&lt;span&gt; 워크스페이스, 프로젝트, 패키지, 클래스의 관계&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&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&gt;처음에 이클립스를 실행해서 강의를 따라서 Hello World가 출력되는 코드를 작성해보니, 좌측 Package Explorer에 많은 것들이 계층을 이루며 표현되어 있었습니다.&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;span&gt;앞으로 코딩을 하기 위해서는 이런 구조들이 어떤 의미와 관계를 가지는지 파악해놓는게 좋겠다고 생각하여 좀 더 자세히 공부해보았습니다.&lt;/span&gt;&lt;span&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;1149&quot; data-origin-height=&quot;389&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/x29Ic/btrD8MuX5uQ/TPHgHzf7HkcxkhqybdhXZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/x29Ic/btrD8MuX5uQ/TPHgHzf7HkcxkhqybdhXZk/img.png&quot; data-alt=&quot;HelloWorld 프로젝트&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/x29Ic/btrD8MuX5uQ/TPHgHzf7HkcxkhqybdhXZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fx29Ic%2FbtrD8MuX5uQ%2FTPHgHzf7HkcxkhqybdhXZk%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;1149&quot; height=&quot;389&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;389&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;HelloWorld 프로젝트&lt;/figcaption&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;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;826&quot; data-origin-height=&quot;689&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WF6ap/btrD7FQo78F/lvoDB0qUJPOikKX7SQi0c1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WF6ap/btrD7FQo78F/lvoDB0qUJPOikKX7SQi0c1/img.png&quot; data-alt=&quot;출처.&amp;amp;nbsp;https://codevang.tistory.com/76&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WF6ap/btrD7FQo78F/lvoDB0qUJPOikKX7SQi0c1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWF6ap%2FbtrD7FQo78F%2FlvoDB0qUJPOikKX7SQi0c1%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;826&quot; height=&quot;689&quot; data-origin-width=&quot;826&quot; data-origin-height=&quot;689&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처.&amp;nbsp;https://codevang.tistory.com/76&lt;/figcaption&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;원래는 이번 시간에 워크스페이스, 프로젝트를 생성하고, HelloWorld를 출력하는 자바 소스 코드 파일, 클래스 등을 다루어보려 했으나, 글이 길어질 듯해서 다음 글에서 다루어 보도록 하겠습니다.&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;&amp;lt;참고 자료&amp;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;&lt;b&gt;1. 자바의 이식성-&quot;바이트 코드&quot;에서 &quot;가상머신&quot;까지_네이버 블로그(행복을 주는 공간)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&amp;amp;blogId=web4click&amp;amp;logNo=110159692556&quot;&gt;https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&amp;amp;blogId=web4click&amp;amp;logNo=110159692556&lt;/a&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;&lt;b&gt;2. 워크스페이스/프로젝트/패키지/클래스의 개념 및 명명규칙_티스토리 블로그(codevang)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://codevang.tistory.com/76&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://codevang.tistory.com/76&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>자바(Java)</category>
      <category>JDK JRE JVM</category>
      <category>자바 jdk jre 차이</category>
      <category>자바 jvm 역할</category>
      <category>자바 jvm 정의</category>
      <category>자바 기초</category>
      <category>자바 독학</category>
      <category>자바 워크스페이스</category>
      <category>자바 워크스페이스 패키지 프로젝트 클래스 차이</category>
      <category>자바 패키지</category>
      <category>자바 프로젝트</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/213</guid>
      <comments>https://coding-kindergarten.tistory.com/213#entry213comment</comments>
      <pubDate>Mon, 6 Jun 2022 17:49:14 +0900</pubDate>
    </item>
    <item>
      <title>[자바 독학] 2강.자바 IDE는 무엇을 사용할까? (Eclipse vs IntelliJ)</title>
      <link>https://coding-kindergarten.tistory.com/212</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&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 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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목을 입력해주세요_-001.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/elMXwD/btrDTiP4cdT/eOkYrPrUflWwmxBBRU8xl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/elMXwD/btrDTiP4cdT/eOkYrPrUflWwmxBBRU8xl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/elMXwD/btrDTiP4cdT/eOkYrPrUflWwmxBBRU8xl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FelMXwD%2FbtrDTiP4cdT%2FeOkYrPrUflWwmxBBRU8xl1%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;640&quot; height=&quot;640&quot; data-filename=&quot;제목을 입력해주세요_-001.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;IDE란?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬을 공부할 때 IDE 관련 내용을 포스팅 한 적이 있는데, 그 내용을 다시 가져와 보았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;IDE [Integrated Development Environment]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;효율적으로 소프트웨어를 개발하기 위한 통합개발환경 소프트웨어 어플리케이션 인터페이스이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;코드 편집기, 디버거, 컴파일러, 인터프리터 등을 포함하고 개발자에게&amp;nbsp;제공한다.&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 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: #ef5369;&quot;&gt;&lt;b&gt;코드 편집기&lt;/b&gt;&lt;/span&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;디버거&lt;/span&gt;&lt;/b&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;컴파일러&lt;/span&gt;&lt;/b&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;인터프리터&lt;/span&gt;&lt;/b&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt; 자바용&amp;nbsp;&lt;/span&gt;IDE&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬용 IDE에도 여러가지(VS CODE, Pycharm, JupyterNotebook 등등)가 있듯이 자바용 IDE에도 여러가지가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통 IDE를 한번 선정하면 익숙한 것을 계속 사용하려는 본능 때문에 쉽게 바꾸기가 어렵습니다. 그래서 저는 무엇을 사용할지 신중히 알아보았는데요.&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;아래의 글들을 참고해서 선정한 IDE는 Eclipse였습니다. 위의 말과는 조금 모순적일 수는 있지만 일단 기초문법을 모두 공부하고 제대로 자바를 다루기 전까지는 Eclipse를 사용해보고 추후에 다시 생각하기로 했습니다.&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;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;1) 무료다. (IntelliJ는 개인용은 2022년 기준. 연 149달러, 기업용은 499달러이며, 무료버전이 있지만 기능이 제한적)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;2) 참고하고 있는 강의(네이버부스트코스- 쉽게 배우는 자바1)에서 Eclipse를 사용&lt;/b&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;a href=&quot;https://ko.myservername.com/top-10-best-java-ides-online-java-compilers&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://ko.myservername.com/top-10-best-java-ides-online-java-compilers&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1654347805344&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;상위 10 개 이상의 최고의 Java IDE 및 온라인 Java 컴파일러 [2021 순위] - 다른&quot; data-og-description=&quot;가격 및 기능이 포함 된 상위 Java IDE 및 온라인 Java 컴파일러의 종합 목록 및 Compariosn. 이 목록에서 최상의 Java IDE 및 컴파일러를 선택하십시오.&quot; data-og-host=&quot;ko.myservername.com&quot; data-og-source-url=&quot;https://ko.myservername.com/top-10-best-java-ides-online-java-compilers&quot; data-og-url=&quot;https://ko.myservername.com/top-10-best-java-ides-online-java-compilers&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cO4leg/hyOEnkUw7r/10VUSCWyO70iVZdjL4Nzs1/img.png?width=650&amp;amp;height=366&amp;amp;face=0_0_650_366,https://scrap.kakaocdn.net/dn/2Xcak/hyOEa0cuTw/ZCQRVFSpE1elgnudJlHby0/img.png?width=650&amp;amp;height=366&amp;amp;face=0_0_650_366&quot;&gt;&lt;a href=&quot;https://ko.myservername.com/top-10-best-java-ides-online-java-compilers&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ko.myservername.com/top-10-best-java-ides-online-java-compilers&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cO4leg/hyOEnkUw7r/10VUSCWyO70iVZdjL4Nzs1/img.png?width=650&amp;amp;height=366&amp;amp;face=0_0_650_366,https://scrap.kakaocdn.net/dn/2Xcak/hyOEa0cuTw/ZCQRVFSpE1elgnudJlHby0/img.png?width=650&amp;amp;height=366&amp;amp;face=0_0_650_366');&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;상위 10 개 이상의 최고의 Java IDE 및 온라인 Java 컴파일러 [2021 순위] - 다른&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;가격 및 기능이 포함 된 상위 Java IDE 및 온라인 Java 컴파일러의 종합 목록 및 Compariosn. 이 목록에서 최상의 Java IDE 및 컴파일러를 선택하십시오.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ko.myservername.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;&lt;a href=&quot;https://devuna.tistory.com/76&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://devuna.tistory.com/76&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1654348277511&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;[IDE] 이클립스 인텔리제이 장단점 비교(eclipse/IntelliJ)&quot; data-og-description=&quot;[IDE]&amp;nbsp;이클립스&amp;nbsp;인텔리제이&amp;nbsp;장단점&amp;nbsp;비교(eclipse/intelliJ) 1. 이클립스(eclipse) 역사가 오래되어 잘 작성된 문서, 수 많은 플러그인들이 존재하며 가장 대중적으로 사용되고 있는 IDE이다. 가장 큰 강&quot; data-og-host=&quot;devuna.tistory.com&quot; data-og-source-url=&quot;https://devuna.tistory.com/76&quot; data-og-url=&quot;https://devuna.tistory.com/76&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/A0lJg/hyOEaFUkXi/CkLsk6RXbAbFLvObMfdPCK/img.png?width=203&amp;amp;height=211&amp;amp;face=0_0_203_211,https://scrap.kakaocdn.net/dn/bkY3zk/hyOEppwoZm/sbYyP6eh94ou3dinQOlGL0/img.png?width=203&amp;amp;height=211&amp;amp;face=0_0_203_211,https://scrap.kakaocdn.net/dn/6yTO1/hyOEdJmuVr/oNWO7I4xeYmUk18rpbqRMk/img.png?width=867&amp;amp;height=551&amp;amp;face=0_0_867_551&quot;&gt;&lt;a href=&quot;https://devuna.tistory.com/76&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://devuna.tistory.com/76&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/A0lJg/hyOEaFUkXi/CkLsk6RXbAbFLvObMfdPCK/img.png?width=203&amp;amp;height=211&amp;amp;face=0_0_203_211,https://scrap.kakaocdn.net/dn/bkY3zk/hyOEppwoZm/sbYyP6eh94ou3dinQOlGL0/img.png?width=203&amp;amp;height=211&amp;amp;face=0_0_203_211,https://scrap.kakaocdn.net/dn/6yTO1/hyOEdJmuVr/oNWO7I4xeYmUk18rpbqRMk/img.png?width=867&amp;amp;height=551&amp;amp;face=0_0_867_551');&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;[IDE] 이클립스 인텔리제이 장단점 비교(eclipse/IntelliJ)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[IDE]&amp;nbsp;이클립스&amp;nbsp;인텔리제이&amp;nbsp;장단점&amp;nbsp;비교(eclipse/intelliJ) 1. 이클립스(eclipse) 역사가 오래되어 잘 작성된 문서, 수 많은 플러그인들이 존재하며 가장 대중적으로 사용되고 있는 IDE이다. 가장 큰 강&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;devuna.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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://velog.io/@composite/Eclipse-VS-Intellij-IDEA-%EB%85%BC%EB%9E%80-%EC%A2%85%EA%B2%B0&quot;&gt;https://velog.io/@composite/Eclipse-VS-Intellij-IDEA-%EB%85%BC%EB%9E%80-%EC%A2%85%EA%B2%B0&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1654237088463&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;Eclipse VS Intellij IDEA 논란 종결&quot; data-og-description=&quot;반박시 국비.&quot; data-og-host=&quot;velog.io&quot; data-og-source-url=&quot;https://velog.io/@composite/Eclipse-VS-Intellij-IDEA-%EB%85%BC%EB%9E%80-%EC%A2%85%EA%B2%B0&quot; data-og-url=&quot;https://velog.io/@composite/Eclipse-VS-Intellij-IDEA-논란-종결&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dvk2Lh/hyOCHdcncB/BJIDl8JuKxAxdfvJP0GGP0/img.png?width=471&amp;amp;height=251&amp;amp;face=0_0_471_251,https://scrap.kakaocdn.net/dn/bDJ65a/hyOCEneQXc/HZdj4O8OhgUGUuTxXudU10/img.png?width=471&amp;amp;height=251&amp;amp;face=0_0_471_251,https://scrap.kakaocdn.net/dn/blBKhe/hyOCJ287m1/ZogogL1VxC8iS0Ayat0BX0/img.png?width=460&amp;amp;height=460&amp;amp;face=0_0_460_460&quot;&gt;&lt;a href=&quot;https://velog.io/@composite/Eclipse-VS-Intellij-IDEA-%EB%85%BC%EB%9E%80-%EC%A2%85%EA%B2%B0&quot; data-source-url=&quot;https://velog.io/@composite/Eclipse-VS-Intellij-IDEA-%EB%85%BC%EB%9E%80-%EC%A2%85%EA%B2%B0&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dvk2Lh/hyOCHdcncB/BJIDl8JuKxAxdfvJP0GGP0/img.png?width=471&amp;amp;height=251&amp;amp;face=0_0_471_251,https://scrap.kakaocdn.net/dn/bDJ65a/hyOCEneQXc/HZdj4O8OhgUGUuTxXudU10/img.png?width=471&amp;amp;height=251&amp;amp;face=0_0_471_251,https://scrap.kakaocdn.net/dn/blBKhe/hyOCJ287m1/ZogogL1VxC8iS0Ayat0BX0/img.png?width=460&amp;amp;height=460&amp;amp;face=0_0_460_460');&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;Eclipse VS Intellij IDEA 논란 종결&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;반박시 국비.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;velog.io&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt;&lt;span&gt; Eclipse 설치하기 (윈도우 기준)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h3&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;1) 먼저 아래의 링크에 들어가줍니다.&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;&lt;a href=&quot;https://www.eclipse.org/downloads/&quot;&gt;https://www.eclipse.org/downloads/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1654237088464&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;Eclipse Downloads | The Eclipse Foundation&quot; data-og-description=&quot;The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 415 open source projects, including runtimes, tools and frameworks.&quot; data-og-host=&quot;www.eclipse.org&quot; data-og-source-url=&quot;https://www.eclipse.org/downloads/&quot; data-og-url=&quot;https://www.eclipse.org/downloads/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/t7raS/hyOEbKvjUU/Pb0slQxwQVfcKHd9ri8aPK/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/b4feo4/hyOCPCkrgX/rhHmYaWGm9bo77dtV82TT1/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400&quot;&gt;&lt;a href=&quot;https://www.eclipse.org/downloads/&quot; data-source-url=&quot;https://www.eclipse.org/downloads/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/t7raS/hyOEbKvjUU/Pb0slQxwQVfcKHd9ri8aPK/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/b4feo4/hyOCPCkrgX/rhHmYaWGm9bo77dtV82TT1/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400');&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;Eclipse Downloads | The Eclipse Foundation&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 415 open source projects, including runtimes, tools and frameworks.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.eclipse.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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2) 아래의 주황색 다운로드 버튼을 눌러줍니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;488&quot; data-origin-height=&quot;413&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQuioY/btrDPZQKtN6/r7G06FecgbNUKKkKNpOdd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQuioY/btrDPZQKtN6/r7G06FecgbNUKKkKNpOdd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQuioY/btrDPZQKtN6/r7G06FecgbNUKKkKNpOdd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQuioY%2FbtrDPZQKtN6%2Fr7G06FecgbNUKKkKNpOdd1%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;488&quot; height=&quot;413&quot; data-origin-width=&quot;488&quot; data-origin-height=&quot;413&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;3) 무슨 의도인지 모르겠지만 한번더 다운로드 버튼이 있는 화면이 나옵니다. &lt;/b&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;877&quot; data-origin-height=&quot;407&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TLil1/btrDQzqIFa7/DtyPuSjDVnNAS82NyviXS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TLil1/btrDQzqIFa7/DtyPuSjDVnNAS82NyviXS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TLil1/btrDQzqIFa7/DtyPuSjDVnNAS82NyviXS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTLil1%2FbtrDQzqIFa7%2FDtyPuSjDVnNAS82NyviXS1%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;877&quot; height=&quot;407&quot; data-origin-width=&quot;877&quot; data-origin-height=&quot;407&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;4) 좌측 하단에 다운로드 완료된 설치파일을 클릭해줍니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;243&quot; data-origin-height=&quot;59&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JmvjS/btrDPZDcdEw/w9nNOx3d8q7myEISVcDnSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JmvjS/btrDPZDcdEw/w9nNOx3d8q7myEISVcDnSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JmvjS/btrDPZDcdEw/w9nNOx3d8q7myEISVcDnSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJmvjS%2FbtrDPZDcdEw%2Fw9nNOx3d8q7myEISVcDnSK%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;243&quot; height=&quot;59&quot; data-origin-width=&quot;243&quot; data-origin-height=&quot;59&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;5) 아래와 같은 창이 뜨면, 가장 상단의 &quot;Eclipse IDE for Java Developers&quot;를 클릭해줍니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;743&quot; data-origin-height=&quot;762&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQuhMS/btrDZv8un8b/kg5jNNIpnEkXjEsI3ZaSLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQuhMS/btrDZv8un8b/kg5jNNIpnEkXjEsI3ZaSLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQuhMS/btrDZv8un8b/kg5jNNIpnEkXjEsI3ZaSLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQuhMS%2FbtrDZv8un8b%2Fkg5jNNIpnEkXjEsI3ZaSLK%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;640&quot; height=&quot;656&quot; data-origin-width=&quot;743&quot; data-origin-height=&quot;762&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;6) 설치 경로를 정해주는 차례인데, 아무것도 건드리지 않고 &quot;INSTALL&quot; 버튼을 클릭해주세요.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;759&quot; data-origin-height=&quot;779&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SjMgZ/btrDV1uu33P/Nm1c2MNnDdnEdzy7lBaVy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SjMgZ/btrDV1uu33P/Nm1c2MNnDdnEdzy7lBaVy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SjMgZ/btrDV1uu33P/Nm1c2MNnDdnEdzy7lBaVy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSjMgZ%2FbtrDV1uu33P%2FNm1c2MNnDdnEdzy7lBaVy0%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;640&quot; height=&quot;657&quot; data-origin-width=&quot;759&quot; data-origin-height=&quot;779&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;7) 라이선스 관련 동의하는 부분입니다. &quot;Accept Now&quot;를 눌러주세요.&lt;/b&gt;&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;770&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cC0cyA/btrDYe7fcoI/k7n1krme4weOqdKKuBLwaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cC0cyA/btrDYe7fcoI/k7n1krme4weOqdKKuBLwaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cC0cyA/btrDYe7fcoI/k7n1krme4weOqdKKuBLwaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcC0cyA%2FbtrDYe7fcoI%2Fk7n1krme4weOqdKKuBLwaK%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;640&quot; height=&quot;770&quot; data-origin-width=&quot;760&quot; data-origin-height=&quot;770&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;8) 설치가 시작됩니다. 잠시 기다려주세요.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;629&quot; data-origin-height=&quot;646&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uoMF9/btrDRhw6FeT/1K67iQbGmwALW4kScvv6Bk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uoMF9/btrDRhw6FeT/1K67iQbGmwALW4kScvv6Bk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uoMF9/btrDRhw6FeT/1K67iQbGmwALW4kScvv6Bk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuoMF9%2FbtrDRhw6FeT%2F1K67iQbGmwALW4kScvv6Bk%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;640&quot; height=&quot;657&quot; data-origin-width=&quot;629&quot; data-origin-height=&quot;646&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;9) 설치가 완료되면, &quot;LAUNCH&quot; 버튼을 클릭해서 Eclipse를 실행시켜주세요.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;768&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EtZT2/btrD1homCJM/EnuJKqA1T45Xeyjqycy7d1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EtZT2/btrD1homCJM/EnuJKqA1T45Xeyjqycy7d1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EtZT2/btrD1homCJM/EnuJKqA1T45Xeyjqycy7d1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEtZT2%2FbtrD1homCJM%2FEnuJKqA1T45Xeyjqycy7d1%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;640&quot; height=&quot;768&quot; data-origin-width=&quot;750&quot; data-origin-height=&quot;768&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;10) 기본 작업경로를 설정하는 부분인데, 기본으로 입력되어 있는 경로 그대로 &quot;Launch&quot; 버튼을 클릭해주세요. (나중에 변경할 수도 있는 것으로 보입니다.)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;274&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9IUQn/btrDUuaUqmJ/1q3mDplwhWgh8P489FopG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9IUQn/btrDUuaUqmJ/1q3mDplwhWgh8P489FopG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9IUQn/btrDUuaUqmJ/1q3mDplwhWgh8P489FopG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9IUQn%2FbtrDUuaUqmJ%2F1q3mDplwhWgh8P489FopG1%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;615&quot; height=&quot;274&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;274&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;11) 아래와 같은 창이 잠시 떴다가 &quot;eclipse-workspace - Eclipse IDE&quot; 창이 뜨면 제대로 설치가 완료된 것입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;302&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VEg4g/btrDUDlaIxS/GzE19OC9LuiyqaiS4sgSEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VEg4g/btrDUDlaIxS/GzE19OC9LuiyqaiS4sgSEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VEg4g/btrDUDlaIxS/GzE19OC9LuiyqaiS4sgSEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVEg4g%2FbtrDUDlaIxS%2FGzE19OC9LuiyqaiS4sgSEk%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;452&quot; height=&quot;302&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;302&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;1010&quot; data-origin-height=&quot;761&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pGNQi/btrDUq7qH2Y/7U5ICNFwch90WPf6BBwIy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pGNQi/btrDUq7qH2Y/7U5ICNFwch90WPf6BBwIy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pGNQi/btrDUq7qH2Y/7U5ICNFwch90WPf6BBwIy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpGNQi%2FbtrDUq7qH2Y%2F7U5ICNFwch90WPf6BBwIy0%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;1010&quot; height=&quot;761&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;761&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;오늘은 자바용 IDE는 무엇이 있는지 알아보고, 그 중에서 Eclipse를 선택해서 설치까지 해보았습니다.&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;다음 시간에는 프로그래밍 언어를 배울 때 가장 기본중의 기본인 &quot;Hello World&quot;를 출력해보면서 자바의 실행 메커니즘에 대해서 공부해보겠습니다.&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;&amp;nbsp;&lt;/p&gt;</description>
      <category>자바(Java)</category>
      <category>eclipse ide</category>
      <category>eclipse intellij</category>
      <category>eclipse 다운로드</category>
      <category>eclipse 설치</category>
      <category>자바 ide</category>
      <category>자바 ide 순위</category>
      <category>자바 ide 종류</category>
      <category>자바 개발환경 구축</category>
      <category>자바 기초</category>
      <category>자바 독학</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/212</guid>
      <comments>https://coding-kindergarten.tistory.com/212#entry212comment</comments>
      <pubDate>Sat, 4 Jun 2022 22:58:53 +0900</pubDate>
    </item>
    <item>
      <title>[자바 독학] 1강.자바의 특징과 JDK 설치</title>
      <link>https://coding-kindergarten.tistory.com/211</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333;&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;span style=&quot;color: #333333;&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;span style=&quot;color: #333333;&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;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목을 입력해주세요_-001.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/do3gkM/btrDTi9WlEu/Xkt0jWJklaqOvmDky0yFk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/do3gkM/btrDTi9WlEu/Xkt0jWJklaqOvmDky0yFk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/do3gkM/btrDTi9WlEu/Xkt0jWJklaqOvmDky0yFk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdo3gkM%2FbtrDTi9WlEu%2FXkt0jWJklaqOvmDky0yFk0%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;640&quot; height=&quot;640&quot; data-filename=&quot;제목을 입력해주세요_-001.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt; 자바란?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;자바(Java)는 C언어에 객체 지향적 기능을 추가하여 만든 C++과는 달리, 처음부터 객체 지향 언어로 개발된 프로그래밍 언어입니다. 비슷한 언어로는 MS에서 개발한 C#이 있다고 합니다. 여담이지만 C++에서 ++을 두개 더 붙여서 #이 되었다고 하네요.&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;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;자바의 가장 큰 특징은 자바 가상 머신(JVM, Java Virtual Machine)을 사용하여, 운영체제와는 독립적으로 동작할 수 있다는 것입니다. 즉, Windows, Linux, Mac 어느 운영체제에서도 동일한 코드로 실행이 가능하다는 것입니다.&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;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;바로 이러한 점 때문에 자바는 2022년 현재 가장 인기있는 언어 Top3에 랭크하고 있습니다.&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;1392&quot; data-origin-height=&quot;1156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baEkhm/btrDPZjeNj2/CG7fUZYMxbZ7WiNCkuaLM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baEkhm/btrDPZjeNj2/CG7fUZYMxbZ7WiNCkuaLM0/img.png&quot; data-alt=&quot;출처. TIOBE&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baEkhm/btrDPZjeNj2/CG7fUZYMxbZ7WiNCkuaLM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaEkhm%2FbtrDPZjeNj2%2FCG7fUZYMxbZ7WiNCkuaLM0%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;1392&quot; height=&quot;1156&quot; data-origin-width=&quot;1392&quot; data-origin-height=&quot;1156&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처. TIOBE&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;JDK 설치&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; color: #333333;&quot;&gt;JDK는&amp;nbsp;&lt;b&gt;Java Development Kit&lt;/b&gt;로 자바 소프트웨어 개발을 위한 여러 도구의 구성을 의미하며, 자바를 설치한다는 것은 JDK를 설치하는 것과 동일합니다.&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;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; color: #333333;&quot;&gt;자바는 2022년 기준 18버전까지 나와 있으며 저는 LTS(장기 지원) 릴리스인 17버전을 설치하였습니다.&lt;/span&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; color: #333333;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;u&gt;&lt;b&gt;설치방법&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;1) 구글에서 java download를 검색해서 가장 상단의 &quot;자바 다운로드 | 오라클&quot;을 클릭합니다.&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;359&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bE4ATC/btrDRMqruhK/cYSqI6k4ltKdEjTV73oVHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bE4ATC/btrDRMqruhK/cYSqI6k4ltKdEjTV73oVHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bE4ATC/btrDRMqruhK/cYSqI6k4ltKdEjTV73oVHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbE4ATC%2FbtrDRMqruhK%2FcYSqI6k4ltKdEjTV73oVHK%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;698&quot; height=&quot;359&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;359&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;2) 아래의 사진에 빨간색 사각형으로 표시한 부분을 순서대로 클릭하여, exe 파일을 다운로드 해줍니다. (&lt;span style=&quot;color: #ef5369;&quot;&gt;Windows 기준&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;869&quot; data-origin-height=&quot;751&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9x6j1/btrDRYKLbKZ/0WMjoLFUiTZLdXhkkEZjSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9x6j1/btrDRYKLbKZ/0WMjoLFUiTZLdXhkkEZjSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9x6j1/btrDRYKLbKZ/0WMjoLFUiTZLdXhkkEZjSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9x6j1%2FbtrDRYKLbKZ%2F0WMjoLFUiTZLdXhkkEZjSk%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;869&quot; height=&quot;751&quot; data-origin-width=&quot;869&quot; data-origin-height=&quot;751&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;3) 다운로드가 완료되면 클릭하여 설치파일을 실행합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;252&quot; data-origin-height=&quot;60&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MbWyu/btrDU4pkT61/FE28kmCsVB3s76HR1I00sK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MbWyu/btrDU4pkT61/FE28kmCsVB3s76HR1I00sK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MbWyu/btrDU4pkT61/FE28kmCsVB3s76HR1I00sK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMbWyu%2FbtrDU4pkT61%2FFE28kmCsVB3s76HR1I00sK%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;252&quot; height=&quot;60&quot; data-origin-width=&quot;252&quot; data-origin-height=&quot;60&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;4) 그림을 따라서 버튼들을 클릭해줍니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;381&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uuTV2/btrDTRxeE9e/5fR8FAbRbiKPgWo8E0y6w0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uuTV2/btrDTRxeE9e/5fR8FAbRbiKPgWo8E0y6w0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uuTV2/btrDTRxeE9e/5fR8FAbRbiKPgWo8E0y6w0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuuTV2%2FbtrDTRxeE9e%2F5fR8FAbRbiKPgWo8E0y6w0%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;500&quot; height=&quot;381&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;381&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;500&quot; data-origin-height=&quot;381&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kT4Qf/btrDUuoenow/nTXoQzkDKwFwSAwT0wJpv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kT4Qf/btrDUuoenow/nTXoQzkDKwFwSAwT0wJpv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kT4Qf/btrDUuoenow/nTXoQzkDKwFwSAwT0wJpv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkT4Qf%2FbtrDUuoenow%2FnTXoQzkDKwFwSAwT0wJpv1%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;500&quot; height=&quot;381&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;381&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;500&quot; data-origin-height=&quot;381&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sWwN3/btrDRhwVFGH/Vs3qkjskyvIwx78eA5IkZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sWwN3/btrDRhwVFGH/Vs3qkjskyvIwx78eA5IkZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sWwN3/btrDRhwVFGH/Vs3qkjskyvIwx78eA5IkZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsWwN3%2FbtrDRhwVFGH%2FVs3qkjskyvIwx78eA5IkZ0%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;500&quot; height=&quot;381&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;381&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;JDK 설치 여부 확인&lt;/b&gt;&lt;/span&gt;&lt;/h3&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;b&gt;1) 윈도우키와 R키를 함께 누르면 아래와 같은 실행 창이 뜹니다. 입력창에 cmd라고 입력하고 확인을 눌러줍니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;399&quot; data-origin-height=&quot;206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dcUROr/btrDQy6hrTa/f2NqA1xldSIWS4R6VFB5Vk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dcUROr/btrDQy6hrTa/f2NqA1xldSIWS4R6VFB5Vk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dcUROr/btrDQy6hrTa/f2NqA1xldSIWS4R6VFB5Vk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdcUROr%2FbtrDQy6hrTa%2Ff2NqA1xldSIWS4R6VFB5Vk%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;399&quot; height=&quot;206&quot; data-origin-width=&quot;399&quot; data-origin-height=&quot;206&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;2) java -version을 입력고 엔터를 누르면 아래와 같이 java의 버전 정보가 출력됩니다.&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;271&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhySVI/btrDUO1oIQi/XRpBLBCL4ZfzM0TPVcNSAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhySVI/btrDUO1oIQi/XRpBLBCL4ZfzM0TPVcNSAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhySVI/btrDUO1oIQi/XRpBLBCL4ZfzM0TPVcNSAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhySVI%2FbtrDUO1oIQi%2FXRpBLBCL4ZfzM0TPVcNSAK%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;271&quot; data-origin-width=&quot;881&quot; data-origin-height=&quot;271&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;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;b&gt;&amp;lt;참고 자료&amp;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;1. 네이버 부스트코스 강의_쉽게 배우는 자바1&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;2. 자바의 정석_3rd Edition&lt;/p&gt;</description>
      <category>자바(Java)</category>
      <category>java 17</category>
      <category>java 설치</category>
      <category>jdk</category>
      <category>자바 기초</category>
      <category>자바 다운로드</category>
      <category>자바 독학</category>
      <category>자바 버전 확인</category>
      <category>자바 설치</category>
      <category>자바 순위</category>
      <category>프로그래밍 언어 순위</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/211</guid>
      <comments>https://coding-kindergarten.tistory.com/211#entry211comment</comments>
      <pubDate>Fri, 3 Jun 2022 15:31:25 +0900</pubDate>
    </item>
    <item>
      <title>[python/imaplib] 파이썬으로 구글 Gmail 읽기</title>
      <link>https://coding-kindergarten.tistory.com/210</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&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;size18&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffc1c8; color: #ef5369;&quot;&gt;&lt;a style=&quot;background-color: #ffc1c8;&quot; href=&quot;https://coding-kindergarten.tistory.com/203&quot;&gt;2022.03.11 - [파이썬 패키지/라이브러리&amp;amp;패키지 소개] - 파이썬 주요 라이브러리 정리&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vhuWo/btrDFKzrRhr/wUXS3zpLxk3i576DNjxUFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vhuWo/btrDFKzrRhr/wUXS3zpLxk3i576DNjxUFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vhuWo/btrDFKzrRhr/wUXS3zpLxk3i576DNjxUFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvhuWo%2FbtrDFKzrRhr%2FwUXS3zpLxk3i576DNjxUFk%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;지난 시간에 파이썬 코드를 이용해서 Gmail에 메일을 보내는 방법에 대해서 공부해 보았다면, 이번 시간에는 받은 메일을 읽는 방법을 공부해보겠습니다.&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;이번 시간 역시 Gmail을 파이썬으로 사용하기 위해서는 '앱 비밀번호'가 필요합니다.&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;만약 구글에서 '2단계 인증'과 '앱 비밀번호' 설정을 함께 진행하지 않으셨다면 지난 글을 보시고 설정을 마치신 후에 이번 강의를 따라와 주세요!&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;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://coding-kindergarten.tistory.com/204&quot;&gt;2022.03.17 - [파이썬 패키지/이메일] - [python/smtplib] 파이썬으로 구글 Gmail 보내기 1편. SMTP의 개념과 구글 앱 비밀번호 발급받기&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/u&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt; imap&lt;/span&gt;lib 모듈 불러오기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 먼저 해줄 일은 imaplib 모듈을 import 해주는 것입니다. imaplib 역시 smtplib 모듈과 같이 파이썬 내장 라이브러리에 포함된 모듈로 별도의 설치가 필요 없답니다.&lt;/p&gt;
&lt;pre id=&quot;code_1654090005417&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import imaplib&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt; ima&lt;/span&gt;p 객체 생성&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로는 Gmail 메일의 imap 서버의 url 정보를 입력하고 server라는 이름의 변수에 담아줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1654090012828&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;imap = imaplib.IMAP4_SSL('imap.gmail.com')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;imap 서버에 로그인&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 메일 정보를 입력해줍시다. 여기서 지난 시간에 발급받은 &quot;앱 비밀번호&quot;가 필요해요. 만약 &lt;b&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;error:&lt;/span&gt; b'[ALERT]&amp;nbsp;Application-specific&amp;nbsp;password&amp;nbsp;required&amp;nbsp;&lt;/b&gt;라는 오류가 출력된다면 그건 평소 사용하시던 비밀번호를 입력하셨기 때문일거예요.&lt;/p&gt;
&lt;pre id=&quot;code_1654090183766&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# imap.login('메일 주소', '비밀번호')
imap.login('xxxxx@gmail.com', '지난 시간 받았던 16자리 앱 비밀번호')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;4.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;사서함 선택&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체편지함을 선택하기 위해서는 아래의 코드가 필요합니다. 사서함을 선택하는 코드라고 하는데, 만약 사서함을 여러개로 분류해서 사용한다면 해당 사서함의 이름을 'INBOX' 대신 입력하면 되지 않을까 생각됩니다. (실제로 해보진 않았답니다!)&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1654090433770&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 사서함 선택, 반환 데이터는 mailbox에 있는 메시지 수
imap.select(&quot;INBOX&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-06-01 오후 11.22.18.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;1252&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9y038/btrDE8HpnKa/4HZlhSjibmpHeHUM8d3W80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9y038/btrDE8HpnKa/4HZlhSjibmpHeHUM8d3W80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9y038/btrDE8HpnKa/4HZlhSjibmpHeHUM8d3W80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9y038%2FbtrDE8HpnKa%2F4HZlhSjibmpHeHUM8d3W80%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;300&quot; height=&quot;1252&quot; data-filename=&quot;스크린샷 2022-06-01 오후 11.22.18.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;1252&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;5.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;이메일&lt;/span&gt;&amp;nbsp;선택&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사서함에서 가장 최신에 받은 메일을 참조하기 위해서는 아래와 같은 코드를 실행해줍니다. 이때 uid라는 함수를 사용해서 각 메일에 고유의 번호를 부여해서 인덱싱 할 수 있습니다. 세부적으로 코드가 어떻게 작동하는지 알고 싶으신 분들은 코드를 한줄 한줄 실행하면서 print( ) 함수로 출력해 보시는 걸 추천드립니다.&lt;/p&gt;
&lt;pre id=&quot;code_1654091778667&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 사서함의 모든 메일의 uid 정보 가져오기
# 만약 특정 발신 메일만 선택하고 싶다면 'ALL' 대신에 '(FROM &quot;xxxxx@naver.com&quot;)' 입력
status, messages = imap.uid('search', None, 'ALL')

messages = messages[0].split()

# 0이 가장 마지막 메일, -1이 가장 최신 메일
recent_email = messages[-1]&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;저는 저의 네이버 메일을 이용해서 아래와 같이 '코딩유치원 화이팅!'이라는 제목으로 메일을 보냈고, 이 메일이 최신 메일인 상태입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-06-01 오후 11.12.24.png&quot; data-origin-width=&quot;1348&quot; data-origin-height=&quot;724&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9wdoJ/btrDFKlWwP1/hJkhzKfxM3pCIcqs04cV10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9wdoJ/btrDFKlWwP1/hJkhzKfxM3pCIcqs04cV10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9wdoJ/btrDFKlWwP1/hJkhzKfxM3pCIcqs04cV10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9wdoJ%2FbtrDFKlWwP1%2FhJkhzKfxM3pCIcqs04cV10%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;1348&quot; height=&quot;724&quot; data-filename=&quot;스크린샷 2022-06-01 오후 11.12.24.png&quot; data-origin-width=&quot;1348&quot; data-origin-height=&quot;724&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;6.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt; &lt;/span&gt;선택한 메일의 내용 가져오기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;선택한 메일(여기서는 가장 최신의 메일)의 내용을 사람이 읽을 수 있는 형태로 바꾸어 줍니다. decode하기 전의 내용이 궁금하시다면 raw를 print( ) 함수로 출력해보세요.&lt;/p&gt;
&lt;pre id=&quot;code_1654092287579&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# fetch 명령어로 메일 가져오기
res, msg = imap.uid('fetch', recent_email, &quot;(RFC822)&quot;)

# 사람이 읽을 수 있는 없는 상태의 이메일
raw = msg[0][1]

# 사람이 읽을 수 있는 형태로 변환
raw_readable = msg[0][1].decode('utf-8')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;7.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;선택한 메일의 내용 파싱하기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파싱이란 복잡하게 흩어진 정보에서 원하는 정보만 추출하는 것을 말합니다. 이때는 지난 시간에 메일을 보낼 때 사용했던 email 모듈을 여기서도 사용합니다. 메일 내용을 확인 하는 부분이 조금 복잡한데 이에 대한 내용은 여기서는 자세히 다루지 않겠습니다.&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;점프 투 파이썬 - 라이브러리 예제 편 (POP3)&lt;/b&gt; 링크를 참조하시면 설명이 잘 되어 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1654092523839&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import email

# raw_readable에서 원하는 부분만 파싱하기 위해 email 모듈을 이용해 변환
email_message = email.message_from_string(raw_readable)

from email.header import decode_header, make_header

# 보낸사람
fr = make_header(decode_header(email_message.get('From')))
print(fr)

# 메일 제목
subject = make_header(decode_header(email_message.get('Subject')))
print(subject)

# 메일 내용
if email_message.is_multipart():
    for part in email_message.walk():
        ctype = part.get_content_type()
        cdispo = str(part.get('Content-Disposition'))
        if ctype == 'text/plain' and 'attachment' not in cdispo:
            body = part.get_payload(decode=True)  # decode
            break
else:
    body = email_message.get_payload(decode=True)
    
body = body.decode('utf-8')
print(body)&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;&lt;b&gt;&amp;lt;최종 실행 결과&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-06-01 오후 11.11.14.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JWIL3/btrDE8m2LnI/k0VXfAEWLkgKPBYIccje2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JWIL3/btrDE8m2LnI/k0VXfAEWLkgKPBYIccje2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JWIL3/btrDE8m2LnI/k0VXfAEWLkgKPBYIccje2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJWIL3%2FbtrDE8m2LnI%2Fk0VXfAEWLkgKPBYIccje2k%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;400&quot; height=&quot;331&quot; data-filename=&quot;스크린샷 2022-06-01 오후 11.11.14.png&quot; data-origin-width=&quot;604&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;실제 메일&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-06-01 오후 11.15.23.png&quot; data-origin-width=&quot;1082&quot; data-origin-height=&quot;928&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSbIAT/btrDGL45v2X/OkojBQivAn49eQ8pkD7YV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSbIAT/btrDGL45v2X/OkojBQivAn49eQ8pkD7YV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSbIAT/btrDGL45v2X/OkojBQivAn49eQ8pkD7YV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSbIAT%2FbtrDGL45v2X%2FOkojBQivAn49eQ8pkD7YV1%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;640&quot; height=&quot;928&quot; data-filename=&quot;스크린샷 2022-06-01 오후 11.15.23.png&quot; data-origin-width=&quot;1082&quot; data-origin-height=&quot;928&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 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;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;b&gt;&amp;lt;참고 자료&amp;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;&lt;b&gt;1. imaplib 공식 문서&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://docs.python.org/ko/3/library/imaplib.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.python.org/ko/3/library/imaplib.html&lt;/a&gt;&lt;/span&gt;&lt;/u&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;2. 점프 투 파이썬 - 라이브러리 예제 편 (imaplib)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://wikidocs.net/130371&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://wikidocs.net/130371&lt;/a&gt;&lt;/span&gt;&lt;/u&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;3. 점프 투 파이썬 - 라이브러리 예제 편 (pop3)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://wikidocs.net/130215&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://wikidocs.net/130215&lt;/a&gt;&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>파이썬 패키지/이메일</category>
      <category>email</category>
      <category>imaplib</category>
      <category>python email 모듈</category>
      <category>구글 메일 자동화</category>
      <category>이메일 자동화</category>
      <category>파이썬 메일 수신</category>
      <category>파이썬 메일 읽기</category>
      <category>파이썬 메일 자동화</category>
      <category>파이썬 업무 자동화</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/210</guid>
      <comments>https://coding-kindergarten.tistory.com/210#entry210comment</comments>
      <pubDate>Wed, 1 Jun 2022 23:39:44 +0900</pubDate>
    </item>
    <item>
      <title>[python/docx2pdf] 워드 문서를 PDF로 변환하기</title>
      <link>https://coding-kindergarten.tistory.com/208</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 data-ke-size=&quot;size16&quot;&gt;코딩유치원에서는&amp;nbsp;&lt;b&gt;파이썬 기초&lt;/b&gt;부터&amp;nbsp;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&amp;nbsp;등의&amp;nbsp;&lt;b&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;업무는 물론 투자에도 도움이 될만한&amp;nbsp;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;나&amp;nbsp;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&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;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRqUCR/btrBUTwm8bD/klnAYICW2bRa5paMcIpPp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRqUCR/btrBUTwm8bD/klnAYICW2bRa5paMcIpPp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRqUCR/btrBUTwm8bD/klnAYICW2bRa5paMcIpPp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRqUCR%2FbtrBUTwm8bD%2FklnAYICW2bRa5paMcIpPp1%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;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;&quot;&gt;이번 시간에는 아주 간단히 MS 워드 문서(.docx)를 PDF로 변환할 수 있게 해주는 패키지에 대해 공부해보겠습니다.&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;span style=&quot;color: #333333;&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;span style=&quot;color: #000000;&quot;&gt;편하신 방법으로 따라와 주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt; docx2pdf 설치&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 이름에서 그 목적이 확실히 느껴지는 docx2pdf 패키지를 설치해줍니다.&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;
&lt;pre id=&quot;code_1652276401720&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install docx2pdf&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&lt;span&gt; MS Word 문서를 PDF로 변환하기&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&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&gt;&lt;span&gt;docx2pdf는 그 사용법이 매우 간단하고 기능이 한정적이라서 아래의 코드면 더 배울게 없습니다.&lt;/span&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;span&gt;&lt;span&gt;너무 간단해서 주석도 따로 달지 않았습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1652276772940&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from docx2pdf import convert

inputFile = &quot;변환시킬 워드 문서.docx&quot;
outputFile = &quot;PDF로 변환된 워드 문서.pdf&quot;

convert(inputFile, outputFile)&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;&lt;b&gt;&amp;lt;실행이 완료 된 코드&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-05-11 오후 10.47.29.png&quot; data-origin-width=&quot;836&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/68Sxm/btrBTyGqyP4/nVFKXZkZ2kJuRE0TuRjPN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/68Sxm/btrBTyGqyP4/nVFKXZkZ2kJuRE0TuRjPN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/68Sxm/btrBTyGqyP4/nVFKXZkZ2kJuRE0TuRjPN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F68Sxm%2FbtrBTyGqyP4%2FnVFKXZkZ2kJuRE0TuRjPN0%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;400&quot; height=&quot;440&quot; data-filename=&quot;스크린샷 2022-05-11 오후 10.47.29.png&quot; data-origin-width=&quot;836&quot; data-origin-height=&quot;440&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;MS Word 문서를 PDF로 변환하기 (실습)&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&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&gt;&lt;span&gt;이대로 글을 끝내기엔 조금 짧은감이 있어서 실제로 워드 파일을 하나 만들어서 변환해보는 것을 보여드리겠습니다.&lt;/span&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;span&gt;&lt;span&gt;MS Word에서 새문서를 만들어서 아래와 같이 글을 입력하고 저장해줍니다.&lt;/span&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-filename=&quot;스크린샷 2022-05-11 오후 10.52.30.png&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;650&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuOYni/btrBUGKKTWE/Itt3GmYmojua85HOHo8GV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuOYni/btrBUGKKTWE/Itt3GmYmojua85HOHo8GV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuOYni/btrBUGKKTWE/Itt3GmYmojua85HOHo8GV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuOYni%2FbtrBUGKKTWE%2FItt3GmYmojua85HOHo8GV1%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;500&quot; height=&quot;650&quot; data-filename=&quot;스크린샷 2022-05-11 오후 10.52.30.png&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;650&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;자 이제 저장된 워드 파일(.docx)을 변환시켜 볼까요? 따로 코드는 넣지 않겠습니다.&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;코드를 실행시키니 아래와 같은 PDF문서가 생성되었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-05-11 오후 10.56.56.png&quot; data-origin-width=&quot;388&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8fEa7/btrBS1hMeoT/rEq6mz06NX4KplgKSBk9X1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8fEa7/btrBS1hMeoT/rEq6mz06NX4KplgKSBk9X1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8fEa7/btrBS1hMeoT/rEq6mz06NX4KplgKSBk9X1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8fEa7%2FbtrBS1hMeoT%2FrEq6mz06NX4KplgKSBk9X1%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;200&quot; height=&quot;73&quot; data-filename=&quot;스크린샷 2022-05-11 오후 10.56.56.png&quot; data-origin-width=&quot;388&quot; data-origin-height=&quot;142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-05-11 오후 10.57.11.png&quot; data-origin-width=&quot;766&quot; data-origin-height=&quot;446&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oGHuz/btrBTy7yzby/tMCkdXWHcx9fIONXx4wiT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oGHuz/btrBTy7yzby/tMCkdXWHcx9fIONXx4wiT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oGHuz/btrBTy7yzby/tMCkdXWHcx9fIONXx4wiT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoGHuz%2FbtrBTy7yzby%2FtMCkdXWHcx9fIONXx4wiT1%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;500&quot; height=&quot;291&quot; data-filename=&quot;스크린샷 2022-05-11 오후 10.57.11.png&quot; data-origin-width=&quot;766&quot; data-origin-height=&quot;446&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 data-ke-size=&quot;size16&quot;&gt;참고로 저는 맥북을 사용하는데 가장 처음 docx2pdf로 변환을 실행하니 아래와 같은 팝업창이 나와서 추가적인 설정을 해주었답니다.&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;b&gt;1) 아래와 같이 창이 뜨면 확인을 눌러줍니다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-05-11 오후 9.28.17.png&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;592&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HZld8/btrBSk3eXss/bTfF9XkYoPNOzS0VBYjkG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HZld8/btrBSk3eXss/bTfF9XkYoPNOzS0VBYjkG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HZld8/btrBSk3eXss/bTfF9XkYoPNOzS0VBYjkG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHZld8%2FbtrBSk3eXss%2FbTfF9XkYoPNOzS0VBYjkG0%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;300&quot; height=&quot;340&quot; data-filename=&quot;스크린샷 2022-05-11 오후 9.28.17.png&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;592&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;2) 확인을 눌러주었더니 추가 권한을 요구합니다. 선택을 눌러주세요.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-05-11 오후 9.28.35.png&quot; data-origin-width=&quot;916&quot; data-origin-height=&quot;586&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxgBEc/btrBS0J0ep0/3ltSP8pEsHnoIwkH468Mg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxgBEc/btrBS0J0ep0/3ltSP8pEsHnoIwkH468Mg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxgBEc/btrBS0J0ep0/3ltSP8pEsHnoIwkH468Mg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxgBEc%2FbtrBS0J0ep0%2F3ltSP8pEsHnoIwkH468Mg1%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;500&quot; height=&quot;320&quot; data-filename=&quot;스크린샷 2022-05-11 오후 9.28.35.png&quot; data-origin-width=&quot;916&quot; data-origin-height=&quot;586&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;3) 엑세스 허가를 눌러줍니다. &lt;/b&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-filename=&quot;스크린샷 2022-05-11 오후 9.29.00.png&quot; data-origin-width=&quot;1862&quot; data-origin-height=&quot;906&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEXVuY/btrBSasXDzk/Pt7Dy09RJn9Surr5HA6nnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEXVuY/btrBSasXDzk/Pt7Dy09RJn9Surr5HA6nnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEXVuY/btrBSasXDzk/Pt7Dy09RJn9Surr5HA6nnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEXVuY%2FbtrBSasXDzk%2FPt7Dy09RJn9Surr5HA6nnk%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;1862&quot; height=&quot;906&quot; data-filename=&quot;스크린샷 2022-05-11 오후 9.29.00.png&quot; data-origin-width=&quot;1862&quot; data-origin-height=&quot;906&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;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;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;b&gt;&amp;lt;참고 자료&amp;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;&lt;b&gt;1. Python에서 Docx를 PDF로 변환_DelftStack&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://www.delftstack.com/ko/howto/python/python-convert-docx-to-pdf/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.delftstack.com/ko/howto/python/python-convert-docx-to-pdf/&lt;/a&gt;&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;</description>
      <category>파이썬 패키지/Word</category>
      <category>docx2pdf</category>
      <category>docxtopdf</category>
      <category>Word pdf 변환</category>
      <category>Word to PDF</category>
      <category>word to pdf python</category>
      <category>워드 PDF</category>
      <category>워드 pdf 변환</category>
      <category>워드 pdf 저장</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/208</guid>
      <comments>https://coding-kindergarten.tistory.com/208#entry208comment</comments>
      <pubDate>Wed, 11 May 2022 23:12:58 +0900</pubDate>
    </item>
    <item>
      <title>데이터 분석 프로세스의 근본! 데이터 준비 과정 정리</title>
      <link>https://coding-kindergarten.tistory.com/207</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXllSL/btrAh8iTq0V/ijhJYjqloW70t35LZ9as9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXllSL/btrAh8iTq0V/ijhJYjqloW70t35LZ9as9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXllSL/btrAh8iTq0V/ijhJYjqloW70t35LZ9as9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXllSL%2FbtrAh8iTq0V%2FijhJYjqloW70t35LZ9as9K%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;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;혹시 'Garbage in, garbage out'라는 말을 들어보셨나요? &lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&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;span&gt;&lt;span&gt;직역하면&amp;nbsp;&lt;/span&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://coding-kindergarten.tistory.com/111&quot;&gt;2021.07.21 - [파이썬 패키지/데이터분석] - [코딩유치원] 비전공자도 쉽게 이해하는 데이터 분석 프로세스 (ft. 수집, EDA, 전처리, 모델링)&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/u&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;
&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt; 데이터 수집&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 첫 단계는 분석에 사용할 데이터를 분석 DB(데이터 베이스)로 가져 오는 것입니다.&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;회사 내부의 DB에 프로젝트에 사용할 데이터가 있다면 그곳에서 가져오고, 없다면 외부에서 데이터를 사거나 크롤링을 통해서 수집해야합니다.&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;이때 주의할 점은 메타 데이터를 함께 수집해야한다는 것입니다. 메타 데이터는 데이터에 대한 정보로, 데이터의 정의, 기본키(Primary Key), 생성 기준, 생성 시점, 연관된 데이터 정보 등이 있습니다. 이러한 메타 데이터는 추후 단계들에서 데이터를 다룰 때에 중요한 참고 자료가 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt; 데이터 품질 확인&lt;/b&gt;&lt;/h3&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;데이터의 품질은 크게 7가지 지표로 평가합니다.&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;740&quot; data-origin-height=&quot;703&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cj9iRl/btrAlgAvady/BP6lboKKPGBLqNdFrjZDok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cj9iRl/btrAlgAvady/BP6lboKKPGBLqNdFrjZDok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cj9iRl/btrAlgAvady/BP6lboKKPGBLqNdFrjZDok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcj9iRl%2FbtrAlgAvady%2FBP6lboKKPGBLqNdFrjZDok%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;640&quot; height=&quot;608&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;703&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt; 데이터 정제&lt;/b&gt;&lt;/h3&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;1단계에서 언급했던 메타 데이터를 참고해서 누락된 값(결측치)과 오류 값을 적절히 전처리 해줍니다.&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;4.&lt;/span&gt; 데이터 변환&lt;/b&gt;&lt;/h3&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;데이터 변환 방법에는 여러가지가 있지만, 가장 널리 사용하는 방법은 정규화(Normalization), 범주화(Categorisation)가 있습니다.&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;정규화는 예를 들어 신장과 몸무게의 스케일이 달라서 어느 한가지 변수가 해석 결과에 크게 영향을 끼치는 것을 방지하기 위해서 0~1 사이의 값으로 변환시키는 것을 말합니다.&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;범주화는 연속되는 값을 어느 구간으로 나누어서 분류하고 싶을 때 사용합니다. 예를 들어 평균 60점 이상은 1, 미만은 0으로 변환하는 것이죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;5.&lt;/span&gt; 데이터 특성 추출&lt;/b&gt;&lt;/h3&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;이 과정에서는 해당 분야에 대한 전문적 지식과 분석 경험이 필요합니다. 데이터 분석 대회 플랫폼으로 유명한 Kaggle의 순위를 가르는 요인 중에 '피처 엔지니어링'이 중요한 역할을 한다고 합니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;6.&lt;/span&gt; 데이터 준비&amp;nbsp; 과정 기록&lt;/b&gt;&lt;/h3&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~5단계에서 수행한 작업을 문서화 하는 단계입니다. 데이터 준비에 사용한 코드와 각각의 과정을 설명하고 기록하는 것입니다.&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;
&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;size16&quot;&gt;&amp;lt;참고 자료&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;1. 빅데이터 커리어 가이드북 (도서)&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;2. 데이터 품질 지표&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://charstring.tistory.com/144&quot;&gt;https://charstring.tistory.com/144&lt;/a&gt;&lt;/p&gt;</description>
      <category>파이썬 패키지/데이터분석</category>
      <category>garbage in garbage out</category>
      <category>데이터 범주화</category>
      <category>데이터 수집</category>
      <category>데이터 정규화</category>
      <category>데이터 준비</category>
      <category>데이터 품질</category>
      <category>양질의 데이터 수집</category>
      <category>피처 엔지니어링</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/207</guid>
      <comments>https://coding-kindergarten.tistory.com/207#entry207comment</comments>
      <pubDate>Mon, 25 Apr 2022 01:40:47 +0900</pubDate>
    </item>
    <item>
      <title>[removebg] 이미지 배경 제거 무료 사이트 (고해상도는 유료)</title>
      <link>https://coding-kindergarten.tistory.com/206</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 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;가끔 PPT 자료를 만들거나 영상 편집을 할 때면, 배경이 제거된 인물이나 사물의 이미지를 얻고 싶을 때가 있죠?&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;&lt;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://www.remove.bg/ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.remove.bg/ko&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1649313013720&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;이미지에서 배경 제거 &amp;ndash; remove.bg&quot; data-og-description=&quot;한 번의 클릭으로 5 초 안에 이미지 배경을 자동으로 제거합니다. 수동으로 픽셀을 선택하는 데 시간을 소비하지 마십시오. 지금 사진을 업로드하고 마법을 확인하세요.&quot; data-og-host=&quot;www.remove.bg&quot; data-og-source-url=&quot;https://www.remove.bg/ko&quot; data-og-url=&quot;https://www.remove.bg/ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/BjZV7/hyNXka88de/Lk94cZwLYKu0kgAthaaPS1/img.jpg?width=1200&amp;amp;height=800&amp;amp;face=0_0_1200_800,https://scrap.kakaocdn.net/dn/caxwNR/hyNXokiBfv/XYCYK8cl8kUUJyocRpDY20/img.jpg?width=1200&amp;amp;height=800&amp;amp;face=0_0_1200_800,https://scrap.kakaocdn.net/dn/dlGKrY/hyNXpDvAMB/y8uYTmVSFPwfPTOzY2M7pk/img.png?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400&quot;&gt;&lt;a href=&quot;https://www.remove.bg/ko&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.remove.bg/ko&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/BjZV7/hyNXka88de/Lk94cZwLYKu0kgAthaaPS1/img.jpg?width=1200&amp;amp;height=800&amp;amp;face=0_0_1200_800,https://scrap.kakaocdn.net/dn/caxwNR/hyNXokiBfv/XYCYK8cl8kUUJyocRpDY20/img.jpg?width=1200&amp;amp;height=800&amp;amp;face=0_0_1200_800,https://scrap.kakaocdn.net/dn/dlGKrY/hyNXpDvAMB/y8uYTmVSFPwfPTOzY2M7pk/img.png?width=600&amp;amp;height=400&amp;amp;face=0_0_600_400');&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;이미지에서 배경 제거 &amp;ndash; remove.bg&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;한 번의 클릭으로 5 초 안에 이미지 배경을 자동으로 제거합니다. 수동으로 픽셀을 선택하는 데 시간을 소비하지 마십시오. 지금 사진을 업로드하고 마법을 확인하세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.remove.bg&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;간략히 사용법을 설명드리면,&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;1) 이미지를 직접 드래그 해서 아래의 위치에 올려놓거나&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;2) 이미지를 단축키(Ctrl + C)로 복사한 후, 해당 페이지의 빈곳이나 창을 클릭하고 붙여넣기(Ctrl + V) 해주시면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-04-07 오후 3.32.31.png&quot; data-origin-width=&quot;2472&quot; data-origin-height=&quot;1388&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LqXOj/btryEyDD5Nl/emDHJ4ntvGNHXo4Fkqjf7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LqXOj/btryEyDD5Nl/emDHJ4ntvGNHXo4Fkqjf7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LqXOj/btryEyDD5Nl/emDHJ4ntvGNHXo4Fkqjf7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLqXOj%2FbtryEyDD5Nl%2FemDHJ4ntvGNHXo4Fkqjf7k%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;2472&quot; height=&quot;1388&quot; data-filename=&quot;스크린샷 2022-04-07 오후 3.32.31.png&quot; data-origin-width=&quot;2472&quot; data-origin-height=&quot;1388&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;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;스크린샷 2022-04-07 오후 3.40.59.png&quot; data-origin-width=&quot;1994&quot; data-origin-height=&quot;1358&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ybF2u/btryHFWFArk/aH4AUXuZHYIzdfKekcKsi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ybF2u/btryHFWFArk/aH4AUXuZHYIzdfKekcKsi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ybF2u/btryHFWFArk/aH4AUXuZHYIzdfKekcKsi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FybF2u%2FbtryHFWFArk%2FaH4AUXuZHYIzdfKekcKsi0%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;1994&quot; height=&quot;1358&quot; data-filename=&quot;스크린샷 2022-04-07 오후 3.40.59.png&quot; data-origin-width=&quot;1994&quot; data-origin-height=&quot;1358&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;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;b&gt;&amp;lt;해상도 기준&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-04-07 오후 3.48.23.png&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;210&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NXw7j/btryHGaeQXe/6tQmW5H9XRVvlKthUL7gW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NXw7j/btryHGaeQXe/6tQmW5H9XRVvlKthUL7gW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NXw7j/btryHGaeQXe/6tQmW5H9XRVvlKthUL7gW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNXw7j%2FbtryHGaeQXe%2F6tQmW5H9XRVvlKthUL7gW1%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;500&quot; height=&quot;210&quot; data-filename=&quot;스크린샷 2022-04-07 오후 3.48.23.png&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;210&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;&amp;lt;요금제 정책&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-04-07 오후 3.53.38.png&quot; data-origin-width=&quot;1608&quot; data-origin-height=&quot;1252&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dp98TX/btryEYCW7Fm/Kze6KpIcMwj1zfbHNVkAt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dp98TX/btryEYCW7Fm/Kze6KpIcMwj1zfbHNVkAt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dp98TX/btryEYCW7Fm/Kze6KpIcMwj1zfbHNVkAt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdp98TX%2FbtryEYCW7Fm%2FKze6KpIcMwj1zfbHNVkAt1%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;640&quot; height=&quot;1252&quot; data-filename=&quot;스크린샷 2022-04-07 오후 3.53.38.png&quot; data-origin-width=&quot;1608&quot; data-origin-height=&quot;1252&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;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;&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;</description>
      <category>유용한 팁</category>
      <category>무료 배경 제거</category>
      <category>무료 이미지 배경 제거 사이트</category>
      <category>배경 제거</category>
      <category>배경 제거 방법</category>
      <category>배경 제거 사이트</category>
      <category>사진 배경 제거</category>
      <category>이미지 배경 제거</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/206</guid>
      <comments>https://coding-kindergarten.tistory.com/206#entry206comment</comments>
      <pubDate>Thu, 7 Apr 2022 16:02:09 +0900</pubDate>
    </item>
    <item>
      <title>[python/smtplib] 파이썬으로 구글 Gmail 보내기 2편. smtplib와 email 모듈</title>
      <link>https://coding-kindergarten.tistory.com/205</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&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;size18&quot;&gt;&lt;span style=&quot;color: #ef5369; background-color: #ffc1c8;&quot;&gt;&lt;b&gt;&lt;a style=&quot;background-color: #ffc1c8;&quot; href=&quot;https://coding-kindergarten.tistory.com/203&quot;&gt;2022.03.11 - [파이썬 패키지/라이브러리&amp;amp;패키지 소개] - 파이썬 주요 라이브러리 정리&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&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-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MMvtT/btrwVdH8Yvd/pvwwzYu9z07UbQuOiKJrUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MMvtT/btrwVdH8Yvd/pvwwzYu9z07UbQuOiKJrUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MMvtT/btrwVdH8Yvd/pvwwzYu9z07UbQuOiKJrUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMMvtT%2FbtrwVdH8Yvd%2FpvwwzYu9z07UbQuOiKJrUK%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;오늘은 지난 시간에 이어서 파이썬 코드를 이용해서 Gmail에 메일을 보내는 방법에 대해서 공부해보겠습니다.&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;만약 구글에서 '2단계 인증'과 '앱 비밀번호' 설정을 함께 진행하지 않으셨다면 지난 글을 보시고 설정을 마치신 후에 이번 강의를 따라와 주세요!&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;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://coding-kindergarten.tistory.com/204&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.03.17 - [파이썬 패키지/이메일] - [python/smtplib] 파이썬으로 구글 Gmail 보내기 1편. SMTP의 개념과 구글 앱 비밀번호 발급받기&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt; &amp;nbsp;&lt;/span&gt;smtplib 모듈 불러오기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 먼저 해줄 일은 smtplib 모듈을 import 해주는 것입니다. 지난 시간에 말씀드렸 듯이 smtplib 모듈은 파이썬 내장 라이브러리에 포함된 모듈로 별도의 설치가 필요 없답니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1648038206097&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import smtplib&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;smtp 객체 생성&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로는 사용할 메일의 smtp 서버의 url과 포트(port) 정보를 입력하고 변수에 담아줍니다. 저는 gmail을 사용하기 위해서 위의 코드를 이용했습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1648038320207&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# smtplib.SMTP('사용할 SMTP 서버의 URL', PORT)
smtp = smtplib.SMTP('smtp.gmail.com', 587)

# TLS 암호화 (TLS 사용할 때에만 해당코드 입력)
smtp.starttls()&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;만약 네이버, 다음, 아웃룩 메일 등을 이용하시려면 아래의 smtp 정보를 참고하셔서 괄호 안의 정보만 바꿔주시면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1648039629326&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# SMTP 서버 정보

smtp_info = {
    'gmail.com': ('smtp.gmail.com', 587),
    'naver.com': ('smtp.naver.com', 587),
    'outlook.com': ('smtp-mail.outlook.com', 587),
    'hotmail.com': ('smtp-mail.outlook.com', 587),
    'yahoo.com': ('smtp.mail.yahoo.com', 587),
    }&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;&lt;span style=&quot;color: #333333;&quot;&gt;참고로 SMTP 서버의 암호화 방식에 따라 TLS&lt;span style=&quot;background-color: #ffffff;&quot;&gt;(Transport Layer Security)&lt;/span&gt; 혹은 SSL&lt;span style=&quot;background-color: #ffffff;&quot;&gt;(Secure Socket Layers)&lt;/span&gt;을 사용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TLS는 포트 587을, SSL은 465를 사용하는데 SSL 방식을 사용하기 위해서는 위와는 조금 다른 코드를 사용해야하니 주의해주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1648040148367&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;smtp = smtplib.SMTP_SSL('smtp.daum.net',465)&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1648039024436&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# SMTP 서버 정보

smtp_info = {
    'daum.net': ('smtp.daum.net', 465),
    'hanmail.net': ('smtp.daum.net', 465),
    'nate.com': ('smtp.mail.nate.com', 465),
    }&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;smtp에 메일주소와 비밀번호 입력&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 메일 정보를 입력해줍시다. 여기서 지난 시간에 발급받은 &quot;앱 비밀번호&quot;가 필요해요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1648040666076&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# smtp.login('메일 주소', '비밀번호')
smtp.login('xxxxx@gmail.com', '지난 시간 받았던 16자리 앱 비밀번호')&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;4.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt; email 모듈의 MIMEText 클래스로 메일 내용 입력&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;background-color: #ffffff;&quot;&gt;간단한 메일을 보내는 경우에는 email 모듈의 MIMEText 클래스를, 좀 더 복잡한 메일은 MIMEMultipart 클래스를 사용합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 시간에는 메일을 보내는 것이 목표이므로 MIMEText 클래스를 이용해서 메세지를 보내보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1648040846597&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# email 모듈의 MIMEText 클래스 import
from email.mime.text import MIMEText

# 메일 내용 입력
msg = MIMEText('본문')

# 메일 제목 입력
msg['Subject'] = '제목'&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;5.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;메일 보내기&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;pre id=&quot;code_1648041749328&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;smtp.sendmail('발신 할 메일 주소', '수신 받을 메일 주소', msg.as_string())&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;코드를 실행하였더니 아래와 같이 정상적으로 메일이 온 것을 확인할 수 있었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-23 오후 10.24.46.png&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfMz79/btrw2OVBu3j/9VoKqfBr5n8kYodNIAXNhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfMz79/btrw2OVBu3j/9VoKqfBr5n8kYodNIAXNhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfMz79/btrw2OVBu3j/9VoKqfBr5n8kYodNIAXNhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfMz79%2Fbtrw2OVBu3j%2F9VoKqfBr5n8kYodNIAXNhK%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;300&quot; height=&quot;215&quot; data-filename=&quot;스크린샷 2022-03-23 오후 10.24.46.png&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;454&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;6.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt; smtp 종료&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메일을 더 보낼 일이 없다면, 잘 사용했던 smtp 객체를 종료하여 SMTP 서버와의 연결을 끊어줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1648042127464&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;smtp.quit()&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;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;&amp;lt;참고 자료&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;1. SSL과 TLS의 차이&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://www.ktword.co.kr/test/view/view.php?m_temp1=1957&quot;&gt;http://www.ktword.co.kr/test/view/view.php?m_temp1=1957&lt;/a&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;2. 예제로 배우는 파이썬 프로그래밍_메일 보내기(SMTP)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://pythonstudy.xyz/python/article/508-%EB%A9%94%EC%9D%BC-%EB%B3%B4%EB%82%B4%EA%B8%B0-SMTP&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://pythonstudy.xyz/python/article/508-%EB%A9%94%EC%9D%BC-%EB%B3%B4%EB%82%B4%EA%B8%B0-SMTP&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>파이썬 패키지/이메일</category>
      <category>SMTP</category>
      <category>smtp 구글</category>
      <category>smtp 네이버</category>
      <category>smtp 메일 보내기</category>
      <category>smtp 서버</category>
      <category>smtp 포트</category>
      <category>메일 자동 발송</category>
      <category>파이썬 메일 보내기</category>
      <category>파이썬 메일 자동화</category>
      <category>파이썬 업무자동화</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/205</guid>
      <comments>https://coding-kindergarten.tistory.com/205#entry205comment</comments>
      <pubDate>Wed, 23 Mar 2022 22:36:33 +0900</pubDate>
    </item>
    <item>
      <title>[python/smtplib] 파이썬으로 구글 Gmail 보내기 1편. SMTP의 개념과 구글 앱 비밀번호 발급받기</title>
      <link>https://coding-kindergarten.tistory.com/204</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&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;size18&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #ef5369;&quot; href=&quot;https://coding-kindergarten.tistory.com/203&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2022.03.11 - [파이썬 패키지/라이브러리&amp;amp;패키지 소개] - 파이썬 주요 라이브러리 정리&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/K0H5Z/btrw2OVBTNl/zeWEFTu2NJKc2OFjXSB8m1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/K0H5Z/btrw2OVBTNl/zeWEFTu2NJKc2OFjXSB8m1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/K0H5Z/btrw2OVBTNl/zeWEFTu2NJKc2OFjXSB8m1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK0H5Z%2Fbtrw2OVBTNl%2FzeWEFTu2NJKc2OFjXSB8m1%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;오늘은 파이썬으로 구글의 Gmail을 사용하는 방법에 대해서 공부해보겠습니다.&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;구글의 보안이 철저해서 별도의 설정 없이는 오늘 배울 smtplib 모듈을 제대로 다룰 수 없으므로,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 SMTP의 개념을 알아본 후, 구글에서 '2단계 인증'과 '앱 비밀번호' 설정을 함께 진행해보겠습니다.&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt; SMTP의 개념과 smtplib 모듈 소개&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬에서 이메일을 보내기 위해서는 파이썬 내장 라이브러리(PIL)의 smtplib와 email 모듈을 사용합니다.&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-filename=&quot;스크린샷 2022-03-17 오후 10.56.45.png&quot; data-origin-width=&quot;746&quot; data-origin-height=&quot;162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdM3SK/btrwb5YOLXq/CGuzaXF9GKY82ToY5f8N80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdM3SK/btrwb5YOLXq/CGuzaXF9GKY82ToY5f8N80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdM3SK/btrwb5YOLXq/CGuzaXF9GKY82ToY5f8N80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdM3SK%2Fbtrwb5YOLXq%2FCGuzaXF9GKY82ToY5f8N80%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;300&quot; height=&quot;65&quot; data-filename=&quot;스크린샷 2022-03-17 오후 10.56.45.png&quot; data-origin-width=&quot;746&quot; data-origin-height=&quot;162&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;여기서 smtplib의 SMTP(Simple Mail Transfer Protocol)는 메일을 보내는데 사용되는 프로토콜입니다.&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;1200&quot; data-origin-height=&quot;628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yz2eB/btrwfdhvWfn/fHbMsZl25yc6ybtTELdaK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yz2eB/btrwfdhvWfn/fHbMsZl25yc6ybtTELdaK0/img.png&quot; data-alt=&quot;출처. 네이버 블로그_Life in Hong Kong&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yz2eB/btrwfdhvWfn/fHbMsZl25yc6ybtTELdaK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fyz2eB%2FbtrwfdhvWfn%2FfHbMsZl25yc6ybtTELdaK0%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;1200&quot; height=&quot;628&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;628&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처. 네이버 블로그_Life in Hong Kong&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;*프로토콜(Protocol)이란?&lt;br /&gt;정보기기 사이에서 통신을 통한 정보 교환이 필요한 경우 이러한 통신을 원활하게 하기 위해 사전에 정의한 여러 통신 규칙과 방법에 대한 약속인 통신 규약을 의미합니다.&amp;nbsp;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 SMTP 사용법만 익힌다면, 우리가 자주 사용하는 구글, 네이버, 다음, 아웃룩 등의 메일을 자동화 할 수 있답니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1647526332738&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# SMTP 서버 정보

smtp_info = {      
    'gmail.com': ('smtp.gmail.com', 587),
    'naver.com': ('smtp.naver.com', 587),
    'daum.net': ('smtp.daum.net', 465),
    'hanmail.net': ('smtp.daum.net', 465),
    'nate.com': ('smtp.mail.nate.com', 465),
    'outlook.com': ('smtp.outlook.com', 587),
    }&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;참고로 SMTP 서버의 암호화 방식에 따라 TLS 혹은 SSL을 사용하는데, TLS는 포트 587을, SSL은 465를 사용합니다.&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;SMTP에 대한 개념 설명은 여기까지 하고, 앞서 언급했던 Gmail 설정을 함께 진행해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt; Gmail 계정 설정&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연한 이야기겠지만 Gmail을 사용하기 위해서는 구글 계정이 있으셔야 합니다. 구글 계정을 로그인 한 후, 아래의 그림을 따라서 순서대로 클릭 및 입력을 해주세요.&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;스크린샷 2022-03-17 오후 9.02.01.png&quot; data-origin-width=&quot;1810&quot; data-origin-height=&quot;726&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/egRGFY/btrwgES4skg/onNKK2PtxS3w3CmIUraSh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/egRGFY/btrwgES4skg/onNKK2PtxS3w3CmIUraSh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/egRGFY/btrwgES4skg/onNKK2PtxS3w3CmIUraSh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FegRGFY%2FbtrwgES4skg%2FonNKK2PtxS3w3CmIUraSh1%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;1810&quot; height=&quot;726&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.02.01.png&quot; data-origin-width=&quot;1810&quot; data-origin-height=&quot;726&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.04.23.png&quot; data-origin-width=&quot;2052&quot; data-origin-height=&quot;814&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rnEmJ/btrwgEyKhZY/FNXhOFsynyGTzKGX9hJ1L0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rnEmJ/btrwgEyKhZY/FNXhOFsynyGTzKGX9hJ1L0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rnEmJ/btrwgEyKhZY/FNXhOFsynyGTzKGX9hJ1L0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrnEmJ%2FbtrwgEyKhZY%2FFNXhOFsynyGTzKGX9hJ1L0%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;2052&quot; height=&quot;814&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.04.23.png&quot; data-origin-width=&quot;2052&quot; data-origin-height=&quot;814&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.06.07.png&quot; data-origin-width=&quot;2028&quot; data-origin-height=&quot;1122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u2XWY/btrwfdn8dAg/HiY6bMVd06A6s7PztEXdWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u2XWY/btrwfdn8dAg/HiY6bMVd06A6s7PztEXdWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u2XWY/btrwfdn8dAg/HiY6bMVd06A6s7PztEXdWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu2XWY%2Fbtrwfdn8dAg%2FHiY6bMVd06A6s7PztEXdWK%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;2028&quot; height=&quot;1122&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.06.07.png&quot; data-origin-width=&quot;2028&quot; data-origin-height=&quot;1122&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.07.24.png&quot; data-origin-width=&quot;2034&quot; data-origin-height=&quot;1170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dBHGwb/btrwiwzWidJ/LoPqN01WgIeHKMkR6gKuOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dBHGwb/btrwiwzWidJ/LoPqN01WgIeHKMkR6gKuOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dBHGwb/btrwiwzWidJ/LoPqN01WgIeHKMkR6gKuOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdBHGwb%2FbtrwiwzWidJ%2FLoPqN01WgIeHKMkR6gKuOK%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;2034&quot; height=&quot;1170&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.07.24.png&quot; data-origin-width=&quot;2034&quot; data-origin-height=&quot;1170&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.08.50.png&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;1018&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caBboI/btrwb6pKnvC/l83vS0UOm6ezUvt6f8ifIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caBboI/btrwb6pKnvC/l83vS0UOm6ezUvt6f8ifIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caBboI/btrwb6pKnvC/l83vS0UOm6ezUvt6f8ifIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaBboI%2Fbtrwb6pKnvC%2Fl83vS0UOm6ezUvt6f8ifIK%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;400&quot; height=&quot;1018&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.08.50.png&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;1018&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.11.11.png&quot; data-origin-width=&quot;2102&quot; data-origin-height=&quot;1368&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dyOAqV/btrwglsJA8S/8uYYiTduLYB1nT7tRXIZF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dyOAqV/btrwglsJA8S/8uYYiTduLYB1nT7tRXIZF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dyOAqV/btrwglsJA8S/8uYYiTduLYB1nT7tRXIZF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdyOAqV%2FbtrwglsJA8S%2F8uYYiTduLYB1nT7tRXIZF0%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;2102&quot; height=&quot;1368&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.11.11.png&quot; data-origin-width=&quot;2102&quot; data-origin-height=&quot;1368&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.14.08.png&quot; data-origin-width=&quot;2102&quot; data-origin-height=&quot;1252&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CkJVl/btrwhbXo12P/mwV6KJaW6YRWvFs0KSdbX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CkJVl/btrwhbXo12P/mwV6KJaW6YRWvFs0KSdbX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CkJVl/btrwhbXo12P/mwV6KJaW6YRWvFs0KSdbX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCkJVl%2FbtrwhbXo12P%2FmwV6KJaW6YRWvFs0KSdbX0%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;2102&quot; height=&quot;1252&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.14.08.png&quot; data-origin-width=&quot;2102&quot; data-origin-height=&quot;1252&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.16.41.png&quot; data-origin-width=&quot;2090&quot; data-origin-height=&quot;1070&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dm7Q35/btrwhVthzwS/TJRXe9oEXIJK3hFV1fTZ91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dm7Q35/btrwhVthzwS/TJRXe9oEXIJK3hFV1fTZ91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dm7Q35/btrwhVthzwS/TJRXe9oEXIJK3hFV1fTZ91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdm7Q35%2FbtrwhVthzwS%2FTJRXe9oEXIJK3hFV1fTZ91%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;2090&quot; height=&quot;1070&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.16.41.png&quot; data-origin-width=&quot;2090&quot; data-origin-height=&quot;1070&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.22.04.png&quot; data-origin-width=&quot;2096&quot; data-origin-height=&quot;486&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjvEs0/btrwgqHfO3S/yKTfjcO108JNtvJ7KvT6VK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjvEs0/btrwgqHfO3S/yKTfjcO108JNtvJ7KvT6VK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjvEs0/btrwgqHfO3S/yKTfjcO108JNtvJ7KvT6VK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjvEs0%2FbtrwgqHfO3S%2FyKTfjcO108JNtvJ7KvT6VK%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;2096&quot; height=&quot;486&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.22.04.png&quot; data-origin-width=&quot;2096&quot; data-origin-height=&quot;486&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.20.25.png&quot; data-origin-width=&quot;2090&quot; data-origin-height=&quot;1312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rCVmR/btrwglfanSO/ZBinmFknCFYp5KB4wBuvEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rCVmR/btrwglfanSO/ZBinmFknCFYp5KB4wBuvEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rCVmR/btrwglfanSO/ZBinmFknCFYp5KB4wBuvEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrCVmR%2FbtrwglfanSO%2FZBinmFknCFYp5KB4wBuvEK%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;2090&quot; height=&quot;1312&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.20.25.png&quot; data-origin-width=&quot;2090&quot; data-origin-height=&quot;1312&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.08.50.png&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;1018&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BsSm8/btrwb4Sfd9a/rHXTQc4FKGGn3zkZhbgpH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BsSm8/btrwb4Sfd9a/rHXTQc4FKGGn3zkZhbgpH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BsSm8/btrwb4Sfd9a/rHXTQc4FKGGn3zkZhbgpH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBsSm8%2Fbtrwb4Sfd9a%2FrHXTQc4FKGGn3zkZhbgpH0%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;400&quot; height=&quot;443&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.08.50.png&quot; data-origin-width=&quot;920&quot; data-origin-height=&quot;1018&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.27.06.png&quot; data-origin-width=&quot;2096&quot; data-origin-height=&quot;1216&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w24xi/btrwhbXpP5U/sDKxl0KEZ0smk3stZKUg4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w24xi/btrwhbXpP5U/sDKxl0KEZ0smk3stZKUg4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w24xi/btrwhbXpP5U/sDKxl0KEZ0smk3stZKUg4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw24xi%2FbtrwhbXpP5U%2FsDKxl0KEZ0smk3stZKUg4K%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;2096&quot; height=&quot;1216&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.27.06.png&quot; data-origin-width=&quot;2096&quot; data-origin-height=&quot;1216&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.29.17.png&quot; data-origin-width=&quot;2088&quot; data-origin-height=&quot;876&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RldoX/btrwaoDFpHN/kKjPAJcFkduIzmthDolhck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RldoX/btrwaoDFpHN/kKjPAJcFkduIzmthDolhck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RldoX/btrwaoDFpHN/kKjPAJcFkduIzmthDolhck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRldoX%2FbtrwaoDFpHN%2FkKjPAJcFkduIzmthDolhck%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;2088&quot; height=&quot;876&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.29.17.png&quot; data-origin-width=&quot;2088&quot; data-origin-height=&quot;876&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.30.05.png&quot; data-origin-width=&quot;2094&quot; data-origin-height=&quot;1272&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NlyxC/btrv7QtVm4i/QMmZ2n4QE7y2liGvItaGVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NlyxC/btrv7QtVm4i/QMmZ2n4QE7y2liGvItaGVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NlyxC/btrv7QtVm4i/QMmZ2n4QE7y2liGvItaGVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNlyxC%2Fbtrv7QtVm4i%2FQMmZ2n4QE7y2liGvItaGVK%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;2094&quot; height=&quot;1272&quot; data-filename=&quot;스크린샷 2022-03-17 오후 9.30.05.png&quot; data-origin-width=&quot;2094&quot; data-origin-height=&quot;1272&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;메일 보내기 기초&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;pre id=&quot;code_1647527643768&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import smtplib
from email.mime.text import MIMEText

smtp = smtplib.SMTP('smtp.gmail.com', 587)

smtp.ehlo()

smtp.starttls()

smtp.login('xxx@gmail.com', '발급받은 앱 비밀번호')

msg = MIMEText('내용 : 본문 내용')
msg['Subject'] = '제목: 파이썬으로 gmail 보내기'

smtp.sendmail('발신 할 메일 주소', '수신 받을 메일 주소', msg.as_string())

smtp.quit()&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;감사합니다.&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;&amp;lt;참고 문서&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;1. SMTP, IMAP, POP3의 개념&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://m.blog.naver.com/ijoos/221742035684&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://m.blog.naver.com/ijoos/221742035684&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;2. 파이썬으로 이메일 보내기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://coblin.xyz/23&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://coblin.xyz/23&lt;/a&gt;&lt;/p&gt;</description>
      <category>파이썬 패키지/이메일</category>
      <category>SMTP</category>
      <category>SMTPAuthenticationError</category>
      <category>smtplib</category>
      <category>메일 자동 발송</category>
      <category>파이썬 gmail 보내기</category>
      <category>파이썬 독학</category>
      <category>파이썬 메일</category>
      <category>파이썬 메일 자동화</category>
      <category>파이썬 업무자동화</category>
      <category>파이썬으로 메일 보내기</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/204</guid>
      <comments>https://coding-kindergarten.tistory.com/204#entry204comment</comments>
      <pubDate>Thu, 17 Mar 2022 23:40:49 +0900</pubDate>
    </item>
    <item>
      <title>파이썬 주요 라이브러리 정리</title>
      <link>https://coding-kindergarten.tistory.com/203</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7nOju/btrvI4lmFBu/H179PQ4mrNRkYkGcye2Oo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7nOju/btrvI4lmFBu/H179PQ4mrNRkYkGcye2Oo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7nOju/btrvI4lmFBu/H179PQ4mrNRkYkGcye2Oo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7nOju%2FbtrvI4lmFBu%2FH179PQ4mrNRkYkGcye2Oo1%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;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;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;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt; 데이터 분석 및 AI 관련 라이브러리&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-11 오후 11.47.09.png&quot; data-origin-width=&quot;1496&quot; data-origin-height=&quot;914&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/49fSl/btrvIzeSUNT/lTf3cKztTpIjwFlIUcIm9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/49fSl/btrvIzeSUNT/lTf3cKztTpIjwFlIUcIm9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/49fSl/btrvIzeSUNT/lTf3cKztTpIjwFlIUcIm9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F49fSl%2FbtrvIzeSUNT%2FlTf3cKztTpIjwFlIUcIm9K%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;700&quot; height=&quot;428&quot; data-filename=&quot;스크린샷 2022-03-11 오후 11.47.09.png&quot; data-origin-width=&quot;1496&quot; data-origin-height=&quot;914&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;업무자동화 관련 라이브러리&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-11 오후 11.47.25.png&quot; data-origin-width=&quot;1380&quot; data-origin-height=&quot;996&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/by2l64/btrvLAwqxSI/bjWN70JNIkdf9zr2zuKGt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/by2l64/btrvLAwqxSI/bjWN70JNIkdf9zr2zuKGt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/by2l64/btrvLAwqxSI/bjWN70JNIkdf9zr2zuKGt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fby2l64%2FbtrvLAwqxSI%2FbjWN70JNIkdf9zr2zuKGt1%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;469&quot; data-filename=&quot;스크린샷 2022-03-11 오후 11.47.25.png&quot; data-origin-width=&quot;1380&quot; data-origin-height=&quot;996&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-03-11 오후 11.48.48.png&quot; data-origin-width=&quot;1428&quot; data-origin-height=&quot;886&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4A8Nx/btrvJxm8WlP/kbkokj1GFEko8PqzcrP4c1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4A8Nx/btrvJxm8WlP/kbkokj1GFEko8PqzcrP4c1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4A8Nx/btrvJxm8WlP/kbkokj1GFEko8PqzcrP4c1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4A8Nx%2FbtrvJxm8WlP%2Fkbkokj1GFEko8PqzcrP4c1%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;670&quot; height=&quot;416&quot; data-filename=&quot;스크린샷 2022-03-11 오후 11.48.48.png&quot; data-origin-width=&quot;1428&quot; data-origin-height=&quot;886&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>파이썬 패키지/라이브러리&amp;amp;패키지 소개</category>
      <category>파이썬 라이브러리</category>
      <category>파이썬 패키지</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/203</guid>
      <comments>https://coding-kindergarten.tistory.com/203#entry203comment</comments>
      <pubDate>Fri, 11 Mar 2022 23:57:26 +0900</pubDate>
    </item>
    <item>
      <title>[Pytion/time] 파이썬에서 시간 정보 다루는 법 (ft. 현재 시간, 타이머, 코드 실행 delay)</title>
      <link>https://coding-kindergarten.tistory.com/202</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpHwbB/btruh6K4a66/tKndUcU5MoRi48TBY5Dmn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpHwbB/btruh6K4a66/tKndUcU5MoRi48TBY5Dmn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpHwbB/btruh6K4a66/tKndUcU5MoRi48TBY5Dmn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpHwbB%2Fbtruh6K4a66%2FtKndUcU5MoRi48TBY5Dmn0%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;오늘은 코딩을 하다보면 필요한 시간 정보를 다룰 수 있게 해주는 time 모듈에 대해서 공부해보겠습니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt; 시간의 개념&lt;/b&gt;&lt;/h3&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;1) UTC (Universial Time Cordinated): 협정 세계시&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1972년부터 세계 표준시로 정해짐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GMT와 UTC 사이의 시차는 없고, UTC가 오차가 더 적음&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;2) GMT (Greenwich Mean Time): 그리니치 평균시&lt;/b&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;- 1925년부터 1972년까지 표준시&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;3) KST (Korea Standard Time): 한국 표준시, UTC +9&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt; time 모듈 기초 - time( ), gmtime( ), localtime( )&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 time 모듈을 불러와 줍니다. time 모듈은 파이썬 내장 라이브러리(PIL)이므로 따로 설치하지 않으셔도 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1645708919453&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import time&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;&lt;b&gt;1) time( )&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1645708784053&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#현재시각을 1970-01-01 00:00:00(UTC)를 기준으로 초단위로 나타낸 시간
time.time()&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;lt;실행 결과&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-24 오후 10.27.14.png&quot; data-origin-width=&quot;374&quot; data-origin-height=&quot;218&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7Hhae/btruc6d4nAq/KaJ77AkNLRKscwFcYk0vbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7Hhae/btruc6d4nAq/KaJ77AkNLRKscwFcYk0vbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7Hhae/btruc6d4nAq/KaJ77AkNLRKscwFcYk0vbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7Hhae%2Fbtruc6d4nAq%2FKaJ77AkNLRKscwFcYk0vbK%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;200&quot; height=&quot;117&quot; data-filename=&quot;스크린샷 2022-02-24 오후 10.27.14.png&quot; data-origin-width=&quot;374&quot; data-origin-height=&quot;218&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;이런 시간 표시 방식은 우리가 잘 사용할 일이 없겠죠? 그래서 time.time( ) 함수는 자주 사용되진 않고 아래와 같이 '어느 시점부터 몇 초가 지났는지'를 산출하기 위해서 아래와 같이 사용되기도 합니다. (쥬피터 노트북을 사용하면 위의 그림에서 보시듯이 그냥 자동으로 실행시간이 측정되니 쓸 일이 없겠죠?ㅎㅎ)&lt;/p&gt;
&lt;pre id=&quot;code_1645710037214&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 측정 시작
start = time.time()

# 실행 시간을 알고싶은 코드 (여기서는 단순히 1.5초 delay를 줌) 
time.sleep(3)

# 측정 종료
end = time.time()

print('코드 실행 시간:', end - start)&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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2) gmtime( )&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1645708989137&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# GMT 기준으로 struct_time을 반환
time.gmtime()&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;lt;실행 결과&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-24 오후 10.58.46.png&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgNflV/btruc7jPa0Y/67duq8uS1N3BZU1nUKkg4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgNflV/btruc7jPa0Y/67duq8uS1N3BZU1nUKkg4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgNflV/btruc7jPa0Y/67duq8uS1N3BZU1nUKkg4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgNflV%2Fbtruc7jPa0Y%2F67duq8uS1N3BZU1nUKkg4k%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;640&quot; height=&quot;280&quot; data-filename=&quot;스크린샷 2022-02-24 오후 10.58.46.png&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;280&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;실행결과를 보시면 tm_xxxx로 표현된 변수에 값들이 들어간 것이 보이실텐데요.&amp;nbsp; 아래와 같이 변수명을 참조해서 따로 사용하실 수 있습니다. (차례대로, 연, 월, 일, 시, 분, 초, 요일, 연중 경과일, 썸머타임 적용 여부_0:미적용 1:적용 -1:모름)&lt;/p&gt;
&lt;pre id=&quot;code_1645709583951&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 연도 가져오기 예시
t = time.gmtime()
t.tm_year&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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3) localtime( )&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;앞에서 배운 gmtime( )이 세계의 기준 시간이라면 &lt;span&gt;localtime( )은 현재 코드를 실행한 사람이 위치한 지역 기준의 시간이 struct_time으로 출력됩니다. 저는 주로 이 함수를 자주 사용한답니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1645710694950&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 한국에서 실행한다면 GMT+9가 출력
time.localtime()&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;lt;실행 결과&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-24 오후 10.59.21.png&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;272&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnVwDy/btrufEBo1QM/EnNg6corI3SlnXL7q9PVOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnVwDy/btrufEBo1QM/EnNg6corI3SlnXL7q9PVOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnVwDy/btrufEBo1QM/EnNg6corI3SlnXL7q9PVOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnVwDy%2FbtrufEBo1QM%2FEnNg6corI3SlnXL7q9PVOk%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;640&quot; height=&quot;272&quot; data-filename=&quot;스크린샷 2022-02-24 오후 10.59.21.png&quot; data-origin-width=&quot;1192&quot; data-origin-height=&quot;272&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&amp;nbsp;&lt;/span&gt; struct_time을 문자열로 / &lt;b&gt;문자열을 struct_time로 변환하는 법&lt;/b&gt;- strftime( ), strptime( )&lt;/b&gt;&lt;/h3&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;1) strftime( )&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1645711851985&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;tm = time.localtime()
str_tm = time.strftime(&quot;%Y-%m-%d %I:%M:%S %p&quot;, tm)
print(str_tm)&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;lt;실행 결과&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-24 오후 11.11.08.png&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;298&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/elrSlN/btrub991apY/ZMGKfgmlmZjq2GJX1Megs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/elrSlN/btrub991apY/ZMGKfgmlmZjq2GJX1Megs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/elrSlN/btrub991apY/ZMGKfgmlmZjq2GJX1Megs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FelrSlN%2Fbtrub991apY%2FZMGKfgmlmZjq2GJX1Megs1%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;500&quot; height=&quot;153&quot; data-filename=&quot;스크린샷 2022-02-24 오후 11.11.08.png&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;298&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 data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2) strptime( )&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1645712282693&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;str_tm = &quot;2022-02-24 11:10:08 PM&quot;
tm = time.strptime(str_tm, &quot;%Y-%m-%d %I:%M:%S %p&quot;)
print(tm)&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;lt;실행 결과&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-24 오후 11.17.40.png&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oT54o/btruhwbzTug/xnH8jGaA5qIXGuGkiAZHAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oT54o/btruhwbzTug/xnH8jGaA5qIXGuGkiAZHAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oT54o/btruhwbzTug/xnH8jGaA5qIXGuGkiAZHAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoT54o%2FbtruhwbzTug%2FxnH8jGaA5qIXGuGkiAZHAK%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;640&quot; height=&quot;350&quot; data-filename=&quot;스크린샷 2022-02-24 오후 11.17.40.png&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;350&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;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-24 오후 11.19.43.png&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;1246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YhxyO/btruc5yOWv5/XdktMzqEhkcp9xmkIE7j2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YhxyO/btruc5yOWv5/XdktMzqEhkcp9xmkIE7j2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YhxyO/btruc5yOWv5/XdktMzqEhkcp9xmkIE7j2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYhxyO%2Fbtruc5yOWv5%2FXdktMzqEhkcp9xmkIE7j2k%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;400&quot; height=&quot;1246&quot; data-filename=&quot;스크린샷 2022-02-24 오후 11.19.43.png&quot; data-origin-width=&quot;806&quot; data-origin-height=&quot;1246&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;4.&lt;/span&gt;&amp;nbsp; 코드를 실행할 때 delay를 주는 법 - time.sleep( )&lt;/b&gt;&lt;/h3&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;이미 많이 보셨겠지만 이럴 때는 아래의 코드를 사용하며, 단위는 초(sec)입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1645713287653&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 괄호 안에 delay 시키고 싶은 초를 입력
time.sleep()&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;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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;참고 자료&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;1. 네이버 블로그_사진속의 풍경여행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://blog.naver.com/gooddayvic/222110630554&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://blog.naver.com/gooddayvic/222110630554&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;&amp;nbsp;&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://responding.tistory.com/60&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://responding.tistory.com/60&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;3. 파이썬 공식 문서_time 모듈&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.python.org/3/library/time.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.python.org/3/library/time.html&lt;/a&gt;&lt;/p&gt;</description>
      <category>파이썬 패키지/스케쥴러</category>
      <category>time 모듈 설치</category>
      <category>time.sleep 단위</category>
      <category>time.sleep 현재시간</category>
      <category>timestamp</category>
      <category>파이썬 time</category>
      <category>파이썬 time.sleep</category>
      <category>파이썬 time.sleep 단위</category>
      <category>파이썬 시간 지연</category>
      <category>파이썬 시간 출력</category>
      <category>파이썬 시간 측정</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/202</guid>
      <comments>https://coding-kindergarten.tistory.com/202#entry202comment</comments>
      <pubDate>Thu, 24 Feb 2022 23:44:39 +0900</pubDate>
    </item>
    <item>
      <title>[#shorts] Pandas로 엑셀의 특정 시트 불러오는 방법 (ft. 시트 이름, 시트 인덱스)</title>
      <link>https://coding-kindergarten.tistory.com/201</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bw64Ny/btrtRWQipRq/Qr7gnsKInRtiTBbN1IOjH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bw64Ny/btrtRWQipRq/Qr7gnsKInRtiTBbN1IOjH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bw64Ny/btrtRWQipRq/Qr7gnsKInRtiTBbN1IOjH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbw64Ny%2FbtrtRWQipRq%2FQr7gnsKInRtiTBbN1IOjH1%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;오늘은 pandas를 공부하다가 새롭게 알게된 내용을 간단히 정리하고 공유하려고 합니다.&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;바로 엑셀 파일(.xlsx)을 판다스의 Data frame으로 불러올 때, 시트를 선택해서 불러오는 방법인데요.&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;지금까지 sheet_name을 별도로 설정 안 해줘도 잘 동작했던 이유는 sheet_name 파라미터의 기본값이 가장 첫 시트였기 때문이었습니다.&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;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;시작하기에 앞서 테스트를 위해, 아래와 같이 시트가 2개인 엑셀 문서를 만들어 보았습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-21 오후 10.45.03.png&quot; data-origin-width=&quot;1426&quot; data-origin-height=&quot;544&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5xuRB/btrtYcEnfKn/Xgx785BjlsbkhEhr2h5wfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5xuRB/btrtYcEnfKn/Xgx785BjlsbkhEhr2h5wfK/img.png&quot; data-alt=&quot;실습에 사용 할 엑셀&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5xuRB/btrtYcEnfKn/Xgx785BjlsbkhEhr2h5wfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5xuRB%2FbtrtYcEnfKn%2FXgx785BjlsbkhEhr2h5wfK%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;640&quot; height=&quot;544&quot; data-filename=&quot;스크린샷 2022-02-21 오후 10.45.03.png&quot; data-origin-width=&quot;1426&quot; data-origin-height=&quot;544&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;실습에 사용 할 엑셀&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt; 시트 이름으로 불러오기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 시트 이름으로 &quot;2반&quot; 시트의 데이터를 불러와 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1645338539797&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pandas as pd

# df = pd.read_excel(&quot;엑셀 파일 경로&quot;, sheet_name = &quot;불러올 시트 이름&quot;)
df = pd.read_excel(&quot;Test.xlsx&quot;, sheet_name=&quot;2반&quot;)
df&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;&lt;b&gt;&amp;lt;실행 결과&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-21 오후 10.51.16.png&quot; data-origin-width=&quot;280&quot; data-origin-height=&quot;312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGIPTk/btrtTLHKrFA/rQIS3jbRAWS2b3RDdbl4MK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGIPTk/btrtTLHKrFA/rQIS3jbRAWS2b3RDdbl4MK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGIPTk/btrtTLHKrFA/rQIS3jbRAWS2b3RDdbl4MK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGIPTk%2FbtrtTLHKrFA%2FrQIS3jbRAWS2b3RDdbl4MK%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;200&quot; height=&quot;223&quot; data-filename=&quot;스크린샷 2022-02-21 오후 10.51.16.png&quot; data-origin-width=&quot;280&quot; data-origin-height=&quot;312&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;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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt; 시트 인덱스로 불러오기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음으로는 시트의 인덱스를 이용해서 &quot;2반&quot; 시트의 데이터를 불러와 보겠습니다. 인덱스는 0부터 시작하므로 첫번째 시트가 0, 두번째 시트가 1입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1645450832667&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pandas as pd

# df = pd.read_excel(&quot;엑셀 파일 경로&quot;, sheet_name = 불러올 시트의 인덱스)
df = pd.read_excel(&quot;Test.xlsx&quot;, sheet_name=1)
df&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;&lt;b&gt;&amp;lt;실행 결과&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-21 오후 10.51.16.png&quot; data-origin-width=&quot;280&quot; data-origin-height=&quot;312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGIPTk/btrtTLHKrFA/rQIS3jbRAWS2b3RDdbl4MK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGIPTk/btrtTLHKrFA/rQIS3jbRAWS2b3RDdbl4MK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGIPTk/btrtTLHKrFA/rQIS3jbRAWS2b3RDdbl4MK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGIPTk%2FbtrtTLHKrFA%2FrQIS3jbRAWS2b3RDdbl4MK%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;200&quot; height=&quot;223&quot; data-filename=&quot;스크린샷 2022-02-21 오후 10.51.16.png&quot; data-origin-width=&quot;280&quot; data-origin-height=&quot;312&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;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;참고 자료&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>파이썬 패키지/데이터분석</category>
      <category>pandas excel read</category>
      <category>pandas excel sheet</category>
      <category>pandas excel 읽기</category>
      <category>엑셀 판다스 불러오기</category>
      <category>판다스 데이터 불러오기</category>
      <category>판다스 엑셀</category>
      <category>판다스 엑셀 데이터 불러오기</category>
      <category>판다스 엑셀 데이터 추출</category>
      <category>판다스 엑셀 시트</category>
      <category>판다스 엑셀 읽기</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/201</guid>
      <comments>https://coding-kindergarten.tistory.com/201#entry201comment</comments>
      <pubDate>Mon, 21 Feb 2022 23:02:29 +0900</pubDate>
    </item>
    <item>
      <title>[#shorts] 컴퓨터 비전으로 무엇을 할 수 있을까?</title>
      <link>https://coding-kindergarten.tistory.com/200</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;* 주의. 비전공자가 공부하면서 대충 정리한 글이므로, 정확하지 않을 수 있으며 대략적인 느낌만 참고할 것&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt; 컴퓨터 비전의 기반 기술&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1) 영상의 필터링&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2) 기하학적 변환&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3) 영상의 특징추출&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 배경과 객체, 또는 객체와 객체의 경계인 엣지(Edge)를 픽셀 값의 급격한 변화를 감지함으로써 검출&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;4) 이진 영상 처리&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 관심 대상과 비관심 대상을 0과 255(흑과 백)으로 명확히 구분 짓기 위해서 하는 작업&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 임계값(treshold)를 기준으로 흑과 백을 나눔&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt; 컴퓨터 비전으로 무엇을 할 수 있을까?&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-16 오후 9.59.09.png&quot; data-origin-width=&quot;1290&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QdgWD/btrtsF8Ke6a/EiDVRjIK6kRjpVWReNoPw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QdgWD/btrtsF8Ke6a/EiDVRjIK6kRjpVWReNoPw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QdgWD/btrtsF8Ke6a/EiDVRjIK6kRjpVWReNoPw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQdgWD%2FbtrtsF8Ke6a%2FEiDVRjIK6kRjpVWReNoPw0%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;640&quot; height=&quot;584&quot; data-filename=&quot;스크린샷 2022-02-16 오후 9.59.09.png&quot; data-origin-width=&quot;1290&quot; data-origin-height=&quot;584&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1) 검출&lt;/b&gt;&lt;/h4&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-16 오후 10.14.01.png&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;738&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1vJqo/btrtxlhicKM/ILYOaQiocdYelmaX0NyWOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1vJqo/btrtxlhicKM/ILYOaQiocdYelmaX0NyWOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1vJqo/btrtxlhicKM/ILYOaQiocdYelmaX0NyWOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1vJqo%2FbtrtxlhicKM%2FILYOaQiocdYelmaX0NyWOk%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;500&quot; height=&quot;738&quot; data-filename=&quot;스크린샷 2022-02-16 오후 10.14.01.png&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;738&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2) 인식&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-16 오후 10.07.48.png&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwsiIY/btrtrWQOSGl/ssMw3baHfCZeTfcVfITkS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwsiIY/btrtrWQOSGl/ssMw3baHfCZeTfcVfITkS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwsiIY/btrtrWQOSGl/ssMw3baHfCZeTfcVfITkS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwsiIY%2FbtrtrWQOSGl%2FssMw3baHfCZeTfcVfITkS1%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;500&quot; height=&quot;157&quot; data-filename=&quot;스크린샷 2022-02-16 오후 10.07.48.png&quot; data-origin-width=&quot;796&quot; data-origin-height=&quot;250&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 개와 고양이의 이미지를 보고 '개'와 '고양이'라고 명확히 알려주는 것이 식별(identification)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 개와 고양이의 이미지를 수 백장이 섞여있을 때, 이를 끼리끼리 나눠주는 것이 분류(classification)&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;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;3) 추적&lt;/b&gt;&lt;/h4&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 alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-16 오후 10.08.30.png&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;432&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zet72/btrtwkiIUnw/mdczDXfjGXpkYeEltFKuRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zet72/btrtwkiIUnw/mdczDXfjGXpkYeEltFKuRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zet72/btrtwkiIUnw/mdczDXfjGXpkYeEltFKuRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fzet72%2FbtrtwkiIUnw%2FmdczDXfjGXpkYeEltFKuRK%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;500&quot; height=&quot;432&quot; data-filename=&quot;스크린샷 2022-02-16 오후 10.08.30.png&quot; data-origin-width=&quot;756&quot; data-origin-height=&quot;432&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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;참고 자료&amp;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;패스트 캠퍼스 강의_OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online&lt;/p&gt;</description>
      <category>파이썬 패키지/이미지 처리</category>
      <category>computer vision</category>
      <category>opencv</category>
      <category>영상처리</category>
      <category>영상처리 강의</category>
      <category>영상처리 기술</category>
      <category>컴퓨터 비전 개요</category>
      <category>컴퓨터 비전 큰그림</category>
      <category>컴퓨터비전이란</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/200</guid>
      <comments>https://coding-kindergarten.tistory.com/200#entry200comment</comments>
      <pubDate>Wed, 16 Feb 2022 22:45:27 +0900</pubDate>
    </item>
    <item>
      <title>[Python/OpenCV] 파이썬으로 컴퓨터 비전 시작하기 4편. 두 개의 이미지를 더하고 빼는 법, 이미지 밝기 조절 방법</title>
      <link>https://coding-kindergarten.tistory.com/199</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nvAin/btrs7qRNXJB/fOu7E30ApUAxZdd1aDNc9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nvAin/btrs7qRNXJB/fOu7E30ApUAxZdd1aDNc9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nvAin/btrs7qRNXJB/fOu7E30ApUAxZdd1aDNc9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnvAin%2Fbtrs7qRNXJB%2FfOu7E30ApUAxZdd1aDNc9k%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;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;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;덧셈&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;이미지를 더해줄 때는 cv2.add( ) 함수를 사용해줍니다. 참고로 앞으로 src와 dst라는 파라미터를 많이 언급할텐데, &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;src&lt;/b&gt;&lt;/span&gt;는 &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;source&lt;/b&gt;&lt;/span&gt;의 약자, &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;dst&lt;/b&gt;&lt;/span&gt;는 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;destination&lt;/b&gt;&lt;/span&gt;의 약자로 각각 &lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;input&lt;/b&gt;&lt;/span&gt;과 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;output&lt;/b&gt;&lt;/span&gt;으로 이해하시면 편하실거예요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1644737050229&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cv2.add(src1, src2, dst=None, mask=None, dtype=None)&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;이때 여러 파라미터들 중에서, 반드시 값을 넣어주어야 하는 2가지가 있는데 바로 src1과 src2입니다.&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;보통 src1은 이미지 파일, 정확히는 이미지 파일의 경로를 입력해주며,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;src2에는 src1과 동일하게 이미지 파일을 입력해주거나, 스칼라 값(픽셀 값)을 숫자로 입력해줍니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1)&amp;nbsp; 이미지 + 스칼라 값 (밝기 조절)&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;이미지에 스칼라 값을 넣어준다는 의미는 밝기를 조절한다는 것입니다. 흑백과 컬러 이미지에 대해서 어떻게 처리해는지 코드와 결과를 보면서 파악해 보세요.&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;&amp;lt;코드&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644737756094&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import cv2

# 흑백 이미지 불러오기
src = cv2.imread('cat.jpg', cv2.IMREAD_GRAYSCALE)
dst = cv2.add(src, 50)

cv2.imshow('src', src)
cv2.imshow('dst', dst)

cv2.waitKey()

# 컬러 이미지 불러오기
src = cv2.imread('cat.jpg')

#여기서 50, 50, 50, 0은 각각 B,G,R,alpha(투명도)를 나타냄
dst = cv2.add(src, (50, 50, 50, 0)) 

cv2.imshow('src', src)
cv2.imshow('dst', dst)
cv2.waitKey()

cv2.destroyAllWindows()&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;&lt;b&gt;&amp;lt;실행 결과&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-13 오후 4.33.20.png&quot; data-origin-width=&quot;2566&quot; data-origin-height=&quot;908&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7ji9V/btrs8BFAgPT/CbaIlrnGpjizHdoOHiIgr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7ji9V/btrs8BFAgPT/CbaIlrnGpjizHdoOHiIgr0/img.png&quot; data-alt=&quot;흑백&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7ji9V/btrs8BFAgPT/CbaIlrnGpjizHdoOHiIgr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7ji9V%2Fbtrs8BFAgPT%2FCbaIlrnGpjizHdoOHiIgr0%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;640&quot; height=&quot;908&quot; data-filename=&quot;스크린샷 2022-02-13 오후 4.33.20.png&quot; data-origin-width=&quot;2566&quot; data-origin-height=&quot;908&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;흑백&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-13 오후 4.40.23.png&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;455&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blQ0g2/btrteiZg7gD/wzyC8Yf0OTH6mdluBOHOVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blQ0g2/btrteiZg7gD/wzyC8Yf0OTH6mdluBOHOVK/img.png&quot; data-alt=&quot;컬러&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blQ0g2/btrteiZg7gD/wzyC8Yf0OTH6mdluBOHOVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblQ0g2%2FbtrteiZg7gD%2FwzyC8Yf0OTH6mdluBOHOVK%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;640&quot; height=&quot;455&quot; data-filename=&quot;스크린샷 2022-02-13 오후 4.40.23.png&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;455&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;컬러&lt;/figcaption&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;2) 이미지 + 이미지&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;이번에는 이미지끼리 더해보겠습니다. 완전 다른 이미지 두 개를 더해줄 수도 있지만 쉬운 이해를 위해서 흰색 바탕에 검은색 원의 이미지를 생성해서 더해줘보겠습니다.&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-filename=&quot;스크린샷 2022-02-13 오후 5.22.10.png&quot; data-origin-width=&quot;1678&quot; data-origin-height=&quot;530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clQESN/btrtb0YEW1t/PCSYD4gTBaDOXrVNXre9g0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clQESN/btrtb0YEW1t/PCSYD4gTBaDOXrVNXre9g0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clQESN/btrtb0YEW1t/PCSYD4gTBaDOXrVNXre9g0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclQESN%2Fbtrtb0YEW1t%2FPCSYD4gTBaDOXrVNXre9g0%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;640&quot; height=&quot;530&quot; data-filename=&quot;스크린샷 2022-02-13 오후 5.22.10.png&quot; data-origin-width=&quot;1678&quot; data-origin-height=&quot;530&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 data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;코드&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644738518831&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import cv2

# 그레이스케일로 이미지 불러오기
src1 = cv2.imread('cat.jpg', cv2.IMREAD_GRAYSCALE)
src2 = cv2.imread('mask_circle.jpg', cv2.IMREAD_GRAYSCALE)

# 이미지 2개 더하기
dst = cv2.add(src1, src2)

cv2.imshow('dst', dst)

cv2.waitKey()

cv2.destroyAllWindows()&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;&lt;b&gt;&amp;lt;실행 결과&amp;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;그레이스케일 영상에서 검은색은 0, 흰색은 255의 값을 가지므로, 검은색 원이 있던 부분은 원래의 고양이 사진을 그대로 출력하며, 흰색이었던 부분은 모두 흰색으로 출력되는 것을 확인 하실 수 있습니다. 참고로 두 이미지의 픽셀값을 더했을 때 255를 넘으면 모두 255(흰색)으로 출력됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-13 오후 4.47.27.png&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;908&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/be6qyl/btrs7CkF9ZD/nJBDqJm6YoJt9AxcsPPgn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/be6qyl/btrs7CkF9ZD/nJBDqJm6YoJt9AxcsPPgn1/img.png&quot; data-alt=&quot;src1 + src2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/be6qyl/btrs7CkF9ZD/nJBDqJm6YoJt9AxcsPPgn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbe6qyl%2Fbtrs7CkF9ZD%2FnJBDqJm6YoJt9AxcsPPgn1%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;400&quot; height=&quot;283&quot; data-filename=&quot;스크린샷 2022-02-13 오후 4.47.27.png&quot; data-origin-width=&quot;1282&quot; data-origin-height=&quot;908&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;src1 + src2&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt; 가중치 덧셈&lt;/b&gt;&lt;/h3&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;pre id=&quot;code_1644738817832&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cv2.addWeighted(src1, alpha, src2, beta, gamma, dst=None, dtype=None)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-13 오후 5.10.47.png&quot; data-origin-width=&quot;1488&quot; data-origin-height=&quot;542&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqndlZ/btrs724uOgH/udsZY9R7xJaiiEnbzUX9pk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqndlZ/btrs724uOgH/udsZY9R7xJaiiEnbzUX9pk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqndlZ/btrs724uOgH/udsZY9R7xJaiiEnbzUX9pk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqndlZ%2Fbtrs724uOgH%2FudsZY9R7xJaiiEnbzUX9pk%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;400&quot; height=&quot;146&quot; data-filename=&quot;스크린샷 2022-02-13 오후 5.10.47.png&quot; data-origin-width=&quot;1488&quot; data-origin-height=&quot;542&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;방금 전 코드에서 cv2.add( ) 부분의 코드를 아래의 코드로만 바꿔주면 되므로 전체 코드는 생략하도록 하겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1644740049147&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dst = cv2.addWeighted(src1, 0.5, src2, 0.5, 0)&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;&lt;b&gt;&amp;lt;실행 결과&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-13 오후 5.13.41.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;832&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WKELz/btrtakciRTb/cqu8LxzcKhFptnFHWz6Erk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WKELz/btrtakciRTb/cqu8LxzcKhFptnFHWz6Erk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WKELz/btrtakciRTb/cqu8LxzcKhFptnFHWz6Erk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWKELz%2FbtrtakciRTb%2Fcqu8LxzcKhFptnFHWz6Erk%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;400&quot; height=&quot;260&quot; data-filename=&quot;스크린샷 2022-02-13 오후 5.13.41.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;832&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt; 뺄셈&lt;/b&gt;&lt;/h3&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-13 오후 5.23.57.png&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUm0MN/btrs9KIyuXl/4zqIXlEB878cE25kh9Atx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUm0MN/btrs9KIyuXl/4zqIXlEB878cE25kh9Atx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUm0MN/btrs9KIyuXl/4zqIXlEB878cE25kh9Atx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUm0MN%2Fbtrs9KIyuXl%2F4zqIXlEB878cE25kh9Atx0%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;640&quot; height=&quot;512&quot; data-filename=&quot;스크린샷 2022-02-13 오후 5.23.57.png&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;512&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;이 것 역시 이전 덧셈 코드에서 cv2.add( ) 코드 한줄만 아래의 코드로 바꿔주시면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1644740838930&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;dst = cv2.subtract(src1, src2)&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;&lt;b&gt;&amp;lt;실행 결과&amp;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;여기서도 0보다 작은 음수는 픽셀값이 0으로 자동으로 변환되어 검은색으로 표현되는 것에 주의해주세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-13 오후 5.25.51.png&quot; data-origin-width=&quot;1272&quot; data-origin-height=&quot;844&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmskk2/btrs8bmj39v/Mk0aDMKNlG30sPTmRvuS90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmskk2/btrs8bmj39v/Mk0aDMKNlG30sPTmRvuS90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmskk2/btrs8bmj39v/Mk0aDMKNlG30sPTmRvuS90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbmskk2%2Fbtrs8bmj39v%2FMk0aDMKNlG30sPTmRvuS90%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;400&quot; height=&quot;844&quot; data-filename=&quot;스크린샷 2022-02-13 오후 5.25.51.png&quot; data-origin-width=&quot;1272&quot; data-origin-height=&quot;844&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;4.&lt;/span&gt; 차이계산&lt;/b&gt;&lt;/h3&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;pre id=&quot;code_1644741587713&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cv2.absdiff(src1, src2, dst=None)&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;CCTV로 주차장을 찍으며 실시간으로 차이계산을 하고, 변화가 생겼을 때만 알람을 띄워주는 알고리즘을 만든다면 효과적일 것 같네요.&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;스크린샷 2022-02-13 오후 5.38.38.png&quot; data-origin-width=&quot;1616&quot; data-origin-height=&quot;478&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n7XQm/btrtejDUpHN/8XSqRJYQ14mXtIBKFVSVcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n7XQm/btrtejDUpHN/8XSqRJYQ14mXtIBKFVSVcK/img.png&quot; data-alt=&quot;출처. OpenCV를 활용한 컴퓨터비전과 딥러닝_패스트 캠퍼스 강의&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n7XQm/btrtejDUpHN/8XSqRJYQ14mXtIBKFVSVcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn7XQm%2FbtrtejDUpHN%2F8XSqRJYQ14mXtIBKFVSVcK%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;1616&quot; height=&quot;478&quot; data-filename=&quot;스크린샷 2022-02-13 오후 5.38.38.png&quot; data-origin-width=&quot;1616&quot; data-origin-height=&quot;478&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처. OpenCV를 활용한 컴퓨터비전과 딥러닝_패스트 캠퍼스 강의&lt;/figcaption&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;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;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;b&gt;&amp;lt;참고 자료&amp;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;패스트 캠퍼스 강의_OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online&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>파이썬 패키지/이미지 처리</category>
      <category>opencv</category>
      <category>opencv 이미지 더하기</category>
      <category>opencv 이미지 합치기</category>
      <category>이미지 가중치</category>
      <category>파이썬 opencv</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/199</guid>
      <comments>https://coding-kindergarten.tistory.com/199#entry199comment</comments>
      <pubDate>Sun, 13 Feb 2022 17:43:01 +0900</pubDate>
    </item>
    <item>
      <title>[Python/OpenCV] 파이썬으로 컴퓨터 비전 시작하기 3편. 실시간 카메라 영상과 동영상 파일 다루기</title>
      <link>https://coding-kindergarten.tistory.com/198</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQJBpG/btrs4OjoGF4/QrLbcRqWLcQ1jMXweUDu91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQJBpG/btrs4OjoGF4/QrLbcRqWLcQ1jMXweUDu91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQJBpG/btrs4OjoGF4/QrLbcRqWLcQ1jMXweUDu91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQJBpG%2Fbtrs4OjoGF4%2FQrLbcRqWLcQ1jMXweUDu91%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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 data-ke-size=&quot;size16&quot;&gt;시작하기에 앞서, OpenCV 라이브러리는 쥬피터 노트북에서 한줄한줄 실행하기 보다는 그냥 파이썬 파일(.py)에서 전체 코드를 실행하시는 것을 추천드립니다. imshow( )로 창을 띄우고 종료할 때 자꾸 파이썬 인터프리터가 먹통이 되더라구요.&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;OpenCV로 내장 카메라 영상 출력하기&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;b&gt;&amp;lt;코드&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644499915127&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# step1.opencv 라이브러리 불러오기
import cv2

# step2.카메라 열기 - 0은 기본 카메라를 의미
cap = cv2.VideoCapture(0)

# step3.무한 반복
while True:
    # 카메라 연결 여부(True/False)와 현재 프레임 이미지를 읽음
    retval, frame = cap.read()
    
    # 만약 카메라가 연결되어 있지 않으면 while 반복문 종료
    if retval == False:
        break
    
    # 'frame'이란 창 이름으로 현재 프레임 출력
    cv2.imshow('frame', frame)

    # 10초가 지나거나, ESC 키가 입력되면 while 반복문 종료
    if cv2.waitKey(10) == 27:
        break

# step4.카메라 닫고 모든창 종료
cap.release()

cv2.destroyAllWindows()&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;&lt;b&gt;&amp;lt;실행 결과&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-10 오후 10.26.19.png&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1492&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7GVvq/btrsXga4nBq/NkNVqXUmXFOXFFcU1lm8F0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7GVvq/btrsXga4nBq/NkNVqXUmXFOXFFcU1lm8F0/img.png&quot; data-alt=&quot;부끄러워서 숨어서 화면 캡쳐함&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7GVvq/btrsXga4nBq/NkNVqXUmXFOXFFcU1lm8F0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7GVvq%2FbtrsXga4nBq%2FNkNVqXUmXFOXFFcU1lm8F0%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;640&quot; height=&quot;1492&quot; data-filename=&quot;스크린샷 2022-02-10 오후 10.26.19.png&quot; data-origin-width=&quot;2560&quot; data-origin-height=&quot;1492&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;부끄러워서 숨어서 화면 캡쳐함&lt;/figcaption&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;OpenCV에서는 카메라 영상과 이어서 배울 동영상 파일로부터 프레임(frame)을 받아오는 작업을 &lt;b&gt;cv2.VideoCapture 클래스&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;위의 코드에서는 cap이라는 변수로 cv2.VideoCapture 클래스를 객체화 해서 while 반복문 안에서 사용하고 있는 것을 보실 수 있을거예요.&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;참고로 cv2.VideoCapture(0)의 0은 기본 카메라를 의미하기 때문에 카메라가 한 대라면 그냥 고민 없이 0을 넣어 주시면 되고, 카메라가 두 대 이상이라면&amp;nbsp;장치관리자 표시되는 순서대로 1, 2를 입력해주시면 됩니다.&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;OpenCV로 동영상 파일 재생하기&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 말씀드렸 듯이 OpenCV를 이용해서 동영상 파일을 열 때도 &amp;nbsp;cv2.VideoCapture 클래스를 이용합니다.&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;차이점은 cv2.VideoCapture( ) 안에 0 대신에 파일명을 넣어주면 됩니다.&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;u&gt;&lt;b&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://pixabay.com/ko/videos/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://pixabay.com/ko/videos/&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/u&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-filename=&quot;Feb-10-2022 22-56-35.gif&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;360&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GeRdK/btrsY7yfEms/uXSADtDXbAA3wXVb8rKNK1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GeRdK/btrsY7yfEms/uXSADtDXbAA3wXVb8rKNK1/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GeRdK/btrsY7yfEms/uXSADtDXbAA3wXVb8rKNK1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/GeRdK/btrsY7yfEms/uXSADtDXbAA3wXVb8rKNK1/img.gif&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;640&quot; height=&quot;360&quot; data-filename=&quot;Feb-10-2022 22-56-35.gif&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;360&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 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;b&gt;&amp;lt;코드&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644502130101&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# step1.opencv 라이브러리 불러오기
import cv2

# step2.동영상 파일 열기
cap = cv2.VideoCapture('하이랜드 소.mp4')

# step3.무한 반복
while True:
    # 동영상 파일 존재 여부(True/False)와 현재 프레임 이미지를 읽음
    retval, frame = cap.read()
    
    # 만약 동영상 파일이 존재하지 않으면 while 반복문 종료
    if retval == False:
        break
    
    # 'frame'이란 창 이름으로 현재 프레임 출력
    cv2.imshow('frame', frame)

    # 10초가 지나거나, ESC 키가 입력되면 while 반복문 종료
    if cv2.waitKey(10) == 27:
        break

# step4.동영상 파일 닫고 모든창 종료
cap.release()

cv2.destroyAllWindows()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;영상의 기본 정보 가져오기&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 영상의 정보(영상의 프레임 사이즈, 전체 프레임수, FPS 등)를 가져오는 것을 배워보겠습니다. 이 내용은 카메라 영상과 동영상 파일 모두 적용 가능하지만, 저는 동영상 파일을 가지고 진행해보겠습니다.&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;&amp;lt;코드&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644502820641&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# step1.opencv 라이브러리 불러오기
import cv2

# step2.영상 파일 열기
cap = cv2.VideoCapture('하이랜드 소.mp4')

# step3.영상의 가로, 세로 사이즈, 전체 프레임수, FPS 등을 출력
print('Frame width:', int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)))
print('Frame height:', int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
print('Frame count:', int(cap.get(cv2.CAP_PROP_FRAME_COUNT)))
print('FPS:', cap.get(cv2.CAP_PROP_FPS))

# step4.영상 닫고 모든창 종료
cap.release()&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;&lt;b&gt;&amp;lt;실행결과&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-10 오후 11.23.27.png&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3jS8F/btrs1Q3Qc0F/cKWiB5OU52ciZj3XXVMrD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3jS8F/btrs1Q3Qc0F/cKWiB5OU52ciZj3XXVMrD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3jS8F/btrs1Q3Qc0F/cKWiB5OU52ciZj3XXVMrD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3jS8F%2Fbtrs1Q3Qc0F%2FcKWiB5OU52ciZj3XXVMrD0%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;300&quot; height=&quot;102&quot; data-filename=&quot;스크린샷 2022-02-10 오후 11.23.27.png&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;140&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;더 많은 영상 정보는 아래의 OpenCV 공식 사이트를 참고하셔서&amp;nbsp; get( ) 괄호 안만 바꿔주시면 됩니다.&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;a href=&quot;https://docs.opencv.org/4.1.0/d4/d15/group__videoio__flags__base.html#gaeb8dd9c89c10a5c63c139bf7c4f5704d&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.opencv.org/4.1.0/d4/d15/group__videoio__flags__base.html#gaeb8dd9c89c10a5c63c139bf7c4f5704d&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1644502943520&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;OpenCV: Flags for video I/O&quot; data-og-description=&quot;enum &amp;nbsp;cv::VideoCaptureAPIs { &amp;nbsp;&amp;nbsp;cv::CAP_ANY = 0, &amp;nbsp;&amp;nbsp;cv::CAP_VFW = 200, &amp;nbsp;&amp;nbsp;cv::CAP_V4L = 200, &amp;nbsp;&amp;nbsp;cv::CAP_V4L2 = CAP_V4L, &amp;nbsp;&amp;nbsp;cv::CAP_FIREWIRE = 300, &amp;nbsp;&amp;nbsp;cv::CAP_FIREWARE = CAP_FIREWIRE, &amp;nbsp;&amp;nbsp;cv::CAP_IEEE1394 = CAP_FIREWIRE, &amp;nbsp;&amp;nbsp;cv::CAP_DC1394 = CAP_FIRE&quot; data-og-host=&quot;docs.opencv.org&quot; data-og-source-url=&quot;https://docs.opencv.org/4.1.0/d4/d15/group__videoio__flags__base.html#gaeb8dd9c89c10a5c63c139bf7c4f5704d&quot; data-og-url=&quot;https://docs.opencv.org/4.1.0/d4/d15/group__videoio__flags__base.html#gaeb8dd9c89c10a5c63c139bf7c4f5704d&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://docs.opencv.org/4.1.0/d4/d15/group__videoio__flags__base.html#gaeb8dd9c89c10a5c63c139bf7c4f5704d&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.opencv.org/4.1.0/d4/d15/group__videoio__flags__base.html#gaeb8dd9c89c10a5c63c139bf7c4f5704d&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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: Flags for video I/O&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;enum &amp;nbsp;cv::VideoCaptureAPIs { &amp;nbsp;&amp;nbsp;cv::CAP_ANY = 0, &amp;nbsp;&amp;nbsp;cv::CAP_VFW = 200, &amp;nbsp;&amp;nbsp;cv::CAP_V4L = 200, &amp;nbsp;&amp;nbsp;cv::CAP_V4L2 = CAP_V4L, &amp;nbsp;&amp;nbsp;cv::CAP_FIREWIRE = 300, &amp;nbsp;&amp;nbsp;cv::CAP_FIREWARE = CAP_FIREWIRE, &amp;nbsp;&amp;nbsp;cv::CAP_IEEE1394 = CAP_FIREWIRE, &amp;nbsp;&amp;nbsp;cv::CAP_DC1394 = CAP_FIRE&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.opencv.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;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;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;b&gt;&amp;lt;참고 자료&amp;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;패스트 캠퍼스 강의_OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online&lt;/p&gt;</description>
      <category>파이썬 패키지/이미지 처리</category>
      <category>opencv python</category>
      <category>코딩유치원</category>
      <category>파이썬 opencv</category>
      <category>파이썬 opencv 동영상 불러오기</category>
      <category>파이썬 opencv 이미지 불러오기</category>
      <category>파이썬 opencv 카메라</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/198</guid>
      <comments>https://coding-kindergarten.tistory.com/198#entry198comment</comments>
      <pubDate>Thu, 10 Feb 2022 23:31:44 +0900</pubDate>
    </item>
    <item>
      <title>[Python/OpenCV] 파이썬으로 컴퓨터 비전 시작하기 2편. 이미지 속성 가져오는 방법과 numpy로 이미지 생성하기</title>
      <link>https://coding-kindergarten.tistory.com/197</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dk3YXI/btrsTdjFKqc/Mviw1JKcbXKLz2RTUk9Ll1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dk3YXI/btrsTdjFKqc/Mviw1JKcbXKLz2RTUk9Ll1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dk3YXI/btrsTdjFKqc/Mviw1JKcbXKLz2RTUk9Ll1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdk3YXI%2FbtrsTdjFKqc%2FMviw1JKcbXKLz2RTUk9Ll1%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;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;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt;&lt;span&gt; OpenCV로 불러온 이미지의 속성 확인하기&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;OpenCV 라이브러리는 이미지를 numpy.ndarray로 표현하며, 이 배열의 각 요소값(픽셀값, 보통 0~255) 들이 모여서 이미지로 표현되는 방식입니다.&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-filename=&quot;스크린샷 2022-02-08 오후 11.28.00.png&quot; data-origin-width=&quot;1562&quot; data-origin-height=&quot;1042&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oJxEf/btrsSvLEbDx/w2b0wqKuzcVmgDLxS3wpdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oJxEf/btrsSvLEbDx/w2b0wqKuzcVmgDLxS3wpdk/img.png&quot; data-alt=&quot;출처. OpenCV를 활용한 컴퓨터 비전과 딥러닝&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oJxEf/btrsSvLEbDx/w2b0wqKuzcVmgDLxS3wpdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoJxEf%2FbtrsSvLEbDx%2Fw2b0wqKuzcVmgDLxS3wpdk%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;640&quot; height=&quot;1042&quot; data-filename=&quot;스크린샷 2022-02-08 오후 11.28.00.png&quot; data-origin-width=&quot;1562&quot; data-origin-height=&quot;1042&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출처. OpenCV를 활용한 컴퓨터 비전과 딥러닝&lt;/figcaption&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;따라서 cv2.imread( ) 함수로 어떤 이미지를 불러오면 컴퓨터는 numpy.ndarray로 표현하며, 불러온 이미지는 아래와 같은 4가지 속성을 가집니다.&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;1) ndim: 차원의 수&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- 그레이스케일 영상: 2&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- 컬러 영상: 3&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;2) shape: 각 차원의 크기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- 그레이스케일 영상: (h, w)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- 컬러 영상: (h, w, 3)&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;3) size: 전체 원소 개수 (전체 픽셀의 갯수)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- 그레이스케일 영상: h x w&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- 컬러 영상: h x w x 3&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;size18&quot;&gt;&lt;b&gt;4) dtype: 원소의 데이터 타입. 영상 데이터는 uint8&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- 그레이스케일 영상&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;cv2.CV_8UC1 &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;rarr; &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;numpy.uint8, shape = (h, w)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- 컬러영상&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;cv2.CV_8UC3&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;&amp;rarr;&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;numpy.uint8,shape=(h,w,3)&lt;/span&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;&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;pre id=&quot;code_1644329243790&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# step1.OpenCV 라이브러리 불러오기
import cv2

# step2.고양이 이미지 흑백과 컬러로 가져오기 
img1 = cv2.imread('cat.bmp', cv2.IMREAD_GRAYSCALE)
img2 = cv2.imread('cat.bmp', cv2.IMREAD_COLOR)

# step3.이미지의 여러가지 속성들이 어떤 값을 가지는지 확인해보기 (size, shape, ndim, dtype)

print('#img1')
print('shape:', img1.shape)
print('size',img1.size)
print('ndim:',img1.ndim)
print('dtype:',img1.dtype)

print('#img2')
print('shape:', img2.shape)
print('size:',img2.size)
print('ndim:',img2.ndim)
print('dtype:',img2.dtype)&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;lt;출력 결과&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1644330983917&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#img1
shape: (480, 640)
size 307200
ndim: 2
dtype: uint8
#img2
shape: (480, 640, 3)
size: 921600
ndim: 3
dtype: uint8&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;원하는 사이즈의 이미지 생성하기&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenCV는 위에서 보셨 듯이 numpy 패키지의 ndarray로 이미지 표현합니다.&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;따라서 이미지를 새로 생성하기 위해서는 numpy 패키지를 이용해서 ndarray를 생성하고 배열의 요소에 값들을 채워넣어주어야 하죠.&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;pre id=&quot;code_1644331487986&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import cv2
import numpy as np

img1 = np.zeros((480, 640, 3), dtype=np.uint8)  # color image
img2 = np.ones((480, 640), dtype=np.uint8) * 255  # white
img3 = np.full((480, 640, 3), (0, 255, 0), dtype=np.uint8)  # green

cv2.imshow('image1', img1)
cv2.waitKey()
cv2.imshow('image2', img2)
cv2.waitKey()
cv2.imshow('image3', img3)
cv2.waitKey()

cv2.destroyAllWindows()&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;lt;실행 결과&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-02-08 오후 11.44.27.png&quot; data-origin-width=&quot;3854&quot; data-origin-height=&quot;1020&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kAT0v/btrsRbmzbIX/gXtyN7Rr65Ah6QsLKOACy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kAT0v/btrsRbmzbIX/gXtyN7Rr65Ah6QsLKOACy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kAT0v/btrsRbmzbIX/gXtyN7Rr65Ah6QsLKOACy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkAT0v%2FbtrsRbmzbIX%2FgXtyN7Rr65Ah6QsLKOACy0%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;3854&quot; height=&quot;1020&quot; data-filename=&quot;스크린샷 2022-02-08 오후 11.44.27.png&quot; data-origin-width=&quot;3854&quot; data-origin-height=&quot;1020&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;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;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;b&gt;&amp;lt;참고 자료&amp;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;패스트 캠퍼스 강의_OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online&lt;/p&gt;</description>
      <category>파이썬 패키지/이미지 처리</category>
      <category>numpy.ndarray</category>
      <category>파이썬 opencv</category>
      <category>파이썬 opencv 기초</category>
      <category>파이썬 opencv 이미지 불러오기</category>
      <category>파이썬 opencv 이미지 생성</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/197</guid>
      <comments>https://coding-kindergarten.tistory.com/197#entry197comment</comments>
      <pubDate>Tue, 8 Feb 2022 23:52:34 +0900</pubDate>
    </item>
    <item>
      <title>[#Shorts] 데이터 분석은 왜 하며, 산업별로 어떻게 활용될까요?</title>
      <link>https://coding-kindergarten.tistory.com/195</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A506r/btrslW4V2Gw/KwrZnrV9ihMVUZVzYUQh4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A506r/btrslW4V2Gw/KwrZnrV9ihMVUZVzYUQh4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A506r/btrslW4V2Gw/KwrZnrV9ihMVUZVzYUQh4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA506r%2FbtrslW4V2Gw%2FKwrZnrV9ihMVUZVzYUQh4K%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt; 데이터 분석은 왜 하는가&lt;/b&gt;&lt;/h3&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;1) Summary&lt;/b&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2) Insight&lt;/b&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;/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;3) Decision&lt;/b&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt; 데이터 분석은 &lt;b&gt;산업별로&lt;span&gt; &lt;/span&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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) 제조&lt;/b&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;/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;b&gt;2) 금융&lt;/b&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;/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;3) 유통업/e-커머스&lt;/b&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;/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;b&gt;4) 컨텐츠&lt;/b&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;/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;5) 통신&lt;/b&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;/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;6) 교통&lt;/b&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;7) 농업&lt;/b&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt; 어떤 데이터를 분석에 활용하는가&lt;/b&gt;&lt;/h3&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;1) 내부 데이터&lt;/b&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;/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;2) 직접 수집한 데이터&lt;/b&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;/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;3) 외부 데이터&lt;/b&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;/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;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;&amp;lt;참고 자료&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;1. 한번에 끝내는 데이터 분석 툴 초격차 패키지 Online_패스트 캠퍼스 유료 강의&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;2. 빅데이터 활용 사례&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.finereport.com/kr/%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%ED%99%9C%EC%9A%A9-%EC%82%AC%EB%A1%80/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.finereport.com/kr/빅데이터-활용-사례/&lt;/a&gt;&lt;/p&gt;</description>
      <category>파이썬 패키지/데이터분석</category>
      <category>데이터 분석</category>
      <category>데이터 분석 쓰임</category>
      <category>데이터 분석 활용</category>
      <category>데이터 분석 활용방안</category>
      <category>빅데이터</category>
      <category>산업별 데이터 분석</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/195</guid>
      <comments>https://coding-kindergarten.tistory.com/195#entry195comment</comments>
      <pubDate>Thu, 3 Feb 2022 20:03:58 +0900</pubDate>
    </item>
    <item>
      <title>[생각정리] 회사에 대한 생각의 전환</title>
      <link>https://coding-kindergarten.tistory.com/194</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 data-ke-size=&quot;size16&quot;&gt;대학교 4학년 2학기 취준생 시절, 현재의 회사로부터 합격 통보를 받고 너무 기쁜 마음에 기숙사에서 소리질렀던 기억이 난다.&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-filename=&quot;woman-gde11d551b_640.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;426&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kz4A5/btrrunpuqvV/kRSft8b4UEyRCZSrq6ZlV1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kz4A5/btrrunpuqvV/kRSft8b4UEyRCZSrq6ZlV1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kz4A5/btrrunpuqvV/kRSft8b4UEyRCZSrq6ZlV1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fkz4A5%2FbtrrunpuqvV%2FkRSft8b4UEyRCZSrq6ZlV1%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;640&quot; height=&quot;426&quot; data-filename=&quot;woman-gde11d551b_640.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;426&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;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;왜 이렇게 되었을까 곰곰히 생각을 해봤는데 크게 두 가지인 것 같다.&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;1) 반복되는 일상과 익숙함에 직장의 소중함을 잊어버렸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2)&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;뭐 대충 이런 이유로 이런저런 노력을 하고 있는 와중에, 지난주에는 7일동안 정말 아무 노력도 안하고 지내보았다.&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;b&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;흔히들 회사를 '9 to 6의 감옥'이라고도 부르고, 회사원들을 '자본의 노예'라고 폄하하기도 한다.&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-filename=&quot;teddy-g291739f46_640.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;426&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHAeuo/btrrwelu2oU/gXI2v2akADM0ljQbnoO7n1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHAeuo/btrrwelu2oU/gXI2v2akADM0ljQbnoO7n1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHAeuo/btrrwelu2oU/gXI2v2akADM0ljQbnoO7n1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHAeuo%2Fbtrrwelu2oU%2FgXI2v2akADM0ljQbnoO7n1%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;640&quot; height=&quot;426&quot; data-filename=&quot;teddy-g291739f46_640.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;426&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜냐하면 보통사람들은 주어진 시간을 알차게 사용하지 못하기 때문이다. 퇴근 후나 주말에 빈둥빈둥거리며 TV나 유튜브 영상을 끝없이 보는 스스로의 모습을 떠올려보면 바로 이해가 될 것이다.&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;마치 운동을 하기 싫은데 비싼 돈을 내고 PT를 받는 것 처럼 말이다.&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;&quot;나는 아직 스스로를 컨트롤 하는 능력이 부족하고, 나는 많은 돈을 받으면서 나를 통제할 수 있도록 회사가 도와준다&quot;라고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생각을 전환하고나니깐 &lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&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 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;그리고 무엇보다 내게 주어진 시간을 헛되이 사용하지 않고, 게으름에 정복당하지 않기 위해 노력할 것이다.&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>생각정리</category>
      <category>게으름</category>
      <category>월급의 노예</category>
      <category>직장인</category>
      <category>퇴사</category>
      <category>퇴사 고민</category>
      <category>회사가기 싫다</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/194</guid>
      <comments>https://coding-kindergarten.tistory.com/194#entry194comment</comments>
      <pubDate>Mon, 24 Jan 2022 23:59:30 +0900</pubDate>
    </item>
    <item>
      <title>[파이썬 중급 문법] 리스트를 요소별로 묶어서 새로운 리스트 or 딕셔너리로 만드는 법(ft. zip 함수 사용법)</title>
      <link>https://coding-kindergarten.tistory.com/193</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b58jAK/btrqPit7wqf/Eqz8sAgj9wHI6YAiXpzc6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b58jAK/btrqPit7wqf/Eqz8sAgj9wHI6YAiXpzc6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b58jAK/btrqPit7wqf/Eqz8sAgj9wHI6YAiXpzc6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb58jAK%2FbtrqPit7wqf%2FEqz8sAgj9wHI6YAiXpzc6k%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt; 리스트 2개를 요소들끼리 묶어주는 법&lt;/b&gt;&lt;/h3&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;879&quot; data-origin-height=&quot;147&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbsIbQ/btrqMwgjT8e/4dnFyVMBFWo8DkGNzKk6k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbsIbQ/btrqMwgjT8e/4dnFyVMBFWo8DkGNzKk6k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbsIbQ/btrqMwgjT8e/4dnFyVMBFWo8DkGNzKk6k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbsIbQ%2FbtrqMwgjT8e%2F4dnFyVMBFWo8DkGNzKk6k1%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;640&quot; height=&quot;147&quot; data-origin-width=&quot;879&quot; data-origin-height=&quot;147&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;[사과, 1000원], [딸기, 2000원], ... 이런 식으로 말이죠.&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;이럴 때는 파이썬 내장 라이브러리에 포함되어 있는 zip 함수를 사용합니다.&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;사용법은 간단합니다. 리스트명을 zip( ) 안에 순서대로 넣어주면 됩니다.&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;여기서 꼭 알아두실 점은 zip( )만 사용하면 그냥 리스트의 내용물이 분배된 상태로 &lt;b&gt;&lt;span style=&quot;color: #333333;&quot;&gt;zip object&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #333333;&quot;&gt; 로 저장된다는 것입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642334523083&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;product_names = ['사과','딸기','배','포도','키위']
product_prices = ['1000원','2000원','3000원','4000원','5000원']

zip_obj = zip(product_names, product_prices)&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;실제로 zip_obj를 print 함수로 출력해보면 &lt;span style=&quot;color: #333333;&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&amp;lt;zip object at 0x0000019014B3A3C0&amp;gt;&lt;/span&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;우리는 이 zip_obj를 리스트로 만들어 줄 수도 있고, 딕셔너리로도 만들어 줄 수 있습니다.&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;pre id=&quot;code_1642336468789&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;list(zip_obj)
&amp;gt;&amp;gt;&amp;gt; [('사과', '1000원'), ('딸기', '2000원'), ('배', '3000원'), ('포도', '4000원'), ('키위', '5000원')]

dict(zip_obj)
&amp;gt;&amp;gt;&amp;gt; {'사과': '1000원', '딸기': '2000원', '배': '3000원', '포도': '4000원', '키위': '5000원'}&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;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;&lt;b&gt;&amp;lt;여기서 잠깐&amp;gt;&lt;/b&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;저도 글을 작성하면서 알게된 점은, zip_obj를 한 번 사용하면 해당 주소에 들어있는 값이 사라진다는 것입니다.&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;그래서 위와 같이 zip_obj로 만들고, list나 dict로 만들어주는 것보다는 아래와 같이 한번에 코딩해주는 것이 좋겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642336621861&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;list_zip = list(zip(product_names, product_prices))

dict_zip = dict(zip(product_names, product_prices))&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt; &lt;b&gt;리스트 3개 이상을 요소들끼리 묶어주는 법&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번엔 리스트 3개 이상을 묶어주는 방법을 알아보겠습니다. 똑같이 적용하면 되지 뭐가 문제냐고 생각하실 수 있는데요.&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;왜냐하면 딕셔너리는 Key: Value와 같이 단 2개씩만 묶어줄 수 있기 때문입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1642337286020&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;딕셔너리 기본 형태 = {Key1:Value1, Key2:Value2, ...}

dic = {'name':'손생', 'age':'31'}&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;그러면 어떻게 해줘야할까요?&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;span style=&quot;background-color: #ffffff;&quot;&gt;정답은 리스트 하나를 Key로 사용하고, 나머지 리스트들을 묶어서 Value로 사용하는 것입니다.&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;Key는 중복을 허용하지 않으므로, 중복되지 않을만한 제품 링크 주소를 Key로 사용해줍시다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;895&quot; data-origin-height=&quot;267&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LKqyk/btrqRTgRk3M/OQkvTLLALXXVLYfpKElXh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LKqyk/btrqRTgRk3M/OQkvTLLALXXVLYfpKElXh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LKqyk/btrqRTgRk3M/OQkvTLLALXXVLYfpKElXh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLKqyk%2FbtrqRTgRk3M%2FOQkvTLLALXXVLYfpKElXh0%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;640&quot; height=&quot;267&quot; data-origin-width=&quot;895&quot; data-origin-height=&quot;267&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 식으로 묶어주시면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1642341465340&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;product_links = ['링크1','링크2','링크3','링크4','링크 5']
product_prices = ['1000원','2000원','3000원','4000원','5000원']
product_names = ['사과','딸기','배','포도','키위']

dict_product = dict(zip(product_links, zip(product_prices, product_names)))&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;&lt;b&gt;&amp;lt;dict_product 출력 결과&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1642341542631&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{'링크1': ('1000원', '사과'),
 '링크2': ('2000원', '딸기'),
 '링크3': ('3000원', '배'),
 '링크4': ('4000원', '포도'),
 '링크 5': ('5000원', '키위')}&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt;&lt;span&gt; 만들어진 딕셔너리 사용 방법&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&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;pre id=&quot;code_1642342619696&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 제품 링크
key

# 제품 이름
dict_product[key][0]

# 제품 가격
dict_product[key][1]&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;4.&lt;/span&gt; 딕셔너리 응용 방법&lt;/b&gt;&lt;/h3&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&gt;&lt;span&gt;아래의 코드는 특정 스마트스토어에서 새로 업로드 되는 제품만 텔레그램으로 전송받고자 했을 때 사용했던 코드입니다. &lt;/span&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;span&gt;&lt;span&gt;key에 저장된 제품 링크를 비교해서 새제품의 key : value만 필터링하여 저장 및 사용하기 위해서 딕셔너리를 사용하였죠. (글을 작성하면서 굳이 딕셔너리가 아니어도 zip 함수로 리스트를 만들고 인덱싱을 잘해주면 되겠다는걸 깨달았지만 그냥 넘어가도록 하겠습니다ㅎㅎ..)&lt;/span&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;span&gt;&lt;span&gt;위에서 만들었던 dict_product를 아래와 같이 딕셔너리 컴프리헨션과 결합하여 사용할 수 있답니다. &lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;&lt;b&gt;딕셔너리 컴프리헨션&lt;/b&gt;&lt;/span&gt;은 리스트 컴프리헨션을 알고계시다면 아주 쉽게 이해하실 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642341778217&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;new_products = {key:value for key, value in dict_product.items() if key not in old_products}&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;여기서 new_products에 저장된 값들은 for문을 이용해서 아래와 같이 가져올 수 있습니다.&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;&amp;lt;실제 응용 코드&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1642342319546&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    # 새로운 메시지가 있으면 링크 전송
    if new_products:
        for key in new_products:
            bot.sendMessage(chat_id=chat_id,
                            text= new_products[key][0] + 
                            '\n\n' + '가격:' + new_products[key][1] + '원' + 
                            '\n\n' + key)&lt;/code&gt;&lt;/pre&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;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>파이썬 기초/중급 문법</category>
      <category>dict zip</category>
      <category>dictionary comprehension python</category>
      <category>list to dict</category>
      <category>python zip</category>
      <category>python zip 3개</category>
      <category>python zip dict</category>
      <category>zip 3개</category>
      <category>딕셔너리 컴프리헨션</category>
      <category>리스트 딕셔너리 변환</category>
      <category>파이썬 딕셔너리</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/193</guid>
      <comments>https://coding-kindergarten.tistory.com/193#entry193comment</comments>
      <pubDate>Sun, 16 Jan 2022 23:25:50 +0900</pubDate>
    </item>
    <item>
      <title>[파이썬 프로젝트] 특정 스마트스토어의 최신제품 실시간 크롤링 및 텔레그램 전송</title>
      <link>https://coding-kindergarten.tistory.com/192</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석, 머신러닝&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3j3LH/btrqQfxa9tQ/yR7XHNBn5zehFr3aPHx2Q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3j3LH/btrqQfxa9tQ/yR7XHNBn5zehFr3aPHx2Q0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3j3LH/btrqQfxa9tQ/yR7XHNBn5zehFr3aPHx2Q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3j3LH%2FbtrqQfxa9tQ%2FyR7XHNBn5zehFr3aPHx2Q0%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;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;아래의 프로젝트와 비슷했지만, 링크와 제품명, 가격을 묶어주고 전송해줘야해서 dictionary 문법을 사용해보았습니다.&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;&lt;a href=&quot;https://coding-kindergarten.tistory.com/37&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2021.04.05 - [파이썬 패키지/텔레그램(Telegram)] - [Python/Telegram] 원하는 주제의 네이버 뉴스 텔레그램으로 5분마다 전송 받기&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;/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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;lt;전체 코드&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1642258107273&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#step1.라이브러리 불러오기
import requests
from bs4 import BeautifulSoup as bs
import telegram
import schedule
import time

#step2.새로운 네이버 뉴스 기사 링크를 받아오는 함수
def get_new_products(old_products={}):
    
    product_links = []
    product_prices = []
    product_names = []
    
    # step3.for문을 이용해서 원하는 페이지에 접근, 정보 추출 후 리스트에 담기
    for page_num in range(3): #여기서는 3번째 페이지까지만 크롤링 하도록 설정
        # range를 이용하면 0부터 인덱스가 시작되므로 page_num에 1을 더해준 url을 이용
        url = f'https://smartstore.naver.com/compuzone/category/ALL?st=RECENT&amp;amp;free=false&amp;amp;dt=IMAGE&amp;amp;page={page_num+1}&amp;amp;size=40'
        
        # html 정보 받아와서 파싱
        response = requests.get(url)
        soup = bs(response.text , 'html.parser')

        # css selector로 페이지 내의 원하는 정보 가져오기
        # html_product_links = soup.select('a._3BkKgDHq3l.N=a:lst.product.linkAnchor') --&amp;gt; 잘 작동하지 않음
        html_name = soup.select('strong.QNNliuiAk3')
        html_price = soup.select('span.nIAdxeTzhx')
        html_product_links = soup.select('li.-qHwcFXhj0 &amp;gt; a')
        

        # 제품 이름 추출해서 리스트에 저장
        for i in html_name:
            product_names.append(i.get_text())

        # 제품 가격 추출해서 리스트에 저장
        for i in html_price:
            product_prices.append(i.get_text())

        # 제품 링크 추출해서 리스트에 저장
        for i in html_product_links:
            product_links.append('https://smartstore.naver.com' + i.attrs['href'])

    # 제품 링크를 key, 제품이름과 가격을 value로 dictonary 만듦
    dict_product = dict(zip(product_links, zip(product_names, product_prices)))

    # 기존의 링크와 신규 링크를 비교해서 새로운 링크만 저장
    new_products = {key:info  for key, info in dict_product.items() if key not in old_products}

    return new_products


#step3.새로운 네이버 뉴스 기사가 있을 때 텔레그램으로 전송하는 함수
def send_products():
    
    # 함수 내에서 처리된 리스트를 함수 외부에서 참조하기 위함
    global old_products
    
    # 위에서 정의했던 함수 실행
    new_products = get_new_products(old_products)
    
    # 새로운 메시지가 있으면 링크 전송
    if new_products:
        for key in new_products:
            bot.sendMessage(chat_id=chat_id,
                            text= new_products[key][0] + 
                            '\n\n' + '가격:' + new_products[key][1] + '원' + 
                            '\n\n' + key)
            
    else:
        # bot.sendMessage(chat_id=chat_id, text=&quot;새로운 제품이 없습니다.&quot;)  --&amp;gt; 잘 실행되는지 확인하고 싶으면 pass 대신 활성화
        pass
    
    # 기존 제품 정보를 계속 축적하기 위함
    old_products.update(new_products)


# 실제 프로그램 구동
if __name__ == '__main__':

    #토큰을 변수에 저장
    bot_token ='자신의 텔레그램 봇 토큰 번호'

    bot = telegram.Bot(token = bot_token)

    # 자신의 봇의 chat_id
    chat_id = '1516137537'
    
    #위에서 얻은 chat id로 bot이 메세지를 보냄.
    bot.sendMessage(chat_id = chat_id, text=&quot;컴퓨존의 새제품 실시간 크롤링이 시작 되었습니다&quot;) 
    
    # #step5.기존에 보냈던 링크를 담아둘 리스트 만들기
    old_products = {}
    
    # 가장 처음 실행 시, 한 번만 old_products에 제품 링크들 저장
    old_products = get_new_products(old_products)

    # 주기적 실행과 관련된 코드 (hours는 시, minutes는 분, seconds는 초)
    job = schedule.every(10).seconds.do(send_products)
    
    while True:
        
        schedule.run_pending()
        time.sleep(1)&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;&lt;b&gt;&amp;lt;실행 결과&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;KakaoTalk_20220115_234131774.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2321&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6dPmy/btrqRSPd32Y/Z0xDzW6qQsoJmEE5U12aAK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6dPmy/btrqRSPd32Y/Z0xDzW6qQsoJmEE5U12aAK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6dPmy/btrqRSPd32Y/Z0xDzW6qQsoJmEE5U12aAK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6dPmy%2FbtrqRSPd32Y%2FZ0xDzW6qQsoJmEE5U12aAK%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;400&quot; height=&quot;2321&quot; data-filename=&quot;KakaoTalk_20220115_234131774.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2321&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>파이썬 프로젝트</category>
      <category>스마트스토어 크롤링</category>
      <category>텔레그램 파이썬</category>
      <category>파이썬 스마트스토어</category>
      <category>파이썬 텔레그램</category>
      <category>파이썬 프로젝트</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/192</guid>
      <comments>https://coding-kindergarten.tistory.com/192#entry192comment</comments>
      <pubDate>Sat, 15 Jan 2022 23:57:48 +0900</pubDate>
    </item>
    <item>
      <title>[Python/OpenCV] 파이썬으로 컴퓨터 비전 시작하기 1편. OpenCV 설치 및 사진 불러오기</title>
      <link>https://coding-kindergarten.tistory.com/191</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSDdoK/btrqFnv8CfY/IFlwSB05WEmBZG1Q5eujL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSDdoK/btrqFnv8CfY/IFlwSB05WEmBZG1Q5eujL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSDdoK/btrqFnv8CfY/IFlwSB05WEmBZG1Q5eujL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSDdoK%2FbtrqFnv8CfY%2FIFlwSB05WEmBZG1Q5eujL0%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;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;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt; 컴퓨터 비전 기초 of 기초&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴퓨터 비전에 대해서 모두 다루기엔 너무 방대한 학문이기 때문에, OpenCV를 다루기 위해서 필요한 지극히 기초적인 내용만 다루겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추후에 OpenCV를 다루면서 필요한 이론이 있으면 그때 그때 추가적으로 공부하도록 하겠습니다.&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;&lt;b&gt;&lt;span&gt;1) 컴퓨터 비전&lt;/span&gt;&lt;span&gt;(Computer vision)이란?&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;bull; &lt;/span&gt;&lt;span&gt;컴퓨터를 이용하여 정지영상 또는 동영상으로부터 의미있는 정보를 추출하는 &lt;/span&gt;&lt;span&gt;방법을 연구하는 학문&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&amp;bull; &lt;/span&gt;&lt;span&gt;즉&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;사람이 눈으로 사물을 보고 인지하는 작업을 컴퓨터가 수행 &lt;/span&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;2) 영상&lt;/span&gt;&lt;span&gt;(image)&lt;/span&gt;&lt;span&gt;이란&lt;/span&gt;&lt;span&gt;?&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;bull; &lt;/span&gt;&lt;span&gt;픽셀&lt;/span&gt;&lt;span&gt;(pixel)&lt;/span&gt;&lt;span&gt;이 바둑판 모양의 격자에 나열되어 있는 형태 &lt;/span&gt;&lt;span&gt;(2&lt;/span&gt;&lt;span&gt;차원행렬&lt;/span&gt;&lt;span&gt;) &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;bull; &lt;/span&gt;&lt;span&gt;픽셀&lt;/span&gt;&lt;span&gt;: &lt;/span&gt;&lt;span&gt;영상의 기본 단위&lt;/span&gt;&lt;span&gt;, picture element, &lt;/span&gt;&lt;span&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;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;3) 그레이스케일(grayscale) 영상&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-13 오후 11.22.15.png&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;556&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCUwDY/btrqHEw1w7T/bEouKYqAZkGzEBX5U1FuKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCUwDY/btrqHEw1w7T/bEouKYqAZkGzEBX5U1FuKK/img.png&quot; data-alt=&quot;그레이스케일 영상&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCUwDY/btrqHEw1w7T/bEouKYqAZkGzEBX5U1FuKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCUwDY%2FbtrqHEw1w7T%2FbEouKYqAZkGzEBX5U1FuKK%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;400&quot; height=&quot;264&quot; data-filename=&quot;스크린샷 2022-01-13 오후 11.22.15.png&quot; data-origin-width=&quot;844&quot; data-origin-height=&quot;556&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그레이스케일 영상&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-13 오후 10.46.08.png&quot; data-origin-width=&quot;1124&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Or6gP/btrqFjgjIFx/kWs8pTbQLinYsUs2kaVIHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Or6gP/btrqFjgjIFx/kWs8pTbQLinYsUs2kaVIHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Or6gP/btrqFjgjIFx/kWs8pTbQLinYsUs2kaVIHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOr6gP%2FbtrqFjgjIFx%2FkWs8pTbQLinYsUs2kaVIHK%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;500&quot; height=&quot;110&quot; data-filename=&quot;스크린샷 2022-01-13 오후 10.46.08.png&quot; data-origin-width=&quot;1124&quot; data-origin-height=&quot;248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;흑백 사진이 바로 그레이스케일 영상입니다. 색상 정보(R,G,B) 없이 &lt;/span&gt;&lt;span&gt;오직 밝기 정보만 가지고 있는 영상이죠. &lt;/span&gt;&lt;span&gt;참고로 컴퓨터 비전에서는 사진도 영상이라고 부른답니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;그레이스케일 영상은 픽셀 하나를 &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;0~255 &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;범위의 정수로 표현합니다. (0이 검정, 255가 흰색)&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;&lt;/span&gt;&lt;b&gt;4) 트루컬러(truecolor) 영상&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-13 오후 11.24.07.png&quot; data-origin-width=&quot;840&quot; data-origin-height=&quot;560&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brdpWL/btrqBeNfTg5/mOAoObGPV9bmSNRf5CiF11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brdpWL/btrqBeNfTg5/mOAoObGPV9bmSNRf5CiF11/img.png&quot; data-alt=&quot;트루컬러 영상&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brdpWL/btrqBeNfTg5/mOAoObGPV9bmSNRf5CiF11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrdpWL%2FbtrqBeNfTg5%2FmOAoObGPV9bmSNRf5CiF11%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;400&quot; height=&quot;267&quot; data-filename=&quot;스크린샷 2022-01-13 오후 11.24.07.png&quot; data-origin-width=&quot;840&quot; data-origin-height=&quot;560&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;트루컬러 영상&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-13 오후 10.47.55.png&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;612&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VH6xe/btrqCTvqSJm/V2tKosJqRHNRbIUXppSTck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VH6xe/btrqCTvqSJm/V2tKosJqRHNRbIUXppSTck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VH6xe/btrqCTvqSJm/V2tKosJqRHNRbIUXppSTck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVH6xe%2FbtrqCTvqSJm%2FV2tKosJqRHNRbIUXppSTck%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;400&quot; height=&quot;400&quot; data-filename=&quot;스크린샷 2022-01-13 오후 10.47.55.png&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;612&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;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;일반적인 컬러 사진으로 R, G, B &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;색 성분의 크기를 각각 &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;0 ~ 255 &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;범위의 &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; letter-spacing: 0px;&quot;&gt;정수로 표현한 영상입니다&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt; OpenCV 기초&lt;/b&gt;&lt;/h3&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;1) 설치하기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1642081936625&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 기본 모듈 패키지
pip install opencv-python

# 전체 패키지(주 모듈과 contrib/추가 모듈 모두 포함)
pip install opencv-contrib-python&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;&lt;b&gt;2) 라이브러리 불러오기&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1642082480108&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import cv2&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;&lt;b&gt;3) 사진 불러오기&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;cv2.imread( ) 함수는 인자를 2개 받는데, 첫번째는 가져오고자 하는 파일의 경로, 두번째는 파일을 어떤 컬러 옵션으로 가져올 것인지에 대한 내용입니다. 이때, 이미지(img)는 numpy.ndarray 형식으로 저장됩니다.&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;pre id=&quot;code_1642082565198&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;img = cv2.imread('파일명.확장자', cv2.IMREAD_COLOR)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;옵션&amp;gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cv2.IMREAD_COLOR (기본값)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cv2.IMREAD_GRAYSCALE&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cv2.IMREAD_UNCHANGED&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;&lt;b&gt;4) 사진 출력하기&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;위에서 사진을 불러온 것은 단지 img라는 이름의 변수에 저장해둔 상태입니다. 사진을 창에 띄워서 출력하기 위해서는 cv.imshow( ) 함수를 사용해줍니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642083103537&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cv2.imshow('출력할 창 이름', img)&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;좀 더 제대로 하면 미리 창을 만들어주고, 창 옵션도 설정하고 해줄 수 있지만 생략하도록 하겠습니다. 안해줘도 출력은 되고 처음부터 많은 걸 배우면 혼란스럽기만 하니깐요.&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;5) 키보드 입력 대기&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;위에서 사진을 출력하면 순식간에 사진이 떴다가 사라집니다. 그래서 키보드 입력이 들어올 때 까지 사진을 띄워놓을 수 있도록 cv2.waitKey( ) 함수를 사용해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642084661288&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;cv2.waitKey()&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;함수의 인자로는 밀리세컨드(ms)가 들어가는데, 해당 시간동안 기다려 주겠다는 의미이며, 미입력시 무한히 기다립니다.&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;pre id=&quot;code_1642084725002&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 27(ESC), 13(ENTER), '알파벳'도 가능
while True:
    if cv2.waitKey() == ord(27):
        break&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;&lt;b&gt;6) 창 닫기&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;위에서 키를 누른 후, 창이 닫히는 것이 목적이라면 아래의 코드를 넣어주어야 합니다.&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;pre id=&quot;code_1642085263217&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 창을 모두 닫고 싶을 때
cv2.destroyAllWindows()

# 원하는 창만 닫고 싶을 때
cv2.destroyWindow('특정 창 이름')&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;&lt;b&gt;&amp;lt;전체 코드&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1642086589299&quot; class=&quot;smali&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import cv2

img = cv2.imread('ch01/cat.bmp', cv2.IMREAD_GRAYSCALE)

cv2.imshow('image', img)

cv2.waitKey()

cv2.destroyAllWindows()&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;오늘 준비한 내용은 여기까지입니다.&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;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;b&gt;&amp;lt;참고 자료&amp;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;패스트 캠퍼스 강의_OpenCV를 활용한 컴퓨터비전과 딥러닝 올인원 패키지 Online&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>파이썬 패키지/이미지 처리</category>
      <category>opencv</category>
      <category>opencv python</category>
      <category>OpenCV 설치</category>
      <category>Python OpenCV</category>
      <category>파이썬 영상처리</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/191</guid>
      <comments>https://coding-kindergarten.tistory.com/191#entry191comment</comments>
      <pubDate>Thu, 13 Jan 2022 23:57:58 +0900</pubDate>
    </item>
    <item>
      <title>[파이썬 중급 문법] for 문 안에서 리스트 내포를 사용할 때 주의할 점</title>
      <link>https://coding-kindergarten.tistory.com/190</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SJjKT/btrqxSJQlZp/6ku8DiiBOSDbyAqAwd2uok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SJjKT/btrqxSJQlZp/6ku8DiiBOSDbyAqAwd2uok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SJjKT/btrqxSJQlZp/6ku8DiiBOSDbyAqAwd2uok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSJjKT%2FbtrqxSJQlZp%2F6ku8DiiBOSDbyAqAwd2uok%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://coding-kindergarten.tistory.com/165&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2021.11.21 - [파이썬 기초/중급 문법] - [파이썬 중급 문법] 리스트 컴프리헨션 간단 정리&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/u&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;오늘은 for 반복문 안에서 리스트 컴프리헨션을 사용할 때 주의할 점에 대해서 말씀드리려 합니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt; 리스트 컴프리헨션을 사용하는 이유&lt;/b&gt;&lt;/h3&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;b&gt;&amp;lt;리스트 컴프리헨션을 사용하지 않은 코드&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641995188908&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;new_contents=[]

for content in contents:
    if content not in old_contents:
        new_contents.append(content)&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;&lt;b&gt;&amp;lt;리스트 컴프리헨션을 사용한 코드&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641995264657&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;new_contents = [content for content in list_contents if content not in old_contents]&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;4줄의 코드가 이렇게 간단해 지니깐 안 쓸 이유가 없겠죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt;&lt;span&gt; for문 안에서 &lt;/span&gt;리스트 컴프리헨션을 사용하지 않은 이유&lt;/b&gt;&lt;/h3&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;span style=&quot;background-color: #ffc1c8;&quot;&gt;for문을 돌 때 마다 리스트가 초기화 되어 버리기 때문&lt;/span&gt;이었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1641994998839&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 제품명을 담을 빈 리스트 선언
product_name = []

# for문을 이용해서 원하는 페이지에 접근, 정보 추출 후 리스트에 담기
for page_num in range(3):
    url = f'https://smartstore.naver.com/compuzone/category/ALL?st=RECENT&amp;amp;free=false&amp;amp;dt=IMAGE&amp;amp;page={page_num+1}&amp;amp;size=40'
    
    response = requests.get(url)
    soup = bs(response.text , 'html.parser')

    # css selector로 페이지 내의 원하는 정보 가져오기
    html_product = soup.select('strong.QNNliuiAk3')

    # 텍스트만 추출
    for i in html_product:
        product_name.append(i.get_text())&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;무슨 말인지 아직 감이 안오신다면 for문 밖에 product_name 리스트가 밖에서 선언된 것에 주목해보세요.&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;저의 목적은 for문을 돌면서 1, 2, 3페이지에 접속하고, 각 페이지에서 필요한 자료를 리스트에 계속 추가하는 것이었습니다.&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;하지만 아래와 같이 리스트 컴프리헨션 문법을 사용해버리면 product_name이라는 이름의 리스트를 for문 안에서 매번 새로 선언되어서 그 전에 쌓여있던 요소들이 모두 삭제되어 버립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1641996277129&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# for문을 이용해서 원하는 페이지에 접근, 정보 추출 후 리스트에 담기
for page_num in range(3):
    url = f'https://smartstore.naver.com/compuzone/category/ALL?st=RECENT&amp;amp;free=false&amp;amp;dt=IMAGE&amp;amp;page={page_num+1}&amp;amp;size=40'
    
    response = requests.get(url)
    soup = bs(response.text , 'html.parser')

    # css selector로 페이지 내의 원하는 정보 가져오기
    html_product = soup.select('strong.QNNliuiAk3')
	
    # 리스트 컴프리헨션 사용
    product_name = [i.get_text() for i in html_product]&lt;/code&gt;&lt;/pre&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;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;
&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;</description>
      <category>파이썬 기초/중급 문법</category>
      <category>for문 리스트 컴프리헨션</category>
      <category>리스트 내포</category>
      <category>리스트 컴프리헨션</category>
      <category>코딩유치원</category>
      <category>파이썬 독학</category>
      <category>파이썬 문법</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/190</guid>
      <comments>https://coding-kindergarten.tistory.com/190#entry190comment</comments>
      <pubDate>Wed, 12 Jan 2022 23:16:11 +0900</pubDate>
    </item>
    <item>
      <title>[Python/웹 크롤링] 정적 웹크롤링 방식으로 여러 페이지 정보 가져오기</title>
      <link>https://coding-kindergarten.tistory.com/189</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;코딩유치원에서는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;파이썬 기초&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;사무자동화, 웹크롤링, 데이터 분석, 머신러닝&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;다양한 패키지&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;까지 초보자도 알기 쉽도록 내용을 정리해 놓았습니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000000;&quot;&gt;업무는 물론 투자에도 도움이 될만한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;전자공시시스템(DART)&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;텔레그램(Telegram) 관련 패키지&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddo25I/btrqdTnSA3r/w6jSkNNgRr5vVksjvJUUp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddo25I/btrqdTnSA3r/w6jSkNNgRr5vVksjvJUUp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddo25I/btrqdTnSA3r/w6jSkNNgRr5vVksjvJUUp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fddo25I%2FbtrqdTnSA3r%2Fw6jSkNNgRr5vVksjvJUUp1%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;640&quot; height=&quot;640&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;640&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;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;878&quot; data-origin-height=&quot;273&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r2xkZ/btrp6Qe4Kmv/xy2AvqUD7vhtaqkoScKaIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r2xkZ/btrp6Qe4Kmv/xy2AvqUD7vhtaqkoScKaIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r2xkZ/btrp6Qe4Kmv/xy2AvqUD7vhtaqkoScKaIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr2xkZ%2Fbtrp6Qe4Kmv%2Fxy2AvqUD7vhtaqkoScKaIK%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;878&quot; height=&quot;273&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;273&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;저는 아래의 글에서 네이버 뉴스 검색 첫페이지의 기사 10개를 주기적으로 확인하고, 새롭게 추가된 기사만을 텔레그램으로 보내주는 프로젝트를 해보았습니다.&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;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://coding-kindergarten.tistory.com/37&quot;&gt;2021.04.05 - [파이썬 패키지/텔레그램(Telegram)] - [Python/Telegram] 원하는 주제의 네이버 뉴스 텔레그램으로 5분마다 전송 받기&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/u&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;해당 프로젝트의 크롤링 방식은 Request와 beautifulsoup을 이용한 정적 크롤링이었죠. 저는 주로 페이지가 변경되는 경우는 selenium 패키지를 이용해서 페이지 번호를 직접 클릭하면서 페이지를 변경했었답니다.&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;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt; 컨셉&lt;/b&gt;&lt;/h3&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;b&gt;1) 원하는 스마트스토어 페이지의 url을 이용해 html을 받아온다&lt;/b&gt;&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;&lt;b&gt;3) 다음 페이지에서 같은 일을 반복한다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4) 원하는만큼 반복하며, 리스트에 계속 정보를 누적한다&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5) 누적된 리스트를 엑셀에 저장한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt; 페이지 변경에 따른 url 변경 규칙 파악&lt;/b&gt;&lt;/h3&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;저는 컴퓨존에서 운영하는 스마트스토어 페이지에서 전체상품 탭을 클릭한 후, 누적판매순으로 출력되는 것을 최신등록순으로 바꾼 후의 페이지를 목표 url로 하였습니다.&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;여기서 페이지 번호를 1, 2, 3 바꿔가며 클릭하면 아래에 표시한 url에서 page=숫자 부분만 변경되는 것을 확인하실 수 있을거예요. 나중에 코딩에 들어가면 이 부분을 &lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;'문자열 포매팅'&lt;/span&gt;과 &lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;'for 반복문'&lt;/span&gt; 개념을 이용해주면 될 것 같네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;제목 없음.png&quot; data-origin-width=&quot;819&quot; data-origin-height=&quot;856&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDxC6H/btrqdSD26dc/eTWKGA9d4DWaU6zXKKZ5p1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDxC6H/btrqdSD26dc/eTWKGA9d4DWaU6zXKKZ5p1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDxC6H/btrqdSD26dc/eTWKGA9d4DWaU6zXKKZ5p1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDxC6H%2FbtrqdSD26dc%2FeTWKGA9d4DWaU6zXKKZ5p1%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;819&quot; height=&quot;856&quot; data-filename=&quot;제목 없음.png&quot; data-origin-width=&quot;819&quot; data-origin-height=&quot;856&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt;&lt;span&gt; 제품명 &amp;amp; 가격정보 html 정보 파악&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;크롬에서 F12를 눌러서 목표로 하는 제품명과 가격정보의 html 정보, 정확히는 CSS Selector 정보를 파악합니다.&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;u&gt;&lt;span style=&quot;color: #0593d3;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #0593d3;&quot; href=&quot;https://coding-kindergarten.tistory.com/26&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2021.03.27 - [파이썬 패키지/웹 크롤링] - [Python/웹 크롤링] 파이썬 웹 크롤링을 위한 속성 HTML, CSS 요약 정리&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/u&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;321&quot; data-origin-height=&quot;297&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zzNdJ/btrqobV72ib/SKkZzJBLAvKqgkaSkjtdiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zzNdJ/btrqobV72ib/SKkZzJBLAvKqgkaSkjtdiK/img.png&quot; data-alt=&quot;제품명의 선택자&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zzNdJ/btrqobV72ib/SKkZzJBLAvKqgkaSkjtdiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzzNdJ%2FbtrqobV72ib%2FSKkZzJBLAvKqgkaSkjtdiK%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;297&quot; data-origin-width=&quot;321&quot; data-origin-height=&quot;297&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;제품명의 선택자&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;324&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rWile/btrqdSRCq54/5Vkb1PaVabUzZ2d7uXmK9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rWile/btrqdSRCq54/5Vkb1PaVabUzZ2d7uXmK9K/img.png&quot; data-alt=&quot;제품가격의 선택자&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rWile/btrqdSRCq54/5Vkb1PaVabUzZ2d7uXmK9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrWile%2FbtrqdSRCq54%2F5Vkb1PaVabUzZ2d7uXmK9K%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;324&quot; height=&quot;300&quot; data-origin-width=&quot;324&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;제품가격의 선택자&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;4.&lt;/span&gt;&lt;span&gt;&lt;span&gt; 전체 코드&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1641824147023&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# step1.라이브러리 불러오기
import requests
from bs4 import BeautifulSoup as bs
import telegram
import time
import pandas as pd

# step2.제품명과 제품가격정보를 담을 빈 리스트 선언
product_name = []
product_price = []

# step3.for문을 이용해서 원하는 페이지에 접근, 정보 추출 후 리스트에 담기
for page_num in range(3):
    # range를 이용하면 0부터 인덱스가 시작되므로 page_num에 1을 더해준 url을 이용
    url = f'https://smartstore.naver.com/compuzone/category/ALL?st=RECENT&amp;amp;free=false&amp;amp;dt=IMAGE&amp;amp;page={page_num+1}&amp;amp;size=40'
    
    # html 정보 받아와서 파싱
    response = requests.get(url)
    soup = bs(response.text , 'html.parser')

    # css selector로 페이지 내의 원하는 정보 가져오기
    html_product = soup.select('strong.QNNliuiAk3')
    html_price = soup.select('span.nIAdxeTzhx')

    # 텍스트만 추출
    for i in html_product:
        product_name.append(i.get_text())
        
    for i in html_price:
        product_price.append(i.get_text())

# step4.zip 모듈을 이용해서 list를 묶어주기        
list_sum = list(zip(product_name, product_price))


# step5.데이터프레임의 첫행에 들어갈 컬럼명
col = ['제품명','가격']

# step6.pandas 데이터 프레임 형태로 가공
df = pd.DataFrame(list_sum, columns=col)

# step7.엑셀에 저장
df.to_excel('컴퓨존 제품 목록.xlsx')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;5.&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;실행 결과&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&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&gt;&lt;span&gt;한 페이지에 40개의 품목이 있으니, 정확히 3개의 페이지에서 모든 제품명과 가격 정보를 크롤링해서 엑셀로 저장한 것을 확인할 수 있습니다.&lt;/span&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 alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Animation2.gif&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;947&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ca4ImI/btrqd3ruP3K/xuh2JESfaMrz5CtK79GkHk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ca4ImI/btrqd3ruP3K/xuh2JESfaMrz5CtK79GkHk/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ca4ImI/btrqd3ruP3K/xuh2JESfaMrz5CtK79GkHk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/ca4ImI/btrqd3ruP3K/xuh2JESfaMrz5CtK79GkHk/img.gif&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;1095&quot; height=&quot;947&quot; data-filename=&quot;Animation2.gif&quot; data-origin-width=&quot;1095&quot; data-origin-height=&quot;947&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;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;/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;</description>
      <category>파이썬 패키지/웹 크롤링</category>
      <category>f 문자열 포매팅 for문</category>
      <category>스마트스토어 웹크롤링</category>
      <category>여러페이지</category>
      <category>여러페이지 크롤링</category>
      <category>파이썬 웹크롤링</category>
      <category>파이썬 웹크롤링 엑셀</category>
      <category>판다스 데이터프레임 엑셀 저장</category>
      <category>판다스 리스트 데이터프레임</category>
      <category>판다스 리스트 저장</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/189</guid>
      <comments>https://coding-kindergarten.tistory.com/189#entry189comment</comments>
      <pubDate>Mon, 10 Jan 2022 23:24:54 +0900</pubDate>
    </item>
    <item>
      <title>[블로그 수익] 2021년 코딩 블로그 - 방문수&amp;amp;에드센스 수익 공개</title>
      <link>https://coding-kindergarten.tistory.com/188</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 data-ke-size=&quot;size16&quot;&gt;오늘은 작년 3월 1일에 시작한 '코딩유치원'의 2021년 한해동안의 방문횟수와 수익의 증가 추이를 기록하기 위해 글을 써보려 합니다.&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;그 전에 잠시 넋두리를 해보자면, 2019년 10월쯤 직장동료들과 '생존스터디'라는 이름으로 시작한 파이썬 공부가 이 블로그의 뿌리였던 것 같습니다. 그때까지만 해도 제가 이렇게까지 파이썬을 오래 공부하게 될 줄은 몰랐는데 신기하네요.&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;지난 번에 블로그를 시작하고 5개월차 방문횟수와 광고수익을 공개했었는데요. 평일 기준 4~500회 나온다고 좋아했던 기억이 나네요.&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;u&gt;&lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;&lt;a style=&quot;color: #ef5369;&quot; href=&quot;https://coding-kindergarten.tistory.com/121&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2021.08.08 - [블로그 운영 팁] - [블로그 수익] 5개월차 코딩 블로그 - 방문수&amp;amp;에드센스 수익 공개&lt;/a&gt;&lt;/b&gt;&lt;/span&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2021-08-08 오후 11.29.39.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;543&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0EtZH/btrp6xeRy5H/XoOekajWQG0Qgvkzedjfvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0EtZH/btrp6xeRy5H/XoOekajWQG0Qgvkzedjfvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0EtZH/btrp6xeRy5H/XoOekajWQG0Qgvkzedjfvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0EtZH%2Fbtrp6xeRy5H%2FXoOekajWQG0Qgvkzedjfvk%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;640&quot; height=&quot;543&quot; data-filename=&quot;스크린샷 2021-08-08 오후 11.29.39.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;543&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;10개월차인 지금은 평일기준 1400~1500회 정도 나오고 있습니다. 이 자리를 빌려서, 코딩유치원에 방문해주신 모든분들께 감사드리고, 많은 도움이 되었길 바래봅니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-07 오후 11.55.13.png&quot; data-origin-width=&quot;1722&quot; data-origin-height=&quot;738&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmBQfN/btrp5zxvHyj/5YfATYkonZtx0ZXWftmeSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmBQfN/btrp5zxvHyj/5YfATYkonZtx0ZXWftmeSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmBQfN/btrp5zxvHyj/5YfATYkonZtx0ZXWftmeSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmBQfN%2Fbtrp5zxvHyj%2F5YfATYkonZtx0ZXWftmeSk%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;640&quot; height=&quot;274&quot; data-filename=&quot;스크린샷 2022-01-07 오후 11.55.13.png&quot; data-origin-width=&quot;1722&quot; data-origin-height=&quot;738&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;1.&lt;/span&gt; 티스토리 방문수 증가 추세&lt;/b&gt;&lt;/h3&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-07 오후 11.44.48.png&quot; data-origin-width=&quot;1624&quot; data-origin-height=&quot;594&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brKFtR/btrp18Ut525/0bZIUmgKZLiu7h5PaLZ4SK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brKFtR/btrp18Ut525/0bZIUmgKZLiu7h5PaLZ4SK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brKFtR/btrp18Ut525/0bZIUmgKZLiu7h5PaLZ4SK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrKFtR%2Fbtrp18Ut525%2F0bZIUmgKZLiu7h5PaLZ4SK%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;640&quot; height=&quot;594&quot; data-filename=&quot;스크린샷 2022-01-07 오후 11.44.48.png&quot; data-origin-width=&quot;1624&quot; data-origin-height=&quot;594&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;3월: 516회&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;4월: 1,262회&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;5월: 2,132회&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;6월: 3,750회&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;7월: 9,699회&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;8월: 13,611회&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt; 9월: 16,370회&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;10월: 20,526회&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;11월: 24,399회&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;12월: 31,035회&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;2.&lt;/span&gt; 구글 노출&amp;amp;클릭수&lt;span&gt;&amp;nbsp; (구글 서치 콘솔)&lt;/span&gt;&lt;/b&gt;&lt;/h3&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&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-07 오후 11.56.54.png&quot; data-origin-width=&quot;2142&quot; data-origin-height=&quot;814&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJ5WDy/btrp2DHchOI/QubkcJMZlJqkrqfcKjPpkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJ5WDy/btrp2DHchOI/QubkcJMZlJqkrqfcKjPpkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJ5WDy/btrp2DHchOI/QubkcJMZlJqkrqfcKjPpkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJ5WDy%2Fbtrp2DHchOI%2FQubkcJMZlJqkrqfcKjPpkK%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;640&quot; height=&quot;814&quot; data-filename=&quot;스크린샷 2022-01-07 오후 11.56.54.png&quot; data-origin-width=&quot;2142&quot; data-origin-height=&quot;814&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;3.&lt;/span&gt; 에드센스 수익&lt;/b&gt;&lt;/h3&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;지금까지 146달러 정도를 광고 수입으로 받았고, 월마다 광고 수익이 상승하고 있는 것을 볼 수 있습니다. 지난달에는 6만원정도를 벌었네요!ㅎㅎ&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-filename=&quot;스크린샷 2022-01-07 오후 11.59.16.png&quot; data-origin-width=&quot;1776&quot; data-origin-height=&quot;1018&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cim3Iw/btrp6xeTHHS/5zOmzsb4AClfv77cyoZS5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cim3Iw/btrp6xeTHHS/5zOmzsb4AClfv77cyoZS5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cim3Iw/btrp6xeTHHS/5zOmzsb4AClfv77cyoZS5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcim3Iw%2Fbtrp6xeTHHS%2F5zOmzsb4AClfv77cyoZS5K%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;640&quot; height=&quot;1018&quot; data-filename=&quot;스크린샷 2022-01-07 오후 11.59.16.png&quot; data-origin-width=&quot;1776&quot; data-origin-height=&quot;1018&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;4.&lt;/span&gt;&lt;span&gt;&amp;nbsp;앞으로의 블로그 운영 계획&lt;/span&gt;&lt;/b&gt;&lt;/h3&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&gt;올해는 1~2월까지 위키독스에 작성중인 '사장님 몰래 파이썬 업무자동화'를 마무리하기 위해서 실제 업무에 도움이 되는 업무자동화 프로젝트를 하고, 포스팅 할 예정입니다.&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;span&gt;그리고 3월부터는 데이터 분석과 머신러닝/딥러닝 위주로 공부하고, kaggle의 데이터셋이나 공공데이터포털 데이터셋을 이용해서 데이터분석 프로젝트를 다루어 볼 것입니다.&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;span&gt;동시에 OpenCV도 공부해서 이미지 딥러닝쪽도 공부해서 현업에도 적용해보는 것이 저의 큰 꿈인데 현실이 될 수 있도록 열심히 공부하고 포스팅하도록 하겠습니다.&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 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>블로그 운영 팁</category>
      <author>손생</author>
      <guid isPermaLink="true">https://coding-kindergarten.tistory.com/188</guid>
      <comments>https://coding-kindergarten.tistory.com/188#entry188comment</comments>
      <pubDate>Fri, 7 Jan 2022 23:57:57 +0900</pubDate>
    </item>
  </channel>
</rss>