<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>머신러닝 딥러닝 개발</title>
    <link>https://dream-be-develop.tistory.com/</link>
    <description>#현업 #데이터엔지니어</description>
    <language>ko</language>
    <pubDate>Sun, 19 Jul 2026 21:05:52 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Kim MyeongOk</managingEditor>
    <item>
      <title>내 PC 사양에 맞는 vLLM 모델은?</title>
      <link>https://dream-be-develop.tistory.com/70</link>
      <description>&lt;div data-sfc-cb=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cp=&quot;&quot;&gt;제공해주신 두 영상의 내용을 바탕으로 &lt;span data-sfc-cb=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cp=&quot;&quot;&gt;LLMFit&lt;/span&gt;과 &lt;span data-sfc-cb=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cp=&quot;&quot;&gt;whichllm&lt;/span&gt;의 구체적인 사용법과 핵심 명령어(플래그)를 정리해 드립니다.&lt;/div&gt;
&lt;div data-sfc-cb=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cp=&quot;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;두 도구 모두 설치 및 구동을 위해서는 각&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;GitHub 저장소(AlexsJones/llmfit, Andyyyy64/whichllm)의 가이드를 참고하여 CLI 환경에서 먼저 설치 명령어를 실행해야 합니다.&lt;/div&gt;
&lt;div data-sfc-cb=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cp=&quot;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;※ 현재 내 터미널 환경(OS, 패키지 매니저 등)에 따라 구체적인 설치 명령어&lt;span style=&quot;text-align: start;&quot;&gt;나&amp;nbsp;&lt;/span&gt;실행 방법이 달라질 수 있으니 참고 바랍니다. &lt;/span&gt;&lt;/div&gt;
&lt;hr data-sfc-cb=&quot;&quot; data-sfc-pl=&quot;||[]&quot; data-sfc-root=&quot;ep&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot; data-ke-size=&quot;size26&quot;&gt;1. LLMFit 사용법  ️&lt;/h2&gt;
&lt;div data-sfc-cb=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cp=&quot;&quot; data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;LLMFit은 화면에 텍스트로 메뉴가 나타나는 &lt;span data-sfc-cb=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cp=&quot;&quot;&gt;TUI 방식&lt;/span&gt;으로, 실행 후 단축키를 눌러 직관적으로 조작합니다 (&lt;a href=&quot;https://www.youtube.com/watch?v=zEms-3jC73o&amp;amp;t=55s&quot; data-sfc-cb=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cp=&quot;&quot;&gt;0:55&lt;/a&gt;).&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;&lt;span data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;컨텍스트 크기 설정&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=zEms-3jC73o&amp;amp;t=170s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;2:50&lt;/a&gt;): 대문자 A를 누른 뒤 Context Cap 메뉴에 원하는 컨텍스트 크기를 입력하고 엔터를 치면 점수가 재계산됩니다 (&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=zEms-3jC73o&amp;amp;t=179s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;2:59&lt;/a&gt;).&lt;/li&gt;
&lt;li data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;&lt;span data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;사용 목적 필터링&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=zEms-3jC73o&amp;amp;t=208s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;3:28&lt;/a&gt;): 대문자 U를 누르면 코딩용, 채팅용 등 목적별 선택창이 뜹니다 (&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=zEms-3jC73o&amp;amp;t=217s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;3:37&lt;/a&gt;). 방향키로 이동해 원하는 목적(예: Coding) 외에 다른 것은 엔터로 해제한 뒤 ESC를 누르면 적용됩니다 (&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=zEms-3jC73o&amp;amp;t=217s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;3:37&lt;/a&gt;).&lt;/li&gt;
&lt;li data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;&lt;span data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;정렬 방식 변경&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=zEms-3jC73o&amp;amp;t=225s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;3:45&lt;/a&gt;): S를 누르면 정렬 기준 컬럼이 변경되며, G를 누르면 오름차순과 내림차순이 전환됩니다 (&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=zEms-3jC73o&amp;amp;t=234s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;3:54&lt;/a&gt;).&lt;/li&gt;
&lt;li data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;&lt;span data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;런타임 및 포맷 필터링&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=zEms-3jC73o&amp;amp;t=244s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;4:04&lt;/a&gt;): 대문자 R을 눌러 사용하는 백엔드 런타임별 호환 모델을 고를 수 있습니다 (&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=zEms-3jC73o&amp;amp;t=244s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;4:04&lt;/a&gt;). (예: Llama.cpp를 골랐다면 A를 눌러 GGUF 포맷만 필터링 가능) (&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=zEms-3jC73o&amp;amp;t=254s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;4:14&lt;/a&gt;).&lt;/li&gt;
&lt;li data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;&lt;span data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;자체 성능 테스트 (Bench)&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=zEms-3jC73o&amp;amp;t=362s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;6:02&lt;/a&gt;): LLMFit의 강력한 유틸리티 기능으로, 추천받은 모델을 내 PC에서 직접 돌려보며 실제 초당 토큰 수(TPS)를 측정하고 예측치와 비교할 수 있습니다 (&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=zEms-3jC73o&amp;amp;t=362s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;6:02&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-sfc-cb=&quot;&quot; data-sfc-pl=&quot;||[]&quot; data-sfc-root=&quot;ep&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-sfc-cb=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cp=&quot;&quot; data-ke-size=&quot;size26&quot;&gt;2. whichllm 사용법  &lt;/h2&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;div data-sfc-cb=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cp=&quot;&quot;&gt;whichllm은 시각적인 메뉴 없이 터미널 창에 직접 명령어와 옵션을 타이핑하는 &lt;span data-sfc-cb=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cp=&quot;&quot;&gt;CLI 방식&lt;/span&gt;입니다 (&lt;a href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&amp;amp;t=158s&quot; data-sfc-cb=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cp=&quot;&quot;&gt;2:38&lt;/a&gt;). 실행 시 &lt;span data-sfc-cb=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cp=&quot;&quot;&gt;5가지 핵심 플래그(옵션)&lt;/span&gt;를 조합하여 사용합니다 (&lt;a href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&amp;amp;t=175s&quot; data-sfc-cb=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cp=&quot;&quot;&gt;2:55&lt;/a&gt;).&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div data-sfc-cb=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cp=&quot;&quot;&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot; data-ke-size=&quot;size26&quot;&gt;  추천 명령어 예시 (코딩용 모델을 찾을 때) (&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&amp;amp;t=183s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;3:03&lt;/a&gt;)&lt;/h2&gt;
&lt;div style=&quot;color: #333333; text-align: start;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;터미널에 아래와 같은 형태로 플래그를 붙여 명령어를 실행합니다 (&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&amp;amp;t=183s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;3:03&lt;/a&gt;).&lt;/div&gt;
&lt;div style=&quot;background-color: #f4f6f7;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;
&lt;pre style=&quot;background-color: #f8f8f8; color: #383a42;&quot;&gt;&lt;code&gt;whichllm --profile coding --context-length 4096 --top 20
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot; data-ke-size=&quot;size26&quot;&gt;  핵심 플래그 5가지 옵션 설명 (&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&amp;amp;t=175s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;2:55&lt;/a&gt;)&lt;/h2&gt;
&lt;div style=&quot;color: #333333; text-align: start;&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;&lt;span data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;--profile&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&amp;amp;t=205s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;3:25&lt;/a&gt;): 전문 분야 및 목적에 따라 모델을 필터링합니다 (예: coding, chat 등) (&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&amp;amp;t=183s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;3:03&lt;/a&gt;).&lt;/li&gt;
&lt;li data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;&lt;span data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;--context-length&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&amp;amp;t=205s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;3:25&lt;/a&gt;): 내가 활용하려는 모델의 최대 컨텍스트 크기를 지정합니다 (&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&amp;amp;t=214s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;3:34&lt;/a&gt;).&lt;/li&gt;
&lt;li data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;&lt;span data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;--speed 또는 --min-speed&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&amp;amp;t=214s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;3:34&lt;/a&gt;): 추론 속도를 기준으로 필터링하며, 숫자로 정할 때는 min-speed를 씁니다 (&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&amp;amp;t=214s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;3:34&lt;/a&gt;).&lt;/li&gt;
&lt;li data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;&lt;span data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;--fit&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&amp;amp;t=222s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;3:42&lt;/a&gt;): 메모리 적합도를 설정합니다 (&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&amp;amp;t=222s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;3:42&lt;/a&gt;). GPU 오프로딩을 하면 안 되는 환경이라면 값으로 GPU를 지정하여 필터링합니다 (&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&amp;amp;t=232s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;3:52&lt;/a&gt;).&lt;/li&gt;
&lt;li data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;&lt;span data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;--evidence&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&amp;amp;t=242s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;4:02&lt;/a&gt;): 공식 벤치마크 출처(LMSYS, LiveBench 등) 기반의 점수만 필터링해서 보고 싶을 때 사용합니다 (&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&amp;amp;t=94s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;1:34&lt;/a&gt;).&lt;/li&gt;
&lt;li data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;&lt;span data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;--top&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&amp;amp;t=287s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;4:47&lt;/a&gt;): 기본 결과는 10개만 나오므로, 더 많은 모델 목록을 보고 싶을 때 개수를 늘려주는 옵션입니다 (&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&amp;amp;t=277s&quot; data-sfc-cp=&quot;&quot; data-sfc-root=&quot;ep&quot; data-sfc-cb=&quot;&quot;&gt;4:37&lt;/a&gt;).&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-sfc-root=&quot;ep&quot; data-sfc-pl=&quot;||[]&quot; data-sfc-cb=&quot;&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ref)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=zEms-3jC73o&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=zEms-3jC73o&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=tA3hfIrTeCI&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=tA3hfIrTeCI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>LLM/vLLM</category>
      <category>LLMFit</category>
      <category>vllm</category>
      <category>whichllm</category>
      <author>Kim MyeongOk</author>
      <guid isPermaLink="true">https://dream-be-develop.tistory.com/70</guid>
      <comments>https://dream-be-develop.tistory.com/70#entry70comment</comments>
      <pubDate>Sun, 12 Jul 2026 19:37:44 +0900</pubDate>
    </item>
    <item>
      <title>대화 진행하기</title>
      <link>https://dream-be-develop.tistory.com/68</link>
      <description>&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;span style=&quot;background-color: #dddddd; font-family: GungSeo, serif; color: #000000;&quot;&gt;session_id&lt;/span&gt;를 활용해서 각 &lt;span style=&quot;color: #000000; background-color: #dddddd; font-family: GungSeo, serif;&quot;&gt;session_id&lt;/span&gt;에 &lt;span style=&quot;font-family: GungSeo, serif;&quot;&gt;body&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;[GitHub]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/Kim-MyeongOk/ollama/pull/4&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/Kim-MyeongOk/ollama/pull/4&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;[결과]&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;337&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTVhOq/dJMcahroxwh/iIIJZwKFKp1w3gWnj0W8p1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTVhOq/dJMcahroxwh/iIIJZwKFKp1w3gWnj0W8p1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTVhOq/dJMcahroxwh/iIIJZwKFKp1w3gWnj0W8p1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTVhOq%2FdJMcahroxwh%2FiIIJZwKFKp1w3gWnj0W8p1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;926&quot; height=&quot;337&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;337&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>LLM</category>
      <category>header</category>
      <category>session_id</category>
      <author>Kim MyeongOk</author>
      <guid isPermaLink="true">https://dream-be-develop.tistory.com/68</guid>
      <comments>https://dream-be-develop.tistory.com/68#entry68comment</comments>
      <pubDate>Tue, 23 Jun 2026 22:14:34 +0900</pubDate>
    </item>
    <item>
      <title>swagger 파일</title>
      <link>https://dream-be-develop.tistory.com/67</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 swagger 파일을 만드는 작업은 FastAPI 에서 &lt;a href=&quot;http://localhost:8000/openapi.json&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://localhost:8000/openapi.json&lt;/a&gt; url 을 통해 얻을 수 있는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;swagger 파일은 3.1.0 인데, 3.0.0 버전의 파일이 필요해서 진행하게 되었습니다.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1782216947080&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;openapi&quot;: &quot;3.1.0&quot;,
  &quot;info&quot;: {
    &quot;title&quot;: &quot;FastAPI&quot;,
    &quot;version&quot;: &quot;0.1.0&quot;
  },
  &quot;paths&quot;: {
    &quot;/v1/chat/completions&quot;: {
      &quot;post&quot;: {
        &quot;summary&quot;: &quot;Chat Completions&quot;,
        &quot;operationId&quot;: &quot;chat_completions_v1_chat_completions_post&quot;,
        &quot;responses&quot;: {
          &quot;200&quot;: {
            &quot;description&quot;: &quot;Successful Response&quot;,
            &quot;content&quot;: {
              &quot;application/json&quot;: {
                &quot;schema&quot;: {

                }
              }
            }
          }
        }
      }
    },
    &quot;/health&quot;: {
      &quot;get&quot;: {
        &quot;summary&quot;: &quot;Health&quot;,
        &quot;operationId&quot;: &quot;health_health_get&quot;,
        &quot;responses&quot;: {
          &quot;200&quot;: {
            &quot;description&quot;: &quot;Successful Response&quot;,
            &quot;content&quot;: {
              &quot;application/json&quot;: {
                &quot;schema&quot;: {

                }
              }
            }
          }
        }
      }
    }
  }
}&lt;/code&gt;&lt;/pre&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[pip 설치]&lt;/p&gt;
&lt;pre id=&quot;code_1782216341247&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install openapi-downgrade
pip install --upgrade prance openapi-spec-validator 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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[swagger 3.1 &amp;rarr; 3.0]&lt;/p&gt;
&lt;pre id=&quot;code_1782216415340&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;openapi_downgrade http://localhost:8000/openapi.json openapi_v3.json&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;/p&gt;
&lt;pre id=&quot;code_1782216597420&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;prance validate openapi_v3.json

-- Processing &quot;openapi_v3.json&quot;...
--  -&amp;gt; Resolving external references.
-- Validates OK as OpenAPI 3.0.3!&lt;/code&gt;&lt;/pre&gt;</description>
      <category>LLM</category>
      <category>openai.json</category>
      <category>swagger</category>
      <author>Kim MyeongOk</author>
      <guid isPermaLink="true">https://dream-be-develop.tistory.com/67</guid>
      <comments>https://dream-be-develop.tistory.com/67#entry67comment</comments>
      <pubDate>Tue, 23 Jun 2026 21:18:12 +0900</pubDate>
    </item>
    <item>
      <title>모델 서빙 초기</title>
      <link>https://dream-be-develop.tistory.com/66</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 ollama &lt;span style=&quot;font-family: GungSeo, serif; background-color: #dddddd; color: #000000;&quot;&gt;qwen3-vl:4b&lt;/span&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;p data-ke-size=&quot;size16&quot;&gt;[GitHub]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/Kim-MyeongOk/ollama&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://github.com/Kim-MyeongOk/ollama&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;[README]&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;[실행방법]&lt;br /&gt;conda 가상환경 만들어서 진행했으며, 실행방법은 2가지 방법이 있습니다.&lt;br /&gt;1. [ *.py 파일&amp;nbsp;&amp;nbsp;] vscode나 pycharm에서 src폴더에 있는 server.py, client.py 각각 실행하면 동작합니다&lt;br /&gt;2. [ *.bat 파일 ] src 상위 폴더에 있는 *.bat 파일에는 해당 가상환경의 경로를 지정해야 사용 가능합니다&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;[가상환경에 대한 pip 설치]&lt;br /&gt;필요한&amp;nbsp;라이브러리는&amp;nbsp;&amp;nbsp;requirments.txt&amp;nbsp;파일로&amp;nbsp;repo에&amp;nbsp;있으니&amp;nbsp;&quot;pip&amp;nbsp;install&amp;nbsp;-r&amp;nbsp;&amp;nbsp;requirments.txt&quot;&amp;nbsp;&amp;nbsp;진행하시면&amp;nbsp;됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p 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;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;run_server.bat&lt;/td&gt;
&lt;td&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1397&quot; data-origin-height=&quot;491&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pVb2l/dJMcai4MWs3/91Zo4CLQl6X8a4pRnjay20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pVb2l/dJMcai4MWs3/91Zo4CLQl6X8a4pRnjay20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pVb2l/dJMcai4MWs3/91Zo4CLQl6X8a4pRnjay20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpVb2l%2FdJMcai4MWs3%2F91Zo4CLQl6X8a4pRnjay20%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1397&quot; height=&quot;491&quot; data-origin-width=&quot;1397&quot; data-origin-height=&quot;491&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;run_client.bat&lt;/td&gt;
&lt;td&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1397&quot; data-origin-height=&quot;710&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3RES6/dJMcaiX1hd8/ABFTfuETENGt3NAW90ZVTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3RES6/dJMcaiX1hd8/ABFTfuETENGt3NAW90ZVTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3RES6/dJMcaiX1hd8/ABFTfuETENGt3NAW90ZVTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3RES6%2FdJMcaiX1hd8%2FABFTfuETENGt3NAW90ZVTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1397&quot; height=&quot;710&quot; data-origin-width=&quot;1397&quot; data-origin-height=&quot;710&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>LLM</category>
      <category>FastAPI</category>
      <category>llm</category>
      <category>ollama</category>
      <category>qwen3-vl:4b</category>
      <author>Kim MyeongOk</author>
      <guid isPermaLink="true">https://dream-be-develop.tistory.com/66</guid>
      <comments>https://dream-be-develop.tistory.com/66#entry66comment</comments>
      <pubDate>Tue, 23 Jun 2026 21:05:04 +0900</pubDate>
    </item>
    <item>
      <title>Annotaion</title>
      <link>https://dream-be-develop.tistory.com/64</link>
      <description>&lt;p style=&quot;color: #000000; text-align: start;&quot; data-depth=&quot;1&quot; data-title=&quot;Annotation 스타일 예시&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-depth=&quot;1&quot; data-title=&quot;Annotation 스타일 예시&quot; data-ke-size=&quot;size16&quot;&gt;PEP8은 파이썬 코드 스타일 가이드라인으로, 코드의 가독성과 일관성을 높이는 데 중점을 둡니다. &lt;span style=&quot;background-color: #ffff00;&quot;&gt;함수 어노테이션 사용은 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;PEP484&lt;/span&gt;&lt;/b&gt;에 명시된 스타일 가이드라인&lt;/span&gt;을 따르는 것이 좋습니다. &lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt; PEP8 에서의 Annotaion 사용법&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PEP8에서는 함수 어노테이션 사용 시 다음과 같은 스타일을 권장합니다:&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;li&gt;-&amp;gt; 기호 앞뒤에는 공백을 하나씩 둡니다.&lt;/li&gt;
&lt;li&gt;기본 인자 값과 어노테이션을 함께 사용하는 경우, = 기호 양쪽에 공백을 둡니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;def munge(input: AnyStr = None): ...
def munge(input: AnyStr, sep: AnyStr = None, limit=1000): ...
&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h1 id=&quot;h1-137c7b030b1acbbf555c32af7dbbc583bb0b2d57bd6161b921aa529c35542b4c&quot; style=&quot;color: #000000; text-align: start;&quot; data-heading=&quot;&quot; data-depth=&quot;1&quot; data-title=&quot;Annotation 스타일 예시&quot;&gt;&lt;b&gt;구글 스타일 가이드&lt;/b&gt;&lt;/h1&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;구글은 &lt;b&gt;파이썬 코드 스타일 가이드에서 &lt;span style=&quot;background-color: #ffff00;&quot;&gt;PEP8을 기반으로 자체 규칙을 추가하여 사용&lt;/span&gt;&lt;/b&gt;하며, 코드의 일관성과 가독성을 높이는 데 중점을 둡니다. &lt;b&gt;&lt;span style=&quot;background-color: #ffff00;&quot;&gt;어노테이션&lt;/span&gt;&lt;/b&gt; 관련 특정 방식에 대한 명확한 언급은 찾기 어렵지만, &lt;span style=&quot;background-color: #ffff00;&quot;&gt;일반적인 코딩 스타일 특징을 통해 접근 방식을 추론&lt;/span&gt;할 수 있습니다.&lt;/blockquote&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;함수, 변수, 속성은 lowercase_underscore 스타일 사용.&lt;/li&gt;
&lt;li&gt;보호 인스턴스 속성은 _leading_underscore (밑줄 하나) 사용.&lt;/li&gt;
&lt;li&gt;비공개 인스턴스 속성은 __double_leading_underscore (밑줄 두 개) 사용.&lt;/li&gt;
&lt;li&gt;클래스와 예외는 CapitalizedWord 스타일 사용.&lt;/li&gt;
&lt;li&gt;모듈 수준 상수는 ALL_CAPS 스타일 사용.&lt;/li&gt;
&lt;li&gt;클래스 인스턴스 메서드는 첫 번째 파라미터 이름을 self로 지정.&lt;/li&gt;
&lt;li&gt;클래스 메서드는 첫 번째 파라미터 이름을 cls로 지정.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;타입 힌트&lt;/b&gt;: 가독성과 유지보수성을 높이기 위해 타입 힌트 사용을 권장하며, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;PEP 484에 정의된 스타일&lt;/b&gt;&lt;/span&gt;을 따릅니다. &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;mypy와 같은 도구를 사용하여 타입 검사를 수행&lt;/b&gt;&lt;/span&gt;합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;공백&lt;/b&gt;: &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;최대 줄 길이는 79자를 넘지 않도록 권장&lt;/b&gt;&lt;/span&gt;하며, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;들여쓰기는 4개의 공백을 사용&lt;/b&gt;&lt;/span&gt;합니다. &lt;u&gt;함수와 클래스는 다른 코드와 빈 줄 두 개로 구분&lt;/u&gt;하고, &lt;u&gt;클래스 내 메서드는 빈 줄 하나로 구분&lt;/u&gt;합니다. &lt;u&gt;변수 할당 시 앞뒤에 공백을 하나만 사용&lt;/u&gt;하고, &lt;u&gt;리스트 인덱스, 함수 호출, 키워드 인수 할당 시 공백을 사용하지 않습니다.&lt;/u&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;주석&lt;/b&gt;: &lt;u&gt;블록 주석은 코드와 동일한 들여쓰기 레벨을 사용&lt;/u&gt;하고 &lt;u&gt;#과 공백 하나로 시작&lt;/u&gt;하며, &lt;u&gt;인라인 주석은 최소 두 개의 공백&lt;/u&gt;으로 구분하고 &lt;u&gt;#과 공백 하나로 시작&lt;/u&gt;합니다.&lt;/li&gt;
&lt;/ul&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;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;u&gt;&lt;b&gt;한 줄로 된 if 문, for, while 루프, except 복합문&lt;/b&gt;.&lt;/u&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;u&gt;if a is not b와 같이 is not을 사용&lt;/u&gt;&lt;/b&gt;합니다.&lt;/li&gt;
&lt;li&gt;&lt;u&gt;&lt;b&gt;빈 리스트나 문자열을 확인할 때&lt;/b&gt; if not somelist와 같이 암시적(implicit)으로 False를 활용&lt;/u&gt;합니다.&lt;/li&gt;
&lt;li&gt;&lt;u&gt;파일 상단에 &lt;b&gt;import 문을 위치&lt;/b&gt;&lt;/u&gt;시키고, &lt;u&gt;표준 라이브러리, 써드파티 라이브러리, 로컬 라이브러리 순으로 그룹화&lt;/u&gt;합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1 id=&quot;h1-137c7b030b1acbbf555c32af7dbbc583bb0b2d57bd6161b921aa529c35542b4c&quot; data-title=&quot;Annotation 스타일 예시&quot; data-depth=&quot;1&quot; data-heading=&quot;&quot;&gt;&lt;b&gt;Annotation 스타일 예시&lt;/b&gt;&lt;/h1&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글 스타일 가이드는 타입 힌트 사용을 권장하며, PEP 484에 정의된 스타일을 따릅니다. 아래는 구글 스타일을 적용한 Annotation 예시 코드입니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;def add(a: int, b: int) -&amp;gt; int:
    &quot;&quot;&quot;두 정수를 더하여 결과를 반환합니다.&quot;&quot;&quot;
    return a + b

class MyClass:
    def __init__(self, name: str, age: int) -&amp;gt; None:
        self.name: str = name
        self.age: int = age

def process_data(data: list[dict[str, int]]) -&amp;gt; dict[str, int]:
    &quot;&quot;&quot;데이터 리스트를 처리하여 결과를 반환합니다.&quot;&quot;&quot;
    results: dict[str, int] = {}
    for item in data:
        for key, value in item.items():
            if key in results:
                results[key] += value
            else:
                results[key] = value
    return results&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h1 id=&quot;h1-51f5ff7f224e266933bbeb1ab16bf557407e9c7c029c8e16e3b86f0ced63fc41&quot; data-title=&quot;추가적인 가이드라인&quot; data-depth=&quot;1&quot; data-heading=&quot;&quot;&gt;&lt;b&gt;추가적인 가이드라인&lt;/b&gt;&lt;/h1&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;b&gt;긍정적 표현&lt;/b&gt;: if a is not b와 같이 is not을 사용합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;암시적 False&lt;/b&gt;: 빈 리스트나 문자열을 확인할 때 if not somelist와 같이 암시적(implicit)으로 False를 활용합니다.&lt;/li&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;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글은 PEP8을 준수하면서도 자체적인 스타일 규칙을 적용하여 코드의 일관성과 가독성을 높이는 데 중점을 두고 있습니다.&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;h1 id=&quot;h1-0becf5d3cfa8b1638c14751445233943b7c3c67a7e0fa4a6b69415c921fe3a7a&quot; data-title=&quot;PEP 484 어노테이션 예시 및 설명&quot; data-depth=&quot;1&quot; data-heading=&quot;&quot;&gt;&lt;span style=&quot;background-color: #ffff00;&quot;&gt;&lt;b&gt;PEP 484 어노테이션 예시 및 설명&lt;/b&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PEP 484는 파이썬에 타입 힌트를 추가하는 방법을 정의하며, 함수 어노테이션을 통해 매개변수와 반환 값의 타입을 명시할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id=&quot;h2-40d9f72c009e9b32d15897b029369bcdd29f6d9daaf0d929146e695804051fc0&quot; data-title=&quot;기본 타입 힌트&quot; data-depth=&quot;2&quot; data-heading=&quot;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;기본 타입 힌트&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;def greeting(name: str) -&amp;gt; str:
    return 'Hello ' + name
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;name: str: 매개변수 name이 문자열(string) 타입임을 나타냅니다.&lt;/li&gt;
&lt;li&gt;-&amp;gt; str: 함수 greeting이 문자열(string) 타입을 반환함을 나타냅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id=&quot;h2-b9bb8fe8c4060a70c4a5cb3235d5391e63716b11160946b668ab3153a5507ef7&quot; data-title=&quot;복잡한 타입 힌트&quot; data-depth=&quot;2&quot; data-heading=&quot;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffff00;&quot;&gt;&lt;b&gt;복잡한 타입 힌트&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;typing 모듈을 사용하여 더 복잡한 타입 힌트를 사용할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;armasm&quot;&gt;&lt;code&gt;from typing import List, Dict, Tuple

def process_data(data: List[int]) -&amp;gt; Dict[str, Tuple[int, int]]:
    results = {}
    for item in data:
        results[str(item)] = (item, item * 2)
    return results
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;List[int]: 정수(integer) 리스트를 나타냅니다.&lt;/li&gt;
&lt;li&gt;Dict[str, Tuple[int, int]]: 키가 문자열(string)이고 값이 정수(integer) 튜플인 딕셔너리를 나타냅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id=&quot;h2-bb09c8216291cc93671a63b5c2d11b0fa4707a162a5f021344439c8870d60600&quot; data-title=&quot;&amp;lt;code&amp;gt;Union&amp;lt;/code&amp;gt;과 &amp;lt;code&amp;gt;Optional&amp;lt;/code&amp;gt;&quot; data-depth=&quot;2&quot; data-heading=&quot;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Union과 Optional&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Union은 변수가 여러 타입 중 하나일 수 있음을 나타내고, Optional은 변수가 특정 타입 또는 None일 수 있음을 나타냅니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;from typing import Union, Optional

def process_input(input_value: Union[int, str]) -&amp;gt; Optional[int]:
    if isinstance(input_value, int):
        return input_value * 2
    elif isinstance(input_value, str):
        return len(input_value)
    else:
        return None
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Union[int, str]: input_value가 정수(integer) 또는 문자열(string) 타입일 수 있음을 나타냅니다.&lt;/li&gt;
&lt;li&gt;Optional[int]: 함수가 정수(integer) 또는 None을 반환할 수 있음을 나타냅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;h2 id=&quot;h2-59b1900f1a4da9a98c5e1268b80f4e56bf4beebc9d4c243cba431a2ae40308ec&quot; data-title=&quot;사용자 정의 타입 힌트&quot; data-depth=&quot;2&quot; data-heading=&quot;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;사용자 정의 타입 힌트&lt;/b&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 정의 클래스에 대한 타입 힌트도 사용할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;ruby&quot;&gt;&lt;code&gt;class User:
    def __init__(self, id: int, name: str):
        self.id = id
        self.name = name

def get_user(user_id: int) -&amp;gt; User:
    # ... (User 객체를 반환하는 코드)
    pass
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;-&amp;gt; User: 함수가 User 클래스의 인스턴스를 반환함을 나타냅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;h1 id=&quot;h1-07349402f8fc9fb4c0fd17ba7323688f40258313ee85fbcae03e1dc41a6e0be5&quot; data-title=&quot;타입 힌트 검사&quot; data-depth=&quot;1&quot; data-heading=&quot;&quot;&gt;&lt;b&gt;타입 힌트 검사&lt;/b&gt;&lt;/h1&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;__annotations__ 속성을 사용하여 타입 힌트를 확인할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;def my_function(arg1: int, arg2: str) -&amp;gt; None:
    print(my_function.__annotations__)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출력:&lt;/p&gt;
&lt;pre class=&quot;1c&quot;&gt;&lt;code&gt;{'arg1': , 'arg2': , 'return': }
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;h1 id=&quot;h1-7e9c83d58d2128de64680fc8109760831dbaa64a12bf3979c949aa5c8b8ce86e&quot; data-title=&quot;타입 체커 (Type Checker)&quot; data-depth=&quot;1&quot; data-heading=&quot;&quot;&gt;&lt;b&gt;타입 체커 (Type Checker)&lt;/b&gt;&lt;/h1&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mypy와 같은 타입 체커를 사용하여 코드의 타입 힌트가 올바른지 확인할 수 있습니다. 타입 힌트와 타입 체커를 함께 사용하면 코드의 안정성을 높일 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;
&lt;h1 id=&quot;h1-821eb174d75fc20de9f7ce0e3f77efdc9303515b66abcafdd0d24bf14998999c&quot; data-title=&quot;주의사항&quot; data-depth=&quot;1&quot; data-heading=&quot;&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;※ 주의사항&lt;/b&gt;&lt;/span&gt;&lt;/h1&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;/li&gt;
&lt;li&gt;타입 힌트는 코드의 가독성을 높이고 정적 분석 도구에서 사용하기 위한 힌트일 뿐입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div id=&quot;content&quot;&gt;
&lt;div id=&quot;search-answer&quot;&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;: 파이썬 인터프리터는 어노테이션을 무시하고 실행하므로, 런타임에 타입 검사를 강제하지 않습니다. 타입 힌트는 &quot;힌트&quot;일 뿐이며, 타입 불일치 시 런타임 에러가 발생하지 않습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;정적 분석 도구&lt;/b&gt;: mypy와 같은 정적 분석 도구를 사용하여 타입 힌트의 효과를 검증하는 것을 추천합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;유연성&lt;/b&gt;: 어노테이션은 타입 힌트 외에 다른 메타데이터도 표현할 수 있지만, &lt;b&gt;&lt;u&gt;주로 타입 힌트 용도로 사용&lt;/u&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;: 파이썬 표준 라이브러리는 주석을 사용하는 데 신중해야 하지만, 새로운 코드나 대규모 리팩토링 시에는 사용할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수 어노테이션은 이러한 목표를 달성하는 데 유용한 도구입니다. 적절한 스타일(PEP484)을 적용하여 어노테이션을 사용하면 코드 품질을 향상시킬 수 있습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <author>Kim MyeongOk</author>
      <guid isPermaLink="true">https://dream-be-develop.tistory.com/64</guid>
      <comments>https://dream-be-develop.tistory.com/64#entry64comment</comments>
      <pubDate>Mon, 14 Jul 2025 23:40:30 +0900</pubDate>
    </item>
    <item>
      <title>문서화 중요성</title>
      <link>https://dream-be-develop.tistory.com/61</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;필자도 개발을 진행하면서&lt;br&gt;&quot;내가 개발자인데 문서화에 많은 투자를 해야하나?&quot;&lt;br&gt;와 같은 생각을 정말 많이 했다..&lt;br&gt;&lt;br&gt;주변에서 문서화 해놓은거 있냐고 요청하면 정리해서 전달하는 정도 였는데,&lt;br&gt;개발하는 프로젝트가 늘어나고 개발하는 코드의 양과 분야가 많아지고 넓어지니, 나중에 왜 이런 로직이 나온거지?와 같이 의문을 가지는 일이 생겼고, 문서화가 중요하다는 것을 알게되었음.&lt;br&gt;&lt;br&gt;1. 코드 재사용성: 다시 사용할 때 빠르게 이해하고 사용하기 위함&lt;br&gt;2. 빠른 인수인계 가능&lt;br&gt;&lt;br&gt;&lt;br&gt;참고 링크&lt;br&gt;1. https://clickup.com/ko/blog/110939/software-documentation-tools&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
      <category>기타 (Other)</category>
      <author>Kim MyeongOk</author>
      <guid isPermaLink="true">https://dream-be-develop.tistory.com/61</guid>
      <comments>https://dream-be-develop.tistory.com/61#entry61comment</comments>
      <pubDate>Fri, 7 Mar 2025 13:02:48 +0900</pubDate>
    </item>
    <item>
      <title>파이썬으로 개발할 수 있는 분야 별 라이브러리 모음</title>
      <link>https://dream-be-develop.tistory.com/59</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYxyEn/btsMn0NpQQo/YJbefj9gKNhLrwJcpMCxjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYxyEn/btsMn0NpQQo/YJbefj9gKNhLrwJcpMCxjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYxyEn/btsMn0NpQQo/YJbefj9gKNhLrwJcpMCxjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYxyEn%2FbtsMn0NpQQo%2FYJbefj9gKNhLrwJcpMCxjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;716&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;716&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;개요&lt;/h2&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;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;분야 별 라이브러리&lt;/span&gt;&lt;/h2&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;■&amp;nbsp; 데이터 분석&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&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;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style13&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;라이브러리&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pandas&lt;/td&gt;
&lt;td&gt;데이터 조작 및 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NumPy&lt;/td&gt;
&lt;td&gt;수치 연산 및 다차원 배열 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Matplotlib&lt;/td&gt;
&lt;td&gt;기본적인 데이터 시각화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Seaborn&lt;/td&gt;
&lt;td&gt;통계 데이터 시각화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scikit-learn&lt;/td&gt;
&lt;td&gt;기계 학습 및 데이터 마이닝&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SciPy&lt;/td&gt;
&lt;td&gt;과학 및 기술 계산&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Statsmodels&lt;/td&gt;
&lt;td&gt;통계 모델링 및 계량경제학&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plotly&lt;/td&gt;
&lt;td&gt;대화형 데이터 시각화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bokeh&lt;/td&gt;
&lt;td&gt;대화형 웹 기반 시각화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NLTK&lt;/td&gt;
&lt;td&gt;자연어 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gensim&lt;/td&gt;
&lt;td&gt;토픽 모델링 및 문서 유사도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;XGBoost&lt;/td&gt;
&lt;td&gt;그래디언트 부스팅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LightGBM&lt;/td&gt;
&lt;td&gt;그래디언트 부스팅 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TensorFlow&lt;/td&gt;
&lt;td&gt;딥러닝 및 기계 학습&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PyTorch&lt;/td&gt;
&lt;td&gt;딥러닝 및 인공 신경망&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Keras&lt;/td&gt;
&lt;td&gt;고수준 신경망 API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dash&lt;/td&gt;
&lt;td&gt;대화형 웹 애플리케이션 개발&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vaex&lt;/td&gt;
&lt;td&gt;대용량 데이터셋 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dask&lt;/td&gt;
&lt;td&gt;병렬 컴퓨팅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scrapy&lt;/td&gt;
&lt;td&gt;웹 스크래핑 및 크롤링&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div style=&quot;color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ref)&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://sorbonne.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D-%ED%95%84%EC%88%98-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-TOP6&quot;&gt;https://sorbonne.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D-%ED%95%84%EC%88%98-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-TOP6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://zzinnam.com/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%8B%9C%EA%B0%81%ED%99%94-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-matplotlib-vs-seaborn-vs-plotly-%EB%B9%84%EA%B5%90%ED%95%98%EA%B8%B0/&quot;&gt;https://zzinnam.com/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%8B%9C%EA%B0%81%ED%99%94-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-matplotlib-vs-seaborn-vs-plotly-%EB%B9%84%EA%B5%90%ED%95%98%EA%B8%B0/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://m.hanbit.co.kr/store/books/book_view.html?p_code=B2604168887&quot;&gt;https://m.hanbit.co.kr/store/books/book_view.html?p_code=B2604168887&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.insilicogen.com/131&quot;&gt;https://blog.insilicogen.com/131&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.naver.com/unipixel_/223737634072&quot;&gt;https://blog.naver.com/unipixel_/223737634072&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gsroot.tistory.com/61&quot;&gt;https://gsroot.tistory.com/61&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.codeit.kr/tutorials/124/DataAnalysisTool&quot;&gt;https://www.codeit.kr/tutorials/124/DataAnalysisTool&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.kanaries.net/ko/articles/best-python-visualization-library&quot;&gt;https://docs.kanaries.net/ko/articles/best-python-visualization-library&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;■&amp;nbsp; 임베디드 개발&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TZ0dO/btsMoI6tfm2/k8JtXeiaDTQTjkhyCBOUq0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TZ0dO/btsMoI6tfm2/k8JtXeiaDTQTjkhyCBOUq0/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TZ0dO/btsMoI6tfm2/k8JtXeiaDTQTjkhyCBOUq0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTZ0dO%2FbtsMoI6tfm2%2Fk8JtXeiaDTQTjkhyCBOUq0%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;200&quot; height=&quot;200&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;caret-color: auto; letter-spacing: 0px;&quot;&gt;주요 기능: 하드웨어 제어, 통신, 데이터 처리, 머신러닝 등&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;a href=&quot;https://www.perplexity.ai/search/paisseon-jaju-sayonghaneun-rai-qPF53oo4QyO2AX14NJ3N1Q#3&quot;&gt;https://www.perplexity.ai/search/paisseon-jaju-sayonghaneun-rai-qPF53oo4QyO2AX14NJ3N1Q#3&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;라이브러리&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MicroPython&lt;/td&gt;
&lt;td&gt;제한된 하드웨어에서 파이썬 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CircuitPython&lt;/td&gt;
&lt;td&gt;교육 및 제작자 커뮤니티 중심의 MicroPython 변형&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PySerial&lt;/td&gt;
&lt;td&gt;시리얼 포트 통신&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RPi.GPIO&lt;/td&gt;
&lt;td&gt;라즈베리 파이 GPIO 제어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adafruit_Blinka&lt;/td&gt;
&lt;td&gt;CircuitPython API를 리눅스 기반 보드에서 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;smbus2&lt;/td&gt;
&lt;td&gt;I2C 통신&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;spidev&lt;/td&gt;
&lt;td&gt;SPI 통신&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gpiozero&lt;/td&gt;
&lt;td&gt;GPIO 장치 제어 간소화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pyusb&lt;/td&gt;
&lt;td&gt;USB 통신&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;paho-mqtt&lt;/td&gt;
&lt;td&gt;MQTT 프로토콜 구현&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;requests&lt;/td&gt;
&lt;td&gt;HTTP 통신&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;numpy&lt;/td&gt;
&lt;td&gt;수치 연산&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;scipy&lt;/td&gt;
&lt;td&gt;과학 및 기술 계산&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;matplotlib&lt;/td&gt;
&lt;td&gt;데이터 시각화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;opencv-python&lt;/td&gt;
&lt;td&gt;컴퓨터 비전&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pillow&lt;/td&gt;
&lt;td&gt;이미지 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;tensorflow-lite&lt;/td&gt;
&lt;td&gt;경량화된 머신러닝&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;scikit-learn&lt;/td&gt;
&lt;td&gt;기계 학습&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pyserial&lt;/td&gt;
&lt;td&gt;시리얼 포트 통신&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pybluez&lt;/td&gt;
&lt;td&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;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ref)&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://www.seminet.co.kr/channel_micro.html?menu=content_sub&amp;amp;com_no=826&amp;amp;category=article&amp;amp;no=7019&quot;&gt;https://www.seminet.co.kr/channel_micro.html?menu=content_sub&amp;amp;com_no=826&amp;amp;category=article&amp;amp;no=7019&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.shunlongwei.com/ko/what-are-the-top-tools-for-developing-embedded-software/&quot;&gt;https://www.shunlongwei.com/ko/what-are-the-top-tools-for-developing-embedded-software/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://wiki.changwoo.pe.kr/project:embeddedpythongettingstarted&quot;&gt;https://wiki.changwoo.pe.kr/project:embeddedpythongettingstarted&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://4uwingnet.tistory.com/2&quot;&gt;https://4uwingnet.tistory.com/2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ib-study.tistory.com/8&quot;&gt;https://ib-study.tistory.com/8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://wikidocs.net/227942&quot;&gt;https://wikidocs.net/227942&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.python.org/ko/3/extending/embedding.html&quot;&gt;https://docs.python.org/ko/3/extending/embedding.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hilscher.com/kr/%EA%B3%A0%EC%9A%A9-%EC%A0%95%EB%B3%B4/%EC%9E%84%EB%B2%A0%EB%94%94%EB%93%9C-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EB%B0%8F-%EA%B0%9C%EB%B0%9C-%EB%8F%84%EA%B5%AC-%EB%8B%B4%EB%8B%B9-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EA%B0%9C%EB%B0%9C%EC%9E%90&quot;&gt;https://www.hilscher.com/kr/%EA%B3%A0%EC%9A%A9-%EC%A0%95%EB%B3%B4/%EC%9E%84%EB%B2%A0%EB%94%94%EB%93%9C-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EB%B0%8F-%EA%B0%9C%EB%B0%9C-%EB%8F%84%EA%B5%AC-%EB%8B%B4%EB%8B%B9-%EC%86%8C%ED%94%84%ED%8A%B8%EC%9B%A8%EC%96%B4-%EA%B0%9C%EB%B0%9C%EC%9E%90&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;■&amp;nbsp; 웹 서버 개발&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHx0wu/btsMoi7XNSs/DSss4f2pyYy2HXgbXTHkH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHx0wu/btsMoi7XNSs/DSss4f2pyYy2HXgbXTHkH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHx0wu/btsMoi7XNSs/DSss4f2pyYy2HXgbXTHkH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHx0wu%2FbtsMoi7XNSs%2FDSss4f2pyYy2HXgbXTHkH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;532&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;532&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;721&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KTOeU/btsMohnUpW8/2uges9ew3qCXShQsLdLEf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KTOeU/btsMohnUpW8/2uges9ew3qCXShQsLdLEf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KTOeU/btsMohnUpW8/2uges9ew3qCXShQsLdLEf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKTOeU%2FbtsMohnUpW8%2F2uges9ew3qCXShQsLdLEf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;721&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;721&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;1280&quot; data-origin-height=&quot;656&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/L2d07/btsMpjdWhtN/PnnLFd4wSNsjiUg0XPiNf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/L2d07/btsMpjdWhtN/PnnLFd4wSNsjiUg0XPiNf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/L2d07/btsMpjdWhtN/PnnLFd4wSNsjiUg0XPiNf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FL2d07%2FbtsMpjdWhtN%2FPnnLFd4wSNsjiUg0XPiNf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;656&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;656&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;div&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;라이브러리&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Django&lt;/td&gt;
&lt;td&gt;풀스택 웹 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flask&lt;/td&gt;
&lt;td&gt;경량 웹 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FastAPI&lt;/td&gt;
&lt;td&gt;고성능 API 개발 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pyramid&lt;/td&gt;
&lt;td&gt;유연한 웹 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tornado&lt;/td&gt;
&lt;td&gt;비동기 네트워킹 라이브러리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bottle&lt;/td&gt;
&lt;td&gt;간단한 웹 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CherryPy&lt;/td&gt;
&lt;td&gt;객체 지향 웹 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sanic&lt;/td&gt;
&lt;td&gt;비동기 웹 서버 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;aiohttp&lt;/td&gt;
&lt;td&gt;비동기 HTTP 클라이언트/서버&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Falcon&lt;/td&gt;
&lt;td&gt;빠른 API 구축 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Quart&lt;/td&gt;
&lt;td&gt;비동기 웹 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hug&lt;/td&gt;
&lt;td&gt;API 개발 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;web2py&lt;/td&gt;
&lt;td&gt;풀스택 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dash&lt;/td&gt;
&lt;td&gt;분석 웹 애플리케이션 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Werkzeug&lt;/td&gt;
&lt;td&gt;WSGI 웹 애플리케이션 라이브러리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Starlette&lt;/td&gt;
&lt;td&gt;경량 ASGI 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gunicorn&lt;/td&gt;
&lt;td&gt;WSGI HTTP 서버&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;uWSGI&lt;/td&gt;
&lt;td&gt;애플리케이션 서버 컨테이너&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Celery&lt;/td&gt;
&lt;td&gt;분산 태스크 큐&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SQLAlchemy&lt;/td&gt;
&lt;td&gt;SQL 툴킷 및 ORM&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ref)&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://sailing-blog.tistory.com/6&quot;&gt;https://sailing-blog.tistory.com/6&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tech.toktokhan.dev/2021/06/28/python-web-framework/&quot;&gt;https://tech.toktokhan.dev/2021/06/28/python-web-framework/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.jaenung.net/tree/1841&quot;&gt;https://www.jaenung.net/tree/1841&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://heehehe-ds.tistory.com/212&quot;&gt;https://heehehe-ds.tistory.com/212&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://m.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS5997817104&quot;&gt;https://m.hanbit.co.kr/channel/category/category_view.html?cms_code=CMS5997817104&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://velog.io/@qsef3546/Python-%EC%9B%B9-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC-%EB%B9%84%EA%B5%90Django-Flask-FastAPI&quot;&gt;https://velog.io/@qsef3546/Python-%EC%9B%B9-%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC-%EB%B9%84%EA%B5%90Django-Flask-FastAPI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://modulabs.co.kr/blog/why-python-django&quot;&gt;https://modulabs.co.kr/blog/why-python-django&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.naver.com/kimbooshop/223405601920&quot;&gt;https://blog.naver.com/kimbooshop/223405601920&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span&gt;■&amp;nbsp;&lt;span&gt;&lt;span&gt;&lt;span&gt; 클라우드 저장소&lt;/span&gt;&lt;/span&gt;&amp;nbsp;개발&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;705&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Exfz3/btsMo8cw29h/hUQxUstv5qRKWGap80Tdkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Exfz3/btsMo8cw29h/hUQxUstv5qRKWGap80Tdkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Exfz3/btsMo8cw29h/hUQxUstv5qRKWGap80Tdkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FExfz3%2FbtsMo8cw29h%2FhUQxUstv5qRKWGap80Tdkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;441&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;705&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;다양한 클라우드 저장소 서비스와 연동 가능함.&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;라이브러리&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;google-cloud-storage&lt;/td&gt;
&lt;td&gt;Google Cloud Storage 작업&lt;a href=&quot;https://wikidocs.net/236788&quot; data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href=&quot;https://scienceai.tistory.com/entry/Google-Cloud-Storage-%EB%AC%B4%EB%A3%8C-%EA%B3%B5%EA%B0%9C-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%82%AC%EC%9A%A9%EB%B2%95&quot; data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;boto3&lt;/td&gt;
&lt;td&gt;Amazon S3 및 AWS 서비스 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;azure-storage-blob&lt;/td&gt;
&lt;td&gt;Microsoft Azure Blob Storage 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dropbox&lt;/td&gt;
&lt;td&gt;Dropbox API 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;paramiko&lt;/td&gt;
&lt;td&gt;SFTP를 통한 원격 파일 전송&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pysftp&lt;/td&gt;
&lt;td&gt;SFTP 클라이언트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ftplib&lt;/td&gt;
&lt;td&gt;FTP 프로토콜 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;requests&lt;/td&gt;
&lt;td&gt;HTTP를 통한 RESTful API 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pydrive&lt;/td&gt;
&lt;td&gt;Google Drive API 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;python-swiftclient&lt;/td&gt;
&lt;td&gt;OpenStack Swift 객체 저장소 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;minio&lt;/td&gt;
&lt;td&gt;MinIO 및 Amazon S3 호환 저장소 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oss2&lt;/td&gt;
&lt;td&gt;Alibaba Cloud Object Storage Service (OSS) 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pcloud&lt;/td&gt;
&lt;td&gt;pCloud API 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cloudstorage&lt;/td&gt;
&lt;td&gt;여러 클라우드 저장소 서비스 통합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;apache-libcloud&lt;/td&gt;
&lt;td&gt;다양한 클라우드 제공업체 API 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;backblaze&lt;/td&gt;
&lt;td&gt;Backblaze B2 Cloud Storage 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cloudfiles&lt;/td&gt;
&lt;td&gt;Rackspace Cloud Files 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;boxsdk&lt;/td&gt;
&lt;td&gt;Box API 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;onedrivesdk&lt;/td&gt;
&lt;td&gt;Microsoft OneDrive API 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pyfilesystem&lt;/td&gt;
&lt;td&gt;가상 파일 시스템 추상화&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&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;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;실제 클라우드 저장소 서비스 사용 시,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;제한된 용량을 초과하면&lt;/span&gt;&lt;span style=&quot;background-color: #fafafa; 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;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;개발 및 테스트 목적으로 활용하면 유용함&lt;/span&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;&lt;a style=&quot;color: #0070d1;&quot; href=&quot;https://scienceai.tistory.com/entry/Google-Cloud-Storage-%EB%AC%B4%EB%A3%8C-%EA%B3%B5%EA%B0%9C-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%82%AC%EC%9A%A9%EB%B2%95&quot; data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) Google Cloud Storage의 경우 google-cloud-storage 라이브러리를 사용하여 무료로 개발 가능함. pip를 통해 쉽게 설치할 수 있습니다&lt;a href=&quot;https://scienceai.tistory.com/entry/Google-Cloud-Storage-%EB%AC%B4%EB%A3%8C-%EA%B3%B5%EA%B0%9C-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%82%AC%EC%9A%A9%EB%B2%95&quot; data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;a href=&quot;https://wooiljeong.github.io/gcp/gcs-python-bucket/&quot; data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;3&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1739959934030&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pip install --upgrade google-cloud-storage&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;ref)&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://wikidocs.net/236788&quot;&gt;https://wikidocs.net/236788&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://scienceai.tistory.com/entry/Google-Cloud-Storage-%EB%AC%B4%EB%A3%8C-%EA%B3%B5%EA%B0%9C-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%82%AC%EC%9A%A9%EB%B2%95&quot;&gt;https://scienceai.tistory.com/entry/Google-Cloud-Storage-%EB%AC%B4%EB%A3%8C-%EA%B3%B5%EA%B0%9C-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%82%AC%EC%9A%A9%EB%B2%95&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://wooiljeong.github.io/gcp/gcs-python-bucket/&quot;&gt;https://wooiljeong.github.io/gcp/gcs-python-bucket/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://cloud.google.com/appengine/docs/legacy/standard/python/googlecloudstorageclient/read-write-to-cloud-storage?hl=ko&quot;&gt;https://cloud.google.com/appengine/docs/legacy/standard/python/googlecloudstorageclient/read-write-to-cloud-storage?hl=ko&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://cloud.google.com/appengine/docs/legacy/standard/python/googlecloudstorageclient/setting-up-cloud-storage?hl=ko&quot;&gt;https://cloud.google.com/appengine/docs/legacy/standard/python/googlecloudstorageclient/setting-up-cloud-storage?hl=ko&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gabrielwithappy.github.io/blog/posts/2024/20240829.html&quot;&gt;https://gabrielwithappy.github.io/blog/posts/2024/20240829.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://velog.io/@kupulau/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C&quot;&gt;https://velog.io/@kupulau/%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://colab.research.google.com/?authuser=9&amp;amp;hl=ko&quot;&gt;https://colab.research.google.com/?authuser=9&amp;amp;hl=ko&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;■&amp;nbsp;&amp;nbsp;웹 대시보드 개발&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 34px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;
&lt;figure style=&quot;color: #333333; text-align: center;&quot; data-link-islinknewwindow=&quot;true&quot; data-link=&quot;https://abluesnake.tistory.com/152&quot; data-ke-type=&quot;image&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;737&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/W8QbK/btsMnycQODa/7Z9BMOyekdKs1KybASupK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/W8QbK/btsMnycQODa/7Z9BMOyekdKs1KybASupK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/W8QbK/btsMnycQODa/7Z9BMOyekdKs1KybASupK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FW8QbK%2FbtsMnycQODa%2F7Z9BMOyekdKs1KybASupK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;737&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;737&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;802&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D3qA6/btsMoFBUNgI/UsF9vJyXM5bpk9WnBK0gE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D3qA6/btsMoFBUNgI/UsF9vJyXM5bpk9WnBK0gE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D3qA6/btsMoFBUNgI/UsF9vJyXM5bpk9WnBK0gE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD3qA6%2FbtsMoFBUNgI%2FUsF9vJyXM5bpk9WnBK0gE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;802&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;802&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;549&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tl5V4/btsMnXJQaEu/4NIY5kydSvzOtOA22symB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tl5V4/btsMnXJQaEu/4NIY5kydSvzOtOA22symB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tl5V4/btsMnXJQaEu/4NIY5kydSvzOtOA22symB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ftl5V4%2FbtsMnXJQaEu%2F4NIY5kydSvzOtOA22symB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;549&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;549&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;671&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjaGqZ/btsMnYoAA2d/oPvauNtdlEwF130aVmAcWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjaGqZ/btsMnYoAA2d/oPvauNtdlEwF130aVmAcWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjaGqZ/btsMnYoAA2d/oPvauNtdlEwF130aVmAcWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjaGqZ%2FbtsMnYoAA2d%2FoPvauNtdlEwF130aVmAcWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;671&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;671&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot; colspan=&quot;2&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;355&quot;&gt;&lt;a href=&quot;https://wikidocs.net/234470&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cr4QEx/btsMpBZH7IE/XKBboN70hkmi9uVslkoFVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcr4QEx%2FbtsMpBZH7IE%2FXKBboN70hkmi9uVslkoFVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;355&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;355&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;라이브러리&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Streamlit&lt;/td&gt;
&lt;td&gt;간단하고 빠른 웹 대시보드 개발&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dash&lt;/td&gt;
&lt;td&gt;대화형 웹 애플리케이션 개발&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plotly&lt;/td&gt;
&lt;td&gt;인터랙티브 그래프 및 차트 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bokeh&lt;/td&gt;
&lt;td&gt;대화형 시각화 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Panel&lt;/td&gt;
&lt;td&gt;대화형 웹 앱 및 대시보드 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Voil&amp;agrave;&lt;/td&gt;
&lt;td&gt;Jupyter 노트북을 대시보드로 변환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gradio&lt;/td&gt;
&lt;td&gt;머신러닝 모델을 위한 웹 인터페이스 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flask&lt;/td&gt;
&lt;td&gt;경량 웹 애플리케이션 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Django&lt;/td&gt;
&lt;td&gt;풀스택 웹 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Matplotlib&lt;/td&gt;
&lt;td&gt;정적 그래프 및 차트 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Seaborn&lt;/td&gt;
&lt;td&gt;통계 데이터 시각화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Altair&lt;/td&gt;
&lt;td&gt;선언적 통계 시각화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PyViz&lt;/td&gt;
&lt;td&gt;데이터 시각화 도구 모음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Datapane&lt;/td&gt;
&lt;td&gt;대화형 보고서 및 대시보드 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pygal&lt;/td&gt;
&lt;td&gt;SVG 차트 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Folium&lt;/td&gt;
&lt;td&gt;지리적 데이터 시각화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plotnine&lt;/td&gt;
&lt;td&gt;ggplot2 스타일의 그래프 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Holoviz&lt;/td&gt;
&lt;td&gt;고급 데이터 시각화 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dash Bootstrap Components&lt;/td&gt;
&lt;td&gt;Dash 앱을 위한 Bootstrap 컴포넌트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Streamlit-Extras&lt;/td&gt;
&lt;td&gt;Streamlit 확장 기능 모음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;ref)&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://homouniversalis.tistory.com/3&quot;&gt;https://homouniversalis.tistory.com/3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.kanaries.net/ko/articles/best-python-visualization-library&quot;&gt;https://docs.kanaries.net/ko/articles/best-python-visualization-library&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://psystat.tistory.com/224&quot;&gt;https://psystat.tistory.com/224&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.kanaries.net/ko/articles/python-data-visualization-libraries&quot;&gt;https://docs.kanaries.net/ko/articles/python-data-visualization-libraries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://alsoand.tistory.com/26&quot;&gt;https://alsoand.tistory.com/26&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://zzinnam.com/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%8B%9C%EA%B0%81%ED%99%94-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-matplotlib-vs-seaborn-vs-plotly-%EB%B9%84%EA%B5%90%ED%95%98%EA%B8%B0/&quot;&gt;https://zzinnam.com/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%8B%9C%EA%B0%81%ED%99%94-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-matplotlib-vs-seaborn-vs-plotly-%EB%B9%84%EA%B5%90%ED%95%98%EA%B8%B0/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.zarathu.com/posts/2023-02-01-streamlit/&quot;&gt;https://blog.zarathu.com/posts/2023-02-01-streamlit/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://modulabs.co.kr/blog/python-data-analysis-matplotlib-seaborn-etc&quot;&gt;https://modulabs.co.kr/blog/python-data-analysis-matplotlib-seaborn-etc&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;■&amp;nbsp; 안드로이드 앱 개발&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody style=&quot;caret-color: auto; letter-spacing: 0px;&quot;&gt;
&lt;tr&gt;
&lt;td&gt;라이브러리&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kivy&lt;/td&gt;
&lt;td&gt;크로스 플랫폼 GUI 및 게임 개발&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pygame&lt;/td&gt;
&lt;td&gt;2D 게임 개발&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Panda3D&lt;/td&gt;
&lt;td&gt;3D 게임 엔진&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Arcade&lt;/td&gt;
&lt;td&gt;2D 게임 개발 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pyglet&lt;/td&gt;
&lt;td&gt;멀티미디어 및 게임 개발&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cocos2d&lt;/td&gt;
&lt;td&gt;2D 게임 및 GUI 개발&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PyOpenGL&lt;/td&gt;
&lt;td&gt;OpenGL 그래픽 라이브러리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PySDL2&lt;/td&gt;
&lt;td&gt;SDL2 바인딩&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Numpy&lt;/td&gt;
&lt;td&gt;수치 연산&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pillow&lt;/td&gt;
&lt;td&gt;이미지 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Buildozer&lt;/td&gt;
&lt;td&gt;안드로이드 APK 빌드 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;p4a (python-for-android)&lt;/td&gt;
&lt;td&gt;안드로이드용 파이썬 앱 패키징&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cython&lt;/td&gt;
&lt;td&gt;C 확장 모듈 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PyGame Zero&lt;/td&gt;
&lt;td&gt;초보자를 위한 게임 개발&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Renpy&lt;/td&gt;
&lt;td&gt;비주얼 노벨 게임 엔진&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PySoy&lt;/td&gt;
&lt;td&gt;3D 게임 엔진&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Harfang3D&lt;/td&gt;
&lt;td&gt;3D 시각화 및 게임 개발&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PyOgre&lt;/td&gt;
&lt;td&gt;OGRE 3D 엔진 바인딩&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PyOpenAL&lt;/td&gt;
&lt;td&gt;OpenAL 오디오 라이브러리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pyganim&lt;/td&gt;
&lt;td&gt;스프라이트 애니메이션&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;ref)&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://launching-box.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%95%B1%EA%B0%9C%EB%B0%9C-%EC%9E%90%EC%84%B8%ED%95%98%EA%B2%8C-%EC%95%8C%EC%95%84%EB%B3%B4%EB%8F%84%EB%A1%9D-%ED%95%98%EA%B2%A0%EC%8A%B5%EB%8B%88%EB%8B%A4-2%ED%8E%B8&quot;&gt;https://launching-box.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%95%B1%EA%B0%9C%EB%B0%9C-%EC%9E%90%EC%84%B8%ED%95%98%EA%B2%8C-%EC%95%8C%EC%95%84%EB%B3%B4%EB%8F%84%EB%A1%9D-%ED%95%98%EA%B2%A0%EC%8A%B5%EB%8B%88%EB%8B%A4-2%ED%8E%B8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer-depot.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%8A%A4%ED%8A%9C%EB%94%94%EC%98%A4-Libgdx-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%ED%99%9C%EC%9A%A9-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0&quot;&gt;https://developer-depot.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%8A%A4%ED%8A%9C%EB%94%94%EC%98%A4-Libgdx-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%ED%99%9C%EC%9A%A9-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://wikidocs.net/233733&quot;&gt;https://wikidocs.net/233733&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.android.com/games?hl=ko&quot;&gt;https://developer.android.com/games?hl=ko&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.naver.com/goglkms/222088521207&quot;&gt;https://blog.naver.com/goglkms/222088521207&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developers-kr.googleblog.com/2021/07/introducing-android-game-development-kit.html&quot;&gt;https://developers-kr.googleblog.com/2021/07/introducing-android-game-development-kit.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://superhky.tistory.com/602&quot;&gt;https://superhky.tistory.com/602&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://developer.android.com/games/guides/basics?hl=ko&quot;&gt;https://developer.android.com/games/guides/basics?hl=ko&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;■&amp;nbsp; &lt;/b&gt;&lt;b&gt;&lt;span style=&quot;background-color: oklch(0.99 0.004 106.471); text-align: start;&quot;&gt;개인의 스마트폰 사용 이력을 분석해서 사용자의 관심사를 파악하는 백그라운드 모바일 앱을 만든다면?&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;727&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ilv1d/btsMpk41b3V/nQBNGk8bDZrNQRpU0H0uB0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ilv1d/btsMpk41b3V/nQBNGk8bDZrNQRpU0H0uB0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ilv1d/btsMpk41b3V/nQBNGk8bDZrNQRpU0H0uB0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIlv1d%2FbtsMpk41b3V%2FnQBNGk8bDZrNQRpU0H0uB0%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;800&quot; height=&quot;727&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;727&quot;/&gt;&lt;/span&gt;&lt;/figure&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;개발 환경 설정&lt;/li&gt;
&lt;li&gt;앱 UI 설계 및 구현&lt;/li&gt;
&lt;li&gt;백그라운드 서비스 구현&lt;/li&gt;
&lt;li&gt;데이터 수집 및 저장&lt;/li&gt;
&lt;li&gt;데이터 분석 및 관심사 파악&lt;/li&gt;
&lt;li&gt;APK 빌드 및 배포&lt;/li&gt;
&lt;/ol&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;Kivy: 크로스 플랫폼 GUI 개발을 위한 오픈 소스 파이썬 라이브러리&lt;a href=&quot;https://couplewith.tistory.com/410&quot; data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;a href=&quot;https://news.hada.io/topic?id=15730&quot; data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;4&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Plyer: 플랫폼 독립적인 방식으로 디바이스 기능에 접근할 수 있는 라이브러리&lt;a href=&quot;https://www.jaenung.net/tree/1271&quot; data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pyjnius: 안드로이드 Java API를 파이썬에서 사용할 수 있게 해주는 라이브러리&lt;a href=&quot;https://www.yes24.com/Product/Goods/74294039&quot; data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;6&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SQLite: 로컬 데이터베이스로 사용자 데이터 저장 및 관리&lt;/li&gt;
&lt;li&gt;Numpy: 수치 연산 및 데이터 분석을 위한 라이브러리&lt;/li&gt;
&lt;li&gt;Pandas: 데이터 분석 및 조작을 위한 라이브러리&lt;/li&gt;
&lt;li&gt;Scikit-learn: 기계 학습 라이브러리로 사용자의 관심사 예측 모델 생성&lt;/li&gt;
&lt;li&gt;APScheduler: 백그라운드에서 주기적으로 작업을 실행하기 위한 스케줄러 라이브러리&lt;/li&gt;
&lt;li&gt;Buildozer: Android APK 빌드 도구&lt;a href=&quot;https://www.jaenung.net/tree/1271&quot; data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&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;사용자의 개인정보 보호와 데이터 보안에 주의를 기울여야 합니다.&lt;/li&gt;
&lt;li&gt;사용자의 동의를 얻어 데이터를 수집하고 분석해야 합니다.&lt;/li&gt;
&lt;li&gt;배터리 소모를 최소화하기 위해 효율적인 백그라운드 처리 방식을 구현해야 합니다.&lt;/li&gt;
&lt;li&gt;Android 권한 설정을 적절히 처리해야 합니다&lt;span&gt;&lt;a href=&quot;https://www.jaenung.net/tree/1271&quot; data-state=&quot;closed&quot;&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 앱 개발 과정에서 Kivy를 중심으로 하여 다른 라이브러리들을 조합하여 사용하면, 효율적으로 개발 가능.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Kivy의 크로스 플랫폼 특성을 활용하면 추후 iOS 버전으로의 확장도 용이함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ref)&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://couplewith.tistory.com/410&quot;&gt;https://couplewith.tistory.com/410&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.jaenung.net/tree/1271&quot;&gt;https://www.jaenung.net/tree/1271&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.naver.com/dsz08082/221842582052&quot;&gt;https://blog.naver.com/dsz08082/221842582052&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://news.hada.io/topic?id=15730&quot;&gt;https://news.hada.io/topic?id=15730&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://launching-box.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%95%B1%EA%B0%9C%EB%B0%9C-%EC%9E%90%EC%84%B8%ED%95%98%EA%B2%8C-%EC%95%8C%EC%95%84%EB%B3%B4%EB%8F%84%EB%A1%9D-%ED%95%98%EA%B2%A0%EC%8A%B5%EB%8B%88%EB%8B%A4-2%ED%8E%B8&quot;&gt;https://launching-box.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%95%B1%EA%B0%9C%EB%B0%9C-%EC%9E%90%EC%84%B8%ED%95%98%EA%B2%8C-%EC%95%8C%EC%95%84%EB%B3%B4%EB%8F%84%EB%A1%9D-%ED%95%98%EA%B2%A0%EC%8A%B5%EB%8B%88%EB%8B%A4-2%ED%8E%B8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.yes24.com/Product/Goods/74294039&quot;&gt;https://www.yes24.com/Product/Goods/74294039&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gaebalsaebal-developer.tistory.com/28&quot;&gt;https://gaebalsaebal-developer.tistory.com/28&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.jaenung.net/tree/14702?t=0&quot;&gt;https://www.jaenung.net/tree/14702?t=0&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;■&amp;nbsp;&amp;nbsp;웹 서버 개발&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;라이브러리&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NLTK&lt;/td&gt;
&lt;td&gt;자연어 처리를 위한 포괄적인 도구 모음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;spaCy&lt;/td&gt;
&lt;td&gt;고성능 자연어 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;KoNLPy&lt;/td&gt;
&lt;td&gt;한국어 자연어 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gensim&lt;/td&gt;
&lt;td&gt;토픽 모델링과 문서 유사도 계산&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;scikit-learn&lt;/td&gt;
&lt;td&gt;머신러닝 알고리즘 제공&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pandas&lt;/td&gt;
&lt;td&gt;데이터 조작과 분석&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NumPy&lt;/td&gt;
&lt;td&gt;수치 연산&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;regex&lt;/td&gt;
&lt;td&gt;정규 표현식을 사용한 텍스트 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Beautiful Soup&lt;/td&gt;
&lt;td&gt;웹 스크래핑&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scrapy&lt;/td&gt;
&lt;td&gt;웹 크롤링 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TextBlob&lt;/td&gt;
&lt;td&gt;간단한 텍스트 처리 작업&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PyTorch&lt;/td&gt;
&lt;td&gt;딥러닝 모델 구현&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TensorFlow&lt;/td&gt;
&lt;td&gt;딥러닝 및 머신러닝&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transformers&lt;/td&gt;
&lt;td&gt;최신 자연어 처리 모델 제공&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flair&lt;/td&gt;
&lt;td&gt;최첨단 NLP를 위한 프레임워크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;fastText&lt;/td&gt;
&lt;td&gt;효율적인 텍스트 분류 및 표현 학습&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stanza&lt;/td&gt;
&lt;td&gt;다국어 자연어 처리 도구&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AllenNLP&lt;/td&gt;
&lt;td&gt;자연어 처리 연구를 위한 오픈소스 라이브러리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pattern&lt;/td&gt;
&lt;td&gt;웹 마이닝, 자연어 처리, 기계 학습&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JPype1&lt;/td&gt;
&lt;td&gt;Java와 Python 연결 (KoNLPy 사용 시 필요)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;ref)&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://erinyees.tistory.com/132&quot;&gt;https://erinyees.tistory.com/132&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://minjin-note.tistory.com/2&quot;&gt;https://minjin-note.tistory.com/2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://kocw-n.xcache.kinxcdn.com/data/document/2020/edu1/cuk/leehyeyoung1113/13.pdf&quot;&gt;http://kocw-n.xcache.kinxcdn.com/data/document/2020/edu1/cuk/leehyeyoung1113/13.pdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://jh-bk.tistory.com/36&quot;&gt;https://jh-bk.tistory.com/36&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://theorydb.github.io/review/2022/11/25/review-book-blueprints-for-text-analystics/&quot;&gt;https://theorydb.github.io/review/2022/11/25/review-book-blueprints-for-text-analystics/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://blog.naver.com/skfnsid123/221898957733?viewType=pc&quot;&gt;https://blog.naver.com/skfnsid123/221898957733?viewType=pc&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://thebook.io/080328/0060/&quot;&gt;https://thebook.io/080328/0060/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://m.hanbit.co.kr/store/books/book_view.html?p_code=B8501475551&quot;&gt;https://m.hanbit.co.kr/store/books/book_view.html?p_code=B8501475551&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&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;</description>
      <category>기타 (Other)</category>
      <author>Kim MyeongOk</author>
      <guid isPermaLink="true">https://dream-be-develop.tistory.com/59</guid>
      <comments>https://dream-be-develop.tistory.com/59#entry59comment</comments>
      <pubDate>Wed, 19 Feb 2025 19:57:47 +0900</pubDate>
    </item>
    <item>
      <title>[python] PyCharm에서 docstring 자동 생성 설정</title>
      <link>https://dream-be-develop.tistory.com/57</link>
      <description>&lt;div data-message-model-slug=&quot;gpt-4o-mini&quot; data-message-id=&quot;dd9f55f7-df67-4935-bc53-2c9d4183ecac&quot; data-message-author-role=&quot;assistant&quot;&gt;
&lt;p data-end=&quot;226&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;PyCharm에서 &quot;&quot;&quot;을 입력하면 &lt;b&gt;자동으로 docstring 템플릿&lt;/b&gt;이 제공되는 기능을 활용할 수 있음. 이 기능을 사용하면, docstring을 빠르고 효율적으로 작성할 수 있음. 다만, 이 템플릿은 기본적으로 &lt;b&gt;Google 스타일&lt;/b&gt;, &lt;b&gt;NumPy 스타일&lt;/b&gt;, &lt;b&gt;reStructuredText 스타일&lt;/b&gt; 등을 자동으로 제공하는 것이 아니므로, 원하는 스타일로 템플릿을 설정할 수 있음.&lt;/p&gt;
&lt;pre id=&quot;code_1739366315680&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def my_function(param1, param2):
    &quot;&quot;&quot;
    TODO: 설명 추가
    &quot;&quot;&quot;
    pass&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-end=&quot;264&quot; data-start=&quot;228&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;PyCharm에서 docstring 자동 생성 설정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. &lt;b&gt;PyCharm 기본 docstring 템플릿 사용&lt;/b&gt;:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;432&quot; data-start=&quot;306&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;432&quot; data-start=&quot;306&quot;&gt;PyCharm에서는 기본적으로 함수나 클래스 정의 후 &quot;&quot;&quot;을 입력하면 docstring 템플릿을 자동으로 삽입해줌. 예를 들어, 함수 정의 후 &quot;&quot;&quot;을 입력하면 기본적인 docstring 템플릿이 자동으로 채워짐. &lt;b&gt;아래&amp;nbsp;템플릿을 설정하는 방법&lt;/b&gt;은 아래에서 설명하겠음.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1739367311188&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def my_function(param1, param2):
    &quot;&quot;&quot;
    TODO: 설명 추가
    &quot;&quot;&quot;
    pass&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure style=&quot;color: #333333; text-align: center;&quot; data-ke-type=&quot;image&quot; data-ke-style=&quot;alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. &lt;b&gt;PyCharm에서 docstring 템플릿 설정&lt;/b&gt;: PyCharm은 다양한 스타일의 docstring을 자동으로 생성할 수 있도록 설정할 수 있음. 원하는 스타일로 docstring을 자동으로 입력하려면 설정을 조정해야 함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;** 설정 방법 (PyCharm에서 Docstring 템플릿 설정)&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. PyCharm 설정 열기&lt;/b&gt;:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;806&quot; data-end=&quot;889&quot;&gt;
&lt;li data-start=&quot;806&quot; data-end=&quot;885&quot;&gt;PyCharm에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;File &amp;gt; Settings&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;(혹은 Mac에서는 PyCharm &amp;gt; Preferences)로 들어감.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. Editor &amp;gt; Code Style&lt;/b&gt;:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;929&quot; data-end=&quot;975&quot;&gt;
&lt;li data-start=&quot;929&quot; data-end=&quot;971&quot;&gt;Editor &amp;gt; Code Style &amp;gt; Python을 선택함.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. Docstring 템플릿 수정&lt;/b&gt;:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;1012&quot; data-end=&quot;1090&quot;&gt;
&lt;li data-start=&quot;1012&quot; data-end=&quot;1047&quot;&gt;그 아래에 있는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Docstrings&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;탭을 클릭함.&lt;/li&gt;
&lt;li data-start=&quot;1055&quot; data-end=&quot;1086&quot;&gt;여기에서 docstring 템플릿을 변경할 수 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. Docstring 스타일 선택&lt;/b&gt;:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;1127&quot; data-end=&quot;1260&quot;&gt;
&lt;li data-start=&quot;1127&quot; data-end=&quot;1182&quot;&gt;원하는 docstring 스타일을 선택하거나, &quot;&quot;&quot;으로 시작하는 템플릿을 수정할 수 있음.&lt;/li&gt;
&lt;li data-start=&quot;1190&quot; data-end=&quot;1260&quot;&gt;예를 들어,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Google 스타일&lt;/b&gt;로 docstring을 자동 생성하고 싶다면, 템플릿을 다음과 같이 변경할 수 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;Google 스타일&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1739367188807&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;&quot;&quot;
Args:
    param1 (type): 설명
    param2 (type): 설명

Returns:
    type: 설명
&quot;&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;&lt;b&gt;5. 저장 후 사용&lt;/b&gt;:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;1444&quot; data-end=&quot;1516&quot;&gt;
&lt;li data-start=&quot;1444&quot; data-end=&quot;1516&quot;&gt;설정을 저장한 후, 새로운 함수나 클래스에서 &quot;&quot;&quot;을 입력하면 설정한 스타일의 docstring 템플릿이 자동으로 입력됨.&lt;/li&gt;
&lt;/ul&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;h2 data-end=&quot;1570&quot; data-start=&quot;1518&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;PyCharm에서 Google 스타일, NumPy 스타일 템플릿을 사용하는 방법&lt;/b&gt;&lt;/h2&gt;
&lt;p data-end=&quot;1797&quot; data-start=&quot;1572&quot; data-ke-size=&quot;size16&quot;&gt;PyCharm에서는 기본적으로 &lt;b&gt;Google&lt;/b&gt;, &lt;b&gt;NumPy&lt;/b&gt;, &lt;b&gt;reST&lt;/b&gt; 스타일의 docstring을 지원하는 템플릿을 제공하지 않음. 하지만, &lt;b&gt;자동 완성 기능&lt;/b&gt;을 사용하여 스타일을 맞출 수 있음. 예를 들어, &lt;b&gt;Google 스타일&lt;/b&gt;의 docstring을 작성하고 싶다면, 위의 설정에서 &lt;b&gt;docstring 템플릿&lt;/b&gt;을 수정하여 이를 Google 스타일로 설정하는 것이 가능함.&lt;/p&gt;
&lt;h4 data-end=&quot;1826&quot; data-start=&quot;1799&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Google 스타일 템플릿 예시&lt;/b&gt;&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1739367423367&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;&quot;&quot;
Args:
    param1 (type): 설명
    param2 (type): 설명

Returns:
    type: 설명
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;h2 data-end=&quot;1937&quot; data-start=&quot;1924&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;기타 팁&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;2112&quot; data-start=&quot;1938&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2109&quot; data-start=&quot;1938&quot;&gt;PyCharm에서 자동화된 docstring 템플릿을 사용하는 것 외에도, docstring을 작성할 때 Ctrl + Q (Windows/Linux) 또는 Cmd + Q (Mac)를 눌러 문서화 정보를 확인할 수 있음. 이 기능은 함수나 클래스의 docstring을 확인할 때 유용함.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-end=&quot;2120&quot; data-start=&quot;2113&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;결론&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-is-last-node=&quot;&quot; data-end=&quot;2278&quot; data-start=&quot;2121&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2202&quot; data-start=&quot;2121&quot;&gt;&lt;b&gt;PyCharm에서 &quot;&quot;&quot;을 입력하면 docstring 템플릿&lt;/b&gt;이 자동으로 생성되며, 이를 통해 코드 문서화를 빠르게 작성할 수 있음.&lt;/li&gt;
&lt;li data-is-last-node=&quot;&quot; data-end=&quot;2278&quot; data-start=&quot;2203&quot;&gt;원하는 &lt;b&gt;docstring 스타일&lt;/b&gt;(Google, NumPy, reST 등)을 설정하여 일관된 문서화 스타일을 유지할 수 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</description>
      <category>기타 (Other)</category>
      <author>Kim MyeongOk</author>
      <guid isPermaLink="true">https://dream-be-develop.tistory.com/57</guid>
      <comments>https://dream-be-develop.tistory.com/57#entry57comment</comments>
      <pubDate>Wed, 12 Feb 2025 22:38:58 +0900</pubDate>
    </item>
    <item>
      <title>[python] 코드 문서화를 자동으로 Sphinx</title>
      <link>https://dream-be-develop.tistory.com/56</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;591&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfvqpq/btsMfqZWojG/5DmUXlCFSMJ53owOnCmU9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfvqpq/btsMfqZWojG/5DmUXlCFSMJ53owOnCmU9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfvqpq/btsMfqZWojG/5DmUXlCFSMJ53owOnCmU9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbfvqpq%2FbtsMfqZWojG%2F5DmUXlCFSMJ53owOnCmU9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;245&quot; data-origin-width=&quot;724&quot; data-origin-height=&quot;591&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-end=&quot;113&quot; data-start=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;파이썬에서 Sphinx를 사용하여 문서화 작업을 시작하는 방법을 알려드릴게요! Sphinx는 주로 코드의 문서를 자동으로 생성하는 데 사용되며, Python 프로젝트의 문서를 작성할 때 매우 유용함.&lt;/p&gt;
&lt;p data-end=&quot;148&quot; data-start=&quot;115&quot; data-ke-size=&quot;size16&quot;&gt;다음은 Sphinx를 설정하고 사용하는 기본적인 단계입니다:&lt;/p&gt;
&lt;h3 data-end=&quot;166&quot; data-start=&quot;150&quot; data-ke-size=&quot;size23&quot;&gt;1. Sphinx 설치&lt;/h3&gt;
&lt;p data-end=&quot;219&quot; data-start=&quot;168&quot; data-ke-size=&quot;size16&quot;&gt;먼저 Sphinx를 설치해야 함. 터미널이나 커맨드 라인에서 아래 명령어를 입력하면 됨.&lt;/p&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1739359492599&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;! pip install sphinx&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;268&quot; data-start=&quot;253&quot; data-ke-size=&quot;size23&quot;&gt;2. 프로젝트 초기화&lt;/h3&gt;
&lt;p data-end=&quot;353&quot; data-start=&quot;270&quot; data-ke-size=&quot;size16&quot;&gt;Sphinx를 사용하려면,&lt;/p&gt;
&lt;p data-end=&quot;353&quot; data-start=&quot;270&quot; data-ke-size=&quot;size16&quot;&gt;a. 프로젝트 생성&lt;/p&gt;
&lt;p data-end=&quot;353&quot; data-start=&quot;270&quot; data-ke-size=&quot;size16&quot;&gt;b. cd 명령어로 프로젝트 폴더로 이동&lt;/p&gt;
&lt;p data-end=&quot;353&quot; data-start=&quot;270&quot; data-ke-size=&quot;size16&quot;&gt;c. &lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;sphinx-quickstart &lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;명령어를 실행하여 기본적인 설정 파일들을 생성함.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1739359500944&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sphinx-quickstart&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;456&quot; data-start=&quot;386&quot; data-ke-size=&quot;size16&quot;&gt;이 명령어는 몇 가지 질문을 던짐. 기본값을 선택해도 되지만, 설정할 중요한 부분은 다음과 같았음.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;593&quot; data-start=&quot;458&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;510&quot; data-start=&quot;458&quot;&gt;&lt;b&gt;Root path for the documentation&lt;/b&gt;: 문서화할 폴더 경로.&lt;/li&gt;
&lt;li data-end=&quot;593&quot; data-start=&quot;511&quot;&gt;&lt;b&gt;Separate source and build directories&lt;/b&gt;: &amp;nbsp;&lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;source&lt;/span&gt; 폴더와&amp;nbsp;&lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;build&lt;/span&gt; 폴더를 분리할지 여부.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;650&quot; data-start=&quot;595&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 하면 &lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;폴더와&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;build&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;폴더&lt;/span&gt;, 그리고 몇 가지 설정 파일들이 생성됩니다.&lt;/p&gt;
&lt;h3 data-end=&quot;671&quot; data-start=&quot;652&quot; data-ke-size=&quot;size23&quot;&gt;3. &amp;nbsp;&lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;conf.py&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;설정&lt;/h3&gt;
&lt;p data-end=&quot;738&quot; data-start=&quot;673&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;폴더에 생성된 &lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;conf.py&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;파일을 열어 문서화 설정을 변경할 수 있습니다. 특히 중요한 부분은:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;842&quot; data-start=&quot;740&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;842&quot; data-start=&quot;740&quot;&gt;&lt;b&gt;extensions&lt;/b&gt;: Sphinx는 다양한 확장 기능을 지원합니다. 예를 들어, Python 코드의 docstring을 추출하려면 &lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;autodoc&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&amp;nbsp; 확장을 추가해야함.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1739359516553&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# conf.py 파일에서
extensions = [
    'sphinx.ext.autodoc',  # 자동으로 docstring을 추출
    'sphinx.ext.napoleon',  # Google 스타일 docstring 지원
]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;955&quot; data-start=&quot;918&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;955&quot; data-start=&quot;918&quot;&gt;&lt;b&gt;html_theme&lt;/b&gt;: 문서의 테마를 설정할 수 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1739359526041&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;html_theme = 'alabaster'&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;1025&quot; data-start=&quot;997&quot; data-ke-size=&quot;size23&quot;&gt;4. 문서화할 코드에 docstring 작성&lt;/h3&gt;
&lt;p data-end=&quot;1105&quot; data-start=&quot;1027&quot; data-ke-size=&quot;size16&quot;&gt;Sphinx는 docstring을 기반으로 문서를 생성합니다. 코드에서 함수, 클래스 등에 docstring을 추가해야 했음.&lt;/p&gt;
&lt;p data-end=&quot;1105&quot; data-start=&quot;1027&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어, 아래와 같이 함수에 docstring을 작성하면 됨.&lt;/p&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1739359547565&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# **Google** Docstring_Style_Type
def add(a, b):
    &quot;&quot;&quot;
    두 숫자의 합을 반환하는 함수

    Args:
        a (int): 첫 번째 숫자
        b (int): 두 번째 숫자

    Returns:
        int: 두 숫자의 합
    &quot;&quot;&quot;
    return a + b&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1739361941114&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# **NumPy** Docstring_Style_Type
def add(a, b):
    &quot;&quot;&quot;
    두 숫자의 합을 반환하는 함수

    Parameters
    ----------
    a : int
        첫 번째 숫자
    b : int
        두 번째 숫자

    Returns
    -------
    int
        두 숫자의 합
    &quot;&quot;&quot;
    return a + b&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1739361875432&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# **restructredTexted** Docstring_Style_Type
def add(a, b):
    &quot;&quot;&quot;
    두 숫자의 합을 반환하는 함수

    :param a: 첫 번째 숫자
    :type a: int
    :param b: 두 번째 숫자
    :type b: int
    :return: 두 숫자의 합
    :rtype: int
    &quot;&quot;&quot;
    return a + b&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;h3 data-end=&quot;1275&quot; data-start=&quot;1256&quot; data-ke-size=&quot;size23&quot;&gt;5.&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;.rst&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;파일 작성&lt;/h3&gt;
&lt;p data-end=&quot;1380&quot; data-start=&quot;1277&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;source&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;폴더에 있는 &lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;index.rst&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;파일을 열고, 여기에 문서의 목차나 내용을 작성함.&lt;/p&gt;
&lt;p data-end=&quot;1380&quot; data-start=&quot;1277&quot; data-ke-size=&quot;size16&quot;&gt;예를 들어, 자동으로 API 문서를 추가하려면 다음과 같이 작성해야함.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1739359601174&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.. automodule:: your_module_name
    :members:​&lt;/code&gt;&lt;/pre&gt;
&lt;span&gt; &lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1489&quot; data-start=&quot;1441&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;your_module_name&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;은 문서화하려는 Python 모듈 이름으로 바꾸면 됨.&lt;/p&gt;
&lt;h3 data-end=&quot;1505&quot; data-start=&quot;1491&quot; data-ke-size=&quot;size23&quot;&gt;6. 빌드 및 확인&lt;/h3&gt;
&lt;p data-end=&quot;1569&quot; data-start=&quot;1507&quot; data-ke-size=&quot;size16&quot;&gt;아래 명령어를 cmd에서 실행해서 build 폴더에 HTML 파일을 생성함.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1739359630202&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;make html&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-end=&quot;1686&quot; data-start=&quot;1594&quot; data-ke-size=&quot;size16&quot;&gt;이 명령어를 실행하면, &lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;build/html&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;폴더에 HTML 형식의 문서가 생성되고, &lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;index.html&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;파일을 실행하면 브라우저에서 문서된 내용을 확인할 수 있음.&lt;/p&gt;
&lt;h3 data-end=&quot;1708&quot; data-start=&quot;1688&quot; data-ke-size=&quot;size23&quot;&gt;7. 추가 확장 기능 (옵션)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1834&quot; data-start=&quot;1710&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1772&quot; data-start=&quot;1710&quot;&gt;&lt;b&gt;autodoc&lt;/b&gt;: Python 코드의 docstring을 자동으로 추출하여 문서에 삽입할 수 있음.&lt;/li&gt;
&lt;li data-end=&quot;1834&quot; data-start=&quot;1773&quot;&gt;&lt;b&gt;napoleon&lt;/b&gt;: Google 스타일과 NumPy 스타일의 docstring을 지원하는 확장 기능.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1842&quot; data-start=&quot;1836&quot; data-ke-size=&quot;size23&quot;&gt;예시&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;code_1739359661936&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# example.py

def greet(name):
    &quot;&quot;&quot;
    주어진 이름으로 인사를 합니다.

    :param name: 이름 (문자열)
    :return: 인사 메시지
    &quot;&quot;&quot;
    return f&quot;Hello, {name}!&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;위 코드에서&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;autodoc&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;확장을 사용하면&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;greet&lt;/span&gt; 함수의 docstring을 자동으로 문서화할 수 있음.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-end=&quot;2075&quot; data-start=&quot;2072&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;1836&quot; data-end=&quot;1842&quot; data-ke-size=&quot;size23&quot;&gt;결론&lt;/h3&gt;
&lt;p data-is-last-node=&quot;&quot; data-end=&quot;2260&quot; data-start=&quot;2077&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 Python 프로젝트에서 Sphinx를 사용한 코드 문서화를 활용해보았음.&lt;/p&gt;
&lt;p data-is-last-node=&quot;&quot; data-end=&quot;2260&quot; data-start=&quot;2077&quot; data-ke-size=&quot;size16&quot;&gt;문서의 스타일, 확장 기능, 빌드 방법 등은 필요에 따라 자유롭게 수정할 수 있으니, 공식 &lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;a href=&quot;https://www.sphinx-doc.org/en/master/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-end=&quot;2231&quot; data-start=&quot;2181&quot;&gt;Sphinx 문서&lt;/a&gt;&lt;/span&gt;를 참고하여 더 다양한 기능을 만나볼 수 있음.&lt;/p&gt;
&lt;hr data-start=&quot;2072&quot; data-end=&quot;2075&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;1836&quot; data-end=&quot;1842&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;(+추가) Docsting 종류&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(상세내용은 접는 글에서 확인 가능함)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;3125&quot; data-start=&quot;2927&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;2986&quot; data-start=&quot;2927&quot;&gt;&lt;b&gt; &lt;b&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;G&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;g&lt;/span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;e&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&amp;nbsp;스타일&lt;/b&gt;: &lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: left;&quot;&gt;일반적인 개발 프로젝트에서 많이 사용함.&lt;/span&gt;&amp;nbsp;간결하고 직관적이며, 빠르게 문서화할 수 있기 때문&lt;/li&gt;
&lt;li data-end=&quot;3043&quot; data-start=&quot;2987&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;NumPy&lt;/span&gt; 스타일&lt;/b&gt;: 과학적, 데이터 분석, 머신러닝 프로젝트에서 사용함. 매개변수가 많거나 복잡한 함수를 명확하게 구분할 때&lt;/li&gt;
&lt;li data-end=&quot;3125&quot; data-start=&quot;3044&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;reST&lt;/b&gt;&lt;/span&gt;&amp;nbsp;스타일&lt;/b&gt;: &lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: left;&quot;&gt;Sphinx와 잘 통합되어 큰 프로젝트나 문서화가 중요한 경우, Sphinx에서 제공하는 기본 스타일이라서 자동화된 코드 문서화에 특화된 스타일.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-is-last-node=&quot;&quot; data-end=&quot;3202&quot; data-start=&quot;3127&quot;&gt;각 스타일은 사용되는 상황에 따라 적합성이 달라지므로, 프로젝트의 성격과 사용하려는 문서화 도구에 맞춰 스타일을 선택하는 것이 중요함.&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;G&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;g&lt;/span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;e&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;388&quot; data-end=&quot;396&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;주로 사용되는 곳&lt;/b&gt;: &lt;b&gt;일반적인 프로젝트&lt;/b&gt;에서 많이 사용됨.&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;256&quot; data-start=&quot;160&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;212&quot; data-start=&quot;160&quot;&gt;&lt;b&gt;팀 간 협업&lt;/b&gt;이 많고, 코드의 간결함과 직관성을 중요시하는 프로젝트에서 주로 사용됨.&lt;/li&gt;
&lt;li data-end=&quot;256&quot; data-start=&quot;215&quot;&gt;&lt;b&gt;웹 개발&lt;/b&gt;이나 &lt;b&gt;스크립트 기반&lt;/b&gt; 프로젝트 등에서 널리 사용됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;388&quot; data-end=&quot;396&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;장점:&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;397&quot; data-end=&quot;595&quot;&gt;
&lt;li data-start=&quot;397&quot; data-end=&quot;463&quot;&gt;&lt;b&gt;간결하고 읽기 쉬움&lt;/b&gt;: Google 스타일은 기본적으로 간결하며, 항목 간 구분이 명확해 쉽게 읽을 수 있음.&lt;/li&gt;
&lt;li data-start=&quot;464&quot; data-end=&quot;533&quot;&gt;&lt;b&gt;대부분의 사람에게 친숙함&lt;/b&gt;: Google 스타일은 직관적이고 친숙해 많은 개발자들이 쉽게 이해하고 사용할 수 있음.&lt;/li&gt;
&lt;li data-start=&quot;534&quot; data-end=&quot;595&quot;&gt;&lt;b&gt;자동화 도구와의 호환성&lt;/b&gt;: 많은 자동화 도구나 문서화 툴에서 Google 스타일을 기본적으로 지원함.&lt;/li&gt;
&lt;li data-end=&quot;313&quot; data-start=&quot;273&quot;&gt;&lt;b&gt;간결하고 직관적&lt;/b&gt;이라, 개발자가 빠르게 문서를 작성할 수 있음.&lt;/li&gt;
&lt;li data-end=&quot;343&quot; data-start=&quot;316&quot;&gt;특히 &lt;b&gt;빠른 문서화&lt;/b&gt;가 필요한 경우 유용.&lt;/li&gt;
&lt;li data-end=&quot;407&quot; data-start=&quot;346&quot;&gt;Google 스타일은 매우 &lt;b&gt;친숙하고 쉽게 이해&lt;/b&gt;할 수 있어 대부분의 개발자가 편하게 사용할 수 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;597&quot; data-end=&quot;605&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;단점:&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;606&quot; data-end=&quot;784&quot;&gt;
&lt;li data-start=&quot;606&quot; data-end=&quot;712&quot;&gt;&lt;b&gt;세부적인 정보 부족&lt;/b&gt;: Google 스타일은 항목을 명시하는 데 충분한 공간을 제공하지만, NumPy 스타일이나 reST 스타일보다 추가적인 세부사항을 담기엔 다소 부족할 수 있음.&lt;/li&gt;
&lt;li data-start=&quot;713&quot; data-end=&quot;784&quot;&gt;&lt;b&gt;비표준화된 형식&lt;/b&gt;: Google 스타일은 그 자체로 널리 사용되지만, Python 커뮤니티의 표준이라고 할 수는 없음.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시&lt;/b&gt;: Google, Dropbox, Airbnb 등 다양한 오픈소스 프로젝트에서 사용됨.&lt;/p&gt;
&lt;hr data-start=&quot;2915&quot; data-end=&quot;2918&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;NumPy&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;1048&quot; data-end=&quot;1056&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;주로 사용되는 곳&lt;/b&gt;: &lt;b&gt;과학적, 데이터 분석, 머신러닝&lt;/b&gt; 프로젝트에서 많이 사용됨.&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;705&quot; data-start=&quot;546&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;636&quot; data-start=&quot;546&quot;&gt;&lt;b&gt;복잡한 수학적 함수&lt;/b&gt;나 &lt;b&gt;데이터 분석 도구&lt;/b&gt;에서는 매개변수와 반환값을 명확하게 정의하는 것이 중요하기 때문에 &lt;b&gt;NumPy 스타일&lt;/b&gt;이 자주 사용됨.&lt;/li&gt;
&lt;li data-end=&quot;705&quot; data-start=&quot;639&quot;&gt;&lt;b&gt;Pandas&lt;/b&gt;, &lt;b&gt;SciPy&lt;/b&gt;, &lt;b&gt;NumPy&lt;/b&gt; 등과 같은 &lt;b&gt;과학적 라이브러리&lt;/b&gt;에서 표준으로 사용됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;1048&quot; data-end=&quot;1056&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;장점:&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;1057&quot; data-end=&quot;1305&quot;&gt;
&lt;li data-start=&quot;1057&quot; data-end=&quot;1135&quot;&gt;&lt;b&gt;구조가 명확함&lt;/b&gt;: Parameters, Returns, Raises 등으로 나누어져 있어 문서가 매우 구조적이고 명확함.&lt;/li&gt;
&lt;li data-start=&quot;1136&quot; data-end=&quot;1228&quot;&gt;&lt;b&gt;복잡한 함수나 클래스에 유용&lt;/b&gt;: 함수가 복잡하거나 매개변수가 많을 때 NumPy 스타일이 유리함. 각 매개변수와 반환값을 명확하게 구분하여 설명할 수 있음.&lt;/li&gt;
&lt;li data-start=&quot;1229&quot; data-end=&quot;1305&quot;&gt;&lt;b&gt;과학 및 데이터 분석 분야에서 널리 사용됨&lt;/b&gt;: NumPy 스타일은 특히 데이터 분석, 과학 계산, 머신러닝 등에서 많이 사용됨.&lt;/li&gt;
&lt;li data-end=&quot;782&quot; data-start=&quot;721&quot;&gt;&lt;b&gt;매개변수와 반환값을 명확하게 정의&lt;/b&gt;하고, &lt;b&gt;구조적으로 잘 나누어져 있어&lt;/b&gt; 복잡한 함수에서 유리함.&lt;/li&gt;
&lt;li data-end=&quot;838&quot; data-start=&quot;785&quot;&gt;&lt;b&gt;과학적 커뮤니티&lt;/b&gt;에서 널리 사용되어, 해당 분야에서는 다른 사람들과의 협업 시 편리함.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;1307&quot; data-end=&quot;1315&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;단점:&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;1316&quot; data-end=&quot;1449&quot;&gt;
&lt;li data-start=&quot;1316&quot; data-end=&quot;1402&quot;&gt;&lt;b&gt;길어지고 반복적임&lt;/b&gt;: 많은 함수나 클래스에서 Parameters와 Returns를 반복적으로 작성해야 하기 때문에 문서가 길어질 수 있음.&lt;/li&gt;
&lt;li data-start=&quot;1316&quot; data-end=&quot;1402&quot;&gt;&lt;b&gt;구조가 다소 복잡&lt;/b&gt;&lt;span&gt;: 함수가 간단할 경우에는 다소 과도한 형식일 수 있음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시&lt;/b&gt;: Pandas, NumPy, SciPy 등과 같은 &lt;b&gt;과학적 및 데이터 분석 라이브러리&lt;/b&gt;에서 주로 사용됨.&lt;/p&gt;
&lt;hr data-start=&quot;2915&quot; data-end=&quot;2918&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;restructuredText (&lt;b&gt;reST&lt;/b&gt;)&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;1710&quot; data-end=&quot;1718&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;주로 사용되는 곳&lt;/b&gt;: &lt;b&gt;Sphinx 기반 문서화&lt;/b&gt;가 필요한 프로젝트에서 주로 사용됨.&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1126&quot; data-start=&quot;1009&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1058&quot; data-start=&quot;1009&quot;&gt;&lt;b&gt;Sphinx&lt;/b&gt;로 &lt;b&gt;자동화된 문서화&lt;/b&gt;를 필요로 하는 프로젝트에서 많이 사용됨.&lt;/li&gt;
&lt;li data-end=&quot;1126&quot; data-start=&quot;1061&quot;&gt;autodoc을 사용하여 Python 코드를 자동으로 문서화할 때 기본적으로 &lt;b&gt;reST 스타일&lt;/b&gt;을 사용함.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;1710&quot; data-end=&quot;1718&quot; data-ke-size=&quot;size20&quot;&gt;장점:&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;1719&quot; data-end=&quot;2031&quot;&gt;
&lt;li data-start=&quot;1719&quot; data-end=&quot;1824&quot;&gt;&lt;b&gt;Sphinx와의 호환성&lt;/b&gt;: reST 스타일은 Sphinx에서 기본적으로 지원되며, 매우 잘 통합됨. Sphinx 문서화 시스템을 사용하는 경우 가장 자연스러운 선택이 될 수 있음.&lt;/li&gt;
&lt;li data-start=&quot;1825&quot; data-end=&quot;1937&quot;&gt;&lt;b&gt;유연성&lt;/b&gt;: :param, :type, :return, :rtype 등 다양한 디렉티브를 통해 매개변수와 반환값을 명확하게 설명할 수 있음. 함수에 대한 세부 정보 제공이 용이함.&lt;/li&gt;
&lt;li data-start=&quot;1938&quot; data-end=&quot;2031&quot;&gt;&lt;b&gt;전통적인 Python 스타일&lt;/b&gt;: reST는 Python 커뮤니티에서 오랜 기간 사용되어 온 표준 형식 중 하나로, autodoc과 같은 도구와 잘 호환됨.&lt;/li&gt;
&lt;li data-end=&quot;1201&quot; data-start=&quot;1142&quot;&gt;&lt;b&gt;Sphinx와 완벽하게 호환&lt;/b&gt;되어, 대규모 프로젝트에서 자동 문서화 작업을 쉽게 처리할 수 있음.&lt;/li&gt;
&lt;li data-end=&quot;1299&quot; data-start=&quot;1204&quot;&gt;&lt;b&gt;복잡한 문서&lt;/b&gt;를 생성할 때 유리하고, :param, :type, :return 등의 디렉티브를 사용하여 매우 구체적이고 상세한 문서를 작성할 수 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-start=&quot;2033&quot; data-end=&quot;2041&quot; data-ke-size=&quot;size20&quot;&gt;단점:&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;2042&quot; data-end=&quot;2239&quot;&gt;
&lt;li data-start=&quot;2042&quot; data-end=&quot;2142&quot;&gt;&lt;b&gt;다소 장황할 수 있음&lt;/b&gt;: 다른 스타일들보다 문법적으로 길고 다소 복잡할 수 있음. 특히 간단한 함수나 클래스에는 지나치게 많은 디렉티브를 사용하는 경우가 발생할 수 있음.&lt;/li&gt;
&lt;li data-start=&quot;2042&quot; data-end=&quot;2142&quot;&gt;&lt;b&gt;readability&lt;/b&gt;&lt;span&gt;: :param과 :type 등을 사용하는 방식은 문서가 다소 기계적으로 보일 수 있으며, 일부 개발자들에게는 읽기에 불편할 수 있음.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;예시&lt;/b&gt;: Django, Flask와 같은 &lt;b&gt;대규모 프로젝트&lt;/b&gt;에서는 Sphinx 문서화 시스템을 많이 사용하며, 이를 위해 reST 스타일을 채택함.&lt;/p&gt;
&lt;hr data-end=&quot;2918&quot; data-start=&quot;2915&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;차이점 요약&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;color: #333333; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style1&quot; data-ke-align=&quot;alignLeft&quot; data-start=&quot;2265&quot; data-end=&quot;2913&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;스타일&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;G&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;g&lt;/span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;e&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;NumPy&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;restructuredText(reST)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-start=&quot;2439&quot; data-end=&quot;2510&quot;&gt;
&lt;td&gt;&lt;b&gt;구조&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;/tr&gt;
&lt;tr data-start=&quot;2511&quot; data-end=&quot;2594&quot;&gt;
&lt;td&gt;&lt;b&gt;주요 사용&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;간단한 함수나 클래스&lt;/td&gt;
&lt;td&gt;과학/데이터 분석 분야&lt;/td&gt;
&lt;td&gt;Sphinx 문서화 시스템과의 호환성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-start=&quot;2595&quot; data-end=&quot;2665&quot;&gt;
&lt;td&gt;&lt;b&gt;문서화 편의성&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;/tr&gt;
&lt;tr data-start=&quot;2666&quot; data-end=&quot;2749&quot;&gt;
&lt;td&gt;&lt;b&gt;유연성&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;/tr&gt;
&lt;tr data-start=&quot;2750&quot; data-end=&quot;2839&quot;&gt;
&lt;td&gt;&lt;b&gt;호환성&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;대부분의 자동화 도구와 호환&lt;/td&gt;
&lt;td&gt;과학적 도구들에서 널리 사용&lt;/td&gt;
&lt;td&gt;Sphinx와의 매우 좋은 호환성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-start=&quot;2840&quot; data-end=&quot;2913&quot;&gt;
&lt;td&gt;&lt;b&gt;주요 단점&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;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr data-start=&quot;2915&quot; data-end=&quot;2918&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-start=&quot;2920&quot; data-end=&quot;2926&quot;&gt;&lt;b&gt;결론&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-start=&quot;2927&quot; data-end=&quot;3125&quot;&gt;
&lt;li data-start=&quot;2927&quot; data-end=&quot;2986&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;G&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;g&lt;/span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;e&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&amp;nbsp;스타일&lt;/b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: left;&quot;&gt;일반적인 개발 프로젝트에서 많이 사용함.&lt;/span&gt; 간결하고 직관적이며, 빠르게 문서화할 수 있음.&lt;/li&gt;
&lt;li data-start=&quot;2987&quot; data-end=&quot;3043&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;NumPy&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;스타일&lt;/b&gt;: &lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;과학적, 데이터 분석, 머신러닝 프로젝트에서 사용. 매개변수가 많거나 복잡한 함수를 명확하게 구분할 수 있음.&lt;/span&gt;&lt;/li&gt;
&lt;li data-start=&quot;3044&quot; data-end=&quot;3125&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;reST&lt;/b&gt;&lt;/span&gt;&amp;nbsp;스타일&lt;/b&gt;: Sphinx와 잘 통합되어 큰 프로젝트나 문서화가 중요한 경우, Sphinx에서 제공하는 기본 스타일이라서 자동화된 코드 문서화에 특화된 스타일.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;b&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;G&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color: #f3c000;&quot;&gt;o&lt;/span&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;g&lt;/span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;l&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;e&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&amp;nbsp;스타일&lt;/b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: left;&quot;&gt;일반적인 개발 프로젝트에서 많이 사용.&lt;/span&gt; 간결/직관적이며, 빠르게 문서화할 수 있기 때문&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;NumPy&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;스타일&lt;/b&gt;:&lt;span&gt; 과학적, 데이터 분석, 머신러닝 프로젝트에서 사용. 매개변수가 많거나 복잡한 함수를 명확하게 구분할 때 &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;reST&lt;/b&gt;&lt;/span&gt;&amp;nbsp;스타일&lt;/b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;Sphinx와 잘 통합되어 큰 프로젝트나 문서화가 중요한 경우, 특히 Sphinx 문서화 시스템을 사용할 때&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-start=&quot;3127&quot; data-end=&quot;3202&quot; data-is-last-node=&quot;&quot; data-ke-size=&quot;size16&quot;&gt;각 스타일은 사용되는 상황에 따라 적합성이 달라지므로, 프로젝트의 성격과 사용하려는 문서화 도구에 맞춰 스타일을 선택하는 것이 중요함.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Tip) &lt;/b&gt;&lt;a href=&quot;https://dream-be-develop.tistory.com/57&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8; padding: 5px; border: #c1c1c1 3px;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #781b33;&quot;&gt;PyCharm에서 docstring 자동 생성 설정&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;b&gt;해서&amp;nbsp;&lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;&quot;&quot;&quot;&lt;/span&gt; 혹은&lt;b&gt;&amp;nbsp;&lt;span style=&quot;background-color: #dddddd; padding: 5px; border: #c1c1c1 3px;&quot;&gt;'''&lt;/span&gt;을&lt;/b&gt;&amp;nbsp;입력하면 코드 문서화를 빠르게 작성할 수 있음.&lt;/b&gt;&lt;/p&gt;</description>
      <category>기타 (Other)</category>
      <category>docstring</category>
      <category>Python</category>
      <category>Sphinx</category>
      <category>자동문서화</category>
      <category>파이썬</category>
      <author>Kim MyeongOk</author>
      <guid isPermaLink="true">https://dream-be-develop.tistory.com/56</guid>
      <comments>https://dream-be-develop.tistory.com/56#entry56comment</comments>
      <pubDate>Wed, 12 Feb 2025 21:26:26 +0900</pubDate>
    </item>
    <item>
      <title>[python] GoogleTranslator 번역</title>
      <link>https://dream-be-develop.tistory.com/55</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;목적&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. LMM 모델에 학습시킬 때, 한글보다 영문이 더 효과적이라고 해서 번역 라이브러리를 사용해서 번역하여 학습하기 위함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 영문으로 학습했으니 결과도 영문으로 나올 것이기에 결과를 번역하기 위함&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;기본 예제&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1739278461741&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ! pip install deep-translator
from deep_translator import GoogleTranslator

# 번역기 객체 생성 (한국어 -&amp;gt; 영어)
translator = GoogleTranslator(source='ko', target='en')

# 번할 텍스트역
text = &quot;언어&quot;

# 번역 수행
translated = translator.translate(text)

# 번역 결과 출력
print(f&quot;원문: {text}&quot;)
print(f&quot;번역된 문장: {translated}&quot;)
&quot;&quot;&quot;
[RESULT]
원문: 언어
번역된 문장: language
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;전체 코드&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1739278107777&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# ! pip install deep-translator
from deep_translator import GoogleTranslator

def translator(src_text, src_language='ko', trans_language='en'):
    src_text_trans = GoogleTranslator(source=src_language, target=trans_language)

    if type(src_text) == str:
        result = src_text_trans.translate(src_text)
    elif type(src_text) == list:
        result = []
        for src_text_part in src_text:
            result.append(src_text_trans.translate(src_text_part))
    return result

def english_to_korean(src_text):
    en_text_trans = GoogleTranslator(source='en', target='ko')

    if type(src_text) == str:
        result = en_text_trans.translate(src_text)
    elif type(src_text) == list:
        result = []
        for src_text_part in src_text:
            result.append(en_text_trans.translate(src_text_part))
    return result
    
input_str = ['너는 누구야?', '내가 항상 오늘처럼 맛있는거 많이 먹고 행복했으면 좋겠어']
en_src = translator(input_str)
en_src
&quot;&quot;&quot;
[RESULT]
['Who are you?',
 'I wish I could always eat a lot of delicious food and be happy like today']
&quot;&quot;&quot;
english_to_korean(en_src)
&quot;&quot;&quot;
[RESULT]
['누구세요?', '오늘처럼 항상 맛있는거 많이 먹고 행복할 수 있었으면 좋겠다']
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기타 (Other)</category>
      <category>deep_translator</category>
      <category>googletranslator</category>
      <category>Python</category>
      <category>번역</category>
      <category>파이썬</category>
      <author>Kim MyeongOk</author>
      <guid isPermaLink="true">https://dream-be-develop.tistory.com/55</guid>
      <comments>https://dream-be-develop.tistory.com/55#entry55comment</comments>
      <pubDate>Tue, 11 Feb 2025 21:53:22 +0900</pubDate>
    </item>
  </channel>
</rss>