<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>코딩뜨개 블로그</title>
    <link>https://dsdsds.tistory.com/</link>
    <description>학원을 다니면서 개발을 공부하는 블로그입니다.
아직 부족한 점이 많아 틀린 점이 있다면 지적 부탁드립니다!
좋은 하루 되세요^^~ </description>
    <language>ko</language>
    <pubDate>Fri, 26 Jun 2026 13:24:29 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>토기발</managingEditor>
    <item>
      <title>[Python] for i in list/ for i in range(len(list))</title>
      <link>https://dsdsds.tistory.com/142</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬 문제를 풀면서 아직 내가 기초를 잘 이해 못했던걸 깨달아서 정리 겸 포스팅을 해본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬에서 for i in 리스트 문을 자주 쓰게 되는데 for i in range(len(리스트)) 로 문제를 풀었을 때도 있어서 무슨 차이인지 확인해보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 list = {1,2,3,4,5} 일 때&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for i in list&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 경우 i는 리스트 내의 원소로 순회한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;answer = i 일 때 결과&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;= 1,2,3,4,5&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for i in range(len(list))&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 경우 리스트나 문자열의 길이에 따라 0부터 len(arr)-1까지의 인덱스를 순회한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;i = 0,1,2,3,4 이고,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;answer = arr[i] 로 써야 1,2,3,4,5 가 출력된다.&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/Python</category>
      <author>토기발</author>
      <guid isPermaLink="true">https://dsdsds.tistory.com/142</guid>
      <comments>https://dsdsds.tistory.com/142#entry142comment</comments>
      <pubDate>Tue, 22 Aug 2023 22:13:34 +0900</pubDate>
    </item>
    <item>
      <title>[프로그래머스] 문자열 계산하기</title>
      <link>https://dsdsds.tistory.com/141</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;요즘 파이썬 문법이나 메서드에 익숙해지기 위해 프로그래머스 기초문제를 파이썬으로 풀고있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;785&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8W6kM/btsrfjl6zXS/zdt23zC332nEyi218ZAQ81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8W6kM/btsrfjl6zXS/zdt23zC332nEyi218ZAQ81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8W6kM/btsrfjl6zXS/zdt23zC332nEyi218ZAQ81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8W6kM%2Fbtsrfjl6zXS%2Fzdt23zC332nEyi218ZAQ81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;785&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;785&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;나의 풀이&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1692156510797&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(my_string):
    
    arr = my_string.split(' ')
    answer = int(arr[0])
    for i in range(len(arr)):
        if i % 2 != 0:  
            if arr[i] == '+':
                answer += int(arr[i+1]) 
            else:
                answer -= int(arr[i+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;처음에 입출력 예를 보고 num1 num2 로만 나눴다가 연산자가 여러개인 경우가 있을 수 있어서 수정했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열을 한글자씩 쪼개서 배열에 넣어준 후 for문을 돌리면서 하나씩 꺼내는데&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;그런데 구글에 검색해보니 파이썬에 eval()이라는 함수가 있다는걸 알게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;eval 함수는 문자열로 받은 수식을 계산해서 결과를 반환하는 함수라고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 함수를 쓰면 위의 코드를 한줄로 줄일 수 있다. ㄷㄷ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1692157196991&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def solution(my_string):
    answer = eval(my_string)
    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;코테 문제를 왜 많은 사람들이 파이썬으로 푸는지 또 한번 알게된 날... : )&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/알고리즘</category>
      <author>토기발</author>
      <guid isPermaLink="true">https://dsdsds.tistory.com/141</guid>
      <comments>https://dsdsds.tistory.com/141#entry141comment</comments>
      <pubDate>Wed, 16 Aug 2023 12:40:43 +0900</pubDate>
    </item>
    <item>
      <title>REST와 RESTful API</title>
      <link>https://dsdsds.tistory.com/140</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이전에 면접질문 용어정리에서 짧게 정리했지만 확실하게 알아두고 싶어서 다시 정리하기로 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;REST&amp;nbsp;(Representational&amp;nbsp;State&amp;nbsp;Transfer)&lt;/b&gt; &lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;REST는 웹 기반 애플리케이션 간의 통신을 위한 아키텍처 스타일로, 리소스(자원)를 정의하고 이 리소스에 대한 상태를 전송 및 조작하기 위한 규칙을 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;주요 개념&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 리소스(자원)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 서비스에서 제공하는 모든 것을 리소스로 간주한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(ex: 사용자, 댓글 이미지 등)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. HTTP 메서드&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTP메서드를 사용하여 리소스에 대한 작업을 수행한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GET: 리소스를 조회한다.&lt;/li&gt;
&lt;li&gt;POST: 새로운 리소스를 생성한다.&lt;/li&gt;
&lt;li&gt;PUT: 기존 리소스를 업데이트한다.&lt;/li&gt;
&lt;li&gt;DELETE: 리소스를 삭제한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. URI(Uniform&amp;nbsp;Resource&amp;nbsp;Identifier)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 리소스는 고유한 URI를 가지며, 이를 통해 리소스를 식별한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 상태 표현&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리소스의 상태는 텍스트, XML, JSON등의 형식으로 표현된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5. 상태 전달&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트는 서버로부터 받은 리소스의 상태를 조작하거나 변경된 상태를 서버에 전달하여 상호작용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;클라이언트-서버 구조 (Client-Server):&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트와 서버는 독립적으로 개발되어야 하며, 클라이언트는 사용자 인터페이스와 관련된 역할을, 서버는 데이터 저장 및 처리와 같은 역할을 수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 서로간의 역할과 책임을 분리하여 확장성과 유연성을 높인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;무상태성&amp;nbsp;(Statelessness):&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버는 클라이언트의 상태를 관리하지 않으며, 각 요청은 모든 필요한 정보를 포함해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 서버는 클라이언트 간의 세션 정보를 관리하지 않아도 되고, 클라이언트와 서버 간의 독립성과 확장성을 유지할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;캐시&amp;nbsp;가능성&amp;nbsp;(Cachable):&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트는 응답을 캐시할 수 있으며, 캐시된 리소스를 재사용함으로써 성능을 향상시킬 수 있다. 서버는 응답에 캐시 가능성 여부를 명시하여 클라이언트가 효율적으로 캐시를 관리하도록 도와준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;계층화&amp;nbsp;(Layered&amp;nbsp;System):&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트는 서버와 직접 통신하며, 서버는 다른 서버로부터 리소스를 가져오거나 데이터베이스와 통신할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt; 확장성과 보안 향상&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;인터페이스&amp;nbsp;일관성&amp;nbsp;(Uniform&amp;nbsp;Interface):&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일관된 인터페이스를 통해 리소를 조작하고 검색할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;RESTful&amp;nbsp;API&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RESTful API는 REST의 원칙을 따르며 웹 서비스 간의 통신을 위한 API 디자인 스타일이다. API 사용자가 HTTP 메서드와 URI를 통해 리소스를 조작하고 상태를 전달하는 방식으로 동작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;주요 개념&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;엔드포인트 (Endpoints)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;API의&amp;nbsp;각&amp;nbsp;기능은&amp;nbsp;엔드포인트로&amp;nbsp;표현되며,&amp;nbsp;URI를&amp;nbsp;통해&amp;nbsp;식별된다.&amp;nbsp;엔드포인트는&amp;nbsp;리소스의&amp;nbsp;종류와&amp;nbsp;작업을&amp;nbsp;나타낸다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;RESTful API는 일관성 있고 효율적인 웹 서비스를 설계하기 위한 규칙을 따르는 것이 중요하다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;주요 규칙&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 명사를 사용한 리소스 식별:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엔드포인트의 URI는 리소스를 나타내는 명사로 구성되어야 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;gt;명사를 사용함으로써 어떤 리소스를 다루는지 명확하게 표현할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 복수형 사용:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리소스의 컬렉션을 나타내는 경우 복수형 명사를 사용하여 엔드포인트를 구성한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(ex: /users)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. HTTP 메서드 사용:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;올바른 HTTP 메서드를 사용하여 각 리소스에 대한 액션을 정의한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;GET: 리소스 조회&lt;/li&gt;
&lt;li&gt;POST: 리소스 생성&lt;/li&gt;
&lt;li&gt;PUT: 리소스 수정&lt;/li&gt;
&lt;li&gt;DELETE:&amp;nbsp;리소스&amp;nbsp;삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. URI 계층 구조:&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/를 통해 계층 구조를 나타낼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(ex: http://restapi.example.com/houses/apartments)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;설계 예시&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든&amp;nbsp;포스트&amp;nbsp;조회: &lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;메서드: GET&lt;/li&gt;
&lt;li&gt;엔드포인트: &lt;b&gt;/posts&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 포스트 조회:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;메서드:&amp;nbsp;GET &lt;/li&gt;
&lt;li&gt;엔드포인트:&amp;nbsp;&lt;b&gt;/posts/{post_id}&lt;/b&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운&amp;nbsp;포스트&amp;nbsp;생성: &lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;메서드: POST&lt;/li&gt;
&lt;li&gt;엔드포인트: &lt;b&gt;/posts&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포스트&amp;nbsp;업데이트: &lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;메서드: PUT&lt;/li&gt;
&lt;li&gt;엔드포인트: &lt;b&gt;/posts/{post_id}&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포스트&amp;nbsp;삭제: &lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;메서드: DELETE&lt;/li&gt;
&lt;li&gt;엔드포인트: &lt;b&gt;/posts/{post_id}&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[참고 출처]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80&lt;/a&gt;&lt;/p&gt;</description>
      <category>Study/기술 및 용어 정리</category>
      <author>토기발</author>
      <guid isPermaLink="true">https://dsdsds.tistory.com/140</guid>
      <comments>https://dsdsds.tistory.com/140#entry140comment</comments>
      <pubDate>Fri, 11 Aug 2023 16:27:57 +0900</pubDate>
    </item>
    <item>
      <title>[EC2] EC2에서 build 시 test failed로 빌드 실패</title>
      <link>https://dsdsds.tistory.com/139</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;제목 그대로....&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EC2에서 배포를 하려고 shell파일을 만들어 실행하였는데 테스트코드에서만 줄줄이 에러가 나서 빌드 실패 에러가 났다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;662&quot; data-origin-height=&quot;469&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eOmOyT/btspK3xGY9N/ea8apaUUDVCrDFShrmvch1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eOmOyT/btspK3xGY9N/ea8apaUUDVCrDFShrmvch1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eOmOyT/btspK3xGY9N/ea8apaUUDVCrDFShrmvch1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeOmOyT%2FbtspK3xGY9N%2Fea8apaUUDVCrDFShrmvch1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;662&quot; height=&quot;469&quot; data-origin-width=&quot;662&quot; data-origin-height=&quot;469&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끔찍..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 에러가 나는 이유는 application.properties 파일을&amp;nbsp; git ignore로 등록해서 git clone으로 불러올 수 없었기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 나는 파일질라 build/resources/main 경로에 해당 파일을 수동으로 집어넣었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;책에서는 EC2내에 properties 파일을 만들어서 해결했지만 나는 그 방법으로는 실패했기 때문에....&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼&amp;nbsp; application.properties과 함께 소셜 로그인을 위한 application-oauth.properties 파일도 같이 집어넣어서 빌드가 성공했다. : )&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;46&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3ApVo/btsppI3d9Ow/OBjIUPChwb369RTtyTwF8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3ApVo/btsppI3d9Ow/OBjIUPChwb369RTtyTwF8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3ApVo/btsppI3d9Ow/OBjIUPChwb369RTtyTwF8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3ApVo%2FbtsppI3d9Ow%2FOBjIUPChwb369RTtyTwF8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;46&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;46&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇게 다 끝났나 했지만 Travis 를 이용하기 위해 Travis CI에서 빌드를 하면서 또 테스트들이 에러가 나는 사태가 발생...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아마 똑같은 이유일 거라고 생각하지만 이번에는 파일질라를 사용해 수동으로 넣을 수도 없어서 검색해서 발견한 다른 분들처럼 암호화 방법을 사용해야 할 것 같다...ㅠ&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/AWS</category>
      <author>토기발</author>
      <guid isPermaLink="true">https://dsdsds.tistory.com/139</guid>
      <comments>https://dsdsds.tistory.com/139#entry139comment</comments>
      <pubDate>Tue, 1 Aug 2023 20:41:19 +0900</pubDate>
    </item>
    <item>
      <title>[Python] DB를 연결하여 todolist 만들기</title>
      <link>https://dsdsds.tistory.com/138</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬 공부를 시작하고 이론들을 공부하다가 배운 것들을 복습하고 싶기도 하고, 빨리 능숙해져서 웹사이트를 만들고 싶기도 해서 간단한 프로그램을 만들기로 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 프로그램 하면 투두리스트! 라고 생각해서 검색해보니 대부분 Django로 만들고 있어서 아직 내 수준으로는 어려울 것 같았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 나는 DB를 연결해서 쿼리를 통해 동작하고, 콘솔에 결과가 표시되는 아주 간단한 투두리스트를 만들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 DB와 테이블을 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1690702711958&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE DATABASE todos;

USE todos;

CREATE TABLE tasks (
    id INT AUTO_INCREMENT PRIMARY KEY,
    description VARCHAR(255),
    done BOOLEAN DEFAULT FALSE
);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 이렇게 테이블을 등록한 후 쿼리를 실행하면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Error&amp;nbsp;:&amp;nbsp;(1366,&amp;nbsp;&quot;Incorrect&amp;nbsp;string&amp;nbsp;value:&amp;nbsp;'\\xED\\x8C\\x8C\\xEC\\x9D\\xB4...'&amp;nbsp;for&amp;nbsp;column&amp;nbsp;`todos`.`tasks`.`description`&amp;nbsp;at&amp;nbsp;row&amp;nbsp;1&quot;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에러가 났다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mariaDB와 파이썬의 인코딩방법이 달라서 생기는 문제라고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 아래 쿼리를 추가해주면 제대로 동작한다.&lt;/p&gt;
&lt;pre id=&quot;code_1690702788826&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ALTER TABLE tasks CONVERT TO CHARSET utf8;&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;이제 .py파일을 만들고 DB를 연결한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1690703414106&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pymysql

connection = pymysql.connect(
    host = 'localhost',
    user= 'root',
    password = '비밀번호',
    db= 'todos'
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pymysql 은 Python에서 MySQL 데이터베이스와 상호작용하기 위한 라이브러리이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MariaDB와도 연동되기 때문에 사용하기로 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;connection = pymysql.connect()&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;괄호 안에 DB정보를 입력해주면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 유저명이 root라서 root로, db는 아까 만들었던 todos로 기입했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1690703926945&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def add_todo(description):
    try:
        with connection.cursor() as cursor:
            sql = &quot;INSERT INTO tasks (description) VALUES (%s);&quot;
            cursor.execute(sql, (description,))
            connection.commit()

    except pymysql.Error as e:
        print(f&quot;Error : {e}&quot;)
        connection.rollback()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;할 일을 추가하는 함수이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;add_todo()에 description을 매개변수로 받았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;with connection.cursor() as cursor: 구문은 pymysql 라이브러리를 사용하여 데이터베이스와 상호작용할 때 많이 쓰인다. 이를 통해 cursor 객체를 생성하고, 데이터베이스와의 상호작용을 보다 편리하게 처리할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cursor는 데이터베이스와 상호작용할 때 쿼리를 실행하고 결과를 가져오는 역할을 한다.&lt;/p&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&amp;nbsp;=&amp;nbsp;&quot;INSERT&amp;nbsp;INTO&amp;nbsp;tasks&amp;nbsp;(description)&amp;nbsp;VALUES&amp;nbsp;(%s);&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿼리를 사용해서 테이블에 데이터를 집어넣는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cursor.execute() 메서드는 SQL 쿼리를 실행할 때 쿼리에 전달할 파라미터(이 쿼리에서는 (description))를 튜플 형태로 전달하여 해당 값을 SQL 쿼리에 동적으로 삽입한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삽입이 끝나면 commit 해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;try -except 문으로 예외를 try에서 잡아서 예외가 발생한다면 try에서 중단하고, except블록으로 넘어간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;as e를 통해 예외 객체를 e라는 변수에 할당한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 코드에서는 에러를 프린트하고 rollback한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 이 함수를 호출하기 위한 코드를 작성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1690705183808&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;todo = input(&quot;할 일을 입력하세요 : &quot;)
add_todo(todo)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;input을 통해 사용자의 입력값을 받아서 todo라는 변수에 사용자가 입력한 할 일을 저장한 후, add_todo(todo) 함수를 호출하여 할 일을 데이터베이스에 추가한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 할 일 리스트(투두리스트)를 조회하는 함수를 만들어보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1690705798441&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def view_todos():
    try:
        with connection.cursor() as cursor:
            sql = &quot;SELECT * FROM tasks;&quot;
            cursor.execute(sql)
            result = cursor.fetchall()
            if not result:
                print(&quot;할 일이 없습니다.&quot;)
            else:
                print(&quot;할 일 목록 : &quot;)
                for row in result:
                    status = &quot;완료&quot; if row[2] else &quot;미완료&quot; 
                    print(f&quot;{row[0]}. {row[1]} ({status})&quot;)
    except pymysql.Error as e:
        print(f&quot;Error: {e}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cursor.fetchall() 은 SELECT 쿼리의 결과를 모두 가져오는 메서드이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테이블에 아무 데이터도 없다면 할 일이 없다는 문구를 출력하고, 데이터가 있을 경우 for문을 돌려서 할 일의 상태를 확인하고 정보를 출력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;row[0] 은 그 행의 0번째 인덱스를 말한다. 이 테이블에서는 id가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;row[1]은 할 일, {status}는 &amp;nbsp;row[2]의 값이 True라면 &quot;완료&quot;를, False라면 &quot;미완료&quot;를 변수 status에 할당하여 출력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1690706310865&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;view_todos()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;할 일 조회는 매개변수가 없어서 함수 호출만 하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미완료를 완료로 변경 및 등록했던 할 일 삭제는 입력한 번호와 같은 id를 찾아서 수정 및 삭제하는 형식이다.&lt;/p&gt;
&lt;pre id=&quot;code_1690706407139&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def mark_as_done(task_id):
    try:
        with connection.cursor() as cursor:
            sql = &quot;UPDATE tasks SET done = TRUE WHERE id = %s;&quot;
            cursor.execute(sql, (task_id,))
            connection.commit()
    except pymysql.Error as e:
        print(f&quot;Error: {e}&quot;)
        connection.rollback()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1690706420419&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def delete_todo(task_id):
    try:
        with connection.cursor() as cursor:
            sql = &quot;DELETE FROM tasks WHERE id = %s;&quot;
            cursor.execute(sql, (task_id,))
            connection.commit()
            print(f&quot;할 일 {task_id}번이 삭제되었습니다.&quot;)
    except pymysql.Error as e:
        print(f&quot;Error: {e}&quot;)
        connection.rollback()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삭제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;호출 함수들은 이렇다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1690706472688&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 할 일 입력
todo = input(&quot;할 일을 입력하세요 : &quot;)
add_todo(todo)

# 할 일 조회
view_todos()

# 완료 체크하기 
task_id = input(&quot;완료한 할 일의 번호를 입력하세요: &quot;)
mark_as_done(task_id)

# 완료 체크 후 할 일 조회
view_todos()

# 할 일 삭제하기
task_id = input(&quot;삭제할 할 일의 번호를 입력하세요: &quot;)
delete_todo(task_id)

# 할 일 목록 조회하기 (삭제 후)
view_todos()

#연결 닫기
connection.close()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행하면 이렇게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;266&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/F4i92/btspmLExWae/GtMaaN4DtOaLz0A4R8sQNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/F4i92/btspmLExWae/GtMaaN4DtOaLz0A4R8sQNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/F4i92/btspmLExWae/GtMaaN4DtOaLz0A4R8sQNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FF4i92%2FbtspmLExWae%2FGtMaaN4DtOaLz0A4R8sQNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;412&quot; height=&quot;266&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;266&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 할 일 기입만 하고 수정이나 삭제할 생각이 없을 때, 또는 수정이나 삭제만 하고 싶을 때도 프로그램을 실행할 때 모든 함수가 실행되기 때문에 조금 불편하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 콘솔에 메뉴가 뜨고, 메뉴를 선택해서 해당 함수들만 동작하도록 코드를 수정했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1690707832442&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;while True:
    print(&quot;\n===== 투두리스트 메뉴 =====&quot;)
    print(&quot;1. 할 일 추가&quot;)
    print(&quot;2. 할 일 목록 조회&quot;)
    print(&quot;3. 완료 체크&quot;)
    print(&quot;4. 할 일 삭제&quot;)
    print(&quot;5. 종료&quot;)

    choice = input(&quot;원하는 기능의 번호를 선택하세요: &quot;)
    if choice == &quot;1&quot;:
        todo = input(&quot;할 일을 입력하세요: &quot;)
        add_todo(todo)

    elif choice == &quot;2&quot;:
        view_todos()

    elif choice == &quot;3&quot;:
        task_id = input(&quot;완료한 할 일의 번호를 입력하세요: &quot;)
        mark_as_done(task_id)

    elif choice == &quot;4&quot;:
        task_id = input(&quot;삭제할 할 일의 번호를 입력하세요: &quot;)
        delete_todo(task_id)

    elif choice == &quot;5&quot;:
        print(&quot;프로그램을 종료합니다.&quot;)
        connection.close()
        break

    else:
        print(&quot;올바른 번호를 선택하세요.&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;361&quot; data-origin-height=&quot;438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwSGoV/btspl78VAEV/R5qRTpAgedPJ2EB1HsxjYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwSGoV/btspl78VAEV/R5qRTpAgedPJ2EB1HsxjYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwSGoV/btspl78VAEV/R5qRTpAgedPJ2EB1HsxjYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwSGoV%2Fbtspl78VAEV%2FR5qRTpAgedPJ2EB1HsxjYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;361&quot; height=&quot;438&quot; data-origin-width=&quot;361&quot; data-origin-height=&quot;438&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메뉴의 번호를 입력해서 원하는 기능만 선택해서 할 수 있게 했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끝!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음엔 웹 사이트에서 실제로 체크할 수 있게 만들어봐야겠다. : )&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/Python</category>
      <author>토기발</author>
      <guid isPermaLink="true">https://dsdsds.tistory.com/138</guid>
      <comments>https://dsdsds.tistory.com/138#entry138comment</comments>
      <pubDate>Sun, 30 Jul 2023 18:06:00 +0900</pubDate>
    </item>
    <item>
      <title>[Python] 'conda' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다 에러</title>
      <link>https://dsdsds.tistory.com/137</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;파이썬을 배워보고자 아나콘다를 설치하고 VScode에 연결까지 성공한 뒤 간단한 print 를 하였는데 저 에러가 떴다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;843&quot; data-origin-height=&quot;39&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4gdCJ/btsoQLTE1N5/xiysfyE8PubKZiR2jqiBsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4gdCJ/btsoQLTE1N5/xiysfyE8PubKZiR2jqiBsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4gdCJ/btsoQLTE1N5/xiysfyE8PubKZiR2jqiBsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4gdCJ%2FbtsoQLTE1N5%2FxiysfyE8PubKZiR2jqiBsk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;843&quot; height=&quot;39&quot; data-origin-width=&quot;843&quot; data-origin-height=&quot;39&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;열심히 구글을 돌려보니 해당 에러가 생기는 이유는 두가지가 있다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. conda 설치 경로에 한글이 포함된 경우&lt;br /&gt;2. Terminal을 powershell로 설정하여 실행한 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 1번에 해당되지 않아서 2번으로 예상했다. VScode의 디폴트 터미널은 powershell이라고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;해결방법&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. &lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;Ctrl&amp;nbsp;&amp;nbsp;+&amp;nbsp;&amp;nbsp;Shift&amp;nbsp;&amp;nbsp;+&amp;nbsp;&amp;nbsp;P&lt;/b&gt;&lt;/span&gt; &amp;nbsp;를&amp;nbsp;누르고&amp;nbsp;&quot;Terminal:&amp;nbsp;Select&amp;nbsp;Default&amp;nbsp;Profile&quot;을&amp;nbsp;입력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. &lt;b&gt;Command Prompt &lt;/b&gt;를 선택한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;613&quot; data-origin-height=&quot;74&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nTRUD/btsoRC20gwh/JdBp49SH6bJGqTZJ0VWfB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nTRUD/btsoRC20gwh/JdBp49SH6bJGqTZJ0VWfB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nTRUD/btsoRC20gwh/JdBp49SH6bJGqTZJ0VWfB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnTRUD%2FbtsoRC20gwh%2FJdBp49SH6bJGqTZJ0VWfB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;613&quot; height=&quot;74&quot; data-origin-width=&quot;613&quot; data-origin-height=&quot;74&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;3. 기존에 켜져있던 터미널을 휴지통모양을 눌러 닫고, &lt;b&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;Ctrl&amp;nbsp;&amp;nbsp;+&amp;nbsp;&amp;nbsp;Shift&amp;nbsp;&amp;nbsp;+&amp;nbsp;&amp;nbsp;P&lt;/span&gt;&lt;/b&gt; &amp;nbsp;를&amp;nbsp;누르고&amp;nbsp;&quot;Python:&amp;nbsp;Select&amp;nbsp;Interpreter&quot;을&amp;nbsp;입력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 다시 실행하면 정상적으로 작동한다^^~&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/Python</category>
      <author>토기발</author>
      <guid isPermaLink="true">https://dsdsds.tistory.com/137</guid>
      <comments>https://dsdsds.tistory.com/137#entry137comment</comments>
      <pubDate>Tue, 25 Jul 2023 15:03:31 +0900</pubDate>
    </item>
    <item>
      <title>[AWS][RDS] RDS MariaDB 프리티어 인스턴스 생성 및 DBeaver 연결</title>
      <link>https://dsdsds.tistory.com/136</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;EC2에 DB를 설치하고 모니터링, 알람, 백업 등등을 직접 하는 것은 너무 어렵고 번거롭기 때문에 AWS에서 지원하는 RDS를 사용해서 EC2에 연결하기로 했다.&lt;/p&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;RDS생성&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;638&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdMKXL/btsox90MWZo/ZnQcan132ABWanxhmoI70K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdMKXL/btsox90MWZo/ZnQcan132ABWanxhmoI70K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdMKXL/btsox90MWZo/ZnQcan132ABWanxhmoI70K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdMKXL%2Fbtsox90MWZo%2FZnQcan132ABWanxhmoI70K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;854&quot; height=&quot;638&quot; data-origin-width=&quot;854&quot; data-origin-height=&quot;638&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서비스-데이터베이스-RDS를 선택한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;139&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lvFkp/btsoyJneZIL/WaYvoULS12MSuT7QQ5Pga1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lvFkp/btsoyJneZIL/WaYvoULS12MSuT7QQ5Pga1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lvFkp/btsoyJneZIL/WaYvoULS12MSuT7QQ5Pga1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlvFkp%2FbtsoyJneZIL%2FWaYvoULS12MSuT7QQ5Pga1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;412&quot; height=&quot;139&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;139&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스 생성을 클릭한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;417&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKLsAj/btsozS4XNRN/HvRMCSJAFqcGJdEzMOPsTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKLsAj/btsozS4XNRN/HvRMCSJAFqcGJdEzMOPsTk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKLsAj/btsozS4XNRN/HvRMCSJAFqcGJdEzMOPsTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKLsAj%2FbtsozS4XNRN%2FHvRMCSJAFqcGJdEzMOPsTk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;773&quot; height=&quot;417&quot; data-origin-width=&quot;773&quot; data-origin-height=&quot;417&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MariaDB를 사용할 것이기에 MariaDB를 선택해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;789&quot; data-origin-height=&quot;255&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bREZZr/btsoDJGxa7K/1SwydHhAhGJu2ZktGZVt40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bREZZr/btsoDJGxa7K/1SwydHhAhGJu2ZktGZVt40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bREZZr/btsoDJGxa7K/1SwydHhAhGJu2ZktGZVt40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbREZZr%2FbtsoDJGxa7K%2F1SwydHhAhGJu2ZktGZVt40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;789&quot; height=&quot;255&quot; data-origin-width=&quot;789&quot; data-origin-height=&quot;255&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;767&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TfNt9/btsoxFlpFwA/j8GfFx6OOz81Hxpr02Em6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TfNt9/btsoxFlpFwA/j8GfFx6OOz81Hxpr02Em6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TfNt9/btsoxFlpFwA/j8GfFx6OOz81Hxpr02Em6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTfNt9%2FbtsoxFlpFwA%2Fj8GfFx6OOz81Hxpr02Em6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;798&quot; height=&quot;767&quot; data-origin-width=&quot;798&quot; data-origin-height=&quot;767&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;설정에서 정보들을 기입한다. 마스터 사용자 이름은 MariaDB에서는 root라서 root로 적어주었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;691&quot; data-origin-height=&quot;261&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgsDf6/btsowPou1e8/pIiXVT4DpKswj21SFwK0X0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgsDf6/btsowPou1e8/pIiXVT4DpKswj21SFwK0X0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgsDf6/btsowPou1e8/pIiXVT4DpKswj21SFwK0X0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgsDf6%2FbtsowPou1e8%2FpIiXVT4DpKswj21SFwK0X0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;691&quot; height=&quot;261&quot; data-origin-width=&quot;691&quot; data-origin-height=&quot;261&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중요!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인스턴스 클래스가 기본은 t3으로 되어있는데 t2로 바꾸어야 과금이 되지 않는다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;690&quot; data-origin-height=&quot;307&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RlXHY/btsoxxOjest/VzB1ALZKao5nTu7TMlgA51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RlXHY/btsoxxOjest/VzB1ALZKao5nTu7TMlgA51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RlXHY/btsoxxOjest/VzB1ALZKao5nTu7TMlgA51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRlXHY%2FbtsoxxOjest%2FVzB1ALZKao5nTu7TMlgA51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;690&quot; height=&quot;307&quot; data-origin-width=&quot;690&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;스토리지 자동 조정 활성화의 경우도 과금이 발생할 수 있어 체크해제해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;795&quot; data-origin-height=&quot;797&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTJTpU/btsowYMvpHE/4GxQUPgG9f54GA4uGbytek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTJTpU/btsowYMvpHE/4GxQUPgG9f54GA4uGbytek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTJTpU/btsowYMvpHE/4GxQUPgG9f54GA4uGbytek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTJTpU%2FbtsowYMvpHE%2F4GxQUPgG9f54GA4uGbytek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;795&quot; height=&quot;797&quot; data-origin-width=&quot;795&quot; data-origin-height=&quot;797&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EC2&amp;nbsp;컴퓨팅&amp;nbsp;리소스에&amp;nbsp;연결&amp;nbsp;안&amp;nbsp;함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;퍼블릭 액세스-&amp;gt;예 체크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8Ecxs/btsowYeG6JD/1A3liAkF1IjhT7TucalKxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8Ecxs/btsowYeG6JD/1A3liAkF1IjhT7TucalKxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8Ecxs/btsowYeG6JD/1A3liAkF1IjhT7TucalKxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8Ecxs%2FbtsowYeG6JD%2F1A3liAkF1IjhT7TucalKxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;648&quot; height=&quot;402&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;402&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가구성-데이터베이스 옵션에서 초기 데이터베이스 이름을 입력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;402&quot; data-origin-height=&quot;118&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ybZX8/btsowPvcP39/qQk9NYc6v7D6ls4tcYukuk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ybZX8/btsowPvcP39/qQk9NYc6v7D6ls4tcYukuk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ybZX8/btsowPvcP39/qQk9NYc6v7D6ls4tcYukuk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FybZX8%2FbtsowPvcP39%2FqQk9NYc6v7D6ls4tcYukuk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;402&quot; height=&quot;118&quot; data-origin-width=&quot;402&quot; data-origin-height=&quot;118&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과금이 발생할 수 있으니 자동백업 활성화도 체크해제한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 외에는 기본설정으로 두고 데이터베이스 생성을 클릭한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;865&quot; data-origin-height=&quot;94&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYb9b4/btsoxIh6Fuc/tjOFxh7QcqX9ibWwIxfuKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYb9b4/btsoxIh6Fuc/tjOFxh7QcqX9ibWwIxfuKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYb9b4/btsoxIh6Fuc/tjOFxh7QcqX9ibWwIxfuKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYb9b4%2FbtsoxIh6Fuc%2FtjOFxh7QcqX9ibWwIxfuKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;94&quot; data-origin-width=&quot;865&quot; data-origin-height=&quot;94&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스 생성중...기다리자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;476&quot; data-origin-height=&quot;41&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/egLlR0/btsoyseGxJ4/rRE2zX9EKKXDdnnUYeAtjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/egLlR0/btsoyseGxJ4/rRE2zX9EKKXDdnnUYeAtjK/img.png&quot; data-alt=&quot;생성 완&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/egLlR0/btsoyseGxJ4/rRE2zX9EKKXDdnnUYeAtjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FegLlR0%2FbtsoyseGxJ4%2FrRE2zX9EKKXDdnnUYeAtjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;476&quot; height=&quot;41&quot; data-origin-width=&quot;476&quot; data-origin-height=&quot;41&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;생성 완&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;파라미터 설정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;RDS를 생성했다면 몇가지 설정을 필수로 해야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;time_zone : 시간 설정&lt;/li&gt;
&lt;li&gt;Character Set : 문자 인코딩 설정&lt;/li&gt;
&lt;li&gt;collation : 데이터의 정렬기준을 위한 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;252&quot; data-origin-height=&quot;620&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVxcTZ/btsozk8A7La/ByASkSMSyKkkp8kcFzRKd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVxcTZ/btsozk8A7La/ByASkSMSyKkkp8kcFzRKd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVxcTZ/btsozk8A7La/ByASkSMSyKkkp8kcFzRKd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVxcTZ%2Fbtsozk8A7La%2FByASkSMSyKkkp8kcFzRKd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;252&quot; height=&quot;620&quot; data-origin-width=&quot;252&quot; data-origin-height=&quot;620&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;245&quot; data-origin-height=&quot;119&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crDXtK/btsoxxU6tXc/KsKQKJKGRCNxDoKBnQDdF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crDXtK/btsoxxU6tXc/KsKQKJKGRCNxDoKBnQDdF1/img.png&quot; data-alt=&quot;클릭&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crDXtK/btsoxxU6tXc/KsKQKJKGRCNxDoKBnQDdF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrDXtK%2FbtsoxxU6tXc%2FKsKQKJKGRCNxDoKBnQDdF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;245&quot; height=&quot;119&quot; data-origin-width=&quot;245&quot; data-origin-height=&quot;119&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;클릭&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;822&quot; data-origin-height=&quot;543&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DvFni/btsozkHxCm6/XGH2fF4CG3afcq6pDOYJR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DvFni/btsozkHxCm6/XGH2fF4CG3afcq6pDOYJR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DvFni/btsozkHxCm6/XGH2fF4CG3afcq6pDOYJR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDvFni%2FbtsozkHxCm6%2FXGH2fF4CG3afcq6pDOYJR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;822&quot; height=&quot;543&quot; data-origin-width=&quot;822&quot; data-origin-height=&quot;543&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파라미터 그룹을 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그룹 패밀리는 아까 만들었던 버전과 동일하게 설정해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;완료하면 생성 클릭.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;382&quot; data-origin-height=&quot;199&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dn0wMd/btsoDJ7C5fH/qeg8zkC5P4AWS8wpdMo0e1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dn0wMd/btsoDJ7C5fH/qeg8zkC5P4AWS8wpdMo0e1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dn0wMd/btsoDJ7C5fH/qeg8zkC5P4AWS8wpdMo0e1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdn0wMd%2FbtsoDJ7C5fH%2Fqeg8zkC5P4AWS8wpdMo0e1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;382&quot; height=&quot;199&quot; data-origin-width=&quot;382&quot; data-origin-height=&quot;199&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 만들어졌다면 이름 클릭 후 좌상단 편집 클릭.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1729&quot; data-origin-height=&quot;417&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uDMNu/btsoxWG2zAq/3QVD5h8DSAGxeL8uY0zZD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uDMNu/btsoxWG2zAq/3QVD5h8DSAGxeL8uY0zZD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uDMNu/btsoxWG2zAq/3QVD5h8DSAGxeL8uY0zZD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuDMNu%2FbtsoxWG2zAq%2F3QVD5h8DSAGxeL8uY0zZD0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1729&quot; height=&quot;417&quot; data-origin-width=&quot;1729&quot; data-origin-height=&quot;417&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;time_zone을 검색하면 위와 같이 뜨는데 Asia/Seoul 을 선택하고 Save Change를 클릭하고 그룹 화면에서 검색해보면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;709&quot; data-origin-height=&quot;235&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YbArT/btsoz8z3NZ9/368vy0zXA4GndHQL3dVqEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YbArT/btsoz8z3NZ9/368vy0zXA4GndHQL3dVqEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YbArT/btsoz8z3NZ9/368vy0zXA4GndHQL3dVqEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYbArT%2Fbtsoz8z3NZ9%2F368vy0zXA4GndHQL3dVqEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;709&quot; height=&quot;235&quot; data-origin-width=&quot;709&quot; data-origin-height=&quot;235&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 변경되어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Character Set은 utf8을 utf8mb4로 변경하는 과정으로, 둘의 차이는 이모지 저장 가능 여부이다.&lt;/p&gt;
&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;utf8mb4&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot;&gt;&amp;bull; character_set_client&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot;&gt;&amp;bull; character_set_connection&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot;&gt;&amp;bull; character_set_database&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot;&gt;&amp;bull; character_set_filesystem&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot;&gt;&amp;bull; character_set_results&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot;&gt;&amp;bull; character_set_server&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;utf8mb4_general_ci&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot;&gt;&amp;bull; collation_connection&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot;&gt;&amp;bull; collation_server&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 검색해서 위와 같이 변경해주면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수정사항을 적용하기 위해 왼쪽 메뉴의 데이터베이스를 클릭한 후, 처음 생성한 인스턴스의 라디오버튼을 클릭 후 수정을 클릭한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;215&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dUlkor/btsowXtmtEv/2f893tSdwh4kiAooxeLAy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dUlkor/btsowXtmtEv/2f893tSdwh4kiAooxeLAy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dUlkor/btsowXtmtEv/2f893tSdwh4kiAooxeLAy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdUlkor%2FbtsowXtmtEv%2F2f893tSdwh4kiAooxeLAy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1198&quot; height=&quot;215&quot; data-origin-width=&quot;1198&quot; data-origin-height=&quot;215&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;653&quot; data-origin-height=&quot;291&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLtiyd/btsoxX65QQJ/Kop93nwnXED5qQsYLLIgK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLtiyd/btsoxX65QQJ/Kop93nwnXED5qQsYLLIgK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLtiyd/btsoxX65QQJ/Kop93nwnXED5qQsYLLIgK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLtiyd%2FbtsoxX65QQJ%2FKop93nwnXED5qQsYLLIgK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;653&quot; height=&quot;291&quot; data-origin-width=&quot;653&quot; data-origin-height=&quot;291&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쭉 내려오면 DB파라미터 그룹이 있는데 아까 만든 것을 선택한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;840&quot; data-origin-height=&quot;537&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWsecz/btsozTixUht/MvdDFqCovgY14qNXa3Nwl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWsecz/btsozTixUht/MvdDFqCovgY14qNXa3Nwl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWsecz/btsozTixUht/MvdDFqCovgY14qNXa3Nwl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWsecz%2FbtsozTixUht%2FMvdDFqCovgY14qNXa3Nwl0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;840&quot; height=&quot;537&quot; data-origin-width=&quot;840&quot; data-origin-height=&quot;537&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맨아래의 계속 버튼 클릭 후 수정 예약에서 즉시 적용을 선택하고 DB인스턴스 수정을 클릭한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;324&quot; data-origin-height=&quot;48&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAyJsV/btsox9T362Y/4u2JNv6B11p8i54Lei3vW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAyJsV/btsox9T362Y/4u2JNv6B11p8i54Lei3vW0/img.png&quot; data-alt=&quot;성공~~&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAyJsV/btsox9T362Y/4u2JNv6B11p8i54Lei3vW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAyJsV%2Fbtsox9T362Y%2F4u2JNv6B11p8i54Lei3vW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;324&quot; height=&quot;48&quot; data-origin-width=&quot;324&quot; data-origin-height=&quot;48&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;성공~~&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;RDS&amp;nbsp;MariaDB&amp;nbsp;접속하기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;295&quot; data-origin-height=&quot;106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVqi1O/btsoyW0QM3K/AY6b3nLX4j8jlKDgk4mO5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVqi1O/btsoyW0QM3K/AY6b3nLX4j8jlKDgk4mO5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVqi1O/btsoyW0QM3K/AY6b3nLX4j8jlKDgk4mO5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVqi1O%2FbtsoyW0QM3K%2FAY6b3nLX4j8jlKDgk4mO5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;295&quot; height=&quot;106&quot; data-origin-width=&quot;295&quot; data-origin-height=&quot;106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 만들었던 인스턴스 식별자를 클릭하면 연결&amp;amp;보안에 엔드포인트 및 포트라고 적힌 곳이 있다.&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;나는 dbeaver를 사용하기 때문에 이것과 연결하기로 했다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;DBeaver-Logo.wine.png&quot; data-origin-width=&quot;1366&quot; data-origin-height=&quot;910&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chajWO/btsoxwIFkY0/lKqKpMUncvAFLJgg9pu1C0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chajWO/btsoxwIFkY0/lKqKpMUncvAFLJgg9pu1C0/img.png&quot; data-alt=&quot;귀여움&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chajWO/btsoxwIFkY0/lKqKpMUncvAFLJgg9pu1C0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchajWO%2FbtsoxwIFkY0%2FlKqKpMUncvAFLJgg9pu1C0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;564&quot; height=&quot;376&quot; data-filename=&quot;DBeaver-Logo.wine.png&quot; data-origin-width=&quot;1366&quot; data-origin-height=&quot;910&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;귀여움&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;601&quot; data-origin-height=&quot;230&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfNCm3/btsoyqnCedm/iMVz9Rm3K6cX246cwBiZp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfNCm3/btsoyqnCedm/iMVz9Rm3K6cX246cwBiZp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfNCm3/btsoyqnCedm/iMVz9Rm3K6cX246cwBiZp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfNCm3%2FbtsoyqnCedm%2FiMVz9Rm3K6cX246cwBiZp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;601&quot; height=&quot;230&quot; data-origin-width=&quot;601&quot; data-origin-height=&quot;230&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보안 -&amp;gt; VPC 보안 그룹 -&amp;gt; 보안 그룹 ID -&amp;gt; 인바운드 규칙 편집 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인바운드 규칙 편집 클릭-&amp;gt; 규칙 추가 클릭&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;475&quot; data-origin-height=&quot;341&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfIIQN/btsoDI1X37O/eEPjepnTniHBDbwA8hi3B1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfIIQN/btsoDI1X37O/eEPjepnTniHBDbwA8hi3B1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfIIQN/btsoDI1X37O/eEPjepnTniHBDbwA8hi3B1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfIIQN%2FbtsoDI1X37O%2FeEPjepnTniHBDbwA8hi3B1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;475&quot; height=&quot;341&quot; data-origin-width=&quot;475&quot; data-origin-height=&quot;341&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;813&quot; data-origin-height=&quot;83&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dMS01E/btsoxFTfQLS/4ztBf5Zr8zHmDRSj7c0Qc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dMS01E/btsoxFTfQLS/4ztBf5Zr8zHmDRSj7c0Qc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dMS01E/btsoxFTfQLS/4ztBf5Zr8zHmDRSj7c0Qc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdMS01E%2FbtsoxFTfQLS%2F4ztBf5Zr8zHmDRSj7c0Qc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;813&quot; height=&quot;83&quot; data-origin-width=&quot;813&quot; data-origin-height=&quot;83&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 설정해준 후 규칙을 저장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 dbeaver로 간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;259&quot; data-origin-height=&quot;223&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lg1t8/btsoEqUrbkw/3olAt2nin6Z3CLKTnnZ651/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lg1t8/btsoEqUrbkw/3olAt2nin6Z3CLKTnnZ651/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lg1t8/btsoEqUrbkw/3olAt2nin6Z3CLKTnnZ651/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flg1t8%2FbtsoEqUrbkw%2F3olAt2nin6Z3CLKTnnZ651%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;259&quot; height=&quot;223&quot; data-origin-width=&quot;259&quot; data-origin-height=&quot;223&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 커넥션을 MariaDB로 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;180&quot; data-origin-height=&quot;423&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qu0Re/btsoxHXP3x7/k2GvhhrJ6tmkidqMB5vtK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qu0Re/btsoxHXP3x7/k2GvhhrJ6tmkidqMB5vtK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qu0Re/btsoxHXP3x7/k2GvhhrJ6tmkidqMB5vtK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fqu0Re%2FbtsoxHXP3x7%2Fk2GvhhrJ6tmkidqMB5vtK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;180&quot; height=&quot;423&quot; data-origin-width=&quot;180&quot; data-origin-height=&quot;423&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Server Host는 엔드포인트로 지정하고 Database는 db명, Username은 마스터 사용자 이름, Password는 비번을 입력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;124&quot; data-origin-height=&quot;132&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJCsiE/btsox9meHr6/bKvtKIljBrgOD7mRtcoTQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJCsiE/btsox9meHr6/bKvtKIljBrgOD7mRtcoTQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJCsiE/btsox9meHr6/bKvtKIljBrgOD7mRtcoTQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJCsiE%2Fbtsox9meHr6%2FbKvtKIljBrgOD7mRtcoTQK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;124&quot; height=&quot;132&quot; data-origin-width=&quot;124&quot; data-origin-height=&quot;132&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연결 끝! ^^&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;+&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파라미터 설정이 잘 되었는지 확인하고 싶다면&lt;/p&gt;
&lt;pre id=&quot;code_1690032768410&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SHOW variables LIKE &quot;c%&quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 쿼리를 입력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;character_set_database, collation_connection&lt;/b&gt; 2가지 항목은 MariaDB에서만 RDS 파라미터 그룹으로는 변경이 되지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 직접 아래 쿼리를 쳐서 변경해주어야만 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1690032968092&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ALTER DATABASE DB명
CHARACTER SET = 'utf8mb4'
COLLATE = 'utf8mb4_general_ci';&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 다시 확인해보면.... 변경되는 경우도 있지만 나는 변경이 안됐다..^^&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검색해본 결과 인스턴스 재부팅을 하면 된다는 글을 봐서 얼른 시도해보았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인스턴스 재부팅은&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1451&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FavzB/btsoxcDFdhM/sw4WqNsDKUaYfOcSAufreK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FavzB/btsoxcDFdhM/sw4WqNsDKUaYfOcSAufreK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FavzB/btsoxcDFdhM/sw4WqNsDKUaYfOcSAufreK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFavzB%2FbtsoxcDFdhM%2Fsw4WqNsDKUaYfOcSAufreK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1451&quot; height=&quot;138&quot; data-origin-width=&quot;1451&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스에 내가 생성한 인스턴스 라디오버튼 클릭-&amp;gt; 작업-&amp;gt; 재부팅을 클릭하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재부팅은 조금 시간이 걸려서 상태가 사용 가능이 되면 다시 확인해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;317&quot; data-origin-height=&quot;258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eKBTlK/btsoz8GVd7s/Rq3nuZvKbvg6nkE5Ftnw6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eKBTlK/btsoz8GVd7s/Rq3nuZvKbvg6nkE5Ftnw6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eKBTlK/btsoz8GVd7s/Rq3nuZvKbvg6nkE5Ftnw6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeKBTlK%2Fbtsoz8GVd7s%2FRq3nuZvKbvg6nkE5Ftnw6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;317&quot; height=&quot;258&quot; data-origin-width=&quot;317&quot; data-origin-height=&quot;258&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;굿 : )&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[참고출처]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스프링 부트와 AWS로 혼자 구현하는 웹 서비스(책)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/ko/getting-started/hands-on/create-mariadb-db/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://aws.amazon.com/ko/getting-started/hands-on/create-mariadb-db/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://velog.io/@shawnhansh/AWS-RDS-DBeaver%EC%97%90-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://velog.io/@shawnhansh/AWS-RDS-DBeaver%EC%97%90-%EC%97%B0%EA%B2%B0%ED%95%98%EA%B8%B0&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://velog.io/@yeoonnii/AWS-RDS-MariaDB-%ED%94%84%EB%A6%AC%ED%8B%B0%EC%96%B4-%EC%83%9D%EC%84%B1#1-3-db-%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4-%EC%84%A4%EC%A0%95&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://velog.io/@yeoonnii/AWS-RDS-MariaDB-%ED%94%84%EB%A6%AC%ED%8B%B0%EC%96%B4-%EC%83%9D%EC%84%B1#1-3-db-%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4-%EC%84%A4%EC%A0%95&lt;/a&gt;&lt;/p&gt;</description>
      <category>Study/AWS</category>
      <author>토기발</author>
      <guid isPermaLink="true">https://dsdsds.tistory.com/136</guid>
      <comments>https://dsdsds.tistory.com/136#entry136comment</comments>
      <pubDate>Sat, 22 Jul 2023 21:44:10 +0900</pubDate>
    </item>
    <item>
      <title>[AWS][EC2] 윈도우로 SSH접속 및 JAVA 11설치, 타임존 변경, HOSTNAME 변경</title>
      <link>https://dsdsds.tistory.com/135</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;배포를 위해 AWS를 사용하기로 했다. 그래서 EC2 인스턴스도 생성하고 접속을 하려고 했는데 윈도우의 경우 프로그램이 필요하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/putty.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/putty.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1689943486598&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;PuTTY를 사용하여 Windows에서 Linux 인스턴스에 연결 - Amazon Elastic Compute Cloud&quot; data-og-description=&quot;프라이빗 키의 암호는 추가 보호 계층입니다. 프라이빗 키가 노출되더라도 암호 없이 사용할 수 없습니다. 암호문 사용의 단점은 인스턴스에 로그온하거나 인스턴스에 파일을 복사하기 위해 사&quot; data-og-host=&quot;docs.aws.amazon.com&quot; data-og-source-url=&quot;https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/putty.html&quot; data-og-url=&quot;https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/putty.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/exxFZf/hyTpcEFHAY/eNYeQwDuwR0sKwMPNLkwTk/img.png?width=800&amp;amp;height=782&amp;amp;face=0_0_800_782,https://scrap.kakaocdn.net/dn/dIHbaB/hyTnMAPVtg/C6yaGoSBGmaOMBnPk3IKH0/img.png?width=1000&amp;amp;height=605&amp;amp;face=0_0_1000_605,https://scrap.kakaocdn.net/dn/bmlmne/hyTo5yMc3q/t6sIG4bKwVbRf93muRfBGK/img.png?width=800&amp;amp;height=653&amp;amp;face=0_0_800_653&quot;&gt;&lt;a href=&quot;https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/putty.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/putty.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/exxFZf/hyTpcEFHAY/eNYeQwDuwR0sKwMPNLkwTk/img.png?width=800&amp;amp;height=782&amp;amp;face=0_0_800_782,https://scrap.kakaocdn.net/dn/dIHbaB/hyTnMAPVtg/C6yaGoSBGmaOMBnPk3IKH0/img.png?width=1000&amp;amp;height=605&amp;amp;face=0_0_1000_605,https://scrap.kakaocdn.net/dn/bmlmne/hyTo5yMc3q/t6sIG4bKwVbRf93muRfBGK/img.png?width=800&amp;amp;height=653&amp;amp;face=0_0_800_653');&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;PuTTY를 사용하여 Windows에서 Linux 인스턴스에 연결 - Amazon Elastic Compute Cloud&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;프라이빗 키의 암호는 추가 보호 계층입니다. 프라이빗 키가 노출되더라도 암호 없이 사용할 수 없습니다. 암호문 사용의 단점은 인스턴스에 로그온하거나 인스턴스에 파일을 복사하기 위해 사&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.aws.amazon.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 공식문서에서 친절하게 설명되어 있지만 나중에 또 할 일이 생길 것 같아 설명해보는걸로 ^^&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 PuTTY를 다운받는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PuTTY로 ec2 서버에 접속하기 위해선 .pem으로 끝나는 ec2 키페어 파일을 PuTTY 개인키로 변환해 주어야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;때문에 PuTTYgen.exe를 실행한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;446&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crKf4L/btsoxFd1GFa/nvpvbHRmG7sgz3rgxxUet1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crKf4L/btsoxFd1GFa/nvpvbHRmG7sgz3rgxxUet1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crKf4L/btsoxFd1GFa/nvpvbHRmG7sgz3rgxxUet1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrKf4L%2FbtsoxFd1GFa%2FnvpvbHRmG7sgz3rgxxUet1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;446&quot; height=&quot;202&quot; data-origin-width=&quot;446&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;import key를 눌러서 .pem 파일을 불러온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;키 생성이 완료되면 save해서 PuTTY개인키를 저장해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 후&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;445&quot; data-origin-height=&quot;435&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BmR5H/btsoxGxdunq/EbMFPfM6cEecZC3NuxitJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BmR5H/btsoxGxdunq/EbMFPfM6cEecZC3NuxitJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BmR5H/btsoxGxdunq/EbMFPfM6cEecZC3NuxitJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBmR5H%2FbtsoxGxdunq%2FEbMFPfM6cEecZC3NuxitJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;445&quot; height=&quot;435&quot; data-origin-width=&quot;445&quot; data-origin-height=&quot;435&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;호스트네임 앞에 ec2-user@를 넣은 이유는 Amazon Linux의 경우 유저네임이 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;ec2-user@&lt;/span&gt;이라서 기입했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 주소의 경우 재시작할 때마다 ip가 바뀌는 것이 싫어서 탄력적 ip주소를 입력했다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;386&quot; data-origin-height=&quot;175&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IRJ5D/btsoyYKFVK3/DIfzvpOBUpzZXDksvBAGO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IRJ5D/btsoyYKFVK3/DIfzvpOBUpzZXDksvBAGO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IRJ5D/btsoyYKFVK3/DIfzvpOBUpzZXDksvBAGO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIRJ5D%2FbtsoyYKFVK3%2FDIfzvpOBUpzZXDksvBAGO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;386&quot; height=&quot;175&quot; data-origin-width=&quot;386&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;aws에서 생성했던 인스턴스를 클릭 후 퍼블릭IPv4에 있는 주소를 입력하면 된다.&lt;/p&gt;
&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;449&quot; data-origin-height=&quot;331&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cabAi7/btsoxE0sRER/GehghxR9vkEjqmXpW5NvO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cabAi7/btsoxE0sRER/GehghxR9vkEjqmXpW5NvO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cabAi7/btsoxE0sRER/GehghxR9vkEjqmXpW5NvO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcabAi7%2FbtsoxE0sRER%2FGehghxR9vkEjqmXpW5NvO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;449&quot; height=&quot;331&quot; data-origin-width=&quot;449&quot; data-origin-height=&quot;331&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 경로로 들어가서 아까 만들었던 PuTTY 개인키를 불러온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 후 다시 session으로 돌아가 open을 누르면 접속 성공!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;565&quot; data-origin-height=&quot;173&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B8Cyo/btsowcRslor/EUdnkgGhDELLBBSAQSezG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B8Cyo/btsowcRslor/EUdnkgGhDELLBBSAQSezG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B8Cyo/btsowcRslor/EUdnkgGhDELLBBSAQSezG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB8Cyo%2FbtsowcRslor%2FEUdnkgGhDELLBBSAQSezG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;565&quot; height=&quot;173&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;565&quot; data-origin-height=&quot;173&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 화면이 뜬다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 자바를 설치해보자!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 프로젝트에서 11버전을 사용하고 있어서 11버전을 설치했다.&lt;/p&gt;
&lt;pre id=&quot;code_1689944418693&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo yum install java-11-amazon-corretto&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 설치했는지 확인하고 싶다면&lt;/p&gt;
&lt;pre id=&quot;code_1689944456615&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;java -version&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;을 입력해 확인해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;639&quot; data-origin-height=&quot;80&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLCo6c/btsov4TuZxm/myBi5mosTOIfCsVGjxRgHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLCo6c/btsov4TuZxm/myBi5mosTOIfCsVGjxRgHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLCo6c/btsov4TuZxm/myBi5mosTOIfCsVGjxRgHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLCo6c%2Fbtsov4TuZxm%2FmyBi5mosTOIfCsVGjxRgHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;639&quot; height=&quot;80&quot; data-origin-width=&quot;639&quot; data-origin-height=&quot;80&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;11버전이 잘 설치된 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 타임존을 변경해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EC2의 기본 타임존은 UTC이다. 이는 세계 표준시간으로 한국의 시간대가 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한국과는 9시간이나 차이가 나기 때문에 한국시간(KST)로 꼭 변경해야한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;295&quot; data-origin-height=&quot;38&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tASsv/btsox9lCprJ/9AGzyXAw6YCDyAxbGi74Uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tASsv/btsox9lCprJ/9AGzyXAw6YCDyAxbGi74Uk/img.png&quot; data-alt=&quot;date로 타임존을 확인할 수 있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tASsv/btsox9lCprJ/9AGzyXAw6YCDyAxbGi74Uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtASsv%2Fbtsox9lCprJ%2F9AGzyXAw6YCDyAxbGi74Uk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;295&quot; height=&quot;38&quot; data-origin-width=&quot;295&quot; data-origin-height=&quot;38&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;date로 타임존을 확인할 수 있다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1689944622101&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; sudo timedatectl set-timezone Asia/Seoul&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 명령어를 입력하면 KST로 변경된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인 방법은 date를 입력하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;316&quot; data-origin-height=&quot;36&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2oqJm/btsoz9kQ7D6/X7ly5MTCqo5frZ5YG6G1AK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2oqJm/btsoz9kQ7D6/X7ly5MTCqo5frZ5YG6G1AK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2oqJm/btsoz9kQ7D6/X7ly5MTCqo5frZ5YG6G1AK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2oqJm%2Fbtsoz9kQ7D6%2FX7ly5MTCqo5frZ5YG6G1AK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;316&quot; height=&quot;36&quot; data-origin-width=&quot;316&quot; data-origin-height=&quot;36&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 변경된 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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 data-ke-size=&quot;size16&quot;&gt;어느 서버인지 표현하기 위해 HOSTNAME을 변경해보자.&lt;/p&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_1689944829540&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo hostnamectl set-hostname 이름.localdomain&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;를 입력한 후 서버를 재부팅하면 변경되어 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;187&quot; data-origin-height=&quot;67&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bf1cQP/btsoyJGWFdj/K2Qp5i41kslIDigMnNPCbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bf1cQP/btsoyJGWFdj/K2Qp5i41kslIDigMnNPCbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bf1cQP/btsoyJGWFdj/K2Qp5i41kslIDigMnNPCbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbf1cQP%2FbtsoyJGWFdj%2FK2Qp5i41kslIDigMnNPCbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;187&quot; height=&quot;67&quot; data-origin-width=&quot;187&quot; data-origin-height=&quot;67&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1689945113560&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo vim /etc/hosts&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령어를 입력한 뒤&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1689945152018&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;127.0.0.1 등록한HOSTNAME&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;를 기존 문자 아래에 입력해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;365&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CtPrh/btsozTCl1ja/0ke06R4IQVmWGERYMkQ2Ik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CtPrh/btsozTCl1ja/0ke06R4IQVmWGERYMkQ2Ik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CtPrh/btsozTCl1ja/0ke06R4IQVmWGERYMkQ2Ik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCtPrh%2FbtsozTCl1ja%2F0ke06R4IQVmWGERYMkQ2Ik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;365&quot; height=&quot;82&quot; data-origin-width=&quot;365&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;마지막으로 &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;curl 호스트이름 을 입력했을 때&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;58&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAw50V/btsoxrf6sAB/QMHfd0RZqTLkBzjgokHnb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAw50V/btsoxrf6sAB/QMHfd0RZqTLkBzjgokHnb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAw50V/btsoxrf6sAB/QMHfd0RZqTLkBzjgokHnb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAw50V%2Fbtsoxrf6sAB%2FQMHfd0RZqTLkBzjgokHnb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;642&quot; height=&quot;58&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;58&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 문구가 나오면 잘 등록된 것이다 : )&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고출처:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/set-hostname.html#set-hostname-system&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/set-hostname.html#set-hostname-system&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://bbeomgeun.tistory.com/157&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://bbeomgeun.tistory.com/157&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://longtermsad.tistory.com/63&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://longtermsad.tistory.com/63&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/AWS</category>
      <author>토기발</author>
      <guid isPermaLink="true">https://dsdsds.tistory.com/135</guid>
      <comments>https://dsdsds.tistory.com/135#entry135comment</comments>
      <pubDate>Fri, 21 Jul 2023 22:20:14 +0900</pubDate>
    </item>
    <item>
      <title>[JPA] Validation failed for query for method public abstract 오류</title>
      <link>https://dsdsds.tistory.com/134</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;회원 탈퇴 시 회원이 작성한 게시글도 모두 삭제되게 하기 위해 postsRepository에 쿼리를 작성했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1689669815688&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    @Modifying
    @Query(&quot;DELETE FROM Posts WHERE user_id = :userId&quot;)
    void deletePostsByUserId(@Param(&quot;userId&quot;) Long id);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;posts 테이블에 user_id컬럼이 있어서 탈퇴 회원의 id를 받아 그 회원이 작성한 게시글을 삭제하는 쿼리이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 Validation failed for query for method public abstract 에러....&lt;/p&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_1689669433393&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    @Modifying
    @Query(value = &quot;DELETE FROM Posts WHERE user_id = :userId&quot; , nativeQuery = true)
    void deletePostsByUserId(@Param(&quot;userId&quot;) Long id);&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;이렇게 nativeQuery = true 를 입력하면 된다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구현 끝^^&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study</category>
      <author>토기발</author>
      <guid isPermaLink="true">https://dsdsds.tistory.com/134</guid>
      <comments>https://dsdsds.tistory.com/134#entry134comment</comments>
      <pubDate>Tue, 18 Jul 2023 17:49:34 +0900</pubDate>
    </item>
    <item>
      <title>[디자인패턴] MVC, MVP, MVVM 개념과 비교</title>
      <link>https://dsdsds.tistory.com/133</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;자바로 프로젝트를 할 때 가장 많이 사용했던 패턴이자 가장 유명한 패턴은 MVC패턴이었다. 그런데 MVC패턴 말고도 여기서 파생된 다른 패턴들이 있다. 오늘은 MVC, MVP, MVVM 패턴의 개념을 정리하고 비교해보기로 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;MVC (&lt;/b&gt;Model+View+Controller)&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Model :&amp;nbsp; 모델은 애플리케이션의 데이터와 비즈니스 로직을 담당한다. 데이터베이스와 상호 작용하거나 데이터를 조작하는 작업들이 이곳에서 처리된다.&lt;/li&gt;
&lt;li&gt;View : 뷰는 사용자에게 데이터를 시각적으로 표현하는 부분으로, 주로 사용자 인터페이스를 담당한다. 사용자의 입력을 받아 컨트롤러에 전달하거나 모델로부터 받은 데이터를 사용자에게 보여준다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Controller :&amp;nbsp; 컨트롤러는 사용자 입력을 받아 해당하는 모델을 호출하고, 결과 데이터를 받아 뷰를 업데이트한다. 사용자와 상호 작용하는 부분을 담당하며, 뷰와 모델을 중재하는 역할을 수행한다. 뷰와 모델 사이의 의존성을 없애기 위해 컨트롤러가 중간에서 데이터를 처리하고 제어하는 역할을 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소프트웨어 공학에서 사용되는 아키텍쳐 패턴으로 주로 Business logic과 Presentation logic을 분리하기 위해 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Business logic : 특정한 값을 얻기 위해 데이터 처리를 수행하는 응용프로그램의 일부, 각종 처리&lt;/li&gt;
&lt;li&gt;Presentation logic : 화면상의 디자인 구성을 위한 처리&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;동작&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 클라이언트의 요청&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. Controller 에서 요청에 대한 Model 호출&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. Model이 결과를 Controller에 보내줌&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. Controller가 Model 결과에 대한 화면 생성을 View에 전해줌&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. View가 결과화면을 Controller에 보냄&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. Controller가 클라이언트에 응답 보냄&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;MVP&lt;/b&gt;(Model + View + Presenter)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Model과 View는 동일하지만 Controller대신 &lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;Presenter가 생겼다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Presenter : 뷰로부터 사용자 입력을 받아 모델에 전달하고, 모델로부터 받은 데이터를 뷰에 업데이트하는 역할을 수행한다. Controller와 비슷하지만 뷰와 모델을 완전히 분리하여 테스트 용이성을 높인다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MVC패턴의 단점이었던 View와 Model의 의존성을 해결하고 테스트&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;동작&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. 클라이언트의 요청&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. View를 통해 받은 데이터를 Presenter에 요청&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. Presenter 는 Model에 데이터를 요청&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4. Model은 Presenter에서 요청받은 데이터를 응답&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;5. Presenter는 View에게 데이터 응답&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;6. View는 Presenter가 응답한 데이터를 이용해 화면 구성&lt;/p&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;MVVM&amp;nbsp;&lt;/b&gt;(Model-View-ViewModel)&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Controller대신 ViewModel을 사용한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ViewModel : 뷰모델은 뷰에 표시할 데이터를 가지고 있으며, 사용자 입력을 처리하여 모델에 전달한다. 뷰모델은 뷰와 매우 밀접하게 연결되어 있으며, 사용자 인터페이스를 표현하는데 필요한 데이터와 명령들을 뷰모델에서 제공한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;장점&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;뷰와 모델 사이의 분리: 뷰와 모델이 독립적으로 테스트 가능하고, 변경이 발생해도 서로에게 영향을 미치지 않는다.&lt;/li&gt;
&lt;li&gt;유연성과 재사용성: 뷰와 뷰모델을 분리함으로써, 뷰와 뷰모델을 서로 다른 컨텍스트에서 재사용할 수 있다.&lt;/li&gt;
&lt;li&gt;디자인과 개발의 분리: 디자이너와 개발자가 동시에 작업하기 용이하도록 뷰와 뷰모델을 분리하여 개발할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;color: #000000;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;동작&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 클라이언트의 요청&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. View에서 Commend패턴으로 View Model에 요청 전달&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. View Model이 Model에 데이터 요청&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. Model은 View Model에게 요청받은 데이터 응답&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. View Model은 응답받은 데이터를 가공하여 저장&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. View는 View Model과 Data Binding하여 화면을 나타냄&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;* Data Binding : 뷰(View)와 뷰모델(ViewModel) 사이의 데이터 흐름을 자동화하는 기술이다. 이를 통해 뷰의 UI 요소들은 뷰모델의 데이터와 실시간으로 동기화되며, 뷰모델의 데이터 변경 시 자동으로 뷰에 반영된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고출처&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://magi82.github.io/android-mvc-mvp-mvvm/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://magi82.github.io/android-mvc-mvp-mvvm/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://m.blog.naver.com/jysaa5/222068919728&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://m.blog.naver.com/jysaa5/222068919728&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/기술 및 용어 정리</category>
      <author>토기발</author>
      <guid isPermaLink="true">https://dsdsds.tistory.com/133</guid>
      <comments>https://dsdsds.tistory.com/133#entry133comment</comments>
      <pubDate>Sat, 15 Jul 2023 17:40:57 +0900</pubDate>
    </item>
  </channel>
</rss>