<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>3인칭시점</title>
    <link>https://shxrecord.tistory.com/</link>
    <description>Spring Boot와 Java를 중심으로 웹 애플리케이션을 개발하고 있습니다.</description>
    <language>ko</language>
    <pubDate>Mon, 8 Jun 2026 20:57:56 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>SHXL2</managingEditor>
    <image>
      <title>3인칭시점</title>
      <url>https://tistory1.daumcdn.net/tistory/2906470/attach/511b48bc1d18444289196bf0224bbbe9</url>
      <link>https://shxrecord.tistory.com</link>
    </image>
    <item>
      <title>생애최초 특별공급 분양, 중도금 대출부터 잔금대출까지 - 3편: 취득세 납부</title>
      <link>https://shxrecord.tistory.com/432</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://shxrecord.tistory.com/431&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;지난글&lt;/a&gt;에서 잔금까지의 과정들을 기록했고, 이제 취득세 납부까지 마쳤습니다. 취득세는 잔금일로부터 60일이내에 납부를 해야 합니다.&lt;/p&gt;
&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;주택취득상세명세서&lt;/li&gt;
&lt;li&gt;생애최초감면서신청서(해당자만)&lt;/li&gt;
&lt;li&gt;주민등본, 초본&lt;/li&gt;
&lt;li&gt;가족관계증명서&lt;/li&gt;
&lt;li&gt;공급계약서, 옵션, 발코니계약서&lt;/li&gt;
&lt;li&gt;잔금납부내역서, 옵션/발코니 납부내역서&lt;/li&gt;
&lt;li&gt;부동산신고필증&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;2006&quot; data-origin-height=&quot;1476&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beRuhq/dJMcafZCrWK/kEJn6elrPKDJ5WQnb7peHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beRuhq/dJMcafZCrWK/kEJn6elrPKDJ5WQnb7peHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beRuhq/dJMcafZCrWK/kEJn6elrPKDJ5WQnb7peHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeRuhq%2FdJMcafZCrWK%2FkEJn6elrPKDJ5WQnb7peHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2006&quot; height=&quot;1476&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;2006&quot; data-origin-height=&quot;1476&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;광명시청에 도착해 접수장소에 비치된 주택취득상세명세서를 작성하고 모든 서류를 제출했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서류 작성시 어떤 칸을 작성해야 하는지 샘플이 비치되어 있어 작성이 수월했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신고가 완료되면 아래와 같은 서류를 발급받게 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byRiN4/dJMcajt8Euk/bKso0VCHK6eSaP6KcRTiWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byRiN4/dJMcajt8Euk/bKso0VCHK6eSaP6KcRTiWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byRiN4/dJMcajt8Euk/bKso0VCHK6eSaP6KcRTiWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyRiN4%2FdJMcajt8Euk%2FbKso0VCHK6eSaP6KcRTiWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1122&quot; height=&quot;1440&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1122&quot; data-origin-height=&quot;1440&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;카드결제시 5개월까지 무이자가 가능하니 참고하세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2584&quot; data-origin-height=&quot;1384&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyN8Gd/dJMcadm9zox/oCJh6eWO0hMVxYiqPs9Ga1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyN8Gd/dJMcadm9zox/oCJh6eWO0hMVxYiqPs9Ga1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyN8Gd/dJMcadm9zox/oCJh6eWO0hMVxYiqPs9Ga1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyN8Gd%2FdJMcadm9zox%2FoCJh6eWO0hMVxYiqPs9Ga1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2584&quot; height=&quot;1384&quot; data-origin-width=&quot;2584&quot; data-origin-height=&quot;1384&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;2842&quot; data-origin-height=&quot;750&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUDud1/dJMcacV765b/4uX6mYOBRlAdOcYDvVlVw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUDud1/dJMcacV765b/4uX6mYOBRlAdOcYDvVlVw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUDud1/dJMcacV765b/4uX6mYOBRlAdOcYDvVlVw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUDud1%2FdJMcacV765b%2F4uX6mYOBRlAdOcYDvVlVw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2842&quot; height=&quot;750&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;2842&quot; data-origin-height=&quot;750&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;</description>
      <category>Tip</category>
      <category>생애최초취득세감면</category>
      <category>취득세납부</category>
      <category>취득세신고</category>
      <author>SHXL2</author>
      <guid isPermaLink="true">https://shxrecord.tistory.com/432</guid>
      <comments>https://shxrecord.tistory.com/432#entry432comment</comments>
      <pubDate>Tue, 13 Jan 2026 19:30:48 +0900</pubDate>
    </item>
    <item>
      <title>생애최초 특별공급 분양, 중도금 대출부터 잔금대출까지 - 2편: 잔금 대출</title>
      <link>https://shxrecord.tistory.com/431</link>
      <description>&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://shxrecord.tistory.com/429&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;지난 글&lt;/a&gt;에 이어 잔금 대출에 이어 입주증 발급과 키불출까지 어떤 과정이 있었는지 정리해봤습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 잔금 대출 실행&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잔금 대출 실행일은 12월 15일이었고, 실행일로부터 6일전쯤 은행 직원으로부터 연락을 받았습니다. 대출 실행일에 납부할 중도금, 중도금후불이자, 잔금, 옵션비(잔금) 내역을 요청하셨고, 사진과 함께 전달드렸습니다. 해당 내역들은 대출 실행일에 잔금 대출과 함께 모두 상환된다고 안내를 받았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 때, 중도금은 중도금 대출 은행에 연락해 대출 실행일(12.15) 기준으로 얼마인지 확인 후 전달합니다. (해당 일자까지 추가되는 이자로 인해)&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&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D2bKn/dJMcahCXqCO/JK6BP1Y3NM8CiUYST7SLAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D2bKn/dJMcahCXqCO/JK6BP1Y3NM8CiUYST7SLAk/img.png&quot; data-filename=&quot;IMG_4798.PNG&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;2436&quot; data-origin-width=&quot;1125&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D2bKn/dJMcahCXqCO/JK6BP1Y3NM8CiUYST7SLAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD2bKn%2FdJMcahCXqCO%2FJK6BP1Y3NM8CiUYST7SLAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1125&quot; height=&quot;2436&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BROKZ/dJMcacuTwZD/8xycBjGF0PRn2a4Du7Ot41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BROKZ/dJMcacuTwZD/8xycBjGF0PRn2a4Du7Ot41/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;2436&quot; data-filename=&quot;IMG_4800.PNG&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BROKZ/dJMcacuTwZD/8xycBjGF0PRn2a4Du7Ot41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBROKZ%2FdJMcacuTwZD%2F8xycBjGF0PRn2a4Du7Ot41%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1125&quot; height=&quot;2436&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 중도금 상환&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대출 실행일에는 중도금 대출 은행에 전화해 가상 계좌를 발급받아야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 계좌를 은행 직원분께 전달드리면 잔금을 상환하고 남은 금액에서 중도금을 상환하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*중도금 대출 상환 내역서는 입주증 발급을 위해 필요할 것으로 생각했지만 결과적으로는 필요하지 않았습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_4799.PNG&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;2436&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxUT8C/dJMcadgdanh/J5JpHoepxgxTjMkftMuJZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxUT8C/dJMcadgdanh/J5JpHoepxgxTjMkftMuJZ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxUT8C/dJMcadgdanh/J5JpHoepxgxTjMkftMuJZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxUT8C%2FdJMcadgdanh%2FJ5JpHoepxgxTjMkftMuJZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;535&quot; height=&quot;1158&quot; data-filename=&quot;IMG_4799.PNG&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;2436&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 입주증 발급과 키 불출&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 입주지원센터를 방문해 키를 받아 입주하게 됩니다. 그런데 키불출까지의 과정은 절대 순탄하지 않았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조합 확인 &amp;gt; 잔금 완납 확인 &amp;gt; 관리비 예치금 확인 &amp;gt; 키불출 순으로 진행이 됐는데, 조합 확인에서 무려 4시간이나 대기하는 일이 발생합니다...&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&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vwp0d/dJMcafZrOKS/VSkrS27hBm9DlpU4qftFpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vwp0d/dJMcafZrOKS/VSkrS27hBm9DlpU4qftFpK/img.png&quot; data-filename=&quot;blob&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;2250&quot; data-origin-width=&quot;3000&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vwp0d/dJMcafZrOKS/VSkrS27hBm9DlpU4qftFpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fvwp0d%2FdJMcafZrOKS%2FVSkrS27hBm9DlpU4qftFpK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3000&quot; height=&quot;2250&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cvLzRD/dJMcaaDPV5l/AjAEIJKDRe279n8QWY9oIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cvLzRD/dJMcaaDPV5l/AjAEIJKDRe279n8QWY9oIK/img.png&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot; data-is-animation=&quot;false&quot; data-filename=&quot;IMG_4791.png&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvLzRD/dJMcaaDPV5l/AjAEIJKDRe279n8QWY9oIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvLzRD%2FdJMcaaDPV5l%2FAjAEIJKDRe279n8QWY9oIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d0yple/dJMcaaDPV5k/KYK809lKLLNHzm4ncXO5g0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d0yple/dJMcaaDPV5k/KYK809lKLLNHzm4ncXO5g0/img.png&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot; data-is-animation=&quot;false&quot; data-filename=&quot;IMG_4792.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d0yple/dJMcaaDPV5k/KYK809lKLLNHzm4ncXO5g0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd0yple%2FdJMcaaDPV5k%2FKYK809lKLLNHzm4ncXO5g0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mszR4/dJMcad1z6Ni/a9R8dmMeiXLLdZaVfjFLbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mszR4/dJMcad1z6Ni/a9R8dmMeiXLLdZaVfjFLbK/img.png&quot; data-origin-width=&quot;4032&quot; data-origin-height=&quot;3024&quot; data-is-animation=&quot;false&quot; data-filename=&quot;IMG_4793.png&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mszR4/dJMcad1z6Ni/a9R8dmMeiXLLdZaVfjFLbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmszR4%2FdJMcad1z6Ni%2Fa9R8dmMeiXLLdZaVfjFLbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 마침내 키 불출과 여러 물품들을 전달받으며 모든 일정이 마무리 되었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_4795.png&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCsWZ6/dJMcafrB8Vj/PNkX8VgbXIQeOHyZv0ku90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCsWZ6/dJMcafrB8Vj/PNkX8VgbXIQeOHyZv0ku90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCsWZ6/dJMcafrB8Vj/PNkX8VgbXIQeOHyZv0ku90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCsWZ6%2FdJMcafrB8Vj%2FPNkX8VgbXIQeOHyZv0ku90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;4032&quot; data-filename=&quot;IMG_4795.png&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&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;</description>
      <category>Tip</category>
      <category>분양</category>
      <category>생애최초</category>
      <category>청약</category>
      <category>청약 과정</category>
      <category>청약 잔금 대출</category>
      <category>청약 중도금 대출</category>
      <author>SHXL2</author>
      <guid isPermaLink="true">https://shxrecord.tistory.com/431</guid>
      <comments>https://shxrecord.tistory.com/431#entry431comment</comments>
      <pubDate>Mon, 15 Dec 2025 22:10:03 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter]in_app_purchase 상품 조회하기</title>
      <link>https://shxrecord.tistory.com/430</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;운영 중인 앱에 광고 제거 기능을 요청받아, 광고 제거 상품을 기획했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Flutter 라이브러리 중 in_app_purchase를 사용하여 해당 기능을 구현하였고, 구현 과정 중 상품을 불러오지 못한 상황이 있었습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;※ 테스트 환경&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Flutter 3.29.3&lt;/li&gt;
&lt;li&gt;iOS&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;pre id=&quot;code_1765452480242&quot; class=&quot;r&quot; data-ke-language=&quot;r&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;storekit failed to get response from platform&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;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;유료 앱 계약&lt;/li&gt;
&lt;li&gt;상품 등록 여부&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;App Store Connect 상단 비즈니스 탭을 통해 &lt;b&gt;유료 앱 계약&lt;/b&gt;이 활성화되어야 하며, 이 과정을 진행하면서 해당 탭 내의 모든 설정의 상태가 활성화로 변경된 것을 확인해야 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-12-11 오후 8.24.41.png&quot; data-origin-width=&quot;2596&quot; data-origin-height=&quot;1372&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FfuOQ/dJMcadAun0O/wCUe5vwT4djLt4QA7kHcok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FfuOQ/dJMcadAun0O/wCUe5vwT4djLt4QA7kHcok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FfuOQ/dJMcadAun0O/wCUe5vwT4djLt4QA7kHcok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFfuOQ%2FdJMcadAun0O%2FwCUe5vwT4djLt4QA7kHcok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2596&quot; height=&quot;1372&quot; data-filename=&quot;스크린샷 2025-12-11 오후 8.24.41.png&quot; data-origin-width=&quot;2596&quot; data-origin-height=&quot;1372&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-12-11 오후 8.26.25.png&quot; data-origin-width=&quot;2736&quot; data-origin-height=&quot;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l3W8X/dJMcadAun0N/TRIIeDujqC1RD4kg1vpyik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l3W8X/dJMcadAun0N/TRIIeDujqC1RD4kg1vpyik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l3W8X/dJMcadAun0N/TRIIeDujqC1RD4kg1vpyik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl3W8X%2FdJMcadAun0N%2FTRIIeDujqC1RD4kg1vpyik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2736&quot; height=&quot;576&quot; data-filename=&quot;스크린샷 2025-12-11 오후 8.26.25.png&quot; data-origin-width=&quot;2736&quot; data-origin-height=&quot;576&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-12-11 오후 8.24.03.png&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;954&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bD9w9S/dJMcacBDOvG/Upcx3WvLYIMj5G90jrYa4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bD9w9S/dJMcacBDOvG/Upcx3WvLYIMj5G90jrYa4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bD9w9S/dJMcacBDOvG/Upcx3WvLYIMj5G90jrYa4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbD9w9S%2FdJMcacBDOvG%2FUpcx3WvLYIMj5G90jrYa4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1532&quot; height=&quot;954&quot; data-filename=&quot;스크린샷 2025-12-11 오후 8.24.03.png&quot; data-origin-width=&quot;1532&quot; data-origin-height=&quot;954&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;등록 후에는 아래와 같이 &lt;b&gt;메타데이터 누락됨&lt;/b&gt; 상태가 됩니다.&lt;/p&gt;
&lt;figure data-ke-type=&quot;image&quot; data-ke-style=&quot;floatRight&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2301&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/14IR5/dJMcaacKp9Q/yedMHYcK62pkJSncxcoqA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/14IR5/dJMcaacKp9Q/yedMHYcK62pkJSncxcoqA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/14IR5/dJMcaacKp9Q/yedMHYcK62pkJSncxcoqA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F14IR5%2FdJMcaacKp9Q%2FyedMHYcK62pkJSncxcoqA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2301&quot; height=&quot;138&quot; data-origin-width=&quot;2301&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;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;b&gt;제출 준비 완료&lt;/b&gt;로 변경됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2472&quot; data-origin-height=&quot;884&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bB1rhU/dJMcagYkHp4/8Q1k3jiu028YKR8LK2Mwk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bB1rhU/dJMcagYkHp4/8Q1k3jiu028YKR8LK2Mwk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bB1rhU/dJMcagYkHp4/8Q1k3jiu028YKR8LK2Mwk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbB1rhU%2FdJMcagYkHp4%2F8Q1k3jiu028YKR8LK2Mwk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2472&quot; height=&quot;884&quot; data-origin-width=&quot;2472&quot; data-origin-height=&quot;884&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2429&quot; data-origin-height=&quot;801&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/46bcH/dJMcac9qVLJ/8AKMgu7yZewjZKBODvwoRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/46bcH/dJMcac9qVLJ/8AKMgu7yZewjZKBODvwoRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/46bcH/dJMcac9qVLJ/8AKMgu7yZewjZKBODvwoRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F46bcH%2FdJMcac9qVLJ%2F8AKMgu7yZewjZKBODvwoRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2429&quot; height=&quot;801&quot; data-origin-width=&quot;2429&quot; data-origin-height=&quot;801&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 버전 생성시에는 &lt;b&gt;수동으로 버전 출시&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;2764&quot; data-origin-height=&quot;1134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C2Dsr/dJMcacayPnV/X3I9s6cUs8tExWsdjDsVd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C2Dsr/dJMcacayPnV/X3I9s6cUs8tExWsdjDsVd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C2Dsr/dJMcacayPnV/X3I9s6cUs8tExWsdjDsVd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC2Dsr%2FdJMcacayPnV%2FX3I9s6cUs8tExWsdjDsVd1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2764&quot; height=&quot;1134&quot; data-origin-width=&quot;2764&quot; data-origin-height=&quot;1134&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;심사 승인이후 상품이 정상적으로 조회되는 것을 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-12-11 오후 8.29.44.png&quot; data-origin-width=&quot;1688&quot; data-origin-height=&quot;206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9L9ep/dJMcagRyWGq/9xg5aPiWLbEePkcsrljHA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9L9ep/dJMcagRyWGq/9xg5aPiWLbEePkcsrljHA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9L9ep/dJMcagRyWGq/9xg5aPiWLbEePkcsrljHA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9L9ep%2FdJMcagRyWGq%2F9xg5aPiWLbEePkcsrljHA0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1688&quot; height=&quot;206&quot; data-filename=&quot;스크린샷 2025-12-11 오후 8.29.44.png&quot; data-origin-width=&quot;1688&quot; data-origin-height=&quot;206&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후에는 코드를 다시 정리해 기존에 올라가 있는 승인된 버전을 취소한 후에 빌드 및 다시 업로드하여 심사를 제출하면 됩니다.&lt;/p&gt;</description>
      <category>Framework/Flutter</category>
      <category>flutter in app purchase</category>
      <category>in app purhcase 상품 조회 안됨</category>
      <author>SHXL2</author>
      <guid isPermaLink="true">https://shxrecord.tistory.com/430</guid>
      <comments>https://shxrecord.tistory.com/430#entry430comment</comments>
      <pubDate>Fri, 12 Dec 2025 20:12:03 +0900</pubDate>
    </item>
    <item>
      <title>생애최초 특별공급 분양, 중도금 대출부터 잔금대출까지 - 1편</title>
      <link>https://shxrecord.tistory.com/429</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;2023년 생애최초 특별공급으로 분양받은 아파트에 이제 곧 입주를 앞두고 있습니다.&lt;/p&gt;
&lt;p data-end=&quot;465&quot; data-start=&quot;376&quot; data-ke-size=&quot;size16&quot;&gt;계약 체결부터 중도금 납부, 잔금 대출까지 처음 겪다 보니 헷갈렸던 부분도 많았는데요, 이번 글에서는 그 과정을 순서대로 정리해 보려 합니다. 앞으로 청약이나 입주를 준비하시는 분들께 조금이라도 참고가 되었으면 좋겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 당첨자 서류 접수: 2023.05.19 방문&lt;/b&gt;&lt;/h2&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;1125&quot; data-origin-height=&quot;2080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EgYm0/dJMcahJzajw/15k0hRBaL9naozkv4mPdX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EgYm0/dJMcahJzajw/15k0hRBaL9naozkv4mPdX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EgYm0/dJMcahJzajw/15k0hRBaL9naozkv4mPdX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEgYm0%2FdJMcahJzajw%2F15k0hRBaL9naozkv4mPdX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;511&quot; height=&quot;945&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;2080&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-end=&quot;315&quot; data-start=&quot;209&quot; data-ke-size=&quot;size16&quot;&gt;이때는 계약자 본인 확인 및 자격 증빙을 위한 서류를 반드시 준비해야 합니다. 또한 모델하우스 내에서 실제 평면과 마감 자재, 내부 구조 등을 직접 확인할 수 있습니다. 모델하우스에는 상담사분들이 상주하고 있는데, 추후 옵션 선택 시 도움이 될 만한 정보를 많이 제공해 주시니 궁금한 부분은 꼭 질문해보시길 추천드립니다.&lt;/p&gt;
&lt;p data-end=&quot;315&quot; data-start=&quot;209&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 계약 체결: 2023.05.27 방문&lt;/b&gt;&lt;/h2&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;1115&quot; data-origin-height=&quot;2094&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8NV2a/dJMcaaRcZDU/xkKAdUvcfMfKH9RQggYP9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8NV2a/dJMcaaRcZDU/xkKAdUvcfMfKH9RQggYP9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8NV2a/dJMcaaRcZDU/xkKAdUvcfMfKH9RQggYP9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8NV2a%2FdJMcaaRcZDU%2FxkKAdUvcfMfKH9RQggYP9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;512&quot; height=&quot;962&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1115&quot; data-origin-height=&quot;2094&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;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;체결일 당일에 옵션을 선택해야 하고, &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;발급받은 계좌로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;계약금(분양금의 10%)과 옵션 비용(10%)을 납부해야 합니다.&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이 시기쯤 분양을 받은 사람들끼리 단톡방이 개설됩니다. 해당 카톡방을 통해 정보들을 참고할 수 있으니 참여해두는 것을 추천합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이후 두 달 정도의 기간 동안 옵션 변경 및 공동명의 신청을 할 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 중도금 대출 실행: 2023.08.04 방문&lt;/b&gt;&lt;/h2&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;1111&quot; data-origin-height=&quot;2079&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceCp1A/dJMcacap4HD/XDxSJnoJYGp1YYWAUJrgpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceCp1A/dJMcacap4HD/XDxSJnoJYGp1YYWAUJrgpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceCp1A/dJMcacap4HD/XDxSJnoJYGp1YYWAUJrgpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceCp1A%2FdJMcacap4HD%2FXDxSJnoJYGp1YYWAUJrgpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;521&quot; height=&quot;975&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1111&quot; data-origin-height=&quot;2079&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&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 data-ke-size=&quot;size16&quot;&gt;계약 후 약 세 달쯤 지나면, 중도금 대출 자서(자필 서명) 안내 문자를 받게 됩니다. 문자에 따라 예약 후 다시 같은 장소로 방문하여 대출 신청 절차를 진행하게 됩니다.&lt;/p&gt;
&lt;p data-end=&quot;341&quot; data-start=&quot;251&quot; data-ke-size=&quot;size16&quot;&gt;이때 필요한 서류는 등본, 초본, 근로소득원천징수영수증 등이며, 은행별로 요구 서류가 조금씩 다를 수 있으니 사전에 확인하는 것이 좋습니다. 중도금은 집단대출 형태로 진행되기 때문에 대체로 큰 문제 없이 대출이 실행됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적으로 분양대금은 아래와 같은 방식으로 납부됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[분양대금]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계약금 10% / 중도금 60%(10% 나눠서 6회 진행) / 잔금 30%&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[발코니/플러스 옵션]&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계약금 10% / 중도금 60% / 잔금 30%&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대출이 실행되면 매 회차별로 대출 실행 안내 문자가 발송됩니다. 총 6회에 걸쳐 중도금이 순차적으로 집행되며, 각 회차별 대출 실행일과 금액은 문자 또는 은행 앱을 통해 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qRhMN/dJMb99SunDY/sIfrfmTqLdV1loK81MI4q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qRhMN/dJMb99SunDY/sIfrfmTqLdV1loK81MI4q0/img.png&quot; data-filename=&quot;blob&quot; data-origin-height=&quot;2090&quot; data-origin-width=&quot;1111&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;49.79&quot; style=&quot;width: 49.2113%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qRhMN/dJMb99SunDY/sIfrfmTqLdV1loK81MI4q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqRhMN%2FdJMb99SunDY%2FsIfrfmTqLdV1loK81MI4q0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1111&quot; height=&quot;2090&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cM7yKJ/dJMcahW6kk0/t16bvcBM8RQ5ru1Nay52fK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cM7yKJ/dJMcahW6kk0/t16bvcBM8RQ5ru1Nay52fK/img.png&quot; data-filename=&quot;blob&quot; data-origin-height=&quot;2080&quot; data-origin-width=&quot;1115&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.6259%;&quot; data-widthpercent=&quot;50.21&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cM7yKJ/dJMcahW6kk0/t16bvcBM8RQ5ru1Nay52fK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcM7yKJ%2FdJMcahW6kk0%2Ft16bvcBM8RQ5ru1Nay52fK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1115&quot; height=&quot;2080&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 사전점검: 2025.11.01 방문&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cd5Enw/dJMcacnXehx/WKvRvuJ8V4pdF2RmwnHDjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cd5Enw/dJMcacnXehx/WKvRvuJ8V4pdF2RmwnHDjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cd5Enw/dJMcacnXehx/WKvRvuJ8V4pdF2RmwnHDjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcd5Enw%2FdJMcacnXehx%2FWKvRvuJ8V4pdF2RmwnHDjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;546&quot; height=&quot;728&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&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;br /&gt;사전점검 이전에는 입주 박람회가 열리기도 하는데요. 행사 기간에는 여러 업체들이 참여해 할인된 금액으로 계약이 가능하니, 타 업체와 비교해볼 수 있는 좋은 기회가 됩니다. 가능하다면 꼭 방문해보시길 추천드립니다.&lt;/p&gt;
&lt;p data-end=&quot;406&quot; data-start=&quot;349&quot; data-ke-size=&quot;size16&quot;&gt;저희는 박람회 현장에서 사전점검 대행업체, 입주청소, 줄눈, 커튼 시공을 계약하고 왔습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사전점검은 오전 시간대에 예약하는 것을 추천드립니다.&lt;br /&gt;예약 후 방문 시, 담당자 동행을 통해 세대에 입장할 수 있는데 접수처에서 번호표를 발급받는 절차가 있습니다. 예를 들어 오전 10시에 예약했다면, 9시 30분쯤 도착하여 접수하는 것이 좋습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 업체에서는 하자 여부를 꼼꼼히 점검하기 시작합니다. 저희도 함께 살펴봤지만, 역시 전문가의 눈으로 보는 것과는 차이가 컸습니다..&lt;/p&gt;
&lt;p data-end=&quot;690&quot; data-start=&quot;608&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;690&quot; data-start=&quot;608&quot; data-ke-size=&quot;size16&quot;&gt;세대에 도착한 뒤에는 담당자가 바로 돌아가시기 때문에, 외출을 한다고 하면 집 안에서 문을 열어줄 사람이 있어야 합니다.&amp;nbsp;점검은 약 1시간 정도 소요되었으며, 평형이 넓을수록 시간이 더 걸릴 수 있습니다. 기다리는 동안을 대비해 돗자리를 챙겨가는 것도 좋습니다.&lt;/p&gt;
&lt;p data-end=&quot;690&quot; data-start=&quot;608&quot; data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;*공기가 좋지 않으니 마스크는 꼭 챙기는 것을 추천합니다.&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사전점검 시에는 건설사에서 지정한 은행의 상담 부스가 운영됩니다. 이때 상담을 꼭 받아두는 것이 좋습니다. 상담 시 연락처를 남기면 몇 주 후 서류 접수 관련 연락을 받을 수 있으며, 미리 명함을 받아 연락을 이어가는 것도 좋습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Y2UZ4/dJMcahbI9Yw/VM1eSHhShQnzo4MidS91Z1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Y2UZ4/dJMcahbI9Yw/VM1eSHhShQnzo4MidS91Z1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;3024&quot; data-origin-width=&quot;4032&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Y2UZ4/dJMcahbI9Yw/VM1eSHhShQnzo4MidS91Z1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FY2UZ4%2FdJMcahbI9Yw%2FVM1eSHhShQnzo4MidS91Z1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzgY8s/dJMcafEYVkC/phshQ8qR7BTG9TF4BNQ6l1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzgY8s/dJMcafEYVkC/phshQ8qR7BTG9TF4BNQ6l1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;3024&quot; data-origin-width=&quot;4032&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzgY8s/dJMcafEYVkC/phshQ8qR7BTG9TF4BNQ6l1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzgY8s%2FdJMcafEYVkC%2FphshQ8qR7BTG9TF4BNQ6l1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4032&quot; height=&quot;3024&quot;/&gt;&lt;/span&gt;&lt;/div&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;5. 잔금 대출 실행&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;상담사를 통해 대출에 필요한 서류들을 제출하고, 원하는 조건을 선택하게 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;*상환 기간, 상환 방식(원리금 균등, 원금 균등), 1년 거치 기간을 가질지, 변동/고정 금리 선택 등&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;1769&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pMFEm/dJMcacO1rHA/lQ1u6sULtfM9kGYjKBKwIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pMFEm/dJMcacO1rHA/lQ1u6sULtfM9kGYjKBKwIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pMFEm/dJMcacO1rHA/lQ1u6sULtfM9kGYjKBKwIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpMFEm%2FdJMcacO1rHA%2FlQ1u6sULtfM9kGYjKBKwIk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;545&quot; height=&quot;857&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;1769&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;br /&gt;이후 과정에 대해서는 다음 글에서 이어가겠습니다.&lt;/p&gt;</description>
      <category>Tip</category>
      <category>분양</category>
      <category>생애최초</category>
      <category>청약</category>
      <category>청약 과정</category>
      <category>청약 잔금 대출</category>
      <category>청약 중도금 대출</category>
      <author>SHXL2</author>
      <guid isPermaLink="true">https://shxrecord.tistory.com/429</guid>
      <comments>https://shxrecord.tistory.com/429#entry429comment</comments>
      <pubDate>Mon, 17 Nov 2025 22:37:09 +0900</pubDate>
    </item>
    <item>
      <title>집단대출 부동산신고필증 발급 방법</title>
      <link>https://shxrecord.tistory.com/428</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;집단대출시 필요한 서류로 &lt;b&gt;부동산신고필증&lt;/b&gt;이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단톡방에 입주민께서 알려주신 내용을 토대로 기록해봤으니 도움이 되었으면 좋겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. &lt;a href=&quot;https://rtms.molit.go.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;부동산거래관리시스템&lt;/a&gt; 접속&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사이트에 접속해 로그인합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-11-10 오후 10.00.01.png&quot; data-origin-width=&quot;2918&quot; data-origin-height=&quot;1522&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d0KHgv/dJMcaaKoeBB/LMGjVAXxkdvyyZdmusT7U0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d0KHgv/dJMcaaKoeBB/LMGjVAXxkdvyyZdmusT7U0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d0KHgv/dJMcaaKoeBB/LMGjVAXxkdvyyZdmusT7U0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd0KHgv%2FdJMcaaKoeBB%2FLMGjVAXxkdvyyZdmusT7U0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2918&quot; height=&quot;1522&quot; data-filename=&quot;스크린샷 2025-11-10 오후 10.00.01.png&quot; data-origin-width=&quot;2918&quot; data-origin-height=&quot;1522&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 부동산거래신고 - 신고이력조회&amp;nbsp;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상단 메뉴 중 부동산거래신고 - 신고이력조회 메뉴를 클릭합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검색기간에 조건을 &lt;b&gt;잔금지급일&lt;/b&gt;로 변경하고 기간을 수정합니다. (잔금시작일)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2494&quot; data-origin-height=&quot;1494&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c8VVRN/dJMcac9hjzR/31PZ3wxin904UHg17n8WU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c8VVRN/dJMcac9hjzR/31PZ3wxin904UHg17n8WU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c8VVRN/dJMcac9hjzR/31PZ3wxin904UHg17n8WU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc8VVRN%2FdJMcac9hjzR%2F31PZ3wxin904UHg17n8WU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2494&quot; height=&quot;1494&quot; data-origin-width=&quot;2494&quot; data-origin-height=&quot;1494&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 출력&lt;/b&gt;&lt;/h2&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;2102&quot; data-origin-height=&quot;406&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpN1v1/dJMcaboZKM9/bF4UsnS9sD1wopUSBPEsAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpN1v1/dJMcaboZKM9/bF4UsnS9sD1wopUSBPEsAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpN1v1/dJMcaboZKM9/bF4UsnS9sD1wopUSBPEsAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpN1v1%2FdJMcaboZKM9%2FbF4UsnS9sD1wopUSBPEsAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2102&quot; height=&quot;406&quot; data-origin-width=&quot;2102&quot; data-origin-height=&quot;406&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Tip</category>
      <category>부동산신고필증 발급 방법</category>
      <category>집단대출</category>
      <category>집단대출 부동산신고필증</category>
      <author>SHXL2</author>
      <guid isPermaLink="true">https://shxrecord.tistory.com/428</guid>
      <comments>https://shxrecord.tistory.com/428#entry428comment</comments>
      <pubDate>Mon, 10 Nov 2025 22:08:19 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter]홈 위젯 만들기 iOS편 - 2) 위젯 커스텀하기</title>
      <link>https://shxrecord.tistory.com/427</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://shxrecord.tistory.com/426&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;지난 글&lt;/a&gt;에 이어 생성된 위젯을 변경해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과물을 먼저 보면 가계부의 지출액과 수입/지출 추가로 이어지는 버튼을 추가해봤습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgde0h/btsONa6mjPR/QbPIkNc6lCwGQZeIbo6IC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgde0h/btsONa6mjPR/QbPIkNc6lCwGQZeIbo6IC1/img.png&quot; style=&quot;width: 49.41860465116279%;&quot; width=&quot;246&quot; height=&quot;533&quot; data-origin-width=&quot;1179&quot; data-origin-height=&quot;2556&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgde0h/btsONa6mjPR/QbPIkNc6lCwGQZeIbo6IC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcgde0h%2FbtsONa6mjPR%2FQbPIkNc6lCwGQZeIbo6IC1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1179&quot; height=&quot;2556&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDc2C0/btsOKTljejy/kRqsWPg5Sx8NDimiFHaGak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDc2C0/btsOKTljejy/kRqsWPg5Sx8NDimiFHaGak/img.png&quot; style=&quot;width: 49.41860465116279%;&quot; width=&quot;616&quot; height=&quot;1335&quot; data-origin-width=&quot;1179&quot; data-origin-height=&quot;2556&quot; data-is-animation=&quot;false&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDc2C0/btsOKTljejy/kRqsWPg5Sx8NDimiFHaGak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDc2C0%2FbtsOKTljejy%2FkRqsWPg5Sx8NDimiFHaGak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1179&quot; height=&quot;2556&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 위젯 커스텀&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Xcode를 실행하여 위젯 코드를 수정해봅니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1818&quot; data-origin-height=&quot;1676&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZqCLU/btsOLDPEkzk/OtFBPgSA0AMp9bNgf8xMX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZqCLU/btsOLDPEkzk/OtFBPgSA0AMp9bNgf8xMX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZqCLU/btsOLDPEkzk/OtFBPgSA0AMp9bNgf8xMX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZqCLU%2FbtsOLDPEkzk%2FOtFBPgSA0AMp9bNgf8xMX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1818&quot; height=&quot;1676&quot; data-origin-width=&quot;1818&quot; data-origin-height=&quot;1676&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;처음 코드를 보면 SimpleEntry가 존재하는데, 여기에 데이터를 추가로 받기 위해 &lt;b&gt;content&lt;/b&gt; 파라미터를 추가합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1750572814038&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;struct SimpleEntry: TimelineEntry {
    let date: Date
    let emoji: String
    let content: String
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SimpleEntry를 호출하는 코드에 content 파라미터를 추가합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TimelineProvider안에 getSnapshot과 getTimeline은 다음과 같은 상황에 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;getSnapshot&lt;/b&gt;: 위젯 추가시, 위젯 리스트에 표시될 때 실행되는 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;getTimeline&lt;/b&gt;: 위젯 추가후 홈 화면에 표시될 때 실행되는 함수&lt;/p&gt;
&lt;pre id=&quot;code_1750573658680&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;struct Provider: TimelineProvider {
    func placeholder(in context: Context) -&amp;gt; SimpleEntry {
        SimpleEntry(date: Date(), emoji: &quot; &quot;, content: &quot;1&quot;)
    }

    // 위젯 추가시 보이는 화면, 위젯 리스트 선택
    func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) -&amp;gt; ()) {
        let entry = SimpleEntry(date: Date(), emoji: &quot; &quot;, content: &quot;0&quot;)
        completion(entry)
    }

    // 메인에 조회되는 위젯
    func getTimeline(in context: Context, completion: @escaping (Timeline&amp;lt;Entry&amp;gt;) -&amp;gt; ()) {
        var entries: [SimpleEntry] = []
        let userDefault = UserDefaults(suiteName: &quot;group.woori.homeWidget&quot;)
        let amount = userDefault?.string(forKey: &quot;WooriWidgetKey&quot;) ?? &quot;0&quot;

        let entryDate = Date()
        let entry = SimpleEntry(date: entryDate, emoji: &quot; &quot;, content: amount)
        entries.append(entry)

        let timeline = Timeline(entries: entries, policy: .atEnd)
        completion(timeline)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[코드설명]&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;let userDefault = UserDefaults(suiteName: &quot;group.woori.homeWidget&quot;)&lt;br /&gt;let amount = userDefault?.string(forKey: &quot;WooriWidgetKey&quot;) ?? &quot;0&quot;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;922&quot; data-start=&quot;849&quot;&gt;App Group(group.woori.homeWidget)을 사용하여 앱과 위젯 간 데이터 공유를 가능하게 합니다.&lt;/li&gt;
&lt;li data-end=&quot;972&quot; data-start=&quot;923&quot;&gt;&lt;b&gt;WooriWidgetKey&lt;/b&gt;는 Flutter에서 저장한 금액 문자열의 Key입니다. 이 값을 통해 가계부 지출액을 받아와 위젯에 보여줍니다.&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;VStack, HStack, Text 등을 활용하여 기본 위젯을 꾸몄습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앱로고를 추가하기 위해 Image를 사용했고, Assets에 이미지를 추가하고 이미지명을 호출하면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2008&quot; data-origin-height=&quot;1148&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c2xXOe/btsOKTli26A/dSuGxS4ctUbmn7jNPK37o1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c2xXOe/btsOKTli26A/dSuGxS4ctUbmn7jNPK37o1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c2xXOe/btsOKTli26A/dSuGxS4ctUbmn7jNPK37o1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc2xXOe%2FbtsOKTli26A%2FdSuGxS4ctUbmn7jNPK37o1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;568&quot; height=&quot;325&quot; data-origin-width=&quot;2008&quot; data-origin-height=&quot;1148&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1750574656498&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;struct WooriWidgetEntryView : View {
    var entry: Provider.Entry
    let buttonColor = Color.white.opacity(0.18) // 원하는 투명도에 맞게 조절
    
    var body: some View {
        let buttonColor = Color.white.opacity(0.18)
        
        VStack(alignment: .leading, spacing: 4) {
            // 1. 앱 로고
            HStack(alignment: .center, spacing: 8) {
                Image(&quot;AppLogo&quot;)
                    .resizable()
                    .aspectRatio(contentMode: .fit)
                    .frame(width: 32, height: 32)
                Text(&quot;이번달 지출&quot;)
                    .font(.system(size: 12, weight: .bold, design: .rounded))
                    .foregroundColor(.white)
            }
            .padding(.leading, 4)
            
            // 2. 금액
            Text(entry.content)
                .font(.system(size: 22, weight: .bold, design: .rounded))
                .foregroundColor(.white)
                .frame(maxWidth: .infinity, alignment: .center)
            
            // 3. 버튼
            HStack(spacing: 12) {
                Link(destination: URL(string: &quot;wooribudget://addincome&quot;)!) {
                    HStack {
                        Text(&quot; &quot;)
                        Text(&quot;수입 추가&quot;)
                            .font(.system(size: 18, design: .rounded))
                    }
                    .foregroundColor(.white)
                    .frame(maxWidth: .infinity, minHeight: 44)
                    .background(buttonColor)
                    .cornerRadius(12)
                }
                Link(destination: URL(string: &quot;wooribudget://addexpense&quot;)!) {
                    HStack {
                        Text(&quot; &quot;)
                        Text(&quot;지출 추가&quot;)
                            .font(.system(size: 18, design: .rounded))
                    }
                    .foregroundColor(.white)
                    .frame(maxWidth: .infinity, minHeight: 44)
                    .background(buttonColor)
                    .cornerRadius(12)
                }
            }
            .padding(.top, 8)
        }
        .padding(.vertical, 6)
        .cornerRadius(24)
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[코드설명]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1750575426274&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;HStack(spacing: 12) {
    Link(destination: URL(string: &quot;wooribudget://addincome&quot;)!) {
        // 수입 추가 버튼
    }
    Link(destination: URL(string: &quot;wooribudget://addexpense&quot;)!) {
        // 지출 추가 버튼
    }
}
.padding(.top, 8)&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;각 버튼 클릭 시, &lt;b&gt;wooribudget&lt;/b&gt;://addincome 또는 &lt;b&gt;wooribudget&lt;/b&gt;://addexpense 딥링크를 호출해 Flutter 앱을 엽니다.&lt;/li&gt;
&lt;li&gt;링크 사용을 위해 Info.plist에 CFBundleURLTypes - CFBundleURLSchemes에 &lt;b&gt;wooribudget&lt;/b&gt;을 추가합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1750575522448&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;key&amp;gt;CFBundleURLTypes&amp;lt;/key&amp;gt;
	&amp;lt;array&amp;gt;
		&amp;lt;dict&amp;gt;
			&amp;lt;key&amp;gt;CFBundleTypeRole&amp;lt;/key&amp;gt;
			&amp;lt;string&amp;gt;Editor&amp;lt;/string&amp;gt;
			&amp;lt;key&amp;gt;CFBundleURLSchemes&amp;lt;/key&amp;gt;
			&amp;lt;array&amp;gt;
                &amp;lt;string&amp;gt;wooribudget&amp;lt;/string&amp;gt;
			&amp;lt;/array&amp;gt;
		&amp;lt;/dict&amp;gt;
	&amp;lt;/array&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;iOS 위젯 확장의 메인 진입점으로, 실제로 홈 화면이나 위젯 갤러리에서 보여질 위젯의 구성과 메타데이터를 정의합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 위젯은 3가지 종류의 모양이 존재하는데, 가로로 긴 버전만 제공하기 위해 &lt;b&gt;supportedFamilies&lt;/b&gt;에 &lt;b&gt;systemMedium&lt;/b&gt;을 추가했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1750575649230&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;struct WooriWidget: Widget {
    let kind: String = &quot;WooriWidget&quot;
    let bgColor = Color(red: 95/255, green: 148/255, blue: 247/255)

    var body: some WidgetConfiguration {
        StaticConfiguration(kind: kind, provider: Provider()) { entry in
            if #available(iOS 17.0, *) {
                WooriWidgetEntryView(entry: entry)
                        .containerBackground(bgColor, for: .widget)
            } else {
                WooriWidgetEntryView(entry: entry)
                        .padding()
                        .background(bgColor)
            }
        }
        .configurationDisplayName(&quot;우리&quot;)  // 미리보기에 표시되는 문구
        .description(&quot;우리가 쓰려고 만든 공유가계부&quot;)
        .supportedFamilies([.systemMedium]) // 가로로 긴 버전만 제공
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[코드설명]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1750576057711&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let kind: String = &quot;WooriWidget&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-start=&quot;365&quot; data-end=&quot;381&quot;&gt;위젯의 고유 식별자입니다.&lt;/li&gt;
&lt;li data-start=&quot;382&quot; data-end=&quot;443&quot;&gt;Flutter에서 업데이트를 요청할 때 사용하는 androidName, iOSName에 해당합니다.&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 앱 내부 데이터 연동하기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딥링크 사용을 위해 uni_link를 업데이트합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1750576323720&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;flutter pub add uni_links&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;Flutter에서 위젯으로 연결하기 위한 키를 설정합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;groupId&lt;/b&gt;는 Widget 추가시 입력한 App Groups의 이름입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1749647544507&quot; class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const groupId = &quot;group.woori.homeWidget&quot;;
const widgetName = &quot;WooriWidget&quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2128&quot; data-origin-height=&quot;1048&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buHG7b/btsOKQ265gH/NCDUj08QR8KSsvcEhykUKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buHG7b/btsOKQ265gH/NCDUj08QR8KSsvcEhykUKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buHG7b/btsOKQ265gH/NCDUj08QR8KSsvcEhykUKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuHG7b%2FbtsOKQ265gH%2FNCDUj08QR8KSsvcEhykUKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2128&quot; height=&quot;1048&quot; data-origin-width=&quot;2128&quot; data-origin-height=&quot;1048&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;앱 진입시 지출액을 위젯으로 보여주기 위해 main.dart에 아래와 같이 함수를 추가했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1750577244531&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void setHomeWidgetAmount(total) async {
  await HomeWidget.setAppGroupId(groupId);
  await HomeWidget.saveWidgetData&amp;lt;String&amp;gt;(
      'WooriWidgetKey',
      '${total &amp;gt;= 0 ? '+' : '-'}${LanguageUtil.money(
        language: language,
        money: FormatUtil.formatCurrency(total),
      )}');

  await HomeWidget.updateWidget(
      androidName: widgetName, iOSName: widgetName);
}

setHomeWidgetAmount(total);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[코드설명]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1750577487191&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  await HomeWidget.setAppGroupId(groupId);&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;groupId는 앱과 위젯 확장 모두 동일한 Group ID를 써야 합니다.&lt;/li&gt;
&lt;li data-start=&quot;470&quot; data-end=&quot;520&quot;&gt;&lt;b&gt;iOS에서 앱과 위젯 간 데이터를 공유하기 위해 App Group을 설정&lt;/b&gt;합니다.&lt;/li&gt;
&lt;li data-start=&quot;605&quot; data-end=&quot;630&quot;&gt;Android에서는 내부적으로 무시됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1750577567190&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;await HomeWidget.saveWidgetData&amp;lt;String&amp;gt;(
      'WooriWidgetKey',
      '${total &amp;gt;= 0 ? '+' : '-'}${LanguageUtil.money(
        language: language,
        money: FormatUtil.formatCurrency(total),
      )}');&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 값은 Swift 위젯에서 UserDefaults(suiteName:)로 읽어와 entry.content로 표시됩니다.(1. 참고)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 수입/지출 버튼 클릭시 호출되는 딥링크 처리를 위해 메인 화면에 코드를 수정합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;_handleInitailUri()&lt;/b&gt; 함수는 앱이 최초 실행될 때 딥링크 URI를 받아 처리합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;StorageService().getInitialUriProcess()를 체크하는 이유는 딥링크 중복 호출을 방지하기 위해서였습니다.(앱 종료 상태에서 딥링크를 통해 화면이 이동되고, 메인 화면으로 왔을 때 다시 딥링크 URI로 이동되는 현상)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;체크하는 방법은 SharedPreferences를 통해 호출 플래그값 true/false로 관리했습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1750577730574&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;StreamSubscription? _sub;

  @override
  void initState() {
    super.initState();

    // 앱 실행 시 최초 딥링크 처리
    _handleInitialUri();

    // 위젯 수입,지출 버튼 클릭 리스너
    _sub = uriLinkStream.listen((Uri? uri) {
      if (uri != null) {
        _handleUri(uri);
      }
    }, onError: (err) {});

    WidgetsBinding.instance.addPostFrameCallback((_) async {
      StorageService().saveInitialUri(false);
    });
  }

  Future&amp;lt;void&amp;gt; _handleInitialUri() async {
    final isHandled = await StorageService().getInitialUriProcess();
    if (isHandled) return;

    try {
      final uri = await getInitialUri();
      if (uri != null) {
        _handleUri(uri);
        StorageService().saveInitialUri(true);
      }
    } catch (e) {
      // 에러 핸들링
    }
  }

  Future&amp;lt;void&amp;gt; _handleUri(Uri uri) async {
    String type = uri.host; //addincome(수입), addexpense(지출)
    String date = FormatUtil.convertDateFormat(DateTime.now());
    Token tokenInfo = await StorageService().getTokenInfo();

    Map&amp;lt;String, String&amp;gt; queryParams = {
      'userNo': '${tokenInfo.userNo}',
      'date': date,
      'type': type
    };
    Uri pageUri = Uri(
      path: '/ledger/create/nstep1',
      queryParameters: queryParams,
    );

    context.go(pageUri.toString());
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[코드설명]&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1750578194089&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;_sub = uriLinkStream.listen((Uri? uri) {
  if (uri != null) {
    _handleUri(uri);
  }
}, onError: (err) {});&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;874&quot; data-start=&quot;805&quot;&gt;앱이 이미 실행 중일 때 위젯에서 wooribudget://addincome 같은 딥링크를 보내면 여기서 처리됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테스트 결과를 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[시뮬레이션 실행 결과]&lt;/p&gt;

            &lt;figure class=&quot;unsupported component-kakaotv&quot; contenteditable=&quot;false&quot; style=&quot;background:#000;margin:16px 0;min-height:72px;padding:10px 16px;display:flex;align-items:center;justify-content:center;text-align:center;box-sizing:border-box;width:100%;max-width:100%;&quot;&gt;
                &lt;p contenteditable=&quot;false&quot; style=&quot;margin:0;color:#8a8a8a;font-size:13px;line-height:1.6;user-select:none;pointer-events:none;&quot;&gt;동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.&lt;/p&gt;
            &lt;/figure&gt;
        
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;참고자료&lt;/blockquote&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=fSbjrwGqwxU&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cj5ij0/hyY33DRJnu/LPbBeBOWEJShjxNela5oQ1/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360,https://scrap.kakaocdn.net/dn/Mdb9G/hyY8VDYpJ2/SLSaF1kGubQmeB9psPtdAK/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360&quot; data-video-width=&quot;480&quot; data-video-height=&quot;360&quot; data-video-origin-width=&quot;480&quot; data-video-origin-height=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;Flutter Home Screen Widget(HomeWidget) for IOS - 아이폰 모바일 홈 화면 위젯&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/fSbjrwGqwxU&quot; width=&quot;480&quot; height=&quot;360&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;</description>
      <category>Framework/Flutter</category>
      <category>flutter home widget 만들기</category>
      <category>flutter ios home widget</category>
      <category>flutter 홈 위젯</category>
      <author>SHXL2</author>
      <guid isPermaLink="true">https://shxrecord.tistory.com/427</guid>
      <comments>https://shxrecord.tistory.com/427#entry427comment</comments>
      <pubDate>Sun, 22 Jun 2025 16:54:11 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter]홈 위젯 만들기 iOS편 - 1) 위젯 추가하기</title>
      <link>https://shxrecord.tistory.com/426</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;최근 개발한 가계부에 앱에 &quot;위젯 기능이 있으면 좋겠다&quot;는 리뷰가 달렸습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위젯 기능은 언젠가 한번쯤 만들어보고 싶었는데 좋은 기회다 싶어 추가해보려 합니다.(&lt;a href=&quot;https://shxrecord.tistory.com/405&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;여기&lt;/a&gt;서 가계부 개발 과정을 확인하실 수 있습니다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;※&amp;nbsp;테스트 환경&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Flutter 3.27.1&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 패키지 추가&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1749613083835&quot; class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;flutter pub add home_widget&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. Widget Extension 추가&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Xcode를 실행하고 상단 메뉴의 &lt;b&gt;Editor - Add Target&lt;/b&gt; 클릭 후 &lt;b&gt;Widget Extension&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;1516&quot; data-origin-height=&quot;1088&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbTqnq/btsOuFAgEtT/uAgZ4lRyng2weVWhRcZjCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbTqnq/btsOuFAgEtT/uAgZ4lRyng2weVWhRcZjCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbTqnq/btsOuFAgEtT/uAgZ4lRyng2weVWhRcZjCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbTqnq%2FbtsOuFAgEtT%2FuAgZ4lRyng2weVWhRcZjCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1516&quot; height=&quot;1088&quot; data-origin-width=&quot;1516&quot; data-origin-height=&quot;1088&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;추가 후에 TARTGETS - Runner가 클릭된 상태로 &lt;b&gt;Build Phases&lt;/b&gt; 칸으로 이동합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; Embed Foundation Extensions (1 item)&lt;/b&gt; 아이템이 추가되어있는데 드래그앤드롭으로 Embed Frameworks 위로 이동시킵니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2038&quot; data-origin-height=&quot;1156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NUuDP/btsOwE08GLL/sy8Hlj3txFNxlKtRZuATKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NUuDP/btsOwE08GLL/sy8Hlj3txFNxlKtRZuATKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NUuDP/btsOwE08GLL/sy8Hlj3txFNxlKtRZuATKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNUuDP%2FbtsOwE08GLL%2Fsy8Hlj3txFNxlKtRZuATKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2038&quot; height=&quot;1156&quot; data-origin-width=&quot;2038&quot; data-origin-height=&quot;1156&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;새로 추가된 위젯 타겟을 클릭 후 Signing &amp;amp; Capabilities 칸으로 이동합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;App Groups&lt;/b&gt;의 &lt;b&gt;+&lt;/b&gt; 버튼을 클릭해 컨테이너를 생성합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oi05B/btsOudRPfRR/zkfjsWpbkB2xWL7845AUMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oi05B/btsOudRPfRR/zkfjsWpbkB2xWL7845AUMK/img.png&quot; data-origin-width=&quot;2002&quot; data-origin-height=&quot;1118&quot; data-is-animation=&quot;false&quot; style=&quot;width: 52.7129%; margin-right: 10px;&quot; data-widthpercent=&quot;53.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oi05B/btsOudRPfRR/zkfjsWpbkB2xWL7845AUMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Foi05B%2FbtsOudRPfRR%2FzkfjsWpbkB2xWL7845AUMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2002&quot; height=&quot;1118&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zYDB7/btsOuqQVxGT/vzHcPU3nxfamj3BxoRKYoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zYDB7/btsOuqQVxGT/vzHcPU3nxfamj3BxoRKYoK/img.png&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;628&quot; data-is-animation=&quot;false&quot; style=&quot;width: 46.1243%;&quot; data-widthpercent=&quot;46.67&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zYDB7/btsOuqQVxGT/vzHcPU3nxfamj3BxoRKYoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzYDB7%2FbtsOuqQVxGT%2FvzHcPU3nxfamj3BxoRKYoK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;984&quot; height=&quot;628&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 Runner 타겟으로 이동해 App Groups를 추가합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2036&quot; data-origin-height=&quot;1246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oTk6n/btsOueJ1A85/ajS0XQNzbY60MQBdLl8lQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oTk6n/btsOueJ1A85/ajS0XQNzbY60MQBdLl8lQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oTk6n/btsOueJ1A85/ajS0XQNzbY60MQBdLl8lQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoTk6n%2FbtsOueJ1A85%2FajS0XQNzbY60MQBdLl8lQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2036&quot; height=&quot;1246&quot; data-origin-width=&quot;2036&quot; data-origin-height=&quot;1246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 생성한 위젯 타겟의 컨테이너를 클릭해 활성화시켜줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8Cofg/btsOuPv6c1m/kkH19iAb8ztDhkPvDXltK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8Cofg/btsOuPv6c1m/kkH19iAb8ztDhkPvDXltK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8Cofg/btsOuPv6c1m/kkH19iAb8ztDhkPvDXltK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8Cofg%2FbtsOuPv6c1m%2FkkH19iAb8ztDhkPvDXltK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1136&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1136&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. 테스트&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시뮬레이터를 통해 테스트를 진행해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[시뮬레이터 실행 결과]&lt;/p&gt;

            &lt;figure class=&quot;unsupported component-kakaotv&quot; contenteditable=&quot;false&quot; style=&quot;background:#000;margin:16px 0;min-height:72px;padding:10px 16px;display:flex;align-items:center;justify-content:center;text-align:center;box-sizing:border-box;width:100%;max-width:100%;&quot;&gt;
                &lt;p contenteditable=&quot;false&quot; style=&quot;margin:0;color:#8a8a8a;font-size:13px;line-height:1.6;user-select:none;pointer-events:none;&quot;&gt;동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.&lt;/p&gt;
            &lt;/figure&gt;
        
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;참고자료&lt;/blockquote&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=fSbjrwGqwxU&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cj5ij0/hyY33DRJnu/LPbBeBOWEJShjxNela5oQ1/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360,https://scrap.kakaocdn.net/dn/Mdb9G/hyY8VDYpJ2/SLSaF1kGubQmeB9psPtdAK/img.jpg?width=480&amp;amp;height=360&amp;amp;face=0_0_480_360&quot; data-video-width=&quot;480&quot; data-video-height=&quot;360&quot; data-video-origin-width=&quot;480&quot; data-video-origin-height=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;Flutter Home Screen Widget(HomeWidget) for IOS - 아이폰 모바일 홈 화면 위젯&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/fSbjrwGqwxU&quot; width=&quot;480&quot; height=&quot;360&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음편에서는 위젯을 통해 &lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;앱에 데이터를 보여주는 과정을 알아보겠습니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Framework/Flutter</category>
      <category>flutter home widget ios</category>
      <category>flutter home widget 만들기</category>
      <author>SHXL2</author>
      <guid isPermaLink="true">https://shxrecord.tistory.com/426</guid>
      <comments>https://shxrecord.tistory.com/426#entry426comment</comments>
      <pubDate>Wed, 11 Jun 2025 12:49:46 +0900</pubDate>
    </item>
    <item>
      <title>[Python]OpenAI API 연결하기</title>
      <link>https://shxrecord.tistory.com/425</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;※ 테스트 환경&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;MacOS m1&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. API 키 만들기&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://platform.openai.com/docs/api-reference/introduction&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;OpenAI&lt;/a&gt; 접속 후 organization settings를 클릭해 API 키를 생성합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2788&quot; data-origin-height=&quot;1340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj8CTl/btsOkUkDQg2/LGxP1rgoO2DAtpY8mal23K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj8CTl/btsOkUkDQg2/LGxP1rgoO2DAtpY8mal23K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj8CTl/btsOkUkDQg2/LGxP1rgoO2DAtpY8mal23K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj8CTl%2FbtsOkUkDQg2%2FLGxP1rgoO2DAtpY8mal23K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2788&quot; height=&quot;1340&quot; data-origin-width=&quot;2788&quot; data-origin-height=&quot;1340&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;API 키는 최초 생성 후 다시 볼 수 없으니 따로 저장해두어야 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjx6IC/btsOlMlvy3p/OYQIrmzk0wjOjPKSHl7kM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjx6IC/btsOlMlvy3p/OYQIrmzk0wjOjPKSHl7kM1/img.png&quot; data-is-animation=&quot;false&quot; data-origin-height=&quot;1472&quot; data-origin-width=&quot;2972&quot; style=&quot;width: 62.6488%; margin-right: 10px;&quot; data-widthpercent=&quot;63.39&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjx6IC/btsOlMlvy3p/OYQIrmzk0wjOjPKSHl7kM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbjx6IC%2FbtsOlMlvy3p%2FOYQIrmzk0wjOjPKSHl7kM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2972&quot; height=&quot;1472&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btvrD3/btsOlfPdb78/b5aKmIbarBtoQSIYXvjlZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btvrD3/btsOlfPdb78/b5aKmIbarBtoQSIYXvjlZk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;968&quot; data-origin-height=&quot;830&quot; data-filename=&quot;스크린샷 2025-06-01 오후 12.46.46.png&quot; style=&quot;width: 36.1884%;&quot; data-widthpercent=&quot;36.61&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btvrD3/btsOlfPdb78/b5aKmIbarBtoQSIYXvjlZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtvrD3%2FbtsOlfPdb78%2Fb5aKmIbarBtoQSIYXvjlZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;968&quot; height=&quot;830&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성한 API 키는 환경변수로 등록합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1748748469446&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 환경변수 편집
vi ~/.zshrc&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1748750515983&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# OpenAI Key
export OPENAI_API_KEY='sk-,...V0QA'&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1748748505665&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 환경변수 적용
source ~/.zshrc&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;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. API 호출 테스트&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;API 키 등록이 되었으면 &lt;b&gt;openai, os&lt;/b&gt; 라이브러리를 임포트하여 실행해볼 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1748750149238&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from openai import OpenAI
import os

OPENAI_API_KEY = os.environ.get(&quot;OPENAI_API_KEY&quot;)

client = OpenAI(
    api_key=OPENAI_API_KEY
)

response = client.responses.create(
    model=&quot;gpt-3.5-turbo&quot;,
    input=&quot;농산물 실거래가 조회앱에서 ChatGPT를 사용할만한 기능 뭐가 있을까&quot;
)

print(response.output_text)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[결과]&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-06-01 오후 12.56.05.png&quot; data-origin-width=&quot;2632&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cD1A6D/btsOlynxK23/xxNlLl1UwO4K2bgTQ51dg0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cD1A6D/btsOlynxK23/xxNlLl1UwO4K2bgTQ51dg0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cD1A6D/btsOlynxK23/xxNlLl1UwO4K2bgTQ51dg0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcD1A6D%2FbtsOlynxK23%2FxxNlLl1UwO4K2bgTQ51dg0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2632&quot; height=&quot;584&quot; data-filename=&quot;스크린샷 2025-06-01 오후 12.56.05.png&quot; data-origin-width=&quot;2632&quot; data-origin-height=&quot;584&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;참고문서&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://platform.openai.com/docs/quickstart?api-mode=responses&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://platform.openai.com/docs/quickstart?api-mode=responses&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Programming language/Python</category>
      <category>python chatgpt api</category>
      <category>python openapi</category>
      <author>SHXL2</author>
      <guid isPermaLink="true">https://shxrecord.tistory.com/425</guid>
      <comments>https://shxrecord.tistory.com/425#entry425comment</comments>
      <pubDate>Sun, 1 Jun 2025 13:07:35 +0900</pubDate>
    </item>
    <item>
      <title>this is incompatible with sql_mode=only_full_group_by</title>
      <link>https://shxrecord.tistory.com/424</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;최근 MySQL를 새로 설치하고 기존 쿼리를 실행하던 중 발생한 오류입니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;SQL Error [1055] [42000]: (conn=43) Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'Y.LEDGER_KIND_NAME' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제가 발생한 쿼리는 다음과 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1748354602330&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; SELECT Y.PARENT_KIND
     , Y.LEDGER_KIND_NAME
     , SUM(IF('0' = '0', -Y.AMOUNT, Y.AMOUNT)) AS AMOUNT
  FROM (
        ...

       ) Y
GROUP BY Y.PARENT_KIND
ORDER BY SUM(Y.AMOUNT) DESC&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;해당 오류는 MySQL 5.7 이상에서 발생할 수 있는 오류입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GROUP BY를 사용할 때, &lt;b&gt;SELECT절, HAVING절, ORDER BY절&lt;/b&gt;에 등장하는 컬럼 중에서 집계함수(예: SUM, COUNT 등)로 묶이지 않은 컬럼은 반드시 &lt;b&gt;GROUP BY절에 명시&lt;/b&gt;해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 쿼리에는 Y.LEDGER_KIND_NAME이 집계함수로 묶이지 않아 오류가 발생했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿼리를 수정하는 것이 좋겠지만 MySQL 옵션을 변경하여 오류를 해결할 수도 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 PC는 brew를 통해 MySQL이 설치한 것이 아닌 되어 있지 않아 my.cnf 설정 파일을 찾을 수 없습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Community Server를 통해 직접 설치한 경우, 시스템 설정에서 MySQL을 검색해서 아래와 같이 Configuration을 통해 my.cnf 파일을 설정할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1800&quot; data-origin-height=&quot;1294&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwx8OT/btsOgcw2Myo/JGDxFQqFhjiUJ7mg9bwkUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwx8OT/btsOgcw2Myo/JGDxFQqFhjiUJ7mg9bwkUk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwx8OT/btsOgcw2Myo/JGDxFQqFhjiUJ7mg9bwkUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbwx8OT%2FbtsOgcw2Myo%2FJGDxFQqFhjiUJ7mg9bwkUk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1800&quot; height=&quot;1294&quot; data-origin-width=&quot;1800&quot; data-origin-height=&quot;1294&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;b&gt;Base Directory&lt;/b&gt;에 들어가 my.cnf 파일을 생성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1748355920167&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo vim my.cnf&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;pre id=&quot;code_1748355940702&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Configuration File에 &lt;b&gt;my.cnf&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;1782&quot; data-origin-height=&quot;1258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DV9HO/btsOeTk0g1s/mdTRe1KvLrMNDdKj2npBqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DV9HO/btsOeTk0g1s/mdTRe1KvLrMNDdKj2npBqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DV9HO/btsOeTk0g1s/mdTRe1KvLrMNDdKj2npBqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDV9HO%2FbtsOeTk0g1s%2FmdTRe1KvLrMNDdKj2npBqK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1782&quot; height=&quot;1258&quot; data-origin-width=&quot;1782&quot; data-origin-height=&quot;1258&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;Instances 탭으로 이동해 MySQL을 재실행합니다.(Stop Server 이후 Start Server)&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;1780&quot; data-origin-height=&quot;1252&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgbiQa/btsOfU4uwvG/JOmj2e8KhTJQ1Is1e827HK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgbiQa/btsOfU4uwvG/JOmj2e8KhTJQ1Is1e827HK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgbiQa/btsOfU4uwvG/JOmj2e8KhTJQ1Is1e827HK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgbiQa%2FbtsOfU4uwvG%2FJOmj2e8KhTJQ1Is1e827HK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1780&quot; height=&quot;1252&quot; data-origin-width=&quot;1780&quot; data-origin-height=&quot;1252&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;※ 참고&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 쿼리를 통해 설정된 정책을 확인할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1748356288781&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;select @@sql_mode;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-05-27 오후 11.31.03.png&quot; data-origin-width=&quot;1914&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cD6SXZ/btsOf1JgCyD/ZintZ3OFQLKjGLtRMSCu81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cD6SXZ/btsOf1JgCyD/ZintZ3OFQLKjGLtRMSCu81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cD6SXZ/btsOf1JgCyD/ZintZ3OFQLKjGLtRMSCu81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcD6SXZ%2FbtsOf1JgCyD%2FZintZ3OFQLKjGLtRMSCu81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1914&quot; height=&quot;222&quot; data-filename=&quot;스크린샷 2025-05-27 오후 11.31.03.png&quot; data-origin-width=&quot;1914&quot; data-origin-height=&quot;222&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;</description>
      <category>Tip</category>
      <category>this is incompatible with sql_mode=only_full_group_by</category>
      <author>SHXL2</author>
      <guid isPermaLink="true">https://shxrecord.tistory.com/424</guid>
      <comments>https://shxrecord.tistory.com/424#entry424comment</comments>
      <pubDate>Tue, 27 May 2025 23:36:04 +0900</pubDate>
    </item>
    <item>
      <title>앱스토어 앱 삭제하기</title>
      <link>https://shxrecord.tistory.com/422</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;앱스토어에 등록된 어플 중 오랫동안 관리되지 않고 있는 앱들을 정리해보려 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어플을 삭제하기 위해서는 먼저 판매 중단을 진행해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 앱 정보에 들어가 &lt;b&gt;수익화 - 가격 및 사용 가능 여부&lt;/b&gt; 메뉴를 클릭합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;화면 하단에 &lt;b&gt;앱 판매 중단&lt;/b&gt;을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2960&quot; data-origin-height=&quot;1528&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zXFFk/btsNN9H2usm/q2BlSuYsg7RFdBoEAhLbW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zXFFk/btsNN9H2usm/q2BlSuYsg7RFdBoEAhLbW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zXFFk/btsNN9H2usm/q2BlSuYsg7RFdBoEAhLbW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzXFFk%2FbtsNN9H2usm%2Fq2BlSuYsg7RFdBoEAhLbW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2960&quot; height=&quot;1528&quot; data-origin-width=&quot;2960&quot; data-origin-height=&quot;1528&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;판매 중단 후 &lt;b&gt;일반 정보 - 앱 정보&lt;/b&gt; 메뉴를 클릭합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;화면 하단에 &lt;b&gt;앱 삭제&lt;/b&gt;를 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3032&quot; data-origin-height=&quot;1519&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KKUyk/btsNNgVrxRp/hNj5QETXMeuod4waAFul8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KKUyk/btsNNgVrxRp/hNj5QETXMeuod4waAFul8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KKUyk/btsNNgVrxRp/hNj5QETXMeuod4waAFul8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKKUyk%2FbtsNNgVrxRp%2FhNj5QETXMeuod4waAFul8K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3032&quot; height=&quot;1519&quot; data-origin-width=&quot;3032&quot; data-origin-height=&quot;1519&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;1423&quot; data-origin-height=&quot;459&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRIGEV/btsNNgVryd6/KQMzscLSlCoWXoortTAhbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRIGEV/btsNNgVryd6/KQMzscLSlCoWXoortTAhbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRIGEV/btsNNgVryd6/KQMzscLSlCoWXoortTAhbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRIGEV%2FbtsNNgVryd6%2FKQMzscLSlCoWXoortTAhbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1423&quot; height=&quot;459&quot; data-origin-width=&quot;1423&quot; data-origin-height=&quot;459&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삭제를 진행하고 나면 앱 리스트에서 삭제된 앱 조건을 통해 확인이 가능합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2846&quot; data-origin-height=&quot;951&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wmF8J/btsNPaztECb/44rcqMVR833k4bWGuvcmO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wmF8J/btsNPaztECb/44rcqMVR833k4bWGuvcmO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wmF8J/btsNPaztECb/44rcqMVR833k4bWGuvcmO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwmF8J%2FbtsNPaztECb%2F44rcqMVR833k4bWGuvcmO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2846&quot; height=&quot;951&quot; data-origin-width=&quot;2846&quot; data-origin-height=&quot;951&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;</description>
      <category>Tip</category>
      <category>앱스토어 앱 삭제</category>
      <category>앱스토어 판매중단</category>
      <author>SHXL2</author>
      <guid isPermaLink="true">https://shxrecord.tistory.com/422</guid>
      <comments>https://shxrecord.tistory.com/422#entry422comment</comments>
      <pubDate>Thu, 8 May 2025 21:25:44 +0900</pubDate>
    </item>
  </channel>
</rss>