<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>꿈꾸는 사람.</title>
    <link>https://dreamlog.tistory.com/</link>
    <description>보다 나은 내일을 꿈꾸는 사람입니다.
내 주변의 소소한 일상과 빠르게 변해가는 세상 속에서 늘 꿈꾸는 사람입니다.
&amp;quot;나는 꿈이 있습니다.&amp;quot; 보다 나은 세상을 위해.</description>
    <language>ko</language>
    <pubDate>Sat, 9 May 2026 00:25:48 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>현무랑 니니</managingEditor>
    <item>
      <title>[Pandas Groupby] 타이타닉 생존율 분석 (그룹별 상위 N개 추출 패턴)</title>
      <link>https://dreamlog.tistory.com/633</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;[문제] 타이타닉 선실 등급별 상위10명의 생존율을 구하라.&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;상황: 승객들의 생존율을 분석하고 있다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;문제: 선실 등급(Pclass)별로 나이(Age)가 가장 많은 상위 10명을 뽑은 후, 그들의 평균 생존율(Survived)을 구하시오.&lt;/li&gt;
&lt;li&gt;핵심 포인트: 그룹별로 정렬 기준(나이)과 집계 대상(생존율)이 다른 경우이다.&lt;/li&gt;
&lt;li&gt;데이터셋: 타이타닉 생존자 (&lt;a title=&quot;Titanic dataset&quot; href=&quot;https://www.kaggle.com/datasets/brendan45774/test-file?resource=download&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;캐글 csv 파일 이용&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;style&gt;
    .card-bg { fill: #ffffff; stroke: #e0e0e0; stroke-width: 1; filter: drop-shadow(2px 4px 6px rgba(0,0,0,0.1)); }
    .header-bg { fill: #2c3e50; }
    .header-text { font-family: 'Malgun Gothic', 'Apple SD Gothic Neo', sans-serif; font-size: 20px; font-weight: bold; fill: #ffffff; }
    .sub-header { font-family: 'Malgun Gothic', 'Apple SD Gothic Neo', sans-serif; font-size: 14px; fill: #bdc3c7; }
    
    .label-box { fill: #ecf0f1; rx: 4; }
    .label-text { font-family: 'Malgun Gothic', 'Apple SD Gothic Neo', sans-serif; font-size: 14px; font-weight: bold; fill: #7f8c8d; }
    
    .content-text { font-family: 'Malgun Gothic', 'Apple SD Gothic Neo', sans-serif; font-size: 16px; fill: #333333; line-height: 1.6; }
    .highlight { font-weight: bold; fill: #d35400; }
    .dataset-tag { fill: #3498db; rx: 12; }
    .dataset-text { font-family: 'Arial', sans-serif; font-size: 12px; font-weight: bold; fill: #ffffff; }
    
    .icon-deco { fill: #f39c12; opacity: 0.2; }
  &lt;/style&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;[풀이 요약]&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 문제의 핵심은 groupby를 두 번 쓰는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통 groupby는 한 번만 쓰지만 '&lt;b&gt;데이터 필터링(추출)&lt;/b&gt;과 '&lt;b&gt;데이터 집계(계산)&lt;/b&gt;'의 단계가 다르기 때문에 groupby를 두 번 사용해야 원하는 결과를 얻을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체적인 로직은 타이타닉 데이터셋을 입력 받아 먼저 필터링하고, 줄어든 데이터를 다시 계산하는 2단계로 이루어진다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #c0d1e7;&quot;&gt;&lt;b data-index-in-node=&quot;136&quot; data-path-to-node=&quot;7&quot;&gt;&quot;Sort -&amp;gt; Groupby(Filter) -&amp;gt; Groupby(Agg)&quot;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;[상세 풀이]&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-path-to-node=&quot;17,2,0&quot; data-index-in-node=&quot;0&quot;&gt;3단계 데이터 변환&lt;/b&gt;&lt;/li&gt;
&lt;/ul&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 style=&quot;width: 100%;&quot;&gt;1. 줄 세우기 (sort_values) &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;-&amp;gt; 원하는 순서대로 정렬 (선실 등급별과 나이별로 정렬)&lt;br /&gt;&lt;br /&gt;2. 잘라내기 (groupby().head(10))&lt;br /&gt;&amp;nbsp; &amp;nbsp; -&amp;gt; 그룹별 상위/하위 N개 추출&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 정렬된 전체 데이터프레임(891행)을 입력 받아 선실 등급별 상위 10명씩만 남은 데이터프레임 (30행)을 반환함&lt;br /&gt;&lt;br /&gt;3. 계산하기 (groupby().mean/sum)&lt;br /&gt;&amp;nbsp; &amp;nbsp; -&amp;gt; 이전에 만든 30줄의 데이터프레임을 각 그룹별 생존율 평균을 계산하여 선시리즈(Series) (3행)을 반환함&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-path-to-node=&quot;17,3,0&quot; data-index-in-node=&quot;0&quot;&gt;Python 코드&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1767603234123&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pandas as pd

df = pd.read_csv('titanic.csv', encoding='utf-8')

ans = df.sort_values(by=['Pclass', 'Age'], ascending=False) \
        .groupby(by='Pclass').head(10) \
        .groupby(by='Pclass')['Survived'].mean()
        
print(ans)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-path-to-node=&quot;17,2,0&quot; data-index-in-node=&quot;0&quot;&gt;데이터의 변환 과정(Flow)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Groupby_3.svg&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;950&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buRvLK/dJMcafFicAO/kDHB3lEVL7ZqYmvf7f6k2k/tfile.svg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buRvLK/dJMcafFicAO/kDHB3lEVL7ZqYmvf7f6k2k/tfile.svg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buRvLK/dJMcafFicAO/kDHB3lEVL7ZqYmvf7f6k2k/tfile.svg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuRvLK%2FdJMcafFicAO%2FkDHB3lEVL7ZqYmvf7f6k2k%2Ftfile.svg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;950&quot; data-filename=&quot;Groupby_3.svg&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;950&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt;Step 1 (정렬)&lt;/b&gt;: 전체 데이터를 Pclass와 Age 기준으로 정렬한 상태이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1767750983210&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 1등급 -&amp;gt; 2등급 -&amp;gt; 3등급 순으로, 그리고 나이가 많은 순으로 정렬
step1 = df.sort_values(by=['Pclass', 'Age'], ascending=False)&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;동작: 전체 데이터(891행)가 pclass와 age 기준으로 재배열된다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Step 2 (추출)&lt;/b&gt;: .head(10)으로 상위 데이터만 잘라낸다. 이때 결과물은 다시 평범한 표(DataFrame)가 된다. (여기가 핵심 포인트!)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1767751057820&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 각 등급별로 10행씩만 가져오기 (총 30행이 됨)
step2 = step1.groupby(by='Pclass').head(10)&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,0,0&quot;&gt;핵심 원리:&lt;/b&gt; 여기서 groupby는 평균을 구하기 위함이 아니라, &lt;b data-index-in-node=&quot;37&quot; data-path-to-node=&quot;24,0,0&quot;&gt;head(10)을 그룹별로 적용하기 위한 용도&lt;/b&gt;이다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,1,0&quot;&gt;수행 결과:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;24,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;입력: 891행 (전체 승객)&lt;/li&gt;
&lt;li&gt;출력: 30행 (1등급 10명 + 2등급 10명 + 3등급 10명)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;24,1,1,2,0&quot;&gt;중요:&lt;/b&gt; head()를 거치면서 그룹핑 상태는 해제되고, 다시 단순한 &lt;b data-index-in-node=&quot;38&quot; data-path-to-node=&quot;24,1,1,2,0&quot;&gt;DataFrame(표)&lt;/b&gt; 상태가 된다. 즉, 컴퓨터는 이제 이 30명이 1등급인지 3등급인지 그룹으로 묶어두지 않은 상태이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Step&amp;nbsp;3&amp;nbsp;(집계)&lt;/b&gt;: 평범한 표가 되었으므로, 평균을 구하기 위해 다시 한번 .groupby로 묶어줘야 결과(Series)가 나온다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1767751177261&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 30명의 데이터를 다시 등급별로 묶어서 평균 계산
step3 = step2.groupby(by='Pclass')['Survived'].mean()&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,0,0&quot;&gt;핵심 원리:&lt;/b&gt;&amp;nbsp;이전의 풀려버린 그룹을 &lt;b data-index-in-node=&quot;19&quot; data-path-to-node=&quot;27,0,0&quot;&gt;다시 묶어주는 역할&lt;/b&gt;이다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;27,1,0&quot;&gt;수행 결과:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;27,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;입력: 30행의 데이터프레임&lt;/li&gt;
&lt;li&gt;출력: 등급별 생존율이 담긴 Series (3행)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-path-to-node=&quot;27,0,0&quot; data-index-in-node=&quot;0&quot;&gt;최종 수행 결과 확인&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;코드를 실행하면 다음과 같이 등급별 노령 승객(Top 10)의 생존율이 계산된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1767751382774&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Pclass
1    0.7
2    0.3
3    0.3
Name: Survived, dtype: float64&lt;/code&gt;&lt;/pre&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;[결론]&lt;/h3&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;sort_values: 전체 줄 세우기&lt;/li&gt;
&lt;li&gt;groupby().head(N): (1차 그룹핑) 개수 자르기 -&amp;gt; DataFrame 반환&lt;/li&gt;
&lt;li&gt;groupby().mean(): (2차 그룹핑) 통계 내기 -&amp;gt; Series 반환&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 3단계 흐름, 특히 &quot;&lt;b&gt;자르고 나면 그룹이 풀리니까 다시 묶는다&lt;/b&gt;&quot;는 점만 기억하면 어떤 복잡한 문제도 해결할 수 있다.&lt;/p&gt;</description>
      <category>Python</category>
      <category>kaggle</category>
      <category>pandas</category>
      <category>python</category>
      <category>Titanic</category>
      <category>빅데이터분석기사</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/633</guid>
      <comments>https://dreamlog.tistory.com/633#entry633comment</comments>
      <pubDate>Wed, 7 Jan 2026 11:13:53 +0900</pubDate>
    </item>
    <item>
      <title>Python으로 테이블의 열을 가져오기</title>
      <link>https://dreamlog.tistory.com/632</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 테이블은 가로 행과 세로 열로 구성되며, 각 열의 첫 번째 값으로 해당 열 이름이 명시적으로 쓰여진 공통된 구조가 많다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 테이블을 전문적으로 다루는 패키지가 판다스(Pandas)이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;판다스는 1차원의 Series와 2차원인 DataFrame의 자료 구조를 가진다.&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;1140&quot; data-origin-height=&quot;450&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/raeY6/btsO6x1Z05O/OQHdjSk0VN1j0GsGRcIaok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/raeY6/btsO6x1Z05O/OQHdjSk0VN1j0GsGRcIaok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/raeY6/btsO6x1Z05O/OQHdjSk0VN1j0GsGRcIaok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FraeY6%2FbtsO6x1Z05O%2FOQHdjSk0VN1j0GsGRcIaok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1140&quot; height=&quot;450&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;450&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나의 개별 열을 가져오는 방법은 아래와 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 열을 동시에 선택하는 방법을 개별 열을 가져오는 것과 같이 하면 오류가 나며 리스트로 가져와야 한다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; 왜 df['대여시간', '사용시간'] 는 오류가 나고 df[['대여시간', '사용시간']] 는 동작하는가? &lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style12&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.6976%;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;구문&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 19.4187%;&quot;&gt;내부에서 전달되는 key&lt;/td&gt;
&lt;td style=&quot;width: 33.9534%;&quot;&gt;DataFrame.__getitem__(key) 가 기대하는 형식&lt;/td&gt;
&lt;td style=&quot;width: 25.8274%;&quot;&gt;동작 결과&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.6976%;&quot;&gt;df['대여시간', '사용시간']&lt;/td&gt;
&lt;td style=&quot;width: 19.4187%;&quot;&gt;('대여시간', '사용시간')&lt;br /&gt;&lt;b&gt;(튜플)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.9534%;&quot;&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;문자열&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;한 개 &amp;rarr; Series 반환&lt;br /&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;리스트‑like&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;객체(리스트&amp;middot;Index&amp;middot;배열) &amp;rarr; DataFrame 반환&lt;br /&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;튜플&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr; 단일 라벨 로 취급 (단‑일‑레‑벨 컬럼에서는 존재하지 않음)&lt;/td&gt;
&lt;td style=&quot;width: 25.8274%;&quot;&gt;단일‑레벨 컬럼에 ('대여시간','사용시간') 라벨이 없으므로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;KeyError&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;발생&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.6976%;&quot;&gt;df[['대여시간', '사용시간']]&lt;/td&gt;
&lt;td style=&quot;width: 19.4187%;&quot;&gt;['대여시간', '사용시간']&lt;br /&gt;&lt;b&gt;(리스트)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.9534%;&quot;&gt;&amp;ldquo;리스트‑like&amp;rdquo; 로 인식 &amp;rarr; 여러 컬럼을 선택하는 정상 경로&lt;/td&gt;
&lt;td style=&quot;width: 25.8274%;&quot;&gt;두 컬럼을 갖는 DataFrame 반환&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;777&quot; data-start=&quot;606&quot;&gt;[] &lt;b&gt;한 겹&lt;/b&gt;은 &lt;b&gt;&lt;b&gt;getitem&lt;/b&gt;&lt;/b&gt; 으로 바로 전달된다..
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;777&quot; data-start=&quot;655&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;681&quot; data-start=&quot;655&quot;&gt;문자열 &amp;rarr; 하나의 컬럼(Series)&lt;/li&gt;
&lt;li data-end=&quot;725&quot; data-start=&quot;684&quot;&gt;리스트 또는 팬더스 Index &amp;rarr; 여러 컬럼(DataFrame)&lt;/li&gt;
&lt;li data-end=&quot;777&quot; data-start=&quot;728&quot;&gt;튜플은 &amp;ldquo;리스트‑like&amp;rdquo; 로 간주되지 않고 &lt;b&gt;&amp;ldquo;라벨 하나&amp;rdquo;&lt;/b&gt; 로 해석된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;884&quot; data-start=&quot;778&quot;&gt;멀티인덱스(columns가 계층구조)인 DataFrame이라면 df[('A','B')] 같은 튜플‑라벨도 유효하지만, 일반 단일‑레벨 컬럼에서는 존재하지 않는 키이므로 오류가 난다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;판다스로 열을 가져오는 올바른 방법을 알아보자.&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. &lt;b&gt;하나의 특정 열&lt;/b&gt; 읽기&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 101px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;text-align: center; height: 21px;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;방법&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 21px;&quot;&gt;&lt;span style=&quot;color: #ffffff; text-align: start;&quot;&gt; 코드&amp;nbsp; &lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; height: 21px;&quot;&gt;특징&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;단일 대괄호&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;df[&quot;대여일자&quot;]&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;가장 직관적, 반환형은 &lt;b&gt;Series&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;속성 접근&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;df.대여일자&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;짧고 편리하지만 열 이름에 공백&amp;middot;특수문자&amp;middot;숫자 시작 등이 있으면 사용 불가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;.loc 인덱스&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;df.loc[:, &quot;대여일자&quot;]&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;행&amp;middot;열을 동시에 제어할 필요가 있을 때 유용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. &lt;b&gt;여러 특정 열&lt;/b&gt; 읽기&lt;/h4&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;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;방법&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; &lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #ffffff; text-align: start;&quot;&gt; 코드&amp;nbsp; &lt;/span&gt;&lt;/td&gt;
&lt;td&gt;특징&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;리스트 전달&lt;/td&gt;
&lt;td&gt;df[[&quot;대여일자&quot;, &quot;이동거리&quot;, &quot;사용시간&quot;]]&lt;/td&gt;
&lt;td&gt;가장 많이 쓰는 표준 구문&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;.loc 인덱스&lt;/td&gt;
&lt;td&gt;df.loc[:, [&quot;대여일자&quot;, &quot;이동거리&quot;, &quot;사용시간&quot;]]&lt;/td&gt;
&lt;td&gt;행 조건과 결합하기 좋음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;.filter(items=&amp;hellip;)&lt;/td&gt;
&lt;td&gt;df.filter(items=[&quot;대여일자&quot;, &quot;이동거리&quot;, &quot;사용시간&quot;])&lt;/td&gt;
&lt;td&gt;정규식&amp;middot;와일드카드 등과 함께 쓰기 편리&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. &lt;b&gt;하나의 열(대여일자)에 조건을 걸어&lt;/b&gt; 행 필터링&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(예: 2021‑06‑01 데이터만 추출)&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 84px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;&lt;b&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;방법&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;코드&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;특징&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;불린 인덱싱&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;df[df[&quot;대여일자&quot;] == &quot;2021-06-01&quot;]&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;가장 직관적&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;.loc + .eq()&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;df.loc[df[&quot;대여일자&quot;].eq(&quot;2021-06-01&quot;)]&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;메서드 체인이 명확; NaN 안전&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;.query()&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;df.query('대여일자 == &quot;2021-06-01&quot;')&lt;/td&gt;
&lt;td style=&quot;height: 21px;&quot;&gt;SQL‑like 문법으로 가독성 &amp;uarr;, 변수 삽입도 쉬움&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. &lt;b&gt;여러 열에 조건을 걸어&lt;/b&gt; 행 필터링&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(예: &amp;ldquo;정기권&amp;rdquo; &amp;amp; &amp;ldquo;20대&amp;rdquo; &amp;amp; 이동거리 &amp;ge; 2 km)&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;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;방법&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; &lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #ffffff; text-align: start;&quot;&gt; 코드&amp;nbsp; &lt;/span&gt;&lt;/td&gt;
&lt;td&gt;특징&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;불린 인덱싱 &amp;amp; 연산자&lt;/td&gt;
&lt;td&gt;df[(df[&quot;대여구분코드&quot;]==&quot;정기권&quot;) &amp;amp; (df[&quot;연령대코드&quot;]==&quot;20대&quot;) &amp;amp; (df[&quot;이동거리&quot;]&amp;gt;=2000)]&lt;/td&gt;
&lt;td&gt;연산자 `&amp;amp;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;.query()&lt;/td&gt;
&lt;td&gt;df.query('대여구분코드==&quot;정기권&quot; and 연령대코드==&quot;20대&quot; and 이동거리&amp;gt;=2000')&lt;/td&gt;
&lt;td&gt;조건이 길어질수록 가독성 강점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;.isin() 활용&lt;/td&gt;
&lt;td&gt;df[df[&quot;대여구분코드&quot;].isin([&quot;정기권&quot;]) &amp;amp; df[&quot;연령대코드&quot;].isin([&quot;20대&quot;]) &amp;amp; (df[&quot;이동거리&quot;] &amp;gt;= 2000)]&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Python</category>
      <category>panda</category>
      <category>python</category>
      <category>데이터프레임</category>
      <category>불린 인덱싱</category>
      <category>파이썬</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/632</guid>
      <comments>https://dreamlog.tistory.com/632#entry632comment</comments>
      <pubDate>Sat, 5 Jul 2025 21:42:07 +0900</pubDate>
    </item>
    <item>
      <title>pandas의 Groupby() 알아보기</title>
      <link>https://dreamlog.tistory.com/631</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;25&quot; data-start=&quot;0&quot; data-ke-size=&quot;size23&quot;&gt;1. groupby 정의와 개요&lt;/h3&gt;
&lt;p data-end=&quot;124&quot; data-start=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;pandas.DataFrame.groupby() (또는 Series.groupby())는 &lt;b&gt;Split‑Apply‑Combine&lt;/b&gt; 패턴을 구현한 핵심 메서드이다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;393&quot; data-start=&quot;126&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;206&quot; data-start=&quot;126&quot;&gt;&lt;b&gt;Split&lt;/b&gt; : 하나 이상의 &amp;ldquo;키&amp;rdquo;(열 값, 인덱스 레벨, 범위, 함수 등)에 따라 데이터를 논리적으로 &lt;b&gt;그룹&lt;/b&gt;으로 나눈다.&lt;/li&gt;
&lt;li data-end=&quot;308&quot; data-start=&quot;207&quot;&gt;&lt;b&gt;Apply&lt;/b&gt; : 각 그룹에 대해 &lt;b&gt;집계(aggregation), 변환(transformation), 필터링(filtering)&lt;/b&gt; 같은 연산을 독립적으로 수행한다.&lt;/li&gt;
&lt;li data-end=&quot;393&quot; data-start=&quot;309&quot;&gt;&lt;b&gt;Combine&lt;/b&gt; : 처리를 마친 결과를 단일 Series 또는 DataFrame으로 &lt;b&gt;재구성&lt;/b&gt;(combine)하여 반환한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-end=&quot;460&quot; data-start=&quot;395&quot; data-ke-size=&quot;size16&quot;&gt;이 과정 덕분에 반복문을 작성하지 않고도 &lt;b&gt;대량 데이터에 대한 조건별 연산&lt;/b&gt;을 간결&amp;middot;고속으로 수행할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a.png&quot; data-origin-width=&quot;1481&quot; data-origin-height=&quot;1109&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfXxtl/btsOVqQBYWa/IzgClwDCb1jvC3VUi2kEw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfXxtl/btsOVqQBYWa/IzgClwDCb1jvC3VUi2kEw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfXxtl/btsOVqQBYWa/IzgClwDCb1jvC3VUi2kEw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfXxtl%2FbtsOVqQBYWa%2FIzgClwDCb1jvC3VUi2kEw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1481&quot; height=&quot;1109&quot; data-filename=&quot;a.png&quot; data-origin-width=&quot;1481&quot; data-origin-height=&quot;1109&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-end=&quot;492&quot; data-start=&quot;467&quot; data-ke-size=&quot;size23&quot;&gt;2. 주요 기능 3가지와 코드 예시&lt;/h3&gt;
&lt;p data-end=&quot;523&quot; data-start=&quot;493&quot; data-ke-size=&quot;size16&quot;&gt;아래 예시는 공통적으로 다음 샘플 데이터를 사용한다.&lt;/p&gt;
&lt;pre id=&quot;code_1751094642173&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pandas as pd

df = pd.DataFrame({
    'dept': ['A', 'A', 'B', 'B', 'C', 'C'],
    'employee': ['Kim', 'Lee', 'Park', 'Choi', 'Jung', 'Han'],
    'salary': [5100, 6200, 4500, 5200, 6100, 5800],
    'years':  [3, 5, 2, 4, 6, 5]
})&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;dept&lt;/td&gt;
&lt;td&gt;employee&lt;/td&gt;
&lt;td&gt;salary&lt;/td&gt;
&lt;td&gt;years&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Kim&lt;/td&gt;
&lt;td&gt;5100&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Lee&lt;/td&gt;
&lt;td&gt;6200&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;Park&lt;/td&gt;
&lt;td&gt;4500&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;Choi&lt;/td&gt;
&lt;td&gt;5200&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;Jung&lt;/td&gt;
&lt;td&gt;6100&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;Han&lt;/td&gt;
&lt;td&gt;5800&lt;/td&gt;
&lt;td&gt;5&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;h4 data-end=&quot;1025&quot; data-start=&quot;1000&quot; data-ke-size=&quot;size20&quot;&gt;2‑1 Aggregation&amp;nbsp;(집계)&lt;/h4&gt;
&lt;blockquote data-end=&quot;1072&quot; data-start=&quot;1026&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1072&quot; data-start=&quot;1028&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목적&lt;/b&gt; : 그룹별로 하나의 스칼라 값을 산출해 &lt;b&gt;데이터 크기를 줄임&lt;/b&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre id=&quot;code_1751094840894&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 부서별 평균 급여와 최대 경력년수 한 번에 집계
agg_df = (
    df.groupby('dept')
      .agg(avg_salary=('salary', 'mean'),
           max_years=('years', 'max'))
)
print(agg_df)&lt;/code&gt;&lt;/pre&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;dept&lt;/td&gt;
&lt;td&gt;avg_salary&lt;/td&gt;
&lt;td&gt;max_yeares&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;5650.0&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;4850.0&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;5950.0&lt;/td&gt;
&lt;td&gt;6&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;h4 data-end=&quot;1492&quot; data-start=&quot;1464&quot; data-ke-size=&quot;size20&quot;&gt;2‑2 Transformation&amp;nbsp;(변환)&lt;/h4&gt;
&lt;blockquote data-end=&quot;1559&quot; data-start=&quot;1493&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;1559&quot; data-start=&quot;1495&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목적&lt;/b&gt; : 각 그룹을 가공하되 &lt;b&gt;원본과 동일한 행 수&lt;/b&gt;를 유지해 그룹별 정규화&amp;middot;파생 변수 생성에 활용.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre id=&quot;code_1751095561706&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 부서별 급여 평균을 뺀 편차(중심화) 파생 변수 추가
df['salary_dev'] = (
    df.groupby('dept')['salary']
      .transform(lambda s: s - s.mean())
)
print(df[['dept', 'employee', 'salary', 'salary_dev']])&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;dept&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;employee&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;salary&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;salary_dev&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Kim&lt;/td&gt;
&lt;td&gt;5100&lt;/td&gt;
&lt;td&gt;-550.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Lee&lt;/td&gt;
&lt;td&gt;6200&lt;/td&gt;
&lt;td&gt;+550.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;Park&lt;/td&gt;
&lt;td&gt;4500&lt;/td&gt;
&lt;td&gt;-350.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;Choi&lt;/td&gt;
&lt;td&gt;5200&lt;/td&gt;
&lt;td&gt;+350.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;Jung&lt;/td&gt;
&lt;td&gt;6100&lt;/td&gt;
&lt;td&gt;+150.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;Han&lt;/td&gt;
&lt;td&gt;5800&lt;/td&gt;
&lt;td&gt;-150.0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-end=&quot;2126&quot; data-start=&quot;2023&quot; data-ke-size=&quot;size16&quot;&gt;transform 은 &lt;b&gt;벡터를 반환&lt;/b&gt;하므로 결과가 원본 행과 &lt;b&gt;1 : 1 대응&lt;/b&gt;한다.&lt;/p&gt;
&lt;p data-end=&quot;2126&quot; data-start=&quot;2023&quot; data-ke-size=&quot;size16&quot;&gt;이를 통해 모델 입력용 표준화, 랭킹, 누적합(rolling) 등을 간단히 구현한다.&lt;/p&gt;
&lt;p data-end=&quot;2126&quot; data-start=&quot;2023&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-end=&quot;2157&quot; data-start=&quot;2133&quot; data-ke-size=&quot;size20&quot;&gt;2‑3 Filtering&amp;nbsp;(필터링)&lt;/h4&gt;
&lt;blockquote data-end=&quot;2215&quot; data-start=&quot;2158&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-end=&quot;2215&quot; data-start=&quot;2160&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;목적&lt;/b&gt; : 그룹별 조건식을 평가해 &lt;b&gt;조건을 만족한 그룹만 보존&lt;/b&gt;하여 &lt;b&gt;원본과 동일한 스키마의 DataFrame&lt;/b&gt;을 반환&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre id=&quot;code_1751095850654&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 평균 급여가 5,500 이상인 부서만 유지
high_pay = (
    df.groupby('dept')
      .filter(lambda g: g['salary'].mean() &amp;gt;= 5500)
)
print(high_pay[['dept', 'employee', 'salary']])&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;dept&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;employee&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;salary&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Kim&lt;/td&gt;
&lt;td&gt;5100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;Lee&lt;/td&gt;
&lt;td&gt;6200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;Jung&lt;/td&gt;
&lt;td&gt;6100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C&lt;/td&gt;
&lt;td&gt;Han&lt;/td&gt;
&lt;td&gt;5800&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 high_pay 전체의 내용은 아래와 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a.png&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;165&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/onQN3/btsOWgMRNKt/h8q3vxxLrWo5QdCtsTvjv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/onQN3/btsOWgMRNKt/h8q3vxxLrWo5QdCtsTvjv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/onQN3/btsOWgMRNKt/h8q3vxxLrWo5QdCtsTvjv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FonQN3%2FbtsOWgMRNKt%2Fh8q3vxxLrWo5QdCtsTvjv1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1033&quot; height=&quot;165&quot; data-filename=&quot;a.png&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;165&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;filter는 &lt;b&gt;그룹 단위&lt;/b&gt;로 불리언 조건을 평가한 뒤, 조건이 &lt;b&gt;True&lt;/b&gt;인 그룹만 병합한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(filter는 &amp;ldquo;그룹을 선택 또는 제외&amp;rdquo;하기 위한 도구)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시계열 이상치 제거, 최소 표본 수 확보 등에서 유용하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;2652&quot; data-start=&quot;2636&quot; data-ke-size=&quot;size23&quot;&gt;3. 핵심 포인트 요약&lt;/h3&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2944&quot; data-start=&quot;2654&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 18.0233%;&quot;&gt;기능&lt;/td&gt;
&lt;td style=&quot;width: 13.7209%;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;평가단위&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 19.3023%;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;반환&lt;span&gt; 크기&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 20.1163%;&quot;&gt;대표 함수&lt;/td&gt;
&lt;td style=&quot;width: 28.7209%;&quot;&gt;활용 시나리오&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2804&quot; data-start=&quot;2739&quot;&gt;
&lt;td style=&quot;width: 18.0233%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2753&quot; data-start=&quot;2739&quot;&gt;Aggregation&lt;/td&gt;
&lt;td style=&quot;width: 13.7209%;&quot;&gt;그룹&lt;/td&gt;
&lt;td style=&quot;width: 19.3023%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2766&quot; data-start=&quot;2753&quot;&gt;그룹 수 &amp;times; 열 수&lt;/td&gt;
&lt;td style=&quot;width: 20.1163%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2789&quot; data-start=&quot;2766&quot;&gt;sum, mean, agg&lt;/td&gt;
&lt;td style=&quot;width: 28.7209%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2804&quot; data-start=&quot;2789&quot;&gt;KPI 산출, 리포팅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2882&quot; data-start=&quot;2805&quot;&gt;
&lt;td style=&quot;width: 18.0233%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2822&quot; data-start=&quot;2805&quot;&gt;Transformation&lt;/td&gt;
&lt;td style=&quot;width: 13.7209%;&quot;&gt;행&lt;/td&gt;
&lt;td style=&quot;width: 19.3023%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2831&quot; data-start=&quot;2822&quot;&gt;원본과 동일&lt;/td&gt;
&lt;td style=&quot;width: 20.1163%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2864&quot; data-start=&quot;2831&quot;&gt;transform, rank, rolling&lt;/td&gt;
&lt;td style=&quot;width: 28.7209%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2882&quot; data-start=&quot;2864&quot;&gt;그룹별 정규화, 파생 변수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2944&quot; data-start=&quot;2883&quot;&gt;
&lt;td style=&quot;width: 18.0233%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2895&quot; data-start=&quot;2883&quot;&gt;Filtering&lt;/td&gt;
&lt;td style=&quot;width: 13.7209%;&quot;&gt;그룹&lt;/td&gt;
&lt;td style=&quot;width: 19.3023%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2909&quot; data-start=&quot;2895&quot;&gt;가변 (0 ~ 원본)&lt;/td&gt;
&lt;td style=&quot;width: 20.1163%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2920&quot; data-start=&quot;2909&quot;&gt;filter&lt;/td&gt;
&lt;td style=&quot;width: 28.7209%;&quot; data-col-size=&quot;sm&quot; data-end=&quot;2944&quot; data-start=&quot;2920&quot;&gt;그룹 품질 관리, 이상치&amp;middot;노이즈 제거&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;/div&gt;
&lt;p data-is-only-node=&quot;&quot; data-is-last-node=&quot;&quot; data-end=&quot;3019&quot; data-start=&quot;2946&quot; data-ke-size=&quot;size16&quot;&gt;groupby를 &lt;b&gt;집계&amp;middot;변환&amp;middot;필터&lt;/b&gt; 3축으로 체계화해 두면, 실무&amp;middot;시험 모두에서 빠르고 우아한 솔루션을 설계할 수 있다.&lt;/p&gt;</description>
      <category>Python</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/631</guid>
      <comments>https://dreamlog.tistory.com/631#entry631comment</comments>
      <pubDate>Sat, 28 Jun 2025 16:47:27 +0900</pubDate>
    </item>
    <item>
      <title>IntelliJ IDEA에서 Git 저장소의 소스를 가져와 프로젝트를 생성하는 방법</title>
      <link>https://dreamlog.tistory.com/629</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1️⃣ IntelliJ IDEA 시작&lt;/b&gt;&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;IntelliJ IDEA를 실행&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Start Menu&lt;/b&gt;에서 &lt;b&gt;Get from VCS&lt;/b&gt;(버전 컨트롤에서 가져오기)를 클릭&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2️⃣ 저장소 URL 입력&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;b&gt;Version Control 시스템 선택&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IntelliJ가 Git을 기본으로 감지합니다. 만약 Git이 선택되지 않았다면, 상단의 &lt;b&gt;Git&lt;/b&gt;을 선택&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;URL 입력&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;원격 저장소의 HTTPS 또는 SSH URL을 입력&lt;/li&gt;
&lt;li&gt;&amp;nbsp;예:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTTPS: &lt;a href=&quot;https://github.com/username/repository.git&quot;&gt;https://github.com/username/repository.git&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SSH: git@github.com:username/repository.git&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Directory 설정&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;로컬에 프로젝트를 저장할 디렉토리를 선택&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Clone 버튼 클릭&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IntelliJ가 저장소를 복제하고 프로젝트 디렉토리를 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3️⃣ 프로젝트 열기&lt;/b&gt;&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;저장소가 복제된 후, IntelliJ는 자동으로 프로젝트를 열기&lt;/li&gt;
&lt;li&gt;프로젝트 구조를 IntelliJ가 인식하도록 &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;IntelliJ가 프로젝트를 자동으로 감지하는 경우, 해당 구조에 맞는 빌드 파일(pom.xml, build.gradle 등)을 로드&lt;/li&gt;
&lt;li&gt;프로젝트에 Maven 또는 Gradle 파일이 있는 경우 IntelliJ가 이를 감지하고 필요한 의존성을 다운로드&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4️⃣ Git 연결 확인&lt;/b&gt;&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;IntelliJ의 &lt;b&gt;Version Control&lt;/b&gt; 창(하단 탭)을 열어, Git과 연결이 제대로 설정되었는지 확인&lt;/li&gt;
&lt;li&gt;메뉴에서 &lt;b&gt;VCS &amp;rarr; Git &amp;rarr; Repository List&lt;/b&gt;를 확인해 연결된 원격 저장소를 확인할 수 있음&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5️⃣ 이후 작업&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;A. 브랜치 선택&lt;/b&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;IntelliJ 오른쪽 하단의 브랜치 선택기에서 기본 브랜치(main 또는 master)가 선택되었는지 확인&lt;/li&gt;
&lt;li&gt;다른 브랜치로 작업하려면 브랜치 선택기에서 전환&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;B. 최신 코드 가져오기&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;상단 메뉴에서 &lt;b&gt;VCS &amp;rarr; Git &amp;rarr; Pull&lt;/b&gt;을 선택하여 최신 소스를 가져오기&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;C. 코드 실행 준비&lt;/b&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;필요한 빌드 도구(Maven, Gradle 등)를 IntelliJ에서 설정하고, 의존성을 설치&lt;/li&gt;
&lt;li&gt;프로젝트가 제대로 구성되었는지 확인한 뒤 코드를 빌드 및 실행&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;CLI로 추가 설정 후 IntelliJ에서 열기 (대안 방법)&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. &lt;b&gt;Git 명령어로 Clone&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IntelliJ를 열기 전에, 터미널에서 저장소를 클론&amp;nbsp;&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;bash&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;&lt;span data-state=&quot;closed&quot;&gt;코드 복사&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;git &lt;span&gt;clone&lt;/span&gt; &lt;a href=&quot;https://github.com/username/repository.git&quot;&gt;https://github.com/username/repository.git&lt;/a&gt; &lt;span&gt;cd&lt;/span&gt; repository&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. &lt;b&gt;IntelliJ에서 Clone된 디렉토리 열기&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;IntelliJ에서 **File &amp;rarr; Open...**을 클릭하고 Clone된 디렉토리를 선택&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 파일(pom.xml, build.gradle 등)을 IntelliJ가 인식하도록 빌드 도구를 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/Web Development</category>
      <category>Git</category>
      <category>IntelliJ</category>
      <category>SCM</category>
      <category>VCS</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/629</guid>
      <comments>https://dreamlog.tistory.com/629#entry629comment</comments>
      <pubDate>Mon, 16 Dec 2024 09:42:50 +0900</pubDate>
    </item>
    <item>
      <title>python 패키지 - pandas 개요</title>
      <link>https://dreamlog.tistory.com/628</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Pandas란 무엇인가?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Pandas는 Python에서 데이터 분석과 조작을 위한 고수준의 데이터 구조와 도구를 제공하는 &lt;b&gt;오픈소스 라이브러리&lt;/b&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Pandas는 특히 구조화된 데이터(예: 테이블 형태의 데이터)를 처리하는 데 최적화되어 있어 데이터 분석, 정리, 변환 및 시각화를 효율적으로 수행할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Pandas는 &lt;b&gt;NumPy&lt;/b&gt;를 기반으로 하며, 데이터프레임(DataFrame)과 시리즈(Series)라는 두 가지 주요 데이터 구조를 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;주요 개념&lt;/b&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Series&lt;/b&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;Python의 리스트나 NumPy 배열에 인덱스를 추가한 것과 비슷하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;import pandas as pd
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DataFrame&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이차원 데이터 구조로, 행(row)과 열(column)로 구성된 테이블 형태이다.&lt;/li&gt;
&lt;li&gt;DataFrame의&amp;nbsp;각&amp;nbsp;열은&amp;nbsp;Series이다.&lt;/li&gt;
&lt;li&gt;데이터 분석에 적합한 기능과 유연성을 제공한다.&lt;/li&gt;
&lt;li&gt;다양한&amp;nbsp;유형의&amp;nbsp;데이터(문자,&amp;nbsp;정수,&amp;nbsp;부동&amp;nbsp;소수점&amp;nbsp;값,&amp;nbsp;범주형&amp;nbsp;데이터&amp;nbsp;등)를&amp;nbsp;열에&amp;nbsp;저장할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;2차원&amp;nbsp;데이터&amp;nbsp;구조이다.&amp;nbsp; &lt;br /&gt;스프레드시트,&amp;nbsp;SQL&amp;nbsp;테이블&amp;nbsp;또는&amp;nbsp;R의&amp;nbsp;data.frame과&amp;nbsp;유사하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
df = pd.DataFrame(data)
print(df)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Indexing&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터에 접근하고 조작하기 위해 강력한 인덱싱과 슬라이싱 기능을 제공합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;주요 기능&lt;/b&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;데이터 로드 및 저장&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;다양한 파일 형식에서 데이터를 읽고 쓰는 기능:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CSV (read_csv, to_csv)&lt;/li&gt;
&lt;li&gt;Excel (read_excel, to_excel)&lt;/li&gt;
&lt;li&gt;SQL, JSON, HTML 등.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데이터 탐색 및 요약&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 구조 및 통계 요약 제공:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;head(), tail(): 데이터 일부 조회&lt;/li&gt;
&lt;li&gt;describe(): 요약 통계&lt;/li&gt;
&lt;li&gt;info(): 데이터 구조 정보.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데이터 정제 및 전처리&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;결측치 처리 (fillna, dropna)&lt;/li&gt;
&lt;li&gt;중복 데이터 제거 (drop_duplicates)&lt;/li&gt;
&lt;li&gt;데이터 형식 변환.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데이터 조작&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 필터링 및 선택 (loc, iloc)&lt;/li&gt;
&lt;li&gt;데이터 정렬 및 순서 변경 (sort_values, sort_index)&lt;/li&gt;
&lt;li&gt;데이터 병합 및 조인 (merge, concat, join).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;고급 기능&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그룹화와 집계 (groupby, aggregate)&lt;/li&gt;
&lt;li&gt;피벗 테이블 생성 (pivot_table)&lt;/li&gt;
&lt;li&gt;시계열 데이터 처리 (resample, rolling).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;고성능 연산&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NumPy 기반으로 빠른 벡터화 연산 제공.&lt;/li&gt;
&lt;li&gt;대용량 데이터 처리를 위해 최적화된 연산 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시각화&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Matplotlib, Seaborn과 통합하여 기본 그래프 시각화 가능 (plot).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Pandas의 특징&lt;/b&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;유연성&lt;/b&gt;: 데이터 필터링, 전처리, 조작 등 다양한 작업을 쉽게 수행.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;대규모 데이터 지원&lt;/b&gt;: 메모리 효율적으로 대용량 데이터 처리.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;통합성&lt;/b&gt;: 다른 데이터 과학 라이브러리(Numpy, Matplotlib 등)와 자연스럽게 연동 가능.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;오픈소스&lt;/b&gt;: 무료로 사용 가능하며 활발한 커뮤니티 지원.&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>Python</category>
      <category>dataframe</category>
      <category>NumPy</category>
      <category>pandas</category>
      <category>python</category>
      <category>데이터 분석</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/628</guid>
      <comments>https://dreamlog.tistory.com/628#entry628comment</comments>
      <pubDate>Sat, 23 Nov 2024 13:48:30 +0900</pubDate>
    </item>
    <item>
      <title>웹 페이지 원하는 내용만 인쇄하기 - 불필요한 내용 없이 깔끔하게!</title>
      <link>https://dreamlog.tistory.com/627</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;우리&amp;nbsp;모두&amp;nbsp;한&amp;nbsp;번쯤은&amp;nbsp;웹&amp;nbsp;페이지의&amp;nbsp;특정&amp;nbsp;내용을&amp;nbsp;인쇄하고자&amp;nbsp;할&amp;nbsp;때,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지의&amp;nbsp;불필요한&amp;nbsp;부분들&amp;nbsp;때문에&amp;nbsp;곤란을&amp;nbsp;겪어본&amp;nbsp;적이&amp;nbsp;있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사이트의 헤더, 푸터, 광고 등이 문서의 가독성을 떨어뜨리고, 종이와 잉크를 낭비하게 만드는 것이죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한&amp;nbsp;문제를&amp;nbsp;해결하기&amp;nbsp;위한&amp;nbsp;방법을&amp;nbsp;찾다가,&amp;nbsp;몇&amp;nbsp;가지&amp;nbsp;유용한&amp;nbsp;도구를&amp;nbsp;발견했고,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를&amp;nbsp;통해&amp;nbsp;원하는&amp;nbsp;결과를&amp;nbsp;얻을&amp;nbsp;수&amp;nbsp;있었습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;편리한 무료 솔루션&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&amp;nbsp;&lt;a title=&quot;Print Friendly &amp;amp; PDF 사이트&quot; href=&quot;https://www.printfriendly.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Print&amp;nbsp;Friendly&amp;nbsp;&amp;amp;&amp;nbsp;PDF&lt;/a&gt; &lt;br /&gt;&quot;Print&amp;nbsp;Friendly&amp;nbsp;&amp;amp;&amp;nbsp;PDF&quot;는&amp;nbsp;웹&amp;nbsp;페이지의&amp;nbsp;내용을&amp;nbsp;최적화하여&amp;nbsp;인쇄하거나&amp;nbsp;PDF로&amp;nbsp;저장하는&amp;nbsp;데&amp;nbsp;도움이&amp;nbsp;되는&amp;nbsp;서비스입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용 방법은 간단합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 인쇄하고자 하는 웹 페이지의 URL을 복사합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런&amp;nbsp;다음,&amp;nbsp;Print&amp;nbsp;Friendly&amp;nbsp;웹사이트에&amp;nbsp;접속하여&amp;nbsp;URL을&amp;nbsp;입력한&amp;nbsp;다음&amp;nbsp;'Download'&amp;nbsp;버튼을&amp;nbsp;클릭합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후&amp;nbsp;나타나는&amp;nbsp;페이지에서&amp;nbsp;불필요한&amp;nbsp;부분을&amp;nbsp;제거할&amp;nbsp;수&amp;nbsp;있으며,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필요한&amp;nbsp;내용만을&amp;nbsp;선택하여&amp;nbsp;인쇄하거나&amp;nbsp;PDF로&amp;nbsp;저장할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;실제&amp;nbsp;사례&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근에 제가 조사하던 주제에 대한 기사를 프린트하고 싶었지만,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지에는 다양한 광고와 사이드바, 그리고 불필요한 이미지들이 많았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Print Friendly &amp;amp; PDF&quot;를 사용하여 이 모든 불필요한 부분을 쉽게 제거할 수 있었고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깔끔한 문서 형태로 만들어 인쇄했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과적으로, 원하는 정보만을 담은 깨끗한 문서를 얻을 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 2가지 예시를 보이겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 5G에 대한 기술 내용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.netmanias.com/ko/?m=view&amp;amp;id=blog&amp;amp;no=13361&amp;amp;tag=4117&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.netmanias.com/ko/?m=view&amp;amp;id=blog&amp;amp;no=13361&amp;amp;tag=4117&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;a.png&quot; data-origin-width=&quot;1141&quot; data-origin-height=&quot;721&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFpBak/btsBj9NVrI0/3vMHouO6GXfChIduFuZkb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFpBak/btsBj9NVrI0/3vMHouO6GXfChIduFuZkb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFpBak/btsBj9NVrI0/3vMHouO6GXfChIduFuZkb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFpBak%2FbtsBj9NVrI0%2F3vMHouO6GXfChIduFuZkb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1141&quot; height=&quot;721&quot; data-filename=&quot;a.png&quot; data-origin-width=&quot;1141&quot; data-origin-height=&quot;721&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방문한 곳에 헤더, 사이트 바 및 광고 등 불필요한 내용이 한 가득입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Print Friendly &amp;amp; PDF&quot; 사이트에 접속합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1384&quot; data-origin-height=&quot;933&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dMa0r1/btsBoipTJG0/KiAz9odYJzM79NTFUScquk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dMa0r1/btsBoipTJG0/KiAz9odYJzM79NTFUScquk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dMa0r1/btsBoipTJG0/KiAz9odYJzM79NTFUScquk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdMa0r1%2FbtsBoipTJG0%2FKiAz9odYJzM79NTFUScquk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1384&quot; height=&quot;933&quot; data-origin-width=&quot;1384&quot; data-origin-height=&quot;933&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원문의 URL(&lt;a href=&quot;https://www.netmanias.com/ko/?m=view&amp;amp;id=blog&amp;amp;no=13361&amp;amp;tag=4117&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.netmanias.com/ko/?m=view&amp;amp;id=blog&amp;amp;no=13361&amp;amp;tag=4117&lt;/a&gt;)을 입력하고 [Preview]를 눌러줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1668&quot; data-origin-height=&quot;1125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I66YJ/btsBj9NWVGF/n0kWTx3mYcHCGWfEIP3CT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I66YJ/btsBj9NWVGF/n0kWTx3mYcHCGWfEIP3CT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I66YJ/btsBj9NWVGF/n0kWTx3mYcHCGWfEIP3CT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI66YJ%2FbtsBj9NWVGF%2Fn0kWTx3mYcHCGWfEIP3CT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1668&quot; height=&quot;1125&quot; data-origin-width=&quot;1668&quot; data-origin-height=&quot;1125&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;① 기사만 읽어오고 중간에 있는 광고에 ②마우스를 올리면 휴지통이 나타나고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 선택하면 &amp;radic;와 같이 광고가 제거 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1295&quot; data-origin-height=&quot;873&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/daMloS/btsBiUKzWoO/nCyyEKwDnDnYlubhsCwfjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/daMloS/btsBiUKzWoO/nCyyEKwDnDnYlubhsCwfjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/daMloS/btsBiUKzWoO/nCyyEKwDnDnYlubhsCwfjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdaMloS%2FbtsBiUKzWoO%2FnCyyEKwDnDnYlubhsCwfjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1295&quot; height=&quot;873&quot; data-origin-width=&quot;1295&quot; data-origin-height=&quot;873&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;불필요한 것을 모두 제거하고 PDF 버튼을 누르면 PDF 변환이 되어 [PDF 다운로드] 팝업이 보입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 버튼을 눌러 기사 내용만 PDF 파일로 받습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1111&quot; data-origin-height=&quot;822&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFUKNH/btsBirIJB1f/AQFMxUkCi15muNh7b3DA8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFUKNH/btsBirIJB1f/AQFMxUkCi15muNh7b3DA8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFUKNH/btsBirIJB1f/AQFMxUkCi15muNh7b3DA8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFUKNH%2FbtsBirIJB1f%2FAQFMxUkCi15muNh7b3DA8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1111&quot; height=&quot;822&quot; data-origin-width=&quot;1111&quot; data-origin-height=&quot;822&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원하는 내용만 담긴 PDF 문서가 Acrobat Reader에 보입니다.&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;1125&quot; data-origin-height=&quot;1050&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuYN4Y/btsBogZYOkB/yuE1b98Xcv4X70rXKqHAfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuYN4Y/btsBogZYOkB/yuE1b98Xcv4X70rXKqHAfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuYN4Y/btsBogZYOkB/yuE1b98Xcv4X70rXKqHAfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuYN4Y%2FbtsBogZYOkB%2FyuE1b98Xcv4X70rXKqHAfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1125&quot; height=&quot;1050&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;1050&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용자들에게&amp;nbsp;추천&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 도구들은 정말 손쉽게 사용할 수 있으며, 불필요한 페이지 내용으로 인한 불편함을 크게 줄여줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러분도 웹 필요한 내용만 보거나 인쇄할 때, &quot;Print Friendly &amp;amp; PDF&quot;와 같은 도구를 활용해보시길 추천드립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금 바로 시도해보세요!&lt;/p&gt;</description>
      <category>IT/Tip</category>
      <category>pdf변환</category>
      <category>PrintFriendly</category>
      <category>웹페이지수정</category>
      <category>웹페이지인쇄</category>
      <category>웹페이지최적화</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/627</guid>
      <comments>https://dreamlog.tistory.com/627#entry627comment</comments>
      <pubDate>Mon, 4 Dec 2023 13:59:53 +0900</pubDate>
    </item>
    <item>
      <title>'NFL Big Data Bowl 2024' 캐글 경진대회 참여하기 (1)</title>
      <link>https://dreamlog.tistory.com/626</link>
      <description>&lt;h1 style=&quot;background-color: #f7f7f8; color: #000000; text-align: start;&quot;&gt;캐글 경진대회 참여기: 프로그래머에서 데이터 분석가로의 여정&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 데이터 분석가를 준비하는 프로그래머로써 'NFL Big Data Bowl 2024' 대회에 참여하기로 결정한 흥미진진한 이야기를 여러분과 공유하려 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.&amp;nbsp;캐글과의&amp;nbsp;첫&amp;nbsp;만남&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 분석에 필요한 데이터셋을 찾던 중 캐글을 알게되어 가입하여 데이터 분석의 세계에 첫발을 디뎠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캐글은 데이터 과학자와 머신 러닝 엔지니어를 위한 훌륭한 플랫폼으로, 전 세계의 다양한 데이터와 문제를 해결할 기회를 제공합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.&amp;nbsp;NFL&amp;nbsp;Big&amp;nbsp;Data&amp;nbsp;Bowl&amp;nbsp;2024&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가입 후 얼마 지나지 않아 'NFL Big Data Bowl 2024' 대회 참여 초대 메일을 받았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 대회는 NFL 데이터를 사용하여 미식축구 선수들의 경기력을 분석하고 예측하는 것이 주된 목표이며 상금도 십만 달러입니다. 이 대회는 많은 데이터 분석가와 프로그래머들에게 흥미로운 도전이 될 것입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_1_kaggle-mail.png&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;816&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qPeuk/btszf4htlyw/eC43d49VyjxN7PQYVh2Guk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qPeuk/btszf4htlyw/eC43d49VyjxN7PQYVh2Guk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qPeuk/btszf4htlyw/eC43d49VyjxN7PQYVh2Guk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqPeuk%2Fbtszf4htlyw%2FeC43d49VyjxN7PQYVh2Guk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;773&quot; height=&quot;816&quot; data-filename=&quot;edited_1_kaggle-mail.png&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;816&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3.&amp;nbsp;준비&amp;nbsp;과정&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대회에 참여하기 위해서는 몇 가지 준비 과정을 거쳐야 합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;데이터&amp;nbsp;이해&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 제공된 데이터를 철저히 이해하는 것이 중요합니다. &amp;nbsp;이전 대회에서는 러닝백, 디펜시브백, 스페셜 팀, 패스 러시 플레이 등을 분석했으나 &amp;nbsp;Next Gen Stats 선수 추적 데이터를 사용하여 실용적이고 창의적이며 새로운 통계를 생성했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NFL 데이터는 선수들의 위치, 움직임, 경기 상황 등 다양한 정보를 포함하고 있습니다. 이 데이터를 잘 이해하고 분석하는 것이 좋은 결과를 얻기 위한 첫걸음입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_2_dataset.png&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;722&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ETqoM/btszhrpJHDC/mjLSwGoHG9Y3C48ZQX8NQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ETqoM/btszhrpJHDC/mjLSwGoHG9Y3C48ZQX8NQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ETqoM/btszhrpJHDC/mjLSwGoHG9Y3C48ZQX8NQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FETqoM%2FbtszhrpJHDC%2FmjLSwGoHG9Y3C48ZQX8NQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1050&quot; height=&quot;722&quot; data-filename=&quot;edited_2_dataset.png&quot; data-origin-width=&quot;1050&quot; data-origin-height=&quot;722&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;경진대회 규칙을 준수하는 내용에 동의 후 아래와 같이 데이터를 받아서 분석을 시작합니다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcRLML/btszi5mpIpd/jPMoEfueYedl8mUvUfMk31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcRLML/btszi5mpIpd/jPMoEfueYedl8mUvUfMk31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcRLML/btszi5mpIpd/jPMoEfueYedl8mUvUfMk31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcRLML%2Fbtszi5mpIpd%2FjPMoEfueYedl8mUvUfMk31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1302&quot; height=&quot;1080&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터셋을 읽고 다음과 같은 내용을 파악해본다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터의 처음 몇 행을 확인하여 구조를 이해합니다.&lt;/li&gt;
&lt;li&gt;데이터의 기술 통계를 확인하여 각 특성의 분포를 파악합니다.&lt;/li&gt;
&lt;li&gt;결측치의 존재 여부를 확인합니다.&lt;/li&gt;
&lt;li&gt;각 특성의 고유한 값과 그 분포를 확인합니다.&lt;/li&gt;
&lt;li&gt;데이터&amp;nbsp;간의&amp;nbsp;관계를&amp;nbsp;파악하기&amp;nbsp;위해&amp;nbsp;적절한&amp;nbsp;시각화를&amp;nbsp;수행합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;데이터&amp;nbsp;전처리&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 분석하기 전에는 데이터 전처리 과정을 거쳐야 합니다. 이 과정에는 누락된 값 처리, 이상치 제거, 데이터 정규화 등이 포함됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 전처리는 결측값, 이상값을 처리하는 &lt;i&gt;&lt;b&gt;데이터 정제&lt;/b&gt;&lt;/i&gt;와 데이터 유형을 변환하거나 범위를 표준화 또는 정규화하는 등의 &lt;i&gt;&lt;b&gt;데이터 변환&lt;/b&gt;&lt;/i&gt;으로 이루어집니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;모델&amp;nbsp;선택&amp;nbsp;및&amp;nbsp;학습&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전처리된 데이터를 바탕으로 적절한 머신 러닝 모델을 선택하고 학습합니다. 여러 가지 모델을 실험해 보고, 교차 검증을 통해 모델의 성능을 평가합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;경진대회에 1위를 차지한 솔루션들은 Ensemble 모델, 딥러닝 모델 등의 분석모형을 사용하여 다양한 하이퍼 파라미터를 조정한 결과를 얻습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각&amp;nbsp;대회의&amp;nbsp;1등&amp;nbsp;솔루션은&amp;nbsp;보통&amp;nbsp;대회&amp;nbsp;종료&amp;nbsp;후&amp;nbsp;공유되며,&amp;nbsp;다른&amp;nbsp;참가자들과&amp;nbsp;지식을&amp;nbsp;공유하는&amp;nbsp;목적으로&amp;nbsp;사용됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1918&quot; data-origin-height=&quot;912&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k6K4P/btszi4H6qhC/XWTkgxgFc711KufNZ1y120/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k6K4P/btszi4H6qhC/XWTkgxgFc711KufNZ1y120/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k6K4P/btszi4H6qhC/XWTkgxgFc711KufNZ1y120/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk6K4P%2Fbtszi4H6qhC%2FXWTkgxgFc711KufNZ1y120%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1918&quot; height=&quot;912&quot; data-origin-width=&quot;1918&quot; data-origin-height=&quot;912&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;1st and Future - Player Contact Detection&quot;의 대회에서 1위인 솔루션은 아래 3개의 모델을 사용합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;쉬운 네거티브 샘플을 제거하기 위한 약한 xgb 모델&lt;/li&gt;
&lt;li&gt;접촉을 분류하는 CNN&lt;/li&gt;
&lt;li&gt;출력을 사후 처리하는 xgb 모델&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;결과&amp;nbsp;제출&amp;nbsp;및&amp;nbsp;평가&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학습된 모델을 사용하여 결과를 예측하고, 이를 캐글에 제출합니다. 제출된 결과는 리더보드에서 확인할 수 있으며, 다른 참가자들과의 성능을 비교할 수 있습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;피드백 및 반복&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제출한 결과에 대한 피드백을 받고, 필요한 경우 모델을 수정하거나 개선하여 다시 제출합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대회가 종료될 때까지 이 과정을 반복합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;대회&amp;nbsp;종료&amp;nbsp;및&amp;nbsp;결과&amp;nbsp;확인&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대회가 종료되면 최종 순위와 결과를 확인합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;경험&amp;nbsp;공유&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참여한 대회에서 얻은 경험과 지식을 Kaggle의 Discussion 탭이나 개인 블로그 등에 공유할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4.&amp;nbsp;끝없는&amp;nbsp;도전&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'NFL Big Data Bowl 2024' 경진대회의 참가를 단순히 경쟁을 넘어서 학습과 성장의 기회로 생각합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 참가자들의 솔루션을 분석하고, 커뮤니티와 지식을 공유하며, 데이터 분석가로서의 역량을 키울 수 있는 좋은 기회가 될 것입니다. &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;마무리&lt;/b&gt; &lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 캐글 경진대회의 세계에 한 발짝 다가섰습니다. 캐글 경진대회 참여가 데이터 분석에 흥미와 동기를 부여할 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터의 세계는 끝없이 넓고, 우리가 배울 것은 무궁무진합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 포스팅을 통해 데이터 분석을 준비하는 상세한 과정을 통해 계속해서 도전하고, 배우고, 성장해 나가는 모습을 보이고자 합니다.&lt;/p&gt;</description>
      <category>Data Science</category>
      <category>dataAnalysis</category>
      <category>KaggleCompetition</category>
      <category>NFLDataBowl</category>
      <category>데이터분석</category>
      <category>머신러닝</category>
      <category>캐글경진대회</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/626</guid>
      <comments>https://dreamlog.tistory.com/626#entry626comment</comments>
      <pubDate>Fri, 27 Oct 2023 18:28:45 +0900</pubDate>
    </item>
    <item>
      <title>인공지능에서의 멀티모달(Multimodal)</title>
      <link>https://dreamlog.tistory.com/625</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;배경&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는&amp;nbsp;한국의&amp;nbsp;IT&amp;nbsp;개발자로&amp;nbsp;영어로&amp;nbsp;된&amp;nbsp;IT&amp;nbsp;용어를&amp;nbsp;접할&amp;nbsp;때&amp;nbsp;언어의&amp;nbsp;차이에서&amp;nbsp;오는&amp;nbsp;문제로&amp;nbsp;개념을&amp;nbsp;파악하는데&amp;nbsp;어려움이&amp;nbsp;있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한글로 된 멀티모달은 일단 의미가 와닿지 않는다&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;그래서 멀티모달(Multimodal)의 언어적 기원과 특징을 찾아보았다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;멀티모달(Multimodal)의&amp;nbsp;언어적&amp;nbsp;기원과&amp;nbsp;특징&lt;span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멀티모달(multimodal)이라는&amp;nbsp;용어는&amp;nbsp;라틴어에서&amp;nbsp;유래했고&amp;nbsp;&amp;nbsp; &lt;br /&gt;&quot;Multi-&quot;는 '많은'을, &quot;-modal&quot;은 '방식'이나 '모드' 또는 modalis&quot;(모양, 양식)를 의미한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 멀티모달은 '여러 가지 방식'이나 '여러 가지 모드'를 동시에 사용한다로 해석한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기존 IT 에서의 멀티모달&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 IT 분야에서의 멀티모달은 사용자 인터페이스(UI)에 관한 문맥에서 많이 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 터치스크린, 음성 인식, 키보드 등 &lt;b&gt;다양한 입력 방식을 하나의 시스템에서 지원&lt;/b&gt;하는 것을 의미할 수 있다. &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h4 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;&gt;
&lt;li&gt;다양한 입력/출력: 여러 가지 방식으로 사용자와 상호작용&lt;/li&gt;
&lt;li&gt;접근성: 다양한 사용자 및 장치에 대한 접근성을 높임.&lt;/li&gt;
&lt;li&gt;유연성: 사용자가 원하는 대로 다양한 방식으로 서비스를 이용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;인공지능에서의&amp;nbsp;멀티모달&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인공지능에서의&amp;nbsp;멀티모달은&amp;nbsp;주로&lt;b&gt;&amp;nbsp;다양한&amp;nbsp;타입의&amp;nbsp;데이터&lt;/b&gt;(텍스트,&amp;nbsp;이미지,&amp;nbsp;음성&amp;nbsp;등)를&amp;nbsp;&lt;b&gt;동시에&amp;nbsp;처리하는&amp;nbsp;모델&lt;/b&gt;을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 텍스트와 이미지를 동시에 분석하여 더 정확한 결과를 도출하는 AI 모델이 그 예이다. &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h4 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;&gt;
&lt;li&gt;데이터 융합: 여러 타입의 데이터를 하나의 모델에서 처리&lt;/li&gt;
&lt;li&gt;고차원 분석: 단일 모드보다 더 다양한 정보를 분석하여 결과를 도출&lt;/li&gt;
&lt;li&gt;효율성: 여러 타입의 데이터를 동시에 처리하기 때문에, 개별 모델을 각각 만드는 것보다 효율적&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;멀티모달의&amp;nbsp;차이점&lt;/h4&gt;
&lt;table style=&quot;background-color: #f7f7f8; color: #374151; text-align: left; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;구분&lt;/td&gt;
&lt;td&gt;인공지능에서의 멀티모달&lt;/td&gt;
&lt;td&gt;일반 IT 에서의 멀티모달&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;주요 목적&lt;/td&gt;
&lt;td&gt;데이터 분석 및 처리&lt;/td&gt;
&lt;td&gt;사용자 인터페이스&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;처리하는 데이터/입력&lt;/td&gt;
&lt;td&gt;텍스트, 이미지, 음성 등&lt;/td&gt;
&lt;td&gt;터치, 음성, 키보드 등&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;핵심 특징&lt;/td&gt;
&lt;td&gt;데이터 융합, 고차원 분석&lt;/td&gt;
&lt;td&gt;다양한 입력/출력, 접근성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;대표적인 사용 예&lt;/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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/Machine Learning</category>
      <category>Multimodal</category>
      <category>멀티모달</category>
      <category>사용자 인터페이스</category>
      <category>인공지능</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/625</guid>
      <comments>https://dreamlog.tistory.com/625#entry625comment</comments>
      <pubDate>Thu, 14 Sep 2023 14:23:21 +0900</pubDate>
    </item>
    <item>
      <title>초보 개발자를 위한 웹 팝업 가이드: 레이어 팝업 생성하기</title>
      <link>https://dreamlog.tistory.com/624</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;Layered popup 개요&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Layered popup은 웹 서비스에서 사용자 인터랙션을 돕기 위해 만들어진 팝업창 중 하나로,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTML, CSS, JavaScript를 활용해 구현할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 팝업은 일반적으로 웹 페이지의 다른 요소 위에 층처럼 겹쳐져 나타나며,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주로 사용자에게 중요한 정보를 전달하거나 추가적인 입력을 요청할 때 사용된다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Layered&amp;nbsp;popup의&amp;nbsp;동작&amp;nbsp;원리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. HTML&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 웹 페이지의 HTML 구조에 팝업 요소를 추가한다. 이는 보통 div 요소로 구현되며, 필요한 경우 form 요소를 포함할 수도 있다.&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 style=&quot;width: 100%;&quot;&gt;&amp;nbsp; &amp;lt;div id=&quot;layered-popup&quot; class=&quot;popup-container&quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;class=&quot;popup-content&quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;h2&amp;gt;레이어&amp;nbsp;팝업&amp;lt;/h2&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;팝업에&amp;nbsp;표시할&amp;nbsp;내용을&amp;nbsp;여기에&amp;nbsp;추가&amp;lt;/p&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span&amp;nbsp;class=&quot;close&quot;&amp;nbsp;onclick=&quot;closePopup()&quot;&amp;gt;&amp;amp;times;&amp;lt;/span&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. CSS&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팝업의 스타일을 지정하기 위해 CSS를 사용한다. 팝업을 화면 중앙에 표시하고, 다른 요소 위에 겹치도록 z-index를 높게 설정한다. 또한, 팝업이 처음에는 보이지 않게 display: none을 설정한다.&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 style=&quot;width: 100%;&quot;&gt;.popup-container&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;position:&amp;nbsp;fixed; &lt;br /&gt;&amp;nbsp;&amp;nbsp;top:&amp;nbsp;0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;left:&amp;nbsp;0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;width:&amp;nbsp;100%; &lt;br /&gt;&amp;nbsp;&amp;nbsp;height:&amp;nbsp;100%; &lt;br /&gt;&amp;nbsp;&amp;nbsp;background-color:&amp;nbsp;rgba(0,&amp;nbsp;0,&amp;nbsp;0,&amp;nbsp;0.5); &lt;br /&gt;&amp;nbsp;&amp;nbsp;display:&amp;nbsp;none; &lt;br /&gt;&amp;nbsp;&amp;nbsp;z-index:&amp;nbsp;9999; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;.popup-content&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;position:&amp;nbsp;absolute; &lt;br /&gt;&amp;nbsp;&amp;nbsp;top:&amp;nbsp;50%; &lt;br /&gt;&amp;nbsp;&amp;nbsp;left:&amp;nbsp;50%; &lt;br /&gt;&amp;nbsp;&amp;nbsp;transform:&amp;nbsp;translate(-50%,&amp;nbsp;-50%); &lt;br /&gt;&amp;nbsp;&amp;nbsp;background-color:&amp;nbsp;#fff; &lt;br /&gt;&amp;nbsp;&amp;nbsp;padding:&amp;nbsp;20px; &lt;br /&gt;&amp;nbsp;&amp;nbsp;border-radius:&amp;nbsp;5px; &lt;br /&gt;}&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. JavaScript&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팝업을 열고 닫기 위한 동작을 JavaScript로 구현한다. 일반적으로 버튼을 클릭하면 팝업이 나타나고, 닫기 버튼이나 배경을 클릭하면 팝업이 사라지도록 설정한다.&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 style=&quot;width: 100%;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;lt;script&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;popup&amp;nbsp;=&amp;nbsp;document.getElementById(&quot;layered-popup&quot;); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;openPopup()&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;popup.style.display&amp;nbsp;=&amp;nbsp;&quot;block&quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;closePopup()&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;popup.style.display&amp;nbsp;=&amp;nbsp;&quot;none&quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/script&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Layered popup의 간단한 예제&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래의 위에서 설명한 코드들을 종한합&amp;nbsp; 예제로 사용자가 버튼을 클릭하면 팝업이 나타나고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;x를 클릭하면 팝업이 사라진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 Layered popup은 웹 페이지에서 중요한 정보 전달, 알림&amp;nbsp; 등 다양한 목적으로 사용될 수 있다.&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 style=&quot;width: 100%;&quot;&gt;&amp;lt;!DOCTYPE&amp;nbsp;html&amp;gt; &lt;br /&gt;&amp;lt;html&amp;nbsp;lang=&quot;en&quot;&amp;gt; &lt;br /&gt;&amp;lt;head&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;meta&amp;nbsp;charset=&quot;UTF-8&quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;meta&amp;nbsp;name=&quot;viewport&quot;&amp;nbsp;content=&quot;width=device-width,&amp;nbsp;initial-scale=1.0&quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;style&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.popup-container&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position:&amp;nbsp;fixed; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;top:&amp;nbsp;0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;left:&amp;nbsp;0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width:&amp;nbsp;100%; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height:&amp;nbsp;100%; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-color:&amp;nbsp;rgba(0,&amp;nbsp;0,&amp;nbsp;0,&amp;nbsp;0.5); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display:&amp;nbsp;none; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;z-index:&amp;nbsp;9999; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.popup-content&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;position:&amp;nbsp;absolute; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;top:&amp;nbsp;50%; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;left:&amp;nbsp;50%; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transform:&amp;nbsp;translate(-50%,&amp;nbsp;-50%); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background-color:&amp;nbsp;#fff; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding:&amp;nbsp;20px; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;border-radius:&amp;nbsp;5px; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/style&amp;gt; &lt;br /&gt;&amp;lt;/head&amp;gt; &lt;br /&gt;&amp;lt;body&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;button&amp;nbsp;onclick=&quot;openPopup()&quot;&amp;gt;팝업&amp;nbsp;열기&amp;lt;/button&amp;gt; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;id=&quot;layered-popup&quot;&amp;nbsp;class=&quot;popup-container&quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;class=&quot;popup-content&quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;h2&amp;gt;레이어&amp;nbsp;팝업&amp;lt;/h2&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;팝업에&amp;nbsp;표시할&amp;nbsp;내용을&amp;nbsp;여기에&amp;nbsp;추가&amp;lt;/p&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span&amp;nbsp;class=&quot;close&quot;&amp;nbsp;onclick=&quot;closePopup()&quot;&amp;gt;&amp;amp;times;&amp;lt;/span&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;script&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;popup&amp;nbsp;=&amp;nbsp;document.getElementById(&quot;layered-popup&quot;); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;openPopup()&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;popup.style.display&amp;nbsp;=&amp;nbsp;&quot;block&quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&amp;nbsp;closePopup()&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;popup.style.display&amp;nbsp;=&amp;nbsp;&quot;none&quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/script&amp;gt; &lt;br /&gt;&amp;lt;/body&amp;gt; &lt;br /&gt;&amp;lt;/html&amp;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;</description>
      <category>IT/Web Development</category>
      <category>html</category>
      <category>javascript</category>
      <category>LayeredPopup</category>
      <category>webdevelopment</category>
      <category>레이어 팝업</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/624</guid>
      <comments>https://dreamlog.tistory.com/624#entry624comment</comments>
      <pubDate>Wed, 29 Mar 2023 18:21:48 +0900</pubDate>
    </item>
    <item>
      <title>컴퓨터 프로그램, 게임의 숨겨진 재미 Easter egg!</title>
      <link>https://dreamlog.tistory.com/623</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;Easter Egg의 의미와 유래&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Easter egg&quot;은 일반적으로 컴퓨터 프로그램, 게임, 영화 또는 책에 숨겨진 유머나 비밀 기능, 은어, 또는 참고 자료를 나타내는 용어이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부활절에 계란을 숨기고 아이들에게 찾는 놀이에서 착안하여 소프트웨어와 게임의 원래 기능과 무관한 메시지를 숨겨 놓은 걸 이스터 에그(Easter Egg)라고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최초로 Easter egg라는 용어를 사용한 것은 1979년 Atari의 비디오 게임 &quot;Adventure&quot;의 개발자인 Warren Robinett이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당시 Atari는 게임 개발자들의 이름을 게임에 공개하지 않았으며, 로비넷은 이에 반발하여 스스로 게임 안에 비밀 구역을 만들었다. 그리고 이 구역 안에 &quot;Created by Warren Robinett&quot;이라는 문구를 추가하여 자신의 이름을 암시하는 Easter egg를 만들었다. 이후로 이러한 비밀 기능들을 &quot;Easter egg&quot;이라는 용어로 부르게 되었다. &lt;br /&gt;&lt;br /&gt;이후에도 많은 프로그램에서 Easter egg가 추가되었으며, 이를 찾아내는 것이 프로그램 사용자들 사이에서 인기 있는 취미가 되기도 했다. 현재에는 많은 프로그램에서 Easter egg를 찾는 것이 사용자들 사이에서 널리 인기가 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;대표적인 Easter egg&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;I&amp;nbsp;am&amp;nbsp;root&quot;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 리눅스 운영체제에서 &quot;root&quot; 권한을 가진 사용자로 로그인하면 보이는 Easter egg이다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&quot;Do&amp;nbsp;a&amp;nbsp;barrel&amp;nbsp;roll&quot;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 구글 검색창에 이 문구를 입력하면 화면이 360도 회전하는 Easter egg가 실행된다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&quot;The&amp;nbsp;cake&amp;nbsp;is&amp;nbsp;a&amp;nbsp;lie&quot;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 포털 게임 시리즈에서 나오는 Easter egg이다. 이는 게임에서 약속된 보상인 &quot;케이크&quot;가 실제로는 없다는 것을 나타낸다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&quot;Konami&amp;nbsp;code&quot;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 비디오 게임에서 유명한 Easter egg 중 하나로 &quot;업, 업, 다운, 다운, 좌, 우, 좌, 우, B, A&quot;를 입력하면 추가 기능이 나타난다. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&quot;Power&amp;nbsp;overwhelming&quot;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 스타크래프트 게임에서 나오는 Easter egg이다. 이 문구를 입력하면 게임에서 무적 상태가 된다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Python의 Easter egg&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Python에는 여러 개의 Easter egg가 있으며 그 중 일부는 다음과 같다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;▶ Zen of Python&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬 인터프리터에서 &quot;import this&quot;를 입력하면 Zen of Python이란 &amp;nbsp;철학적인 글을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t6821/btrZ2z38lsS/6WNBWdwuVhphivjKn4kak0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t6821/btrZ2z38lsS/6WNBWdwuVhphivjKn4kak0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t6821/btrZ2z38lsS/6WNBWdwuVhphivjKn4kak0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft6821%2FbtrZ2z38lsS%2F6WNBWdwuVhphivjKn4kak0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;979&quot; height=&quot;512&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;▶ Antigravity&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;import antigravity&quot;를 실행하면 xkcd 코믹에서 유래한 웹페이지가 열린다. &lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;884&quot; data-origin-height=&quot;1914&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKITDK/btr0aP4Wom2/YoKR2f2jENmo5zErk2TCLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKITDK/btr0aP4Wom2/YoKR2f2jENmo5zErk2TCLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKITDK/btr0aP4Wom2/YoKR2f2jENmo5zErk2TCLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKITDK%2Fbtr0aP4Wom2%2FYoKR2f2jENmo5zErk2TCLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;884&quot; height=&quot;1914&quot; data-origin-width=&quot;884&quot; data-origin-height=&quot;1914&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;이 외에도 파이썬에는 다양한 Easter egg가 있다. 이러한 Easter egg들은 파이썬 개발자들이 즐길 수 있는 작은 재미로 제공되며, 프로그래밍 언어에 대한 열정을 공유하는 방법 중 하나이다. &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 Easter egg가 프로그램의 안정성을 저해할 수도 있기 때문에, 보안 문제나 안정성에 영향을 미칠 가능성이 있는 Easter egg를 추가하는 것을 피해야 한다.&lt;/p&gt;</description>
      <category>IT/Tip</category>
      <category>Easter Egg</category>
      <category>import this</category>
      <category>Warren Robinett</category>
      <category>Zen of Python</category>
      <category>이스터에그</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/623</guid>
      <comments>https://dreamlog.tistory.com/623#entry623comment</comments>
      <pubDate>Tue, 21 Feb 2023 01:22:32 +0900</pubDate>
    </item>
    <item>
      <title>Visual Studio Code에서 OpenAI의 GPT-3으로 혁신적인 코드 작성 및 분석 방법</title>
      <link>https://dreamlog.tistory.com/622</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. Visual Studio Code에서 OpenAI의 GPT-3 사용하기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenAI의 GPT-3은 자연어 응답과 완전한 코드를 생성하는 기능을 갖춘 최첨단 대규모 언어 모델이다.&amp;nbsp; &lt;br /&gt;확장을 통해 GPT-3을 Visual Studio Code에 통합하여 개발자는 이 강력한 도구를 활용하여 보다 효과적이고 효율적으로 코드를 작성하고 분석할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;주요 기능&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;① GPT-3으로&amp;nbsp;코드&amp;nbsp;작성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPT-3의&amp;nbsp;코드&amp;nbsp;작성&amp;nbsp;기능은&amp;nbsp;개발자를&amp;nbsp;위한&amp;nbsp;게임&amp;nbsp;체인저로&amp;nbsp;개발&amp;nbsp;시간을&amp;nbsp;절약하고&amp;nbsp;생산성을&amp;nbsp;높일&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp; &lt;br /&gt;Visual&amp;nbsp;Studio&amp;nbsp;Code에서&amp;nbsp;GPT-3&amp;nbsp;프롬프트에서&amp;nbsp;자연어로&amp;nbsp;요청만&amp;nbsp;개발자는&amp;nbsp;코딩&amp;nbsp;문제에&amp;nbsp;대한&amp;nbsp;도움을&amp;nbsp;받고&amp;nbsp;코드&amp;nbsp;조각을&amp;nbsp;생성하고&amp;nbsp;전체&amp;nbsp;함수를&amp;nbsp;작성할&amp;nbsp;수도&amp;nbsp;있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특히 개발자는 새로운 프로그래밍 언어를 배우는데 시간을 소비하지 않고도 쉽고 빠르게 코드를 작성할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;② GPT-3을&amp;nbsp;사용한&amp;nbsp;코드&amp;nbsp;분석&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드&amp;nbsp;작성&amp;nbsp;외에도&amp;nbsp;GPT-3을&amp;nbsp;사용하여&amp;nbsp;Visual&amp;nbsp;Studio&amp;nbsp;Code에서&amp;nbsp;코드를&amp;nbsp;분석할&amp;nbsp;수도&amp;nbsp;있다.&amp;nbsp; &lt;br /&gt;예를&amp;nbsp;들어&amp;nbsp;개발자는&amp;nbsp;GPT-3에&amp;nbsp;버그에&amp;nbsp;대한&amp;nbsp;코드&amp;nbsp;조각을&amp;nbsp;분석하고&amp;nbsp;이를&amp;nbsp;수정하기&amp;nbsp;위한&amp;nbsp;제안을&amp;nbsp;제공하도록&amp;nbsp;요청할&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp; &lt;br /&gt;이는&amp;nbsp;대규모&amp;nbsp;프로젝트에서&amp;nbsp;작업하고&amp;nbsp;코드&amp;nbsp;문제를&amp;nbsp;신속하게&amp;nbsp;식별하고&amp;nbsp;수정해야&amp;nbsp;하는&amp;nbsp;개발자에게&amp;nbsp;특히&amp;nbsp;유용할&amp;nbsp;수&amp;nbsp;있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;③ 보고서를&amp;nbsp;생성하고&amp;nbsp;코드&amp;nbsp;메트릭을&amp;nbsp;분석하는&amp;nbsp;것&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드&amp;nbsp;분석에&amp;nbsp;GPT-3를&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;또&amp;nbsp;다른&amp;nbsp;방법은&amp;nbsp;보고서를&amp;nbsp;생성하고&amp;nbsp;코드&amp;nbsp;메트릭을&amp;nbsp;분석하는&amp;nbsp;것이다.&amp;nbsp; &lt;br /&gt;예를&amp;nbsp;들어&amp;nbsp;개발자는&amp;nbsp;GPT-3에&amp;nbsp;코드&amp;nbsp;줄&amp;nbsp;수,&amp;nbsp;코드&amp;nbsp;복잡성,&amp;nbsp;버그&amp;nbsp;수를&amp;nbsp;포함하여&amp;nbsp;코드베이스의&amp;nbsp;전체&amp;nbsp;구조&amp;nbsp;및&amp;nbsp;성능에&amp;nbsp;대한&amp;nbsp;보고서를&amp;nbsp;생성하도록&amp;nbsp;요청할&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp; &lt;br /&gt;이는&amp;nbsp;코드베이스의&amp;nbsp;성능을&amp;nbsp;이해하고&amp;nbsp;개선이&amp;nbsp;필요한&amp;nbsp;영역을&amp;nbsp;식별해야&amp;nbsp;하는&amp;nbsp;개발자에게&amp;nbsp;유용한&amp;nbsp;도구가&amp;nbsp;될&amp;nbsp;수&amp;nbsp;있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결론&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Visual&amp;nbsp;Studio&amp;nbsp;Code의&amp;nbsp;OpenAI의&amp;nbsp;GPT-3는&amp;nbsp;보다&amp;nbsp;효율적이고&amp;nbsp;효과적인&amp;nbsp;방식으로&amp;nbsp;코드를&amp;nbsp;작성하고&amp;nbsp;분석하려는&amp;nbsp;개발자를&amp;nbsp;위한&amp;nbsp;강력한&amp;nbsp;도구이다.&amp;nbsp; &lt;br /&gt;코드&amp;nbsp;생성&amp;nbsp;및&amp;nbsp;작업&amp;nbsp;완료,&amp;nbsp;버그&amp;nbsp;코드&amp;nbsp;분석,&amp;nbsp;보고서&amp;nbsp;생성&amp;nbsp;기능을&amp;nbsp;통해&amp;nbsp;개발자는&amp;nbsp;시간을&amp;nbsp;절약하고&amp;nbsp;생산성을&amp;nbsp;높일&amp;nbsp;수&amp;nbsp;있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. Visual Studio Code에서 CodeGPT 사용 방법&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이&amp;nbsp;확장&amp;nbsp;중&amp;nbsp;하나인&amp;nbsp;CodeGPT을&amp;nbsp;통해&amp;nbsp;공식&amp;nbsp;OpenAI&amp;nbsp;API를&amp;nbsp;통해&amp;nbsp;VSCode&amp;nbsp;내에서&amp;nbsp;GPT-3를&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있다. &lt;br /&gt;이것은&amp;nbsp;코드&amp;nbsp;편집기에서&amp;nbsp;ChatGPT를&amp;nbsp;사용하는&amp;nbsp;것과&amp;nbsp;동등한&amp;nbsp;기능을&amp;nbsp;제공한다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용 절차&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;① &lt;/b&gt;VSCODE에서&amp;nbsp;CodeGPT&amp;nbsp;설치&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k5IGq/btrYY7e8T8S/DqjHCebcJi94vmvKPDEI60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k5IGq/btrYY7e8T8S/DqjHCebcJi94vmvKPDEI60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k5IGq/btrYY7e8T8S/DqjHCebcJi94vmvKPDEI60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk5IGq%2FbtrYY7e8T8S%2FDqjHCebcJi94vmvKPDEI60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;720&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확장을 선택하고 (1) 'code gpt'를 입력하여 (2) 표시된 첫 code gpt를 선택하고 (3) 설치를 선택한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;&lt;b&gt;②&lt;/b&gt;&amp;nbsp;API&amp;nbsp;KEY&amp;nbsp;생성&amp;nbsp;및&amp;nbsp;등록&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1500&quot; data-origin-height=&quot;1125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J8B3S/btrYUvgMfUs/7gFrIwgjxYmDtIEqPqdQc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J8B3S/btrYUvgMfUs/7gFrIwgjxYmDtIEqPqdQc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J8B3S/btrYUvgMfUs/7gFrIwgjxYmDtIEqPqdQc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ8B3S%2FbtrYUvgMfUs%2F7gFrIwgjxYmDtIEqPqdQc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1500&quot; height=&quot;1125&quot; data-origin-width=&quot;1500&quot; data-origin-height=&quot;1125&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 후 설정을 눌러 [확장 설정]을 선택한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TkORL/btrY1mXtC4h/KmhPpR7uwp0dZ0ACoEaYTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TkORL/btrY1mXtC4h/KmhPpR7uwp0dZ0ACoEaYTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TkORL/btrY1mXtC4h/KmhPpR7uwp0dZ0ACoEaYTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTkORL%2FbtrY1mXtC4h%2FKmhPpR7uwp0dZ0ACoEaYTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;980&quot; height=&quot;720&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;OpenAI의 API Key를 등록하기 위해 [API Key]를 누르면 아래 팝업 창이 나타난다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;144&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWWJK5/btrYToP3uFr/28mLJOFI7j7ENaMcYRrnT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWWJK5/btrYToP3uFr/28mLJOFI7j7ENaMcYRrnT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWWJK5/btrYToP3uFr/28mLJOFI7j7ENaMcYRrnT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWWJK5%2FbtrYToP3uFr%2F28mLJOFI7j7ENaMcYRrnT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;144&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;144&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;1014&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZMFg1/btrYT8lG3JB/xKwifKlW3YeTmkxQ9RDsLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZMFg1/btrYT8lG3JB/xKwifKlW3YeTmkxQ9RDsLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZMFg1/btrYT8lG3JB/xKwifKlW3YeTmkxQ9RDsLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZMFg1%2FbtrYT8lG3JB%2FxKwifKlW3YeTmkxQ9RDsLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1014&quot; height=&quot;720&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[Create new secret key]를 눌러 키를 생성하고 복사해둔다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1676&quot; data-origin-height=&quot;1555&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCS4vr/btrY8itpRO7/ZEkuUrgMHTWkKdFhByCe1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCS4vr/btrY8itpRO7/ZEkuUrgMHTWkKdFhByCe1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCS4vr/btrY8itpRO7/ZEkuUrgMHTWkKdFhByCe1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCS4vr%2FbtrY8itpRO7%2FZEkuUrgMHTWkKdFhByCe1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1676&quot; height=&quot;1555&quot; data-origin-width=&quot;1676&quot; data-origin-height=&quot;1555&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[ctrl+shift+p]를 눌러 나타난 팝업 창에 [codegpt set]을 넣고 엔터 키를 누르고 나타난 텍스트 박스에 키를 붙여 넣는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;③ &lt;/b&gt;CodeGPT에게&amp;nbsp;코드&amp;nbsp;요청하기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1238&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Jz9SF/btrYT9LFNju/gGL8HBvzcrrn0de1Y1LMb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Jz9SF/btrYT9LFNju/gGL8HBvzcrrn0de1Y1LMb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Jz9SF/btrYT9LFNju/gGL8HBvzcrrn0de1Y1LMb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJz9SF%2FbtrYT9LFNju%2FgGL8HBvzcrrn0de1Y1LMb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1238&quot; height=&quot;720&quot; data-origin-width=&quot;1238&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;B-Tree.py 파일을 만들고&amp;nbsp; [# make a b-tree program] (1)코멘트를 쓰고 (2) [&lt;b&gt;ctrl_shift+i&lt;/b&gt;]를 누르면 CodeGPT가 다음과 같은 코드를 생성한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1238&quot; data-origin-height=&quot;729&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cErbs6/btrY7MagRmH/DTskZPepnEgytMk8KB2LDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cErbs6/btrY7MagRmH/DTskZPepnEgytMk8KB2LDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cErbs6/btrY7MagRmH/DTskZPepnEgytMk8KB2LDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcErbs6%2FbtrY7MagRmH%2FDTskZPepnEgytMk8KB2LDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1238&quot; height=&quot;729&quot; data-origin-width=&quot;1238&quot; data-origin-height=&quot;729&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;같은 코멘트에서 &lt;span&gt;동일하게&lt;span&gt; &lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;CodeGPT를 실행하면 유사한 코드를 생성해 주는데 이번에는 들여쓰기 오류가 있어 이전 생성한 코드와 머지를 하였다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1858&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ci7ANW/btrY7LWJUKk/DFB84wUMx9ckNsAt0k09HK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ci7ANW/btrY7LWJUKk/DFB84wUMx9ckNsAt0k09HK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ci7ANW/btrY7LWJUKk/DFB84wUMx9ckNsAt0k09HK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fci7ANW%2FbtrY7LWJUKk%2FDFB84wUMx9ckNsAt0k09HK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1858&quot; height=&quot;1080&quot; data-origin-width=&quot;1858&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# make a b-tree program&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;__init__&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;): &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;left&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;None&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;self&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;right&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;None&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# Function to insert a new node &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;insert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;): &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# If the tree is empty, return a new node &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;is&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;None&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# Otherwise recur down the tree &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &amp;lt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.data: &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.left = &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;insert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.left, &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;elif&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.data: &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.right = &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;insert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.right, &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# return the (unchanged) node pointer &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;inorder&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;is&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;None&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;inorder&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.left)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.data)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;inorder&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.right)&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# Preorder function&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;preorder&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;tree&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;): &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;tree&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;tree&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.data) &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;preorder&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;tree&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.left) &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;preorder&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;tree&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.right) &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# Postorder function &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;postorder&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;tree&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;): &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;tree&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;postorder&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;tree&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.left) &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;postorder&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;tree&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.right) &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;tree&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.data)&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# Given a binary search tree and a number, inserts a new Node with the given number in the correct place in the tree. Returns the new root pointer which the caller should then use (the standard trick to avoid using reference parameters). &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;search&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;): &lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# Base Case: If tree is empty or key is present at root, we're done &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;is&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;None&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;or&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.data == &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# Key is greater than root's key &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.data &amp;lt; &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;: &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;search&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.right, &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;# Key is smaller than root's key &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;search&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;node&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;.left, &lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;data&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;None&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;insert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;insert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;30&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;insert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;insert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;40&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;insert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;70&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;insert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;60&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;insert&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #b5cea8;&quot;&gt;80&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;) &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Inorder traveral of the given tree.&quot;&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;inorder&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;))&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;preorder&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;))&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;print&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;postorder&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #9cdcfe;&quot;&gt;root&lt;/span&gt;&lt;span style=&quot;color: #d4d4d4;&quot;&gt;))&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성된 코드를 실행하면 정상적으로 수행된 결과를 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1858&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bephrx/btrY7LvE3f6/FfHXNQFo2sOxWKLPmTlIyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bephrx/btrY7LvE3f6/FfHXNQFo2sOxWKLPmTlIyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bephrx/btrY7LvE3f6/FfHXNQFo2sOxWKLPmTlIyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbephrx%2FbtrY7LvE3f6%2FFfHXNQFo2sOxWKLPmTlIyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1858&quot; height=&quot;1080&quot; data-origin-width=&quot;1858&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;④&amp;nbsp;&lt;/span&gt;CodeGPT로 코드 분석하기&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1936&quot; data-origin-height=&quot;1125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbuzgC/btrYVgKytGw/jDSKxtc0wXBUy9IgeKKH70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbuzgC/btrYVgKytGw/jDSKxtc0wXBUy9IgeKKH70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbuzgC/btrYVgKytGw/jDSKxtc0wXBUy9IgeKKH70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbuzgC%2FbtrYVgKytGw%2FjDSKxtc0wXBUy9IgeKKH70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1936&quot; height=&quot;1125&quot; data-origin-width=&quot;1936&quot; data-origin-height=&quot;1125&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성된 코드 중 inorder() 함수를 선택하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마우스 오른쪽 버튼으로 클릭한 다음 &quot;Explain CodeGPT&quot; 옵션을 선택한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 CodeGPT가 새 창을 열고 코드를 설명한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1238&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIANFg/btrYSC8SK1N/9e8YsyOYk9FXDAK4lFYFxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIANFg/btrYSC8SK1N/9e8YsyOYk9FXDAK4lFYFxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIANFg/btrYSC8SK1N/9e8YsyOYk9FXDAK4lFYFxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIANFg%2FbtrYSC8SK1N%2F9e8YsyOYk9FXDAK4lFYFxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1238&quot; height=&quot;720&quot; data-origin-width=&quot;1238&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 코드 생성과 코드 분석을 통해 CodeGPT는 개발자에게 혁신적인 도구가 될 것으로 보인다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;이제 GPT와 같은 AI를 쓸 수 있는 개발 도구만이 살아남을 것이다.&lt;/b&gt;&lt;/h4&gt;</description>
      <category>AI</category>
      <category>AI Code Completion</category>
      <category>AI in Development</category>
      <category>AI-Powered Code Assistance</category>
      <category>CodeGPT</category>
      <category>OpenAI's GPT-3</category>
      <category>visual studio code</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/622</guid>
      <comments>https://dreamlog.tistory.com/622#entry622comment</comments>
      <pubDate>Mon, 13 Feb 2023 01:11:01 +0900</pubDate>
    </item>
    <item>
      <title>Oracle Database 21c XE 시작하기: 계정 및 SQL 샘플 생성</title>
      <link>https://dreamlog.tistory.com/621</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;데이터베이스 관리 도구&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Oracle Database 21c XE를 설치하면 오라클 데이터베이스 관리 도구들이 설치된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 설치되는 &lt;b&gt;SQL*Plus&lt;/b&gt;는 Oracle 데이터베이스 작업을 위한 명령줄 인터페이스(&lt;b&gt;CLI&lt;/b&gt;)이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자는 SQL 문, 스크립트 및 PL/SQL 블록을 실행할 수 있으며 데이터베이스와 직접 상호 작용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SQL Developer&lt;/b&gt;는 Oracle 데이터베이스 작업을 위한 그래픽 사용자 인터페이스(&lt;b&gt;GUI&lt;/b&gt;)로&amp;nbsp;데이터베이스를 관리하고, SQL 문을 실행하고, 그래픽 인터페이스를 통해 데이터베이스와 상호 작용하는 방법을 제공한다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;계정 생성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Oracle Database 21c XE 사용하려면 다음과 같이 사용자 계정을 생성해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 명령을 입력하여 새 사용자 계정을 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Oracle Database XE를 시작한다. (설치 후 자동 실행되므로 따로 실행하지 않아도 된다.)&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;net start OracleServiceXE&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQL*Plus를 SYSTEM 사용자로 사용하여 데이터베이스에 연결한다:&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;sqlplus sys as sysdba&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 명령을 입력하여 새 사용자 계정을 만든다:&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;CREATE USER &amp;lt;username&amp;gt; IDENTIFIED BY &amp;lt;password&amp;gt;;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성한 계정에 필요한 권한을 부여한다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;GRANT CONNECT, RESOURCE, CREATE SESSION TO &amp;lt;username&amp;gt;;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 윈도 명령 프롬프트에서 위 명령들을 실행하고 결과를 확인해보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;577&quot; data-origin-height=&quot;389&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qwgxq/btrX9FpIr78/H0L5svDEp35h8n4COdyPFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qwgxq/btrX9FpIr78/H0L5svDEp35h8n4COdyPFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qwgxq/btrX9FpIr78/H0L5svDEp35h8n4COdyPFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqwgxq%2FbtrX9FpIr78%2FH0L5svDEp35h8n4COdyPFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;577&quot; height=&quot;389&quot; data-origin-width=&quot;577&quot; data-origin-height=&quot;389&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다.]란 오류로 계정을 만들 수 없다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;ORA-65096 해결책&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;1. 접두어 있는 일반 사용자로 생성&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fafafa;&quot;&gt;오라클 12c부터&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #fafafa;&quot;&gt;일반 사용자의 경우 사용자 생성에 c## 접두사를 사용해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fafafa;&quot;&gt;따라서 간단히 원하는 이름 앞에 지정된 접두어를 붙이면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSF3R4/btrX3rNclg6/KqEhHkeDXxrv7p3RKxYRHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSF3R4/btrX3rNclg6/KqEhHkeDXxrv7p3RKxYRHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSF3R4/btrX3rNclg6/KqEhHkeDXxrv7p3RKxYRHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSF3R4%2FbtrX3rNclg6%2FKqEhHkeDXxrv7p3RKxYRHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;979&quot; height=&quot;512&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/csSQwg/btrX2ZwLicu/GSd0XElk3jWUdiwW9lrrvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/csSQwg/btrX2ZwLicu/GSd0XElk3jWUdiwW9lrrvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csSQwg/btrX2ZwLicu/GSd0XElk3jWUdiwW9lrrvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcsSQwg%2FbtrX2ZwLicu%2FGSd0XElk3jWUdiwW9lrrvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;979&quot; height=&quot;512&quot; data-origin-width=&quot;979&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;c##test 이름의 일반 사용자 계정이 만들고 권한을 부여한 후 정상적으로 접속할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;2. 접두어 없이 일반 사용자로 생성&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;556&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rZ6SH/btrX3ZiBmxw/WRtF0v1x8jLzhzeppzxjDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rZ6SH/btrX3ZiBmxw/WRtF0v1x8jLzhzeppzxjDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rZ6SH/btrX3ZiBmxw/WRtF0v1x8jLzhzeppzxjDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrZ6SH%2FbtrX3ZiBmxw%2FWRtF0v1x8jLzhzeppzxjDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;548&quot; height=&quot;556&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;556&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;_oracle_script내부의&amp;nbsp;숨겨진&amp;nbsp;Oracle&amp;nbsp;데이터베이스&amp;nbsp;매개변수로&amp;nbsp;참&amp;nbsp;또는&amp;nbsp;거짓의&amp;nbsp;값을&amp;nbsp;가지며&amp;nbsp;SQL&amp;nbsp;문이&amp;nbsp;스크립트의&amp;nbsp;일부로&amp;nbsp;실행되는지&amp;nbsp;또는&amp;nbsp;개별&amp;nbsp;명령으로&amp;nbsp;실행되는지를&amp;nbsp;결정한다. &lt;br /&gt;_oracle_script가&amp;nbsp;true로&amp;nbsp;설정&amp;nbsp;되면&amp;nbsp;데이터베이스는&amp;nbsp;각&amp;nbsp;SQL&amp;nbsp;문을&amp;nbsp;스크립트의&amp;nbsp;일부로&amp;nbsp;처리한다. &lt;br /&gt;&lt;br /&gt;사용자&amp;nbsp;및&amp;nbsp;역할&amp;nbsp;이름에&amp;nbsp;대한&amp;nbsp;완화된&amp;nbsp;제한으로&amp;nbsp;보안&amp;nbsp;취약점이&amp;nbsp;발생할&amp;nbsp;수&amp;nbsp;있기&amp;nbsp;때문에&amp;nbsp;개발환경에서만&amp;nbsp;설정하는&amp;nbsp;것이&amp;nbsp;좋다. &lt;br /&gt;프로덕션&amp;nbsp;환경에서는&amp;nbsp;사용자&amp;nbsp;및&amp;nbsp;역할&amp;nbsp;명명&amp;nbsp;규칙에&amp;nbsp;대한&amp;nbsp;모범&amp;nbsp;사례를&amp;nbsp;따르는&amp;nbsp;것을&amp;nbsp;추천한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;3.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;접두어 없는 로컬 사용자로 생성&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;521&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8I8Gr/btrX2W0ZCfJ/kgmmf2193m9XMkBXuG6nr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8I8Gr/btrX2W0ZCfJ/kgmmf2193m9XMkBXuG6nr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8I8Gr/btrX2W0ZCfJ/kgmmf2193m9XMkBXuG6nr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8I8Gr%2FbtrX2W0ZCfJ%2Fkgmmf2193m9XMkBXuG6nr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;645&quot; height=&quot;521&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;521&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;XEPDB1 데이터베이스에 test2 계정을 생성하고 권한을 부여하였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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 data-ke-size=&quot;size16&quot;&gt;Oracle 데이터베이스에는 COMMON_USERS 및 LOCAL_USERS의 사용자 유형이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;다중 테넌트 컨테이너 데이터베이스&lt;span style=&quot;background-color: #fafafa;&quot;&gt;(CDB)&lt;/span&gt;는 여러 개의 독립적인 플러그 가능한 데이터베이스(&lt;span style=&quot;background-color: #fafafa;&quot;&gt;PDB&lt;/span&gt;)를 포함하는 데이터베이스이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 플러그 가능 데이터베이스에는 고유한 스키마, 테이블 및 기타 데이터베이스 개체 집합이 있다. &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fafafa;&quot;&gt;일반 사용자는 &lt;/span&gt;COMMON_USERS 유형으로 CDB 수준에서 생성되고 CDB 내의 모든 PDB에서 사용할 수 있고 모든 PDB에서 동일한 암호와 권한을 가진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;로컬 사용자는 LOCAL_USERS 유형으로 특정 PDB에서 생성되고 해당 PDB에서만 사용할 수 있는 사용자이다. CDB 내의 다른 PDB에서는 사용할 수 없다. 이러한 사용자는 각 PDB에서 서로 다른 암호와 권한을 가질 수 있다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/Database</category>
      <category>데이터베이스 계정 생성</category>
      <category>데이터베이스 관리</category>
      <category>오라클 21c XE</category>
      <category>오라클 데이터베이스 튜토리얼</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/621</guid>
      <comments>https://dreamlog.tistory.com/621#entry621comment</comments>
      <pubDate>Sun, 5 Feb 2023 04:30:37 +0900</pubDate>
    </item>
    <item>
      <title>Oracle DB 21C Express Edition(XE) 개요, 설치 및 설정</title>
      <link>https://dreamlog.tistory.com/620</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Oracle Database 21c Express Edition (XE)는 Oracle사에서 제공하는 무료 데이터베이스 관리 시스템이다. 이 버전은 개발자와 소규모 조직을 위해 제공되며, 가용 메모리와 CPU 코어 수에 제한이 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;설치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Windows 운영 체제에서 설치하는 방법은 다음과 같다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Oracle Database 21c XE 다운로드 페이지(&lt;a title=&quot;Oracle Database 21c XE 버전 다운로드 URL&quot; href=&quot;https://www.oracle.com/database/technologies/xe-downloads.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.oracle.com/database/technologies/xe-downloads.html&lt;/a&gt;)에서 Windows 용 설치 파일을 다운로드한다.&lt;/li&gt;
&lt;li&gt;설치 파일을 실행하여 설치를 시작한다.&lt;/li&gt;
&lt;li&gt;설치 과정에서 요구되는 정보를 입력하고 설치를 완료한다.&lt;/li&gt;
&lt;li&gt;완료 후 표시되는 중요한 정보 3가지 정보를 기억해야 한다.&lt;/li&gt;
&lt;/ol&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;오라클 데이터베이스를 관리하는 Enterprise Manager Database Express (EM)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;381&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMWbng/btrW2tqnYXu/W7zkO5FQlIrEiqMdB4eYV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMWbng/btrW2tqnYXu/W7zkO5FQlIrEiqMdB4eYV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMWbng/btrW2tqnYXu/W7zkO5FQlIrEiqMdB4eYV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMWbng%2FbtrW2tqnYXu%2FW7zkO5FQlIrEiqMdB4eYV0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;381&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;381&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;데이터베이스 서비스 시작과 종료&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Oracle&amp;nbsp;Database&amp;nbsp;XE를&amp;nbsp;설치하면&amp;nbsp;데이터베이스가&amp;nbsp;실행되어&amp;nbsp;바로&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로&amp;nbsp;Oracle&amp;nbsp;데이터베이스&amp;nbsp;서비스는&amp;nbsp;컨테이너&amp;nbsp;데이터베이스(CDB)를&amp;nbsp;자동으로&amp;nbsp;시작하고&amp;nbsp;열지만&amp;nbsp;플러그형&amp;nbsp;데이터베이스는&amp;nbsp;기본적으로&amp;nbsp;닫힌&amp;nbsp;상태로&amp;nbsp;유지된다. &lt;br /&gt;플러그형 데이터베이스(PDB)는 사용하기 전에 열어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 후 다음과 같이 Windows 서비스를 사용하여 데이터베이스를 시작하거나 중지할 수 있다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;윈도우+R' 키를 눌러 실행창을 연다.&lt;/li&gt;
&lt;li&gt;services.msc를 입력하고 Enter 키를 누른다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;399&quot; data-origin-height=&quot;206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dygaeN/btrXcqm2J4d/S2EzWoCoVZexXgpFuAQSd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dygaeN/btrXcqm2J4d/S2EzWoCoVZexXgpFuAQSd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dygaeN/btrXcqm2J4d/S2EzWoCoVZexXgpFuAQSd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdygaeN%2FbtrXcqm2J4d%2FS2EzWoCoVZexXgpFuAQSd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;399&quot; height=&quot;206&quot; data-origin-width=&quot;399&quot; data-origin-height=&quot;206&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서비스 창 OracleServiceXE에서 서비스를 찾고 마우스 오른쪽 버튼을 클릭해 메뉴에서 시작 또는 중지를 선택한다 . (정상적으로 설치된 경우 상태가 '실행 중'으로 표시되어 있다.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;658&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAQ0ry/btrXbDfQ3r7/nIF3YTFvhLdnEfTyR15m5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAQ0ry/btrXbDfQ3r7/nIF3YTFvhLdnEfTyR15m5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAQ0ry/btrXbDfQ3r7/nIF3YTFvhLdnEfTyR15m5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAQ0ry%2FbtrXbDfQ3r7%2FnIF3YTFvhLdnEfTyR15m5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;446&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;658&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;또는 다음과 같이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;net 명령&lt;/b&gt;을 사용하여 데이터베이스를 시작하거나 중지할 수 있다:&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;195&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c58YrB/btrXar8W4dV/lDZxwCpnpjHhruIAIidlm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c58YrB/btrXar8W4dV/lDZxwCpnpjHhruIAIidlm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c58YrB/btrXar8W4dV/lDZxwCpnpjHhruIAIidlm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc58YrB%2FbtrXar8W4dV%2FlDZxwCpnpjHhruIAIidlm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;412&quot; height=&quot;195&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;195&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또는 다음과 같이 &lt;b&gt;SQL PLUS&lt;/b&gt;를 사용하여 데이터베이스를 시작하거나 중지할 수 있다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터베이스를 종료하려면 SQL Plus에서 다음 명령을 실행한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;direction: ltr; unicode-bidi: embed; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px; background: #f8f8f8;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sqlplus&amp;nbsp;/&amp;nbsp;as&amp;nbsp;sysdba&lt;br /&gt;SQL&amp;gt;&amp;nbsp;SHUTDOWN&amp;nbsp;IMMEDIATE&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;769&quot; data-origin-height=&quot;387&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/be3PEy/btrW6pKjBy2/FkQNtTMSygYk6umrhHPSZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/be3PEy/btrW6pKjBy2/FkQNtTMSygYk6umrhHPSZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/be3PEy/btrW6pKjBy2/FkQNtTMSygYk6umrhHPSZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbe3PEy%2FbtrW6pKjBy2%2FFkQNtTMSygYk6umrhHPSZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;769&quot; height=&quot;387&quot; data-origin-width=&quot;769&quot; data-origin-height=&quot;387&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터베이스 종료 후 SQL developer로 접속을 시도하면 다음과 같은 오류가 난다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;430&quot; data-origin-height=&quot;207&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQdBl7/btrW9l8Kajo/Zd9vpH0csmMceNxSgaiJh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQdBl7/btrW9l8Kajo/Zd9vpH0csmMceNxSgaiJh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQdBl7/btrW9l8Kajo/Zd9vpH0csmMceNxSgaiJh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQdBl7%2FbtrW9l8Kajo%2FZd9vpH0csmMceNxSgaiJh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;430&quot; height=&quot;207&quot; data-origin-width=&quot;430&quot; data-origin-height=&quot;207&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터베이스를&amp;nbsp;시작하려면&amp;nbsp;다음&amp;nbsp;명령을&amp;nbsp;실행한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;direction: ltr; unicode-bidi: embed; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px; background: #f8f8f8;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQL&amp;gt;&amp;nbsp;STARTUP &lt;br /&gt;SQL&amp;gt;&amp;nbsp;ALTER&amp;nbsp;PLUGGABLE&amp;nbsp;DATABASE&amp;nbsp;ALL&amp;nbsp;OPEN;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;769&quot; data-origin-height=&quot;387&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cebGLm/btrXgxlRrDi/lEJhx8STKO3YBQCtTL2B4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cebGLm/btrXgxlRrDi/lEJhx8STKO3YBQCtTL2B4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cebGLm/btrXgxlRrDi/lEJhx8STKO3YBQCtTL2B4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcebGLm%2FbtrXgxlRrDi%2FlEJhx8STKO3YBQCtTL2B4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;769&quot; height=&quot;387&quot; data-origin-width=&quot;769&quot; data-origin-height=&quot;387&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Oracle Database 21c XE가 정상적으로 실행되는지 확인하는 방법들&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;윈도우 명령 프롬프트나 파워쉘에서 &quot;sc query&quot; 명령을 실행하여 서비스 상태를 확인한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;direction: ltr; unicode-bidi: embed; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px; background: #f8f8f8;&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sc&amp;nbsp;query&amp;nbsp;OracleServiceXE&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;775&quot; data-origin-height=&quot;219&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/utjg8/btrXcp3Krgs/q7CInRl5rrjPrpQFz1tbM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/utjg8/btrXcp3Krgs/q7CInRl5rrjPrpQFz1tbM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/utjg8/btrXcp3Krgs/q7CInRl5rrjPrpQFz1tbM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Futjg8%2FbtrXcp3Krgs%2Fq7CInRl5rrjPrpQFz1tbM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;775&quot; height=&quot;219&quot; data-origin-width=&quot;775&quot; data-origin-height=&quot;219&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Oracle SQLPlus: SQLPlus를 실행하고 &quot;CONNECT sys as sysdba&quot;를 입력하여 시스템 계정으로 데이터베이스에 연결, &quot;SELECT status FROM v$instance;&quot;를 입력하여 데이터베이스 인스턴스 상태를 확인한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;769&quot; data-origin-height=&quot;387&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brZZxH/btrXc9sVETl/CPCRf5A4yvYYR60nkwYC21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brZZxH/btrXc9sVETl/CPCRf5A4yvYYR60nkwYC21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brZZxH/btrXc9sVETl/CPCRf5A4yvYYR60nkwYC21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrZZxH%2FbtrXc9sVETl%2FCPCRf5A4yvYYR60nkwYC21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;769&quot; height=&quot;387&quot; data-origin-width=&quot;769&quot; data-origin-height=&quot;387&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;윈도우 명령 프롬프트나 파워쉘에서 &quot;lsnrctl status&quot;&amp;nbsp;명령을 실행하여 서비스 상태를 확인한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;557&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HzJxF/btrXgxtdBdt/8ypK84uiyqgkjewc7IDKxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HzJxF/btrXgxtdBdt/8ypK84uiyqgkjewc7IDKxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HzJxF/btrXgxtdBdt/8ypK84uiyqgkjewc7IDKxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHzJxF%2FbtrXgxtdBdt%2F8ypK84uiyqgkjewc7IDKxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;519&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;557&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;lsnrctl란?&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;lsnrctl은 Oracle 데이터베이스 리스너를 관리하는 명령줄 도구이고 리스너의 상태를 시작, 중지 및 확인하고 리스너 매개 변수 및 서비스를 구성하는데 사용된다.&lt;br /&gt;lsnrctl은&amp;nbsp;Oracle&amp;nbsp;Database&amp;nbsp;소프트웨어&amp;nbsp;패키지의&amp;nbsp;일부로&amp;nbsp;Oracle이&amp;nbsp;제공한다.&lt;br /&gt;리스너는&amp;nbsp;Oracle&amp;nbsp;데이터베이스&amp;nbsp;시스템의&amp;nbsp;중요한&amp;nbsp;구성&amp;nbsp;요소이며&amp;nbsp;클라이언트&amp;nbsp;응용&amp;nbsp;프로그램과&amp;nbsp;데이터베이스&amp;nbsp;간의&amp;nbsp;연결&amp;nbsp;관리를&amp;nbsp;담당한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 lsnrctl 사용 예제이다.&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;822&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2Le2N/btrXbsmlhCr/2Ota1g2wiKC43PpuWo2sc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2Le2N/btrXbsmlhCr/2Ota1g2wiKC43PpuWo2sc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2Le2N/btrXbsmlhCr/2Ota1g2wiKC43PpuWo2sc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2Le2N%2FbtrXbsmlhCr%2F2Ota1g2wiKC43PpuWo2sc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;766&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;822&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT/Database</category>
      <category>lsnrctl</category>
      <category>Oracle Database 21c</category>
      <category>Oracle Database 21c XE</category>
      <category>SQL PLUS</category>
      <category>오라클 데이터베이스</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/620</guid>
      <comments>https://dreamlog.tistory.com/620#entry620comment</comments>
      <pubDate>Thu, 26 Jan 2023 15:48:59 +0900</pubDate>
    </item>
    <item>
      <title>ChatGPT 사용 후기</title>
      <link>https://dreamlog.tistory.com/619</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;GPT-3 (Generative Pre-trained Transformer-3, 생성적 사전 학습된 변환기)는 2020년 5월 OpenAI에서 공개한 신경망 언어 모델이다. 이때&amp;nbsp;GPT-3는 사람이 쓴 것과 구별하기 어려울 정도로 좋은 품질의 대화, 번역이나 작문을 할 수 있어 큰 반향을 일으켰다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 2022년 11월에 OpenAI에서 ChatGPT란 챗봇을 소개했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ChatGPT는 GPT-3 계역의 대규모 언어 모델을 기반으로 개발되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;챗봇은 사람과 대화하는 프로그램인데 ChatGPT는 최신 인공지능 챗봇으로 만물박사와 대화하는 느낌을 준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ChatGPT를 다양하게 활용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 일상 생활과 회사 업무에 ChatGPT를 사용한 몇 개의 사례들 보여주어 다양한 활용 가능성을 알아보려 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;OpenAI 누리집&quot; href=&quot;https://openai.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI 누리집&lt;/a&gt; 접속 후 계정 생성&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvjkXk/btrWCq9EF9c/alnKubKZHe5Ykf450SwtOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvjkXk/btrWCq9EF9c/alnKubKZHe5Ykf450SwtOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvjkXk/btrWCq9EF9c/alnKubKZHe5Ykf450SwtOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvjkXk%2FbtrWCq9EF9c%2FalnKubKZHe5Ykf450SwtOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;720&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;Sign up&quot;을 눌러 계정을 만들고 ChatGPT를 사용한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1259&quot; data-origin-height=&quot;819&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/N8e3C/btrWCx8HpMw/XHh0kcAtIykv33dmoZ4HL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/N8e3C/btrWCx8HpMw/XHh0kcAtIykv33dmoZ4HL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/N8e3C/btrWCx8HpMw/XHh0kcAtIykv33dmoZ4HL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN8e3C%2FbtrWCx8HpMw%2FXHh0kcAtIykv33dmoZ4HL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1259&quot; height=&quot;819&quot; data-origin-width=&quot;1259&quot; data-origin-height=&quot;819&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageslideblock alignCenter&quot; data-image=&quot;[{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/tZej5/btrWyOcHQLX/zFNTTosC2s1WMTJYdjGrGk/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bZr8PJ/btrWDPmZvlI/YJNPjbLTtCLOnnkfZQdtZ1/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/vTHHr/btrWCqV7yb1/nOT9WSspgYMxq4kdXoXku1/img.png&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/IfoyT/btrWyLz706T/PL0pLidtdi8mRcApdJdfU1/img.png&amp;quot;}]&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span class=&quot;image-wrap selected&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tZej5/btrWyOcHQLX/zFNTTosC2s1WMTJYdjGrGk/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/tZej5/btrWyOcHQLX/zFNTTosC2s1WMTJYdjGrGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tZej5/btrWyOcHQLX/zFNTTosC2s1WMTJYdjGrGk/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtZej5%2FbtrWyOcHQLX%2FzFNTTosC2s1WMTJYdjGrGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1259&quot; data-origin-height=&quot;819&quot; data-is-animation=&quot;false&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZr8PJ/btrWDPmZvlI/YJNPjbLTtCLOnnkfZQdtZ1/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bZr8PJ/btrWDPmZvlI/YJNPjbLTtCLOnnkfZQdtZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZr8PJ/btrWDPmZvlI/YJNPjbLTtCLOnnkfZQdtZ1/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZr8PJ%2FbtrWDPmZvlI%2FYJNPjbLTtCLOnnkfZQdtZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1259&quot; data-origin-height=&quot;819&quot; data-is-animation=&quot;false&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vTHHr/btrWCqV7yb1/nOT9WSspgYMxq4kdXoXku1/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/vTHHr/btrWCqV7yb1/nOT9WSspgYMxq4kdXoXku1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vTHHr/btrWCqV7yb1/nOT9WSspgYMxq4kdXoXku1/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvTHHr%2FbtrWCqV7yb1%2FnOT9WSspgYMxq4kdXoXku1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1259&quot; data-origin-height=&quot;819&quot; data-is-animation=&quot;false&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IfoyT/btrWyLz706T/PL0pLidtdi8mRcApdJdfU1/img.png&quot; data-url=&quot;https://blog.kakaocdn.net/dn/IfoyT/btrWyLz706T/PL0pLidtdi8mRcApdJdfU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IfoyT/btrWyLz706T/PL0pLidtdi8mRcApdJdfU1/img.png&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIfoyT%2FbtrWyLz706T%2FPL0pLidtdi8mRcApdJdfU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1259&quot; data-origin-height=&quot;819&quot; data-is-animation=&quot;false&quot;/&gt;&lt;/span&gt;&lt;button class=&quot;btn btn-prev&quot;&gt;&lt;span class=&quot;ico-prev&quot;&gt;이전&lt;/span&gt;&lt;/button&gt;&lt;button class=&quot;btn btn-next&quot;&gt;&lt;span class=&quot;ico-next&quot;&gt;다음&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;
  &lt;div class=&quot;mark&quot;&gt;&lt;span data-index=&quot;0&quot;&gt;0&lt;/span&gt;&lt;span data-index=&quot;1&quot;&gt;1&lt;/span&gt;&lt;span data-index=&quot;2&quot;&gt;2&lt;/span&gt;&lt;span data-index=&quot;3&quot;&gt;3&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;영어 인터뷰 준비&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째 질문을 해보자.&lt;/p&gt;
&lt;pre id=&quot;codecell12&quot; class=&quot;livecodeserver&quot;&gt;&lt;code&gt;How do I prepare an english interview as foreigner?&lt;/code&gt;&lt;/pre&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;1876&quot; data-origin-height=&quot;1125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nGK6r/btrWCV2mqJi/McwBd84Ai8LXzSCGQmcoWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nGK6r/btrWCV2mqJi/McwBd84Ai8LXzSCGQmcoWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nGK6r/btrWCV2mqJi/McwBd84Ai8LXzSCGQmcoWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnGK6r%2FbtrWCV2mqJi%2FMcwBd84Ai8LXzSCGQmcoWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1876&quot; height=&quot;1125&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;1125&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;1090&quot; data-origin-height=&quot;1013&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTIojq/btrWCVafZKI/9KjgWMKJ7QuPiNokmzS4y0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTIojq/btrWCVafZKI/9KjgWMKJ7QuPiNokmzS4y0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTIojq/btrWCVafZKI/9KjgWMKJ7QuPiNokmzS4y0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTIojq%2FbtrWCVafZKI%2F9KjgWMKJ7QuPiNokmzS4y0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1090&quot; height=&quot;1013&quot; data-origin-width=&quot;1090&quot; data-origin-height=&quot;1013&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;공통 인터뷰 질문에 대한 답을 준비하라.&quot;는 내용을 보고 공통 질문의 사례를 추가로 물어보았다.&lt;/p&gt;
&lt;pre id=&quot;codecell12&quot; class=&quot;angelscript&quot;&gt;&lt;code&gt;What are common interview questions in English?&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;573&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRD2MG/btrWCVuMzj5/QErYlcUYk4KUcN82CaIXek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRD2MG/btrWCVuMzj5/QErYlcUYk4KUcN82CaIXek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRD2MG/btrWCVuMzj5/QErYlcUYk4KUcN82CaIXek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRD2MG%2FbtrWCVuMzj5%2FQErYlcUYk4KUcN82CaIXek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;681&quot; height=&quot;573&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;573&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;민감한 연봉에 대한 추가 질문에도 적절한 답변이 나왔다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;693&quot; data-origin-height=&quot;530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhRCAg/btrWCTcLFrQ/ENV9IjfA1V4dR5TkZM3ZKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhRCAg/btrWCTcLFrQ/ENV9IjfA1V4dR5TkZM3ZKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhRCAg/btrWCTcLFrQ/ENV9IjfA1V4dR5TkZM3ZKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhRCAg%2FbtrWCTcLFrQ%2FENV9IjfA1V4dR5TkZM3ZKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;693&quot; height=&quot;530&quot; data-origin-width=&quot;693&quot; data-origin-height=&quot;530&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;개발자&lt;/h3&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;688&quot; data-origin-height=&quot;339&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mQuDU/btrWDbEfRtJ/rNGVmaEwmkWAEW98WscsR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mQuDU/btrWDbEfRtJ/rNGVmaEwmkWAEW98WscsR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mQuDU/btrWDbEfRtJ/rNGVmaEwmkWAEW98WscsR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmQuDU%2FbtrWDbEfRtJ%2FrNGVmaEwmkWAEW98WscsR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;688&quot; height=&quot;339&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;339&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;텐서플로와 파이토치 중 인공지능 모델을 배포하기에 좋은지 물어보았고 답변은 텐서플로를 좀 더 추천하였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;679&quot; data-origin-height=&quot;865&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uovlF/btrWCUJoMof/C739KskOYXPsknkyLYpXfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uovlF/btrWCUJoMof/C739KskOYXPsknkyLYpXfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uovlF/btrWCUJoMof/C739KskOYXPsknkyLYpXfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuovlF%2FbtrWCUJoMof%2FC739KskOYXPsknkyLYpXfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;679&quot; height=&quot;865&quot; data-origin-width=&quot;679&quot; data-origin-height=&quot;865&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 더 구체적으로 전기차 충전 프로토콜 OCPP의&amp;nbsp; 특정 메시지에 응답하는 데모 코드를 요청했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;885&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgdbsY/btrWCdQIizI/HjmVCksZcfpEKo1djhMhFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgdbsY/btrWCdQIizI/HjmVCksZcfpEKo1djhMhFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgdbsY/btrWCdQIizI/HjmVCksZcfpEKo1djhMhFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgdbsY%2FbtrWCdQIizI%2FHjmVCksZcfpEKo1djhMhFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;562&quot; height=&quot;885&quot; data-origin-width=&quot;562&quot; data-origin-height=&quot;885&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검색이나 github 등에서도 코드를 찾을 수 있겠지만 대화하듯 원하는 답을 즉시 얻을 수 있다는 것은 아주 큰 장점이 아닐 수 없다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;IT 아키텍트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전기차 충전 정보를 이용한 과금 시스템 구축을 문의하니 간단한 요약을 작성해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;경험이 없는 프로젝트에 대한 좋은 멘토로 활용할 수 있겠다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;668&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqIeNl/btrWCGY4PsF/GifbSOjcc50EWjF4yu5ys0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqIeNl/btrWCGY4PsF/GifbSOjcc50EWjF4yu5ys0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqIeNl/btrWCGY4PsF/GifbSOjcc50EWjF4yu5ys0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqIeNl%2FbtrWCGY4PsF%2FGifbSOjcc50EWjF4yu5ys0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;677&quot; height=&quot;668&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;668&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가로 테슬라가 사용하는 지불 시스템을 한글로 문의했더니 한글로 답변이 나왔다. 한글로도 답변이 가능하구나!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;675&quot; data-origin-height=&quot;255&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IhYuy/btrWCcYDMv0/pRpm04f8zVB4aUihKaxybK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IhYuy/btrWCcYDMv0/pRpm04f8zVB4aUihKaxybK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IhYuy/btrWCcYDMv0/pRpm04f8zVB4aUihKaxybK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIhYuy%2FbtrWCcYDMv0%2FpRpm04f8zVB4aUihKaxybK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;675&quot; height=&quot;255&quot; data-origin-width=&quot;675&quot; data-origin-height=&quot;255&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;한계점&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한글로 답을 주기는 하지만 대부분 영어로 대답한 점은 아쉬웠다. 다국어를 지원하여도 한글에 대한 지원은 제한적일 것으로 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 최신의 일상적인 질문에 대한 답변은 기대에 미치지 못했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;690&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dkD2jB/btrWDFd8JzZ/pIteWMKKiECjtqEs5cAMd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dkD2jB/btrWDFd8JzZ/pIteWMKKiECjtqEs5cAMd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dkD2jB/btrWDFd8JzZ/pIteWMKKiECjtqEs5cAMd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdkD2jB%2FbtrWDFd8JzZ%2FpIteWMKKiECjtqEs5cAMd1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;681&quot; height=&quot;690&quot; data-origin-width=&quot;681&quot; data-origin-height=&quot;690&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최신 소식에 대한 정보는 반영되지 않았다. ChatGPT는 2021년까지의 정보를 학습한 것으로 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 지속적으로 생성되는 정보를 &lt;span&gt;검색엔진처럼&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;실시간으로 반영하기 위해 &lt;span&gt; ChatGPT이 유사한 속도로 &lt;/span&gt;&lt;/span&gt;재학습하는 것이 언제 가능할지 기대가 된다.&lt;/p&gt;</description>
      <category>AI</category>
      <category>AI</category>
      <category>ChatGPT</category>
      <category>openai</category>
      <category>인공지능</category>
      <category>챗봇</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/619</guid>
      <comments>https://dreamlog.tistory.com/619#entry619comment</comments>
      <pubDate>Wed, 18 Jan 2023 20:57:00 +0900</pubDate>
    </item>
    <item>
      <title>데이터 전처리에 최빈값 (mode) 적용하기</title>
      <link>https://dreamlog.tistory.com/618</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;pandas.DataFrame.mode() 사용하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mode 함수는&amp;nbsp;주어진&amp;nbsp;데이터셋의&amp;nbsp;행/열의&amp;nbsp;가장&amp;nbsp;자주&amp;nbsp;나타나는&amp;nbsp;값인&amp;nbsp;&lt;b&gt;최빈값&lt;/b&gt;을&amp;nbsp;구하는&amp;nbsp;함수이다. &lt;br /&gt;최빈값이&amp;nbsp;여러개일&amp;nbsp;경우&amp;nbsp;모두&amp;nbsp;표시한다. &lt;br /&gt;이&amp;nbsp;때,&amp;nbsp;최빈값&amp;nbsp;이외의&amp;nbsp;값은&amp;nbsp;&lt;i&gt;&lt;b&gt;NaN&lt;/b&gt;&lt;/i&gt;을&amp;nbsp;출력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #323232;&quot;&gt;사용 예::&lt;/span&gt;titanic의 학습 데이터셋에 mode() 사용하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터셋은 &lt;a title=&quot;titanic의 학습 데이터셋&quot; href=&quot;https://www.kaggle.com/competitions/titanic/data?select=train.csv&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;kaggle&lt;/a&gt;에서 다음과 같이 받으면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;이미지_029.png&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEuj6E/btrRH6u8wGA/vBk6OFcqkmNJRbseMSlFi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEuj6E/btrRH6u8wGA/vBk6OFcqkmNJRbseMSlFi1/img.png&quot; data-alt=&quot;타이타닉 학습 데이터&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEuj6E/btrRH6u8wGA/vBk6OFcqkmNJRbseMSlFi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEuj6E%2FbtrRH6u8wGA%2FvBk6OFcqkmNJRbseMSlFi1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1275&quot; height=&quot;992&quot; data-filename=&quot;이미지_029.png&quot; data-origin-width=&quot;1275&quot; data-origin-height=&quot;992&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;타이타닉 학습 데이터&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;info() 함수와 describe()함수를 이용하여 확인한 타이타닉 학습 데이터의 기본 정보는 다음과 같다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;titanic-info.png&quot; data-origin-width=&quot;911&quot; data-origin-height=&quot;651&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/df1Buu/btrRNB8gzQQ/kU28SBWqPwN1gQs8VNipVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/df1Buu/btrRNB8gzQQ/kU28SBWqPwN1gQs8VNipVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/df1Buu/btrRNB8gzQQ/kU28SBWqPwN1gQs8VNipVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdf1Buu%2FbtrRNB8gzQQ%2FkU28SBWqPwN1gQs8VNipVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;911&quot; height=&quot;651&quot; data-filename=&quot;titanic-info.png&quot; data-origin-width=&quot;911&quot; data-origin-height=&quot;651&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저&amp;nbsp;Cabin&amp;nbsp;열의&amp;nbsp;고유한&amp;nbsp;항목&amp;nbsp;수를&amp;nbsp;value_counts()&amp;nbsp;함수로&amp;nbsp;확인한다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;span style=&quot;color: #c9c9c9;&quot;&gt;&lt;/span&gt;
&lt;pre id=&quot;codecell0&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;print(train['Cabin'].value_counts())

output&amp;gt;&amp;gt;&amp;gt;
B96 B98        4
G6             4
C23 C25 C27    4
C22 C26        3&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최빈값을 찾아주는 mode()함수를 Cabin 열에 적용한 결과를 보자.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;codecell1&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;print(train['Cabin'].mode())

output&amp;gt;
0        B96 B98
1    C23 C25 C27
2             G6&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;value_counts() 함수와 동등한 결과를 출력한다.&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;PassengerId 열과 Name 열을 뺀 데이터 셋에 mode()함수를 적용한 결과에서 최빈값 이외는 NaN으로 표시된다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre id=&quot;codecell1&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;X_train = train.drop(['PassengerId', 'Name'], axis=1)
print(X_train.mode())

output&amp;gt;
   Survived  Pclass   Sex   Age  SibSp  Parch    Ticket  Fare        Cabin  \
0       0.0     3.0  male  24.0    0.0    0.0      1601  8.05      B96 B98   
1       NaN     NaN   NaN   NaN    NaN    NaN    347082   NaN  C23 C25 C27   
2       NaN     NaN   NaN   NaN    NaN    NaN  CA. 2343   NaN           G6   
  Embarked  
0        S  
1      NaN  
2      NaN&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cabin열은 결측치가 많으므로 mode()함수로 결측치를 최빈값으로 채울 수 있다.&lt;/p&gt;</description>
      <category>Python</category>
      <category>pandas</category>
      <category>python</category>
      <category>결측치</category>
      <category>데이터 전처리</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/618</guid>
      <comments>https://dreamlog.tistory.com/618#entry618comment</comments>
      <pubDate>Mon, 21 Nov 2022 18:04:03 +0900</pubDate>
    </item>
    <item>
      <title>Python::프로야구 팀순위 분석</title>
      <link>https://dreamlog.tistory.com/614</link>
      <description>&lt;div class=&quot;revenue_unit_wrap&quot;&gt;
  &lt;div class=&quot;revenue_unit_item adsense responsive&quot;&gt;
    &lt;div class=&quot;revenue_unit_info&quot;&gt;반응형&lt;/div&gt;
    &lt;script src=&quot;//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js&quot; async=&quot;async&quot;&gt;&lt;/script&gt;
    &lt;ins class=&quot;adsbygoogle&quot; style=&quot;display: block;&quot; data-ad-host=&quot;ca-host-pub-9691043933427338&quot; data-ad-client=&quot;ca-pub-4676633405854451&quot; data-ad-format=&quot;auto&quot;&gt;&lt;/ins&gt;
    &lt;script&gt;(adsbygoogle = window.adsbygoogle || []).push({});&lt;/script&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빅데이터나 데이터 사이언스가 할 일의 가장 큰 부분은 데이터 전처리이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 전처리는 데이터 정제와 데이터 변환으로 구성된다.&lt;/p&gt;
&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;h3 data-ke-size=&quot;size23&quot;&gt;1. 데이터 수집&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 포스팅은 Kaggle에서 타이타닉 데이터를 다루지는 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;한국 프로야구 팀순위&quot; href=&quot;https://www.koreabaseball.com/TeamRank/TeamRank.aspx&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;한국 프로야구의 팀 순위&lt;/a&gt; 데이터를 엑셀 파일로 저장한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/mREUx/btrHEdjgL6g/SkDiQKkxrB63flcHgbkLsk/kbo.xlsx?attach=1&amp;amp;knm=tfile.xlsx&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;kbo.xlsx&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.01MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&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 style=&quot;text-align: center;&quot;&gt;순위&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;팀명&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;경기&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;승&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;패&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;무&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;승율&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;게임차&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;최근10경기&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;연속&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;홈&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;원정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;SSG&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;86&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;57&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;26&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;0.687&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;9승0무1패&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;6승&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;33-0-10&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;24-3-16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;키움&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;87&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;54&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;32&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;0.628&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;4.5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;6승0무4패&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2패&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;25-1-18&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;29-0-14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;LG&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;84&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;52&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;31&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;0.627&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;8승0무2패&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1승&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;23-0-21&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;29-1-10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;KT&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;84&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;44&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;38&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;0.537&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;12.5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;9승0무1패&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2승&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;21-1-22&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;23-1-16&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;KIA&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;83&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;42&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;40&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;0.512&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;14.5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;4승0무6패&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1패&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;20-0-20&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;22-1-20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;롯데&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;85&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;38&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;44&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;0.463&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;18.5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;5승0무5패&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;4승&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;16-3-25&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;22-0-19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;두산&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;84&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;36&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;46&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;0.439&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;20.5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;4승0무6패&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1승&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;15-1-25&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;21-1-21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;삼성&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;85&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;35&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;50&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;0.412&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;23&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;0승0무10패&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;11패&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;14-0-29&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;21-0-21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;NC&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;83&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;32&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;49&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;0.395&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;24&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;4승0무6패&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1패&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;17-2-22&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;15-0-27&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;한화&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;85&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;25&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;59&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;0.298&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;32.5&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;1승0무9패&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;6패&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;15-0-24&lt;/td&gt;
&lt;td style=&quot;text-align: center;&quot;&gt;10-1-3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팀 순위 데이터를 읽어온다.&lt;/p&gt;
&lt;pre id=&quot;code_1658195620456&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pandas as pd

# read a dataset from the excel file
filename = 'C:/Dataset/kbo.xlsx'
sheet_name = 'kbo_2022_firsthalf'
df = pd.read_excel(filename, sheet_name=sheet_name)&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 데이터 전처리 - 데이터 변환&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.1 Dataframe에서 특정 부분을 선택하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 읽은 데이터의 간결한 요약 정보를 알아본다..&lt;/p&gt;
&lt;pre id=&quot;code_1658196058520&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;print(df.info())


[결과]
&amp;lt;class 'pandas.core.frame.DataFrame'&amp;gt;
Int64Index: 10 entries, 0 to 9
Data columns (total 12 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   순위      10 non-null     int64  
 1   팀명      10 non-null     object 
 2   경기      10 non-null     int64  
 3   승       10 non-null     int64  
 4   패       10 non-null     int64  
 5   무       10 non-null     int64  
 6   승률      10 non-null     float64
 7   게임차     10 non-null     float64
 8   최근10경기  10 non-null     object 
 9   연속      10 non-null     object 
 10  홈       10 non-null     object 
 11  방문      10 non-null     object 
dtypes: float64(2), int64(5), object(5)
memory usage: 1.0+ KB
None&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포스트 시즌에 진출할 팀 데이터를 보자.&lt;/p&gt;
&lt;pre id=&quot;code_1658197305596&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;team_to_play_postseason = df[df['순위'] &amp;lt;= 5]

print(team_to_play_postseason)
print(team_to_play_postseason.to_string(index=False))
print(team_to_play_postseason.values)

[결과]
   순위   팀명  경기   승   패  무     승률   게임차  최근10경기  연속         홈       방문
0   1  SSG  86  57  26  3  0.687   0.0  9승0무1패  6승   33-0-10  24-3-16
1   2   키움  87  54  32  1  0.628   4.5  6승0무4패  2패  25-01-18  29-0-14
2   3   LG  84  52  31  1  0.627   5.0  8승0무2패  1승   23-0-21  29-1-10
3   4   KT  84  44  38  2  0.537  12.5  9승0무1패  2승   21-1-22  23-1-16
4   5  KIA  83  42  40  1  0.512  14.5  4승0무6패  1패   20-0-20  22-1-20
=&amp;gt; 첫 인쇄문의 경우 순위 앞에 불필요한 인덱스가 있다.

 순위  팀명  경기  승  패  무    승률  게임차 최근10경기 연속        홈      방문
  1 SSG  86 57 26  3 0.687  0.0 9승0무1패 6승  33-0-10 24-3-16
  2  키움  87 54 32  1 0.628  4.5 6승0무4패 2패 25-01-18 29-0-14
  3  LG  84 52 31  1 0.627  5.0 8승0무2패 1승  23-0-21 29-1-10
  4  KT  84 44 38  2 0.537 12.5 9승0무1패 2승  21-1-22 23-1-16
  5 KIA  83 42 40  1 0.512 14.5 4승0무6패 1패  20-0-20 22-1-20
  =&amp;gt; 다음 인쇄문은 데이터프레임을 테이블 형식으로 출력하는데 인덱스는 제외한다.
  
  [[1 'SSG' 86 57 26 3 0.687 0.0 '9승0무1패' '6승' '33-0-10' '24-3-16']
 [2 '키움' 87 54 32 1 0.628 4.5 '6승0무4패' '2패' '25-01-18' '29-0-14']
 [3 'LG' 84 52 31 1 0.627 5.0 '8승0무2패' '1승' '23-0-21' '29-1-10']
 [4 'KT' 84 44 38 2 0.537 12.5 '9승0무1패' '2승' '21-1-22' '23-1-16']
 [5 'KIA' 83 42 40 1 0.512 14.5 '4승0무6패' '1패' '20-0-20' '22-1-20']]
 =&amp;gt; 마지막 인쇄문은 데이터프레임의 값만 반환한다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;홈에서 승률이 좋은 팀을 보려면 '홈' 열의 데이터를 분리해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;str.split(sep='-') 함수에서 구분 기호 '-' 를 사용하여 '승-무-패'를 '승', '무', '패'로 나눈다.&lt;/p&gt;
&lt;pre id=&quot;code_1658237527815&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;df['홈 승'] = df['홈'].str.split('-').str.get(0)
df['홈 무'] = df['홈'].str.split('-').str.get(1)
df['홈 패'] = df['홈'].str.split('-').str.get(2)
print(df.loc[:, '홈 승':'홈 패'])

[결과]
  홈 승 홈 무 홈 패
0  33   0  10
1  25   1  18
2  23   0  21
3  21   1  22
4  20   0  20
5  16   3  25
6  15   1  25
7  14   0  29
8  17   2  22
9  15   0  24

[동등한 코드]
df['홈 승'] = df['홈'].str.split('-').str[0]
df['홈 무'] = df['홈'].str.split('-').str[1]
df['홈 패'] = df['홈'].str.split('-').str[2]
print(df.loc[:, '홈 승':'홈 패'])&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분리한 홈의 '승 무 패' 데이터는 문자열이므로 숫자로 변환한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열을 정수로 변환하는 함수로 pandas.to_numeric()를 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 함수는 실수나 정수를 반환하는데 매개변수 downcast를 사용하여 다른 dtypes을 얻을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변환에 오류가 있을 경우 NaN 값으로 치환하려면 'coerce'를 쓰면 된다.&lt;/p&gt;
&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;첫 번째 방법은 매개변수 downcast를 사용해 문자열을 숫자로 변환하고 &amp;nbsp;가장&amp;nbsp;작은&amp;nbsp;숫자&amp;nbsp;dtype으로&amp;nbsp;다운캐스트한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 번째 방법은 DataFrame.astype 함수를 사용하여 pandas&amp;nbsp;객체를&amp;nbsp;지정된&amp;nbsp;dtype으로&amp;nbsp;캐스팅한다.&lt;/p&gt;
&lt;pre id=&quot;code_1658240292924&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 방법1
df['홈 승'] = pd.to_numeric(df['홈 승'], downcast=&quot;integer&quot;, errors='coerce')
df['홈 무'] = pd.to_numeric(df['홈 무'], downcast=&quot;integer&quot;, errors='coerce')
df['홈 패'] = pd.to_numeric(df['홈 패'], downcast=&quot;integer&quot;, errors='coerce')
=&amp;gt; 변환할 때 오류가 나면 NaN로 값을 채운다.

#방법2
df['홈 승'] = pd.to_numeric(df['홈 승'], errors='coerce').fillna(0).astype(np.int64)
df['홈 무'] = pd.to_numeric(df['홈 무'], errors='coerce').fillna(0).astype(np.int64)
df['홈 패'] = pd.to_numeric(df['홈 패'], errors='coerce').fillna(0).astype(np.int64)
=&amp;gt; 변환할 때 오류가 나면 fillna(0)로 0으로 값을 채우고 astype(np.int64)으로 64비트 정수로 변환한다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포스트 시즌에 진출할 수 있으면서 홈 승이 패보다 많은 팀의 데이터를 구해보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포스트 시즌은 상위 5개 팀이 진출하므로 'df['순위'] &amp;lt;= 5' 조건을 적용하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;홈 승이 패보다 많은 조건은 'df['홈 승'] &amp;gt; df['홈 패']'를 사용한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;그리고 인덱스 없이 인쇄하기 위해 DataFrame.to_string()&amp;nbsp;함수에&amp;nbsp;매개변수&amp;nbsp;index를&amp;nbsp;False로&amp;nbsp;설정한다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1658241732305&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;top5_and_homewinner = df[(df['순위'] &amp;lt;= 5) &amp;amp; (df['홈 승'] &amp;gt; df['홈 패'])]
print(top5_and_homewinner.to_string(index=False))

[결과]
 순위  팀명  경기  승  패  무    승률  게임차 최근10경기 연속       홈      방문  홈 승  홈 무  홈 패
  1 SSG  86 57 26  3 0.687  0.0 9승0무1패 6승 33-0-10 24-3-16   33    0   10
  2  키움  87 54 32  1 0.628  4.5 6승0무4패 2패 25-1-18 29-0-14   25    1   18
  3  LG  84 52 31  1 0.627  5.0 8승0무2패 1승 23-0-21 29-1-10   23    0   21&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 변환에 사용한 기능을 요약하면 데이터 타입 변환, 문자열 분리 및 조건문 적용 등이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Python</category>
      <category>data cleansing</category>
      <category>data science</category>
      <category>데이터 변환</category>
      <category>데이터 전처리</category>
      <category>데이터 정제</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/614</guid>
      <comments>https://dreamlog.tistory.com/614#entry614comment</comments>
      <pubDate>Tue, 19 Jul 2022 23:50:29 +0900</pubDate>
    </item>
    <item>
      <title>pandas로 표 형식 데이터 읽기</title>
      <link>https://dreamlog.tistory.com/613</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 사이언스의 시작은 데이터에 접근하는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 파이썬의 pandas 패키지로 표 형식 데이터를 읽고 쓰는 방법을 알아본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pandas 패키지가 지원하는 몇 가지 형식과 액세스 함수를 다음 표에 표시한다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 122px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style7&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25%; text-align: center; height: 20px;&quot;&gt;데이터 형식&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px; text-align: center;&quot;&gt;파일 형식&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px; text-align: center;&quot;&gt;읽기 함수&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 20px; text-align: center;&quot;&gt;쓰기 함수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; text-align: center; height: 68px;&quot; rowspan=&quot;4&quot;&gt;text&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;csv&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;read_csv&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;to_csv&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;JSON&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;read_json&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;to_json&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;HTML&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;read_html&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;to_html&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;XML&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;read_xml&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;to_xml&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; text-align: center; height: 17px;&quot;&gt;binary&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;Excel&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;read_excel&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;to_excel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; text-align: center; height: 17px;&quot;&gt;SQL&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;SQL&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;read_sql&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px; text-align: center;&quot;&gt;to_sql&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 CSV 파일을 읽고 쓰는 함수로 read_csv(), write_csv()가 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;read_csv()&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일이나 URL 등에서 데이터를 읽어온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 코드는 github에 있는 타이타닉 데이터셋이 있는 URL을 통해 읽어 온다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;import pandas as pd

url = 'https://raw.githubusercontent.com/hyunmu/public/master/train.csv'
df = pd.read_csv(url)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽어온 데이터셋의 내용은 아래와 같다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;print(df.head())

PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
0            1         0       3  ...   7.2500   NaN         S
1            2         1       1  ...  71.2833   C85         C
2            3         1       3  ...   7.9250   NaN         S
3            4         1       1  ...  53.1000  C123         S
4            5         0       3  ...   8.0500   NaN         S
[5 rows x 12 columns]&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;to_excel()&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터프레임 객체를 엑셀 파일에 쓴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫&amp;nbsp;번째&amp;nbsp;인수는&amp;nbsp;엑셀&amp;nbsp;파일의&amp;nbsp;이름이고&amp;nbsp;선택적&amp;nbsp;두&amp;nbsp;번째&amp;nbsp;인수는&amp;nbsp;DataFrame을&amp;nbsp;저장할&amp;nbsp;시트의&amp;nbsp;이름이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막 인수인 index에 None을 주어서 인덱스를 기록하지 않도록 한다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;df.to_excel('../data/train.xlsx', sheet_name='titanic', index=None)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;read_excel()&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엑셀 파일을 &lt;span&gt;데이터프레임 객체로 읽어 온다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;읽을 파일 이름을 첫 번째 인수로 주고 다음 인수로 읽을 시트를 명시한다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;df = pd.read_excel('../data/titanic.xlsx', sheet_name='train')&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;to_csv()&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;데이터프레임 객체를 csv에 저장한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;첫 번째 코드는 데이터프레임 객체에서 'Survived' 열을 제거하고 그&lt;/span&gt;&lt;span&gt; 결과를 특성 데이터셋 X_train에 저장한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 코드는 'Survived' 열을 제거한 X_train을 csv 파일로 저장한다.&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;X_train = df.drop(columns=['Survived'])
X_train.to_csv('../data/titanic_train.csv', index=None)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엑셀&amp;nbsp;2010&amp;nbsp;xlsx/xlsm&amp;nbsp;파일을&amp;nbsp;읽고&amp;nbsp;쓰려면&amp;nbsp;추가로&amp;nbsp;openpyxl&amp;nbsp;같은&amp;nbsp;파이썬&amp;nbsp;패키지를&amp;nbsp;설치해야&amp;nbsp;한다.&lt;/p&gt;</description>
      <category>Python</category>
      <category>CSV 파일</category>
      <category>pandas</category>
      <category>read_csv</category>
      <category>데이터프레임</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/613</guid>
      <comments>https://dreamlog.tistory.com/613#entry613comment</comments>
      <pubDate>Sun, 10 Jul 2022 23:26:45 +0900</pubDate>
    </item>
    <item>
      <title>Python에서 SQL 사용 (1)</title>
      <link>https://dreamlog.tistory.com/612</link>
      <description>&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;2021년까지 인공지능, 데이터 사이언스 업무를 하였으나 2022년부터 다시 웹 개발을 하게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어렵게 익힌 파이썬 기술은 점점 잊혀지고 백엔드 기술인 SQL은 이제 눈에 들어오는 정도이다.&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;h2 data-ke-size=&quot;size26&quot;&gt;개요&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, 파이썬에서 SQL을 사용하기 위해 필수적으로 쓸 패키지는 SQLite이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQLite는 서버 프로세스가 필요 없고 &lt;span&gt;비표준&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;SQL 변형으로 데이터베이스에 접근할 수 있는 경량 디스크 기반 데이터베이스를 제공하는 C 라이브러리이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sql&amp;nbsp;ite3&amp;nbsp;모듈은&amp;nbsp;DB-API&amp;nbsp;2.0&amp;nbsp;사양과&amp;nbsp;호환&amp;nbsp;되는&amp;nbsp;SQL&amp;nbsp;인터페이스&amp;nbsp;를&amp;nbsp;제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;사용법&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 데이터베이스 객체 생성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;먼저&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;sqlite3 모듈을 사용할 데이터베이스를 나타내는 Connection 객체를 생성한다.111&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;import sqlite3
con = sqlite3.connect('ev_models.db')&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. Cursor&amp;nbsp;객체를&amp;nbsp;생성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cursor 객체를 생성하고 execute 메서드를 호출하여 SQL 명령을 수행한다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;cur = con.cursor()

# 테이블 생성
cur.execute('''CREATE TABLE ev_sbsd
               (id INTEGER PRIMARY KEY AUTOINCREMENT,
               	model_name text, top_speed text, range text, subsidy integer)''')

# 데이터 삽입
cur.execute(&quot;INSERT INTO ev_sbsd VALUES ('Model 3 Long Range AWD','233','527.9','315')&quot;)

# 변경을 저장 (commit)
con.commit()

# 작업이 끝나면 연결을 종료한다.
# 변경을 commit 했는지 확인하지 않으면 변경은 사라진다.
con.close()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. 삽입한 데이터를 확인&lt;/h4&gt;
&lt;div&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;import sqlite3
con = sqlite3.connect('example.db')
cur = con.cursor()

for row in cur.execute('SELECT * FROM ev_sbsd'):
	print(row)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출력 결과는 다음과 같다.&lt;/p&gt;
&lt;div&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;(1, 'Model 3 Long Range AWD', '233', '527.9', 315)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 결과는 입력한 데이터가 정상적으로 표시된다.&lt;/p&gt;</description>
      <category>Python</category>
      <category>ddl</category>
      <category>DML</category>
      <category>sql</category>
      <category>파이썬</category>
      <category>파이썬으로 SQL문 사용</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/612</guid>
      <comments>https://dreamlog.tistory.com/612#entry612comment</comments>
      <pubDate>Thu, 5 May 2022 01:28:22 +0900</pubDate>
    </item>
    <item>
      <title>[GIT] GitHub에서 파일 하나만 다운로드</title>
      <link>https://dreamlog.tistory.com/611</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;GitHub에서 소스를 받을 때 보통 'git clone'명령을 써서 저장소의 모든 파일을 다운로드한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;때로는 전체 소스보다 필요한 파일만 받고 싶은 경우가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 Git으로 저장소의&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;&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;1. GitHub 저장소를 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 다운로드할 파일로 이동 후 내용 보기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. GitHub 화면에서 [Raw] 버튼을 마우스 오른쪽 버튼으로 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. '다른&amp;nbsp;이름으로&amp;nbsp;링크&amp;nbsp;저장'&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;4.' 명령 창에서 curl 명령 사용&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;상세한 절차&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. GitHub 저장소를 선택&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DvVnZ/btrpLtxTXUi/ZRk8l76ZIkTLEvtSuJXe1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DvVnZ/btrpLtxTXUi/ZRk8l76ZIkTLEvtSuJXe1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DvVnZ/btrpLtxTXUi/ZRk8l76ZIkTLEvtSuJXe1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDvVnZ%2FbtrpLtxTXUi%2FZRk8l76ZIkTLEvtSuJXe1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;966&quot; height=&quot;720&quot; data-origin-width=&quot;966&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 다운로드할 파일로 이동 후 GitHub 화면에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;내용 보기&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1406&quot; data-origin-height=&quot;1125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l29Tl/btrpMkNN41t/ut3h3CJGi1FXBCOE5pi7Dk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l29Tl/btrpMkNN41t/ut3h3CJGi1FXBCOE5pi7Dk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l29Tl/btrpMkNN41t/ut3h3CJGi1FXBCOE5pi7Dk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl29Tl%2FbtrpMkNN41t%2Fut3h3CJGi1FXBCOE5pi7Dk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1406&quot; height=&quot;1125&quot; data-origin-width=&quot;1406&quot; data-origin-height=&quot;1125&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. [Raw] 버튼을 &lt;b&gt;&lt;i&gt;마우스 오른쪽 버튼&lt;/i&gt;&lt;/b&gt;으로 클릭&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1406&quot; data-origin-height=&quot;1125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dihfpG/btrpKltrZi4/i9RI6z0f3eC5klq5AI93k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dihfpG/btrpKltrZi4/i9RI6z0f3eC5klq5AI93k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dihfpG/btrpKltrZi4/i9RI6z0f3eC5klq5AI93k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdihfpG%2FbtrpKltrZi4%2Fi9RI6z0f3eC5klq5AI93k1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1406&quot; height=&quot;1125&quot; data-origin-width=&quot;1406&quot; data-origin-height=&quot;1125&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4. '다른 이름으로 링크 저장' 선택&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1404&quot; data-origin-height=&quot;1125&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bItfJk/btrpULQVq7A/r4q7WFnbt7AyC46X2f5Yok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bItfJk/btrpULQVq7A/r4q7WFnbt7AyC46X2f5Yok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bItfJk/btrpULQVq7A/r4q7WFnbt7AyC46X2f5Yok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbItfJk%2FbtrpULQVq7A%2Fr4q7WFnbt7AyC46X2f5Yok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1404&quot; height=&quot;1125&quot; data-origin-width=&quot;1404&quot; data-origin-height=&quot;1125&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4.' '링크 주소 복사' 선택 후 명령 창에서 curl 명령 사용&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;399&quot; data-origin-height=&quot;370&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uVrp7/btrpLtdMGx9/mmTTKpTwq1Z23yi5CFEyK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uVrp7/btrpLtdMGx9/mmTTKpTwq1Z23yi5CFEyK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uVrp7/btrpLtdMGx9/mmTTKpTwq1Z23yi5CFEyK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuVrp7%2FbtrpLtdMGx9%2FmmTTKpTwq1Z23yi5CFEyK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;320&quot; height=&quot;297&quot; data-origin-width=&quot;399&quot; data-origin-height=&quot;370&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;링크 주소 복사한 파일을 다운로드하는 &lt;b&gt;curl 명령어&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-L 옵션: 리디렉션 응답을 처리 (서버가 요청 페이지가 이동했다고 알리면 새로운 장소로 다시 요청하게 한다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-O 옵션: 저장할&amp;nbsp;파일명으로&amp;nbsp;리소스의&amp;nbsp;파일명을&amp;nbsp;그대로&amp;nbsp;사용&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;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;b&gt;curl&amp;nbsp;-L&amp;nbsp;-O&amp;nbsp;&lt;/b&gt;&lt;a href=&quot;https://github.com/NCSC-NL/log4shell/raw/main/tools/log4shell_softwarelist/softwarelist_parser.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;https://github.com/NCSC-NL/log4shell/raw/main/tools/log4shell_softwarelist/softwarelist_parser.py&lt;/b&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;py_042.png&quot; data-origin-width=&quot;725&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgaBzZ/btrpP4xjVrg/fb3D3bPJ5dPxJ2hJxTOBKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgaBzZ/btrpP4xjVrg/fb3D3bPJ5dPxJ2hJxTOBKk/img.png&quot; data-alt=&quot;curl 명령 실행 로그&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgaBzZ/btrpP4xjVrg/fb3D3bPJ5dPxJ2hJxTOBKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgaBzZ%2FbtrpP4xjVrg%2Ffb3D3bPJ5dPxJ2hJxTOBKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;725&quot; height=&quot;463&quot; data-filename=&quot;py_042.png&quot; data-origin-width=&quot;725&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;curl 명령 실행 로그&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;py_044.png&quot; data-origin-width=&quot;725&quot; data-origin-height=&quot;463&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxOji1/btrpTfEQEHD/IgPm1MUGYvJGkNZnRKsX71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxOji1/btrpTfEQEHD/IgPm1MUGYvJGkNZnRKsX71/img.png&quot; data-alt=&quot;nano 편집기로 파일 내용 확인 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxOji1/btrpTfEQEHD/IgPm1MUGYvJGkNZnRKsX71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxOji1%2FbtrpTfEQEHD%2FIgPm1MUGYvJGkNZnRKsX71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;725&quot; height=&quot;463&quot; data-filename=&quot;py_044.png&quot; data-origin-width=&quot;725&quot; data-origin-height=&quot;463&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;nano 편집기로 파일 내용 확인 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 명령을 사용하면 curl이나 wget 등의 명령으로 단일 파일을 다운로드할 수 있다.&lt;/p&gt;</description>
      <category>IT/Tip</category>
      <category>curl</category>
      <category>Git</category>
      <category>github</category>
      <category>wget</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/611</guid>
      <comments>https://dreamlog.tistory.com/611#entry611comment</comments>
      <pubDate>Wed, 5 Jan 2022 14:02:11 +0900</pubDate>
    </item>
    <item>
      <title>AWS Cloud9 개요와 IDE 환경 설치 및 삭제</title>
      <link>https://dreamlog.tistory.com/610</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;AWS Cloud9&amp;nbsp;개요&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;AWS Cloud9&lt;/span&gt;은 클라우드 기반 통합 개발 환경(&lt;span&gt;IDE)&lt;/span&gt;이다&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉 로컬&lt;span&gt; IDE&lt;/span&gt;에서 할 수 있는 코딩&lt;span&gt;, &lt;/span&gt;빌드&lt;span&gt;, &lt;/span&gt;실행&lt;span&gt;, &lt;/span&gt;테스트 및 디버깅 등의 일들을 클라우드에서 수행하는 것이다&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 브라우저를 통해 &lt;span&gt;AWS Cloud9 IDE&lt;/span&gt;에 접근한다&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #16191f;&quot;&gt;AWS Cloud9 구성 및 작동 방식&lt;br /&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #16191f;&quot;&gt;Cloud9 구성은 개발자의 로컬 컴퓨터, AWS의 EC2 기반의 IDE환경 및 &lt;span style=&quot;color: #16191f;&quot;&gt;개발된 소스를 저장할 원격 저장소로 이루어진다.&lt;/span&gt;&amp;nbsp;Cloud9은 웹 브라우저에서 실행되고 &lt;span style=&quot;color: #16191f;&quot;&gt;AWS &lt;/span&gt;&lt;span style=&quot;color: #16191f;&quot;&gt;Cloud9 환경에 연결된다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;991&quot; data-origin-height=&quot;534&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctpwo6/btrkimvUBX4/vY4LXjDKCnFFduZTc43zyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctpwo6/btrkimvUBX4/vY4LXjDKCnFFduZTc43zyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctpwo6/btrkimvUBX4/vY4LXjDKCnFFduZTc43zyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fctpwo6%2FbtrkimvUBX4%2FvY4LXjDKCnFFduZTc43zyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;991&quot; height=&quot;534&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;991&quot; data-origin-height=&quot;534&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버 개발 환경은 클라우드(EC2 환경)나 자체 서버를 사용(SSH 환경)할 수 있고 원격 저장소도 AWS가 제공하는 CodeCommit이나 널리 사용되는 github 등을 구성할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(SSH 환경은 기존 클라우드 컴퓨팅 인스턴스에 AWS Cloud9을 연결하여 구성할 수 있으나 이번 포스팅에서는 제외한다.)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;과금&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS Cloud9에 대한 추가 비용은 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS Cloud9 개발 환경이 EC2 환경인 경우 코드 실행 및 저장에 사용된 리소스(EC2 인스턴스, EBS 볼륨)에 대한 요금은 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;AWS 프리티어는 AWS Cloud9를 무료로 사용할 수 있지만 프리티어를 초과한 리소스에는 요금이 청구된다.&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;AWS Cloud9 설정하기&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;요약&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. AWS 계정 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. AWS Cloud9 콘솔에 로그인 (AWS 계정 루트 사용자 또는 IAM 관리자)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. AWS Cloud9 개발 환경 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;EC2환경을 콘솔과 코드로 생성할 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;EC2환경 생성&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;콘솔을 사용한 EC2환경 생성 (GUI 방식)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. AWS Cloud9 콘솔에 로그인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. AWS 리전을 선택 후 Cloud9 서비스로 이동한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. [환경 생성(Create environment)] 버튼을 선택하여 환경 생성을 시작한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;961&quot; data-origin-height=&quot;238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B54R6/btrlwIEGKqn/bA6rvyo8tGXAlw2FsFJA7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B54R6/btrlwIEGKqn/bA6rvyo8tGXAlw2FsFJA7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B54R6/btrlwIEGKqn/bA6rvyo8tGXAlw2FsFJA7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB54R6%2FbtrlwIEGKqn%2FbA6rvyo8tGXAlw2FsFJA7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;238&quot; data-origin-width=&quot;961&quot; data-origin-height=&quot;238&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 이름과 설정 구성 (Configure settings)을 선택하고 EC2 지원 환경을 생성한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;655&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CJmRl/btrlsht5su9/TvoaK1K38AKqjmaa88zxkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CJmRl/btrlsht5su9/TvoaK1K38AKqjmaa88zxkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CJmRl/btrlsht5su9/TvoaK1K38AKqjmaa88zxkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCJmRl%2Fbtrlsht5su9%2FTvoaK1K38AKqjmaa88zxkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;655&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;655&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. Instance type(인스턴스 유형)은 작업에 필요한 RAM과 CPU가 있는 것을 선택한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;(많은 RAM과 CPU는 추가 비용이 발생한다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. 플랫폼(Platform)에는 Amazon EC2 인스턴스 유형으로 Amazon Linux(Red Hat 계열) 또는 Ubuntu를 선택한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; ML이나 Data science 개발에 python, tensorflow 등을 사용하기 때문에 ubuntu(18.04.6)를 선택했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7. Cost-saving setting(비용 절감 설정)값은 윈도우의 &amp;lsquo;절전 모드&amp;rsquo;로 보면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;일정 시간 사용하지 않으면 AWS Cloud9 IDE에 연결된 웹 브라우저가 닫히며 Amazon EC2 인스턴스를 종료한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8. 네트워크 설정은 기본 설정을 그대로 따른다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;437&quot; data-origin-height=&quot;519&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzuaZX/btrlsjk7Mob/qTDPKIu7rFSDomOM6S9vJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzuaZX/btrlsjk7Mob/qTDPKIu7rFSDomOM6S9vJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzuaZX/btrlsjk7Mob/qTDPKIu7rFSDomOM6S9vJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzuaZX%2Fbtrlsjk7Mob%2FqTDPKIu7rFSDomOM6S9vJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;713&quot; data-origin-width=&quot;437&quot; data-origin-height=&quot;519&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 설정은 같은 AWS 계정 및 리전에 있는 기본 VPC와 서브넷이며, VPC를 설정하는 것은 이번 포스팅에서는 제외한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 퍼블릭 서브넷은 인스턴스 SSM Agent가 System manager와 통신할 수 있도록 인터넷 게이트웨이를 연결하지만 프라이빗 서브넷은 인스턴스가 인터넷 및 다른 AWS 서비스와 통신할 수 있게 NAT 게이트웨이를 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검토 페이지에서 Create environment(환경 생성)를 선택해 AWS Cloud9 환경을 생성한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;743&quot; data-origin-height=&quot;719&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2cE0F/btrlsimhefh/bCFitndkxuphrJNMKGA9t1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2cE0F/btrlsimhefh/bCFitndkxuphrJNMKGA9t1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2cE0F/btrlsimhefh/bCFitndkxuphrJNMKGA9t1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2cE0F%2Fbtrlsimhefh%2FbCFitndkxuphrJNMKGA9t1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;719&quot; data-origin-width=&quot;743&quot; data-origin-height=&quot;719&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1176&quot; data-origin-height=&quot;632&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lByi9/btrlozJnSon/VoMTUBuFw9AarhFAw9PPkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lByi9/btrlozJnSon/VoMTUBuFw9AarhFAw9PPkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lByi9/btrlozJnSon/VoMTUBuFw9AarhFAw9PPkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlByi9%2FbtrlozJnSon%2FVoMTUBuFw9AarhFAw9PPkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;632&quot; data-origin-width=&quot;1176&quot; data-origin-height=&quot;632&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성된 &lt;span style=&quot;color: #777777;&quot;&gt;Cloud9 IDE 환경이 나타나고&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #777777;&quot;&gt;[Open IDE]를 선택하여 실행할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;코드를 사용한 EC2환경 생성 (CLI 방식)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;제약 사항 및 필요 조건&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. AWS CLI 설치&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;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;pip3&amp;nbsp;install&amp;nbsp;awscli&amp;nbsp;--upgrade&amp;nbsp;--user&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. Boto3 패키지 설치&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;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;pip3 install boto3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;python&amp;nbsp;3.6&amp;nbsp;이상&amp;nbsp;설치되어&amp;nbsp;있어야&amp;nbsp;함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. AWS 계정의 인증 자격 증명 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬&amp;nbsp;컴퓨터에서&amp;nbsp;AWS&amp;nbsp;CLI로&amp;nbsp;AWS&amp;nbsp;계정에&amp;nbsp;대한&amp;nbsp;인증&amp;nbsp;자격&amp;nbsp;증명을&amp;nbsp;설정한다. &lt;br /&gt;자격&amp;nbsp;증명을&amp;nbsp;설정은&amp;nbsp;명령을&amp;nbsp;실행하거나&amp;nbsp;직접&amp;nbsp;파일을&amp;nbsp;생성한다. &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3.1 AWS CLI명령어를 이용&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;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;aws&amp;nbsp;configure &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czw925/btrlpb9peGK/ksgHykXUhTdOQ2DTERsEkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czw925/btrlpb9peGK/ksgHykXUhTdOQ2DTERsEkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czw925/btrlpb9peGK/ksgHykXUhTdOQ2DTERsEkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fczw925%2Fbtrlpb9peGK%2FksgHykXUhTdOQ2DTERsEkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;231&quot; data-origin-width=&quot;733&quot; data-origin-height=&quot;282&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3.2&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자격&amp;nbsp;증명&amp;nbsp;파일,&amp;nbsp;~/.aws/&lt;b&gt;credentials&amp;nbsp;&lt;/b&gt;생성 &lt;br /&gt;파일에&amp;nbsp;계정의&amp;nbsp;비밀키&amp;nbsp;정보&amp;nbsp;추가&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;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;[default] &lt;br /&gt;aws_access_key_id&amp;nbsp;=&amp;nbsp;YOUR_ACCESS_KEY &lt;br /&gt;aws_secret_access_key = YOUR_SECRET_KEY&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS&amp;nbsp;구성&amp;nbsp;파일,&amp;nbsp;~/.aws/&lt;b&gt;config&amp;nbsp;&lt;/b&gt;생성 &lt;br /&gt;기본&amp;nbsp;리전과&amp;nbsp;출력&amp;nbsp;형식을&amp;nbsp;설정&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;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;[default] &lt;br /&gt;region&amp;nbsp;=&amp;nbsp;us-east-2 &lt;br /&gt;output&amp;nbsp;=&amp;nbsp;json &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;python 언어로 EC2 환경 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Boto3로 사용할 서비스 지정&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;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;import&amp;nbsp;boto3 &lt;br /&gt;&lt;br /&gt;client&amp;nbsp;=&amp;nbsp;boto3.client('cloud9')&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. Cloud9 개발 환경 생성&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;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;response&amp;nbsp;=&amp;nbsp;client.create_environment_ec2( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name='myPyDevEnv', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;automaticStopTimeMinutes=30, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;description='This is the Cloud9 development environment for Python(Boto).', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;instanceType='t2.micro', &lt;br /&gt;&amp;nbsp; &amp;nbsp; ownerArn='arn:aws:iam::123456789012:user/username', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;imageId='resolve:ssm:/aws/service/cloud9/amis/ubuntu-18.04-x86_64', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;subnetId='subnet-77e5651c', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tags=[ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'Key':&amp;nbsp;'Phase', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'Value':&amp;nbsp;'Development' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;], &lt;br /&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 실행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬 컴퓨터의 PyCharm IDE에서 위 코드를 실행한 결과이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1786&quot; data-origin-height=&quot;988&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYEjyy/btrlwVxdSll/VLu3eo7Evgzhvj71YAY881/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYEjyy/btrlwVxdSll/VLu3eo7Evgzhvj71YAY881/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYEjyy/btrlwVxdSll/VLu3eo7Evgzhvj71YAY881/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYEjyy%2FbtrlwVxdSll%2FVLu3eo7Evgzhvj71YAY881%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1786&quot; height=&quot;988&quot; data-origin-width=&quot;1786&quot; data-origin-height=&quot;988&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 결과 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4.1 로컬 컴퓨터에서 응답 결과&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;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;{'environmentId': 'ca000000000000000000000000000000',&amp;nbsp; &lt;br /&gt;&amp;nbsp;'ResponseMetadata':&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'RequestId': '2cfxxxxx-e00a-0000-0000-00A000000A00',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'HTTPStatusCode':&amp;nbsp;200,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'HTTPHeaders':&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'date':&amp;nbsp;'Thu,&amp;nbsp;18&amp;nbsp;Nov&amp;nbsp;2021&amp;nbsp;01:41:19&amp;nbsp;GMT',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'content-type':&amp;nbsp;'application/x-amz-json-1.1',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'content-length':&amp;nbsp;'52',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'connection':&amp;nbsp;'keep-alive',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'x-amzn-requestid': '2cfxxxxx-e00a-0000-0000-00A000000A00' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'RetryAttempts':&amp;nbsp;0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;}&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4.2 AWS Cloud9에서 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 실행 후 브라우저의 화면을 리프레쉬하면 Cloud9 개발 환경이 만들어져 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1116&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAgPm8/btrlozinRoI/CMW3DNJX4O2uUfDk5wU8ck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAgPm8/btrlozinRoI/CMW3DNJX4O2uUfDk5wU8ck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAgPm8/btrlozinRoI/CMW3DNJX4O2uUfDk5wU8ck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAgPm8%2FbtrlozinRoI%2FCMW3DNJX4O2uUfDk5wU8ck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;720&quot; data-origin-width=&quot;1116&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;AWS Cloud9&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;에서 환경 삭제&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;콘솔을 사용하여 환경 삭제&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. AWS Cloud9 콘솔에 로그인 (AWS 계정 루트 사용자 또는 IAM 관리자)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 환경이 위치한 AWS 리전 선택&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 삭제할 AWS Cloud9 환경을 선택하고 [Delete]를 선택&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1158&quot; data-origin-height=&quot;554&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cquKoI/btrlofjQJjn/eOBz7fGjD7Znm3mAHedRo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cquKoI/btrlofjQJjn/eOBz7fGjD7Znm3mAHedRo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cquKoI/btrlofjQJjn/eOBz7fGjD7Znm3mAHedRo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcquKoI%2FbtrlofjQJjn%2FeOBz7fGjD7Znm3mAHedRo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;554&quot; data-origin-width=&quot;1158&quot; data-origin-height=&quot;554&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwpLra/btrloTHe7Ko/TOhnMkkgH9nuKrzVekJ8B0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwpLra/btrloTHe7Ko/TOhnMkkgH9nuKrzVekJ8B0/img.png&quot; data-alt=&quot;경고창에 'Delete'를 입력하면 [Delete]버튼이 활성화된다. 이것을 선택하여 삭제한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwpLra/btrloTHe7Ko/TOhnMkkgH9nuKrzVekJ8B0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwpLra%2FbtrloTHe7Ko%2FTOhnMkkgH9nuKrzVekJ8B0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;452&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;경고창에 'Delete'를 입력하면 [Delete]버튼이 활성화된다. 이것을 선택하여 삭제한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dkZXuq/btrlw3htY0f/tH9VOh2evwquAiAP7jyt51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dkZXuq/btrlw3htY0f/tH9VOh2evwquAiAP7jyt51/img.png&quot; data-alt=&quot;선택한 환경이 삭제되고 있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dkZXuq/btrlw3htY0f/tH9VOh2evwquAiAP7jyt51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdkZXuq%2Fbtrlw3htY0f%2FtH9VOh2evwquAiAP7jyt51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;720&quot; data-origin-width=&quot;956&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;선택한 환경이 삭제되고 있다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;코드를 사용하여 환경 삭제&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #16191f;&quot;&gt;1. 삭제할&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #16191f;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #16191f;&quot;&gt;코드&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #16191f;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #16191f;&quot;&gt;작성&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #16191f;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;c9_delete.py&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-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;client&amp;nbsp;=&amp;nbsp;boto3.client('cloud9') &lt;br /&gt;&lt;br /&gt;response&amp;nbsp;=&amp;nbsp;client.delete_environment( &lt;br /&gt;&amp;nbsp;&amp;nbsp;environmentId='caXXXXXXXXXXXXXXXXXXXXXXXXXXX', &lt;br /&gt;) &lt;br /&gt;&lt;br /&gt;print(response)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #16191f;&quot;&gt;environmentId는&amp;nbsp;AWS&amp;nbsp;Cloud9&amp;nbsp;환경을&amp;nbsp;생성할&amp;nbsp;때&amp;nbsp;반환된&amp;nbsp;값이다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #16191f;&quot;&gt;2. 코드&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #16191f;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #16191f;&quot;&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;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;python3 c9_delete.py&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #16191f;&quot;&gt;3. 결과&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #16191f;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #16191f;&quot;&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;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'ResponseMetadata':&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'RequestId': '9f2axxxx-0000-1111-2222-12345678901',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'HTTPStatusCode':&amp;nbsp;200,&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'HTTPHeaders':&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'date':&amp;nbsp;'Thu,&amp;nbsp;18&amp;nbsp;Nov&amp;nbsp;2021&amp;nbsp;02:29:38&amp;nbsp;GMT',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'content-type':&amp;nbsp;'application/x-amz-json-1.1',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'content-length':&amp;nbsp;'2',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'connection':&amp;nbsp;'keep-alive',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'x-amzn-requestid': '9f2axxxx-0000-&lt;span style=&quot;background-color: #9b9b9b; color: #ffffff;&quot;&gt;1111-2222-&lt;/span&gt;&lt;span style=&quot;background-color: #9b9b9b; color: #ffffff;&quot;&gt;12345678901&lt;/span&gt;' &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;},&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'RetryAttempts':&amp;nbsp;0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&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;</description>
      <category>Cloud/AWS</category>
      <category>AWS</category>
      <category>AWS Cloud9</category>
      <category>AWS IDE</category>
      <category>Cloud</category>
      <category>Cloud9</category>
      <category>IDE</category>
      <author>현무랑 니니</author>
      <guid isPermaLink="true">https://dreamlog.tistory.com/610</guid>
      <comments>https://dreamlog.tistory.com/610#entry610comment</comments>
      <pubDate>Thu, 18 Nov 2021 15:39:46 +0900</pubDate>
    </item>
  </channel>
</rss>