<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>코드로 칼퇴하기</title>
    <link>https://coding-is-fun.tistory.com/</link>
    <description>퇴근을 위해 자동화 및 IT 관련 코딩을 소개합니다.</description>
    <language>ko</language>
    <pubDate>Wed, 20 May 2026 07:15:18 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>코드로 칼퇴하기</managingEditor>
    <image>
      <title>코드로 칼퇴하기</title>
      <url>https://tistory1.daumcdn.net/tistory/4493201/attach/d0caf247fa5a4bd9ac627ce55cf7f06f</url>
      <link>https://coding-is-fun.tistory.com</link>
    </image>
    <item>
      <title>데이터베이스 성능 최적화: 인덱스와 쿼리 튜닝</title>
      <link>https://coding-is-fun.tistory.com/27</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;데이터베이스 성능 최적화란?&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스 성능 최적화(Database Performance Optimization)는 데이터베이스 시스템의 효율성을 극대화하여 데이터 저장, 검색 및 처리 속도를 향상시키는 과정입니다. 성능 최적화는 데이터베이스 응답 시간을 줄이고, 시스템 자원을 효율적으로 사용하며, 사용자 경험을 향상시키는 데 중요한 역할을 합니다.&lt;/p&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;인덱스란?&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;인덱스(Index)는 데이터베이스 테이블의 검색 성능을 향상시키기 위해 사용하는 데이터 구조입니다. 인덱스는 테이블의 특정 열에 대한 포인터 목록을 포함하며, 검색 속도를 빠르게 하는 데 도움을 줍니다.&lt;br&gt;인덱스의 장점&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&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;/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;/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;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ol&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;인덱스의 단점&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&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;/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;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ol&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;인덱스 예제 (MySQL)&lt;/h4&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;-- 기본 인덱스 생성
CREATE INDEX idx_column_name ON table_name (column_name);

-- 고유 인덱스 생성
CREATE UNIQUE INDEX idx_unique_column_name ON table_name (column_name);

-- 복합 인덱스 생성
CREATE INDEX idx_multi_columns ON table_name (column1, column2);&lt;/code&gt;&lt;/pre&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;테스트 데이터베이스 생성 및 인덱스 속도 차이 측정 파이썬 코드&lt;/h4&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;110&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1PIDk/btsHv5TVjwb/kF2Gk3hdJ0vy4kJI267PJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1PIDk/btsHv5TVjwb/kF2Gk3hdJ0vy4kJI267PJK/img.png&quot; data-alt=&quot;속도 차이 측정(20393배)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1PIDk/btsHv5TVjwb/kF2Gk3hdJ0vy4kJI267PJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1PIDk%2FbtsHv5TVjwb%2FkF2Gk3hdJ0vy4kJI267PJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;558&quot; height=&quot;110&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;110&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;속도 차이 측정(20393배)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import sqlite3
import time
import pandas as pd

# 데이터베이스 연결
conn = sqlite3.connect(':memory:')
cursor = conn.cursor()

# 예제 테이블 생성
cursor.execute('''
CREATE TABLE employees (
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;id INTEGER PRIMARY KEY,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name TEXT,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;age INTEGER,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;city TEXT
)
''')

# 예제 데이터 삽입 (100만 건)
data = [(i, f'Name{i}', 20 + (i % 30), f'City{(i % 10)}') for i in range(1, 1000001)]
cursor.executemany('INSERT INTO employees VALUES (?, ?, ?, ?)', data)
conn.commit()

# 인덱스 없는 경우 검색 시간 측정 (1000회 반복)
no_index_times = []
for _ in range(1000):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;start_time = time.perf_counter()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cursor.execute('SELECT * FROM employees WHERE name=&quot;Name5000000&quot;')
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cursor.fetchall()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;no_index_times.append(time.perf_counter() - start_time)
no_index_avg_time = sum(no_index_times) / len(no_index_times)

# 인덱스 생성
cursor.execute('CREATE INDEX idx_name ON employees (name)')
conn.commit()

# 인덱스 있는 경우 검색 시간 측정 (1000회 반복)
index_times = []
for _ in range(1000):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;start_time = time.perf_counter()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cursor.execute('SELECT * FROM employees WHERE name=&quot;Name5000000&quot;')
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cursor.fetchall()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;index_times.append(time.perf_counter() - start_time)
index_avg_time = sum(index_times) / len(index_times)

# 결과 출력
results = pd.DataFrame({
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'Search Condition': ['No Index', 'With Index'],
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'Average Time (seconds)': [no_index_avg_time, index_avg_time]
})

# 몇 배 차이인지 계산
speedup = no_index_avg_time / index_avg_time if index_avg_time &amp;gt; 0 else float('inf')
results['Speedup'] = [1, speedup]

# 결과를 CSV 파일로 저장
results.to_csv('index_speed_comparison_revised.csv', index=False)

# 데이터베이스 연결 종료
conn.close()

print(f&quot;Search time comparison has been saved to 'index_speed_comparison_revised.csv'. Speedup: {speedup:.2f}x&quot;)&lt;/code&gt;&lt;/pre&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;쿼리 튜닝이란?&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;쿼리 튜닝(Query Tuning)은 데이터베이스 쿼리의 성능을 최적화하여 응답 시간을 줄이는 과정입니다. 잘 설계된 쿼리는 데이터베이스 성능을 크게 향상시킬 수 있습니다.&lt;br&gt;쿼리 튜닝의 주요 기법&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&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;/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;/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;조인(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;서브쿼리를 사용하지 않거나, 서브쿼리를 최적화하여 성능을 향상시킵니다.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ol&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;쿼리 튜닝 예제 (MySQL)&lt;/h4&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;-- 기본 인덱스 생성
CREATE INDEX idx_column_name ON table_name (column_name);

-- 고유 인덱스 생성
CREATE UNIQUE INDEX idx_unique_column_name ON table_name (column_name);

-- 복합 인덱스 생성
CREATE INDEX idx_multi_columns ON table_name (column1, column2);&lt;/code&gt;&lt;/pre&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1085&quot; data-origin-height=&quot;597&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C4N3Q/btsHxy1sKWq/4yEBLeGRPDlwdtNlvX6K30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C4N3Q/btsHxy1sKWq/4yEBLeGRPDlwdtNlvX6K30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C4N3Q/btsHxy1sKWq/4yEBLeGRPDlwdtNlvX6K30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC4N3Q%2FbtsHxy1sKWq%2F4yEBLeGRPDlwdtNlvX6K30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1085&quot; height=&quot;597&quot; data-origin-width=&quot;1085&quot; data-origin-height=&quot;597&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;인덱스와 쿼리 튜닝을 통한 성능 최적화 사례&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;사례 1: 인덱스를 통한 성능 향상&lt;/p&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;-- 인덱스가 없는 경우
SELECT * FROM employees WHERE last_name = 'Smith';

-- 인덱스 생성
CREATE INDEX idx_last_name ON employees (last_name);

-- 인덱스를 사용한 쿼리
SELECT * FROM employees WHERE last_name = 'Smith';&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;사례 2: 쿼리 튜닝을 통한 성능 향상&lt;/p&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;-- 비효율적인 쿼리
SELECT * FROM sales WHERE YEAR(order_date) = 2022;

-- 최적화된 쿼리
SELECT * FROM sales WHERE order_date BETWEEN '2022-01-01' AND '2022-12-31';&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;성능 최적화 도구&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&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;/li&gt; 
   &lt;li&gt;예: MySQL Enterprise Monitor, Oracle Enterprise Manager&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;/li&gt; 
   &lt;li&gt;예: MySQL EXPLAIN, SQL Server Query Analyzer&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ol&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;데이터베이스 성능 최적화는 데이터베이스 시스템의 효율성을 극대화하여 사용자 경험을 향상시키는 데 중요한 역할을 합니다. 인덱스와 쿼리 튜닝은 성능 최적화의 핵심 기법으로, 데이터 검색 속도를 향상시키고 시스템 자원을 효율적으로 사용할 수 있도록 합니다.&lt;/p&gt;</description>
      <category>요약 정리</category>
      <category>databaseoptimization</category>
      <category>databaseperformance</category>
      <category>DBA</category>
      <category>DBMS</category>
      <category>indexing</category>
      <category>MySQL</category>
      <category>Oracle</category>
      <category>performancetuning</category>
      <category>querytuning</category>
      <category>sql</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/27</guid>
      <comments>https://coding-is-fun.tistory.com/27#entry27comment</comments>
      <pubDate>Sat, 25 May 2024 11:09:20 +0900</pubDate>
    </item>
    <item>
      <title>네트워크 보안 기초: 방화벽과 VPN의 역할</title>
      <link>https://coding-is-fun.tistory.com/26</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;네트워크 보안이란?&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크 보안(Network Security)은 네트워크 인프라를 보호하고, 무단 접근, 남용, 변경, 또는 거부로부터 데이터를 보호하는 데 중점을 둡니다. 네트워크 보안은 다양한 보안 정책, 도구, 기술을 사용하여 구현됩니다.&lt;/p&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;방화벽이란?&lt;/h4&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;839&quot; data-origin-height=&quot;660&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zNMsV/btsHwtFEekN/MU8B8NYx7EBhJHRyNGQer1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zNMsV/btsHwtFEekN/MU8B8NYx7EBhJHRyNGQer1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zNMsV/btsHwtFEekN/MU8B8NYx7EBhJHRyNGQer1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzNMsV%2FbtsHwtFEekN%2FMU8B8NYx7EBhJHRyNGQer1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;599&quot; height=&quot;471&quot; data-origin-width=&quot;839&quot; data-origin-height=&quot;660&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방화벽(Firewall)은 네트워크 보안 시스템으로, 신뢰할 수 있는 내부 네트워크와 신뢰할 수 없는 외부 네트워크 간의 트래픽을 제어합니다. 방화벽은 네트워크 트래픽을 모니터링하고, 미리 정의된 보안 규칙에 따라 이를 허용하거나 차단합니다.&lt;br&gt;방화벽의 역할&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&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;/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;미리 정의된 보안 규칙에 따라 특정 IP 주소, 포트 번호, 프로토콜 등을 기반으로 트래픽을 허용하거나 차단합니다.&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;알려진 보안 위협으로부터 네트워크를 보호하기 위해 침입 차단 시스템(IPS)을 통합하여 작동합니다.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ol&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;방화벽 설정 예제 (Linux iptables)&lt;/h4&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 기본 정책 설정: 모든 입력 트래픽을 차단하고 출력 트래픽은 허용
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP

# 특정 포트 허용 (예: SSH 포트 22)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 특정 IP 주소 허용 (예: 192.168.1.100)
sudo iptables -A INPUT -s 192.168.1.100 -j ACCEPT

# 설정 저장
sudo iptables-save &amp;gt; /etc/iptables/rules.v4&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;VPN이란?&lt;/h4&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;265&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4FUth/btsHwxHYyuZ/hSBId5uwTk6T0lu6GZ3RL0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4FUth/btsHwxHYyuZ/hSBId5uwTk6T0lu6GZ3RL0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4FUth/btsHwxHYyuZ/hSBId5uwTk6T0lu6GZ3RL0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/4FUth/btsHwxHYyuZ/hSBId5uwTk6T0lu6GZ3RL0/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;932&quot; height=&quot;265&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;265&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VPN(Virtual Private Network)은 공용 네트워크를 통해 프라이빗 네트워크를 확장하는 기술입니다. VPN은 암호화된 터널을 통해 데이터 전송을 보호하며, 원격 사용자가 내부 네트워크에 안전하게 접근할 수 있도록 합니다.&lt;br&gt;VPN의 역할&lt;/p&gt;&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&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;/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;/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;사용자의 IP 주소를 숨기고, 온라인 활동을 익명으로 유지합니다.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ol&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;VPN 설정 예제 (OpenVPN)&lt;/h4&gt;&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt; 
 &lt;li&gt;&lt;b&gt;&lt;b&gt;OpenVPN 설치&lt;br&gt;&lt;/b&gt;&lt;/b&gt; &lt;pre id=&quot;code_1716216980733&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;sudo apt update
sudo apt install openvpn&lt;/code&gt;&lt;/pre&gt; &lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;&lt;b&gt;OpenVPN 서버 설정&lt;br&gt;&lt;/b&gt;&lt;/b&gt; &lt;pre id=&quot;code_1716216987135&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# OpenVPN 설정 파일 편집
sudo nano /etc/openvpn/server.conf

# 서버 설정 예제
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push &quot;redirect-gateway def1 bypass-dhcp&quot;
push &quot;dhcp-option DNS 8.8.8.8&quot;
push &quot;dhcp-option DNS 8.8.4.4&quot;
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log-append /var/log/openvpn.log
verb 3&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;&lt;b&gt;OpenVPN 클라이언트 설정&lt;br&gt;&lt;/b&gt;&lt;/b&gt; &lt;pre id=&quot;code_1716216988922&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 클라이언트 설정 파일 편집
nano client.ovpn

# 클라이언트 설정 예제
client
dev tun
proto udp
remote YOUR_SERVER_IP 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-CBC
verb 3
&amp;lt;ca&amp;gt;
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
&amp;lt;/ca&amp;gt;
&amp;lt;cert&amp;gt;
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
&amp;lt;/cert&amp;gt;
&amp;lt;key&amp;gt;
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
&amp;lt;/key&amp;gt;&lt;/code&gt;&lt;/pre&gt; &lt;/li&gt; 
&lt;/ol&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;네트워크 보안의 중요성&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크 보안은 데이터 유출, 사이버 공격, 시스템 중단 등을 방지하는 데 필수적입니다. 방화벽과 VPN은 네트워크 보안을 강화하는 두 가지 핵심 기술로, 조직의 보안 인프라를 강화하고 안전한 데이터 전송과 접근을 보장합니다.&lt;br&gt;&amp;nbsp;&lt;br&gt;이 글을 통해 네트워크 보안의 기초 개념과 방화벽, VPN의 역할을 이해할 수 있습니다. 추가적인 질문이나 도움이 필요하시면 언제든지 댓글로 남겨주세요. 감사합니다!&lt;/p&gt;</description>
      <category>정보 보안</category>
      <category>cybersecurity</category>
      <category>DataProtection</category>
      <category>Firewall</category>
      <category>iptables</category>
      <category>itsecurity</category>
      <category>Linux</category>
      <category>networksecurity</category>
      <category>openvpn</category>
      <category>securenetworking</category>
      <category>VPN</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/26</guid>
      <comments>https://coding-is-fun.tistory.com/26#entry26comment</comments>
      <pubDate>Fri, 24 May 2024 09:01:17 +0900</pubDate>
    </item>
    <item>
      <title>정보보안 전문가가 되기 위한 마일스톤과 로드맵</title>
      <link>https://coding-is-fun.tistory.com/25</link>
      <description>&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;정보보안 전문가란?&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;정보보안 전문가(Information Security Specialist)는 기업의 데이터, 네트워크, 시스템을 보호하고, 사이버 공격으로부터 방어하는 역할을 수행하는 전문가입니다. 이들은 보안 정책을 설계하고, 보안 솔루션을 구현하며, 위협을 탐지하고 대응하는 등의 업무를 수행합니다.&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;정보보안 전문가가 되기 위한 마일스톤&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1330&quot; data-origin-height=&quot;785&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dno5Zz/btsHuQa1dLb/qWD1mSDMos47cl2jymD0e0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dno5Zz/btsHuQa1dLb/qWD1mSDMos47cl2jymD0e0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dno5Zz/btsHuQa1dLb/qWD1mSDMos47cl2jymD0e0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdno5Zz%2FbtsHuQa1dLb%2FqWD1mSDMos47cl2jymD0e0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1330&quot; height=&quot;785&quot; data-origin-width=&quot;1330&quot; data-origin-height=&quot;785&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&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;/li&gt;
&lt;li&gt;운영 체제, 프로그래밍, 네트워크 아키텍처, 데이터베이스 등 기본적인 IT 지식을 쌓습니다.&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;/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;보안 실습 환경을 구축하고 다양한 보안 툴을 사용해 봅니다.&lt;/li&gt;
&lt;li&gt;가상 머신을 이용해 해킹 실습을 하거나, CTF(Capture The Flag) 대회에 참여해 실전 경험을 쌓습니다.&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;/li&gt;
&lt;li&gt;대표적인 자격증으로는 CompTIA Security+, CISSP, CEH, CISM, OSCP 등이 있습니다.&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;/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;보안 관련 직무에서 실무 경험을 쌓습니다.&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;고급 자격증을 취득하고, 더 높은 수준의 보안 직무로 경력을 개발합니다.&lt;/li&gt;
&lt;li&gt;CISO(Chief Information Security Officer)와 같은 최고 보안 책임자로 성장할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;정보보안 전문가 로드맵&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&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;IT 기초 지식: 컴퓨터 과학, 네트워크, 운영 체제, 프로그래밍 등.&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;보안 실습: 가상 환경에서 해킹 실습, CTF 대회 참여.&lt;/li&gt;
&lt;li&gt;자격증 취득: CompTIA Security+, CEH, CISSP 등.&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;/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;보안 직무 경험: 보안 컨설턴트, 보안 엔지니어, 보안 분석가 등의 역할 수행.&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;고급 자격증 취득: CISM, OSCP, CISSP 등.&lt;/li&gt;
&lt;li&gt;경력 개발: 보안 관리자로서의 역할 수행, CISO로 성장.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;필수 자격증&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자격증설명&lt;/p&gt;
&lt;table style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: left; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;CompTIA Security+&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;보안 기초 지식을 검증하는 자격증으로, 보안 직무를 시작하는 데 유용합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;CISSP&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;(Certified Information Systems Security Professional) 가장 권위 있는 정보보안 자격증 중 하나로, 심화된 보안 지식을 요구합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;CEH&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;(Certified Ethical Hacker) 윤리적 해킹 기법을 검증하는 자격증으로, 해킹과 방어 기술을 학습합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;CISM&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;(Certified Information Security Manager) 보안 관리와 리더십 능력을 검증하는 자격증입니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;OSCP&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;(Offensive Security Certified Professional) 실습 중심의 고급 해킹 기술을 검증하는 자격증입니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;정보보안 전문가가 되기 위한 추천 학습 자료&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&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;&quot;CompTIA Security+ Study Guide&quot;&lt;/li&gt;
&lt;li&gt;&quot;CISSP All-in-One Exam Guide&quot;&lt;/li&gt;
&lt;li&gt;&quot;The Web Application Hacker's Handbook&quot;&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;Coursera의 &quot;Introduction to Cyber Security Specialization&quot;&lt;/li&gt;
&lt;li&gt;Udemy의 &quot;The Complete Cyber Security Course&quot;&lt;/li&gt;
&lt;li&gt;Pluralsight의 &quot;CISSP Certification Path&quot;&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;a style=&quot;color: #000000;&quot; href=&quot;https://krebsonsecurity.com/&quot;&gt;Krebs on Security&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.darkreading.com/&quot;&gt;Dark Reading&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.reddit.com/r/cybersecurity/&quot;&gt;Reddit - Cyber Security&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;정보보안 전문가가 되기 위한 여정은 끊임없는 학습과 실습, 자격증 취득, 실무 경험을 통해 이루어집니다. 명확한 목표를 설정하고 단계별로 차근차근 준비한다면, 성공적인 정보보안 전문가로 성장할 수 있습니다. 추가적인 질문이나 도움이 필요하시면 언제든지 댓글로 남겨주세요. 감사합니다!&lt;/p&gt;</description>
      <category>정보 보안</category>
      <category>cybersecurity</category>
      <category>네트워크보안</category>
      <category>보안관리</category>
      <category>보안기술</category>
      <category>보안자격증</category>
      <category>정보보안</category>
      <category>정보보안전문가</category>
      <category>해킹</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/25</guid>
      <comments>https://coding-is-fun.tistory.com/25#entry25comment</comments>
      <pubDate>Thu, 23 May 2024 09:50:54 +0900</pubDate>
    </item>
    <item>
      <title>머신 러닝 기초: 파이썬을 사용한 Scikit-Learn 실습</title>
      <link>https://coding-is-fun.tistory.com/24</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;머신 러닝 기초: 파이썬을 사용한 Scikit-Learn 실습&lt;/h3&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;머신 러닝이란?&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;머신 러닝(Machine Learning)은 인공지능(AI)의 한 분야로, 컴퓨터가 명시적인 프로그래밍 없이 데이터를 통해 학습하고 예측을 수행할 수 있도록 하는 기술입니다. 머신 러닝은 패턴 인식, 데이터 마이닝, 예측 분석 등에 활용됩니다.&lt;/p&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;머신 러닝의 주요 개념&lt;/h4&gt;&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&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;데이터를 훈련 데이터(training data)와 테스트 데이터(test data)로 분리하여 모델을 학습하고 평가합니다.&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;지도 학습(Supervised Learning): 입력 데이터와 함께 정답(레이블)이 주어지는 학습 방식입니다. 예: 회귀, 분류.&lt;/li&gt; 
   &lt;li&gt;비지도 학습(Unsupervised Learning): 입력 데이터만 주어지고 정답이 없는 학습 방식입니다. 예: 클러스터링, 차원 축소.&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;모델의 성능을 평가하기 위한 지표입니다. 예: 정확도(accuracy), 정밀도(precision), 재현율(recall), F1-score 등.&lt;/li&gt; 
  &lt;/ul&gt; &lt;/li&gt; 
&lt;/ol&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;Scikit-Learn 소개&lt;/h4&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;Scikit-Learn은 파이썬에서 가장 널리 사용되는 머신 러닝 라이브러리 중 하나로, 다양한 머신 러닝 알고리즘을 제공하며, 간단하고 일관된 API를 통해 쉽게 사용할 수 있습니다.&lt;/p&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;Scikit-Learn 실습&lt;/h4&gt;&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt; 
 &lt;li&gt;&lt;b&gt;필수 라이브러리 설치&lt;/b&gt;&lt;b&gt;&lt;/b&gt; &lt;pre id=&quot;code_1716214811947&quot; class=&quot;bash&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;pip install numpy pandas scikit-learn&lt;/code&gt;&lt;/pre&gt; &lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/li&gt; 
 &lt;li&gt;&amp;nbsp;&lt;b&gt;&lt;b&gt;데이터 로드 및 전처리&lt;br&gt;&lt;/b&gt;&lt;/b&gt; &lt;pre id=&quot;code_1716214882699&quot; class=&quot;python&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# 데이터 로드 (예제 데이터 사용)
from sklearn.datasets import load_iris
data = load_iris()
X = pd.DataFrame(data.data, columns=data.feature_names)
y = pd.Series(data.target)

# 데이터 분리 (훈련 데이터와 테스트 데이터)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 데이터 스케일링 (표준화)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)&lt;/code&gt;&lt;/pre&gt; &lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;&lt;b&gt;모델 학습&lt;br&gt;&lt;/b&gt;&lt;/b&gt; &lt;pre id=&quot;code_1716214910538&quot; class=&quot;python&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report

# 모델 초기화 및 학습
model = LogisticRegression()
model.fit(X_train_scaled, y_train)

# 예측
y_pred = model.predict(X_test_scaled)

# 성능 평가
accuracy = accuracy_score(y_test, y_pred)
report = classification_report(y_test, y_pred)

print(f'Accuracy: {accuracy}')
print(f'Classification Report:\n{report}')&lt;/code&gt;&lt;/pre&gt; &lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;&lt;b&gt;결과 해석&lt;br&gt;&lt;/b&gt;&lt;/b&gt; &lt;pre id=&quot;code_1716214964257&quot; class=&quot;python&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;Accuracy: 0.9777777777777777
Classification Report:
              precision    recall  f1-score   support

           0       1.00      1.00      1.00        16
           1       1.00      1.00      1.00        19
           2       0.92      1.00      0.96        10

    accuracy                           0.98        45
   macro avg       0.97      1.00      0.98        45
weighted avg       0.98      0.98      0.98        45&lt;/code&gt;&lt;/pre&gt; &lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;&lt;b&gt;결과 시각화&lt;br&gt;&lt;/b&gt;&lt;/b&gt; &lt;pre id=&quot;code_1716215396645&quot; class=&quot;python&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import matplotlib.pyplot as plt
from sklearn.decomposition import PCA

# PCA를 사용하여 데이터 시각화
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_test_scaled)

plt.figure(figsize=(8, 6))
scatter = plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y_test, cmap='viridis')
legend1 = plt.legend(*scatter.legend_elements(), title=&quot;Classes&quot;)
plt.gca().add_artist(legend1)
plt.title('PCA of Iris Dataset')
plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.savefig(&quot;pca_iris.png&quot;)
plt.show()&lt;/code&gt;&lt;/pre&gt; &lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/li&gt; 
&lt;/ol&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;전체 코드&lt;/b&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/p&gt;&lt;pre data-ke-type=&quot;codeblock&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# 데이터 로드 (예제 데이터 사용)
from sklearn.datasets import load_iris
data = load_iris()
X = pd.DataFrame(data.data, columns=data.feature_names)
y = pd.Series(data.target)

# 데이터 분리 (훈련 데이터와 테스트 데이터)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 데이터 스케일링 (표준화)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 모델 초기화 및 학습
model = LogisticRegression()
model.fit(X_train_scaled, y_train)

# 예측
y_pred = model.predict(X_test_scaled)

# 성능 평가
accuracy = accuracy_score(y_test, y_pred)
report = classification_report(y_test, y_pred)

print(f'Accuracy: {accuracy}')
print(f'Classification Report:\n{report}')

# PCA를 사용하여 데이터 시각화
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_test_scaled)

plt.figure(figsize=(8, 6))
scatter = plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y_test, cmap='viridis')
legend1 = plt.legend(*scatter.legend_elements(), title=&quot;Classes&quot;)
plt.gca().add_artist(legend1)
plt.title('PCA of Iris Dataset')
plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.savefig(&quot;pca_iris.png&quot;)
plt.show()&lt;/code&gt;&lt;/pre&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;이 코드는 다음과 같은 순서로 진행됩니다:&lt;/p&gt;&lt;div&gt; 
 &lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt; 
  &lt;li&gt;Iris 데이터셋 로드 및 분리&lt;/li&gt; 
  &lt;li&gt;데이터 표준화&lt;/li&gt; 
  &lt;li&gt;Logistic Regression 모델 학습 및 예측&lt;/li&gt; 
  &lt;li&gt;모델 성능 평가&lt;/li&gt; 
  &lt;li&gt;PCA 시각화 및 저장&lt;/li&gt; 
 &lt;/ol&gt; 
&lt;/div&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;&lt;h4 data-ke-size=&quot;size20&quot;&gt;시각 자료&lt;/h4&gt;&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt; 
 &lt;li&gt;&lt;b&gt;&lt;b&gt;Iris 데이터셋의 PCA 시각화&lt;br&gt;&lt;/b&gt;&lt;/b&gt;
  &lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;620&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vL5c3/btsHv6KQZ3X/I4o58Ka3va2lJztjvtn4n0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vL5c3/btsHv6KQZ3X/I4o58Ka3va2lJztjvtn4n0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vL5c3/btsHv6KQZ3X/I4o58Ka3va2lJztjvtn4n0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvL5c3%2FbtsHv6KQZ3X%2FI4o58Ka3va2lJztjvtn4n0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;575&quot; height=&quot;449&quot; data-origin-width=&quot;794&quot; data-origin-height=&quot;620&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt; 
 &lt;li&gt;&lt;b&gt;&lt;b&gt;Classification Report&lt;br&gt;&lt;/b&gt;&lt;/b&gt; 
  &lt;table style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: left; 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 style=&quot;height: ;&quot;&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;&lt;b&gt;Precision&lt;/b&gt;&lt;/span&gt;&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: left;&quot;&gt;Recall&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: left;&quot;&gt;F1-Score&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-align: left;&quot;&gt;Support&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr style=&quot;height: ;&quot;&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;1.00&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;1.00&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;1.00&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;16&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr style=&quot;height: ;&quot;&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;1.00&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;1.00&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;1.00&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;19&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr style=&quot;height: ;&quot;&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;0.92&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;1.00&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;0.96&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;10&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr style=&quot;height: ;&quot;&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;&lt;b&gt;Accuracy&lt;/b&gt;&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;&amp;nbsp;&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;&amp;nbsp;&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;0.98&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr style=&quot;height: ;&quot;&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;&lt;b&gt;Macro Avg&lt;/b&gt;&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;0.97&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;1.00&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;0.98&lt;/td&gt; 
    &lt;/tr&gt; 
    &lt;tr style=&quot;height: ;&quot;&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;&lt;b&gt;Weighted Avg&lt;/b&gt;&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;0.98&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;0.98&lt;/td&gt; 
     &lt;td style=&quot;width: ;height: ;&quot;&gt;0.98&lt;/td&gt; 
    &lt;/tr&gt; 
   &lt;/tbody&gt; 
  &lt;/table&gt; &lt;/li&gt; 
&lt;/ol&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br&gt;이 실습을 통해 머신 러닝의 기초 개념과 Scikit-Learn을 사용한 간단한 모델 학습 과정을 이해할 수 있습니다. 머신 러닝 모델의 성능을 평가하고, 실제 데이터에 적용해 보세요. 추가적인 질문이나 도움이 필요하시면 언제든지 댓글로 남겨주세요. 감사합니다!&lt;/p&gt;</description>
      <category>개발 실습 및 프로젝트</category>
      <category>AI</category>
      <category>MachineLearning</category>
      <category>python</category>
      <category>scikitlearn</category>
      <category>데이터분석</category>
      <category>데이터사이언스</category>
      <category>머신러닝</category>
      <category>인공지능</category>
      <category>파이썬</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/24</guid>
      <comments>https://coding-is-fun.tistory.com/24#entry24comment</comments>
      <pubDate>Wed, 22 May 2024 15:17:32 +0900</pubDate>
    </item>
    <item>
      <title>클라우드 컴퓨팅 실습: AWS EC2 인스턴스 생성 및 설정</title>
      <link>https://coding-is-fun.tistory.com/22</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-1910153641957673&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;클라우드 컴퓨팅 실습: AWS EC2 인스턴스 생성 및 설정&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;AWS 계정 생성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 AWS 계정이 없으신 경우, 아래 단계를 따라 계정을 생성하세요.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/&quot;&gt;AWS 홈페이지&lt;/a&gt;에 접속합니다.&lt;/li&gt;
&lt;li&gt;상단의 &quot;계정 생성&quot; 버튼을 클릭합니다.&lt;/li&gt;
&lt;li&gt;지시에 따라 이메일 주소, 비밀번호 등을 입력하여 계정을 생성합니다.&lt;/li&gt;
&lt;li&gt;결제 정보를 입력하고 계정 설정을 완료합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;AWS EC2 인스턴스 생성&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;AWS Management Console에 로그인&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://aws.amazon.com/console/&quot;&gt;AWS Management Console&lt;/a&gt;에 로그인합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;EC2 대시보드로 이동&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;콘솔에서 &quot;EC2&quot;를 검색하여 EC2 대시보드로 이동합니다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1312&quot; data-origin-height=&quot;578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEwLnB/btsHukcu7Ws/TKK4IllUErd24TDiBGzbzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEwLnB/btsHukcu7Ws/TKK4IllUErd24TDiBGzbzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEwLnB/btsHukcu7Ws/TKK4IllUErd24TDiBGzbzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEwLnB%2FbtsHukcu7Ws%2FTKK4IllUErd24TDiBGzbzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1312&quot; height=&quot;578&quot; data-origin-width=&quot;1312&quot; data-origin-height=&quot;578&quot;/&gt;&lt;/span&gt;&lt;/figure&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;&quot;인스턴스 시작&quot; 버튼을 클릭합니다.&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;인스턴스를 식별하기 위한 태그를 추가합니다. 예: &quot;Name&quot; 키에 &quot;MyEC2Instance&quot; 값을 입력합니다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;169&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tEQgF/btsHwwbbWqt/1QcYuONZM1g2tHKTD9wDv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tEQgF/btsHwwbbWqt/1QcYuONZM1g2tHKTD9wDv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tEQgF/btsHwwbbWqt/1QcYuONZM1g2tHKTD9wDv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtEQgF%2FbtsHwwbbWqt%2F1QcYuONZM1g2tHKTD9wDv0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;786&quot; height=&quot;169&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;169&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;AMI 선택&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Amazon Machine Image (AMI)를 선택합니다. 여기서는 &quot;Amazon Linux 2 AMI (HVM), SSD Volume Type&quot;을 선택합니다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;706&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJ1sai/btsHvtT0Spm/YzzmEQ8yFkT3TKFD8HKAHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJ1sai/btsHvtT0Spm/YzzmEQ8yFkT3TKFD8HKAHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJ1sai/btsHvtT0Spm/YzzmEQ8yFkT3TKFD8HKAHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJ1sai%2FbtsHvtT0Spm%2FYzzmEQ8yFkT3TKFD8HKAHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;780&quot; height=&quot;706&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;706&quot;/&gt;&lt;/span&gt;&lt;/figure&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;인스턴스 유형을 선택합니다. 무료 티어를 사용하고 있다면 &quot;t2.micro&quot;를 선택합니다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;275&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uyc4x/btsHv7pqYb7/WWwvI5XM0AR2sECyLIJsjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uyc4x/btsHv7pqYb7/WWwvI5XM0AR2sECyLIJsjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uyc4x/btsHv7pqYb7/WWwvI5XM0AR2sECyLIJsjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fuyc4x%2FbtsHv7pqYb7%2FWWwvI5XM0AR2sECyLIJsjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;783&quot; height=&quot;275&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;275&quot;/&gt;&lt;/span&gt;&lt;/figure&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;키 페어를 선택합니다. (저는 별도로 키 페어를 구성하지 않았기에 Skip 합니다)&lt;/li&gt;
&lt;li&gt;새 키 페어를 생성하거나 기존 키 페어를 선택하여 다운로드합니다. 이 키 페어는 인스턴스에 접근할 때 사용됩니다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;275&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uyc4x/btsHv7pqYb7/WWwvI5XM0AR2sECyLIJsjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uyc4x/btsHv7pqYb7/WWwvI5XM0AR2sECyLIJsjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uyc4x/btsHv7pqYb7/WWwvI5XM0AR2sECyLIJsjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fuyc4x%2FbtsHv7pqYb7%2FWWwvI5XM0AR2sECyLIJsjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;783&quot; height=&quot;275&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;275&quot;/&gt;&lt;/span&gt;&lt;/figure&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;새로운 보안 그룹을 생성하고 SSH 접근을 허용합니다.&lt;/li&gt;
&lt;li&gt;유형: SSH, 프로토콜: TCP, 포트 범위: 22, 소스: 내 IP.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;685&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwpIgV/btsHvuFpf3H/LRGsvj108eIHN92RTzXjt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwpIgV/btsHvuFpf3H/LRGsvj108eIHN92RTzXjt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwpIgV/btsHvuFpf3H/LRGsvj108eIHN92RTzXjt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdwpIgV%2FbtsHvuFpf3H%2FLRGsvj108eIHN92RTzXjt0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;788&quot; height=&quot;685&quot; data-origin-width=&quot;788&quot; data-origin-height=&quot;685&quot;/&gt;&lt;/span&gt;&lt;/figure&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;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;792&quot; data-origin-height=&quot;528&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btsSNM/btsHwq9V8Lc/LdPcWku3RUMo46yCR26WS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btsSNM/btsHwq9V8Lc/LdPcWku3RUMo46yCR26WS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btsSNM/btsHwq9V8Lc/LdPcWku3RUMo46yCR26WS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtsSNM%2FbtsHwq9V8Lc%2FLdPcWku3RUMo46yCR26WS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;792&quot; height=&quot;528&quot; data-origin-width=&quot;792&quot; data-origin-height=&quot;528&quot;/&gt;&lt;/span&gt;&lt;/figure&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;요약을 통해 생성하고자 하는 EC2의 구성이 맞는지 검토합니다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;383&quot; data-origin-height=&quot;773&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c8bThh/btsHu1wFMIq/ENtUeNMKTdr39BG7KY73Sk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c8bThh/btsHu1wFMIq/ENtUeNMKTdr39BG7KY73Sk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c8bThh/btsHu1wFMIq/ENtUeNMKTdr39BG7KY73Sk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc8bThh%2FbtsHu1wFMIq%2FENtUeNMKTdr39BG7KY73Sk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;383&quot; height=&quot;773&quot; data-origin-width=&quot;383&quot; data-origin-height=&quot;773&quot;/&gt;&lt;/span&gt;&lt;/figure&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;&quot;인스턴스 시작&quot; 버튼을 클릭하여 생성된 인스턴스를 확인합니다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1333&quot; data-origin-height=&quot;503&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q8xMC/btsHupdKG60/weYhnnfxdNjGQooqm8Lp91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q8xMC/btsHupdKG60/weYhnnfxdNjGQooqm8Lp91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q8xMC/btsHupdKG60/weYhnnfxdNjGQooqm8Lp91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq8xMC%2FbtsHupdKG60%2FweYhnnfxdNjGQooqm8Lp91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1333&quot; height=&quot;503&quot; data-origin-width=&quot;1333&quot; data-origin-height=&quot;503&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;163&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b39qXe/btsHweV85fq/vjyzcVj1ibbEcommzuK400/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b39qXe/btsHweV85fq/vjyzcVj1ibbEcommzuK400/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b39qXe/btsHweV85fq/vjyzcVj1ibbEcommzuK400/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb39qXe%2FbtsHweV85fq%2FvjyzcVj1ibbEcommzuK400%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;860&quot; height=&quot;163&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;163&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;EC2 인스턴스에 접속&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;SSH 클라이언트 설정&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;&lt;code class=&quot;language-bash&quot;&gt;chmod 400 MyKeyPair.pem&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;인스턴스에 SSH로 접속&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;EC2-인스턴스-퍼블릭-IP&amp;gt;&lt;/code&gt; 부분을 실제 인스턴스의 퍼블릭 IP 주소로 대체합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-bash&quot;&gt; ssh -i &quot;MyKeyPair.pem&quot; ec2-user@&amp;lt;EC2-인스턴스-퍼블릭-IP&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;EC2 인스턴스 설정&lt;/h4&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;code class=&quot;language-bash&quot;&gt; sudo yum update -y&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Apache 웹 서버 설치&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-bash&quot;&gt; sudo yum install -y httpd
 sudo systemctl start httpd
 sudo systemctl enable httpd&lt;/code&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;code&gt;http://&amp;lt;EC2-인스턴스-퍼블릭-IP&amp;gt;&lt;/code&gt;를 입력하여 Apache 웹 서버의 기본 페이지가 표시되는지 확인합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;보안 그룹 설정 변경&lt;/h4&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;EC2 대시보드로 돌아가 보안 그룹을 수정합니다.&lt;/li&gt;
&lt;li&gt;인바운드 규칙에 HTTP 접근을 허용합니다.&lt;/li&gt;
&lt;li&gt;유형: HTTP, 프로토콜: TCP, 포트 범위: 80, 소스: 0.0.0.0/0.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;추가 설정&lt;/h4&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;code&gt;http://&amp;lt;EC2-인스턴스-퍼블릭-IP&amp;gt;&lt;/code&gt;를 새로 고침하여 변경된 웹 페이지를 확인합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-bash&quot;&gt; echo &quot;&amp;lt;h1&amp;gt;Hello, World!&amp;lt;/h1&amp;gt;&quot; | sudo tee /var/www/html/index.html&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 실습을 통해 AWS EC2 인스턴스를 생성하고 설정하는 기본 과정을 익힐 수 있습니다. 추가적인 질문이나 도움이 필요하시면 언제든지 댓글로 남겨주세요. 감사합니다!&lt;/p&gt;</description>
      <category>개발 실습 및 프로젝트</category>
      <category>AWS</category>
      <category>DevOps</category>
      <category>EC2</category>
      <category>it실습</category>
      <category>웹서버</category>
      <category>인프라관리</category>
      <category>클라우드서비스</category>
      <category>클라우드컴퓨팅</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/22</guid>
      <comments>https://coding-is-fun.tistory.com/22#entry22comment</comments>
      <pubDate>Tue, 21 May 2024 09:30:39 +0900</pubDate>
    </item>
    <item>
      <title>REST API란 무엇인가?</title>
      <link>https://coding-is-fun.tistory.com/23</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-1910153641957673&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 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;REST API란 무엇인가?&lt;/h3&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;REST API란?&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;REST(Representational State Transfer) API는 웹 서비스 설계 아키텍처 중 하나로, 클라이언트와 서버 간의 상호작용을 원활하게 하기 위한 일련의 원칙을 정의합니다. REST는 HTTP 프로토콜을 기반으로 하여 데이터를 주고받는 데 사용되며, 웹 애플리케이션 개발에서 널리 사용됩니다.&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;REST의 주요 원칙&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;REST 아키텍처는 다음과 같은 주요 원칙을 따릅니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&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;모든 것은 자원으로 간주되며, 각 자원은 고유한 URI(Uniform Resource Identifier)로 식별됩니다.&lt;/li&gt;
&lt;li&gt;예: &lt;a href=&quot;http://example.com/users/123&quot;&gt;http://example.com/users/123&lt;/a&gt;는 사용자 자원 중 ID가 123인 사용자를 식별합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;무상태성(Stateless)&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;모든 필요한 정보는 요청에 포함되어야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;캐시 가능(Cacheable)&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;HTTP 헤더를 사용하여 캐싱 관련 정보를 제공할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;일관된 인터페이스(Uniform Interface)&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;HTTP 메서드(GET, POST, PUT, DELETE 등)와 표준 응답 코드(200, 404, 500 등)를 사용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;계층화 시스템(Layered System)&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;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;REST API의 HTTP 메서드&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;REST API는 주로 다음과 같은 HTTP 메서드를 사용하여 자원에 대해 작업을 수행합니다:&lt;/p&gt;
&lt;table style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: left; border-collapse: collapse; width: 85%; height: 100px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&lt;b&gt;메서드 &lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;&lt;b&gt;사용 예&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.5116%; height: 20px;&quot;&gt;&lt;b&gt;GET&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30.814%; height: 20px;&quot;&gt;자원의 상태나 정보를 조회합니다.&lt;/td&gt;
&lt;td style=&quot;width: 42.5581%; height: 20px;&quot;&gt;&lt;b&gt;`GET /users/123`&lt;/b&gt; - ID가 123인 사용자 조회&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.5116%; height: 20px;&quot;&gt;&lt;b&gt;POST&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30.814%; height: 20px;&quot;&gt;새로운 자원을 생성합니다.&lt;/td&gt;
&lt;td style=&quot;width: 42.5581%; height: 20px;&quot;&gt;&lt;b&gt;`POST /users`&lt;/b&gt; - 새로운 사용자 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.5116%; height: 20px;&quot;&gt;&lt;b&gt;PUT&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30.814%; height: 20px;&quot;&gt;자원의 상태나 정보를 갱신합니다.&lt;/td&gt;
&lt;td style=&quot;width: 42.5581%; height: 20px;&quot;&gt;&lt;b&gt;`PUT /users/123`&lt;/b&gt; - ID가 123인 사용자 정보 갱신&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 11.5116%; height: 20px;&quot;&gt;&lt;b&gt;DELETE&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 30.814%; height: 20px;&quot;&gt;자원을 삭제합니다.&lt;/td&gt;
&lt;td style=&quot;width: 42.5581%; height: 20px;&quot;&gt;&lt;b&gt;`DELETE /users/123`&lt;/b&gt; - ID가 123인 사용자 삭제&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;REST API의 장점&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&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;REST API는 HTTP 프로토콜을 사용하므로, 다양한 플랫폼과 언어에서 쉽게 구현하고 확장할 수 있습니다.&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;표준 HTTP 메서드와 상태 코드를 사용하므로, 일관된 인터페이스를 제공합니다.&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;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;REST API의 단점&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&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;복잡한 쿼리나 트랜잭션 처리는 REST API에서 구현하기 어렵습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;HTTP 프로토콜 의존성&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;REST API는 HTTP 프로토콜에 의존하므로, 다른 프로토콜을 사용하는 환경에서는 제한적일 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;REST API 설계 예시&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;657&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNMmYd/btsHuro7aTT/5NDxYIB9M2tgINGcxn1WO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNMmYd/btsHuro7aTT/5NDxYIB9M2tgINGcxn1WO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNMmYd/btsHuro7aTT/5NDxYIB9M2tgINGcxn1WO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNMmYd%2FbtsHuro7aTT%2F5NDxYIB9M2tgINGcxn1WO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;632&quot; height=&quot;446&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;657&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;아래는 간단한 REST API 설계 예시입니다. 이 예시는 사용자 관리 시스템을 가정한 것입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;GET /users&lt;/b&gt;: 모든 사용자 목록을 조회합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;GET /users/{id}&lt;/b&gt;: 특정 ID를 가진 사용자의 정보를 조회합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;POST /users&lt;/b&gt;: 새로운 사용자를 생성합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;PUT /users/{id}&lt;/b&gt;: 특정 ID를 가진 사용자의 정보를 갱신합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DELETE /users/{id}&lt;/b&gt;: 특정 ID를 가진 사용자를 삭제합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;REST API 설계 시 고려사항&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;명확하고 일관된 URI&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;URI는 자원을 명확하게 식별할 수 있어야 합니다.&lt;/li&gt;
&lt;li&gt;예: &lt;a href=&quot;http://example.com/users&quot;&gt;http://example.com/users&lt;/a&gt;는 사용자 목록을, &lt;a href=&quot;http://example.com/users/123&quot;&gt;http://example.com/users/123&lt;/a&gt;는 특정 사용자를 나타냅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;적절한 HTTP 메서드 사용&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자원에 대한 작업을 수행할 때 적절한 HTTP 메서드를 사용합니다.&lt;/li&gt;
&lt;li&gt;예: 데이터를 조회할 때는 GET, 새로운 데이터를 생성할 때는 POST를 사용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;HTTP 상태 코드 사용&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클라이언트에게 요청의 결과를 명확하게 전달하기 위해 적절한 HTTP 상태 코드를 사용합니다.&lt;/li&gt;
&lt;li&gt;예: 요청이 성공했을 때는 200 OK, 리소스를 찾을 수 없을 때는 404 Not Found를 사용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;REST API의 실제 예시&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;아래는 실제로 간단한 REST API 서버를 파이썬 Flask를 사용해 구현하는 예시입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1716206839220&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from flask import Flask, jsonify, request

app = Flask(__name__)

# 임시 데이터 저장
users = [
    {'id': 1, 'name': 'Alice'},
    {'id': 2, 'name': 'Bob'},
    {'id': 3, 'name': 'Charlie'}
]

# 모든 사용자 조회
@app.route('/users', methods=['GET'])
def get_users():
    return jsonify(users)

# 특정 사용자 조회
@app.route('/users/&amp;lt;int:user_id&amp;gt;', methods=['GET'])
def get_user(user_id):
    user = next((u for u in users if u['id'] == user_id), None)
    if user:
        return jsonify(user)
    else:
        return jsonify({'error': 'User not found'}), 404

# 새로운 사용자 생성
@app.route('/users', methods=['POST'])
def create_user():
    new_user = request.get_json()
    users.append(new_user)
    return jsonify(new_user), 201

# 특정 사용자 정보 갱신
@app.route('/users/&amp;lt;int:user_id&amp;gt;', methods=['PUT'])
def update_user(user_id):
    user = next((u for u in users if u['id'] == user_id), None)
    if user:
        updated_user = request.get_json()
        user.update(updated_user)
        return jsonify(user)
    else:
        return jsonify({'error': 'User not found'}), 404

# 특정 사용자 삭제
@app.route('/users/&amp;lt;int:user_id&amp;gt;', methods=['DELETE'])
def delete_user(user_id):
    global users
    users = [u for u in users if u['id'] != user_id]
    return '', 204

if __name__ == '__main__':
    app.run(debug=True)&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 글을 통해 REST API의 기본 개념과 주요 원칙, HTTP 메서드, 설계 예시 등을 이해할 수 있습니다. REST API 설계 시 고려해야 할 사항들을 숙지하고 실제 프로젝트에 적용해 보세요.&lt;/p&gt;</description>
      <category>요약 정리</category>
      <category>API설계</category>
      <category>Flask</category>
      <category>HTTP</category>
      <category>https</category>
      <category>restapi</category>
      <category>백엔드개발</category>
      <category>소프트웨어개발</category>
      <category>웹개발</category>
      <category>웹서비스</category>
      <category>프로그래밍</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/23</guid>
      <comments>https://coding-is-fun.tistory.com/23#entry23comment</comments>
      <pubDate>Tue, 21 May 2024 09:25:07 +0900</pubDate>
    </item>
    <item>
      <title>파이썬을 사용한 암호화와 해싱</title>
      <link>https://coding-is-fun.tistory.com/21</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-1910153641957673&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;h4 data-ke-size=&quot;size20&quot;&gt;주요 라이브러리 소개&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;cryptography&lt;/b&gt;: 암호화와 관련된 다양한 기능을 제공하는 라이브러리.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;hashlib&lt;/b&gt;: 해싱 알고리즘 (SHA256, MD5 등)을 제공하는 표준 라이브러리.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;암호화란?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;암호화는 데이터를 보호하기 위해 원본 데이터를 특정 알고리즘과 키를 사용하여 변환하는 과정입니다. 이를 통해 권한이 없는 사용자가 데이터를 읽을 수 없도록 보호합니다. 암호화는 기밀성, 무결성, 인증을 보장하는 데 사용됩니다.&lt;/p&gt;
&lt;h5&gt;암호화 방식&lt;/h5&gt;
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;암호화 방식&lt;/th&gt;
&lt;th&gt;설명&lt;/th&gt;
&lt;th&gt;예시 알고리즘&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;대칭 키 암호화&lt;/td&gt;
&lt;td&gt;동일한 키로 데이터를 암호화하고 복호화합니다.&lt;/td&gt;
&lt;td&gt;AES, DES&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;비대칭 키 암호화&lt;/td&gt;
&lt;td&gt;공개 키로 데이터를 암호화하고, 개인 키로 복호화합니다.&lt;/td&gt;
&lt;td&gt;RSA&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h5&gt;암호화를 사용하는 이유&lt;/h5&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;/p&gt;
&lt;h5&gt;해싱 알고리즘&lt;/h5&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대표적인 해싱 알고리즘으로는 MD5, SHA-1, SHA-256 등이 있습니다. 해싱은 단방향 함수로, 원본 데이터를 해시 값으로부터 복원할 수 없습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;정보 보안 실습&lt;/h4&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;code class=&quot;language-bash&quot;&gt; pip install cryptography&lt;/code&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;b&gt;출력 결과 예시&lt;/b&gt;:
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;  Encrypted: b'gAAAAABf...'
  Decrypted: b'Hello, World!'&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-python&quot;&gt; from cryptography.fernet import Fernet

 # 키 생성
 key = Fernet.generate_key()
 cipher_suite = Fernet(key)

 # 메시지 암호화
 message = b&quot;Hello, World!&quot;
 encrypted_message = cipher_suite.encrypt(message)
 print(f&quot;Encrypted: {encrypted_message}&quot;)

 # 메시지 복호화
 decrypted_message = cipher_suite.decrypt(encrypted_message)
 print(f&quot;Decrypted: {decrypted_message}&quot;)&lt;/code&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;b&gt;출력 결과 예시&lt;/b&gt;:
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;  SHA-256: a591a6d4... (64 characters)&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-python&quot;&gt; import hashlib

 # SHA-256 해싱
 message = &quot;Hello, World!&quot;
 hash_object = hashlib.sha256(message.encode())
 hex_dig = hash_object.hexdigest()
 print(f&quot;SHA-256: {hex_dig}&quot;)&lt;/code&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;b&gt;출력 결과 예시&lt;/b&gt;: &lt;code&gt;example.txt&lt;/code&gt; 파일의 SHA-256 해시 값이 출력됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-python&quot;&gt; def calculate_file_hash(file_path):
     hash_sha256 = hashlib.sha256()
     with open(file_path, &quot;rb&quot;) as f:
         for chunk in iter(lambda: f.read(4096), b&quot;&quot;):
             hash_sha256.update(chunk)
     return hash_sha256.hexdigest()

 file_hash = calculate_file_hash(&quot;example.txt&quot;)
 print(f&quot;File SHA-256: {file_hash}&quot;)&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬을 사용한 암호화와 해싱은 데이터를 보호하고 무결성을 검증하는 중요한 기술입니다. 위의 실습 예제를 통해 기본적인 정보 보안 개념을 익히고, 실제 데이터 보호에 적용해 보세요. 추가적인 질문이나 도움이 필요하시면 언제든지 댓글로 남겨주세요. 감사합니다!&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;시각 자료 추가&lt;/h4&gt;
&lt;h5&gt;암호화 과정 다이어그램&lt;/h5&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;2000&quot; data-origin-height=&quot;1200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VMJyS/btsHubNwNVG/dYu2ahlfIJ1BXsGRvzvpOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VMJyS/btsHubNwNVG/dYu2ahlfIJ1BXsGRvzvpOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VMJyS/btsHubNwNVG/dYu2ahlfIJ1BXsGRvzvpOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVMJyS%2FbtsHubNwNVG%2FdYu2ahlfIJ1BXsGRvzvpOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1200&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h5&gt;해싱 과정 다이어그램&lt;/h5&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;2000&quot; data-origin-height=&quot;1200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bF31Gr/btsHv5Zrt3K/KwK6JNwzfavs7UU4dWWA6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bF31Gr/btsHv5Zrt3K/KwK6JNwzfavs7UU4dWWA6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bF31Gr/btsHv5Zrt3K/KwK6JNwzfavs7UU4dWWA6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbF31Gr%2FbtsHv5Zrt3K%2FKwK6JNwzfavs7UU4dWWA6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1200&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>정보 보안</category>
      <category>cryptography</category>
      <category>hashlib</category>
      <category>SHA256</category>
      <category>대칭키암호화</category>
      <category>데이터보호</category>
      <category>보안실습</category>
      <category>암호화</category>
      <category>정보보안</category>
      <category>파이썬</category>
      <category>해싱</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/21</guid>
      <comments>https://coding-is-fun.tistory.com/21#entry21comment</comments>
      <pubDate>Mon, 20 May 2024 20:23:41 +0900</pubDate>
    </item>
    <item>
      <title>파이썬을 사용한 데이터 분석 기초</title>
      <link>https://coding-is-fun.tistory.com/20</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-1910153641957673&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;h4 data-ke-size=&quot;size20&quot;&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;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬은 간결하고 읽기 쉬운 문법을 가지고 있어 데이터 분석에 적합합니다. 또한, 다양한 데이터 분석 라이브러리를 제공하여 효율적으로 데이터를 처리하고 시각화할 수 있습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;주요 라이브러리 소개&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Pandas&lt;/b&gt;: 데이터 조작 및 분석을 위한 고성능 라이브러리.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;NumPy&lt;/b&gt;: 대규모 다차원 배열과 행렬 연산을 지원하는 라이브러리.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Matplotlib&lt;/b&gt;: 데이터 시각화를 위한 2D 그래프 라이브러리.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Seaborn&lt;/b&gt;: 통계적 데이터 시각화를 위한 라이브러리로, Matplotlib 기반.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;데이터 분석 실습&lt;/h4&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;code class=&quot;language-bash&quot;&gt; pip install pandas numpy matplotlib seaborn&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Pandas를 사용한 데이터 로드 및 기본 탐색&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;출력 결과 예시&lt;/b&gt;:
&lt;table data-ke-align=&quot;alignLeft&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Column1&lt;/th&gt;
&lt;th&gt;Column2&lt;/th&gt;
&lt;th&gt;Column3&lt;/th&gt;
&lt;th&gt;Column4&lt;/th&gt;
&lt;th&gt;Column5&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0.5&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;0.1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;0.6&lt;/td&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;0.2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;0.7&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;20&lt;/td&gt;
&lt;td&gt;0.3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;0.8&lt;/td&gt;
&lt;td&gt;B&lt;/td&gt;
&lt;td&gt;25&lt;/td&gt;
&lt;td&gt;0.4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;0.9&lt;/td&gt;
&lt;td&gt;A&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;td&gt;0.5&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;  &amp;lt;class 'pandas.core.frame.DataFrame'&amp;gt;
  RangeIndex: 100 entries, 0 to 99
  Data columns (total 5 columns):
  #   Column      Non-Null Count  Dtype  
  ---  ------      --------------  -----  
  0   Column1     100 non-null    int64  
  1   Column2     100 non-null    float64
  2   Column3     100 non-null    object 
  3   Column4     100 non-null    int64  
  4   Column5     100 non-null    float64
  dtypes: float64(2), int64(2), object(1)
  memory usage: 4.0+ KB&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-python&quot;&gt; import pandas as pd

 # 데이터 로드
 data = pd.read_csv('your_dataset.csv')

 # 데이터 프레임의 기본 정보 확인
 print(data.info())

 # 데이터 프레임의 첫 5행 출력
 print(data.head())&lt;/code&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;b&gt;출력 결과 예시&lt;/b&gt;:
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;         Column1      Column2      Column4     Column5
  count  100.000000  100.000000  100.000000  100.000000
  mean    50.500000    0.750000   50.000000    0.300000
  std     29.011492    0.200000   28.867513    0.158114
  min      1.000000    0.500000    1.000000    0.100000
  25%     25.750000    0.625000   25.000000    0.200000
  50%     50.500000    0.750000   50.000000    0.300000
  75%     75.250000    0.875000   75.000000    0.400000
  max    100.000000    1.000000  100.000000    0.500000&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-python&quot;&gt; # 기초 통계량 계산
 print(data.describe())&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데이터 전처리&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-python&quot;&gt; # 결측값 처리
 data = data.fillna(method='ffill')

 # 필요 없는 열 삭제
 data = data.drop(columns=['unnecessary_column'])&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데이터 시각화&lt;/b&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c5vVdW/btsHvYsyu5r/AXA4x8rtROayWAVS9glD5k/img.png&quot; width=&quot;100%&quot; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MdWGM/btsHvtsXsxG/z8qGp5MI71GkZmB9vlzPa1/img.png&quot; width=&quot;100%&quot; /&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-python&quot;&gt; # 상관 행렬 히트맵
 plt.figure(figsize=(12, 8))
 sns.heatmap(data.corr(), annot=True, fmt='.2f')
 plt.title('Correlation Matrix')
 plt.show()&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-python&quot;&gt; import matplotlib.pyplot as plt
 import seaborn as sns

 # 히스토그램
 plt.figure(figsize=(10, 6))
 sns.histplot(data['Column2'], bins=30)
 plt.title('Distribution of Column2')
 plt.xlabel('Column2')
 plt.ylabel('Frequency')
 plt.show()&lt;/code&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;b&gt;출력 결과 예시&lt;/b&gt;:
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;          Column1  Column2  Column4  Column5
  Column3                                    
  A        52.5     0.8     55.0     0.3
  B        48.5     0.7     45.0     0.3&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-python&quot;&gt; # 특정 조건에 따른 데이터 필터링
 filtered_data = data[data['Column2'] &amp;gt; 0.75]

 # 그룹화 및 집계
 grouped_data = data.groupby('Column3').mean()

 print(grouped_data)&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬을 사용한 데이터 분석은 다양한 데이터 세트를 다루고, 이를 통해 의미 있는 인사이트를 도출할 수 있는 강력한 도구입니다. 위의 실습 예제를 통해 기본적인 데이터 분석 과정을 익히고, 실제 데이터 분석에 적용해 보세요. 추가적인 질문이나 도움이 필요하시면 언제든지 댓글로 남겨주세요. 감사합니다!&lt;/p&gt;</description>
      <category>개발 실습 및 프로젝트</category>
      <category>matplo</category>
      <category>Matplotlib</category>
      <category>NumPy</category>
      <category>pandas</category>
      <category>seaborn</category>
      <category>데이터분석</category>
      <category>데이터시각화</category>
      <category>통계분석</category>
      <category>파이썬</category>
      <category>파이썬데이터분석</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/20</guid>
      <comments>https://coding-is-fun.tistory.com/20#entry20comment</comments>
      <pubDate>Mon, 20 May 2024 20:14:03 +0900</pubDate>
    </item>
    <item>
      <title>서버 관리 자동화: Ansible을 사용한 서버 설정 자동화</title>
      <link>https://coding-is-fun.tistory.com/19</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-1910153641957673&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;서버 관리 자동화: Ansible을 사용한 서버 설정 자동화&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Ansible이란?&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ansible은 IT 자동화를 위한 오픈 소스 도구로, 서버 구성 관리, 애플리케이션 배포, 클라우드 프로비저닝 등을 자동화하는 데 사용됩니다. 에이전트리스(agentless) 구조로, 별도의 에이전트 설치 없이 SSH를 통해 원격 서버를 관리할 수 있습니다. 간단한 YAML 언어로 플레이북을 작성하여 복잡한 작업을 자동화할 수 있습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Ansible 설치&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ansible을 설치하기 위해 먼저 Python과 pip가 필요합니다. 아래 명령어를 통해 설치할 수 있습니다.&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;Python 및 pip 설치&lt;/b&gt; (Ubuntu 예시)&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-bash&quot;&gt; sudo apt update
 sudo apt install -y python3 python3-pip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Ansible 설치&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-bash&quot;&gt; pip3 install ansible&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 완료되면 Ansible 버전을 확인하여 설치가 제대로 되었는지 확인합니다.&lt;/p&gt;
&lt;pre class=&quot;ada&quot;&gt;&lt;code&gt;ansible --version&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Ansible 설정 파일 구성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ansible은 주로 두 가지 파일을 사용하여 작동합니다: 인벤토리 파일과 플레이북 파일.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;인벤토리 파일&lt;/b&gt;: 관리할 서버 목록을 정의합니다.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-ini&quot;&gt; # inventory.ini
 [webservers]
 192.168.1.10
 192.168.1.11

 [dbservers]
 192.168.1.20&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;플레이북 파일&lt;/b&gt;: 수행할 작업을 정의합니다.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-yaml&quot;&gt; # site.yml
 - hosts: webservers
   become: yes
   tasks:
     - name: Apache 설치
       apt:
         name: apache2
         state: present

     - name: Apache 서비스 시작 및 활성화
       systemd:
         name: apache2
         state: started
         enabled: true&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Ansible 플레이북 실행&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작성한 플레이북을 실행하여 서버 설정을 자동화합니다.&lt;/p&gt;
&lt;pre class=&quot;arcade&quot;&gt;&lt;code&gt;```bash
ansible-playbook -i inventory.ini site.yml
```&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 명령어를 실행하면 &lt;code&gt;inventory.ini&lt;/code&gt;에 정의된 웹 서버들에 &lt;code&gt;site.yml&lt;/code&gt;의 작업이 수행됩니다. 이 예제에서는 Apache 웹 서버를 설치하고, 서비스를 시작 및 활성화합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Ansible로 서버 구성 관리 예제&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Nginx 설치 및 설정&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-yaml&quot;&gt; # nginx-setup.yml
 - hosts: webservers
   become: yes
   tasks:
     - name: Nginx 설치
       apt:
         name: nginx
         state: present

     - name: Nginx 기본 페이지 설정
       copy:
         content: |
           &amp;lt;!DOCTYPE html&amp;gt;
           &amp;lt;html&amp;gt;
           &amp;lt;head&amp;gt;
               &amp;lt;title&amp;gt;Welcome to Nginx!&amp;lt;/title&amp;gt;
           &amp;lt;/head&amp;gt;
           &amp;lt;body&amp;gt;
               &amp;lt;h1&amp;gt;Success! The Nginx web server is installed and working!&amp;lt;/h1&amp;gt;
           &amp;lt;/body&amp;gt;
           &amp;lt;/html&amp;gt;
         dest: /var/www/html/index.html

     - name: Nginx 서비스 시작 및 활성화
       systemd:
         name: nginx
         state: started
         enabled: true&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;플레이북 실행&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-bash&quot;&gt; ansible-playbook -i inventory.ini nginx-setup.yml&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 예제에서는 Nginx 웹 서버를 설치하고, 기본 HTML 페이지를 설정하며, 서비스를 시작 및 활성화합니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Ansible의 강력한 기능&lt;/h4&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;: Jinja2 템플릿을 사용하여 설정 파일을 동적으로 생성할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-yaml&quot;&gt; # templates/nginx.conf.j2
 server {
     listen 80;
     server_name {{ inventory_hostname }};
     location / {
         root /var/www/html;
         index index.html index.htm;
     }
 }&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;롤(Role) 사용&lt;/b&gt;: 복잡한 작업을 역할로 분리하여 재사용 가능하게 만듭니다.&lt;/li&gt;
&lt;li&gt;&lt;code class=&quot;language-bash&quot;&gt; ansible-galaxy init nginx_role&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ansible을 사용하면 서버 설정 및 관리 작업을 자동화하여 효율성을 크게 향상시킬 수 있습니다. 단순한 설치 작업부터 복잡한 설정 관리까지 다양한 작업을 플레이북으로 작성하여 쉽게 자동화할 수 있습니다. Ansible의 강력한 기능을 활용하여 IT 환경을 효율적으로 관리해 보세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가적인 질문이나 도움이 필요하시면 언제든지 댓글로 남겨주세요. 감사합니다!&lt;/p&gt;</description>
      <category>DevOps 및 CI,CD</category>
      <category>ansible</category>
      <category>DevOps</category>
      <category>IT자동화</category>
      <category>yaml</category>
      <category>서버관리</category>
      <category>서버구성</category>
      <category>인프라자동화</category>
      <category>클라우드관리</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/19</guid>
      <comments>https://coding-is-fun.tistory.com/19#entry19comment</comments>
      <pubDate>Mon, 20 May 2024 19:56:26 +0900</pubDate>
    </item>
    <item>
      <title>클라우드 컴퓨팅 완벽 가이드</title>
      <link>https://coding-is-fun.tistory.com/18</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-1910153641957673&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;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;클라우드 컴퓨팅이란?&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;클라우드 컴퓨팅은 인터넷을 통해 IT 자원(서버, 저장소, 데이터베이스, 네트워크, 소프트웨어, 분석 도구 등)을 제공하는 기술입니다. 이를 통해 기업과 개인은 물리적인 하드웨어를 소유하지 않고도 필요한 IT 자원을 유연하게 사용할 수 있습니다. 클라우드 컴퓨팅은 효율성, 비용 절감, 확장성, 유연성을 제공하여 다양한 산업 분야에서 널리 사용되고 있습니다.&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;클라우드 컴퓨팅의 주요 서비스 모델&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;IaaS (Infrastructure as a Service)&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;사용자는 필요한 인프라를 선택하고 관리할 수 있음.&lt;/li&gt;
&lt;li&gt;대표적인 예: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;PaaS (Platform as a Service)&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;개발자는 인프라 관리 없이 애플리케이션 개발에 집중할 수 있음.&lt;/li&gt;
&lt;li&gt;대표적인 예: Google App Engine, Microsoft Azure App Services, Heroku.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SaaS (Software as a Service)&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;사용자는 소프트웨어 설치 및 관리 없이 웹 브라우저를 통해 소프트웨어 사용.&lt;/li&gt;
&lt;li&gt;대표적인 예: Google Workspace, Microsoft Office 365, Salesforce.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;클라우드 컴퓨팅의 장점&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&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;/li&gt;
&lt;li&gt;필요에 따라 자원을 확장하거나 축소 가능.&lt;/li&gt;
&lt;li&gt;사용한 만큼만 비용 지불 (Pay-as-you-go 모델).&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;/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;데이터 백업, 재해 복구 및 고가용성 제공.&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;인프라 관리 부담 감소.&lt;/li&gt;
&lt;li&gt;자동 업데이트 및 유지 보수 제공.&lt;/li&gt;
&lt;li&gt;IT 리소스 관리에 대한 집중을 줄이고 핵심 비즈니스에 집중 가능.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;클라우드 컴퓨팅의 단점&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&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;/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;특정 클라우드 서비스 제공자에 대한 의존성 증가.&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;인터넷 연결에 의존하기 때문에 연결 상태에 따라 서비스 품질이 좌우될 수 있음.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;주요 클라우드 서비스 제공자 비교&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제공자주요 서비스특징&lt;/p&gt;
&lt;table style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: left; border-collapse: collapse; width: 96.7442%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 28.2557%;&quot;&gt;&lt;b&gt;Amazon Web Services (AWS)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 27.2094%;&quot;&gt;EC2, S3, RDS, Lambda 등&lt;/td&gt;
&lt;td style=&quot;width: 41.138%;&quot;&gt;가장 많은 서비스와 기능을 제공하는 글로벌 리더&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 28.2557%;&quot;&gt;&lt;b&gt;Microsoft Azure&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 27.2094%;&quot;&gt;Virtual Machines, Blob Storage, SQL Database 등&lt;/td&gt;
&lt;td style=&quot;width: 41.138%;&quot;&gt;마이크로소프트 제품과의 높은 호환성 및 통합성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 28.2557%;&quot;&gt;&lt;b&gt;Google Cloud Platform (GCP)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 27.2094%;&quot;&gt;Compute Engine, Cloud Storage, BigQuery 등&lt;/td&gt;
&lt;td style=&quot;width: 41.138%;&quot;&gt;빅데이터 분석 및 머신 러닝에 강점&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;클라우드 컴퓨팅의 활용 사례&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&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;/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;글로벌 데이터 센터를 통해 전 세계적으로 서비스 제공.&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;온라인 교육 플랫폼 제공.&lt;/li&gt;
&lt;li&gt;학생 및 교직원에게 필요한 IT 자원 제공.&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;/li&gt;
&lt;li&gt;원격 의료 서비스 제공.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;클라우드 컴퓨팅의 미래&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;클라우드 컴퓨팅은 지속적으로 발전하고 있으며, 앞으로도 다양한 혁신 기술과 결합되어 새로운 가능성을 열어갈 것입니다. 특히, 엣지 컴퓨팅, 서버리스 컴퓨팅, 인공지능(AI) 및 머신 러닝(ML)과의 결합을 통해 더욱 강력하고 효율적인 IT 자원 관리가 가능해질 것입니다.&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;클라우드 컴퓨팅은 현대 IT 환경에서 필수적인 기술로 자리잡고 있습니다. 이를 통해 기업과 개인은 더 효율적이고 유연하게 IT 자원을 관리하고 활용할 수 있습니다. 클라우드 컴퓨팅의 다양한 서비스 모델과 장점을 이해하고, 이를 효과적으로 활용하여 비즈니스와 일상 생활에 혁신을 가져오길 바랍니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;궁금한 점이나 추가적인 정보가 필요하시면 언제든지 댓글로 남겨주세요. 감사합니다!&lt;/p&gt;</description>
      <category>요약 정리</category>
      <category>AWS</category>
      <category>GCP</category>
      <category>IaaS</category>
      <category>IT관리</category>
      <category>PaaS</category>
      <category>SaaS</category>
      <category>데이터분석</category>
      <category>비즈니스혁신</category>
      <category>클라우드</category>
      <category>클라우드컴퓨팅</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/18</guid>
      <comments>https://coding-is-fun.tistory.com/18#entry18comment</comments>
      <pubDate>Mon, 20 May 2024 19:27:58 +0900</pubDate>
    </item>
    <item>
      <title>Active Directory 완벽 가이드</title>
      <link>https://coding-is-fun.tistory.com/17</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-1910153641957673&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;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;Active Directory란?&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Active Directory(AD)는 마이크로소프트가 개발한 디렉터리 서비스로, 네트워크 환경에서 리소스를 관리하고 사용자의 접근을 제어하는 데 중요한 역할을 합니다. AD는 사용자 계정, 컴퓨터, 프린터, 파일 공유 등의 다양한 네트워크 리소스를 관리할 수 있으며, 주로 기업의 네트워크 환경에서 사용됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;AD는 디렉터리 서비스로, 이는 네트워크의 리소스를 효율적으로 관리하고, 사용자와 리소스 간의 관계를 정의하고 관리하는 시스템을 의미합니다. AD는 중앙 집중식 관리 시스템으로, 네트워크 관리자에게 다양한 리소스를 효율적으로 관리할 수 있는 도구를 제공합니다.&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;Active Directory의 구성 요소&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Active Directory는 여러 구성 요소로 이루어져 있으며, 각 구성 요소는 특정 기능을 수행합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/csYZse/btsHuzsDomI/05STVxO2uIDXBjsZZ7RwP0/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/csYZse/btsHuzsDomI/05STVxO2uIDXBjsZZ7RwP0/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csYZse/btsHuzsDomI/05STVxO2uIDXBjsZZ7RwP0/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcsYZse%2FbtsHuzsDomI%2F05STVxO2uIDXBjsZZ7RwP0%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;519&quot; height=&quot;519&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;도메인 (Domain)&lt;/b&gt;: AD의 기본 단위로, 사용자 계정과 컴퓨터 계정이 포함됩니다. 도메인은 네트워크 내에서 보안 경계를 설정하며, 사용자와 리소스를 중앙에서 관리할 수 있도록 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;트리 (Tree)&lt;/b&gt;: 하나 이상의 도메인이 계층적으로 구성된 구조입니다. 트리는 공유 네임스페이스를 가진 도메인들의 집합으로, 계층 구조를 형성합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;포리스트 (Forest)&lt;/b&gt;: 하나 이상의 트리로 구성된 AD의 최상위 구조입니다. 포리스트는 AD의 보안 경계로, 트리 간의 신뢰 관계를 설정하고, 전체 AD 구조의 최상위에 위치합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;도메인 컨트롤러 (Domain Controller)&lt;/b&gt;: AD 데이터베이스를 호스팅하고 인증 요청을 처리하는 서버입니다. 도메인 컨트롤러는 AD의 핵심 요소로, 사용자 인증, 디렉터리 조회, 그룹 정책 적용 등을 수행합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;조직 단위 (Organizational Unit, OU)&lt;/b&gt;: 도메인 내에서 사용자를 논리적으로 그룹화하기 위한 컨테이너입니다. OU는 관리의 편의성을 높여주며, 그룹 정책을 특정 사용자 그룹에만 적용할 수 있게 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;스키마 (Schema)&lt;/b&gt;: AD 데이터베이스의 구조와 속성을 정의합니다. 스키마는 객체 클래스와 속성을 정의하며, AD 데이터베이스의 일관성과 무결성을 유지합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;Active Directory의 주요 기능&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Active Directory는 다양한 기능을 제공하여 네트워크 관리의 효율성을 높입니다. 주요 기능은 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;중앙화된 관리&lt;/b&gt;: AD는 모든 네트워크 리소스를 중앙에서 관리할 수 있도록 합니다. 이를 통해 네트워크 관리자는 단일 인터페이스에서 사용자 계정, 컴퓨터, 그룹, 리소스 권한 등을 관리할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;사용자 및 컴퓨터 계정 관리&lt;/b&gt;: AD는 사용자의 로그인, 접근 권한, 인증 등을 관리합니다. 사용자 계정은 도메인 컨트롤러를 통해 중앙에서 관리되며, 이를 통해 사용자 접근을 제어하고 보안을 강화할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;그룹 정책 (Group Policy)&lt;/b&gt;: 그룹 정책은 네트워크 리소스와 사용자 설정을 중앙에서 관리할 수 있게 해주는 기능입니다. 그룹 정책 객체(GPO)를 통해 특정 사용자나 컴퓨터에 대한 설정을 정의하고 이를 도메인, 사이트 또는 조직 단위에 적용할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;보안 및 권한 부여&lt;/b&gt;: AD는 인증 및 권한 부여를 통해 네트워크 보안을 강화합니다. 사용자가 네트워크에 접근할 때, AD는 사용자 자격 증명을 확인하고, 해당 사용자가 접근할 수 있는 리소스를 결정합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;확장성 및 유연성&lt;/b&gt;: AD는 확장성이 뛰어나며, 조직의 성장에 따라 쉽게 확장할 수 있습니다. 새로운 도메인 컨트롤러를 추가하거나, 새로운 도메인을 생성하여 트리 또는 포리스트를 확장할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;복제 및 가용성&lt;/b&gt;: AD는 도메인 컨트롤러 간의 데이터 복제를 통해 높은 가용성을 제공합니다. 복제를 통해 데이터의 일관성을 유지하며, 하나의 도메인 컨트롤러가 실패하더라도 다른 도메인 컨트롤러가 이를 대신할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;Active Directory의 역할&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Active Directory는 다양한 역할을 수행하여 네트워크 환경을 효율적으로 관리할 수 있게 합니다. 주요 역할은 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;인증 서비스 제공&lt;/b&gt;: AD는 사용자의 인증을 담당합니다. 사용자가 네트워크에 로그인할 때, AD는 사용자의 자격 증명을 확인하고, 해당 사용자가 접근할 수 있는 리소스를 결정합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;디렉터리 서비스 제공&lt;/b&gt;: AD는 네트워크 리소스의 디렉터리 서비스를 제공합니다. 이를 통해 네트워크 관리자는 사용자 계정, 컴퓨터, 그룹, 리소스 권한 등을 중앙에서 관리할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;정책 관리&lt;/b&gt;: AD는 그룹 정책을 통해 네트워크 리소스와 사용자 설정을 중앙에서 관리할 수 있게 합니다. 이를 통해 네트워크 관리자들은 특정 사용자나 컴퓨터에 대한 설정을 정의하고 적용할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;보안 관리&lt;/b&gt;: AD는 네트워크 보안을 강화하는 데 중요한 역할을 합니다. 사용자 계정과 컴퓨터 계정을 중앙에서 관리하고, 접근 권한을 제어하며, 인증 및 권한 부여를 통해 네트워크 보안을 유지합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;확장성 관리&lt;/b&gt;: AD는 조직의 성장에 따라 쉽게 확장할 수 있는 유연성을 제공합니다. 새로운 도메인 컨트롤러를 추가하거나, 새로운 도메인을 생성하여 트리 또는 포리스트를 확장할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;고가용성 제공&lt;/b&gt;: AD는 도메인 컨트롤러 간의 데이터 복제를 통해 높은 가용성을 제공합니다. 복제를 통해 데이터의 일관성을 유지하며, 하나의 도메인 컨트롤러가 실패하더라도 다른 도메인 컨트롤러가 이를 대신할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;Active Directory의 장점&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;Active Directory는 다양한 장점을 제공합니다. 주요 장점은 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;중앙화된 관리&lt;/b&gt;: AD를 통해 모든 네트워크 리소스를 중앙에서 관리할 수 있습니다. 이를 통해 네트워크 관리자는 단일 인터페이스에서 사용자 계정, 컴퓨터, 그룹, 리소스 권한 등을 관리할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;높은 보안성&lt;/b&gt;: AD는 강력한 인증 및 권한 부여 메커니즘을 제공하여 네트워크 보안을 강화합니다. 이를 통해 사용자의 접근을 제어하고, 네트워크 리소스를 보호할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;유연한 확장성&lt;/b&gt;: AD는 조직의 성장에 따라 쉽게 확장할 수 있는 유연성을 제공합니다. 새로운 도메인 컨트롤러를 추가하거나, 새로운 도메인을 생성하여 트리 또는 포리스트를 확장할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;높은 가용성&lt;/b&gt;: AD는 도메인 컨트롤러 간의 데이터 복제를 통해 높은 가용성을 제공합니다. 이를 통해 데이터의 일관성을 유지하며, 하나의 도메인 컨트롤러가 실패하더라도 다른 도메인 컨트롤러가 이를 대신할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;효율적인 정책 관리&lt;/b&gt;: AD는 그룹 정책을 통해 네트워크 리소스와 사용자 설정을 중앙에서 관리할 수 있게 합니다. 이를 통해 네트워크 관리자들은 특정 사용자나 컴퓨터에 대한 설정을 정의하고 적용할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Active Directory는 네트워크 환경에서 리소스를 효율적으로 관리하고 보안을 강화하는 데 중요한 역할을 합니다. AD의 구성 요소와 기능을 이해하고 이를 효과적으로 활용하면, 기업의 IT 인프라를 더욱 안정적이고 안전하게 운영할 수 있습니다. AD 관련하여 더 궁금한 사항이 있으시면 댓글로 남겨주세요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이상으로 Active Directory에 대한 기본적인 개념과 활용 방법에 대해 알아보았습니다. 지속적인 학습과 실습을 통해 AD 관리 역량을 더욱 강화해 나가시길 바랍니다.&lt;/p&gt;</description>
      <category>요약 정리</category>
      <category>ActiveDirectory</category>
      <category>IT관리</category>
      <category>IT인프라</category>
      <category>그룹정책</category>
      <category>네트워크관리</category>
      <category>네트워크보안</category>
      <category>도메인컨트롤러</category>
      <category>디렉터리서비스</category>
      <category>보안관리</category>
      <category>조직단위</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/17</guid>
      <comments>https://coding-is-fun.tistory.com/17#entry17comment</comments>
      <pubDate>Sun, 19 May 2024 20:22:24 +0900</pubDate>
    </item>
    <item>
      <title>윈도우 파이썬 설치 가이드 (파이썬 설치, 파이썬 다운로드)</title>
      <link>https://coding-is-fun.tistory.com/16</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-1910153641957673&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;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;안녕하세요, 여러분!&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 파이썬(Python)을 설치하는 방법과 파이썬의 주요 특징에 대해 알아보겠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;파이썬은 배우기 쉽고 강력한 프로그래밍 언어로, 다양한 분야에서 널리 사용되고 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번 포스팅에서는 &lt;span style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot;&gt;파이썬의 특징과 장점에 대해 소개하고 &lt;/span&gt;파이썬 설치 방법을 단계별로 안내하겠습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;파이썬의 주요 특징&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;파이썬은 다음과 같은 다양한 특징과 장점을 가지고 있습니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&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;: 파이썬은 데이터 분석, 웹 개발, 머신러닝, 과학 계산 등 다양한 분야에 활용할 수 있는 풍부한 라이브러리를 제공합니다. 예를 들어, 데이터 분석에는 pandas, 웹 개발에는 Django, 머신러닝에는 scikit-learn 등이 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;플랫폼 독립성&lt;/b&gt;: 파이썬은 운영 체제에 상관없이 동일한 코드를 실행할 수 있습니다. 이는 다양한 환경에서 개발과 배포를 용이하게 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;대화형 인터프리터&lt;/b&gt;: 파이썬은 대화형 인터프리터를 제공하여, 즉시 결과를 확인하며 개발할 수 있습니다. 이를 통해 빠른 프로토타이핑과 디버깅이 가능합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;커뮤니티 지원&lt;/b&gt;: 파이썬은 전 세계적으로 활발한 개발자 커뮤니티를 가지고 있어, 다양한 자료와 도움을 쉽게 얻을 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;파이썬 설치 가이드&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. 파이썬 다운로드&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;br /&gt;&lt;a href=&quot;https://www.python.org/downloads/&quot;&gt;https://www.python.org/downloads/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;본인의 운영 체제에 맞는 파이썬 인스톨러를 선택하여 다운로드해줍니다.&lt;br /&gt;(저는 Windows Installer 64-bit 버전을 다운로드해주겠습니다)&lt;/li&gt;
&lt;/ol&gt;
&lt;figure id=&quot;og_1715862183281&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Download Python&quot; data-og-description=&quot;The official home of the Python Programming Language&quot; data-og-host=&quot;www.python.org&quot; data-og-source-url=&quot;https://www.python.org/downloads/&quot; data-og-url=&quot;https://www.python.org/downloads/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/YtO7N/hyV6etMkXS/fmxkvDZhCh9sNBkrvgvW3K/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200&quot;&gt;&lt;a href=&quot;https://www.python.org/downloads/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.python.org/downloads/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/YtO7N/hyV6etMkXS/fmxkvDZhCh9sNBkrvgvW3K/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Download Python&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The official home of the Python Programming Language&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.python.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baGe10/btsHrxI0fgw/qXp5brKK5AG73wxVjVgYk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baGe10/btsHrxI0fgw/qXp5brKK5AG73wxVjVgYk1/img.png&quot; data-origin-width=&quot;1068&quot; data-origin-height=&quot;679&quot; data-is-animation=&quot;false&quot; style=&quot;width: 36.897%; margin-right: 10px;&quot; data-widthpercent=&quot;37.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baGe10/btsHrxI0fgw/qXp5brKK5AG73wxVjVgYk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaGe10%2FbtsHrxI0fgw%2FqXp5brKK5AG73wxVjVgYk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1068&quot; height=&quot;679&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r44lW/btsHrroB2be/2mk4eaakc98rNSbe94gSw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r44lW/btsHrroB2be/2mk4eaakc98rNSbe94gSw0/img.png&quot; data-origin-width=&quot;1109&quot; data-origin-height=&quot;420&quot; data-is-animation=&quot;false&quot; style=&quot;width: 61.9402%;&quot; data-widthpercent=&quot;62.67&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r44lW/btsHrroB2be/2mk4eaakc98rNSbe94gSw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr44lW%2FbtsHrroB2be%2F2mk4eaakc98rNSbe94gSw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1109&quot; height=&quot;420&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. 파이썬 설치&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;다운로드한 설치 파일을 관리자 권한으로 실행합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Add Python to PATH&lt;/b&gt; 옵션을 체크하고 &lt;b&gt;Install Now&lt;/b&gt;를 클릭합니다.&lt;/li&gt;
&lt;li&gt;설치가 완료되면 &lt;b&gt;Close&lt;/b&gt;를 클릭합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wTSC8/btsHsIJnuM4/Ic8XqBTf8VPUsCB5a9UvuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wTSC8/btsHsIJnuM4/Ic8XqBTf8VPUsCB5a9UvuK/img.png&quot; data-origin-width=&quot;817&quot; data-origin-height=&quot;499&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.3993%; margin-right: 10px;&quot; data-widthpercent=&quot;49.98&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wTSC8/btsHsIJnuM4/Ic8XqBTf8VPUsCB5a9UvuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwTSC8%2FbtsHsIJnuM4%2FIc8XqBTf8VPUsCB5a9UvuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;817&quot; height=&quot;499&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5Sg6Q/btsHr3tRGEa/se4FnI2JwPkAv8iqkerAs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5Sg6Q/btsHr3tRGEa/se4FnI2JwPkAv8iqkerAs0/img.png&quot; data-origin-width=&quot;816&quot; data-origin-height=&quot;498&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4379%;&quot; data-widthpercent=&quot;50.02&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5Sg6Q/btsHr3tRGEa/se4FnI2JwPkAv8iqkerAs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5Sg6Q%2FbtsHr3tRGEa%2Fse4FnI2JwPkAv8iqkerAs0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;816&quot; height=&quot;498&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3. 환경 변수 설정 (Windows 기준)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;설치 과정에서 &lt;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt;Add Python to PATH&lt;/b&gt;&lt;/span&gt; 옵션을 선택했다면 별도의 환경 변수 설정이 필요하지 않습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그래도 설정을 확인하고 싶다면 아래 단계를 따라 주세요:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;제어판&lt;/b&gt; &amp;gt; &lt;b&gt;시스템 및 보안&lt;/b&gt; &amp;gt; &lt;b&gt;시스템&lt;/b&gt; &amp;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;에서 Path 변수를 찾아 편집을 클릭합니다. (저는 사용자 변수에 설정되어 있었습니다)&lt;/li&gt;
&lt;li&gt;파이썬 설치 경로 (예: C:\Users\YourUsername\AppData\Local\Programs\Python\Python39\)가 포함되어 있는지 확인합니다.&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;783&quot; data-origin-height=&quot;653&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l6dyF/btsHsm02uST/DdhtM62lV5VR1cQD8x7w21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l6dyF/btsHsm02uST/DdhtM62lV5VR1cQD8x7w21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l6dyF/btsHsm02uST/DdhtM62lV5VR1cQD8x7w21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl6dyF%2FbtsHsm02uST%2FDdhtM62lV5VR1cQD8x7w21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;783&quot; height=&quot;653&quot; data-origin-width=&quot;783&quot; data-origin-height=&quot;653&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4. 설치 확인&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;명령 프롬프트 또는 터미널을 열고, python --version을 입력합니다.&lt;/li&gt;
&lt;li&gt;파이썬 버전이 출력되면 정상적으로 설치가 완료된 것입니다.&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;1007&quot; data-origin-height=&quot;277&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTS7Q3/btsHsGY6gZb/ZH2fXlf1lZgQ1UjH5WXJn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTS7Q3/btsHsGY6gZb/ZH2fXlf1lZgQ1UjH5WXJn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTS7Q3/btsHsGY6gZb/ZH2fXlf1lZgQ1UjH5WXJn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTS7Q3%2FbtsHsGY6gZb%2FZH2fXlf1lZgQ1UjH5WXJn1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1007&quot; height=&quot;277&quot; data-origin-width=&quot;1007&quot; data-origin-height=&quot;277&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;파이썬은 배우기 쉽고 강력한 기능을 제공하는 프로그래밍 언어로, 다양한 분야에서 널리 사용되고 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이번 포스팅에서는 파이썬 설치 방법과 주요 특징에 대해 알아보았습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;파이썬을 설치하고 다양한 프로젝트를 시작해 보세요. 설치 과정에서 궁금한 점이나 문제가 있다면 언제든지 댓글로 남겨주세요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;감사합니다 &lt;/p&gt;</description>
      <category>요약 정리</category>
      <category>python 설치</category>
      <category>windows python 설치</category>
      <category>윈도우 파이썬 설치</category>
      <category>파이썬 다운로드</category>
      <category>파이썬 설치</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/16</guid>
      <comments>https://coding-is-fun.tistory.com/16#entry16comment</comments>
      <pubDate>Fri, 17 May 2024 09:00:30 +0900</pubDate>
    </item>
    <item>
      <title>윈도우 자바 설치 가이드 (자바 다운로드, JDK 17, 자바 설치, JDK 17 기능, Windows 10, 환경변수 등록)</title>
      <link>https://coding-is-fun.tistory.com/15</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-1910153641957673&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;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요, 여러분!&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 자바의 장기 지원 버전 중 하나인 JDK 17에 대해 자세히 알아보겠습니다. JDK 17은 2021년 9월에 출시되었으며, 다양한 새로운 기능과 개선 사항을 포함하고 있습니다. 특히, 장기 지원(Long-Term Support, LTS) 버전으로서, 앞으로 몇 년간 중요한 업데이트와 보안 패치를 제공받을 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;JDK 용어 설명&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;JDK (Java Development Kit)&lt;/b&gt;: 자바 애플리케이션을 개발하고 실행하는 데 필요한 컴파일러(javac), 자바 런타임 환경(JRE), 표준 라이브러리, 디버깅 도구 등을 포함한 소프트웨어 개발 키트입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JRE (Java Runtime Environment)&lt;/b&gt;: 자바 애플리케이션을 실행하는 데 필요한 최소한의 환경을 제공하며, JVM(Java Virtual Machine)과 기본 라이브러리로 구성됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JVM (Java Virtual Machine)&lt;/b&gt;: 자바 바이트코드를 실행하는 가상 머신으로, 자바 프로그램이 어떤 플랫폼에서도 실행될 수 있게 해 줍니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;JDK 17의 주요 기능&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;Sealed Classes&lt;/b&gt;: Sealed 클래스를 사용하면 클래스 계층 구조를 더 엄격하게 제어할 수 있습니다. 특정 클래스들이 상속할 수 있도록 제한할 수 있으며, 이는 코드의 명확성과 안정성을 높이는 데 도움이 됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Pattern Matching for switch&lt;/b&gt; (Preview): 스위치 문에서 패턴 매칭을 사용할 수 있는 기능이 추가되었습니다. 이는 코드의 가독성을 높이고, 다양한 타입을 처리할 때 더 간결하게 작성할 수 있게 합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;New macOS Rendering Pipeline&lt;/b&gt;: macOS에서 새로운 렌더링 파이프라인을 도입하여 그래픽 성능을 향상했습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Strong Encapsulation of JDK Internals&lt;/b&gt;: JDK 내부 API에 대한 접근을 더욱 강력하게 캡슐화하여, 모듈 시스템의 안정성을 높였습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Foreign Function &amp;amp; Memory API&lt;/b&gt; (Incubator): 자바 애플리케이션에서 네이티브 코드를 더 안전하고 효율적으로 호출할 수 있는 기능을 제공합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Vector API&lt;/b&gt; (Second Incubator): 벡터 연산을 더 효율적으로 수행할 수 있는 API를 제공하여, 고성능 계산 작업에서 더 나은 성능을 발휘할 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;JDK 17 설치 방법&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;1. JDK 17 다운로드&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 링크를 통해 JDK17을 다운로드하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html&quot;&gt;https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1715856348482&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Java Archive Downloads - Java SE 17&quot; data-og-description=&quot;WARNING: Older versions of the JDK are provided to help developers debug issues in older systems. They are not updated with the latest security patches and are not recommended for use in production. For production use Oracle recommends downloading the late&quot; data-og-host=&quot;www.oracle.com&quot; data-og-source-url=&quot;https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html&quot; data-og-url=&quot;https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Java Archive Downloads - Java SE 17&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;WARNING: Older versions of the JDK are provided to help developers debug issues in older systems. They are not updated with the latest security patches and are not recommended for use in production. For production use Oracle recommends downloading the late&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.oracle.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;윈도우 전용 인스톨러(Windows x64 Installer 혹은 MSI Installer)를 설치해 주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 Windows x64 Installer로 설치해 보겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1762&quot; data-origin-height=&quot;175&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rzzkU/btsHqy2RgDW/jG5jlyHC36SpN5s8vCRtZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rzzkU/btsHqy2RgDW/jG5jlyHC36SpN5s8vCRtZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rzzkU/btsHqy2RgDW/jG5jlyHC36SpN5s8vCRtZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrzzkU%2FbtsHqy2RgDW%2FjG5jlyHC36SpN5s8vCRtZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1762&quot; height=&quot;175&quot; data-origin-width=&quot;1762&quot; data-origin-height=&quot;175&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;다운로드를 마치면 아래와 같이 exe 실행파일이 생성됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;357&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mMQPf/btsHrSF3Mkx/hw3CvndNRH32ZtNukD9LuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mMQPf/btsHrSF3Mkx/hw3CvndNRH32ZtNukD9LuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mMQPf/btsHrSF3Mkx/hw3CvndNRH32ZtNukD9LuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmMQPf%2FbtsHrSF3Mkx%2Fhw3CvndNRH32ZtNukD9LuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1102&quot; height=&quot;357&quot; data-origin-width=&quot;1102&quot; data-origin-height=&quot;357&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;2. JDK 17 설치&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1번에서 설치한 파일을 관리자 권한으로 실행해 줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Next &amp;gt; Next에 걸쳐 설치를 진행해 주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(단, &lt;u&gt;&lt;b&gt;설치 경로는 3번 환경 변수 설정에서 쓰이니 경로를 적어두시거나 숙지를 해두시면 편해요&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 C:\Program Files\Java\jdk-17에 설치했습니다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3CQWf/btsHsBcuX7Y/6KkYwQWKwHWzRpeH4hfEM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3CQWf/btsHsBcuX7Y/6KkYwQWKwHWzRpeH4hfEM1/img.png&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;466&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;33.39&quot; style=&quot;width: 32.6152%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3CQWf/btsHsBcuX7Y/6KkYwQWKwHWzRpeH4hfEM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3CQWf%2FbtsHsBcuX7Y%2F6KkYwQWKwHWzRpeH4hfEM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;618&quot; height=&quot;466&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqyWpD/btsHsSE52IZ/RVhehXTrqVFRPgIM60bHNK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqyWpD/btsHsSE52IZ/RVhehXTrqVFRPgIM60bHNK/img.png&quot; data-origin-width=&quot;621&quot; data-origin-height=&quot;471&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.4257%; margin-right: 10px;&quot; data-widthpercent=&quot;33.2&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqyWpD/btsHsSE52IZ/RVhehXTrqVFRPgIM60bHNK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqyWpD%2FbtsHsSE52IZ%2FRVhehXTrqVFRPgIM60bHNK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;621&quot; height=&quot;471&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cMvez1/btsHrrWjK9v/fqUZfdzyy34cNKjFS5P6x1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cMvez1/btsHrrWjK9v/fqUZfdzyy34cNKjFS5P6x1/img.png&quot; data-origin-width=&quot;621&quot; data-origin-height=&quot;468&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.6335%;&quot; data-widthpercent=&quot;33.41&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cMvez1/btsHrrWjK9v/fqUZfdzyy34cNKjFS5P6x1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcMvez1%2FbtsHrrWjK9v%2FfqUZfdzyy34cNKjFS5P6x1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;621&quot; height=&quot;468&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;3. 환경 변수 설정 (Windows 기준)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 중요한 부분입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Visual studio code 혹은 Intell J 등 IDE 및 개발을 하기 전 가장 중요한 환경셋업 중에 하나입니다.&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. 시스템 환경 변수 편집 &amp;gt; 시스템 변수 &amp;gt; 새로 만들기(W)...&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;b&gt;변수 이름:&lt;/b&gt; JAVA_HOME&lt;b&gt;, 변수 값&lt;/b&gt;: C:\Program Files\Java\jdk-17&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 시스템 환경 변수 편집 &amp;gt; 시스템 변수 &amp;gt; Path 선택 &amp;gt; 편집(I)... &amp;gt; 새로 만들기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;b&gt;변수 값:&lt;/b&gt; %JAVA_HOME%\bin&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 모두 확인 버튼을 클릭하여 창 닫기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVWHKM/btsHq7cDRAW/dHa3PWjDhKh3WfiVpKqTQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVWHKM/btsHq7cDRAW/dHa3PWjDhKh3WfiVpKqTQ0/img.png&quot; data-origin-width=&quot;969&quot; data-origin-height=&quot;844&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;35.02&quot; style=&quot;width: 34.2083%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVWHKM/btsHq7cDRAW/dHa3PWjDhKh3WfiVpKqTQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVWHKM%2FbtsHq7cDRAW%2FdHa3PWjDhKh3WfiVpKqTQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;969&quot; height=&quot;844&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b60Fz5/btsHq5lG5nX/RcyymjRlWw5sPDPDSE65xK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b60Fz5/btsHq5lG5nX/RcyymjRlWw5sPDPDSE65xK/img.png&quot; data-origin-width=&quot;865&quot; data-origin-height=&quot;778&quot; data-is-animation=&quot;false&quot; style=&quot;width: 33.1273%; margin-right: 10px;&quot; data-widthpercent=&quot;33.92&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b60Fz5/btsHq5lG5nX/RcyymjRlWw5sPDPDSE65xK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb60Fz5%2FbtsHq5lG5nX%2FRcyymjRlWw5sPDPDSE65xK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;865&quot; height=&quot;778&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pSGNz/btsHqKWnna7/80YxeiIp4D6vuYGWGwVCm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pSGNz/btsHqKWnna7/80YxeiIp4D6vuYGWGwVCm0/img.png&quot; style=&quot;width: 30.3388%;&quot; data-widthpercent=&quot;31.06&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;658&quot; data-origin-width=&quot;670&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pSGNz/btsHqKWnna7/80YxeiIp4D6vuYGWGwVCm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpSGNz%2FbtsHqKWnna7%2F80YxeiIp4D6vuYGWGwVCm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;670&quot; height=&quot;658&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;4. 설치 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Windows Command(CMD) 창을 실행해 줍니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;java -version&amp;nbsp; &lt;/b&gt;명령어를 통해 설치여부를 확인합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;제가 최초에 다운로드한 jdk 17.0.10 버전이 정상적으로 보입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;819&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvjPs3/btsHruerwVd/EQ1i7ODBXzNkKsXjMWoTT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvjPs3/btsHruerwVd/EQ1i7ODBXzNkKsXjMWoTT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvjPs3/btsHruerwVd/EQ1i7ODBXzNkKsXjMWoTT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvjPs3%2FbtsHruerwVd%2FEQ1i7ODBXzNkKsXjMWoTT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;819&quot; height=&quot;197&quot; data-origin-width=&quot;819&quot; data-origin-height=&quot;197&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 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;JDK 17은 자바 개발자들에게 강력한 기능과 개선된 성능을 제공하는 장기 지원 버전입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;새로운 기능들과 향상된 안정성 덕분에, 많은 기업과 개발자들이 JDK 17을 선택하고 있습니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;자바 17 버전을 통해 여러분의 프로젝트를 한 단계 업그레이드해 보세요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;설치 과정에서 궁금한 점이나 문제가 있다면 언제든지 댓글로 남겨주세요.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;감사합니다 &lt;/p&gt;</description>
      <category>요약 정리</category>
      <category>java 설치</category>
      <category>jdk 17</category>
      <category>jdk17 설치</category>
      <category>Windows 10</category>
      <category>윈도우 자바 설치</category>
      <category>자바 설치</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/15</guid>
      <comments>https://coding-is-fun.tistory.com/15#entry15comment</comments>
      <pubDate>Thu, 16 May 2024 20:06:41 +0900</pubDate>
    </item>
    <item>
      <title>ChatGPT-4o 란 ? (챗GPT, GPT-4o 등장, 새로운 GPT 버전, 기존 GPT-4와 차이)</title>
      <link>https://coding-is-fun.tistory.com/14</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-1910153641957673&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;p data-ke-size=&quot;size16&quot;&gt;안녕하세요 !&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 GPT를 오랜만에 켜보니, ChatGPT-4o라는 신규 모델이 생겼더라고요 !&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;그래서, ChatGPT-4o에는 어떤 기능이 추가되었으며, GPT-4버전과는 어떤 차이가 있는지 간략히 포스팅 해보겠습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. 응답 속도 향상&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기존에 많은 아쉬운 부분을 차지했던 부분인데, 이번 GPT-4o에서 속도가 많이 개선되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot;&gt;GPT-4 Turbo(또는 ChatGPT-4o)는 기존 GPT-4 모델보다 속도가 상당히 빠릅니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot;&gt;벤치마크 테스트에 따르면, GPT-4 Turbo는 초당 약 48개의 토큰을 처리할 수 있는 반면, GPT-4는 초당 약 10개의 토큰을 처리합니다. &lt;u&gt;&lt;b&gt;이는 GPT-4 Turbo가 GPT-4보다 거의 다섯 배 더 빠르다는 것을 의미합니다&lt;/b&gt;&lt;/u&gt;​&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-state=&quot;closed&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; (&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://tech.co/news/gpt-4-turbo-vs-gpt-4-openai-chatgpt&quot;&gt;Tech.co&lt;/a&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot;&gt;​​&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-state=&quot;closed&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; (&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://the-decoder.com/openai-gpt-4-turbo-early-benchmarks-show-mixed-performance/&quot;&gt;THE DECODER&lt;/a&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot;&gt;​.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;2. &lt;b&gt;비용 효율성&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;GPT-4o는 비용 측면에서도 더 효율적입니다.&lt;u&gt;&lt;b&gt; GPT-4o의 입력 토큰 비용은 GPT-4의 약 3분의 1이며&lt;/b&gt;&lt;/u&gt;, 출력 토큰 비용은 절반 수준입니다​&lt;span data-state=&quot;closed&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; (&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://tech.co/news/gpt-4-turbo-vs-gpt-4-openai-chatgpt&quot;&gt;Tech.co&lt;/a&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;​​&lt;span data-state=&quot;closed&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; (&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://the-decoder.com/openai-gpt-4-turbo-early-benchmarks-show-mixed-performance/&quot;&gt;THE DECODER&lt;/a&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;​. 이는 더 많은 작업을 더 적은 비용으로 처리할 수 있음을 나타냅니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;3. &lt;b&gt;컨텍스트 윈도우&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;GPT-4o는 최대 128k 토큰의 컨텍스트 윈도우를 지원하여, 긴 문서나 복잡한 대화를 더 잘 처리할 수 있습니다. 반면 GPT-4는 8,192 토큰의 컨텍스트 윈도우를 지원합니다​&lt;span data-state=&quot;closed&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; (&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://the-decoder.com/openai-gpt-4-turbo-early-benchmarks-show-mixed-performance/&quot;&gt;THE DECODER&lt;/a&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;​. 이는 GPT-4o가 더 큰 범위의 정보를 한 번에 다룰 수 있음을 의미합니다.&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;4. &lt;b&gt;추가 기능&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;GPT-4o는 다음과 같은 새로운 기능을 제공합니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;이미지 입력 처리&lt;/b&gt;: 텍스트뿐만 아니라 이미지를 입력으로 받아들일 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;향상된 텍스트-음성 변환&lt;/b&gt;: 텍스트 입력을 음성으로 변환하는 기능이 개선되었습니다​&lt;span data-state=&quot;closed&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; (&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://tech.co/news/gpt-4-turbo-vs-gpt-4-openai-chatgpt&quot;&gt;Tech.co&lt;/a&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;​​&lt;span data-state=&quot;closed&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; (&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://the-decoder.com/openai-gpt-4-turbo-early-benchmarks-show-mixed-performance/&quot;&gt;THE DECODER&lt;/a&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;​.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;**체인 오브 생각(Chain of Thought)&lt;/b&gt;: GPT-4o는 자동으로 체인 오브 생각 프롬프트를 사용하여 더 긴 출력물을 생성할 수 있습니다. 이는 복잡한 문제를 단계별로 풀어내는 데 유용합니다​&lt;span data-state=&quot;closed&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; (&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.toolify.ai/gpts/gpt35turbo-vs-gpt4-ten-tests-comparison-124601&quot;&gt;Toolify&lt;/a&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;​.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;696&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUU9qE/btsHq1PYBMI/LF81Qth5LsaIknjNQX129K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUU9qE/btsHq1PYBMI/LF81Qth5LsaIknjNQX129K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUU9qE/btsHq1PYBMI/LF81Qth5LsaIknjNQX129K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUU9qE%2FbtsHq1PYBMI%2FLF81Qth5LsaIknjNQX129K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;646&quot; height=&quot;380&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;696&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot;&gt;**체인 오브 생각(Chain of Thought)은 복잡한 문제를 단계별로 해결하는 데 사용되는 기법입니다. 이는 AI 모델이 여러 단계의 논리적 추론 과정을 통해 문제를 풀어내는 방법을 의미합니다. 이 기법은 특히 GPT-4o(또는 GPT-4 Turbo)와 같은 최신 AI 모델에서 효과적으로 활용되고 있습니다.&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;5. &lt;b&gt;정확성 및 성능&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;GPT-4o는 일반적으로 더 높은 정확성을 제공하며, 특히 코드 생성 및 복잡한 문제 해결에서 더 나은 성능을 보여줍니다. 초기 테스트 결과에 따르면 GPT-4o는 코딩 작업에서 첫 시도에 더 많은 문제를 해결할 수 있었으며, 전반적인 정확도도 개선되었습니다​&lt;span data-state=&quot;closed&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt; (&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://the-decoder.com/openai-gpt-4-turbo-early-benchmarks-show-mixed-performance/&quot;&gt;THE DECODER&lt;/a&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;​.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;GPT-4o는 기존 GPT-4에 비해 속도, 비용 효율성, 컨텍스트 처리 능력 등 여러 면에서 크게 개선된 모델입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;새로운 기능들과 향상된 성능 덕분에, 다양한 실시간 상호작용 및 고속 처리 환경에서 매우 유용할 것입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이러한 점들을 고려할 때, GPT-4o는 더 많은 응용 프로그램에서 GPT-4를 대체할 수 있을 것으로 기대됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;발표가 궁금하신 분들은 GPT-4o에 대한 소개 영상을 첨부드리니, 한번 시청해보시길 바랍니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/live/DQacCB9tDaw?si=u0NLBQu019cMHIXC&quot;&gt;https://www.youtube.com/live/DQacCB9tDaw?si=u0NLBQu019cMHIXC&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>요약 정리</category>
      <category>ai비서</category>
      <category>chat.openai</category>
      <category>ChatGPT</category>
      <category>chatgpt-4o</category>
      <category>GPT-4</category>
      <category>GPT-4 Turbo</category>
      <category>인공지능</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/14</guid>
      <comments>https://coding-is-fun.tistory.com/14#entry14comment</comments>
      <pubDate>Wed, 15 May 2024 23:45:41 +0900</pubDate>
    </item>
    <item>
      <title>엑셀 단축키 모음 (자주 사용, 업무시간 단축 !)</title>
      <link>https://coding-is-fun.tistory.com/13</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-1910153641957673&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;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;아래는 Microsoft Excel에서 자주 사용되는 단축키들을 표 형태로 정리한 목록입니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: start;&quot; 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;table style=&quot;background-color: #ffffff; color: #0d0d0d; text-align: left; border-collapse: collapse; width: 100%; height: 610px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;새 파일 생성&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + N&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;파일 열기&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + O&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;파일 저장&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + S&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;다른 이름으로 파일 저장&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;F12&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;인쇄 미리 보기 및 인쇄&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + P&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;실행 취소&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + Z&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;다시 실행&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + Y&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;복사&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;잘라내기&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + X&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;붙여넣기&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + V&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;형식 복사&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + Shift + C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;형식 붙여넣기&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + Shift + V&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;모든 셀 선택&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;찾기&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + F&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;찾기 및 바꾸기&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + H&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;셀 편집&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;F2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;활성 셀에서 맨 위 셀로 이동&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + Home&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;활성 셀에서 맨 아래 셀로 이동&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + End&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;새로운 워크시트 추가&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Shift + F11&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;워크시트 간 이동&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + Page Up/Page Down&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;행 삽입&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + Shift + &quot;+&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;행 삭제&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + &quot;-&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;열 삽입&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + Shift + &quot;+&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;열 삭제&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + &quot;-&quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;셀 포맷 창 열기&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;차트 만들기&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Alt + F1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;데이터 필터 적용&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + Shift + L&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;수식 입력 모드&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Ctrl + =&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;활성 셀과 그 위의 셀을 합산&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Alt + =&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;매크로 창 열기&lt;/td&gt;
&lt;td style=&quot;height: 20px;&quot;&gt;Alt + F8&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>DevOps 및 CI,CD</category>
      <category>업무시간 단축</category>
      <category>엑셀 단축키</category>
      <category>엑셀 자동화</category>
      <category>엑셀 활용</category>
      <category>컴퓨터활용능력</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/13</guid>
      <comments>https://coding-is-fun.tistory.com/13#entry13comment</comments>
      <pubDate>Mon, 13 May 2024 20:28:00 +0900</pubDate>
    </item>
    <item>
      <title>윈도우 파일 이름 일괄변경 (Command)</title>
      <link>https://coding-is-fun.tistory.com/12</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-1910153641957673&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;p data-ke-size=&quot;size16&quot;&gt;안녕하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 실생활(업무 및 개인 PC활용)에서 많이 사용하는 윈도우 파일 이름을 명령어로 일괄적으로 변경하는 방법을 작성 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 예시를 들고자하는 기본 환경입니다.&lt;br /&gt;(새 폴더에 5개의 예시 파일을 생성 하였습니다)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;418&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WGDOE/btsHnWhUOlq/fAb8VCK9MNHK11kKXsMwy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WGDOE/btsHnWhUOlq/fAb8VCK9MNHK11kKXsMwy0/img.png&quot; data-alt=&quot;예시 환경&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WGDOE/btsHnWhUOlq/fAb8VCK9MNHK11kKXsMwy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWGDOE%2FbtsHnWhUOlq%2FfAb8VCK9MNHK11kKXsMwy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;568&quot; height=&quot;244&quot; data-origin-width=&quot;972&quot; data-origin-height=&quot;418&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;CMD에서 파일 이름을 변경하는 기본적인 명령어는 ren입니다. 다음은 몇 가지 일반적인 사용 예시입니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;1. 파일 이름에 일괄적으로 문자열 추가하기&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 .txt 파일 이름 앞에 report-를 추가하고 싶다면 다음과 같이 실행합니다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;for %x in (*.txt) do ren &quot;%x&quot; &quot;report-%x&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;411&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VYf8o/btsHopxf5Rq/wCReNrKU5bD6SzMxw2uQrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VYf8o/btsHopxf5Rq/wCReNrKU5bD6SzMxw2uQrK/img.png&quot; data-alt=&quot;명령어 적용 후&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VYf8o/btsHopxf5Rq/wCReNrKU5bD6SzMxw2uQrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVYf8o%2FbtsHopxf5Rq%2FwCReNrKU5bD6SzMxw2uQrK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;521&quot; height=&quot;220&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;411&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;&lt;span style=&quot;color: #000000;&quot;&gt;명령어 적용 후 위와 같이 txt 파일 앞에&quot;report-&quot; 문구가 추가되었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;2. 대량으로 파일 이름 변경 스크립트 사용하기&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더 복잡한 파일 이름 변경을 위해, 스크립트를 사용할 수 있습니다. 예를 들어, 파일 이름에서 특정 문자를 다른 문자로 대체하려면 다음 스크립트를 사용합니다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 1번에서 변경한 &quot;report-&quot;문구를 &quot;del_&quot;문구로 변경 해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 아래 코드를 메모장에 붙여넣기 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 다른이름으로 저장을 통해 bat파일로 저장합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 저장 시 파일 형식을 &quot;모든 파일&quot;로 파일 이름은 &quot;파일명.bat&quot;으로 변경 해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. bat 파일을 실행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;@echo&amp;nbsp;off&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;setlocal&amp;nbsp;enabledelayedexpansion&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;for&amp;nbsp;%%x&amp;nbsp;in&amp;nbsp;(&lt;span style=&quot;background-color: #f89009;&quot;&gt;report-*.txt&lt;/span&gt;)&amp;nbsp;do&amp;nbsp;(&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;&amp;nbsp;&amp;nbsp;set&amp;nbsp;&quot;newname=%%x&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;&amp;nbsp;&amp;nbsp;set&amp;nbsp;&quot;newname=!newname:report-=&lt;span style=&quot;background-color: #f89009;&quot;&gt;del_&lt;/span&gt;!&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;&amp;nbsp;&amp;nbsp;ren&amp;nbsp;&quot;%%x&quot;&amp;nbsp;&quot;!newname!&quot;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yjuEj/btsHoHdzYZL/HL6XI1s72KiSjKgsDlh2WK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yjuEj/btsHoHdzYZL/HL6XI1s72KiSjKgsDlh2WK/img.png&quot; data-origin-width=&quot;583&quot; data-origin-height=&quot;478&quot; data-is-animation=&quot;false&quot; width=&quot;361&quot; height=&quot;296&quot; style=&quot;width: 24.6059%; margin-right: 10px;&quot; data-widthpercent=&quot;25.19&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yjuEj/btsHoHdzYZL/HL6XI1s72KiSjKgsDlh2WK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyjuEj%2FbtsHoHdzYZL%2FHL6XI1s72KiSjKgsDlh2WK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;583&quot; height=&quot;478&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnUx3M/btsHpM55CZA/55joYgD5FTdJyv5m5QE95K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnUx3M/btsHpM55CZA/55joYgD5FTdJyv5m5QE95K/img.png&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;582&quot; data-is-animation=&quot;false&quot; width=&quot;386&quot; height=&quot;403&quot; style=&quot;width: 19.3077%; margin-right: 10px;&quot; data-widthpercent=&quot;19.77&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnUx3M/btsHpM55CZA/55joYgD5FTdJyv5m5QE95K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnUx3M%2FbtsHpM55CZA%2F55joYgD5FTdJyv5m5QE95K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;557&quot; height=&quot;582&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s6QU7/btsHnxQcKWF/bOcypcdAKTgHkGR5NVttK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s6QU7/btsHnxQcKWF/bOcypcdAKTgHkGR5NVttK1/img.png&quot; data-origin-width=&quot;962&quot; data-origin-height=&quot;361&quot; data-is-animation=&quot;false&quot; style=&quot;width: 53.7608%;&quot; data-widthpercent=&quot;55.04&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s6QU7/btsHnxQcKWF/bOcypcdAKTgHkGR5NVttK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs6QU7%2FbtsHnxQcKWF%2FbOcypcdAKTgHkGR5NVttK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;962&quot; height=&quot;361&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 명령어를 사용할 때는 변경할 파일이 저장된 디렉터리로 이동한 상태에서 명령어를 실행해야 합니다. 복잡한 변경을 위해서는 배치 파일을 작성하여 사용하는 것이 좋습니다.&lt;/p&gt;</description>
      <category>DevOps 및 CI,CD</category>
      <category>CMD</category>
      <category>powershell</category>
      <category>윈도우 일괄변경</category>
      <category>윈도우 파일 이름 변경</category>
      <category>파일 이름 변경</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/12</guid>
      <comments>https://coding-is-fun.tistory.com/12#entry12comment</comments>
      <pubDate>Mon, 13 May 2024 20:19:31 +0900</pubDate>
    </item>
    <item>
      <title>Windows Kafka 설치 &amp;amp; 서비스 구현</title>
      <link>https://coding-is-fun.tistory.com/11</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-1910153641957673&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;p data-ke-size=&quot;size16&quot;&gt;Windows OS에 Kafka를 설치하고 간단하게 서비스를 구현해봅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Kafka 설치: &lt;a href=&quot;https://dlcdn.apache.org/kafka/2.8.1/kafka_2.12-2.8.1.tgz&quot;&gt;https://dlcdn.apache.org/kafka/2.8.1/kafka_2.12-2.8.1.tgz&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;&lt;b&gt;Windows에서 3 버전대가 안되서 2.8.1 버전으로 진행 하였습니다&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다운로드 후 Powershell, cmd 로 kafka\bin\windows 폴더로 이동합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;zookeeper 서버를 start 합니다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1103&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xoUJg/btrnX0RzxXy/KCvi7tP0LgmFW0cnSVlvVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xoUJg/btrnX0RzxXy/KCvi7tP0LgmFW0cnSVlvVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xoUJg/btrnX0RzxXy/KCvi7tP0LgmFW0cnSVlvVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxoUJg%2FbtrnX0RzxXy%2FKCvi7tP0LgmFW0cnSVlvVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1103&quot; height=&quot;427&quot; data-origin-width=&quot;1103&quot; data-origin-height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre id=&quot;code_1639574937523&quot; class=&quot;shell&quot; style=&quot;display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; .\zookeeper-server-start.bat ..\..\config\zookeeper.properties&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Powershell, cmd 창을 추가로 하나 더 open 하여 kafka 서버를 start 합니다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1098&quot; data-origin-height=&quot;405&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c49jsy/btrn22G6YTf/QdEmT9efGg6wMbs3tN1od0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c49jsy/btrn22G6YTf/QdEmT9efGg6wMbs3tN1od0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c49jsy/btrn22G6YTf/QdEmT9efGg6wMbs3tN1od0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc49jsy%2Fbtrn22G6YTf%2FQdEmT9efGg6wMbs3tN1od0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1098&quot; height=&quot;405&quot; data-origin-width=&quot;1098&quot; data-origin-height=&quot;405&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre id=&quot;code_1639575009845&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; .\kafka-server-start.bat ..\..\config\server.properties​&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Powershell, cmd 창을 추가로 하나 더 open 하여 kafka-topics를 이용하여 topic을 생성합니다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;515&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bubH6m/btrn21OXqgh/qniXwktwI9byf2oC3sg6N0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bubH6m/btrn21OXqgh/qniXwktwI9byf2oC3sg6N0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bubH6m/btrn21OXqgh/qniXwktwI9byf2oC3sg6N0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbubH6m%2Fbtrn21OXqgh%2FqniXwktwI9byf2oC3sg6N0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;515&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;515&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre id=&quot;code_1639575196855&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; .\kafka-topics.bat --create --bootstrap-server localhost:9092 --topic code-report​&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;kafka-topics을 생성 후 해당 topic으로 producer 상태를 만듭니다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;515&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wxb3e/btrnV47WZM2/YUuOSbgeeD0LK8PXCHs1rK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wxb3e/btrnV47WZM2/YUuOSbgeeD0LK8PXCHs1rK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wxb3e/btrnV47WZM2/YUuOSbgeeD0LK8PXCHs1rK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwxb3e%2FbtrnV47WZM2%2FYUuOSbgeeD0LK8PXCHs1rK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;515&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;515&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre id=&quot;code_1639575288045&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; .\kafka-console-producer.bat --broker-list localhost:9092 --topic code-report​&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;Powershell, cmd 창을 추가로 하나 더 open 하여 위에서 생성한 topic의 consumer(subscriber) 상태로 만듭니다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;507&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwaMbm/btrn05xK1R4/9aSDvd6GpCDo2uCKutqVc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwaMbm/btrn05xK1R4/9aSDvd6GpCDo2uCKutqVc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwaMbm/btrn05xK1R4/9aSDvd6GpCDo2uCKutqVc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcwaMbm%2Fbtrn05xK1R4%2F9aSDvd6GpCDo2uCKutqVc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;944&quot; height=&quot;507&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;507&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;

&lt;pre id=&quot;code_1639575375330&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;gt; .\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic code-report --from-beginning​&lt;/code&gt;&lt;/pre&gt;
&lt;br /&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bumcp6/btrn1pQiBUe/VsAxTKfYCDahFlmFkZLvM0/img.png&quot; /&gt;&lt;br /&gt;총 4개의 command 창이 열려있습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;producer에서 message를 전송하여 consumer가 해당 message를 pull 하는지 확인합니다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;374&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VItwO/btrn1xU9gzh/tJWuMnO5dvgtyaxtNkAhrK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VItwO/btrn1xU9gzh/tJWuMnO5dvgtyaxtNkAhrK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VItwO/btrn1xU9gzh/tJWuMnO5dvgtyaxtNkAhrK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVItwO%2Fbtrn1xU9gzh%2FtJWuMnO5dvgtyaxtNkAhrK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;946&quot; height=&quot;374&quot; data-origin-width=&quot;946&quot; data-origin-height=&quot;374&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>요약 정리</category>
      <category>Apache Kafka</category>
      <category>Kafka</category>
      <category>Message Queue</category>
      <category>MQ</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/11</guid>
      <comments>https://coding-is-fun.tistory.com/11#entry11comment</comments>
      <pubDate>Wed, 15 Dec 2021 22:40:08 +0900</pubDate>
    </item>
    <item>
      <title>Spring Boot와 Google Cloud SQL연결 및 GCP(Google Cloud Platform) 서버 배포#2</title>
      <link>https://coding-is-fun.tistory.com/10</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-1910153641957673&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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Spring Boot와 Google Cloud SQL연결 및 GCP(Google Cloud Platform) 서버 배포#1&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://coding-is-fun.tistory.com/9&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;https://coding-is-fun.tistory.com/9&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1631890473542&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Spring Boot와 Google Cloud SQL연결 및 GCP(Google Cloud Platform) 서버 배포#1&quot; data-og-description=&quot;GCP 준비 GCP 회원가입을 진행합니다. https://cloud.google.com/ 클라우드 컴퓨팅 서비스 &amp;nbsp;| Google Cloud 데이터 관리, 하이브리드 및 멀티 클라우드, AI와 머신러닝 등 Google의 클라우드 컴퓨팅 서비스로 비.&quot; data-og-host=&quot;coding-is-fun.tistory.com&quot; data-og-source-url=&quot;https://coding-is-fun.tistory.com/9&quot; data-og-url=&quot;https://coding-is-fun.tistory.com/9&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/vDC7e/hyLD0ZOc6E/AhfyIN7vXBBvRX2o6Epk91/img.png?width=800&amp;amp;height=342&amp;amp;face=0_0_800_342,https://scrap.kakaocdn.net/dn/LYzSG/hyLCHnhnUN/WsSCod2UYk94y9FFYNQgDk/img.png?width=800&amp;amp;height=342&amp;amp;face=0_0_800_342,https://scrap.kakaocdn.net/dn/jX1Ni/hyLD1dmeok/97TSMkLRxAM4vvZu96kVTK/img.png?width=1802&amp;amp;height=771&amp;amp;face=0_0_1802_771&quot;&gt;&lt;a href=&quot;https://coding-is-fun.tistory.com/9&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://coding-is-fun.tistory.com/9&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/vDC7e/hyLD0ZOc6E/AhfyIN7vXBBvRX2o6Epk91/img.png?width=800&amp;amp;height=342&amp;amp;face=0_0_800_342,https://scrap.kakaocdn.net/dn/LYzSG/hyLCHnhnUN/WsSCod2UYk94y9FFYNQgDk/img.png?width=800&amp;amp;height=342&amp;amp;face=0_0_800_342,https://scrap.kakaocdn.net/dn/jX1Ni/hyLD1dmeok/97TSMkLRxAM4vvZu96kVTK/img.png?width=1802&amp;amp;height=771&amp;amp;face=0_0_1802_771');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Spring Boot와 Google Cloud SQL연결 및 GCP(Google Cloud Platform) 서버 배포#1&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;GCP 준비 GCP 회원가입을 진행합니다. https://cloud.google.com/ 클라우드 컴퓨팅 서비스 &amp;nbsp;| Google Cloud 데이터 관리, 하이브리드 및 멀티 클라우드, AI와 머신러닝 등 Google의 클라우드 컴퓨팅 서비스로 비.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;coding-is-fun.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SSH 연결 이후 이어서 진행하도록 하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;SQL 설정&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 설정대로 root 접속 후 mysql 설치 &amp;amp; 접속을 해줍니다.&lt;/p&gt;
&lt;div class=&quot;cssterm&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$ sudo passwd&amp;nbsp; #root 계정의 패스워드를 설정합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Changing password for user root.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;New password:&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;BAD PASSWORD: The password fails the dictionary check - it is based on a dictionary word&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Retype new password:&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;passwd: all authentication tokens updated successfully.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$ su - root&amp;nbsp; #root 계정으로 전환합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# yum update&amp;nbsp; #yum update를 진행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# yum install mysql -y&amp;nbsp; #mysql(clinet)를 설치합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# mysql -h35.225.51.XX -uwebadmin -pP@ssw0rd&amp;nbsp; #1장에서 설정한 SQL서버 주소, 계정, 암호를 입력해줍니다.&lt;/p&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;Database를 생성 &amp;amp; 권한을 설정하고 Test Table을 CREATE &amp;amp; DROP 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1631893101529&quot; class=&quot;sql&quot; style=&quot;display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE DATABASE web_db default CHARCTER SET UTF8;
-- DATABASE(SCHEMA) 생성

GRANT ALL PRIVILEGES ON web_db.* TO 'webadmin'@'%'WITH GRANT OPTION;
-- 1장 Google Cloud SQL에서 생성한 계정 정보(webadmin)

USE web_db;
-- web_db로 데이터베이스 사용

CREATE TABLE TEST_DB (
    ID INT(11) NOT NULL,
    NAME CHAR(20),
    ADDRESS CHAR(30)
);
-- Test용 Table 생성

SHOW TABLES;
-- Table 조회

DROP TABLE TEST_DB;
-- Test Table 삭제&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Spring Boot 설정&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring Boot의 Entity를 생성합니다. (해당 게시글에서 Controller, Service 등의 상세 코딩은 제외 하겠습니다)&lt;/p&gt;
&lt;pre id=&quot;code_1631893265819&quot; class=&quot;java&quot; style=&quot;display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Entity
@Data
public class Dashboard {
    @Id
    private Long id;

    private String user;

    private String password;

    private String title;

    private String contents;

    private LocalDateTime writtenTime;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring Boot의 Repository를 생성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1631893368121&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Repository
public interface DashboardRepository extends JpaRepository&amp;lt;Dashboard, Long&amp;gt; {}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Application.properties를 설정합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1631893409073&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;spring.datasource.url=jdbc:mysql://35.225.51.X(Google Cloud SQL 주소):3306/web_db?useSSL=false&amp;amp;characterEncoding=UTF-8&amp;amp;serverTimezone=UTC
spring.datasource.username=webadmin
spring.datasource.password=P@ssw0rd
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.hikari.connection-test-query=select 1 from dual

spring.jpa.database=mysql
spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect
spring.jpa.properties.hibernate.format_sql=true
spring.jpa.hibernate.ddl-auto=update #ddl 자동생성을 위해 update로 설정.
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Application을 실행 전 Local PC -&amp;gt; Google Cloud SQL 접속 허용을 안 했기 때문에 허용 IP를 설정해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 사이트를 통해 자신의 공인 IP를 적어둡니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://findip.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://findip.kr/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1631893596875&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;아이피 확인 - my ip address&quot; data-og-description=&quot;IP 주소를 확인하는 가장 쉽고 빠른 방법 이 사이트(findip.kr)에 접속하는 것이 IP주소를 확인하는 가장 쉽고 빠른 방법이다. 210.220.74.251 가 현재 접속한 기기의 공인 IP(Internet Protocol) 주소다 IP주소&quot; data-og-host=&quot;findip.kr&quot; data-og-source-url=&quot;https://findip.kr/&quot; data-og-url=&quot;https://findip.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/oWtg1/hyLDT7tINR/KK1cRwgaRlbODIsSzFQD80/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512&quot;&gt;&lt;a href=&quot;https://findip.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://findip.kr/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/oWtg1/hyLDT7tINR/KK1cRwgaRlbODIsSzFQD80/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;아이피 확인 - my ip address&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;IP 주소를 확인하는 가장 쉽고 빠른 방법 이 사이트(findip.kr)에 접속하는 것이 IP주소를 확인하는 가장 쉽고 빠른 방법이다. 210.220.74.251 가 현재 접속한 기기의 공인 IP(Internet Protocol) 주소다 IP주소&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;findip.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;686&quot; data-origin-height=&quot;81&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVmNsA/btrfoRhcISY/emcTHeGWavptkUiHDswvY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVmNsA/btrfoRhcISY/emcTHeGWavptkUiHDswvY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVmNsA/btrfoRhcISY/emcTHeGWavptkUiHDswvY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVmNsA%2FbtrfoRhcISY%2FemcTHeGWavptkUiHDswvY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;686&quot; height=&quot;81&quot; data-origin-width=&quot;686&quot; data-origin-height=&quot;81&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;Google Cloud Platform SQL(연결) 부분을 들어가줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;314&quot; data-origin-height=&quot;515&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yYm3W/btrfnPka5mq/74qGdtFqf7mPq4q6HrxKgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yYm3W/btrfnPka5mq/74qGdtFqf7mPq4q6HrxKgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yYm3W/btrfnPka5mq/74qGdtFqf7mPq4q6HrxKgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyYm3W%2FbtrfnPka5mq%2F74qGdtFqf7mPq4q6HrxKgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;314&quot; height=&quot;515&quot; data-origin-width=&quot;314&quot; data-origin-height=&quot;515&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크 추가를 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;665&quot; data-origin-height=&quot;495&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9whuG/btrfnw6dWER/vlLW2ZOvHZCPprwRZDmL60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9whuG/btrfnw6dWER/vlLW2ZOvHZCPprwRZDmL60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9whuG/btrfnw6dWER/vlLW2ZOvHZCPprwRZDmL60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9whuG%2Fbtrfnw6dWER%2FvlLW2ZOvHZCPprwRZDmL60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;665&quot; height=&quot;495&quot; data-origin-width=&quot;665&quot; data-origin-height=&quot;495&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;위에서 적어둔 자신의 공인 IP/32를 입력하고 완료 &amp;amp; 저장을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceGSdD/btrfp1i67iX/CloXGWjZaLiRmR1fkN2cUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceGSdD/btrfp1i67iX/CloXGWjZaLiRmR1fkN2cUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceGSdD/btrfp1i67iX/CloXGWjZaLiRmR1fkN2cUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceGSdD%2Fbtrfp1i67iX%2FCloXGWjZaLiRmR1fkN2cUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;742&quot; height=&quot;400&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;400&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;225&quot; data-origin-height=&quot;66&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsh2BS/btrfqCDo2Ch/5xp2ZHKbJJq0DkHsCr1YO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsh2BS/btrfqCDo2Ch/5xp2ZHKbJJq0DkHsCr1YO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsh2BS/btrfqCDo2Ch/5xp2ZHKbJJq0DkHsCr1YO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbsh2BS%2FbtrfqCDo2Ch%2F5xp2ZHKbJJq0DkHsCr1YO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;225&quot; height=&quot;66&quot; data-origin-width=&quot;225&quot; data-origin-height=&quot;66&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;그리고 Spring Boot Application을 실행시키면 create문(&lt;i&gt;ddl-auto=update)&lt;/i&gt;을 보실 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이로써, Spring Boot -&amp;gt; MySQL(DataSource) 연결은 성공 했습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1631894249629&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Hibernate: 
    
    create table dashboard (
       id bigint not null,
        contents varchar(255),
        password varchar(255),
        title varchar(255),
        user varchar(255),
        written_time datetime(6),
        primary key (id)
    ) engine=InnoDB
2021-09-18 00:56:46.471  INFO 16204 --- [  restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator       : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
2021-09-18 00:56:46.480  INFO 16204 --- [  restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2021-09-18 00:56:46.707  WARN 16204 --- [  restartedMain] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2021-09-18 00:56:46.873  WARN 16204 --- [  restartedMain] ion$DefaultTemplateResolverConfiguration : Cannot find template location: classpath:/templates/ (please add some templates or check your Thymeleaf configuration)
2021-09-18 00:56:46.938  INFO 16204 --- [  restartedMain] o.s.b.d.a.OptionalLiveReloadServer       : LiveReload server is running on port 35729
2021-09-18 00:56:46.981  INFO 16204 --- [  restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2021-09-18 00:56:47.002  INFO 16204 --- [  restartedMain] c.study.dashboard.DashboardApplication   : Started DashboardApplication in 5.823 seconds (JVM running for 6.739)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Web project GCP(CentOS7) VM에 배포하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IDE(필자는 Intelli J를 사용함) -&amp;gt; File -&amp;gt; Project Structure를 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;269&quot; data-origin-height=&quot;268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dpLPou/btrfp1pSY8m/FnkP4UoyNoBvUyEq09tzZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dpLPou/btrfp1pSY8m/FnkP4UoyNoBvUyEq09tzZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dpLPou/btrfp1pSY8m/FnkP4UoyNoBvUyEq09tzZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdpLPou%2Fbtrfp1pSY8m%2FFnkP4UoyNoBvUyEq09tzZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;269&quot; height=&quot;268&quot; data-origin-width=&quot;269&quot; data-origin-height=&quot;268&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;Project Settings(Artifacts) 메뉴를 선택합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;305&quot; data-origin-height=&quot;306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SBBhF/btrfoSHebwv/Z7Ouxl0w0E7KFJAyKlEk51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SBBhF/btrfoSHebwv/Z7Ouxl0w0E7KFJAyKlEk51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SBBhF/btrfoSHebwv/Z7Ouxl0w0E7KFJAyKlEk51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSBBhF%2FbtrfoSHebwv%2FZ7Ouxl0w0E7KFJAyKlEk51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;305&quot; height=&quot;306&quot; data-origin-width=&quot;305&quot; data-origin-height=&quot;306&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'+' 버튼 -&amp;gt; JAR -&amp;gt; From modules with dependencies... 를 통해 JAR Export를 설정합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;619&quot; data-origin-height=&quot;374&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SyNpn/btrfn3ibQRX/H04TNdXihxGydszgK7lMV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SyNpn/btrfn3ibQRX/H04TNdXihxGydszgK7lMV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SyNpn/btrfn3ibQRX/H04TNdXihxGydszgK7lMV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSyNpn%2Fbtrfn3ibQRX%2FH04TNdXihxGydszgK7lMV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;619&quot; height=&quot;374&quot; data-origin-width=&quot;619&quot; data-origin-height=&quot;374&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;Main Class 우측 폴더 모양을 클릭해 Main Class를 지정합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CWWWG/btrfotVdDQo/kpjt7goSuNBk9xqXE6Kdi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CWWWG/btrfotVdDQo/kpjt7goSuNBk9xqXE6Kdi0/img.png&quot; data-origin-width=&quot;672&quot; data-origin-height=&quot;327&quot; style=&quot;width: 60.7482%; margin-right: 10px;&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CWWWG/btrfotVdDQo/kpjt7goSuNBk9xqXE6Kdi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCWWWG%2FbtrfotVdDQo%2Fkpjt7goSuNBk9xqXE6Kdi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;672&quot; height=&quot;327&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mQEwx/btrfpggMPh1/VRowAQkwUOtqiwEQDMBoH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mQEwx/btrfpggMPh1/VRowAQkwUOtqiwEQDMBoH0/img.png&quot; data-origin-width=&quot;527&quot; data-origin-height=&quot;409&quot; style=&quot;width: 38.089%;&quot; data-is-animation=&quot;false&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mQEwx/btrfpggMPh1/VRowAQkwUOtqiwEQDMBoH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmQEwx%2FbtrfpggMPh1%2FVRowAQkwUOtqiwEQDMBoH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;527&quot; height=&quot;409&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 관리 도구(Maven, Gradle)를 통해 Package, Compile을 통해 프로젝트를 컴파일링 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;306&quot; data-origin-height=&quot;307&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DN8OQ/btrfnybTHFo/5ljXdKMrTKL08APPOFEFW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DN8OQ/btrfnybTHFo/5ljXdKMrTKL08APPOFEFW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DN8OQ/btrfnybTHFo/5ljXdKMrTKL08APPOFEFW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDN8OQ%2FbtrfnybTHFo%2F5ljXdKMrTKL08APPOFEFW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;306&quot; height=&quot;307&quot; data-origin-width=&quot;306&quot; data-origin-height=&quot;307&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;프로젝트 경로로 가면 JAR File이 생성(떨궈져)되어 있습니다. (해당 JAR File을 GCP에서 실행 시켜보도록 하겠습니다)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;887&quot; data-origin-height=&quot;403&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzfAPK/btrfpOKW0fi/wzocNzoGRImBbUxYMQG7x0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzfAPK/btrfpOKW0fi/wzocNzoGRImBbUxYMQG7x0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzfAPK/btrfpOKW0fi/wzocNzoGRImBbUxYMQG7x0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzfAPK%2FbtrfpOKW0fi%2FwzocNzoGRImBbUxYMQG7x0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;887&quot; height=&quot;403&quot; data-origin-width=&quot;887&quot; data-origin-height=&quot;403&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;웹 접속을 위해 GCP Console -&amp;gt; VCP 네트워크(방화벽)로 이동합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;534&quot; data-origin-height=&quot;676&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dsHZYq/btrfqEnHPsd/RyMTsbuhgcS7bXuiflp9S1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dsHZYq/btrfqEnHPsd/RyMTsbuhgcS7bXuiflp9S1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dsHZYq/btrfqEnHPsd/RyMTsbuhgcS7bXuiflp9S1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdsHZYq%2FbtrfqEnHPsd%2FRyMTsbuhgcS7bXuiflp9S1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;534&quot; height=&quot;676&quot; data-origin-width=&quot;534&quot; data-origin-height=&quot;676&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방화벽 규칙 만들기를 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1229&quot; data-origin-height=&quot;575&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biqni6/btrfnPqYKG5/BaEc3lZMrUlLQSpbk3rKG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biqni6/btrfnPqYKG5/BaEc3lZMrUlLQSpbk3rKG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biqni6/btrfnPqYKG5/BaEc3lZMrUlLQSpbk3rKG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbiqni6%2FbtrfnPqYKG5%2FBaEc3lZMrUlLQSpbk3rKG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1229&quot; height=&quot;575&quot; data-origin-width=&quot;1229&quot; data-origin-height=&quot;575&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;방화벽 구성(이름, 대상, 소스 IP, 포트)를 설정 후 방화벽 규칙을 생성합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;696&quot; data-origin-height=&quot;685&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvg1am/btrfn4Iast5/aoSPWoaSOKaHGyuFm5kmR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvg1am/btrfn4Iast5/aoSPWoaSOKaHGyuFm5kmR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvg1am/btrfn4Iast5/aoSPWoaSOKaHGyuFm5kmR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcvg1am%2Fbtrfn4Iast5%2FaoSPWoaSOKaHGyuFm5kmR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;696&quot; height=&quot;685&quot; data-origin-width=&quot;696&quot; data-origin-height=&quot;685&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;Compute Engine(VM 인스턴스)로 이동합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;585&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjUZaW/btrfn3vJamx/ZZKTI0ChyyYGdd34Su8Frk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjUZaW/btrfn3vJamx/ZZKTI0ChyyYGdd34Su8Frk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjUZaW/btrfn3vJamx/ZZKTI0ChyyYGdd34Su8Frk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjUZaW%2Fbtrfn3vJamx%2FZZKTI0ChyyYGdd34Su8Frk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;585&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;585&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;SSH를 연결합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;401&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eIcQOr/btrfouNmErj/m6r9JokKNlx6kWUNN7KhPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eIcQOr/btrfouNmErj/m6r9JokKNlx6kWUNN7KhPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eIcQOr/btrfouNmErj/m6r9JokKNlx6kWUNN7KhPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeIcQOr%2FbtrfouNmErj%2Fm6r9JokKNlx6kWUNN7KhPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;701&quot; height=&quot;401&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;401&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;Java를 설치 후 경로를 기록합니다. (필자는 자바 16으로 스프링 프로젝트를 구성했기에 Java도 16으로 설치합니다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한, 경로를 환경 변수로 지정 할 수 있습니다. (필자는 절대경로로 사용 하겠습니다)&lt;/p&gt;
&lt;div class=&quot;cssterm&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# yum install java-16 -y&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# which java&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/bin/java&lt;/p&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;root 계정으로 접속 후 설정(톱니바퀴)을 클릭하여 파일 업로드를 클릭해줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1118&quot; data-origin-height=&quot;583&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/be2gSm/btrfnOMlHA0/kK6PDrWI9qvqXcl11wmgaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/be2gSm/btrfnOMlHA0/kK6PDrWI9qvqXcl11wmgaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/be2gSm/btrfnOMlHA0/kK6PDrWI9qvqXcl11wmgaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbe2gSm%2FbtrfnOMlHA0%2FkK6PDrWI9qvqXcl11wmgaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1118&quot; height=&quot;583&quot; data-origin-width=&quot;1118&quot; data-origin-height=&quot;583&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;프로젝트 경로를 들어가 JAR File을 upload 해줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1129&quot; data-origin-height=&quot;708&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SctGm/btrfotAVWii/JuMfsmv7IMaB3Xrf69aAHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SctGm/btrfotAVWii/JuMfsmv7IMaB3Xrf69aAHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SctGm/btrfotAVWii/JuMfsmv7IMaB3Xrf69aAHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSctGm%2FbtrfotAVWii%2FJuMfsmv7IMaB3Xrf69aAHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1129&quot; height=&quot;708&quot; data-origin-width=&quot;1129&quot; data-origin-height=&quot;708&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;위에서 나온 위치로 이동(/home/google 계정) 후 java를 통해 jar파일을 실행합니다.&lt;/p&gt;
&lt;div class=&quot;cssterm&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# cd /home/google account&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# /bin/java -jar Dashboard-0.0.1-SNAPSHOT.jar&lt;/p&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;크롬을 통해 GCP 주소:사용 포트를 통해 접속을 확인해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(필자는 따로 Controller를 생성 안해줘서 제공되는 웹이 없습니다)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;236&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CORSp/btrfpB52y71/4XkAiSzXWZNhGYiWSoWUB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CORSp/btrfpB52y71/4XkAiSzXWZNhGYiWSoWUB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CORSp/btrfpB52y71/4XkAiSzXWZNhGYiWSoWUB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCORSp%2FbtrfpB52y71%2F4XkAiSzXWZNhGYiWSoWUB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;694&quot; height=&quot;236&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;236&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;이상 Spring Boot GCP 배포 포스트를 마치겠습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;모두 수고 하셨습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>요약 정리</category>
      <category>CentOS7</category>
      <category>datasource</category>
      <category>GCP</category>
      <category>Google Cloud SQL</category>
      <category>MySQL</category>
      <category>Schema</category>
      <category>Spring boot</category>
      <category>Spring Boot GCP</category>
      <category>Spring Boot Google Cloud</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/10</guid>
      <comments>https://coding-is-fun.tistory.com/10#entry10comment</comments>
      <pubDate>Sat, 18 Sep 2021 00:09:22 +0900</pubDate>
    </item>
    <item>
      <title>Spring Boot와 Google Cloud SQL연결 및 GCP(Google Cloud Platform) 서버 배포#1</title>
      <link>https://coding-is-fun.tistory.com/9</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-1910153641957673&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;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;GCP 준비&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;GCP 회원가입을 진행합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://cloud.google.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://cloud.google.com/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1631880057157&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;클라우드 컴퓨팅 서비스 &amp;nbsp;|&amp;nbsp; Google Cloud&quot; data-og-description=&quot;데이터 관리, 하이브리드 및 멀티 클라우드, AI와 머신러닝 등 Google의 클라우드 컴퓨팅 서비스로 비즈니스 당면 과제를 해결하세요.&quot; data-og-host=&quot;cloud.google.com&quot; data-og-source-url=&quot;https://cloud.google.com/&quot; data-og-url=&quot;https://cloud.google.com/?hl=ko&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bGf3nc/hyLCyRjd1M/4oBUyIgQB4YHhtJS1xgXl0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://cloud.google.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://cloud.google.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bGf3nc/hyLCyRjd1M/4oBUyIgQB4YHhtJS1xgXl0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;클라우드 컴퓨팅 서비스 &amp;nbsp;|&amp;nbsp; Google Cloud&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;데이터 관리, 하이브리드 및 멀티 클라우드, AI와 머신러닝 등 Google의 클라우드 컴퓨팅 서비스로 비즈니스 당면 과제를 해결하세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;cloud.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Google Cloud Platform Console로 이동해줍니다.&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;1802&quot; data-origin-height=&quot;771&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lek1a/btrfn3PRzuM/PCOnuN4cBZJUi8QcENlJR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lek1a/btrfn3PRzuM/PCOnuN4cBZJUi8QcENlJR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lek1a/btrfn3PRzuM/PCOnuN4cBZJUi8QcENlJR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flek1a%2Fbtrfn3PRzuM%2FPCOnuN4cBZJUi8QcENlJR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1802&quot; height=&quot;771&quot; data-origin-width=&quot;1802&quot; data-origin-height=&quot;771&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;Project 생성&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;로고 옆 프로젝트 리스트를 선택합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1085&quot; data-origin-height=&quot;358&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dsgYbH/btrfnOeiSDt/kIrMzvRk1AKBu3KN2avHu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dsgYbH/btrfnOeiSDt/kIrMzvRk1AKBu3KN2avHu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dsgYbH/btrfnOeiSDt/kIrMzvRk1AKBu3KN2avHu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdsgYbH%2FbtrfnOeiSDt%2FkIrMzvRk1AKBu3KN2avHu1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1085&quot; height=&quot;358&quot; data-origin-width=&quot;1085&quot; data-origin-height=&quot;358&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;새 프로젝트 생성을 위해 새 프로젝트 버튼을 클릭합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;939&quot; data-origin-height=&quot;236&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eoqc5q/btrfo4HkLVg/jkLwS4wJAr6NMvuHM0HzW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eoqc5q/btrfo4HkLVg/jkLwS4wJAr6NMvuHM0HzW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eoqc5q/btrfo4HkLVg/jkLwS4wJAr6NMvuHM0HzW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Feoqc5q%2Fbtrfo4HkLVg%2FjkLwS4wJAr6NMvuHM0HzW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;939&quot; height=&quot;236&quot; data-origin-width=&quot;939&quot; data-origin-height=&quot;236&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;프로젝트 구성 후 생성을 해줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;488&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m5crW/btrfnyivO4m/w379smZzyajrOnv3FdPRL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m5crW/btrfnyivO4m/w379smZzyajrOnv3FdPRL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m5crW/btrfnyivO4m/w379smZzyajrOnv3FdPRL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm5crW%2FbtrfnyivO4m%2Fw379smZzyajrOnv3FdPRL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;666&quot; height=&quot;488&quot; data-origin-width=&quot;666&quot; data-origin-height=&quot;488&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;상단 프로젝트(spring-boot-project)를 선택하여 생성한 프로젝트를 클릭합니다.&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;815&quot; data-origin-height=&quot;391&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqhhz2/btrfokDUSi7/hq2SX3gknq3CFQ5ASdW3n0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqhhz2/btrfokDUSi7/hq2SX3gknq3CFQ5ASdW3n0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqhhz2/btrfokDUSi7/hq2SX3gknq3CFQ5ASdW3n0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdqhhz2%2FbtrfokDUSi7%2Fhq2SX3gknq3CFQ5ASdW3n0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;815&quot; height=&quot;391&quot; data-origin-width=&quot;815&quot; data-origin-height=&quot;391&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;프로젝트 생성 완료.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;616&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S0ULQ/btrfnlqbekq/9BuWTI5y9LOeiRdHIz46cK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S0ULQ/btrfnlqbekq/9BuWTI5y9LOeiRdHIz46cK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S0ULQ/btrfnlqbekq/9BuWTI5y9LOeiRdHIz46cK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS0ULQ%2Fbtrfnlqbekq%2F9BuWTI5y9LOeiRdHIz46cK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;649&quot; height=&quot;616&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;616&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;Compute Engine(CentOS 7 - 배포 서버) 생성 하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;로고 왼쪽 탐색 메뉴(Nav bar)를 클릭해줍니다.&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;630&quot; data-origin-height=&quot;385&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjm9pL/btrfnHTQltL/QvKufwkDw5y2S8Eh08NmlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjm9pL/btrfnHTQltL/QvKufwkDw5y2S8Eh08NmlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjm9pL/btrfnHTQltL/QvKufwkDw5y2S8Eh08NmlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbjm9pL%2FbtrfnHTQltL%2FQvKufwkDw5y2S8Eh08NmlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;630&quot; height=&quot;385&quot; data-origin-width=&quot;630&quot; data-origin-height=&quot;385&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;[컴퓨팅] 목록에서 Compute Engine을 선택해줍니다.(편리를 위해 고정핀으로 설정해주세요 ! 마우스를 가져다두면 고정핀 버튼이 보입니다)&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;518&quot; data-origin-height=&quot;812&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XzmaV/btrfpBY7wU3/NOkcffIfMbkFKDek3vbsDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XzmaV/btrfpBY7wU3/NOkcffIfMbkFKDek3vbsDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XzmaV/btrfpBY7wU3/NOkcffIfMbkFKDek3vbsDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXzmaV%2FbtrfpBY7wU3%2FNOkcffIfMbkFKDek3vbsDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;518&quot; height=&quot;812&quot; data-origin-width=&quot;518&quot; data-origin-height=&quot;812&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;상단 혹은 하단 인스턴스 만들기를 선택해줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1363&quot; data-origin-height=&quot;887&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/68Ws7/btrfpg8Ljb2/ERm5Kevuejkg8dcCKmFm9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/68Ws7/btrfpg8Ljb2/ERm5Kevuejkg8dcCKmFm9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/68Ws7/btrfpg8Ljb2/ERm5Kevuejkg8dcCKmFm9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F68Ws7%2Fbtrfpg8Ljb2%2FERm5Kevuejkg8dcCKmFm9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1363&quot; height=&quot;887&quot; data-origin-width=&quot;1363&quot; data-origin-height=&quot;887&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이름 설정 및 시리즈, 유형을 선택하여 줍니다. (저는 기본 테스트 Spec으로 Default를 선택하였습니다 )&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;567&quot; data-origin-height=&quot;677&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lZqnB/btrfnVdkzmG/K8crBrcnGUeHz73u1Rjoz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lZqnB/btrfnVdkzmG/K8crBrcnGUeHz73u1Rjoz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lZqnB/btrfnVdkzmG/K8crBrcnGUeHz73u1Rjoz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlZqnB%2FbtrfnVdkzmG%2FK8crBrcnGUeHz73u1Rjoz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;567&quot; height=&quot;677&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;677&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;CentOS 이미지 선택을 위해 부팅 디스크 목록에 변경을 클릭합니다.&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;588&quot; data-origin-height=&quot;655&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s8ym9/btrfotHxgfp/p5BXdBEh4T4qacc2sazPJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s8ym9/btrfotHxgfp/p5BXdBEh4T4qacc2sazPJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s8ym9/btrfotHxgfp/p5BXdBEh4T4qacc2sazPJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs8ym9%2FbtrfotHxgfp%2Fp5BXdBEh4T4qacc2sazPJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;588&quot; height=&quot;655&quot; data-origin-width=&quot;588&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;운영체제 란에서 CentOS &amp;amp; 버전 선택 &amp;amp; 디스크 용량 설정 후 선택을 클릭합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;639&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mQsly/btrfpCDKq6c/J5Rwl3nUF3wnrSPeRjKbp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mQsly/btrfpCDKq6c/J5Rwl3nUF3wnrSPeRjKbp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mQsly/btrfpCDKq6c/J5Rwl3nUF3wnrSPeRjKbp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmQsly%2FbtrfpCDKq6c%2FJ5Rwl3nUF3wnrSPeRjKbp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;586&quot; height=&quot;639&quot; data-origin-width=&quot;586&quot; data-origin-height=&quot;639&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;HTTP &amp;amp; HTTPS 트래픽 허용을 클릭 후 Instance를 생성해줍니다.&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;570&quot; data-origin-height=&quot;734&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q8NJT/btrfqDIV91r/OtiqO59KLjhiBo6MksUUKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q8NJT/btrfqDIV91r/OtiqO59KLjhiBo6MksUUKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q8NJT/btrfqDIV91r/OtiqO59KLjhiBo6MksUUKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq8NJT%2FbtrfqDIV91r%2FOtiqO59KLjhiBo6MksUUKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;570&quot; height=&quot;734&quot; data-origin-width=&quot;570&quot; data-origin-height=&quot;734&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;생성된 VM Instance &amp;amp; 외부 IP 정보를 확인합니다.&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;693&quot; data-origin-height=&quot;406&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqyV5m/btrfnypkXbj/BeWgu1ykkcUnxsgyKs4wm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqyV5m/btrfnypkXbj/BeWgu1ykkcUnxsgyKs4wm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqyV5m/btrfnypkXbj/BeWgu1ykkcUnxsgyKs4wm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqyV5m%2FbtrfnypkXbj%2FBeWgu1ykkcUnxsgyKs4wm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;406&quot; data-origin-width=&quot;693&quot; data-origin-height=&quot;406&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;고정 IP 할당을 위해 네비게이션 바 메뉴 중 네트워크(VPC 네트워크 - 외부 IP 주소) 메뉴를 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;631&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFhR1P/btrfp1DmQCJ/cVkK7QRWKj2VKTkIqT9IcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFhR1P/btrfp1DmQCJ/cVkK7QRWKj2VKTkIqT9IcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFhR1P/btrfp1DmQCJ/cVkK7QRWKj2VKTkIqT9IcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFhR1P%2Fbtrfp1DmQCJ%2FcVkK7QRWKj2VKTkIqT9IcK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;540&quot; height=&quot;631&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;631&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;위에서 확인된 IP와 외부 주소가 동일한지 확인 후 오른쪽 끝 예약 버튼을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1088&quot; data-origin-height=&quot;226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqe0YV/btrfpsnMtuK/wAbUNG5Pp3J9CwHPY1APK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqe0YV/btrfpsnMtuK/wAbUNG5Pp3J9CwHPY1APK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqe0YV/btrfpsnMtuK/wAbUNG5Pp3J9CwHPY1APK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcqe0YV%2FbtrfpsnMtuK%2FwAbUNG5Pp3J9CwHPY1APK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1088&quot; height=&quot;226&quot; data-origin-width=&quot;1088&quot; data-origin-height=&quot;226&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고정 주소에 대한 네트워크 이름(*) 및 설명을 기입하고 예약 버튼을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;590&quot; data-origin-height=&quot;386&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9mcA9/btrfphmoyyE/MyMmlErPvHXwvW2GAQryMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9mcA9/btrfphmoyyE/MyMmlErPvHXwvW2GAQryMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9mcA9/btrfphmoyyE/MyMmlErPvHXwvW2GAQryMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9mcA9%2FbtrfphmoyyE%2FMyMmlErPvHXwvW2GAQryMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;590&quot; height=&quot;386&quot; data-origin-width=&quot;590&quot; data-origin-height=&quot;386&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;고정 IP이 설정이 끝났으며 해당 IP를 따로 저장 해놓습니다. (아래 SQL 접근 허용 IP에 사용합니다)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;992&quot; data-origin-height=&quot;257&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rO4TK/btrfqh69Rpm/gcf0nKeAPcBkUHOtsqhj5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rO4TK/btrfqh69Rpm/gcf0nKeAPcBkUHOtsqhj5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rO4TK/btrfqh69Rpm/gcf0nKeAPcBkUHOtsqhj5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrO4TK%2Fbtrfqh69Rpm%2Fgcf0nKeAPcBkUHOtsqhj5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;992&quot; height=&quot;257&quot; data-origin-width=&quot;992&quot; data-origin-height=&quot;257&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;b&gt;Google Cloud SQL Instance 생성하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;로고 왼쪽 탐색 메뉴(Nav bar)를 클릭해줍니다.&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;630&quot; data-origin-height=&quot;385&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjm9pL/btrfnHTQltL/QvKufwkDw5y2S8Eh08NmlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjm9pL/btrfnHTQltL/QvKufwkDw5y2S8Eh08NmlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjm9pL/btrfnHTQltL/QvKufwkDw5y2S8Eh08NmlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbjm9pL%2FbtrfnHTQltL%2FQvKufwkDw5y2S8Eh08NmlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;630&quot; height=&quot;385&quot; data-origin-width=&quot;630&quot; data-origin-height=&quot;385&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;데이터베이스 목록 중 SQL을 선택해주세요. (편리를 위해 고정핀으로 설정해주세요 ! 마우스를 가져다두면 고정핀 버튼이 보입니다)&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;352&quot; data-origin-height=&quot;865&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bncUaN/btrfpBkxi8Z/fmXFY1FMfiOmXdtIRDjKkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bncUaN/btrfpBkxi8Z/fmXFY1FMfiOmXdtIRDjKkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bncUaN/btrfpBkxi8Z/fmXFY1FMfiOmXdtIRDjKkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbncUaN%2FbtrfpBkxi8Z%2FfmXFY1FMfiOmXdtIRDjKkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;352&quot; height=&quot;865&quot; data-origin-width=&quot;352&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;상단 혹은 하단 인스턴스 만들기를 통해 SQL Insatnce를 생성해줍니다.&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;1528&quot; data-origin-height=&quot;894&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eJCW7t/btrfn3PSLSb/v3wPpfJaACJFLwowfSu5x0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eJCW7t/btrfn3PSLSb/v3wPpfJaACJFLwowfSu5x0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eJCW7t/btrfn3PSLSb/v3wPpfJaACJFLwowfSu5x0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeJCW7t%2Fbtrfn3PSLSb%2Fv3wPpfJaACJFLwowfSu5x0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1528&quot; height=&quot;894&quot; data-origin-width=&quot;1528&quot; data-origin-height=&quot;894&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;생성 할 SQL Engine을 선택해줍니다. (저는 MySQL로 진행 하겠습니다)&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;1784&quot; data-origin-height=&quot;457&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LJWeN/btrfnlwXogD/bBcMpWADJN96qg8rqayE7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LJWeN/btrfnlwXogD/bBcMpWADJN96qg8rqayE7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LJWeN/btrfnlwXogD/bBcMpWADJN96qg8rqayE7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLJWeN%2FbtrfnlwXogD%2FbBcMpWADJN96qg8rqayE7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1784&quot; height=&quot;457&quot; data-origin-width=&quot;1784&quot; data-origin-height=&quot;457&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;형광 부분 입력을 해줍니다. 저는 [영역 가용성]에서 단일 영역(Test Server 이기 때문)을 선택하였습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;실제 Production Server를 운영하는 경우 Failover(Cluster) 구성을 위해 필히 여러 영역으로 구성 바랍니다.&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;676&quot; data-origin-height=&quot;827&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9qqdd/btrfoG7Piux/1tKHD7UJkqKXTPVFlpZbu1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9qqdd/btrfoG7Piux/1tKHD7UJkqKXTPVFlpZbu1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9qqdd/btrfoG7Piux/1tKHD7UJkqKXTPVFlpZbu1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9qqdd%2FbtrfoG7Piux%2F1tKHD7UJkqKXTPVFlpZbu1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;676&quot; height=&quot;827&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;827&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;인스턴스 만들기를 클릭합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;867&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n9KDD/btrfp2IX3N9/rKykeeE47zNsrypGekKs40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n9KDD/btrfp2IX3N9/rKykeeE47zNsrypGekKs40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n9KDD/btrfp2IX3N9/rKykeeE47zNsrypGekKs40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn9KDD%2Fbtrfp2IX3N9%2FrKykeeE47zNsrypGekKs40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;706&quot; height=&quot;867&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;867&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;CentOS7에서 SQL 접속 테스트를 위해 공개 IP를 저장 해놓습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cba9dt/btrfnN0TZYH/gPdb2cgk6YHedkUmUFq370/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cba9dt/btrfnN0TZYH/gPdb2cgk6YHedkUmUFq370/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cba9dt/btrfnN0TZYH/gPdb2cgk6YHedkUmUFq370/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcba9dt%2FbtrfnN0TZYH%2FgPdb2cgk6YHedkUmUFq370%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1148&quot; height=&quot;800&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;800&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SQL(사용자) 메뉴를 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;299&quot; data-origin-height=&quot;523&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceSVh9/btrfqCXC9Gv/ciHXvkSf8vwXmkHrgka76k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceSVh9/btrfqCXC9Gv/ciHXvkSf8vwXmkHrgka76k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceSVh9/btrfqCXC9Gv/ciHXvkSf8vwXmkHrgka76k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceSVh9%2FbtrfqCXC9Gv%2FciHXvkSf8vwXmkHrgka76k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;299&quot; height=&quot;523&quot; data-origin-width=&quot;299&quot; data-origin-height=&quot;523&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 계정 추가 버튼을 클릭해줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;695&quot; data-origin-height=&quot;359&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dPUzqT/btrfoGz2TJg/onIQg0xEbhSmb7d4Lcu2Yk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dPUzqT/btrfoGz2TJg/onIQg0xEbhSmb7d4Lcu2Yk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dPUzqT/btrfoGz2TJg/onIQg0xEbhSmb7d4Lcu2Yk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdPUzqT%2FbtrfoGz2TJg%2FonIQg0xEbhSmb7d4Lcu2Yk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;695&quot; height=&quot;359&quot; data-origin-width=&quot;695&quot; data-origin-height=&quot;359&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 이름, 비밀번호 등을 설정해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;호스트 이름 설정의 경우 추후 보안 설정을 적용하실 분 들은 해당 설정을 통해 IP 제한 설정을 진행 바랍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;685&quot; data-origin-height=&quot;763&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SOD4z/btrfn489UaV/2H1tJFX47fR1Pn0YjJe5O1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SOD4z/btrfn489UaV/2H1tJFX47fR1Pn0YjJe5O1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SOD4z/btrfn489UaV/2H1tJFX47fR1Pn0YjJe5O1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSOD4z%2Fbtrfn489UaV%2F2H1tJFX47fR1Pn0YjJe5O1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;685&quot; height=&quot;763&quot; data-origin-width=&quot;685&quot; data-origin-height=&quot;763&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;SQL(연결) 메뉴를 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;513&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzUCds/btrfolCWDRu/KUvKjsJTW5A1Xor2ikzQSK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzUCds/btrfolCWDRu/KUvKjsJTW5A1Xor2ikzQSK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzUCds/btrfolCWDRu/KUvKjsJTW5A1Xor2ikzQSK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzUCds%2FbtrfolCWDRu%2FKUvKjsJTW5A1Xor2ikzQSK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;580&quot; height=&quot;513&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;513&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정 부분을 보시면 아무리 공개 IP라 되어있더라도, &lt;b&gt;네트워크 승인 혹은 Cloud SQL Proxy&lt;/b&gt;를 사용해야 연결이 가능합니다. 저희는 네트워크 승인을 진행토록 하겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크 추가를 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;655&quot; data-origin-height=&quot;693&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVBIv4/btrfrdwFnQi/hSMkegTNPYfYlpuSRglfnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVBIv4/btrfrdwFnQi/hSMkegTNPYfYlpuSRglfnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVBIv4/btrfrdwFnQi/hSMkegTNPYfYlpuSRglfnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVBIv4%2FbtrfrdwFnQi%2FhSMkegTNPYfYlpuSRglfnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;655&quot; height=&quot;693&quot; data-origin-width=&quot;655&quot; data-origin-height=&quot;693&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;이름 및 네트워크(*) (위에서 저장해놨던 CentOS7 고정 IP)를 기입하여 완료 버튼을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;736&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxpJ1j/btrfnPdlMkW/MafNmxsupSGnQKgbEJIhLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxpJ1j/btrfnPdlMkW/MafNmxsupSGnQKgbEJIhLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxpJ1j/btrfnPdlMkW/MafNmxsupSGnQKgbEJIhLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxpJ1j%2FbtrfnPdlMkW%2FMafNmxsupSGnQKgbEJIhLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;676&quot; height=&quot;736&quot; data-origin-width=&quot;676&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설정 확인 후 저장 버튼을 클릭합니다. (저장버튼 클릭 안할 시 저장이 안되므로 필히 확인합니다)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;683&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b71O1A/btrfomojNkJ/DX3ek91u5J9kQfeumcqg4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b71O1A/btrfomojNkJ/DX3ek91u5J9kQfeumcqg4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b71O1A/btrfomojNkJ/DX3ek91u5J9kQfeumcqg4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb71O1A%2FbtrfomojNkJ%2FDX3ek91u5J9kQfeumcqg4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;683&quot; height=&quot;500&quot; data-origin-width=&quot;683&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;VM Instance(Compute Engine) 메뉴에 들어와 아까 생성한 CentOS7을 SSH로 연결해줍니다.&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;999&quot; data-origin-height=&quot;518&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CvP1S/btrfnwLSyK6/TRXQxT9QLblyoQCLrKjCCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CvP1S/btrfnwLSyK6/TRXQxT9QLblyoQCLrKjCCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CvP1S/btrfnwLSyK6/TRXQxT9QLblyoQCLrKjCCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCvP1S%2FbtrfnwLSyK6%2FTRXQxT9QLblyoQCLrKjCCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;999&quot; height=&quot;518&quot; data-origin-width=&quot;999&quot; data-origin-height=&quot;518&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://coding-is-fun.tistory.com/10&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://coding-is-fun.tistory.com/10&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1639574253061&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Spring Boot와 Google Cloud SQL연결 및 GCP(Google Cloud Platform) 서버 배포#2&quot; data-og-description=&quot;Spring Boot와 Google Cloud SQL연결 및 GCP(Google Cloud Platform) 서버 배포#1 https://coding-is-fun.tistory.com/9 Spring Boot와 Google Cloud SQL연결 및 GCP(Google Cloud Platform) 서버 배포#1 GCP 준비..&quot; data-og-host=&quot;coding-is-fun.tistory.com&quot; data-og-source-url=&quot;https://coding-is-fun.tistory.com/10&quot; data-og-url=&quot;https://coding-is-fun.tistory.com/10&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cQaG8C/hyMIgIO45s/CNLlKrWwOu9BNKf8YsMUGk/img.png?width=686&amp;amp;height=81&amp;amp;face=0_0_686_81,https://scrap.kakaocdn.net/dn/DDIkR/hyMIeEe8OH/nernAZwJYWvE7nDCCHwXFk/img.png?width=686&amp;amp;height=81&amp;amp;face=0_0_686_81,https://scrap.kakaocdn.net/dn/cA0p0X/hyMIfwmIaV/Wti3TiuigKAPYGlozw6xFK/img.png?width=742&amp;amp;height=400&amp;amp;face=0_0_742_400&quot;&gt;&lt;a href=&quot;https://coding-is-fun.tistory.com/10&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://coding-is-fun.tistory.com/10&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cQaG8C/hyMIgIO45s/CNLlKrWwOu9BNKf8YsMUGk/img.png?width=686&amp;amp;height=81&amp;amp;face=0_0_686_81,https://scrap.kakaocdn.net/dn/DDIkR/hyMIeEe8OH/nernAZwJYWvE7nDCCHwXFk/img.png?width=686&amp;amp;height=81&amp;amp;face=0_0_686_81,https://scrap.kakaocdn.net/dn/cA0p0X/hyMIfwmIaV/Wti3TiuigKAPYGlozw6xFK/img.png?width=742&amp;amp;height=400&amp;amp;face=0_0_742_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Spring Boot와 Google Cloud SQL연결 및 GCP(Google Cloud Platform) 서버 배포#2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Spring Boot와 Google Cloud SQL연결 및 GCP(Google Cloud Platform) 서버 배포#1 https://coding-is-fun.tistory.com/9 Spring Boot와 Google Cloud SQL연결 및 GCP(Google Cloud Platform) 서버 배포#1 GCP 준비..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;coding-is-fun.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;</description>
      <category>요약 정리</category>
      <category>datasource</category>
      <category>GCP</category>
      <category>Google Cloud SQL</category>
      <category>Spring boot</category>
      <category>Spring Boot GCP</category>
      <category>Spring Boot Google Cloud</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/9</guid>
      <comments>https://coding-is-fun.tistory.com/9#entry9comment</comments>
      <pubDate>Fri, 17 Sep 2021 23:47:15 +0900</pubDate>
    </item>
    <item>
      <title>[Java] Array &amp;amp; List Collection 정리 (ArrayList, LinkedList)</title>
      <link>https://coding-is-fun.tistory.com/8</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-1910153641957673&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;p data-ke-size=&quot;size16&quot;&gt;JCF(Java Collection Framework)의 Array와 List(ArrayList &amp;amp; LinkedList)를 정리 하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;배열(Array) 선언&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1614578972224&quot; class=&quot;java&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class ExampleCode {
    public static void main(String[] args) {
        int[] exampleNumbers = {2, 3, 4, 5, 5};
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;ArrayList 선언&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1614580892723&quot; class=&quot;java&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.ArrayList;
import java.util.List;

public class ExampleCode {
    public static void main(String[] args) {
        List arrayList = new ArrayList&amp;lt;&amp;gt;();
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;LinkedList 선언&lt;/b&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1614580949462&quot; class=&quot;java&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import java.util.LinkedList;
import java.util.List;

public class ExampleCode {
    public static void main(String[] args) {
        List linkedList = new LinkedList();
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;big-O notation compare&lt;/b&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 93.6737%; height: 133px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;width: 17.8053%; text-align: center; height: 22px;&quot;&gt;&lt;b&gt;Action&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 39.6687%; text-align: center; height: 22px;&quot;&gt;&lt;b&gt;ArrayList&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 42.5259%; text-align: center; height: 22px;&quot;&gt;&lt;b&gt;LinkedList&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;width: 17.8053%; text-align: center; height: 32px;&quot; rowspan=&quot;2&quot;&gt;Search&lt;/td&gt;
&lt;td style=&quot;width: 39.6687%; text-align: center; height: 22px;&quot;&gt;O(1)&lt;/td&gt;
&lt;td style=&quot;width: 42.5259%; text-align: center; height: 22px;&quot;&gt;O(n)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 10px;&quot;&gt;
&lt;td style=&quot;width: 39.6687%; text-align: center; height: 10px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 42.5259%; text-align: center; height: 10px;&quot;&gt;순회하여 특정 값을 찾아냄&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 10px;&quot;&gt;
&lt;td style=&quot;width: 17.8053%; text-align: center; height: 33px;&quot; rowspan=&quot;2&quot;&gt;Add&lt;/td&gt;
&lt;td style=&quot;width: 39.6687%; text-align: center; height: 10px;&quot;&gt;O(n)&lt;/td&gt;
&lt;td style=&quot;width: 42.5259%; text-align: center; height: 10px;&quot;&gt;O(1): head, tail&lt;br /&gt;O(n): Search를 이용하여 중간 삽입&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 23px;&quot;&gt;
&lt;td style=&quot;width: 39.6687%; text-align: center; height: 23px;&quot;&gt;삽입점 이후에 List들의 index를 +1 해줘야함.&lt;/td&gt;
&lt;td style=&quot;width: 42.5259%; text-align: center; height: 23px;&quot;&gt;중간점의 추가 경우, next를 순회하며 삽입점을 찾아줘야 함.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 23px;&quot;&gt;
&lt;td style=&quot;width: 17.8053%; text-align: center; height: 46px;&quot; rowspan=&quot;2&quot;&gt;Remove&lt;/td&gt;
&lt;td style=&quot;width: 39.6687%; text-align: center; height: 23px;&quot;&gt;O(n)&lt;/td&gt;
&lt;td style=&quot;width: 42.5259%; text-align: center; height: 23px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O(1): head, tail&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;O(n): Search를 이용하여 중간 제거&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 23px;&quot;&gt;
&lt;td style=&quot;width: 39.6687%; text-align: center; height: 23px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;삽입점 이후에 List들의 index를 -1 해줘야함.&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 42.5259%; text-align: center; height: 23px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;중간점의 추가 경우, next를 순회하며 제거점을 찾아줘야 함.&lt;/span&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>요약 정리</category>
      <category>array</category>
      <category>ArrayList</category>
      <category>Big-O notation</category>
      <category>java</category>
      <category>JCF</category>
      <category>LinkedList</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/8</guid>
      <comments>https://coding-is-fun.tistory.com/8#entry8comment</comments>
      <pubDate>Mon, 1 Mar 2021 15:55:42 +0900</pubDate>
    </item>
    <item>
      <title>[Java Spring] @Controller(Spring MVC Controller) 동작 순서</title>
      <link>https://coding-is-fun.tistory.com/7</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-1910153641957673&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;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;&lt;b&gt;@Controller&lt;/b&gt; 는 MVC 패턴에 맞춰 View 객체로 return 하는 방식임.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthContent&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;743&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qAES2/btqWKYSHyxS/XmwA4xEBNl3Xg2cuzROBgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qAES2/btqWKYSHyxS/XmwA4xEBNl3Xg2cuzROBgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qAES2/btqWKYSHyxS/XmwA4xEBNl3Xg2cuzROBgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqAES2%2FbtqWKYSHyxS%2FXmwA4xEBNl3Xg2cuzROBgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1250&quot; height=&quot;743&quot; data-origin-width=&quot;1250&quot; data-origin-height=&quot;743&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1) Client는 /user 라는 URI를 요청함.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2) Dispatcher Servlet은 Handler Mapping 을 통해 /user와 매칭되는 Controller를 요청함.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;3) Handler Mapping은 /user와 매칭되는 Controller(UserController)의 명을 응답함.(Handler Mapping에서는 Controller의 처리가 불가함.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;4) Dispatcher Servlet은 응답받은 Controller(UserController)로 Handler Adapter에게 요청 처리를 함.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;5) Handler Adapter는 UserController에게 /user에 해당하는 return 값을 요청함.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;6) UserController는 해당하는 return 값을 반환함. (이하, Service, DAO 등의 하위 처리 방식은 해당 설명에서 제외함)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;7) Handler Adapter는 return 받은 값을 ModelAndView라는 객체에 담아 Dispatcher Servlet으로 전달함. (view name 포함)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;8) Dispatcher Servlet은 View Resolver에게 &quot;user.jsp&quot;라는 view객체의 유무를 요청함.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;9) View Resolver는 유무를 return함.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;10) Dispatcher Servlet은 최종적으로 view를 통하여, &quot;user.jsp&quot;로 사용자에게 출력됨.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;공부를 하면서 작성한 것이라, 틀린 부분이 있을 수도 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;틀린 부분은 댓글로 알려주시길 바랍니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>요약 정리</category>
      <category>@Annotation</category>
      <category>@Controller</category>
      <category>annotation</category>
      <category>controller</category>
      <category>Dispatcher Servlet</category>
      <category>Handler Adapter</category>
      <category>java</category>
      <category>java spring</category>
      <category>Spring</category>
      <category>Spring MVC Controller</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/7</guid>
      <comments>https://coding-is-fun.tistory.com/7#entry7comment</comments>
      <pubDate>Tue, 9 Feb 2021 21:00:14 +0900</pubDate>
    </item>
    <item>
      <title>[C#]파일 날짜 수정기(File Date Modifier)</title>
      <link>https://coding-is-fun.tistory.com/6</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-1910153641957673&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;p data-ke-size=&quot;size16&quot;&gt;github: &lt;a href=&quot;https://github.com/Co-dingman/FileDateModifer&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;github.com/Co-dingman/FileDateModifer&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회사에서 문서의 날짜를 수정해야 할 일이 있어, 개발.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;+ Exception 부분을 전문적으로 코딩하지 않음. (추가 필요함.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthContent&quot; data-origin-width=&quot;272&quot; data-origin-height=&quot;241&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bL4Gy0/btqWc8nRq4A/hG71CcpVmCdPktb7nMA45k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bL4Gy0/btqWc8nRq4A/hG71CcpVmCdPktb7nMA45k/img.png&quot; data-alt=&quot;Project 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bL4Gy0/btqWc8nRq4A/hG71CcpVmCdPktb7nMA45k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbL4Gy0%2FbtqWc8nRq4A%2FhG71CcpVmCdPktb7nMA45k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;272&quot; height=&quot;241&quot; data-origin-width=&quot;272&quot; data-origin-height=&quot;241&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Project 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FileDateModifer.cs&lt;/p&gt;
&lt;pre id=&quot;code_1612703276354&quot; class=&quot;cs&quot; data-ke-language=&quot;cs&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;

namespace FileDateModifer
{
    public class FileDateModifer
    {
        public Dictionary&amp;lt;string, DateTime&amp;gt; GetFileInfo(string filePath)
        {
            Dictionary&amp;lt;string, DateTime&amp;gt; GetFileInfo = new Dictionary&amp;lt;string, DateTime&amp;gt;();
            Form1 form1 = new Form1();

            var info = new FileInfo(filePath);
			//파일의 정보(생성, 엑세스, 수정)를 불러옴.
            GetFileInfo.Add(&quot;CreationTime&quot;, info.CreationTime);
            GetFileInfo.Add(&quot;LastAccessTime&quot;, info.LastAccessTime);
            GetFileInfo.Add(&quot;LastWriteTime&quot;, info.LastWriteTime);

            return GetFileInfo;
        }
        public bool SetFileDate(string filePath, Dictionary&amp;lt;string,DateTime&amp;gt; getSetDate)
        {
            bool setDateOk;
            try
            {
            	//설정된 시간에 맞춰 파일 날짜를 수정함.
                File.SetCreationTime(filePath, getSetDate[&quot;CreationTime&quot;]);
                File.SetLastWriteTime(filePath, getSetDate[&quot;LastWriteTime&quot;]);
                File.SetLastAccessTime(filePath, getSetDate[&quot;LastAccessTime&quot;]);
                setDateOk = true;
            }
            catch(IOException e)
            {
                MessageBox.Show(&quot;날짜 변경에 실패함. \n에러코드: &quot; + e, &quot;날짜 변경 실패&quot;);
                setDateOk = false;
            }

            return setDateOk;


        }
        
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Forms1.cs&lt;/p&gt;
&lt;pre id=&quot;code_1612703453990&quot; class=&quot;cs&quot; data-ke-language=&quot;cs&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace FileDateModifer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void OpenFileBtn_Click(object sender, EventArgs e)
        {
        	//Open File 버튼 클릭 시, 파일의 생성, 수정, 엑세스 일자를 데이트피커에 입력함.
            Dictionary&amp;lt;string, DateTime&amp;gt; FileInfo;
            OpenFileDialog ofd = new OpenFileDialog();
                if (ofd.ShowDialog() == DialogResult.OK) FilePath.Text = ofd.FileName;
                FileDateModifer fdm = new FileDateModifer();

                FileInfo = fdm.GetFileInfo(ofd.FileName);

                CreationTime.Value = FileInfo[&quot;CreationTime&quot;];
                LastWriteTime.Value = FileInfo[&quot;LastWriteTime&quot;];
                LastAccessTime.Value = FileInfo[&quot;LastAccessTime&quot;];
                
                //throw new System.NotImplementedException();
        }
        private void ChangeCollectiveBtn_Click(object sender, EventArgs e)
        {
        	//일괄 변경 클릭 시 메인으로 설정한 시간으로 모두 변경됨.
            CreationTime.Value = ChangeCollectiveTime.Value;
            LastWriteTime.Value = ChangeCollectiveTime.Value;
            LastAccessTime.Value = ChangeCollectiveTime.Value;
        }
        private void 도움말ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show(&quot;1) Open File 버튼을 클릭하여 파일을 불러주세요.\n&quot; +
                            &quot;2) 기존 파일에 날짜 정보가 입력됩니다. 해당 날짜를 변경해주세요.\n&quot; +
                            &quot;2-1) 일괄변경 옆 날짜 정보를 이용하여 날짜 정보를 일괄로 변경할 수 있습니다.\n&quot; +
                            &quot;3) Modify Date 버튼을 클릭하여 날짜를 수정합니다.&quot;, &quot;사용법&quot;);
        }

        private void 정보ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show(&quot;해당 프로그램은 파일의 작성 &amp;amp; 수정 &amp;amp; 엑세스 일자를 변경하는 프로그램입니다.\n&quot; +
                            &quot;version1.0&quot;, &quot;프로그램 정보&quot;);
        }

        private void ModifyDateBtn_Click(object sender, EventArgs e)
        {
        	//날짜 수정 버튼 클릭 시 설정한 날짜 값으로 파일의 설정이 변경됨.
            bool setDateOk;
            FileDateModifer fdm = new FileDateModifer();
            Dictionary&amp;lt;string, DateTime&amp;gt; getSetDate = new Dictionary&amp;lt;string, DateTime&amp;gt;();

            getSetDate.Add(&quot;CreationTime&quot;, CreationTime.Value);
            getSetDate.Add(&quot;LastWriteTime&quot;, LastWriteTime.Value);
            getSetDate.Add(&quot;LastAccessTime&quot;, LastAccessTime.Value);
            setDateOk = fdm.SetFileDate(FilePath.Text, getSetDate);

            if (setDateOk) MessageBox.Show(&quot;날짜 변경에 성공함&quot;, &quot;날짜 변경 성공&quot;);
            //throw new System.NotImplementedException();
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발 실습 및 프로젝트</category>
      <category>C#</category>
      <category>Coding</category>
      <category>Conding-man</category>
      <category>File Date Modifier</category>
      <category>개발</category>
      <category>파일 날짜 수정기</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/6</guid>
      <comments>https://coding-is-fun.tistory.com/6#entry6comment</comments>
      <pubDate>Sun, 7 Feb 2021 22:11:57 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스] K번째수 javascript (공부)</title>
      <link>https://coding-is-fun.tistory.com/5</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-1910153641957673&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;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;실패 코드&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sort() 함수에 대해 공부가 더 필요함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래처럼 sort((a, b) =&amp;gt; { return a -b; }); 를 추가 하여 성공하였으나, 정확한 원인은 아직도 모르겠음...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공부하고 정확한 원인 파악한 뒤에 공유 예정.&lt;/p&gt;
&lt;pre id=&quot;code_1612081663496&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(array, commands) {
    let answer = [];
    for(let i = 0; i &amp;lt; commands.length; i ++){
        let newArr = array.slice((commands[i][0] -1), (commands[i][1]));
        newArr.sort(); //테스트케이스 실패 부분 ==&amp;gt; 원인 분석 필요...!
        answer.push(newArr[commands[i][2] - 1]);
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;성공 코드&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1612081621914&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(array, commands) {
    let answer = [];
    for(let i = 0; i &amp;lt; commands.length; i ++){
        let newArr = array.slice((commands[i][0] -1), (commands[i][1]));
        newArr.sort((a,b) =&amp;gt; {
            return a - b;
        });
        answer.push(newArr[commands[i][2] - 1]);
    }
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발 실습 및 프로젝트</category>
      <category>javascript</category>
      <category>K번째수</category>
      <category>sort</category>
      <category>프로그래머스</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/5</guid>
      <comments>https://coding-is-fun.tistory.com/5#entry5comment</comments>
      <pubDate>Sun, 31 Jan 2021 17:33:15 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스] 크레인 인형뽑기 게임 javascript</title>
      <link>https://coding-is-fun.tistory.com/4</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-1910153641957673&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;p data-ke-size=&quot;size16&quot;&gt;수동적인 코드가 조금 아쉬웠음 ( &lt;i&gt;TODO&lt;/i&gt;로 체크함.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1612077965174&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(board, moves) {
    let bucket = [];
    let booms = 0;
    for(let i = 0; i &amp;lt; moves.length; i ++){
        for(let j = 0; j &amp;lt; board.length; j ++){
            let moveCrain = moves[i] - 1; //실제 배열은 0부터 시작함. moves는 1~5여서 -1 을 적용해야함.
                if(board[j][moveCrain] !== 0){
                    bucket.push(board[j][moveCrain]);
                    board[j][moveCrain] = 0;
                    if(bucket.length &amp;gt; 1){
                        if(bucket[bucket.length - 1] === bucket[bucket.length - 2]){ //TODO 이 부분도 약간 아쉬웠던 조건문
                            bucket.pop(); //TODO pop에 대해 중복코드
                            bucket.pop();
                            booms += 2;
                        }
                    }
                    break;
                }
        }
    }
    return booms;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>개발 실습 및 프로젝트</category>
      <category>2019 카카오 개발자 겨울 인턴십</category>
      <category>Coding</category>
      <category>javascript</category>
      <category>programmers</category>
      <category>크레인 인형뽑기 게임</category>
      <category>프로그래머스</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/4</guid>
      <comments>https://coding-is-fun.tistory.com/4#entry4comment</comments>
      <pubDate>Sun, 31 Jan 2021 16:28:15 +0900</pubDate>
    </item>
    <item>
      <title>[Java] file copy 개발</title>
      <link>https://coding-is-fun.tistory.com/3</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-1910153641957673&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;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light'; background-color: #dddddd;&quot;&gt;github: &lt;a style=&quot;background-color: #dddddd;&quot; href=&quot;https://github.com/Co-dingman/JavaBackup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/Co-dingman/JavaBackup&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;주말 근무하다가 .. 코딩을 하고싶어서 file copy 기능 개발. (&lt;span style=&quot;color: #333333;&quot;&gt;최종적으로는, 자동 백업 프로그램 개발 목적)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;프로젝트 구조&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthContent&quot; data-origin-width=&quot;473&quot; data-origin-height=&quot;275&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J5HbT/btqVctgeJJD/tWPsC7Hh0dzp2sDVIwSk90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J5HbT/btqVctgeJJD/tWPsC7Hh0dzp2sDVIwSk90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J5HbT/btqVctgeJJD/tWPsC7Hh0dzp2sDVIwSk90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ5HbT%2FbtqVctgeJJD%2FtWPsC7Hh0dzp2sDVIwSk90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;473&quot; height=&quot;275&quot; data-origin-width=&quot;473&quot; data-origin-height=&quot;275&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;config.properties&lt;/p&gt;
&lt;pre id=&quot;code_1612070859454&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;backupFrom=D:/backup/a
backupTo=D:/backup/b&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;main.java&lt;/p&gt;
&lt;pre id=&quot;code_1612070767575&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import util.FileCopy;

public class main {
    public static void main(String[] args) {
        FileCopy fileCopy = new FileCopy();

        fileCopy.CopyStart();
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FileCopy.java&lt;/p&gt;
&lt;pre id=&quot;code_1612070877800&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package util;

import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import java.util.logging.Logger;

public class FileCopy {
    Logger logger = Logger.getLogger(this.getClass().getName());
    public void CopyStart() {
        Map&amp;lt;String, String&amp;gt; backupInfo;
        backupInfo = readConfig();
        logger.info(&quot;backupFrom = &quot; + backupInfo.get(&quot;backupFrom&quot;));
        logger.info(&quot;backupTo = &quot; + backupInfo.get(&quot;backupTo&quot;));
        File from = new File(backupInfo.get(&quot;backupFrom&quot;));
        File to = new File(backupInfo.get(&quot;backupTo&quot;));
        logger.info(String.format(&quot;[시작] %s ==&amp;gt; %s 파일 백업 시작&quot;, backupInfo.get(&quot;backupFrom&quot;), backupInfo.get(&quot;backupTo&quot;)));
        fileCopy(from, to);

    }

    public void fileCopy(File from, File to){


        File[] ff = from.listFiles();
        for (File file : ff) {
            File temp = new File(to.getAbsolutePath() + File.separator + file.getName());
            if(file.isDirectory()){
                temp.mkdir();
                fileCopy(file, temp);
            } else {
                FileInputStream fis = null;
                FileOutputStream fos = null;
                try {
                    fis = new FileInputStream(file);
                    fos = new FileOutputStream(temp) ;
                    byte[] b = new byte[4096];
                    int cnt = 0;
                    while((cnt=fis.read(b)) != -1){
                        fos.write(b, 0, cnt);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                } finally{
                    try {
                        fis.close();
                        fos.close();
                        logger.info(String.format(&quot;[종료] 파일 백업 성공&quot;));
                    } catch (IOException e) {
                        logger.info(String.format(&quot;[종료] 파일 백업 에러&quot;));
                        e.printStackTrace();
                    }

                }
            }
        }
    }

    public Map&amp;lt;String, String&amp;gt; readConfig() {
        Map&amp;lt;String, String&amp;gt; backupInfo = new HashMap&amp;lt;&amp;gt;();

        logger.info(&quot;[시작] properties 파읽 읽기&quot;);
        String resources = &quot;config/config.properties&quot;;
        InputStream inputStream = getClass().getClassLoader().getResourceAsStream(resources);
        Properties properties = new Properties();

        try{
            properties.load(inputStream);
            String backupFrom = properties.getProperty(&quot;backupFrom&quot;);
            String backupTo = properties.getProperty(&quot;backupTo&quot;);
            backupInfo.put(&quot;backupFrom&quot;, backupFrom);
            backupInfo.put(&quot;backupTo&quot;, backupTo);
            logger.info(&quot;[종료] properties 파읽 읽기에 성공함.&quot;);
        }catch (Exception e){
            logger.warning(&quot;[종료] properties 파읽 읽기에 실패함..&quot;);
            e.printStackTrace();
        }
        return backupInfo;
    }

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발 실습 및 프로젝트</category>
      <category>copy file</category>
      <category>file copy</category>
      <category>java</category>
      <category>개발</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/3</guid>
      <comments>https://coding-is-fun.tistory.com/3#entry3comment</comments>
      <pubDate>Sun, 31 Jan 2021 14:31:02 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스] 오픈채팅방 javascript</title>
      <link>https://coding-is-fun.tistory.com/2</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-1910153641957673&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;pre id=&quot;code_1612057952528&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function solution(record) {
    let answer = [];
    let newArray = record.map((str) =&amp;gt; str.split(&quot; &quot;)); //공백을 기준으로 문자 자르기
    let WriteNickName = {}; //
    for (let i = 0; i &amp;lt; record.length; i ++){
            if(newArray[i].length === 3){ //Enter, Change 3글자만 WriteNickName 적용함.
                WriteNickName[newArray[i][1]] = newArray[i][2]; //[&quot;uid1234&quot;] = &quot;Code&quot; 요런식으로 Key/value Mapping 됨.
            }
    }
    
    for (let i = 0; i &amp;lt;newArray.length; i ++){
        if(newArray[i][0] === &quot;Enter&quot;){
            answer.push(WriteNickName[newArray[i][1]] + &quot;님이 들어왔습니다.&quot;)
        }else if(newArray[i][0] === &quot;Leave&quot;){
            answer.push(WriteNickName[newArray[i][1]] + &quot;님이 나갔습니다.&quot;);
        }
    }
    
    return answer;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>개발 실습 및 프로젝트</category>
      <category>Coding man</category>
      <category>javascript</category>
      <category>programmers</category>
      <category>오픈채팅방</category>
      <category>자바스크립트</category>
      <category>카카오 공채</category>
      <category>카카오 오픈채팅방</category>
      <category>코딩맨</category>
      <category>코딩테스트</category>
      <category>프로그래머스</category>
      <author>코드로 칼퇴하기</author>
      <guid isPermaLink="true">https://coding-is-fun.tistory.com/2</guid>
      <comments>https://coding-is-fun.tistory.com/2#entry2comment</comments>
      <pubDate>Sun, 31 Jan 2021 10:56:22 +0900</pubDate>
    </item>
  </channel>
</rss>