<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>그냥 사는 이야기</title>
    <link>https://rudalson.tistory.com/</link>
    <description>IT, 개발, 그리고 삶에 관한 이야기 입니다.</description>
    <language>ko</language>
    <pubDate>Wed, 6 May 2026 13:43:47 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>없다캐라</managingEditor>
    <image>
      <title>그냥 사는 이야기</title>
      <url>https://t1.daumcdn.net/cfile/tistory/1272A3034AE7FA7565</url>
      <link>https://rudalson.tistory.com</link>
    </image>
    <item>
      <title>NordVPN 무료체험 및 구독 해지 하기</title>
      <link>https://rudalson.tistory.com/entry/NordVPN-%EB%AC%B4%EB%A3%8C%EC%B2%B4%ED%97%98-%EB%B0%8F-%EA%B5%AC%EB%8F%85-%ED%95%B4%EC%A7%80-%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;VPN을 써야할 일이 있어서 잠시 NordVPN을 사용했습니다. 지인이 믿을 만한(?) VPN중 NordVPN을 권유해주길래 일주일 무료체험으로 가입하였습니다. 그렇게 잠시 사용하고 해지하려고 하니.... 왠걸...&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;NordVPN 가입 및 결제 정보&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;별일 없을 거라 생각해서 사실 어떻게 가입하였는지는 기억이 안납니다. 구글 계정으로 Sign up 한 후 대충 Next 누르면서 가입했습니다. 제 구글 계정의 결제 정보를 통해 가입승인까지 되었던 것 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 가입했던 Plan도 기억안납니다. 대충 중간꺼 1년에 얼마고 일주일 사용하고 해지 없으면 결제 될 수 있다 정도 본 것 같습니다. 이건 너무 뻔한(?) 거니깐요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해지하려고 NordVPN 사이트 접속해서 로그인 후 보니 해지 버튼이 안보였습니다. 이 때만 해도 내가 못찾아서 그런거겠지 생각했는데 아무래도 아닌것 같습니다. 우선 NordVPN 해지로 검색해서 찾아보면 &lt;a href=&quot;https://support.nordvpn.com/hc/ko/articles/19556844985489-%EA%B5%AC%EB%8F%85-%EC%9E%90%EB%8F%99-%EA%B0%B1%EC%8B%A0%EC%9D%84-%EC%B7%A8%EC%86%8C%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;공식 사이트에서 구독해지 버튼 위치&lt;/a&gt;를 알려줍니다. 대충 아래의 순서대로 하면 될 것 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;978&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7HIt0/btsHRwJSRG6/gy0XEIFekRCmzCLktD5UzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7HIt0/btsHRwJSRG6/gy0XEIFekRCmzCLktD5UzK/img.png&quot; data-alt=&quot;NordVPN 사이트에서 알려주는 구독해지 안내&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7HIt0/btsHRwJSRG6/gy0XEIFekRCmzCLktD5UzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7HIt0%2FbtsHRwJSRG6%2Fgy0XEIFekRCmzCLktD5UzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;824&quot; height=&quot;657&quot; data-origin-width=&quot;1226&quot; data-origin-height=&quot;978&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;NordVPN 사이트에서 알려주는 구독해지 안내&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 제가 들어가본 Billing 페이지에는 위와 같은 버튼이 없습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1680&quot; data-origin-height=&quot;1068&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dILGNS/btsHR13QTTC/HZKZ44qPAZW6w56HVwpKKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dILGNS/btsHR13QTTC/HZKZ44qPAZW6w56HVwpKKK/img.png&quot; data-alt=&quot;나의 계정 Billing 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dILGNS/btsHR13QTTC/HZKZ44qPAZW6w56HVwpKKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdILGNS%2FbtsHR13QTTC%2FHZKZ44qPAZW6w56HVwpKKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;821&quot; height=&quot;522&quot; data-origin-width=&quot;1680&quot; data-origin-height=&quot;1068&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;나의 계정 Billing 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 버튼이 없습니다. 그리고 아무리 둘러봐도 없습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이 바닥이 그런 것일지도&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;역시 VPN은..... 무섭구나 싶어 검색을 조금 더 해봤는데 나랑 같은 사람이 꽤 있었습니다.&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://gall.dcinside.com/mgallery/board/view/?id=vpngate&amp;amp;no=12401&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[일반] 노드vpn7일무료체험구독취소어디서하냐&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;나무위키 인용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그리고 무료 체험 자체가 정기결제에 포함된 태다. 무료 체험시 해지법은 &lt;a href=&quot;https://ko.vpnmentor.com/blog/nordvpn-%EA%B3%84%EC%A0%95-%EC%B7%A8%EC%86%8C-%EB%B0%8F-%ED%99%98%EA%B8%89%EB%B0%9B%EB%8A%94-%EB%B0%A9%EB%B2%95/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;이 사이트&lt;/a&gt;를 참조할것&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나무위키에서 참조하라는 사이트에는&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;결제하고&lt;/li&gt;
&lt;li&gt;채팅으로 해지 요청 후&lt;/li&gt;
&lt;li&gt;환불&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;받는 방식입니다. 저에게는 간단하지 않습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;NordVPN이 아닌 구글 플레이 스토어에서 정기결제 해지&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전 NordVPN사이트 혹 앱 에서는 방법을 못찾았습니다. 그러다 지인의 도움으로 해결하였습니다. 먼저 해당 계정의 구글 플레이스토어에서 정기 결제 메뉴를 찾아들어갑니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screenshot_20240607_105453_Google Play Store.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1148&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cC6sbC/btsHRbF0pDG/DX87CKKBiSJqwRFTGtG3ak/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cC6sbC/btsHRbF0pDG/DX87CKKBiSJqwRFTGtG3ak/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cC6sbC/btsHRbF0pDG/DX87CKKBiSJqwRFTGtG3ak/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcC6sbC%2FbtsHRbF0pDG%2FDX87CKKBiSJqwRFTGtG3ak%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;360&quot; height=&quot;383&quot; data-filename=&quot;Screenshot_20240607_105453_Google Play Store.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1148&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앱에서 들어가보니 제가 평소에 사용하던 Google One 정기결제 외에도 NordVPN이 등록되어 있었고 몇 일 후 72,000원 결제 예정이랍니다. 막아야 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screenshot_20240607_105442_Google Play Store.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSy1iE/btsHRn7pgCH/NXwkUOIWKkgQCuINs0xgak/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSy1iE/btsHRn7pgCH/NXwkUOIWKkgQCuINs0xgak/img.jpg&quot; data-alt=&quot;휴 구독취소 버튼이 있군요&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSy1iE/btsHRn7pgCH/NXwkUOIWKkgQCuINs0xgak/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSy1iE%2FbtsHRn7pgCH%2FNXwkUOIWKkgQCuINs0xgak%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;360&quot; height=&quot;733&quot; data-filename=&quot;Screenshot_20240607_105442_Google Play Store.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2200&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;휴 구독취소 버튼이 있군요&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구독취소 버튼을 눌러줍니다. 찾기는 어려웠는데 찾고나니 쉽죠? 이로서 전 다시 평화를 찾았습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;악질적인 정기 결제 유도&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 사업해도 되는건가 싶은데 이걸 따지기엔 너무 문외한이라 그냥 저 한몸 빠져나온걸로 만족하고 있습니다. DC 커뮤니티 댓들들 처럼 그거 안되서 정말 1년 장기결제를 강요당한 분이 계실줄은 몰랐습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리하자면 전 구글 계정으로 가입하였고 구글계정과 연계되어 정기결제가 구독되었습니다. 하지만 NordVPN 에서는 미끼인 일주일 사용이후 해지에 대한 방법을 어렵게 해놓았고 (어딘가 있을지도 모르니) 전 연계된 구글 플레이 스토어쪽에서 결제 해지를 하여 빠져나왔습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가입 때 구글계정이 아닌 다른 방법이라면 다른 해지법을 찾아야 될 것 같습니다.&lt;/p&gt;</description>
      <category>Development/기타</category>
      <category>NordVPN</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/301</guid>
      <comments>https://rudalson.tistory.com/entry/NordVPN-%EB%AC%B4%EB%A3%8C%EC%B2%B4%ED%97%98-%EB%B0%8F-%EA%B5%AC%EB%8F%85-%ED%95%B4%EC%A7%80-%ED%95%98%EA%B8%B0#entry301comment</comments>
      <pubDate>Fri, 7 Jun 2024 18:51:02 +0900</pubDate>
    </item>
    <item>
      <title>해외주식 양도소득세 합산 홈택스 신고</title>
      <link>https://rudalson.tistory.com/entry/%ED%95%B4%EC%99%B8%EC%A3%BC%EC%8B%9D-%EC%96%91%EB%8F%84%EC%86%8C%EB%93%9D%EC%84%B8-%ED%95%A9%EC%82%B0-%ED%99%88%ED%83%9D%EC%8A%A4-%EC%8B%A0%EA%B3%A0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;2024년 양도소득세 신고 기간이 왔습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4월에 키움증권에서 해외주식 양도소득세 신고 대행 서비스 문자가 왔었습니다. 하지만 까먹고 있다가 이렇게 5월에 직접 신고를 해야 해서 어떻게 하는지 찾아봤습니다. 그때 할걸.... &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;작년까지는 대행 서비스를 잘 신청해왔는데....&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;직접 신고하는 것은 처음이라 검색을 해보았습니다. 그 중 &lt;a href=&quot;https://youtu.be/qjmz9qnF4Lg?si=0wKmrNn1n0PXrc2n&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;유튜브 영상&lt;/a&gt;에서 가장 큰 도움을 받았습니다. (이 글에 영상을 덧붙이려니 영상 소유자 분이 유튜브 외 다른 곳에서는 재생이 안되는 권한이 걸려 있어 링크만 달았습니다.)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 직접 신고를 하고 말아버리면 내년에 또 까먹을 것 같아서 기록으로 남깁니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;키움증권과 토스증권&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예전엔 키움만 사용했는데 주종목은 키움에 있지만 근래 토스증권에서 주식모으기 기능으로 몇 종목을 매일 조금씩 사고 있었습니다. 이 재미에 빠져서 종목이 늘어났다가 일부 정리하는 과정에서 매도가 발생하여 결국 2개 증권사를 합산하여 신고 하여야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 필요한 것은 2개 증권사에서 해외주식 양도세 내역을 각각 다운로드 받아야 합니다. 이건 증권사마다 조금씩 다른데 각각 검색해서 받아놓았습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;홈택스&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;001.png&quot; data-origin-width=&quot;1191&quot; data-origin-height=&quot;750&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dzPfHV/btsHkY8oYhP/RLdGCqOPK5CFgIKpYBWfn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dzPfHV/btsHkY8oYhP/RLdGCqOPK5CFgIKpYBWfn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dzPfHV/btsHkY8oYhP/RLdGCqOPK5CFgIKpYBWfn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdzPfHV%2FbtsHkY8oYhP%2FRLdGCqOPK5CFgIKpYBWfn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;765&quot; height=&quot;482&quot; data-filename=&quot;001.png&quot; data-origin-width=&quot;1191&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;먼저 세금신고 - 양도소득세 신고 - 확정신고 를 들어갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;002.png&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;564&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Srly2/btsHlGTKnsv/9TOkCagKTR5AFc4XMoPNtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Srly2/btsHlGTKnsv/9TOkCagKTR5AFc4XMoPNtk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Srly2/btsHlGTKnsv/9TOkCagKTR5AFc4XMoPNtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSrly2%2FbtsHlGTKnsv%2F9TOkCagKTR5AFc4XMoPNtk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;776&quot; height=&quot;334&quot; data-filename=&quot;002.png&quot; data-origin-width=&quot;1310&quot; data-origin-height=&quot;564&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 양도소득세 신고 화면에서 정기신고를 선택하여 들어가면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;003.png&quot; data-origin-width=&quot;1063&quot; data-origin-height=&quot;787&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mC7WZ/btsHmcZcuoR/1EuYbc827SQhpUvXZ9iOfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mC7WZ/btsHmcZcuoR/1EuYbc827SQhpUvXZ9iOfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mC7WZ/btsHmcZcuoR/1EuYbc827SQhpUvXZ9iOfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmC7WZ%2FbtsHmcZcuoR%2F1EuYbc827SQhpUvXZ9iOfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;718&quot; height=&quot;532&quot; data-filename=&quot;003.png&quot; data-origin-width=&quot;1063&quot; data-origin-height=&quot;787&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 본인의 기본적인 정보를 입력하는데 조회를 하면 대부분의 개인정보가 나옵니다. 그 중 전화번호는 직접 입력해야 합니다. 저장 후 다음이동 버튼을 눌러줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;004.png&quot; data-origin-width=&quot;1065&quot; data-origin-height=&quot;697&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vm3tH/btsHnehngiF/P8HueU8TmCYEI2yLIrNTyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vm3tH/btsHnehngiF/P8HueU8TmCYEI2yLIrNTyK/img.png&quot; data-alt=&quot;양수인???&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vm3tH/btsHnehngiF/P8HueU8TmCYEI2yLIrNTyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fvm3tH%2FbtsHnehngiF%2FP8HueU8TmCYEI2yLIrNTyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;625&quot; height=&quot;409&quot; data-filename=&quot;004.png&quot; data-origin-width=&quot;1065&quot; data-origin-height=&quot;697&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;양수인???&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 페이지에서는 그냥 넘어 갔습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;005.png&quot; data-origin-width=&quot;1146&quot; data-origin-height=&quot;925&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcmNes/btsHk3IFMpj/qoSuEueCVWTNR0nVTBuIT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcmNes/btsHk3IFMpj/qoSuEueCVWTNR0nVTBuIT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcmNes/btsHk3IFMpj/qoSuEueCVWTNR0nVTBuIT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcmNes%2FbtsHk3IFMpj%2FqoSuEueCVWTNR0nVTBuIT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;820&quot; height=&quot;662&quot; data-filename=&quot;005.png&quot; data-origin-width=&quot;1146&quot; data-origin-height=&quot;925&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 가장 중요한 화면입니다. 종목명은 해외주식 으로 입력해주고 국외자산국가는 국가조회를 통해 미국을 선택합니다. 나머지는 화면처럼 선택하면 되는데 (7) 취득유형별 양도주식수를 1로 입력했습니다. 원래는 종목별로 각각 하는지는 모르겠지만 그렇게는 도저히 못하겠더라구요. 저도 여기서 막혀서 다른 사람들은 어떻게 입력하나 했는데 영상을 보고 알게 되었습니다. 여기서는 밑에 결국은 가격이 중요하거든요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전 2개 증권사이기에 양도가액, 취득가액, 필요경비 이 3가지 항목을 모두 합해서 그냥 입력해주면 됩니다. 와. 어쩐지...... 일일이 종목마다 입력해야 한다면 직접 하지는 못했을 겁니다. 설명을 보면 이렇게 해두고 나중에 내역파일을 첨부해주면 되기 때문에 이렇게 합산한 가격이 중요하지 윗 부분에 항목이름이나 주식수는 퉁 치면 된다는 설명이었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;006.png&quot; data-origin-width=&quot;873&quot; data-origin-height=&quot;918&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CDazq/btsHlyhDNqD/Aq8argowlcOf0Fck0BCBbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CDazq/btsHlyhDNqD/Aq8argowlcOf0Fck0BCBbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CDazq/btsHlyhDNqD/Aq8argowlcOf0Fck0BCBbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCDazq%2FbtsHlyhDNqD%2FAq8argowlcOf0Fck0BCBbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;873&quot; height=&quot;918&quot; data-filename=&quot;006.png&quot; data-origin-width=&quot;873&quot; data-origin-height=&quot;918&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서도 중요합니다. 이 화면에서는 (7) 양도소득기본공제 2,500,000원이 자동으로 입력되어 있지 않습니다. 왜 그런지는 모르겠지만 이 공제를 안받을 수 없죠.... 그래서 직접 250만원을 입력해서 넣어서 혜택을 봐야 합니다. 그리고 세율 20%를 적용하면 전 4,380원이 세액으로 나옵니다. 이렇게 까지 해놓고 등록하기를 눌러줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;008.png&quot; data-origin-width=&quot;841&quot; data-origin-height=&quot;918&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v7QXE/btsHk3aP6z2/QYIrLI4i5PikkkXqbTjBlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v7QXE/btsHk3aP6z2/QYIrLI4i5PikkkXqbTjBlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v7QXE/btsHk3aP6z2/QYIrLI4i5PikkkXqbTjBlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv7QXE%2FbtsHk3aP6z2%2FQYIrLI4i5PikkkXqbTjBlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;727&quot; height=&quot;794&quot; data-filename=&quot;008.png&quot; data-origin-width=&quot;841&quot; data-origin-height=&quot;918&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서는 전체적인 내용을 한번 더 확인해주면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;010.png&quot; data-origin-width=&quot;799&quot; data-origin-height=&quot;773&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgbr42/btsHlznkLEm/VpLBpFCrUN7exSjAjukNvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgbr42/btsHlznkLEm/VpLBpFCrUN7exSjAjukNvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgbr42/btsHlznkLEm/VpLBpFCrUN7exSjAjukNvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcgbr42%2FbtsHlznkLEm%2FVpLBpFCrUN7exSjAjukNvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;799&quot; height=&quot;773&quot; data-filename=&quot;010.png&quot; data-origin-width=&quot;799&quot; data-origin-height=&quot;773&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;여기서 주의해야 할 점은 PDF 만 업로드가 가능하였습니다. 처음에 토스증권 내역서는 보이는데 키움증권 내역서는 올릴려고 해도 탐색기에 나오지가 않았습니다. 왜냐하면 키움증권에서는 엑셀파일로 주더라구요. 그래서 키움에서 받은 내역 파일은 다른이름 저장에서 PDF로 저장시킨 후 업로드를 진행하였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;011.png&quot; data-origin-width=&quot;1331&quot; data-origin-height=&quot;924&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btgL6D/btsHlHyqfi5/tZnPq9oHiq3NIK8y3o3Wik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btgL6D/btsHlHyqfi5/tZnPq9oHiq3NIK8y3o3Wik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btgL6D/btsHlHyqfi5/tZnPq9oHiq3NIK8y3o3Wik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtgL6D%2FbtsHlHyqfi5%2FtZnPq9oHiq3NIK8y3o3Wik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1331&quot; height=&quot;924&quot; data-filename=&quot;011.png&quot; data-origin-width=&quot;1331&quot; data-origin-height=&quot;924&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;지방소득세&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;홈택스로 직접 신고할 때, 양도세만 신고하는 줄 알았는데 지방소득세도 직접 해줘야 하는지는 몰랐습니다. 신고이동을 누르면 위택스로 넘어갑니다. 위의 내용은 특이한게 홈택스 다시 접속해서 찾으려면 양도소득세 신고내역을 조회해야 저 버튼을 찾을 수 있습니다. 밤 12시 넘어서 양도소득세 신고 후 신고이동을 누르니 불가한 시간이라 떠서 다음날 맥 PC 에서 다시 이 부분만 진행하였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-05-10 오후 8.40.56.png&quot; data-origin-width=&quot;2394&quot; data-origin-height=&quot;2634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgshdi/btsHmFAdKLT/S22XKAsZDUFdoZkjuOEiz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgshdi/btsHmFAdKLT/S22XKAsZDUFdoZkjuOEiz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgshdi/btsHmFAdKLT/S22XKAsZDUFdoZkjuOEiz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdgshdi%2FbtsHmFAdKLT%2FS22XKAsZDUFdoZkjuOEiz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2394&quot; height=&quot;2634&quot; data-filename=&quot;스크린샷 2024-05-10 오후 8.40.56.png&quot; data-origin-width=&quot;2394&quot; data-origin-height=&quot;2634&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지방소득세는 크게 어려울 것 없고 그냥 다음, 다음만 누르면 대부분 끝납니다. 주요한 정보들은 이전 자료에서 가져와서 자동으로 채워져 있더라구요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;세금 납부&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 양도소득세, 지방소득세를 직접 신청하고 난 후, 은행앱의 공과금 납부를 찾아갑니다.(전 하나은행을 사용했습니다.) 그러니 신기하게도 납부해야할 항목 2개가 생겼습니다.&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>잡담</category>
      <category>양도소득세</category>
      <category>해외주식</category>
      <category>홈택스</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/300</guid>
      <comments>https://rudalson.tistory.com/entry/%ED%95%B4%EC%99%B8%EC%A3%BC%EC%8B%9D-%EC%96%91%EB%8F%84%EC%86%8C%EB%93%9D%EC%84%B8-%ED%95%A9%EC%82%B0-%ED%99%88%ED%83%9D%EC%8A%A4-%EC%8B%A0%EA%B3%A0#entry300comment</comments>
      <pubDate>Fri, 10 May 2024 01:01:27 +0900</pubDate>
    </item>
    <item>
      <title>Pieter Levels의 사이드 프로젝트</title>
      <link>https://rudalson.tistory.com/entry/Pieter-Levels%EC%97%90-%EB%8C%80%ED%95%B4</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;944&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BxLla/btsv9LqZIvd/bTpQtaAURTEWxifUjPaZn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BxLla/btsv9LqZIvd/bTpQtaAURTEWxifUjPaZn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BxLla/btsv9LqZIvd/bTpQtaAURTEWxifUjPaZn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBxLla%2Fbtsv9LqZIvd%2FbTpQtaAURTEWxifUjPaZn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;436&quot; data-origin-width=&quot;866&quot; data-origin-height=&quot;944&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;X.com : twitter.com/levelsio@levelsio&lt;/li&gt;
&lt;li&gt;Youtube : &lt;a href=&quot;https://www.youtube.com/@levelsio/about&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.youtube.com/@levelsio/about&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소개 글이 인상적이다. php + jquery4life. 그동안 새로운 기술 있으면 기웃 거리기만 하고 뭐하나 만든게 없는 입장에서 기술에 대해 다시 생각해 보게 한다. 다른 설명은 없다. 대표적인 프로젝트가 언급되어 있다. 솔로 인디 개발자중 (돈버는 것으로) 가장 유명한 개발자 같다.&lt;/p&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=7BX8Mt7K10c&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bi91Fu/hyT2FOnfIu/aGmc35U6q7pEcn7JkoxVl0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=946_350_1074_490&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/7BX8Mt7K10c&quot; width=&quot;860&quot; height=&quot;484&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Peter Levels라는 네덜란드의 솔로 기업가에 대한 이야기를 다룹니다.&lt;/li&gt;
&lt;li&gt;Peter는 70개 이상의 다양한 제품을 스스로 개발하였으며, 그 중 일부는 매년 수백만 달러의 수익을 창출하고 있습니다.&lt;/li&gt;
&lt;li&gt;그의 사업은 높은 마진을 가지고 있으며, 일부 웹사이트는 세전 마진이 90% 이상입니다.&lt;/li&gt;
&lt;li&gt;Peter는 대부분의 업무를 자동화하여 대부분의 현금 흐름이 수동적으로 이루어집니다.&lt;/li&gt;
&lt;li&gt;그는 &quot;12 startups in 12 months&quot; 챌린지를 시작하여 12개의 다른 스타트업 회사를 12개월 안에 시작하였습니다.&lt;/li&gt;
&lt;li&gt;그의 가장 큰 성공은 &lt;code&gt;Nomad list&lt;/code&gt;라는 웹사이트로, 원격 근무자들을 위한 국가 순위를 제공합니다.&lt;/li&gt;
&lt;li&gt;그는 또한 &lt;code&gt;remote okay&lt;/code&gt;라는 웹사이트를 시작하여 100% 원격 작업을 전문으로하는 온라인 직업 게시판을 제공합니다.&lt;/li&gt;
&lt;li&gt;그의 전략은 &lt;code&gt;빠르게 제품을 출시하고, 성공하지 않는 제품은 빠르게 포기&lt;/code&gt;하는 것입니다.&lt;/li&gt;
&lt;li&gt;그는 AI 도구를&amp;nbsp;포함한&amp;nbsp;여러&amp;nbsp;제품을&amp;nbsp;개발하였으며,&amp;nbsp;이러한&amp;nbsp;제품들도&amp;nbsp;수익을&amp;nbsp;창출하고&amp;nbsp;있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 영상에서는 대략적인 업적 위주로 파악을 해볼 수 있었습니다. 이젠 사람 자체에 대한 궁금증이 생겨났습니다.&lt;/p&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=V0ej29G7ZGg&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/fRC4B/hyT2pLwS7y/FK15RIIGRyPXFbBcjjG5wK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=760_172_1140_586&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/V0ej29G7ZGg&quot; width=&quot;860&quot; height=&quot;484&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;인사이트는&amp;nbsp;다음과&amp;nbsp;같습니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;빠른 실행: Pieter는 아이디어를 가지면 빠르게 실행에 옮기는 것을 선호합니다. 그는 완벽함을 추구하기보다는 제품을 빠르게 출시하고 사용자의 피드백을 기반으로 개선하는 방식을 취합니다.&lt;/li&gt;
&lt;li&gt;기본 중심: 그는 복잡한 기능이나 디자인보다는 사용자에게 가장 필요한 핵심 기능에 중점을 둡니다. 이를 통해 그는 불필요한 오버헤드 없이 제품을 효율적으로 출시할 수 있습니다.&lt;/li&gt;
&lt;li&gt;자동화와 최소화: Pieter는 작업의 자동화와 최소화를 중요시하며, 이를 통해 그는 스스로의 작업 부담을 줄이고 다양한 프로젝트를 동시에 관리할 수 있습니다.&lt;/li&gt;
&lt;li&gt;커뮤니티 중심: 그의 프로젝트들, 특히 &quot;Nomad List&quot;와 같은 웹사이트는 커뮤니티 중심으로 운영됩니다. 사용자들의 피드백과 참여를 통해 사이트는 지속적으로 발전하고 있습니다.&lt;/li&gt;
&lt;li&gt;실패에서의 학습: 모든 프로젝트가 성공하는 것은 아닙니다. 그러나 Pieter는 실패에서도 중요한 교훈을 얻으며, 이를 다음 프로젝트에 반영합니다.&lt;/li&gt;
&lt;li&gt;Pieter Levels의 인터뷰와 그의 프로젝트들을 통해, 빠른 실행, 사용자 중심의 접근법, 그리고 지속적인 학습의 중요성을 알 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모두가 중요하겠지만 1 ~ 3 번의 내용은 연습을 통해서 개선 시킬 수 있겠다는 생각이 듭니다.&lt;/p&gt;</description>
      <category>IT/Solopreneur</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/299</guid>
      <comments>https://rudalson.tistory.com/entry/Pieter-Levels%EC%97%90-%EB%8C%80%ED%95%B4#entry299comment</comments>
      <pubDate>Fri, 29 Sep 2023 21:49:00 +0900</pubDate>
    </item>
    <item>
      <title>워드프레스(WordPress) 초기 설정 하기</title>
      <link>https://rudalson.tistory.com/entry/%EC%9B%8C%EB%93%9C%ED%94%84%EB%A0%88%EC%8A%A4WordPress-%EC%B4%88%EA%B8%B0-%EC%84%A4%EC%A0%95-%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://rudalson.tistory.com/entry/AWS%EC%9D%98-LightSail%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-WordPress%EB%A5%BC-%EC%9A%B4%EC%98%81%ED%95%98%EA%B8%B0&quot;&gt;AWS의 Lightsail에서 워드프레스를 실행&lt;/a&gt;하였고 처음에 사이트를 위해 몇가지 설정을 하려고 합니다. 이를 위해 먼저 Admin에 접속을 해봅니다. 참조한 문서는 &lt;a href=&quot;https://lightsail.aws.amazon.com/ls/docs/en_us/articles/getting-started-with-wordpress-and-lightsail&quot;&gt;Getting started using WordPress from your Amazon Lightsail instance&lt;/a&gt; 입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Admin 접속&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이글이 2017년 글인데.... 처음 오른쪽 하단에 설정 아이콘이 있었던 것 같은데 현재는 못찾겠네요. 그래서 대신 URL 로 직접 가보았습니다. 도메인 주소 뒤에 &lt;code&gt;/wp-login.php&lt;/code&gt; 을 입력하고 admin페이지로 갑니다. 그런데 예전에 워드프레스 php 버리고 다른 걸로 간다고 했던것 같은데....&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;936&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mg7yo/btsv8flxIal/FhWMPXu8sRdkq5bcMKBvRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mg7yo/btsv8flxIal/FhWMPXu8sRdkq5bcMKBvRK/img.png&quot; data-alt=&quot;비.. 비번이 뭐죠?&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mg7yo/btsv8flxIal/FhWMPXu8sRdkq5bcMKBvRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmg7yo%2Fbtsv8flxIal%2FFhWMPXu8sRdkq5bcMKBvRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;505&quot; data-origin-width=&quot;742&quot; data-origin-height=&quot;936&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;비.. 비번이 뭐죠?&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;admin 접속 페이지로 갔습니다. ID와 패스워드는 뭘까요? 문서를 조금 더 살펴 보면, &lt;code&gt;Home&lt;/code&gt; 디렉토리의 &lt;code&gt;bitnami_application_password&lt;/code&gt; 파일안에 있습니다. 그리고 &lt;code&gt;bitnami_credentials&lt;/code&gt; 파일을 살펴보면 더 친절하게 나와 있습니다.&lt;/p&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;$ cat bitnami_credentials
Welcome to the WordPress packaged by Bitnami

******************************************************************************
The default username and password is 'user' and '자신의 패스워드'.
******************************************************************************

You can also use this password to access the databases and any other component the stack includes.

Please refer to https://docs.bitnami.com/ for more details.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;username은 &lt;code&gt;user&lt;/code&gt;, 그리고 패스워드 이것으로 로그인 해봅니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2546&quot; data-origin-height=&quot;1832&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LQcyN/btsv902tC3p/KudkYcke0TbANUWfdLzcs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LQcyN/btsv902tC3p/KudkYcke0TbANUWfdLzcs1/img.png&quot; data-alt=&quot;반갑구나 워드프레스야!&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LQcyN/btsv902tC3p/KudkYcke0TbANUWfdLzcs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLQcyN%2Fbtsv902tC3p%2FKudkYcke0TbANUWfdLzcs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2546&quot; height=&quot;1832&quot; data-origin-width=&quot;2546&quot; data-origin-height=&quot;1832&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;반갑구나 워드프레스야!&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;제목, 타임존, 언어 설정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 필수로 해줘야 할 것은 타임존 시간 설정입니다. &lt;code&gt;Settings&lt;/code&gt; - &lt;code&gt;General&lt;/code&gt; 로 가봅니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2424&quot; data-origin-height=&quot;1740&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXT2mY/btsv7mZE1Qs/vwTUjJNoQKnfl6jO0B2NDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXT2mY/btsv7mZE1Qs/vwTUjJNoQKnfl6jO0B2NDk/img.png&quot; data-alt=&quot;여기서 제목도 입력하고 타임존도 설정하고&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXT2mY/btsv7mZE1Qs/vwTUjJNoQKnfl6jO0B2NDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXT2mY%2Fbtsv7mZE1Qs%2FvwTUjJNoQKnfl6jO0B2NDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2424&quot; height=&quot;1740&quot; data-origin-width=&quot;2424&quot; data-origin-height=&quot;1740&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;여기서 제목도 입력하고 타임존도 설정하고&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 사이트의 타이틀, 타임존은 서울이 &lt;code&gt;UTC+9&lt;/code&gt; 입니다. 그리고 언어도 한글로 하면 됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;유저 설정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 로그인 할 때 계속 그런 패스워드로 할 수는 없습니다. 이것을 변경해줘야 합니다. &lt;code&gt;Users&lt;/code&gt; 로 갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2094&quot; data-origin-height=&quot;698&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xMGh1/btsvYUbMgL5/Cpk1lvzH4BkROpVCah7c7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xMGh1/btsvYUbMgL5/Cpk1lvzH4BkROpVCah7c7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xMGh1/btsvYUbMgL5/Cpk1lvzH4BkROpVCah7c7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxMGh1%2FbtsvYUbMgL5%2FCpk1lvzH4BkROpVCah7c7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2094&quot; height=&quot;698&quot; data-origin-width=&quot;2094&quot; data-origin-height=&quot;698&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에 user라는 이름으로 기본 계정은 혹시나 해서 그대로 놔두고 새로운 administrator 계정을 생성했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/298</guid>
      <comments>https://rudalson.tistory.com/entry/%EC%9B%8C%EB%93%9C%ED%94%84%EB%A0%88%EC%8A%A4WordPress-%EC%B4%88%EA%B8%B0-%EC%84%A4%EC%A0%95-%ED%95%98%EA%B8%B0#entry298comment</comments>
      <pubDate>Thu, 28 Sep 2023 16:48:08 +0900</pubDate>
    </item>
    <item>
      <title>AWS의 LightSail을 사용하여 워드프레스 생성하기</title>
      <link>https://rudalson.tistory.com/entry/AWS%EC%9D%98-LightSail%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-WordPress%EB%A5%BC-%EC%9A%B4%EC%98%81%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WordPress 사이트를 하나 운영할 필요가 생겼는데 아무리 도커로 한다 해도 직접 설치하고 운영하기에는 조금 부담스럽습니다. 크게 어렵지는 않은데 운영이슈가 있어서 가끔씩 서버를 들여다 보려면 기억이 안나서 검색 하면서 하다 보면 꽤 귀찮습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다고 이걸 서비스 해주는 업체것을 사용하려니 EC2 보다 비용이 더 나오는 편이라 그거 생각하면 또 직접 올려 사용해서 한푼이라도 절약할 필요가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예전부터 봐두었던 LightSail 서비스로 저렴이 EC2에 고정 ip 까지 받으려고 합니다. 무엇보다 가격 경쟁력이 좋다고 들었습니다.&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;AWS LightSail 이란?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS LightSail은 웹 사이트나 작은 애플리케이션을 쉽게 올릴 수 있는 클라우드 서비스입니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;간편함 - AWS의 다른 서비스들은 종종 설정이나 관리가 복잡할 수 있습니다. 그런데 LightSail은 초보자도 쉽게 서버를 만들고 시작할 수 있게 디자인되었습니다.&lt;/li&gt;
&lt;li&gt;고정된 비용 - 매달 지불해야 할 금액이 미리 정해져 있습니다. 그래서 예상외의 비용에 대해 걱정할 필요가 없습니다.&lt;/li&gt;
&lt;li&gt;필요한 것 모두 포함 - 웹사이트를 실행하는 데 필요한 모든 것(서버, 스토리지, 데이터베이스)이 포함되어 있습니다.&lt;/li&gt;
&lt;li&gt;안전 - AWS의 보안 기능을 사용하여 정보를 보호합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉,&amp;nbsp;AWS&amp;nbsp;LightSail은&amp;nbsp;웹사이트나&amp;nbsp;애플리케이션을&amp;nbsp;온라인에&amp;nbsp;쉽게&amp;nbsp;게시하려는&amp;nbsp;사람들을&amp;nbsp;위한&amp;nbsp;서비스입니다.&amp;nbsp;몇&amp;nbsp;번의&amp;nbsp;클릭만으로&amp;nbsp;시작할&amp;nbsp;수&amp;nbsp;있으며,&amp;nbsp;사용하는&amp;nbsp;만큼의&amp;nbsp;비용을&amp;nbsp;지불하게&amp;nbsp;됩니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;WordPress 설치?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 설치라고 할 것도 없습니다. 서버 + SW형태의 템플릿이 여럿 있고 이중 WorePress 있는 것을 선택하기만 하면 됩니다. 그리고 그 템플릿의 인스턴스를 생성 시키면 설치? 가 완료 되었습니다. 개인적으로는 맨처음 들어가서 우분투 보안업데이트를 다 하고 reboot을 한번 더 해줬습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-09-27 오전 12.55.09.png&quot; data-origin-width=&quot;1638&quot; data-origin-height=&quot;1010&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btQSAF/btsvMXMV41f/E6iqciNibKnIEKrdi1oZT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btQSAF/btsvMXMV41f/E6iqciNibKnIEKrdi1oZT1/img.png&quot; data-alt=&quot;좋은 아침입니다. 내돈내산 워드프레스 서버입니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btQSAF/btsvMXMV41f/E6iqciNibKnIEKrdi1oZT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtQSAF%2FbtsvMXMV41f%2FE6iqciNibKnIEKrdi1oZT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;395&quot; data-filename=&quot;스크린샷 2023-09-27 오전 12.55.09.png&quot; data-origin-width=&quot;1638&quot; data-origin-height=&quot;1010&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;좋은 아침입니다. 내돈내산 워드프레스 서버입니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;LightSail 인스턴스 설정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 여기서 몇가지 필요한 설정을 더 해주면 끝입니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;정적 IP 설정&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 주어진 IP는 유동IP 라고 합니다. 인스턴스를 사정이 생겨 stop을 하게 되면 이후 start 하면 변경이 됩니다. 나중에 DNS 연결을 IP를 향하도록 해놓았다면 IP가 변경되면 안되겠죠? 고정 IP 혹은 정정 IP를 정해주려면 Networking 탭으로 갑니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-09-27 오전 12.16.32.png&quot; data-origin-width=&quot;2542&quot; data-origin-height=&quot;2316&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SKdsA/btsvXR5Dh1s/G17eoGJkocxDuflTSvDwi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SKdsA/btsvXR5Dh1s/G17eoGJkocxDuflTSvDwi1/img.png&quot; data-alt=&quot;처음에 보이는 ip는 정적ip가 아닙니다. 정적 ip를 줄 수 있습니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SKdsA/btsvXR5Dh1s/G17eoGJkocxDuflTSvDwi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSKdsA%2FbtsvXR5Dh1s%2FG17eoGJkocxDuflTSvDwi1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2542&quot; height=&quot;2316&quot; data-filename=&quot;스크린샷 2023-09-27 오전 12.16.32.png&quot; data-origin-width=&quot;2542&quot; data-origin-height=&quot;2316&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;처음에 보이는 ip는 정적ip가 아닙니다. 정적 ip를 줄 수 있습니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-09-27 오전 12.20.37.png&quot; data-origin-width=&quot;1794&quot; data-origin-height=&quot;1436&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VYlSP/btsvQcCN07n/LSnHOJp9ri9hNI6e1d3WCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VYlSP/btsvQcCN07n/LSnHOJp9ri9hNI6e1d3WCK/img.png&quot; data-alt=&quot;Networkging 탭에 가보면 IP 밑에 Attach static IP 를 선택할 수 있습니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VYlSP/btsvQcCN07n/LSnHOJp9ri9hNI6e1d3WCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVYlSP%2FbtsvQcCN07n%2FLSnHOJp9ri9hNI6e1d3WCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;512&quot; data-filename=&quot;스크린샷 2023-09-27 오전 12.20.37.png&quot; data-origin-width=&quot;1794&quot; data-origin-height=&quot;1436&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Networkging 탭에 가보면 IP 밑에 Attach static IP 를 선택할 수 있습니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Attach 시켜주면 끝입니다. 참고로 Networking 탭에서는 방화벽에 열린 포트들이 나와 있으며 현재는 필요한 것만 열려있습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;도메인 연결&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전 가비아에서 사용중이기에 하나 가져 왔습니다. 왼쪽 사이드바의 Domain &amp;amp; DNS 를 클릭한 후 Create DNS Zone 버튼을 클릭합니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-09-27 오후 2.13.55.png&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Nseya/btsv7s5oR1X/cZeePrluOnpCQT5Onpvc20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Nseya/btsv7s5oR1X/cZeePrluOnpCQT5Onpvc20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Nseya/btsv7s5oR1X/cZeePrluOnpCQT5Onpvc20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNseya%2Fbtsv7s5oR1X%2FcZeePrluOnpCQT5Onpvc20%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;548&quot; data-filename=&quot;edited_스크린샷 2023-09-27 오후 2.13.55.png&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;548&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런 다음 아래 화면에서 AWS의 Route53에서 만든 도메인이 아니면 another 로 선택하고 도메인 주소를 입력해줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-09-27 오후 2.20.11.png&quot; data-origin-width=&quot;1294&quot; data-origin-height=&quot;594&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/syuNW/btsvPqIu9Bl/6eJwOU6rk2mhT7Moud8t01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/syuNW/btsvPqIu9Bl/6eJwOU6rk2mhT7Moud8t01/img.png&quot; data-alt=&quot;도메인 주소에 굳이 앞 www를 안써도 됩니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/syuNW/btsvPqIu9Bl/6eJwOU6rk2mhT7Moud8t01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsyuNW%2FbtsvPqIu9Bl%2F6eJwOU6rk2mhT7Moud8t01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;294&quot; data-filename=&quot;edited_스크린샷 2023-09-27 오후 2.20.11.png&quot; data-origin-width=&quot;1294&quot; data-origin-height=&quot;594&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;도메인 주소에 굳이 앞 www를 안써도 됩니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 아래처럼 4개의 네임서버를 알려주는데 이것을 자신의 도메인 관리 페이지(저는 가비아) 에서 네임서버 등록을 해주시면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-09-27 오후 2.29.34.png&quot; data-origin-width=&quot;1552&quot; data-origin-height=&quot;1404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFhHNu/btsv5iISrAK/H6i7Uwh3nw6pvLGk2LAHSk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFhHNu/btsv5iISrAK/H6i7Uwh3nw6pvLGk2LAHSk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFhHNu/btsv5iISrAK/H6i7Uwh3nw6pvLGk2LAHSk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFhHNu%2Fbtsv5iISrAK%2FH6i7Uwh3nw6pvLGk2LAHSk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;579&quot; data-filename=&quot;스크린샷 2023-09-27 오후 2.29.34.png&quot; data-origin-width=&quot;1552&quot; data-origin-height=&quot;1404&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 DNS Records 에서 A record를 추가해서 LightSail 로 만든 인스턴스의 ip를 넣어줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-09-27 오후 2.44.11.png&quot; data-origin-width=&quot;1560&quot; data-origin-height=&quot;934&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbGpDz/btsv0yeepQH/kfYctbb8jsQ6tof1aPpq3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbGpDz/btsv0yeepQH/kfYctbb8jsQ6tof1aPpq3K/img.png&quot; data-alt=&quot;DNS records 탭을 선택해줍니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbGpDz/btsv0yeepQH/kfYctbb8jsQ6tof1aPpq3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbGpDz%2Fbtsv0yeepQH%2FkfYctbb8jsQ6tof1aPpq3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1560&quot; height=&quot;934&quot; data-filename=&quot;스크린샷 2023-09-27 오후 2.44.11.png&quot; data-origin-width=&quot;1560&quot; data-origin-height=&quot;934&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;DNS records 탭을 선택해줍니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Add record를 눌러서 내용을 채우되 @ 하나만 입력해주고 IP를 넣어주면 www 없이 도메인 주소만 연결이 됩니다. 그리고 Add record를 한개 더 해서 CNAME, www 를 넣은 후 도메인 주소를 넣어서 redirect가 되도록 해주면 2가지 경우가 더 처리됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2023-09-27 오후 3.51.45.png&quot; data-origin-width=&quot;1576&quot; data-origin-height=&quot;1008&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lMqSL/btsvXg6EleD/lp89Yj6dRMwL0tI0rSY5U0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lMqSL/btsvXg6EleD/lp89Yj6dRMwL0tI0rSY5U0/img.png&quot; data-alt=&quot;최종 DNS 세팅 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lMqSL/btsvXg6EleD/lp89Yj6dRMwL0tI0rSY5U0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlMqSL%2FbtsvXg6EleD%2Flp89Yj6dRMwL0tI0rSY5U0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1576&quot; height=&quot;1008&quot; data-filename=&quot;edited_스크린샷 2023-09-27 오후 3.51.45.png&quot; data-origin-width=&quot;1576&quot; data-origin-height=&quot;1008&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;최종 DNS 세팅 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;SSL/TLS 설정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 경우까지 진행했다면 sample.com 이란 도메인 주소를 입력하면 워드프레스가 나오지만 http만 되고 https는 안되는 상황입니다. 따라서 브라우저 창에서 보면 주의요함이 떠 있습니다. HTTPS 를 활성화 해야겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://lightsail.aws.amazon.com/ls/docs/ko_kr/articles/amazon-lightsail-enabling-https-on-wordpress&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Amazon Lightsail의 WordPress 인스턴스에서 HTTPS 활성화&lt;/a&gt; 문서를 보면 초기의 준비 단계는 특별한 경우가 아니고선 AWS가 세팅을 적절히 해두었습니다. 문서를 보니 Let's encrypt 무료 ssl 인증서를 발급받고 그것을 적용하는 기능을 미리 명령어로 세팅해 두었네요. let's encrypt 를 발급받으려면 원래는 다른 명령어를 사용해야 하는데 문서를 보면 bncer-tool 로 한방이면 되는 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WordPress 인스턴스에 ssh로 접속하거나 AWS 콘솔에서 Connect 를 눌러서 들어갑니다. 그리고 문서의 5단계 활성화 편의 명령어 하라는대로 바로 시작하면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1695807832863&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bitnami@ip-172-26-8-27:~$ sudo /opt/bitnami/bncert-tool
----------------------------------------------------------------------------
Welcome to the Bitnami HTTPS Configuration tool.

----------------------------------------------------------------------------
Domains

Please provide a valid space-separated list of domains for which you wish to 
configure your web server.

Domain list []: sample.com www.sample.com

----------------------------------------------------------------------------
Enable/disable redirections

Please select the redirections you wish to enable or disable on your Bitnami 
installation.



Enable HTTP to HTTPS redirection [Y/n]: Y




Enable non-www to www redirection [Y/n]: n




Enable www to non-www redirection [y/N]: Y


----------------------------------------------------------------------------
Changes to perform

The following changes will be performed to your Bitnami installation:

1. Stop web server
2. Configure web server to use a free Let's Encrypt certificate for the domains: 
sample.com www.sample.com
3. Configure a cron job to automatically renew the certificate each month
4. Configure web server name to: sample.com
5. Enable HTTP to HTTPS redirection (example: redirect http://sample.com to 
https://sample.com)
6. Enable www to non-www redirection (example: redirect www.sample.com to 
sample.com)
7. Start web server once all changes have been performed



Do you agree to these changes? [Y/n]: Y


----------------------------------------------------------------------------
Create a free HTTPS certificate with Let's Encrypt

Please provide a valid e-mail address for which to associate your Let's Encrypt 
certificate.

Domain list: sample.com www.sample.com

Server name: sample.com

E-mail address []:&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;문서에 같은 내용이 있어서 반복하긴 싫지만 나의 경우엔 sample.com이 메인이고 www가 붙어도 떼어내고 리다이렉션을 시키기 위해 Enable non-www to www redirection [Y/n]: 질문에 n 라고 했습니다. 그 밑에는 반대로 하였구요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기까지 한다면 이제 자신의 워드프레스에 도메인 주소를 연결하고 https (TLS 보안 적용) 까지 적용을 마칠 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT</category>
      <category>AWS</category>
      <category>Lightsail</category>
      <category>WordPress</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/297</guid>
      <comments>https://rudalson.tistory.com/entry/AWS%EC%9D%98-LightSail%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-WordPress%EB%A5%BC-%EC%9A%B4%EC%98%81%ED%95%98%EA%B8%B0#entry297comment</comments>
      <pubDate>Wed, 27 Sep 2023 00:47:14 +0900</pubDate>
    </item>
    <item>
      <title>캐치티니핑 피규어를 모아보자. (feat. 파산핑)</title>
      <link>https://rudalson.tistory.com/entry/%EC%BA%90%EC%B9%98%ED%8B%B0%EB%8B%88%ED%95%91-%ED%94%BC%EA%B7%9C%EC%96%B4%EB%A5%BC-%EB%AA%A8%EC%95%84%EB%B3%B4%EC%9E%90-feat-%ED%8C%8C%EC%82%B0%ED%95%91</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;관심이 식질 않습니다. 이제 시즌4까지 나온다고 하니... 더 난리네요. 지갑을지켜야 되는데.... 그런데 아무리 들어도 잘 기억이 나지 않고 그 핑이 그 핑인것 같아서 정리를 해보려고 합니다. 도저히 안 외워져서 나만의 DB를 구축중입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/Lfi0Q5djlH4?si=UeF9vAfvWJTIR1Cp&quot;&gt;https://youtu.be/Lfi0Q5djlH4?si=UeF9vAfvWJTIR1Cp&lt;/a&gt;&amp;nbsp;&lt;/p&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=Lfi0Q5djlH4&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cS9LcL/hyTY5sgU7X/2geGBmq5hq7oeVfJJqvCz1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/Lfi0Q5djlH4&quot; width=&quot;860&quot; height=&quot;484&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;&lt;a href=&quot;https://www.kyeonggi.com/article/20230916580018&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.kyeonggi.com/article/20230916580018&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1695277012188&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;&amp;quot;캐치! 티니핑 시즌4 공개에&amp;quot;&amp;hellip;부모들은 '파산핑'&quot; data-og-description=&quot;&amp;ldquo;벌써 새 시즌 캐치 티니핑이 돌아오다니&amp;hellip;당분간은 아이들 데리고 장난감 코너는 안 가야겠네요&amp;rdquo; 개학 시즌을 맞아 완구 업계가 잇달아 새로운 장난감 시리즈를 출시&quot; data-og-host=&quot;www.kyeonggi.com&quot; data-og-source-url=&quot;https://www.kyeonggi.com/article/20230916580018&quot; data-og-url=&quot;https://www.kyeonggi.com/article/20230916580018&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bdCJPy/hyTY9alA3u/DQaDnLYEf9VVjs7k8pkS0k/img.jpg?width=512&amp;amp;height=289&amp;amp;face=0_0_512_289,https://scrap.kakaocdn.net/dn/uWuTy/hyTZevYXs0/tPTLptWTKDmchK2jWi3nrk/img.jpg?width=512&amp;amp;height=289&amp;amp;face=0_0_512_289,https://scrap.kakaocdn.net/dn/BZfWA/hyTY2I5Fee/h22WnqYJ6aqKQKb3lMrouK/img.jpg?width=512&amp;amp;height=289&amp;amp;face=0_0_512_289&quot;&gt;&lt;a href=&quot;https://www.kyeonggi.com/article/20230916580018&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.kyeonggi.com/article/20230916580018&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bdCJPy/hyTY9alA3u/DQaDnLYEf9VVjs7k8pkS0k/img.jpg?width=512&amp;amp;height=289&amp;amp;face=0_0_512_289,https://scrap.kakaocdn.net/dn/uWuTy/hyTZevYXs0/tPTLptWTKDmchK2jWi3nrk/img.jpg?width=512&amp;amp;height=289&amp;amp;face=0_0_512_289,https://scrap.kakaocdn.net/dn/BZfWA/hyTY2I5Fee/h22WnqYJ6aqKQKb3lMrouK/img.jpg?width=512&amp;amp;height=289&amp;amp;face=0_0_512_289');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;&quot;캐치! 티니핑 시즌4 공개에&quot;&amp;hellip;부모들은 '파산핑'&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;ldquo;벌써 새 시즌 캐치 티니핑이 돌아오다니&amp;hellip;당분간은 아이들 데리고 장난감 코너는 안 가야겠네요&amp;rdquo; 개학 시즌을 맞아 완구 업계가 잇달아 새로운 장난감 시리즈를 출시&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.kyeonggi.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정신을 차려서 지갑을 최대한 지켜야 겠습니다. 그래도 자꾸 보고 있으면 귀엽긴 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;가지고 있는 핑들&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;그림핑&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;그림핑.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;732&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVCRBJ/btsvaq1JMPD/1vi03HEyJ7iMmQkYCaalgK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVCRBJ/btsvaq1JMPD/1vi03HEyJ7iMmQkYCaalgK/img.jpg&quot; data-alt=&quot;이건 딱봐도 그림 그리는 화가 같음.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVCRBJ/btsvaq1JMPD/1vi03HEyJ7iMmQkYCaalgK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVCRBJ%2Fbtsvaq1JMPD%2F1vi03HEyJ7iMmQkYCaalgK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;320&quot; height=&quot;732&quot; data-filename=&quot;그림핑.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;732&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이건 딱봐도 그림 그리는 화가 같음.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;하츄핑&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;하츄핑.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;727&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pDY9B/btsuZ1vvGvR/A0ea1wB5NPuMvS2X1kW2S0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pDY9B/btsuZ1vvGvR/A0ea1wB5NPuMvS2X1kW2S0/img.jpg&quot; data-alt=&quot;시즌1부터 나온 핑 같음.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pDY9B/btsuZ1vvGvR/A0ea1wB5NPuMvS2X1kW2S0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpDY9B%2FbtsuZ1vvGvR%2FA0ea1wB5NPuMvS2X1kW2S0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;320&quot; height=&quot;364&quot; data-filename=&quot;하츄핑.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;727&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;시즌1부터 나온 핑 같음.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;꼼딱핑&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;꼼딱핑.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;899&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYp7ME/btsvbCHEnNn/YEsH1nUFfwWBPtojcMNkO0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYp7ME/btsvbCHEnNn/YEsH1nUFfwWBPtojcMNkO0/img.jpg&quot; data-alt=&quot;이름 정말 잘 지었음&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYp7ME/btsvbCHEnNn/YEsH1nUFfwWBPtojcMNkO0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYp7ME%2FbtsvbCHEnNn%2FYEsH1nUFfwWBPtojcMNkO0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;320&quot; height=&quot;899&quot; data-filename=&quot;꼼딱핑.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;899&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이름 정말 잘 지었음&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;빙글핑&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;빙글핑.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;853&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7q1pl/btsvap2SOp5/HsGZMQBNzefdnr0AxfJBCk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7q1pl/btsvap2SOp5/HsGZMQBNzefdnr0AxfJBCk/img.jpg&quot; data-alt=&quot;왜 빙글인지는 모르겠습니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7q1pl/btsvap2SOp5/HsGZMQBNzefdnr0AxfJBCk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7q1pl%2Fbtsvap2SOp5%2FHsGZMQBNzefdnr0AxfJBCk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;320&quot; height=&quot;853&quot; data-filename=&quot;빙글핑.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;853&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;왜 빙글인지는 모르겠습니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;힘내핑&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;힘내핑.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;843&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FvJYa/btsvbCnmBL4/0GRh1LKDyQM6EdSJaIExMK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FvJYa/btsvbCnmBL4/0GRh1LKDyQM6EdSJaIExMK/img.jpg&quot; data-alt=&quot;힘내라고 응원하는 것 같아 힘내핑인가봅니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FvJYa/btsvbCnmBL4/0GRh1LKDyQM6EdSJaIExMK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFvJYa%2FbtsvbCnmBL4%2F0GRh1LKDyQM6EdSJaIExMK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;320&quot; height=&quot;843&quot; data-filename=&quot;힘내핑.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;843&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;힘내라고 응원하는 것 같아 힘내핑인가봅니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;아아핑&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;아아핑.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;860&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dMhL1F/btsvbC1Zovd/DcvLGPgh9KuIRSGLnlvO71/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dMhL1F/btsvbC1Zovd/DcvLGPgh9KuIRSGLnlvO71/img.jpg&quot; data-alt=&quot;들어본 이름 중 가장 웃긴 핑입니다. 아아~~ 핑&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dMhL1F/btsvbC1Zovd/DcvLGPgh9KuIRSGLnlvO71/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdMhL1F%2FbtsvbC1Zovd%2FDcvLGPgh9KuIRSGLnlvO71%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;320&quot; height=&quot;860&quot; data-filename=&quot;아아핑.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;860&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;들어본 이름 중 가장 웃긴 핑입니다. 아아~~ 핑&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;주르핑&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;주르핑.jpg&quot; data-origin-width=&quot;1547&quot; data-origin-height=&quot;2135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTEz1j/btsvaD04azT/U2r7mGxG3a8qsPkNTBZ7F0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTEz1j/btsvaD04azT/U2r7mGxG3a8qsPkNTBZ7F0/img.jpg&quot; data-alt=&quot;나뭇잎 들고 다니던데 왜 주르인지는 모르겠음.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTEz1j/btsvaD04azT/U2r7mGxG3a8qsPkNTBZ7F0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTEz1j%2FbtsvaD04azT%2FU2r7mGxG3a8qsPkNTBZ7F0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;320&quot; height=&quot;2135&quot; data-filename=&quot;주르핑.jpg&quot; data-origin-width=&quot;1547&quot; data-origin-height=&quot;2135&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;나뭇잎 들고 다니던데 왜 주르인지는 모르겠음.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;아야핑&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230920_203003.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;883&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cL1Bn5/btsu9SjROaV/OcT2R7xYRFIXlAhM2h5EiK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cL1Bn5/btsu9SjROaV/OcT2R7xYRFIXlAhM2h5EiK/img.jpg&quot; data-alt=&quot;잘보면 반창고 붙이고 있는 것 같음.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cL1Bn5/btsu9SjROaV/OcT2R7xYRFIXlAhM2h5EiK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcL1Bn5%2Fbtsu9SjROaV%2FOcT2R7xYRFIXlAhM2h5EiK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;320&quot; height=&quot;883&quot; data-filename=&quot;20230920_203003.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;883&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;잘보면 반창고 붙이고 있는 것 같음.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;나나핑&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;나나핑.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;803&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dnthk8/btsvaG58nme/Bv14kkpgpRvbRrW0tvB7s0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dnthk8/btsvaG58nme/Bv14kkpgpRvbRrW0tvB7s0/img.jpg&quot; data-alt=&quot;왜 나나인지는 모르겠음.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dnthk8/btsvaG58nme/Bv14kkpgpRvbRrW0tvB7s0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdnthk8%2FbtsvaG58nme%2FBv14kkpgpRvbRrW0tvB7s0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;320&quot; height=&quot;803&quot; data-filename=&quot;나나핑.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;803&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;왜 나나인지는 모르겠음.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;퐁당핑&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;퐁당핑.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;931&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zlq7C/btsu9UDwhzA/CzKRaORRlxLCciuQ0ATkgK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zlq7C/btsu9UDwhzA/CzKRaORRlxLCciuQ0ATkgK/img.jpg&quot; data-alt=&quot;수영복을 입고 소라를 들고 있으니 왠지 물에 퐁당 할 것 같긴 함.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zlq7C/btsu9UDwhzA/CzKRaORRlxLCciuQ0ATkgK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fzlq7C%2Fbtsu9UDwhzA%2FCzKRaORRlxLCciuQ0ATkgK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;320&quot; height=&quot;931&quot; data-filename=&quot;퐁당핑.jpg&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;931&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;수영복을 입고 소라를 들고 있으니 왠지 물에 퐁당 할 것 같긴 함.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;가지고 싶은 것들 (wish list)&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;패션핑&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;패션핑 (1).png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;850&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cas6v4/btsuREU7voV/8f8fVQcuHx5uA3IA39sCS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cas6v4/btsuREU7voV/8f8fVQcuHx5uA3IA39sCS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cas6v4/btsuREU7voV/8f8fVQcuHx5uA3IA39sCS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcas6v4%2FbtsuREU7voV%2F8f8fVQcuHx5uA3IA39sCS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;680&quot; data-filename=&quot;패션핑 (1).png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;850&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;아라핑&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;아라핑 (1).jpeg&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/thYsW/btsuZ2HYbcu/pEKkqmIjqC84Ppi9eUF14k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/thYsW/btsuZ2HYbcu/pEKkqmIjqC84Ppi9eUF14k/img.jpg&quot; data-alt=&quot;뭔가 마법사 같은? 많이 알아서 아라핑 같음&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/thYsW/btsuZ2HYbcu/pEKkqmIjqC84Ppi9eUF14k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FthYsW%2FbtsuZ2HYbcu%2FpEKkqmIjqC84Ppi9eUF14k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;646&quot; height=&quot;720&quot; data-filename=&quot;아라핑 (1).jpeg&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;뭔가 마법사 같은? 많이 알아서 아라핑 같음&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;빨리핑&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;빨리핑 (1).png&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;700&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkfJ3V/btsu0sM6PTt/Iv1lnX1D7gHTIvG1xv4czk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkfJ3V/btsu0sM6PTt/Iv1lnX1D7gHTIvG1xv4czk/img.png&quot; data-alt=&quot;무슨 핑인지 감은 안오지만 이름을 보면 감이 옴.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkfJ3V/btsu0sM6PTt/Iv1lnX1D7gHTIvG1xv4czk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkfJ3V%2Fbtsu0sM6PTt%2FIv1lnX1D7gHTIvG1xv4czk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;574&quot; height=&quot;700&quot; data-filename=&quot;빨리핑 (1).png&quot; data-origin-width=&quot;574&quot; data-origin-height=&quot;700&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;무슨 핑인지 감은 안오지만 이름을 보면 감이 옴.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;얌얌핑&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;얌얌핑 (1).jpeg&quot; data-origin-width=&quot;559&quot; data-origin-height=&quot;614&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1WMqv/btsu8iQMUJN/TglfvH6uYjXoPG6SaMQChk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1WMqv/btsu8iQMUJN/TglfvH6uYjXoPG6SaMQChk/img.jpg&quot; data-alt=&quot;야미야미. 요리하고 잘 먹나봅니다. 얌얌&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1WMqv/btsu8iQMUJN/TglfvH6uYjXoPG6SaMQChk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1WMqv%2Fbtsu8iQMUJN%2FTglfvH6uYjXoPG6SaMQChk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;559&quot; height=&quot;614&quot; data-filename=&quot;얌얌핑 (1).jpeg&quot; data-origin-width=&quot;559&quot; data-origin-height=&quot;614&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;야미야미. 요리하고 잘 먹나봅니다. 얌얌&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뜨거핑&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;행운핑&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다해핑&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삐뽀핑&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;꾸래핑&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;꾸며핑&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>잡담</category>
      <category>티니핑</category>
      <category>파산핑</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/296</guid>
      <comments>https://rudalson.tistory.com/entry/%EC%BA%90%EC%B9%98%ED%8B%B0%EB%8B%88%ED%95%91-%ED%94%BC%EA%B7%9C%EC%96%B4%EB%A5%BC-%EB%AA%A8%EC%95%84%EB%B3%B4%EC%9E%90-feat-%ED%8C%8C%EC%82%B0%ED%95%91#entry296comment</comments>
      <pubDate>Thu, 21 Sep 2023 15:17:23 +0900</pubDate>
    </item>
    <item>
      <title>히스토불린 주사 중간 후기 - 알레르기/알러지비염</title>
      <link>https://rudalson.tistory.com/entry/%ED%9E%88%EC%8A%A4%ED%86%A0%EB%B6%88%EB%A6%B0-%EC%A3%BC%EC%82%AC-%EC%A4%91%EA%B0%84-%ED%9B%84%EA%B8%B0-%EC%95%8C%EB%A0%88%EB%A5%B4%EA%B8%B0%EC%95%8C%EB%9F%AC%EC%A7%80%EB%B9%84%EC%97%BC</link>
      <description>&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;616&quot; data-origin-height=&quot;288&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c32D76/btsueN5lHTJ/B4VSNWdnKiKkFqoWwPEbC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c32D76/btsueN5lHTJ/B4VSNWdnKiKkFqoWwPEbC1/img.png&quot; data-alt=&quot;히스토불린 주사? 이게 뭐지?&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c32D76/btsueN5lHTJ/B4VSNWdnKiKkFqoWwPEbC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc32D76%2FbtsueN5lHTJ%2FB4VSNWdnKiKkFqoWwPEbC1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;616&quot; height=&quot;288&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;288&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;히스토불린 주사? 이게 뭐지?&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언젠가는 30년도 넘게 앓아온 나의 비염 증상을 정리해야 겠지만 히스토불린 주사를 맞고 있는 중간과정에서 저의 경험을 남깁니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;히스토불린 주사 치료 시작&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비염증상이 늘 있는 편이라 2~3일에 한번씩 2세대 항히스타민제를 먹는 편인데 위의 저 네이버 리뷰글을 보고 관심을 가지게 되었습니다. 비염경력 30년 차지만 저 주사는 처음 들어 보는 것이었거든요. 이 주사가 무엇인지? 후기는 어떤지등을 찾아봤는데 생각보단 자료가 많지 않았습니다. 대략적인 것은 아래의 영상으로 파악했습니다.&amp;nbsp;&lt;/p&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=f4v2eFYAL3Y&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bcaUIk/hyTVP4M7Js/3YWkFepZt0Oy2vpJMqawTk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=500_234_734_488&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;알러지면역치료제  : 히스토불린, 졸레어 모두 파헤쳐보자.&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/f4v2eFYAL3Y&quot; width=&quot;860&quot; height=&quot;484&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;제가 가려던 병원 리뷰 글이었지만 사실 처음부터 이 주사를 맞으러 왔습니다 하면 안될 것 같기에 비염때문에 몇번 진료를 받았었습니다. 그리고 9월 6일 수요일 주사를 맞으러 갔었습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다행히 비염를 앓던 경력이 있기에 주사를 맞을 수 있다고 하셔서 맞게되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;히스토불린 주사치료는 1주일 간격으로 총 3번 맞은 후 3개월에 한번씩 맞으면 된다 하시더라구요. 그래서 9월 6일 1차 주사를 맞았습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1차 주사 후기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주사를 맞을 때도 가끔 부작용이 있을 수 있으니 최소 20분 정도 병원에서 바로 퇴원하지 말래서 기다렸다가 퇴원했습니다. 그리고 주사 맞은 당일은 아무 이상이 없는 것 같았습니다. 몸상태가 별 이상 없는것 같았고 평소처럼 밤잠에 들었습니다. 그런데 소변이 마려워 깼는데. 저에게 있었던 증상은 아래와 같습니다.&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;/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;p data-ke-size=&quot;size16&quot;&gt;아침에 깼을 때도 결국 출근을 못했습니다. 어지럼증이 계속되었는데 새벽보다는 덜 심했습니다. 그래서 새벽때보다는 회복되고 있다고 생각은 했지만 출근은 못하겠더라구요. 반차 쓰고 오후에 출근했습니다. 서서히 회복은 되었는데 메스꺼움이나 어지럼증등은 3~4일 정도 까지 갔습니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2차 주사 후기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1차 때 왔던 부작용은 히스토불린 주사 영향일거라 90% 확신은 하지만 (아닐수도 있을겁니다. 음식 문제나...) 9월 13일 2차를 맞으러 갔습니다. 의사선생님께 저의 증상을 말씀드렸더니 접종을 중단하자고 하시더라구요. 선생님 입장에서는 너무나도 당연한 권고라 생각되지만 제가 꼭 맞겠다고 했습니다.&amp;nbsp;비염인들은 아실겁니다. 저에겐 중요한 치료입니다. 히스토불린 자체가 저에게 효과 없을 수도 있겠지만 끝까지 가봐야 안다고 생각합니다. (치료주기 끝까지)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러자 선생님께서는 2차 때도 같은 증세가 나오면 그땐 중단해야 된다고 말씀하셨고 전 거기엔 동의했습니다. 2차 주사를 맞았을 때는 1차때의 특이한 증세 때문인지 오후 내내 기운이 없었습니다. 왠지 부작용이 오고 있는 듯한 느낌이었는데 왠걸.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;히스토불린.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/U9XVo/btsudQ2rrZt/5Lr1venl61qZME5agi0XP0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/U9XVo/btsudQ2rrZt/5Lr1venl61qZME5agi0XP0/img.jpg&quot; data-alt=&quot;굿닥을 깔어말어?&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/U9XVo/btsudQ2rrZt/5Lr1venl61qZME5agi0XP0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FU9XVo%2FbtsudQ2rrZt%2F5Lr1venl61qZME5agi0XP0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;480&quot; height=&quot;543&quot; data-filename=&quot;히스토불린.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1222&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;굿닥을 깔어말어?&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무일이 없었습니다. 자고 일어났는데 새벽에 깨지도 않았지만 딱히 어지럼증이 오지 않았습니다. 그 때 들었던 생각이 '아~ 3차 맞을 수 있겠다...' 였던것 같네요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;히스토불린 주사의 효과?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아직 3번의 접종 주기를 마친 것이 아니기에 효과를 이야기 하기엔 조금 이릅니다만. 지금 드는 생각으로는 효과가 없다고는 못하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;9월 20일에 3차를 맞으러 가겠지만 2번 맞는 동안 비염 반응으로 총 4번의 2세대 항히스타민제를 복용했고 약국약은 2~3번 먹었습니다. 콧물이 나오더라구요. 그래서 난 히스토불린 효과가 없나? 싶긴 한데 이전보다는 나은 느낌은 있습니다. 이게 어쩌면 믿고 싶은 소망이 담겨 있기도 해서 객관적이지 못한 느낌이라 생각합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 가령, 재채기를 하면 바로 코안에 물이 차오르면서 재채기와 콧물이 계속 되는 편인데 몇번 정도는 콧물량이 줄은 것 같다는 느낌을 받았습니다. 뭐 늘 비슷한 패턴이라 그렇게 살아왔는데 갑자기 뭔가가 양이 줄은 느낌?&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;희망이 있을지는 좀 더 지켜봐야 겠습니다. 비용은 진료비포함으로 계산만 했기에 정확하진 않지만 대략 3만5천 ~ 4만원 사이인것 같습니다. 그리고 3차까지 해보고 실비청구도 해볼 계획입니다.&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;치료주기 끝나고 좀 더 후에 또 다시 정리해봐야 겠습니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>잡담</category>
      <category>비염</category>
      <category>히스토불린</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/295</guid>
      <comments>https://rudalson.tistory.com/entry/%ED%9E%88%EC%8A%A4%ED%86%A0%EB%B6%88%EB%A6%B0-%EC%A3%BC%EC%82%AC-%EC%A4%91%EA%B0%84-%ED%9B%84%EA%B8%B0-%EC%95%8C%EB%A0%88%EB%A5%B4%EA%B8%B0%EC%95%8C%EB%9F%AC%EC%A7%80%EB%B9%84%EC%97%BC#entry295comment</comments>
      <pubDate>Sun, 17 Sep 2023 17:54:58 +0900</pubDate>
    </item>
    <item>
      <title>Supabase의 Row Level Security (Feat. Postgres)</title>
      <link>https://rudalson.tistory.com/entry/Supabase%EC%9D%98-Row-Level-Security-Feat-Postgres</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이글은 &lt;a href=&quot;https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://supabase.com/docs/learn/auth-deep-dive/auth-row-level-security&lt;/a&gt;&amp;nbsp;를 번역한 글입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;About&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Supabase 대시보드에서 Row Level Security(이후 행 수준 보안)을 활성화하고 Postgres 정책을 작성하여 데이터베이스 테이블에 대한 액세스를 제한하는 방법을 알아보세요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Watch&lt;/h3&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=qY_iQ10IUhs&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cOwBiD/hyTgUZQJrk/1bCgrP9jsqAkXBqq2VKyWK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=992_202_1066_282&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;Supabase Auth Deep Dive Part 2: Restrict Table Access&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/qY_iQ10IUhs&quot; width=&quot;860&quot; height=&quot;484&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;h3 data-ke-size=&quot;size23&quot;&gt;Securing&amp;nbsp;Your&amp;nbsp;Tables&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Supabase에서는&amp;nbsp;클라이언트(주로&amp;nbsp;웹&amp;nbsp;브라우저)에서&amp;nbsp;직접&amp;nbsp;데이터에&amp;nbsp;액세스할&amp;nbsp;수&amp;nbsp;있으며,&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;Supabase&amp;nbsp;URL과&amp;nbsp;Anon&amp;nbsp;키를&amp;nbsp;supabase-js에&amp;nbsp;전달하면&amp;nbsp;됩니다:&lt;/p&gt;
&lt;pre id=&quot;code_1688985171418&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const supabase = createClient(
  'https://qwertyuiop.supabase.co',
  'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'
)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;나의 Anon 보안키가 클라이언트에 있으면 누군가 내 자바스크립트를 읽고 키를 훔칠 수 없나요?&quot;라는 흥미로운 질문이 제기될 수 있지만, 대답은 '예'입니다. 이것이 바로 Postgres 정책이 필요한 이유입니다.&lt;br /&gt;&lt;br /&gt;Postgres의&amp;nbsp;&quot;행&amp;nbsp;수준&amp;nbsp;보안&quot;&amp;nbsp;정책을&amp;nbsp;사용하면&amp;nbsp;기본적으로&amp;nbsp;익명&amp;nbsp;키가&amp;nbsp;액세스할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;데이터와&amp;nbsp;액세스할&amp;nbsp;수&amp;nbsp;없는&amp;nbsp;데이터에&amp;nbsp;대한&amp;nbsp;규칙을&amp;nbsp;설정할&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;예를&amp;nbsp;들어,&amp;nbsp;익명&amp;nbsp;키는&amp;nbsp;특정&amp;nbsp;테이블에서&amp;nbsp;읽기만&amp;nbsp;가능하고&amp;nbsp;쓰기,&amp;nbsp;업데이트,&amp;nbsp;삭제는&amp;nbsp;할&amp;nbsp;수&amp;nbsp;없도록&amp;nbsp;설정할&amp;nbsp;수&amp;nbsp;있습니다.&lt;br /&gt;&lt;br /&gt;그리고&amp;nbsp;이러한&amp;nbsp;규칙은&amp;nbsp;원하는&amp;nbsp;만큼&amp;nbsp;복잡할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;예를&amp;nbsp;들어&amp;nbsp;목요일&amp;nbsp;오후&amp;nbsp;4시에서&amp;nbsp;6시&amp;nbsp;사이에&amp;nbsp;삽입된&amp;nbsp;행&amp;nbsp;중&amp;nbsp;id&amp;nbsp;열이&amp;nbsp;짝수인&amp;nbsp;행만&amp;nbsp;익명&amp;nbsp;키가&amp;nbsp;삭제할&amp;nbsp;수&amp;nbsp;있다고&amp;nbsp;말할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;꽤&amp;nbsp;이상하지만&amp;nbsp;정책의&amp;nbsp;힘을&amp;nbsp;보여줍니다.&lt;br /&gt;&lt;br /&gt;리더보드&amp;nbsp;테이블을&amp;nbsp;만든다고&amp;nbsp;가정해&amp;nbsp;보겠습니다.&amp;nbsp;웹사이트&amp;nbsp;사용자가&amp;nbsp;순위표를&amp;nbsp;읽을&amp;nbsp;수는&amp;nbsp;있지만&amp;nbsp;작성,&amp;nbsp;업데이트,&amp;nbsp;삭제는&amp;nbsp;할&amp;nbsp;수&amp;nbsp;없도록&amp;nbsp;하려고&amp;nbsp;합니다.&amp;nbsp;먼저&amp;nbsp;SQL로&amp;nbsp;테이블을&amp;nbsp;정의하고&amp;nbsp;몇&amp;nbsp;가지&amp;nbsp;더미&amp;nbsp;데이터를&amp;nbsp;추가합니다:&lt;/p&gt;
&lt;pre id=&quot;code_1688985445783&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;create table leaderboard (
  name text,
  score int
);

insert into leaderboard
  (name, score)
values
  ('Paul', 100),
  ('Leto', 50),
  ('Chani', 200);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 데이터를 읽을 수 있는 클라이언트를 설정해 보겠습니다. 라이브로 보여주기 위해 Repl로 작성하였습니다. &lt;a href=&quot;https://replit.com/@awalias/supabase-leaderboard-demo#index.js&quot;&gt;https://replit.com/@awalias/supabase-leaderboard-demo#index.js&lt;/a&gt;&lt;span style=&quot;background-color: #1c1c1c; color: #bbbbbb; text-align: start;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1688985664298&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;supabase-leaderboard-demo&quot; data-og-description=&quot;Run Node.js code live in your browser. Write and run code in 50+ languages online with Replit, a powerful IDE, compiler, &amp;amp; interpreter.&quot; data-og-host=&quot;replit.com&quot; data-og-source-url=&quot;https://replit.com/@awalias/supabase-leaderboard-demo#index.js&quot; data-og-url=&quot;https://replit.com/@awalias/supabase-leaderboard-demo#index.js&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://replit.com/@awalias/supabase-leaderboard-demo#index.js&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://replit.com/@awalias/supabase-leaderboard-demo#index.js&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;supabase-leaderboard-demo&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Run Node.js code live in your browser. Write and run code in 50+ languages online with Replit, a powerful IDE, compiler, &amp;amp; interpreter.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;replit.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스니펫을 복사하면 자신만의 Supabase URL과 익명 키를 연결할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 통해 테이블을 자유롭게 읽고 쓸 수 있다는 것을 알 수 있습니다:&lt;/p&gt;
&lt;pre id=&quot;code_1688985766197&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Writing
let { data, error } = await supabase.from('leaderboard').insert({ name: 'Bob', score: 99999 })

// Reading
let { data, error } = await supabase
  .from('leaderboard')
  .select('name, score')
  .order('score', { ascending: false })&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제&amp;nbsp;액세스를&amp;nbsp;제한해&amp;nbsp;보겠습니다.&amp;nbsp;테이블을&amp;nbsp;완전히&amp;nbsp;제한하는&amp;nbsp;것으로&amp;nbsp;시작하겠습니다.&amp;nbsp;SQL&amp;nbsp;편집기에서&amp;nbsp;쿼리를&amp;nbsp;작성하여&amp;nbsp;이&amp;nbsp;작업을&amp;nbsp;수행할&amp;nbsp;수&amp;nbsp;있습니다:&lt;/p&gt;
&lt;pre id=&quot;code_1688985838690&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ALTER TABLE leaderboard ENABLE ROW LEVEL SECURITY;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;를 클릭하거나 Supabase 대시보드에서 Auth &amp;gt; Policies 으로 이동하여 순위표 표의 빨간색 자물쇠를 클릭하여 흰색으로 바꿉니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;auth-deep-dive-2.webp&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bm6BtZ/btsm8QVGZcz/kuBhkMGYziGYuf0AarjX9K/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bm6BtZ/btsm8QVGZcz/kuBhkMGYziGYuf0AarjX9K/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bm6BtZ/btsm8QVGZcz/kuBhkMGYziGYuf0AarjX9K/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbm6BtZ%2Fbtsm8QVGZcz%2FkuBhkMGYziGYuf0AarjX9K%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1001&quot; height=&quot;350&quot; data-filename=&quot;auth-deep-dive-2.webp&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제&amp;nbsp;다음과&amp;nbsp;같은&amp;nbsp;오류와&amp;nbsp;함께&amp;nbsp;읽기&amp;nbsp;및&amp;nbsp;쓰기가&amp;nbsp;모두&amp;nbsp;실패하는&amp;nbsp;것을&amp;nbsp;알&amp;nbsp;수&amp;nbsp;있습니다:&lt;/p&gt;
&lt;pre id=&quot;code_1688985998760&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  hint: null,
  details: null,
  code: '42501',
  message: 'new row violates row-level security policy for table &quot;leaderboard&quot;'
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 인증에서 익명 키(JWT)를 보내는 모든 사용자에 대해 테이블을 읽을 수 있도록 정책을 추가해야 합니다. Authorization:&amp;nbsp;Bearer 헤더에 추가해야 합니다.&lt;br /&gt;&lt;br /&gt;SQL에서는&amp;nbsp;다음과&amp;nbsp;같이&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있습니다:&lt;/p&gt;
&lt;pre id=&quot;code_1688986086195&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE POLICY anon_read_leaderboard ON leaderboard
    FOR SELECT
    TO 'anon'
    USING (true);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 anon_read_leaderboard는 정책에 대해 선택하는 이름일 뿐입니다. leaderboard는 테이블 이름입니다. FOR SELECT는 이 정책이 읽기(또는 SQL에서 &quot;선택&quot;)에 대해서만 적용되기를 원한다는 의미입니다. TO는 이 정책이 anon Postgres 역할에만 적용됨을 의미합니다. 마지막으로 규칙 자체는 'true'로, anon 사용자에 대한 모든 select을 허용한다는 의미입니다.&lt;br /&gt;&lt;br /&gt;대시보드를 사용하여 정책을 추가하려면 정책 탭에서 &quot;Add Policy&quot;를 클릭하고 다음과 같은 정책을 만들면 됩니다:&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;auth-deep-dive-2-2.webp&quot; data-origin-width=&quot;460&quot; data-origin-height=&quot;245&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTga7h/btsm928Yozk/NfNUe3f8a1APQ2NliMKexk/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTga7h/btsm928Yozk/NfNUe3f8a1APQ2NliMKexk/img.webp&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTga7h/btsm928Yozk/NfNUe3f8a1APQ2NliMKexk/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTga7h%2Fbtsm928Yozk%2FNfNUe3f8a1APQ2NliMKexk%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;460&quot; height=&quot;245&quot; data-filename=&quot;auth-deep-dive-2-2.webp&quot; data-origin-width=&quot;460&quot; data-origin-height=&quot;245&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제&amp;nbsp;리더보드에서&amp;nbsp;읽을&amp;nbsp;수는&amp;nbsp;있지만&amp;nbsp;쓰기,&amp;nbsp;업데이트,&amp;nbsp;삭제는&amp;nbsp;여전히&amp;nbsp;불가능하며,&amp;nbsp;이는&amp;nbsp;저희가&amp;nbsp;원했던&amp;nbsp;바로&amp;nbsp;그&amp;nbsp;결과입니다!&lt;br /&gt;&lt;br /&gt;service_role API 키를 사용하여 이러한 행 수준 보안 정책을 우회할 수 있다는 점을 다시 한 번 알려드립니다. 하지만 이 키를 클라이언트에 포함시켜서 유출되지 않도록 각별히 주의하세요. 이 키는 내부 관리 도구를 구축하거나 API를 통해 데이터를 대량으로 삽입하거나 삭제해야 하는 경우에 유용할 수 있습니다.&lt;br /&gt;&lt;br /&gt;다음 가이드에서는 정책을 사용자 계정과 함께 사용하여 사용자별로 데이터에 대한 액세스를 제한할 수 있는 방법에 대해 살펴보겠습니다: &lt;a href=&quot;https://supabase.com/docs/learn/auth-deep-dive/auth-policies&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part Three: Policies&lt;/a&gt;를 시청하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/기타</category>
      <category>supabase</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/294</guid>
      <comments>https://rudalson.tistory.com/entry/Supabase%EC%9D%98-Row-Level-Security-Feat-Postgres#entry294comment</comments>
      <pubDate>Mon, 10 Jul 2023 19:54:29 +0900</pubDate>
    </item>
    <item>
      <title>웹사이트가 장애시 Static 사이트로 Failover 하기 (Route53)</title>
      <link>https://rudalson.tistory.com/entry/%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8%EA%B0%80-%EC%9E%A5%EC%95%A0%EC%8B%9C-Static-%EC%82%AC%EC%9D%B4%ED%8A%B8%EB%A1%9C-Failover-%ED%95%98%EA%B8%B0-Route53</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;현재 런칭 직전의 신규 개발 프로젝트가 있습니다. 인프라를 구성중에 있는데 장애 발생시 장애로 잠시 기다려 달라는 페이지로 failover 하도록 하려고 합니다. AWS에서 배포 준비중인데 우리가 필요한 상황에 딱 맞게 도움을 준 글이 있어 이를 번역하여 기록합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글은 &lt;a title=&quot;How do I configure my website to fail over to an S3 bucket when a Route 53 health check fails?&quot; href=&quot;https://repost.aws/ko/knowledge-center/fail-over-s3-r53&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;i&gt;How&amp;nbsp;do&amp;nbsp;I&amp;nbsp;configure&amp;nbsp;my&amp;nbsp;website&amp;nbsp;to&amp;nbsp;fail&amp;nbsp;over&amp;nbsp;to&amp;nbsp;an&amp;nbsp;S3&amp;nbsp;bucket&amp;nbsp;when&amp;nbsp;a&amp;nbsp;Route&amp;nbsp;53&amp;nbsp;health&amp;nbsp;check&amp;nbsp;fails?&lt;/i&gt;&lt;/a&gt; 을 번역한 것입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2019-02-13_01-05-29-0096a577e991922c675f02801d48a8a4.png&quot; data-origin-width=&quot;912&quot; data-origin-height=&quot;444&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ei4ZAZ/btshBkADUAH/VikIZ7rUy0EkvWKxisIbaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ei4ZAZ/btshBkADUAH/VikIZ7rUy0EkvWKxisIbaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ei4ZAZ/btshBkADUAH/VikIZ7rUy0EkvWKxisIbaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fei4ZAZ%2FbtshBkADUAH%2FVikIZ7rUy0EkvWKxisIbaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;912&quot; height=&quot;444&quot; data-filename=&quot;2019-02-13_01-05-29-0096a577e991922c675f02801d48a8a4.png&quot; data-origin-width=&quot;912&quot; data-origin-height=&quot;444&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Route53에서 헬스 체크에 실패한 웹사이트를 S3 버킷(정적 페이지)으로 장애 조치되도록 구성하려면 어떻게 해야 하나요?&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;사전 확인 사항&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Amazon Route 53 호스트 영역으로 활성화 되어 있어야 합니다.&lt;/li&gt;
&lt;li&gt;웹사이트의 동적 버전을 Amazon EC2(Amazon Elastic Compute Cloud) 인스턴스에서 호스팅하고 있습니다.&lt;/li&gt;
&lt;li&gt;Route 53 호스트 영역이 이미 웹사이트 트래픽을 Amazon EC2 인스턴스로 성공적으로 라우팅하고 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Note&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;버킷&amp;nbsp;이름을&amp;nbsp;지정할&amp;nbsp;때&amp;nbsp;S3&amp;nbsp;버킷&amp;nbsp;이름이&amp;nbsp;레코드&amp;nbsp;이름과&amp;nbsp;동일한지&amp;nbsp;확인하세요.&lt;/li&gt;
&lt;li&gt;Amazon S3는 HTTP 프로토콜만 지원합니다. 웹사이트에서 HTTPS를 사용하는 경우 장애 조치 시 페이지에 &quot;이 페이지를 표시할 수 없습니다&quot;라는 오류가 표시됩니다. HTTPS 요청을 제공하려면 &lt;a href=&quot;https://repost.aws/knowledge-center/cloudfront-https-requests-s3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;How do I use CloudFront to serve HTTPS requests for my Amazon S3 bucket?&lt;/a&gt; 글을 참조하세요&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Route53 헬스 체크 생성하기&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Amazon&amp;nbsp;Route&amp;nbsp;53&amp;nbsp;콘솔을&amp;nbsp;연&amp;nbsp;다음&amp;nbsp;상태&amp;nbsp;확인을&amp;nbsp;선택합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Create health check&lt;/b&gt; 를 선택하고 다음을 입력합니다:&lt;br /&gt;&lt;b&gt;Name&lt;/b&gt;에 상태 점검의 이름을 입력합니다.&lt;br /&gt;&lt;b&gt;What to monitor&lt;/b&gt;에서 &lt;b&gt;Endpoint&lt;/b&gt;를 선택합니다.&lt;br /&gt;&lt;b&gt;Specify endpoint by&lt;/b&gt;에서 &lt;b&gt;IP address&lt;/b&gt;를 선택합니다.&lt;br /&gt;&lt;b&gt;Protocol&lt;/b&gt;에서 &lt;b&gt;HTTP&lt;/b&gt;를 선택합니다.&lt;br /&gt;&lt;b&gt;IP address&lt;/b&gt; 및 &lt;b&gt;Host name&lt;/b&gt;에 EC2 인스턴스의 IP와 호스트 이름을 입력합니다.&lt;br /&gt;&lt;b&gt;Port&lt;/b&gt;에 &lt;b&gt;80&lt;/b&gt;을 선택합니다.&lt;br /&gt;&lt;b&gt;Path&lt;/b&gt;를 비워 두거나 확인하려는 페이지를 지정합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Next&lt;/b&gt;를 선택합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Create alarm&lt;/b&gt;에서 &lt;b&gt;Yes&lt;/b&gt;를 선택합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Create health check&lt;/b&gt;를 선택합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Note: 자세한 내용은 &lt;a style=&quot;background-color: #ffffff; color: #0073bb; text-align: start;&quot; href=&quot;https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/health-checks-creating.html#health-checks-creating-values-advanced&quot;&gt;Creating and updating health checks&lt;/a&gt;를 참조하세요.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;기본 엔드포인트에 대한 레코드 세트 만들기&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Amazon Route 53 콘솔을 연 다음 &lt;b&gt;Hosted zones&lt;/b&gt;을 선택합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Domain Name&lt;/b&gt;에서 레코드를 만들려는 호스팅된 영역의 도메인을 선택합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Create record&lt;/b&gt;를 선택한 다음 이 값으로 레코드 세트를 만듭니다(다른 모든 필드에는 사용 사례에 맞는 값을 사용하세요):&lt;br /&gt;&lt;b&gt;Record Name&lt;/b&gt;에 이름을 입력합니다. S3 버킷 이름과 동일한지 확인하세요.&lt;br /&gt;&lt;b&gt;Record type&lt;/b&gt;에 대해 &lt;b&gt;A &amp;ndash; Routes traffic to an IPV4 address and some AWS resources&lt;/b&gt;을 선택합니다.&lt;br /&gt;&lt;b&gt;Alias&lt;/b&gt;은 &lt;b&gt;Off&lt;/b&gt;로 유지합니다.&lt;br /&gt;&lt;b&gt;Routing Policy&lt;/b&gt;에서 &lt;b&gt;Failover&lt;/b&gt;를 선택합니다.&lt;br /&gt;&lt;b&gt;Failover Record Type&lt;/b&gt;형에서 &lt;b&gt;Primary&lt;/b&gt;을 선택합니다.&lt;br /&gt;&lt;b&gt;Record ID&lt;/b&gt;에 이름을 입력합니다.&lt;br /&gt;&lt;b&gt;Associate with Health Check&lt;/b&gt;에서 &lt;b&gt;Yes&lt;/b&gt;를 선택한 다음 이전에 만든 상태 확인을 선택합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Create records&lt;/b&gt;를 선택합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;br /&gt;장애&amp;nbsp;조치&amp;nbsp;엔드포인트&amp;nbsp;만들기&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Amazon Route 53 콘솔을 연 다음, &lt;b&gt;Hosted zones&lt;/b&gt;을 선택합니다.&lt;/li&gt;
&lt;li&gt;레코드를 만들려는 호스트된 영역을 선택합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Create record&lt;/b&gt;를 선택하고 다음을 입력합니다:&lt;br /&gt;&lt;b&gt;Record Name&lt;/b&gt;에 기본 레코드에 입력한 것과 동일한 값을 사용합니다.&lt;br /&gt;&lt;b&gt;Record type&lt;/b&gt;에서 &lt;b&gt;A &amp;ndash; Routes traffic to an IPV4 address and some AWS resources&lt;/b&gt;을 선택합니다.&lt;br /&gt;&lt;b&gt;Alias&lt;/b&gt;에 대해 &lt;b&gt;Yes&lt;/b&gt;를 선택합니다.&lt;br /&gt;&lt;b&gt;참고&lt;/b&gt;:&amp;nbsp;별칭은&amp;nbsp;별칭&amp;nbsp;대상과&amp;nbsp;일치하는&amp;nbsp;TTL(Time&amp;nbsp;to&amp;nbsp;Live)을&amp;nbsp;자동으로&amp;nbsp;사용합니다.&lt;br /&gt;&lt;b&gt;Route traffic to&lt;/b&gt;에서 &lt;b&gt;Alias to S3 website endpoint&lt;/b&gt;에 대해 이전에 만든 S3 버킷을 선택합니다.&lt;br /&gt;&lt;b&gt;Routing Policy&lt;/b&gt;에서 &lt;b&gt;Failover&lt;/b&gt;를 선택합니다.&lt;br /&gt;&lt;b&gt;Failover Record Type&lt;/b&gt;에서 &lt;b&gt;Secondary&lt;/b&gt;를 선택합니다.&lt;br /&gt;&lt;b&gt;Record ID&lt;/b&gt;에 이름을 입력합니다.&lt;br /&gt;&lt;b&gt;참고&lt;/b&gt;: 장애 조치 엔드포인트의 &lt;b&gt;Record ID&lt;/b&gt; 이름은 기본 엔드포인트의 &lt;b&gt;Record ID&lt;/b&gt; 이름과 달라야 합니다.&lt;br /&gt;(선택 사항) &lt;b&gt;Health check ID&lt;/b&gt;에 대해 상태 확인을 선택합니다.&lt;br /&gt;(선택 사항) &lt;b&gt;Evaluate target health&lt;/b&gt;의 경우, 이 옵션을 끕니다. 대상이 S3 버킷인 경우 이 옵션은 작동하지 않습니다. 자세한 내용은 &lt;a style=&quot;background-color: #ffffff; color: #0073bb; text-align: left;&quot; href=&quot;https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-failover.html&quot;&gt;Failover routing&lt;/a&gt;을 참조하세요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Create records&lt;/b&gt;를 선택합니다.&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>Development/System</category>
      <category>Route53</category>
      <category>s3</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/293</guid>
      <comments>https://rudalson.tistory.com/entry/%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8%EA%B0%80-%EC%9E%A5%EC%95%A0%EC%8B%9C-Static-%EC%82%AC%EC%9D%B4%ED%8A%B8%EB%A1%9C-Failover-%ED%95%98%EA%B8%B0-Route53#entry293comment</comments>
      <pubDate>Sat, 27 May 2023 16:03:36 +0900</pubDate>
    </item>
    <item>
      <title>온프레미스 데이터를 AWS로 보내기 위한 AWS DataSync서비스</title>
      <link>https://rudalson.tistory.com/entry/%EC%98%A8%ED%94%84%EB%A0%88%EB%AF%B8%EC%8A%A4-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-AWS%EB%A1%9C-%EB%B3%B4%EB%82%B4%EA%B8%B0-%EC%9C%84%ED%95%9C-AWS-DataSync%EC%84%9C%EB%B9%84%EC%8A%A4</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;사내 운영 및 보관중인 데이터가 상당히 많다고 가정해보겠습니다. 온프레미스 환경은 확장의 어려움이 있기 때문에 클라우드를 도입하려합니다. 클라우드에 마이그레이션을 진행 한 후 이후에도 계속 클라우드로 저장시키고 온프레미스 환경은 제거하려 한다면 AWS의 DataSync 서비스를 알아볼 필요가 있습니다. 그리고 AWS의 데이터에 보안을 강화해야 겠죠? 삭제나 수정을 못하도록 막아야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS&amp;nbsp;DataSync를&amp;nbsp;사용하면&amp;nbsp;오픈&amp;nbsp;소스&amp;nbsp;도구나&amp;nbsp;라이선스로&amp;nbsp;맞춤형&amp;nbsp;솔루션을&amp;nbsp;구축하거나&amp;nbsp;값비싼&amp;nbsp;상용&amp;nbsp;네트워크&amp;nbsp;가속&amp;nbsp;소프트웨어를&amp;nbsp;관리할&amp;nbsp;필요&amp;nbsp;없이&amp;nbsp;수백만&amp;nbsp;개의&amp;nbsp;파일이&amp;nbsp;포함된&amp;nbsp;대규모&amp;nbsp;데이터&amp;nbsp;세트를&amp;nbsp;복사할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;DataSync를&amp;nbsp;사용해&amp;nbsp;활성&amp;nbsp;데이터를&amp;nbsp;AWS로&amp;nbsp;마이그레이션하고,&amp;nbsp;분석&amp;nbsp;및&amp;nbsp;처리를&amp;nbsp;위해&amp;nbsp;데이터를&amp;nbsp;클라우드로&amp;nbsp;전송하고,&amp;nbsp;데이터를&amp;nbsp;아카이브하여&amp;nbsp;온프레미스&amp;nbsp;스토리지&amp;nbsp;용량을&amp;nbsp;확보하고,&amp;nbsp;비즈니스&amp;nbsp;연속성을&amp;nbsp;위해&amp;nbsp;데이터를&amp;nbsp;AWS로&amp;nbsp;복제할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;AWS-DataSync-How-it-Works-Diagram.d27ec6f14be8ca9c2d434f94dd4a98c3fdf5c88c.png&quot; data-origin-width=&quot;2257&quot; data-origin-height=&quot;817&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mG9yE/btshh91GdRw/eNuk12i3SylyCBo5BtAMmk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mG9yE/btshh91GdRw/eNuk12i3SylyCBo5BtAMmk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mG9yE/btshh91GdRw/eNuk12i3SylyCBo5BtAMmk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmG9yE%2Fbtshh91GdRw%2FeNuk12i3SylyCBo5BtAMmk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2257&quot; height=&quot;817&quot; data-filename=&quot;AWS-DataSync-How-it-Works-Diagram.d27ec6f14be8ca9c2d434f94dd4a98c3fdf5c88c.png&quot; data-origin-width=&quot;2257&quot; data-origin-height=&quot;817&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;AWS DataSync&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DataSync에서는 아래의 스토리지로 마이그레이션을 할 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NFS(네트워크 파일 시스템) 또는 SMB(서버 메시지 블록) 파일 서버&lt;/li&gt;
&lt;li&gt;Amazon Simple Storage Service(Amazon S3) 버킷&lt;/li&gt;
&lt;li&gt;Amazon EFS(Amazon Elastic File System) 파일 시스템&lt;/li&gt;
&lt;li&gt;Windows&amp;nbsp;파일&amp;nbsp;서버용&amp;nbsp;Amazon&amp;nbsp;FSx&amp;nbsp;파일&amp;nbsp;시스템&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;처리 흐름&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;에이전트 배포 - DataSync 에이전트를 배포하고 관리 콘솔 또는 API를 통해 AWS 계정에 연결합니다. 에이전트는 NFS 서버 또는 SMB 파일 공유에 액세스하여 데이터를 읽거나 데이터를 쓰는 데 사용됩니다.&lt;/li&gt;
&lt;li&gt;데이터 전송 작업 만들기 - 데이터 소스 및 대상의 위치와 원하는 작업 일정과 같이 전송을 구성하는 데 사용할 옵션을 지정하여 작업을 만듭니다.&lt;/li&gt;
&lt;li&gt;전송 시작 - 작업을 시작하고 콘솔 또는 Amazon CloudWatch에서 데이터 이동을 모니터링합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;주요 특징&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 서비스는 스토리지 프로토콜과 분리된 AWS 설계 전송 프로토콜을 사용하여 데이터 이동 속도를 높입니다. 이 프로토콜은 네트워크를 통해 전송되는 데이터의 방법, 시기, 종류에 대한 최적화를 수행합니다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;단일 DataSync 에이전트는 10Gbps 네트워크 링크를 까지 지원합니다.&lt;/li&gt;
&lt;li&gt;DataSync는 클라우드 리소스를 자동으로 확장하여 대용량 전송을 지원하며, 온프레미스에 에이전트를 쉽게 추가할 수 있습니다.&lt;/li&gt;
&lt;li&gt;모든 데이터는 전송 중에 TLS로 암호화됩니다. DataSync는 Amazon S3 관리형 암호화 키(SSE-S3)를 사용하는 S3 버킷에 대한 기본 암호화 사용과 미사용 데이터의 Amazon EFS 파일 시스템 암호화를 지원합니다.&lt;/li&gt;
&lt;li&gt;DataSync는 S3 Standard, S3 지능형 계층화, S3 표준-빈번 액세스(S3 Standard-IA), S3 원존-빈번 액세스(S3 One Zone-IA), Amazon S3 Glacier 및 S3 Glacier 딥 아카이브에 직접 데이터 저장을 지원합니다.&lt;/li&gt;
&lt;li&gt;AWS DataSync를 사용하여 파일을 EFS로 복사하고 EFS 수명 주기 관리를 구성하여 설정된 기간 동안 액세스하지 않은 파일을 IA(자주 액세스하지 않음) 스토리지 클래스로 마이그레이션할 수 있습니다.&lt;/li&gt;
&lt;li&gt;DataSync는 전송 중 및 유휴 상태 모두에서 무결성 검사를 수행하여 데이터가 온전하게 도착하도록 보장합니다.&amp;nbsp;&lt;/li&gt;
&lt;li&gt;제외 필터, 포함 필터 또는 둘 다를 지정하여 작업이 실행될 때마다 전송되는 파일, 폴더 또는 개체를 제한할 수 있습니다.&lt;/li&gt;
&lt;li&gt;작업 스케줄링을 사용하면 주기적으로 작업을 실행하도록 구성하여 소스 스토리지 시스템에서 대상 스토리지 시스템으로 변경 사항을 감지하고 복사할 수 있습니다.&lt;/li&gt;
&lt;li&gt;DataSync는&amp;nbsp;파일을&amp;nbsp;Amazon&amp;nbsp;VPC로&amp;nbsp;직접&amp;nbsp;옮길&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;VPC&amp;nbsp;엔드포인트(AWS&amp;nbsp;PrivateLink&amp;nbsp;기반)를&amp;nbsp;지원합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Use Cases&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Amazon S3, Amazon EFS 또는 Windows 파일 서버용 Amazon FSx로 데이터 마이그레이션.&lt;/li&gt;
&lt;li&gt;하이브리드 워크로드를 위한 데이터 처리. 처리를 위해 AWS로 이동해야 하는 데이터를 생성하거나 사용하는 온프레미스 시스템이 있는 경우, DataSync를 사용하여 전송을 가속화하고 예약할 수 있습니다.&lt;/li&gt;
&lt;li&gt;값비싼 온프레미스 스토리지 시스템에 대량의 콜드 데이터가 저장되어 있는 경우, 이 데이터를 Amazon S3 Glacier 또는 Amazon S3 Glacier Deep Archive와 같이 내구성이 뛰어나고 안전한 장기 스토리지로 직접 옮길 수 있습니다.&lt;/li&gt;
&lt;li&gt;보호해야&amp;nbsp;하는&amp;nbsp;중요한&amp;nbsp;파일이&amp;nbsp;있는&amp;nbsp;대규모&amp;nbsp;NAS(네트워크&amp;nbsp;연결&amp;nbsp;스토리지)&amp;nbsp;시스템이&amp;nbsp;있는&amp;nbsp;경우,&amp;nbsp;DataSync를&amp;nbsp;사용하여&amp;nbsp;해당&amp;nbsp;파일을&amp;nbsp;S3로&amp;nbsp;복제할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>AWS</category>
      <category>DataSync</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/292</guid>
      <comments>https://rudalson.tistory.com/entry/%EC%98%A8%ED%94%84%EB%A0%88%EB%AF%B8%EC%8A%A4-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC-AWS%EB%A1%9C-%EB%B3%B4%EB%82%B4%EA%B8%B0-%EC%9C%84%ED%95%9C-AWS-DataSync%EC%84%9C%EB%B9%84%EC%8A%A4#entry292comment</comments>
      <pubDate>Thu, 25 May 2023 10:27:21 +0900</pubDate>
    </item>
    <item>
      <title>Amazon에서 bigdata를 다루려면 EMR/RedShift</title>
      <link>https://rudalson.tistory.com/entry/AWS-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B2%98%EB%A6%AC-%EC%8B%9C%EC%8A%A4%ED%85%9C</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;구조화 혹은 반구조화된 다양한 형태의 아주 방대한 데이터를 처리하려고 합니다. 이 데이터를 분석하고 BI(Business Intelligence)를 도출하여 활용할 수 있는 시스템을 구축해야 합니다. 그리고 표준 SQL 쿼리로 처리가 가능해야 합니다. 물론 쿼리 성능이 좋아야겠죠. 그렇다면 아래의 2가지 서비스를 고려해 볼 수 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Amazon EMR&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Amazon EMR은 방대한 양의 데이터를 처리하고 분석하기 위해 AWS에서 Apache Hadoop 및 Apache Spark와 같은 빅데이터 프레임워크 실행하는 것을 간소화하는 관리형 클러스터 플랫폼입니다. 이러한 프레임워크와 관련 오픈 소스 프로젝트(예: Apache Hive 및 Apache Pig)를 사용하여 분석 및 비즈니스 인텔리전스 워크로드를 위해 데이터를 처리할 수 있습니다. 또한 Amazon EMR을 사용하여 대량의 데이터를 다른 AWS 데이터 저장소 및 데이터베이스로 변환하고 이동할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EMR에서는 S3, HDFS(Hadoop 분산 파일 시스템), DynamoDB, EMR을 비롯한 여러 데이터 저장소를 활용할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;AWS-Training-Amazon-EMR-2.jpg&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;230&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cae8vl/btshihFe330/dFsPBSJkOBwi5iNDGsIrKk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cae8vl/btshihFe330/dFsPBSJkOBwi5iNDGsIrKk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cae8vl/btshihFe330/dFsPBSJkOBwi5iNDGsIrKk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcae8vl%2FbtshihFe330%2FdFsPBSJkOBwi5iNDGsIrKk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;688&quot; height=&quot;230&quot; data-filename=&quot;AWS-Training-Amazon-EMR-2.jpg&quot; data-origin-width=&quot;688&quot; data-origin-height=&quot;230&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Amazon Redshift&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Amazon Redshift는 가장 널리 사용되는 클라우드 데이터 웨어하우스입니다. 표준 SQL과 기존 비즈니스 인텔리전스(BI) 도구를 사용하여 모든 데이터를 빠르고 간단하며 비용 효율적으로 분석할 수 있습니다. 정교한 쿼리 최적화, 고성능 스토리지의 컬럼형 스토리지, 대규모 병렬 쿼리 실행을 사용하여 테라바이트에서 페타바이트에 이르는 정형 및 반정형 데이터에 대한 복잡한 분석 쿼리를 실행할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;AWS-EMR-Redshift-Services.png&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;251&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgHcry/btsheDIYgTL/pXSp1CNt5HXJH1F5e3M7W0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgHcry/btsheDIYgTL/pXSp1CNt5HXJH1F5e3M7W0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgHcry/btsheDIYgTL/pXSp1CNt5HXJH1F5e3M7W0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgHcry%2FbtsheDIYgTL%2FpXSp1CNt5HXJH1F5e3M7W0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;701&quot; height=&quot;251&quot; data-filename=&quot;AWS-EMR-Redshift-Services.png&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;251&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빅데이터&amp;nbsp;처리&amp;nbsp;프레임워크를&amp;nbsp;활용하려면&amp;nbsp;Amazon&amp;nbsp;EMR을&amp;nbsp;사용해야&amp;nbsp;합니다.&amp;nbsp;이&amp;nbsp;클러스터는&amp;nbsp;데이터&amp;nbsp;변환(ETL)을&amp;nbsp;수행하고&amp;nbsp;처리된&amp;nbsp;데이터를&amp;nbsp;분석&amp;nbsp;및&amp;nbsp;비즈니스&amp;nbsp;인텔리전스&amp;nbsp;애플리케이션을&amp;nbsp;위해&amp;nbsp;Amazon&amp;nbsp;Redshift에&amp;nbsp;로드합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;S3 select 기능을 사용하면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;특정 S3 개체의 데이터 하위 집합에 대해 간단한 SQL 쿼리만 실행할 수 있습니다. S3 버킷에서 쿼리를 수행하려면 Amazon Athena를 사용해야 합니다.&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기타&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이외에도 알아둘만한 서비스로는 AWS Glue와 Kinesis가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Glue는 데이터를 크롤링하고, 데이터 카탈로그를 구축하고, 데이터 준비, 데이터 변환, 데이터 수집을 수행하는 서버리스 ETL 서비스입니다. 하지만 다양한 빅데이터 프레임워크를 효과적으로 활용할 수는 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Kinesis는 실시간 데이터 분석 서비스 입니다. Realtime 인거죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빅데이터를 어떻게 처리할 것인지? 어떻게 활용할 것인지에 대한 차이로도 선택할 수 있는 서비스들의 조합을 다르게 고려해 볼 수 있을 것입니다.&lt;/p&gt;</description>
      <category>Development/System</category>
      <category>ATHENA</category>
      <category>EMR</category>
      <category>Glue</category>
      <category>Kinesis</category>
      <category>Redshift</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/291</guid>
      <comments>https://rudalson.tistory.com/entry/AWS-%EB%B9%85%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%B2%98%EB%A6%AC-%EC%8B%9C%EC%8A%A4%ED%85%9C#entry291comment</comments>
      <pubDate>Thu, 25 May 2023 09:35:12 +0900</pubDate>
    </item>
    <item>
      <title>2022년 홈택스 연말정산 간소화 신청</title>
      <link>https://rudalson.tistory.com/entry/2022%EB%85%84-%ED%99%88%ED%83%9D%EC%8A%A4-%EC%97%B0%EB%A7%90%EC%A0%95%EC%82%B0-%EA%B0%84%EC%86%8C%ED%99%94-%EC%8B%A0%EC%B2%AD</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;2022년 연말정산은 근로자로서 연말정산을 하게 되었습니다. 개인사업자에서 다시 근로자가 되면서 홈택스 연말정산간소화 서비스를 오래간만에 다시 해보았습니다. 개인사업자때는 연말정산이 어려워서 세무대행사를 통해서 했기에 연말정산 간소화 서비스를 이용하는것도 몇년 만이라서 검색하며 읽어보며 더듬더듬 진행했습니다. 이를 기록에 남겨 봅니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;국세청 홈택스(Hometax) 간소화 서비스&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;홈택스 로그인&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;00.로그인.png&quot; data-origin-width=&quot;1680&quot; data-origin-height=&quot;1218&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Cu9js/btrW7Tqkw7s/o3jAFfyKxWMasqidf6yiL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Cu9js/btrW7Tqkw7s/o3jAFfyKxWMasqidf6yiL0/img.png&quot; data-alt=&quot;서비스간 차이가 있는건지???&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Cu9js/btrW7Tqkw7s/o3jAFfyKxWMasqidf6yiL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCu9js%2FbtrW7Tqkw7s%2Fo3jAFfyKxWMasqidf6yiL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;464&quot; data-filename=&quot;00.로그인.png&quot; data-origin-width=&quot;1680&quot; data-origin-height=&quot;1218&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;서비스간 차이가 있는건지???&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매번 로그인 할 때마다 계정과 비밀번호로 고생하다가 이제 다른 인증서비스로 로그인이 가능합니다. 이 중 자신이 편한걸로 사용하면 되겠지만 서비스 내용에서는 차이가 없는 것 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;01.소득세액공제자료조회.png&quot; data-origin-width=&quot;1998&quot; data-origin-height=&quot;1866&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cp97Z2/btrXcqmFbIB/BkwHRsWt5k1KlbPNiuaQGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cp97Z2/btrXcqmFbIB/BkwHRsWt5k1KlbPNiuaQGK/img.png&quot; data-alt=&quot;이거 쪼으는 재미가 있습니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cp97Z2/btrXcqmFbIB/BkwHRsWt5k1KlbPNiuaQGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcp97Z2%2FbtrXcqmFbIB%2FBkwHRsWt5k1KlbPNiuaQGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1998&quot; height=&quot;1866&quot; data-filename=&quot;01.소득세액공제자료조회.png&quot; data-origin-width=&quot;1998&quot; data-origin-height=&quot;1866&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이거 쪼으는 재미가 있습니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 소득 세액 공제자료 조회로 가서 1~12월을 모두 체크하고 건강보험부터 하나씩 조회하면 자신의 사용금액이 나옵니다. 모든 항목을 오픈한 후에 &lt;code&gt;공제신고서작성&lt;/code&gt;을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;02.공제신고서 작성진입.png&quot; data-origin-width=&quot;1384&quot; data-origin-height=&quot;910&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cx04ta/btrXaBJFXYW/DkAUf7dBaKl7uYBSocf2nK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cx04ta/btrXaBJFXYW/DkAUf7dBaKl7uYBSocf2nK/img.png&quot; data-alt=&quot;여기서 살짝 기다려 줘야 합니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cx04ta/btrXaBJFXYW/DkAUf7dBaKl7uYBSocf2nK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcx04ta%2FbtrXaBJFXYW%2FDkAUf7dBaKl7uYBSocf2nK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;421&quot; data-filename=&quot;02.공제신고서 작성진입.png&quot; data-origin-width=&quot;1384&quot; data-origin-height=&quot;910&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;여기서 살짝 기다려 줘야 합니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음에는 안나오다가 잠시 후 내가 근무하는 회사의 이름이 근무처에 뜨게 되고 총급여는 0 으로 나옵니다. 여기까지 문제없이 된다면 작성 버튼을 눌러줍니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;(부모님)부양 가족 제공 조회 및 동의&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부양 가족이 있을 경우 제대로 가족구성원이 등록되어 있는지 확인을 해봐야 합니다. 이미 등록되어 있더라도 당해에 변동사항이 없는지 한번 더 체크해봐야 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;03.부양가족제공 동의현황 조회.png&quot; data-origin-width=&quot;1984&quot; data-origin-height=&quot;1632&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biIxm3/btrXdMJ8hwr/CG5kYEJyVnQRA1cqYtwpzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biIxm3/btrXdMJ8hwr/CG5kYEJyVnQRA1cqYtwpzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biIxm3/btrXdMJ8hwr/CG5kYEJyVnQRA1cqYtwpzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiIxm3%2FbtrXdMJ8hwr%2FCG5kYEJyVnQRA1cqYtwpzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1984&quot; height=&quot;1632&quot; data-filename=&quot;03.부양가족제공 동의현황 조회.png&quot; data-origin-width=&quot;1984&quot; data-origin-height=&quot;1632&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 근로자가 되면서 부모님을 등록할 필요가 있었습니다. 부모님께서 고령으로 수입이 없었지만 같이 거주하지 않아 개인사업자일때는 직접 못하다가 이제는 다시금 부양가족으로 등록하려 합니다. 자료제공동의 신청을 눌러줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;04.부양가족제공 동의.png&quot; data-origin-width=&quot;1978&quot; data-origin-height=&quot;1778&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmge6F/btrXcoJvvTc/eEKBSXUQ340c8tQeYCskck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmge6F/btrXcoJvvTc/eEKBSXUQ340c8tQeYCskck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmge6F/btrXcoJvvTc/eEKBSXUQ340c8tQeYCskck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbmge6F%2FbtrXcoJvvTc%2FeEKBSXUQ340c8tQeYCskck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1978&quot; height=&quot;1778&quot; data-filename=&quot;04.부양가족제공 동의.png&quot; data-origin-width=&quot;1978&quot; data-origin-height=&quot;1778&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본인인증 신청을 클릭해줍니다. 자료 조회자는 근로소득을 받는 나 자신이 되면 되고 자료 제공자의 기본 인적사항을 입력하고 동의란에 체크한 이후 진행하시면 됩니다. 이때 본인인증은 역시 가장 간편한 휴대폰방식을 사용하면 되고 카카오톡으로 인증코드 가면 그것을 입력해주면 등록이 끝이 납니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;공제신고서 작성&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;기본사항 입력&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;05.공제신고서 작성하기.png&quot; data-origin-width=&quot;1998&quot; data-origin-height=&quot;1536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VQHoP/btrXc8zL8y9/8LdJRsPuondvHedrZBGaGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VQHoP/btrXc8zL8y9/8LdJRsPuondvHedrZBGaGk/img.png&quot; data-alt=&quot;부양가족에 명단이 포함되었다고 끝이 아니더라구요&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VQHoP/btrXc8zL8y9/8LdJRsPuondvHedrZBGaGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVQHoP%2FbtrXc8zL8y9%2F8LdJRsPuondvHedrZBGaGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1998&quot; height=&quot;1536&quot; data-filename=&quot;05.공제신고서 작성하기.png&quot; data-origin-width=&quot;1998&quot; data-origin-height=&quot;1536&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;부양가족에 명단이 포함되었다고 끝이 아니더라구요&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 확인했던 부양가족을 이제 등록합니다. 전 위에서 등록했던 부모님이 여기서 한번에 안뜨더라구요. 그래서 수동입력으로 추가했습니다. 그런데 또 경로우대 항목이 N으로 되어 있었습니다. 갸우뚱 거리면서 공제요건을 다시 확인해보니 만 70세 이상이면 가능하다고 해서 직접 Y로 변경했습니다. 주민등록번호도 입력되어 있는데 이런건 자동으로 안되는게 살짝 아쉬웠습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;공제항목 지출명세 작성&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;06.공제항목별 지출명세 작성.png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2006&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nwPT8/btrXamzgzyw/JOvHj0kJEn4UJHeg9NtNyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nwPT8/btrXamzgzyw/JOvHj0kJEn4UJHeg9NtNyK/img.png&quot; data-alt=&quot;여기서 이제 추가공제를 변경할 수 있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nwPT8/btrXamzgzyw/JOvHj0kJEn4UJHeg9NtNyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnwPT8%2FbtrXamzgzyw%2FJOvHj0kJEn4UJHeg9NtNyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;2006&quot; data-filename=&quot;06.공제항목별 지출명세 작성.png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;2006&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;여기서 이제 추가공제를 변경할 수 있다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;자녀 교육비 추가 공제&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 제 아이의 교육비가 홈택스에서 조회되지 않은 항목이 있었습니다. 그래서 납입 확인증을 받아뒀고 이를 여기서 추가변경 할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;06-2.지출명세 수정.png&quot; data-origin-width=&quot;1962&quot; data-origin-height=&quot;864&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsX3QB/btrW9k9zXMs/YhQ9EoLLSyDvEGbdF8X22K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsX3QB/btrW9k9zXMs/YhQ9EoLLSyDvEGbdF8X22K/img.png&quot; data-alt=&quot;여기서 +수정 을 눌러주면 수정가능합니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsX3QB/btrW9k9zXMs/YhQ9EoLLSyDvEGbdF8X22K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsX3QB%2FbtrW9k9zXMs%2FYhQ9EoLLSyDvEGbdF8X22K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;282&quot; data-filename=&quot;06-2.지출명세 수정.png&quot; data-origin-width=&quot;1962&quot; data-origin-height=&quot;864&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;여기서 +수정 을 눌러주면 수정가능합니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;교육비 외에도 의료비(안경구입비)나 기부금, 월세 등등 홈택스에서는 자동으로 등록되지 못한 항목들이 충분히 있을 수 있으니 자신에게 맞는 항목들은 직접 챙기셔야 합니다. 직접 챙기는 만큼 챙겨줍니다. 헥헥&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 수정한다고 반영되는 건 아니겠죠? 필요한 서류는 회사에 제출해서 증빙하면 나중에 인정 될 것입니다. 작성 및 확인이 끝났으면 간편제출을 해줍니다. 그리고 백업차 PDF 다운로드도 해둡니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;07.공제신고서 내용 확인.png&quot; data-origin-width=&quot;1970&quot; data-origin-height=&quot;1820&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sVoBW/btrXaCokJk6/gkjHp483SSlgddokvMjBc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sVoBW/btrXaCokJk6/gkjHp483SSlgddokvMjBc0/img.png&quot; data-alt=&quot;마지막으로 다시한번 꼼꼼하게 확인해줍니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sVoBW/btrXaCokJk6/gkjHp483SSlgddokvMjBc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsVoBW%2FbtrXaCokJk6%2FgkjHp483SSlgddokvMjBc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1970&quot; height=&quot;1820&quot; data-filename=&quot;07.공제신고서 내용 확인.png&quot; data-origin-width=&quot;1970&quot; data-origin-height=&quot;1820&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;마지막으로 다시한번 꼼꼼하게 확인해줍니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;간편 제출&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인이 끝났다면 간편제출하기를 눌러주시면 됩니다. 그러면 아래와 같은 화면이 나오며 연말정산을 위한 작업은 끝이 납니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;08.연말정산 제출하기.png&quot; data-origin-width=&quot;1616&quot; data-origin-height=&quot;1174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbPNyN/btrW9oYn6Gz/S8byclS5tWgtJ87xPbKny0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbPNyN/btrW9oYn6Gz/S8byclS5tWgtJ87xPbKny0/img.png&quot; data-alt=&quot;빠진게 없겠죠? ㅎㄷ&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbPNyN/btrW9oYn6Gz/S8byclS5tWgtJ87xPbKny0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbPNyN%2FbtrW9oYn6Gz%2FS8byclS5tWgtJ87xPbKny0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;465&quot; data-filename=&quot;08.연말정산 제출하기.png&quot; data-origin-width=&quot;1616&quot; data-origin-height=&quot;1174&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;빠진게 없겠죠? ㅎㄷ&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;09.제출확인.png&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;1272&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfZyGo/btrXaFk0RwW/2zzY0XttashBHZt9VBLCxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfZyGo/btrXaFk0RwW/2zzY0XttashBHZt9VBLCxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfZyGo/btrXaFk0RwW/2zzY0XttashBHZt9VBLCxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfZyGo%2FbtrXaFk0RwW%2F2zzY0XttashBHZt9VBLCxk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1968&quot; height=&quot;1272&quot; data-filename=&quot;09.제출확인.png&quot; data-origin-width=&quot;1968&quot; data-origin-height=&quot;1272&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제출이 잘 되었는지는 제출이력사항에 잘 나와 있으며 만약 수정이 필요하다면 회수 후 수정 및 제출을 하면 됩니다. 하지만 전 안해봤습니다.&lt;/p&gt;</description>
      <category>잡담</category>
      <category>연말정산</category>
      <category>홈택스</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/290</guid>
      <comments>https://rudalson.tistory.com/entry/2022%EB%85%84-%ED%99%88%ED%83%9D%EC%8A%A4-%EC%97%B0%EB%A7%90%EC%A0%95%EC%82%B0-%EA%B0%84%EC%86%8C%ED%99%94-%EC%8B%A0%EC%B2%AD#entry290comment</comments>
      <pubDate>Wed, 25 Jan 2023 18:39:28 +0900</pubDate>
    </item>
    <item>
      <title>[아들 셋 엄마의 돈 되는 독서] 서평</title>
      <link>https://rudalson.tistory.com/entry/%EC%95%84%EB%93%A4-%EC%85%8B-%EC%97%84%EB%A7%88%EC%9D%98-%EB%8F%88-%EB%90%98%EB%8A%94-%EB%8F%85%EC%84%9C-%ED%9B%84%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;아들 셋 엄마의 돈 되는 독서&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;저자 : 김유라&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;XL.png&quot; data-origin-width=&quot;845&quot; data-origin-height=&quot;1200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bG5JW8/btrWI8IcFSu/KIf8Ws20GtQnV7gHzUKLzK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bG5JW8/btrWI8IcFSu/KIf8Ws20GtQnV7gHzUKLzK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bG5JW8/btrWI8IcFSu/KIf8Ws20GtQnV7gHzUKLzK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbG5JW8%2FbtrWI8IcFSu%2FKIf8Ws20GtQnV7gHzUKLzK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;909&quot; data-filename=&quot;XL.png&quot; data-origin-width=&quot;845&quot; data-origin-height=&quot;1200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;집에 꽂혀 있던 책들 중 하나를 집어 들어 읽었다. 2023년 시작부터 방향도 목적도 잃은 것 처럼 느껴졌다. 열심히 해야 하는데 뭘 해야 할지 갈피를 못잡던 차에 독서라는 단어 때문에 집어들었다.&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;그리고 책을 한권 읽으면 가장 단순하게 1개의 실천 목표가 서야 한다는 것은 맞는 말 같다. 독서를 하면 그때 뿐인건 실천 목표로 까지 이어지지 않았기에 그런것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 책을 통한 실천 목표는 독서에서 내 인생의 해답을 찾아보자 이다. 요즘은 뭔가 절박하다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;스크랩&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;49p&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230117_081202.png&quot; data-origin-width=&quot;1506&quot; data-origin-height=&quot;2207&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/liyJf/btrWLwOmAO7/bq6cAcPdNiyOF2wcFbiqyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/liyJf/btrWLwOmAO7/bq6cAcPdNiyOF2wcFbiqyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/liyJf/btrWLwOmAO7/bq6cAcPdNiyOF2wcFbiqyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FliyJf%2FbtrWLwOmAO7%2Fbq6cAcPdNiyOF2wcFbiqyK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;938&quot; data-filename=&quot;20230117_081202.png&quot; data-origin-width=&quot;1506&quot; data-origin-height=&quot;2207&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아이는 현재로도 완벽하다. 아이가 내가 의도한대로 되지 않거나 태도가 마음에 들지 않는다고 해서 이를 비난하거나 뜯어고치려고 하지 말아야 한다. 나의 인정으로 인해 아이는 자신의 생활을 관리하고 언제든 긍정적으로 생각하게 될 것이다.&lt;/li&gt;
&lt;li&gt;나를 보고 자라는데 나랑 다르게 자랄 수가 없다. 그동안의 은연중 바램이 틀렸다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;50p&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230117_081811.jpg&quot; data-origin-width=&quot;2298&quot; data-origin-height=&quot;1456&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yUEer/btrWID9QPpI/TKxOCXHaQARCOfzeuLQAU0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yUEer/btrWID9QPpI/TKxOCXHaQARCOfzeuLQAU0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yUEer/btrWID9QPpI/TKxOCXHaQARCOfzeuLQAU0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyUEer%2FbtrWID9QPpI%2FTKxOCXHaQARCOfzeuLQAU0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;406&quot; data-filename=&quot;20230117_081811.jpg&quot; data-origin-width=&quot;2298&quot; data-origin-height=&quot;1456&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;ldquo;나와 다르게 키우겠다&amp;rdquo;가 아니라 &amp;ldquo;나와 같은 아이로 키우겠다.&amp;rdquo; 라는 마음 가짐으로 대한다면 육아 뿐만 아니라 나 자신을 진정 믿고 사랑할 수 있게 된다는 의미로 받아들여진다.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;나는 달라져야 했다.&amp;rdquo; 에서 현재 나의 마음과 비슷한 의지가 느껴진다. - 나는 절박하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;51p&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230117_082959.jpg&quot; data-origin-width=&quot;2225&quot; data-origin-height=&quot;1469&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CBhvT/btrWJ9TRwD5/wnjkP06KtFv1jx4DCQtiG0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CBhvT/btrWJ9TRwD5/wnjkP06KtFv1jx4DCQtiG0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CBhvT/btrWJ9TRwD5/wnjkP06KtFv1jx4DCQtiG0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCBhvT%2FbtrWJ9TRwD5%2FwnjkP06KtFv1jx4DCQtiG0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;423&quot; data-filename=&quot;20230117_082959.jpg&quot; data-origin-width=&quot;2225&quot; data-origin-height=&quot;1469&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아이들의 성장을 도와줄 목적으로 나 자신을 확대시켜나가려는 의지의 크기 만큼이 나의 사랑의 크기가 되는 건가? 스캇 펙의 정의는 긴가민가 하지만 그런것 같기도 하다.&lt;/li&gt;
&lt;li&gt;&amp;ldquo;잘난 아들을 키우는 못난 엄마로 사는 것이 아니라 멋진 엄마 멋진 아들로 함께 성장하겠다&amp;rdquo; 라는 저자의 표현은 정말 훌륭한 마음 가짐이다. 이렇게 이어지는 것을 보면 스캇펙의 정의는 맞는 말이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;89p&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230117_083859.jpg&quot; data-origin-width=&quot;2193&quot; data-origin-height=&quot;990&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAkQhT/btrWIynl1TE/SA1Gu57X7wocLSXVggkobK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAkQhT/btrWIynl1TE/SA1Gu57X7wocLSXVggkobK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAkQhT/btrWIynl1TE/SA1Gu57X7wocLSXVggkobK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAkQhT%2FbtrWIynl1TE%2FSA1Gu57X7wocLSXVggkobK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;289&quot; data-filename=&quot;20230117_083859.jpg&quot; data-origin-width=&quot;2193&quot; data-origin-height=&quot;990&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;목적에 맞는 독서가 더욱 힘이 될 것 같다. 이제는 그래야 한다. 나에겐 남은 시간이 별로 없다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;98p&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230117_084244.jpg&quot; data-origin-width=&quot;2687&quot; data-origin-height=&quot;815&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWFUQS/btrWKaZADBc/0xSlaP0dkqtgnCXejSBlKK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWFUQS/btrWKaZADBc/0xSlaP0dkqtgnCXejSBlKK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWFUQS/btrWKaZADBc/0xSlaP0dkqtgnCXejSBlKK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWFUQS%2FbtrWKaZADBc%2F0xSlaP0dkqtgnCXejSBlKK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;194&quot; data-filename=&quot;20230117_084244.jpg&quot; data-origin-width=&quot;2687&quot; data-origin-height=&quot;815&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;워렌버핏은 왠지 그러셨을 것 같다. 그분은 정말&amp;hellip;.&lt;/li&gt;
&lt;li&gt;워렌버핏 칭송만 했지 책은 안읽어봤구나. 피터린치도 읽어야 하고 바쁘다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;100p&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230117_084845.jpg&quot; data-origin-width=&quot;2726&quot; data-origin-height=&quot;922&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dIfR2O/btrWK2GH22K/o7mWAKOeqlCqShkcYMYUB0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dIfR2O/btrWK2GH22K/o7mWAKOeqlCqShkcYMYUB0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dIfR2O/btrWK2GH22K/o7mWAKOeqlCqShkcYMYUB0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdIfR2O%2FbtrWK2GH22K%2Fo7mWAKOeqlCqShkcYMYUB0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;216&quot; data-filename=&quot;20230117_084845.jpg&quot; data-origin-width=&quot;2726&quot; data-origin-height=&quot;922&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그러게. 관련분야 100권은 읽어야 충분히 본거지&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;103p&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230117_085102.jpg&quot; data-origin-width=&quot;2774&quot; data-origin-height=&quot;1868&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bO1yk9/btrWIEHFqTt/V6w5IfVY31mCLkt79dH5g0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bO1yk9/btrWIEHFqTt/V6w5IfVY31mCLkt79dH5g0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bO1yk9/btrWIEHFqTt/V6w5IfVY31mCLkt79dH5g0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbO1yk9%2FbtrWIEHFqTt%2FV6w5IfVY31mCLkt79dH5g0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;431&quot; data-filename=&quot;20230117_085102.jpg&quot; data-origin-width=&quot;2774&quot; data-origin-height=&quot;1868&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;처음 보는 말도 아닌데 왜 이번엔 저 말에 이리도 와 닿는지 모르겠다. 생각만 하다가 끝날 것 같다. 뿌렸어야 했다.&lt;/li&gt;
&lt;li&gt;이제라도 뿌리자.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;104p&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230117_085402.jpg&quot; data-origin-width=&quot;2533&quot; data-origin-height=&quot;1331&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baggcs/btrWLiWVtS6/GOKqZJ00MPviO9YLShAUk1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baggcs/btrWLiWVtS6/GOKqZJ00MPviO9YLShAUk1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baggcs/btrWLiWVtS6/GOKqZJ00MPviO9YLShAUk1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbaggcs%2FbtrWLiWVtS6%2FGOKqZJ00MPviO9YLShAUk1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;336&quot; data-filename=&quot;20230117_085402.jpg&quot; data-origin-width=&quot;2533&quot; data-origin-height=&quot;1331&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아 사마천&amp;hellip; 당신은 어찌 그리도 세상만사에 통달하신가요?&lt;/li&gt;
&lt;li&gt;2000년도 전에 사신 분이 맞나 싶다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;104p&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230117_085410.jpg&quot; data-origin-width=&quot;2264&quot; data-origin-height=&quot;1811&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MACAj/btrWJvJIBFn/MFJZBWJvIdiz9QDhsKaEqk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MACAj/btrWJvJIBFn/MFJZBWJvIdiz9QDhsKaEqk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MACAj/btrWJvJIBFn/MFJZBWJvIdiz9QDhsKaEqk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMACAj%2FbtrWJvJIBFn%2FMFJZBWJvIdiz9QDhsKaEqk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;512&quot; data-filename=&quot;20230117_085410.jpg&quot; data-origin-width=&quot;2264&quot; data-origin-height=&quot;1811&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이책에서 어쩌면 가장 중요한 얘기(나에게는)&lt;/li&gt;
&lt;li&gt;실천! 실천! 실천! 읽고 생각하고 행동으로 나와야 한다. 인풋 &amp;rarr; 아웃풋&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;111p&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230117_180118.jpg&quot; data-origin-width=&quot;2477&quot; data-origin-height=&quot;2350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEVyjV/btrWI3fR7Im/ntpJk9SbbkpYMBQGUsvuYK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEVyjV/btrWI3fR7Im/ntpJk9SbbkpYMBQGUsvuYK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEVyjV/btrWI3fR7Im/ntpJk9SbbkpYMBQGUsvuYK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEVyjV%2FbtrWI3fR7Im%2FntpJk9SbbkpYMBQGUsvuYK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;607&quot; data-filename=&quot;20230117_180118.jpg&quot; data-origin-width=&quot;2477&quot; data-origin-height=&quot;2350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ai보고 정의를 내려 달라면 꼭 이렇게 이야기 할 것 같다. 부자가 되는 길은 끊임 없는 선택에서 돈을 &amp;lsquo;버는 쪽&amp;rsquo;에 베팅하는 행위의 반복&lt;/li&gt;
&lt;li&gt;5년간 400여편의 서평은 정말 엄청나다. 쉽사리 따라해볼 엄두도 나지 않는다. 육아를 하면서 그정도로 시간을 쏟아 붇기란&amp;hellip;. 돈을 준다고 해도 그리는 못할 듯 싶다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;152p&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230117_180402.jpg&quot; data-origin-width=&quot;2707&quot; data-origin-height=&quot;1190&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7v5v1/btrWKyskre9/Jn3zYSYNkwykCm4irbHgjk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7v5v1/btrWKyskre9/Jn3zYSYNkwykCm4irbHgjk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7v5v1/btrWKyskre9/Jn3zYSYNkwykCm4irbHgjk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7v5v1%2FbtrWKyskre9%2FJn3zYSYNkwykCm4irbHgjk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;281&quot; data-filename=&quot;20230117_180402.jpg&quot; data-origin-width=&quot;2707&quot; data-origin-height=&quot;1190&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 책에서 궁금했던 점이기도 하다. 독서가 실제로 어떻게 도움이 되었나?&lt;/li&gt;
&lt;li&gt;돈에서 자유롭게 된다면 올라설 수 있는 단계인건지? 올라서야 돈에서 자유로운건지는 아직도 확신이 서지 않는다. 정말 미친듯이 독서를 하면 나의 인생이 풍요로워 질 수 있을까? 나에겐 시간이 얼마 없을 것 같은데 가능할까?&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;175p&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230117_180615.jpg&quot; data-origin-width=&quot;2484&quot; data-origin-height=&quot;2165&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lOnLB/btrWK3yRxZR/4yVpjtUfsXY6L7wrVnFrd0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lOnLB/btrWK3yRxZR/4yVpjtUfsXY6L7wrVnFrd0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lOnLB/btrWK3yRxZR/4yVpjtUfsXY6L7wrVnFrd0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlOnLB%2FbtrWK3yRxZR%2F4yVpjtUfsXY6L7wrVnFrd0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;558&quot; data-filename=&quot;20230117_180615.jpg&quot; data-origin-width=&quot;2484&quot; data-origin-height=&quot;2165&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단순하고 심플하다. 저렇게 살고자 애써야 한다. 죽도록 애써야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;197p&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230116_074606.jpg&quot; data-origin-width=&quot;2185&quot; data-origin-height=&quot;1664&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cx45Ob/btrWI89gbFd/RW7c6bktTeLdUhigLmfmL0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cx45Ob/btrWI89gbFd/RW7c6bktTeLdUhigLmfmL0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cx45Ob/btrWI89gbFd/RW7c6bktTeLdUhigLmfmL0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcx45Ob%2FbtrWI89gbFd%2FRW7c6bktTeLdUhigLmfmL0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;487&quot; data-filename=&quot;20230116_074606.jpg&quot; data-origin-width=&quot;2185&quot; data-origin-height=&quot;1664&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;나에게 첫 문장이란 &amp;hellip; 원망의 감정이 들때도 많았다. 하지만 엄마는 나에게 너무 많은 것을 주셨다. 그 분이 할 수 있는 것보다 더 많은 것을 주셨다.&lt;/li&gt;
&lt;li&gt;끝 문장을 잘 정하고 싶어 독서를 선택했다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;274p&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230117_181302.jpg&quot; data-origin-width=&quot;2752&quot; data-origin-height=&quot;2752&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cduQHv/btrWI22mUif/KWyp50lSPBkCNrsMcAkJEK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cduQHv/btrWI22mUif/KWyp50lSPBkCNrsMcAkJEK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cduQHv/btrWI22mUif/KWyp50lSPBkCNrsMcAkJEK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcduQHv%2FbtrWI22mUif%2FKWyp50lSPBkCNrsMcAkJEK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;640&quot; data-filename=&quot;20230117_181302.jpg&quot; data-origin-width=&quot;2752&quot; data-origin-height=&quot;2752&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;세상은 준엄하다.&lt;/li&gt;
&lt;li&gt;내 삻의 온전한 주인이란 표현이 새삼 너무 좋다. 이 책을 읽다보면 저자의 그런 과정이 잘 드러난다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;277p&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230117_181434.jpg&quot; data-origin-width=&quot;2522&quot; data-origin-height=&quot;1035&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YXyKB/btrWI3mHm5b/2VrzDXzDycGHkAZDfpFPJ1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YXyKB/btrWI3mHm5b/2VrzDXzDycGHkAZDfpFPJ1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YXyKB/btrWI3mHm5b/2VrzDXzDycGHkAZDfpFPJ1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYXyKB%2FbtrWI3mHm5b%2F2VrzDXzDycGHkAZDfpFPJ1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;263&quot; data-filename=&quot;20230117_181434.jpg&quot; data-origin-width=&quot;2522&quot; data-origin-height=&quot;1035&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이상하게 서양의 위인들은 저런 느낌의 표현을 정말 잘한다. 언어 차이인가?&lt;/li&gt;
&lt;li&gt;새로운 생각을 하려면 꼭 새로운 것을 봐야 하는 것이 아니라 보던 것을 새롭게 생각해봐야 한다는 말이 떠오른다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>잡담/책</category>
      <category>감상평</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/289</guid>
      <comments>https://rudalson.tistory.com/entry/%EC%95%84%EB%93%A4-%EC%85%8B-%EC%97%84%EB%A7%88%EC%9D%98-%EB%8F%88-%EB%90%98%EB%8A%94-%EB%8F%85%EC%84%9C-%ED%9B%84%EA%B8%B0#entry289comment</comments>
      <pubDate>Thu, 19 Jan 2023 19:30:49 +0900</pubDate>
    </item>
    <item>
      <title>React Native 에서 폰트(Font) 추가하기</title>
      <link>https://rudalson.tistory.com/entry/React-Native-%EC%97%90%EC%84%9C-%ED%8F%B0%ED%8A%B8Font-%EC%B6%94%EA%B0%80%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;React Native에서 폰트를 추가하기 위해서는 IOS, Android 방법 모두를 알아야 합니다. 양쪽이 추가하는 경로, 설정이 아주 조금 다르기 때문입니다. 물론, 한쪽만 추가하는 것도 가능합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;폰트 선택하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;폰트는 의외로 &lt;a href=&quot;https://blog.tosspayments.com/articles/legal2-2&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;a href=&quot;https://noonnu.cc/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;눈누 사이트&lt;/a&gt;를 추천합니다. 눈누 폰트가 아니라 한글 폰트 여러개가 있으며 라이선스 범위에 따른 폰트 분류가 되어 있고, 폰트를 화면으로 보면서 고를 수 있습니다. 그리고 폰트에 관한 질문 등등 한글 폰트에 관한 모든 활동을 다 확인해볼 수 있는 사이트입니다. 전 들어가서 도움 받을 때 마다 광고한번씩 누르고 나올만큼 도움을 잘 받은것 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-08-29 오후 6.38.06.png&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;641&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kAn5a/btrKTNPenkC/pz8J5Xqx4QVAquSNOiSVn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kAn5a/btrKTNPenkC/pz8J5Xqx4QVAquSNOiSVn0/img.png&quot; data-alt=&quot;눈누 사이트에선 다양한 한글 폰트에 대한 정보가 있습니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kAn5a/btrKTNPenkC/pz8J5Xqx4QVAquSNOiSVn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkAn5a%2FbtrKTNPenkC%2Fpz8J5Xqx4QVAquSNOiSVn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1033&quot; height=&quot;641&quot; data-filename=&quot;스크린샷 2022-08-29 오후 6.38.06.png&quot; data-origin-width=&quot;1033&quot; data-origin-height=&quot;641&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;눈누 사이트에선 다양한 한글 폰트에 대한 정보가 있습니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;OTF vs TTF&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;폰트를 다운 받으려면 2종류가 있습니다. &lt;code&gt;otf&lt;/code&gt;와 &lt;code&gt;ttf&lt;/code&gt; 이렇게 있으며 둘 간의 차이는 간단히 일반 문서 용도냐? 고해상도 출력이 필요한 용도냐 정도만 알아도 될 것 같습니다. 그래서 자신의 작업물의 용도에 대해 잠시 고민할 수도 있겠지만 React Native 에서 앱으로 제작하는 것이니 크게 차이나지 않습니다.(이건 순전히 저의 개인적인 경험입니다. 아마 다른 연유가 있으신 분도 계실것이기에 사견임을 밝힙니다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;React Native 에선 둘 다 지원하기에 아무거나 사용합니다만, 일부 otf는 안될때가 있더라구요. 이유는 모르겠습니다만 ttf로 변경하니깐 바로 되더라구요. 그래서 원인은 모르지만 이런걸로 문제되는게 귀찮아서 ttf 를 더 선호하긴 합니다. 하지만 딱히 차이점을 느끼지 못하는 1인입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;애플 IOS에서 폰트 추가&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 부터 본론입니다. 샘플로 &lt;a href=&quot;https://hangeul.naver.com/font&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;네이버의 나눔 글꼴 &lt;/a&gt;중 &lt;code&gt;나눔명조&lt;/code&gt;를 추가해보겠습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 폰트 복사&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;React Native 프로젝트 내 ios 디렉토리 밑에 Fonts 디렉토리 밑에 폰트파일들을 복사해 넣습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-08-29 오후 8.31.39.png&quot; data-origin-width=&quot;261&quot; data-origin-height=&quot;226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d7pSv5/btrKTOU1kD3/Cl3oKHhlqtkBpX4p7nN6gK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d7pSv5/btrKTOU1kD3/Cl3oKHhlqtkBpX4p7nN6gK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d7pSv5/btrKTOU1kD3/Cl3oKHhlqtkBpX4p7nN6gK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd7pSv5%2FbtrKTOU1kD3%2FCl3oKHhlqtkBpX4p7nN6gK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;261&quot; height=&quot;226&quot; data-filename=&quot;스크린샷 2022-08-29 오후 8.31.39.png&quot; data-origin-width=&quot;261&quot; data-origin-height=&quot;226&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 설정 파일에 폰트 등록&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 프로젝트의 xcode 파일에서 복사했던 폰트의 경로를 등록합니다. 제가 예를 든 AwesomeProject 에서 ios 디렉토리 밑의 &lt;code&gt;{Project}.xcodeproj&lt;/code&gt; 파일을 xcode 로 실행시킵니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-08-29 오후 7.22.40.png&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;355&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/roNpZ/btrKTTPsemx/BK5uRwYdk0qNv1ibCEjSh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/roNpZ/btrKTTPsemx/BK5uRwYdk0qNv1ibCEjSh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/roNpZ/btrKTTPsemx/BK5uRwYdk0qNv1ibCEjSh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FroNpZ%2FbtrKTTPsemx%2FBK5uRwYdk0qNv1ibCEjSh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;458&quot; height=&quot;355&quot; data-filename=&quot;스크린샷 2022-08-29 오후 7.22.40.png&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;355&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 위의 그림처럼 왼쪽 프로젝트명을 누른 후 &lt;code&gt;Add Files to &quot;프로젝트명&quot;...&lt;/code&gt; 을 선택한 후 조금전에 복사했던 &lt;code&gt;{Project}/ios/Fonts&lt;/code&gt; 를 선택해 줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-08-29 오후 8.34.58.png&quot; data-origin-width=&quot;1176&quot; data-origin-height=&quot;1314&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kMyRj/btrKOh4TZkj/bkgvjMCN7nDaxKXbR8ak0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kMyRj/btrKOh4TZkj/bkgvjMCN7nDaxKXbR8ak0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kMyRj/btrKOh4TZkj/bkgvjMCN7nDaxKXbR8ak0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkMyRj%2FbtrKOh4TZkj%2FbkgvjMCN7nDaxKXbR8ak0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1176&quot; height=&quot;1314&quot; data-filename=&quot;스크린샷 2022-08-29 오후 8.34.58.png&quot; data-origin-width=&quot;1176&quot; data-origin-height=&quot;1314&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기선 Fonts 디렉토리만 정확히 찾아놓고 Add 만 해주면 됩니다. 그러면 아래처럼 Fonts 추가된 걸 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-08-29 오후 7.33.19.png&quot; data-origin-width=&quot;270&quot; data-origin-height=&quot;220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dviwaB/btrKQivBxEP/gQ46XOQLIttTfGkwUUrH90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dviwaB/btrKQivBxEP/gQ46XOQLIttTfGkwUUrH90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dviwaB/btrKQivBxEP/gQ46XOQLIttTfGkwUUrH90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdviwaB%2FbtrKQivBxEP%2FgQ46XOQLIttTfGkwUUrH90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;270&quot; height=&quot;220&quot; data-filename=&quot;스크린샷 2022-08-29 오후 7.33.19.png&quot; data-origin-width=&quot;270&quot; data-origin-height=&quot;220&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 오른쪽 프로젝트 화면에서 &lt;code&gt;Info 탭&lt;/code&gt; 밑에서 &lt;code&gt;ICustom iOS Target Properties&lt;/code&gt;I 에서 Key로 &lt;code&gt;Fonts provided by application&lt;/code&gt; 를 추가해준 뒤 그 밑의 아이템으로 폰트의 경로를 &lt;code&gt;Fonts/폰트명&lt;/code&gt; 들을 등록해줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-08-30 오전 9.13.24.png&quot; data-origin-width=&quot;2642&quot; data-origin-height=&quot;1154&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YrXFb/btrKQSjwWJD/l46mkPqmvUJ6L6a1QJyLq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YrXFb/btrKQSjwWJD/l46mkPqmvUJ6L6a1QJyLq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YrXFb/btrKQSjwWJD/l46mkPqmvUJ6L6a1QJyLq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYrXFb%2FbtrKQSjwWJD%2Fl46mkPqmvUJ6L6a1QJyLq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2642&quot; height=&quot;1154&quot; data-filename=&quot;스크린샷 2022-08-30 오전 9.13.24.png&quot; data-origin-width=&quot;2642&quot; data-origin-height=&quot;1154&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기까지 입니다. 등록과정에서 해줘야 할 것은 다 했습니다. 이제 코드에서 사용하기만 하면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-08-30 오전 9.24.01.png&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;820&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7jB1X/btrKXF3KNW3/eL9vkpHXA8i9uME2J8G0uK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7jB1X/btrKXF3KNW3/eL9vkpHXA8i9uME2J8G0uK/img.png&quot; data-alt=&quot;기본 샘플 코드에서 나눔명조체를 적용해보았습니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7jB1X/btrKXF3KNW3/eL9vkpHXA8i9uME2J8G0uK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7jB1X%2FbtrKXF3KNW3%2FeL9vkpHXA8i9uME2J8G0uK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;878&quot; height=&quot;820&quot; data-filename=&quot;스크린샷 2022-08-30 오전 9.24.01.png&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;820&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;기본 샘플 코드에서 나눔명조체를 적용해보았습니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;안드로이드에서 폰트 추가&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안드로이드에서 추가하는 것은 IOS 보다 쉽습니다. &lt;code&gt;{Project}/android/app/src/main/assets/Fonts&lt;/code&gt; 디렉토리 밑에 폰트파일을 모두 복사해서 넣어두면 됩니다. 끝입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-08-30 오전 9.28.47.png&quot; data-origin-width=&quot;261&quot; data-origin-height=&quot;226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LKqfC/btrKUj1x7mP/H1N9N74x3oOI3N6I1f18Yk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LKqfC/btrKUj1x7mP/H1N9N74x3oOI3N6I1f18Yk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LKqfC/btrKUj1x7mP/H1N9N74x3oOI3N6I1f18Yk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLKqfC%2FbtrKUj1x7mP%2FH1N9N74x3oOI3N6I1f18Yk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;261&quot; height=&quot;226&quot; data-filename=&quot;스크린샷 2022-08-30 오전 9.28.47.png&quot; data-origin-width=&quot;261&quot; data-origin-height=&quot;226&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/App</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/287</guid>
      <comments>https://rudalson.tistory.com/entry/React-Native-%EC%97%90%EC%84%9C-%ED%8F%B0%ED%8A%B8Font-%EC%B6%94%EA%B0%80%ED%95%98%EA%B8%B0#entry287comment</comments>
      <pubDate>Mon, 29 Aug 2022 20:07:00 +0900</pubDate>
    </item>
    <item>
      <title>Mac에서 키체인 인증서 파일을 p12 파일로 내보내기</title>
      <link>https://rudalson.tistory.com/entry/Mac%EC%97%90%EC%84%9C-%ED%82%A4%EC%B2%B4%EC%9D%B8-%EC%9D%B8%EC%A6%9D%EC%84%9C-%ED%8C%8C%EC%9D%BC%EC%9D%84-p12-%ED%8C%8C%EC%9D%BC%EB%A1%9C-%EB%82%B4%EB%B3%B4%EB%82%B4%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;현재 만든 앱에 App Push 기능을 추가중입니다. 안드로이드와 iOS 양쪽 모두 작업중이며 FCM, APNS 를 속된말로 뚫어줘야 합니다. 그리고 저희의 백단인 AWS PinPoint 에 등록해줘야 합니다. 여기까지가 대략 설명한 큰 내용인데 하나하나는 처음 해보는 거라 어렵네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여하튼 애플의 APNS에서 인증 받기 위한 절차중 Certificate Signing Request 를 올렸더니 &lt;code&gt;aps.cer&lt;/code&gt; 인증파일을 받았습니다. 그리고 그걸 &lt;code&gt;.p12&lt;/code&gt; 파일로 export 해야 합니다만....&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;p12선택불가.png&quot; data-origin-width=&quot;1690&quot; data-origin-height=&quot;1132&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPtwuO/btrE2Af61K8/ykJESGOmpLs2WvaWimKjd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPtwuO/btrE2Af61K8/ykJESGOmpLs2WvaWimKjd0/img.png&quot; data-alt=&quot;왜....왜 안되는거지?&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPtwuO/btrE2Af61K8/ykJESGOmpLs2WvaWimKjd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPtwuO%2FbtrE2Af61K8%2FykJESGOmpLs2WvaWimKjd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1690&quot; height=&quot;1132&quot; data-filename=&quot;p12선택불가.png&quot; data-origin-width=&quot;1690&quot; data-origin-height=&quot;1132&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;왜....왜 안되는거지?&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;.p12 Export&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왜 그런지는 모르겠지만 모든 항목 탭에선 안되고 내 인증서 탭에서 선택해야 p12 파일을 추출할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;p12선택가능.png&quot; data-origin-width=&quot;1446&quot; data-origin-height=&quot;996&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3DOCR/btrEYiaGgk5/ZConkAolhB7mc5jD0XYO20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3DOCR/btrEYiaGgk5/ZConkAolhB7mc5jD0XYO20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3DOCR/btrEYiaGgk5/ZConkAolhB7mc5jD0XYO20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3DOCR%2FbtrEYiaGgk5%2FZConkAolhB7mc5jD0XYO20%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1446&quot; height=&quot;996&quot; data-filename=&quot;p12선택가능.png&quot; data-origin-width=&quot;1446&quot; data-origin-height=&quot;996&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 캡쳐 이미지 처럼 우선 &lt;code&gt;내 인증서&lt;/code&gt; 탭을 들어가면 &lt;code&gt;&amp;gt;&lt;/code&gt; 모양이 있는 상태에서는 내보내기 시 p12 포맷으로 보낼 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 아무것도 아닌 것을 왜 이리 만들어 진건지 어렵네요. 한참 구글링해서 찾은 결과가 허탈했습니다. 대체 뭔 차이야&lt;/p&gt;</description>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/286</guid>
      <comments>https://rudalson.tistory.com/entry/Mac%EC%97%90%EC%84%9C-%ED%82%A4%EC%B2%B4%EC%9D%B8-%EC%9D%B8%EC%A6%9D%EC%84%9C-%ED%8C%8C%EC%9D%BC%EC%9D%84-p12-%ED%8C%8C%EC%9D%BC%EB%A1%9C-%EB%82%B4%EB%B3%B4%EB%82%B4%EA%B8%B0#entry286comment</comments>
      <pubDate>Fri, 17 Jun 2022 10:59:01 +0900</pubDate>
    </item>
    <item>
      <title>React Native에서 AWS Appsync의 subscription reconnect 시키기</title>
      <link>https://rudalson.tistory.com/entry/ReactNative%EC%97%90%EC%84%9C-AWS-Appsync%EC%9D%98-subscription-reconnect-%EC%8B%9C%ED%82%A4%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;근래에 GraphQL을 사용하는데 &lt;a href=&quot;https://aws.amazon.com/ko/blogs/korea/invoke-aws-services-directly-from-aws-appsync/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AWS AppSync로 작업&lt;/a&gt;을 많이 하고 있습니다. REST API보다 편하지만 비슷한 성격인 Query, Mutation과 달리 Subscription은 웹소켓통신으로 연결해서 소켓링크를 생성해서 작업하는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;Building a real-time WebSocket client&quot; href=&quot;https://docs.aws.amazon.com/appsync/latest/devguide/real-time-websocket-client.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Building&amp;nbsp;a&amp;nbsp;real-time&amp;nbsp;WebSocket&amp;nbsp;client&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 subscription을 사용하는 것은 어렵지 않아서 무엇인가 넘어오면 이벤트 처리하듯 사용하면 되는데 모바일 환경에서는 이 세션이 끊어 질 경우를 대비해야 합니다. 이런 예외가 모바일에서는 꽤 빈번히 발생하기에 reconnect 시켜주는 것은 필수에 가깝지 않을까 생각합니다. 그래서 사실은 적절한 처리법이 있을 거라 생각했는데 ...&amp;nbsp; 막상 검색하면 방법을 못찾았습니다. 비슷한 문제를 공유한 사람은 많은데 딱히 Ctrl-C, Ctrl-P 로 해결하기 쉽게 나와있는게 없어서 이렇게 글을 작성하게 되었습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기본 적인 Subscription 구현&lt;/h3&gt;
&lt;pre id=&quot;code_1654842376184&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import Amplify, { API, graphqlOperation } from &quot;aws-amplify&quot;;

const subscription = API.graphql(
        graphqlOperation(onSearchResultSubscription, { queryId: search.id })
    ).subscribe({
        next: (result) =&amp;gt; {
            // 구독으로부터 데이터 업데이트 수신 중지
            subscription.unsubscribe();
            console.log(result);
        }
    });&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;subscription 구현은 대략 위의 코드 형태대로 구현합니다. 여기서 &lt;code&gt;next:&lt;/code&gt; 부분을 이벤트 처리부를 넣어주면 되고 &lt;code&gt;unsubscribe()&lt;/code&gt;로 자원 해제 시켜주면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 생성한 웹소켓 링크가 언제 쉽게 broken 되냐면 저 같은 경우는 iOS에서 화면을 껐을 때입니다. 이 링크로 실시간 정보를 받아 처리하는 것을 구현하였고 안드로이드에서 테스트 할 때도 이런 예외상황이 발생하지 않았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 애플 아이폰에서 테스트 하다가 화면이 잠시 꺼졌고.... 뭐 꺼질수도 있죠. 다시 켜서 보니 실시간 데이터를 받던 것이 멈춰있었습니다. 이런 현상은 안드로이드에선 발생하지 않았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 아이폰과 안드로이드에서 다르게 발생하는 것은 App의 state를 다루는 것이 조금 다른 면이 있는데 아이폰에서는 화면이 꺼졌을 때는 Inactive 상태에서 suspend 상태가 추가로 있어서 바로 빠져 버리게 됩니다. suspend 상태에서는 코드 실행하는 부분이 짤없이 하나도 없습니다. 그렇기에 suspend 상태에 대한 방어코드를 넣어봐야 동작하지도 않습니다. 안드로이드에서도 다른 형식으로라도 있을 수 있는 부분이긴 하지만.... 보통의 앱을 사용하다 슬립처럼 화면이 꺼지고 다시 홈버튼으로 켜서 이어서 보는 상황은 충분히 자주 있기에 아이폰을 위한 경우를 위해서라도 이에 대한 예외처리가 되어야 합니.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가령, 티맵 같은 네이게이션 앱은 위치에 대한 실시간 데이터를 받고 앱 사용중에는 슬립이 되지 않게끔 처리하면 막는 것 같지만 실수라도 전원버튼을 짧게 누르면 화면은 일단 꺼짐으로 들어가버립니다. 그 뒤 다시 화면을 켰을 때 멈춰있다면?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뭐 욕심을 부리자면 이렇게 화면을 다시 켜서 앱실행상태를 만들었을 때 자동으로 subscription 링크가 reconnect 까지 된다면 제일 좋지만 아직 그렇게는 안되더라구요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Reconnect하기 위한 state 추가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 문제를 수정하기 위한 힌트는 그래도 검색으로 나마 얻기는 했습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/aws-amplify/amplify-js/issues/7057&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AppSync&amp;nbsp;websocket&amp;nbsp;does&amp;nbsp;not&amp;nbsp;reconnect&amp;nbsp;#7057&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/aws-amplify/amplify-js/issues/8513&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[Feedback] Amplify subscriptions stop when app goes to sleep. Don't resubscribe #8513&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 이슈 타래를 봤지만 해법에 대한 직접적인 코드는 안나오고 reconnect를 직접 구현해서 처리했다는 멘트를 보고 저도 어쩔 수 없이 고민해서 작성을 해야만 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저, broken 예외가 발생하면 subcription의 &lt;code&gt;error:&lt;/code&gt; 부분으로 처리요청을 하게 됩니다. 그렇기에 이 부분에 다시금 subscribe 를 해주도록 구현하면 됩니다...... 와... 이건 또 어떻게 하지? 재귀호출인가? 가능은 한가? 등등 이부분도 고민이었는데 전 이 부분을 &lt;code&gt;useState&lt;/code&gt;와 &lt;code&gt;useEffect&lt;/code&gt;로 처리해줬습니다. 그래서 setState로 값이 변경되는 것을 체크한 후 useEffect 내로 subscribe 처리부를 옮겼습니다.&amp;nbsp; 아래의 코드 처럼요.&lt;/p&gt;
&lt;pre id=&quot;code_1654846490097&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const [eventSubscription, setEventSubscription] = useState(null);

useEffect(() =&amp;gt; {
    const subscription = API.graphql(
        graphqlOperation(onSearchResultSubscription, { queryId: search.id })
    ).subscribe({
        next: (result) =&amp;gt; {
            // 구독으로부터 데이터 업데이트 수신 중지
            console.log(result);
        },
        error: err =&amp;gt; {
            setEventSubscription(err);
        },
    });
    
    return () =&amp;gt; {
    	subscription.unscribe();
    };
}, [eventSubscription]);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기까지 구현해서 동작하면 링크가 끊어지더라도 다시 링크를 생성하려고 무지하게 애를 쓰는 상황을 만들 수 있습니다. 한마디고 동작은 하는데 링크가 맺어지지 않는 경우가 많더라구요. 왜 그런지는 정확하게 알수 없지만 unscribe() 부분은 일종의 자원회수 부분인데 이 부분에서 약간의 시간이 필요한 것 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한마디로 완전히 링크정리가 되지 않았는데 또 맺으려고 시도하고. 실패하니 또 다시 정리하면서 맺으려고 시도하고 가 무한 루프가 발생했습니다. 따라서 이를 해결하기 위해 약간의 delay를 줬습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1654846810729&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;setTimeout(() =&amp;gt; {
    setEventSubscription(err);
}, 2000);&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결론&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런식으로 AppSync subscription을 감싸줬고 한번에 6~7개의 subscribe를 사용한 화면에서도 무난히 테스트 해보았습니다. (아이폰 Xs)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/App</category>
      <category>AppSync</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/285</guid>
      <comments>https://rudalson.tistory.com/entry/ReactNative%EC%97%90%EC%84%9C-AWS-Appsync%EC%9D%98-subscription-reconnect-%EC%8B%9C%ED%82%A4%EA%B8%B0#entry285comment</comments>
      <pubDate>Fri, 10 Jun 2022 16:04:27 +0900</pubDate>
    </item>
    <item>
      <title>Apple Appstore 심사거절 - Guideline 2.3.10 - Performance - Accurate Metadata</title>
      <link>https://rudalson.tistory.com/entry/Apple-Appstore-%EC%8B%AC%EC%82%AC%EA%B1%B0%EC%A0%88-Guideline-2310-Performance-Accurate-Metadata</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;React Native로 만든 앱이 애플 앱스토어에서 2번째 심사거절을 당했습니다. 전 버전에서 사소한 수정을 해서 마이너 업데이트판을 올렸는데 거절 당했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1546&quot; data-origin-height=&quot;416&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zBQwn/btrCEe1DPrp/QFQqswT05HKxhiQzfyNldK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zBQwn/btrCEe1DPrp/QFQqswT05HKxhiQzfyNldK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zBQwn/btrCEe1DPrp/QFQqswT05HKxhiQzfyNldK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzBQwn%2FbtrCEe1DPrp%2FQFQqswT05HKxhiQzfyNldK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1546&quot; height=&quot;416&quot; data-origin-width=&quot;1546&quot; data-origin-height=&quot;416&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런건 경험이 중요할 것 같아서 기록으로 남겨봅니다.&lt;/p&gt;
&lt;h1&gt;Performance - Accurate Metadata&lt;/h1&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;Guideline 2.3.10 - Performance - Accurate Metadata


We noticed that your submission includes irrelevant third-party platform information. 
Specifically, your What's New text includes Android references.
Referencing third-party platforms in your app or its metadata is not permitted on the App Store unless there is specific interactive functionality.

Next Steps

To resolve this issue, please remove all instances of this information from your app and its metadata, including the app description, promotional text, What's New info, previews, and screenshots.
If you think we've misunderstood your app's functionality and how it interacts with third-party platforms, please reply to this message and provide additional information.

Resources

See guideline 2.3.10 to learn more about relevant information to include in apps and metadata on the App Store.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대충 이런 내용이며 이를 간략히 번역해보면&lt;/p&gt;
&lt;pre class=&quot;erlang&quot;&gt;&lt;code&gt;성능 - 정확한 메타데이터

제출하신 내용에 관련 없는 타사 플랫폼 정보가 포함되어 있습니다.
특히 What's New 텍스트에는 Android 참조가 포함됩니다.
특정 대화형 기능이 없는 한 앱에서 타사 플랫폼 또는 해당 메타데이터를 참조하는 것은 App Store에서 허용되지 않습니다.


다음 단계

이 문제를 해결하려면 앱 설명, 홍보 문구, 새로운 기능 정보, 미리보기 및 스크린샷을 포함하여 앱과 해당 메타데이터에서 이 정보의 모든 인스턴스를 제거하세요.
앱의 기능 및 타사 플랫폼과 상호 작용하는 방식을 잘못 이해했다고 생각되면 이 메시지에 회신하여 추가 정보를 제공해 주세요.


자원

App Store의 앱 및 메타데이터에 포함할 관련 정보에 대해 자세히 알아보려면 지침 2.3.10을 참조하세요.&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;다른 경우들&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 같은 내용으로 검색을 해보니 다른 분들께서 아래의 내용을 주의하라고 알려주셨습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;a href=&quot;https://blog.naver.com/PostView.naver?blogId=i1004me2&amp;amp;logNo=222246725578&amp;amp;redirect=Dlog&amp;amp;widgetTypeCall=true&amp;amp;directAccess=false&quot;&gt;iOS 리젝 사유 : Accurate Metadata&lt;/a&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ios 에 노치디자인 적용&lt;/li&gt;
&lt;li&gt;아이폰 스크린샷이 안드로이드와 비슷하게 보이는지&lt;/li&gt;
&lt;li&gt;현재앱과 동일한 스샷대로 제공되는지&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;a href=&quot;https://beomboo12.tistory.com/m/22&quot;&gt;iOS 리젝 대응하기&lt;/a&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이분께선 앱 혹은 웹 화면내 앱 설치 경로를 노출하거나 Android, iOS 아이콘을 특정 위치에 달아 넣어 사용자가 앱을 설치하도록 유도. 특히 구글플레이스토어에 민감하다는데........&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;짐작되는 것들&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그나마 한글로 정리해두신 분들이랑 다른 몇개를 검토해보니 나름 억울한게 소소한 업데이트지만&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;변동사항 내역에 안드로이드를 언급한 점&lt;/li&gt;
&lt;li&gt;코드에서 앱버전이 낮을 경우 강제 업데이트를 유도하기 위한 코드와 설치링크를 포함시킴&lt;/li&gt;
&lt;li&gt;앱 미리보기 및 스크린샷에서 6.5형 디스플레이 이미지를 노치 디자인으로 변경&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2번의 경우는 안드로이드는 플레이스토어로, iOS는 앱스토어로 가르키게 되어 있는데 이걸 문제삼은 건가 싶네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결론&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 짐작되는 것들을 고친 뒤 다시 심사에 올렸고 통과되었습니다. 하지만 정확히 어디서 얻어 걸린건지는 모르겠지만 우선은 한숨 돌리게 되었습니다.&lt;/p&gt;</description>
      <category>Development/App</category>
      <category>Android</category>
      <category>ios</category>
      <category>reactnative</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/284</guid>
      <comments>https://rudalson.tistory.com/entry/Apple-Appstore-%EC%8B%AC%EC%82%AC%EA%B1%B0%EC%A0%88-Guideline-2310-Performance-Accurate-Metadata#entry284comment</comments>
      <pubDate>Fri, 20 May 2022 12:17:15 +0900</pubDate>
    </item>
    <item>
      <title>굿바이 BRD wallet! Coinbase 월렛 이전 한글 문제</title>
      <link>https://rudalson.tistory.com/entry/%EA%B5%BF%EB%B0%94%EC%9D%B4-BRD-wallet-Coinbase-%EC%9B%94%EB%A0%9B-%EC%9D%B4%EC%A0%84-%ED%95%9C%EA%B8%80-%EB%AC%B8%EC%A0%9C</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오래간만에 비트코인 지갑을 실행해 보았습니다. 딱히 손댈일이 있었던건 아닌데 이제 또 조금씩 모아야 되지 않을까 싶어 BRD 월렛을 실행시켜 남은 잔고를 확인하려는데...&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;BRD는 이제 굿바이&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screenshot_20220414-193057.jpeg&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;3120&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dJF7S6/btrzmjTKXoo/uW4xndxgXhIKPkN1b16ma1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dJF7S6/btrzmjTKXoo/uW4xndxgXhIKPkN1b16ma1/img.jpg&quot; data-alt=&quot;이.. 이. 이게 뭐지? 내 코인은???&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dJF7S6/btrzmjTKXoo/uW4xndxgXhIKPkN1b16ma1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdJF7S6%2FbtrzmjTKXoo%2FuW4xndxgXhIKPkN1b16ma1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;333&quot; height=&quot;722&quot; data-filename=&quot;Screenshot_20220414-193057.jpeg&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;3120&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이.. 이. 이게 뭐지? 내 코인은???&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자세히 보니 BRD에서 Coinbase Wallet 로 넘어가라는 건데.... 왜 그래야 하지 싶었는데 &lt;a href=&quot;https://www.pymnts.com/acquisitions/2021/coinbase-buys-brd-crypto-wallet-firm-to-accelerate-web3-adoption/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;BRD 오픈소스 프로젝트를 Coinbase 쪽에서 인수&lt;/a&gt;한 모양입니다. 그래도 BRD로 남겨두면 좋았을 것 같은데 그러지 않고 옮기라고 하네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 Migrate Now 를 통해 옮기려고 하면 BRD 에서 처음 지갑을 생성했을 때 처럼 12개의 단어 (12 phrases) 를 보여줍니다. 아마 복구를 위해서라도 어딘가에 저장해뒀을 테지만 다시 한번 BRD에서 12개 단어를 보여주니 어딘가에 적어둬야 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 예전에 BRD 처음 생성할 때도 살짝 특이하다 생각했었는데 BRD 에서는 한글로 &lt;code&gt;12개의 단어&lt;/code&gt;를 생성해줬습니다. 이게 몇가지 이유로 불편했었는데 이번 Coinbase 월렛으로 옮길때도 문제가 발생했습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;코인베이스 지갑 이동&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코인베이스 지갑을 설치한 후&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Screenshot_20220413-085610-side.png&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpAjs7/btrzpbtIADn/8Bp7xjuiZPjbIiqUWm1pG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpAjs7/btrzpbtIADn/8Bp7xjuiZPjbIiqUWm1pG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpAjs7/btrzpbtIADn/8Bp7xjuiZPjbIiqUWm1pG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpAjs7%2FbtrzpbtIADn%2F8Bp7xjuiZPjbIiqUWm1pG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;552&quot; height=&quot;600&quot; data-filename=&quot;Screenshot_20220413-085610-side.png&quot; data-origin-width=&quot;552&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;I already have a wallet&lt;/li&gt;
&lt;li&gt;Restore with recovery phrase&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과정을 거치면 12개의 단어를 입력하는 화면이 나옵니다. 하지만 한글로 입력시 한 문자를 온전히 입력할 수 없는 상태가 되어 내가 원하는 단어를 만들 수가 없는 문제가 있었습니다. 예를 들어, &lt;code&gt;감성&lt;/code&gt; 이란 단어를 입력하려고 &quot;감&quot;을 입력하면 &lt;code&gt;ㄱ ㅏ ㅁ&lt;/code&gt; 이렇게 초성, 중성, 종성이 다 풀어져서 입력이 되어 정상적인 단어를 입력할 수 없게 되어 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20220413_090130.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7paku/btrzoPEscUP/XAha0ZPo0OPjEZNFlEUohk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7paku/btrzoPEscUP/XAha0ZPo0OPjEZNFlEUohk/img.jpg&quot; data-alt=&quot;이 부분은 폰 캡쳐가 안되어서 다른 폰으로 사진을 찍어둠&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7paku/btrzoPEscUP/XAha0ZPo0OPjEZNFlEUohk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7paku%2FbtrzoPEscUP%2FXAha0ZPo0OPjEZNFlEUohk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;647&quot; height=&quot;863&quot; data-filename=&quot;20220413_090130.jpg&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이 부분은 폰 캡쳐가 안되어서 다른 폰으로 사진을 찍어둠&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 다른 메모장에 12개의 단어를 모두 입력한 뒤 &lt;code&gt;복사 - 붙여넣기&lt;/code&gt; 를 해서 한번에 12개를 다 입력해서 멀쩡한 상태인것 같은데도 Next버튼을 누르면 더 이상 진행되지 않습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이건 코인베이스 지갑앱이 한글을 완전히 지원 못해서 그렇다는 생각에 코인베이스 사이트에 가입 후 고객센터에 문의를 했더니 스크린캡쳐 뜬거도 보내고 좀더 자세히 알려달라는 둥 기계적인 답변 메일이 오더라구요. 어떻게 풀어야 할지 망막하더라구요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;해결책&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한글 한 문자도 온전히 입력이 힘들고, 12개 단어를 한번에 입력해 넣어도 인식이 안되는거 보면 단어 하나씩 정상적으로 입력해 넣어야 했습니다. 위의 입력화면중 왼쪽 밑을 보면 단어추천이 뜹니다. 이걸 이용해야 하는데 가령 &lt;code&gt;사슴&lt;/code&gt; 이라는 단어를 입력해야 한다면 사슴의 &quot;사&quot;를 위해 &lt;code&gt;ㅅ ㅏ&lt;/code&gt; 를 입력해보면 추천 단어들이 뜹니다. 그중에 당연히 사슴이 없을 확률이 높습니다만 &quot;사&quot; 로 시작하는 아무 단어 예를 들어 &quot;사자&quot; 를 선택했다면 &quot;사자&quot; 옆에서 뒤로 한글자를 지웁니다. 그러면 &quot;사&quot;만 남게 되고 뒤이어서 &lt;code&gt;ㅅ ㅡ ㅁ&lt;/code&gt; 정도까지 치면 신기하게 &quot;사슴&quot;이 추천단어에 뜨게 됩니다. 그러면 내가 원하는 정확한 단어를 입력해 넣을 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 단어 하나하나 추천단어중 선택해서 입력해서 12개를 채우면 Next 버튼을 누른 이후의 진행이 가능해집니다.&lt;/p&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>IT</category>
      <category>brd</category>
      <category>BTC</category>
      <category>coinbase</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/283</guid>
      <comments>https://rudalson.tistory.com/entry/%EA%B5%BF%EB%B0%94%EC%9D%B4-BRD-wallet-Coinbase-%EC%9B%94%EB%A0%9B-%EC%9D%B4%EC%A0%84-%ED%95%9C%EA%B8%80-%EB%AC%B8%EC%A0%9C#entry283comment</comments>
      <pubDate>Wed, 13 Apr 2022 09:27:12 +0900</pubDate>
    </item>
    <item>
      <title>React Native - pod install load error (M1 issue)</title>
      <link>https://rudalson.tistory.com/entry/React-Native-pod-install-load-error-M1-issue</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 내용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/react-native-maps/react-native-maps&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;react-native-maps&lt;/a&gt; 패키지를 사용하기 위해 install 후 pod install에서 다음과 같은 에러가 발생하였습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1648117262888&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npx pod-install ios
Scanning for pods...
1.11.3
&amp;gt; pod install
Auto-linking React Native modules for target `Workbnb`: RNCMaskedView, RNGestureHandler, RNReanimated, RNScreens, RNVectorIcons, react-native-maps, react-native-pager-view, and react-native-safe-area-context
Analyzing dependencies

――― MARKDOWN TEMPLATE ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――

### Command

```
/usr/local/bin/pod install --ansi
```

### Report

* What did you do?

* What did you expect to happen?

* What happened instead?


### Stack

```
   CocoaPods : 1.11.3
        Ruby : ruby 2.6.8p205 (2021-07-07 revision 67951) [universal.arm64e-darwin21]
    RubyGems : 3.0.3.1
        Host : macOS 12.1 (21C52)
       Xcode : 13.2.1 (13C100)
         Git : git version 2.32.0 (Apple Git-132)
Ruby lib dir : /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib
Repositories : trunk - CDN - https://cdn.cocoapods.org/



...



### Error

```
LoadError - dlopen(/Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/lib/ffi_c.bundle, 0x0009): tried: '/Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/lib/ffi_c.bundle' (mach-o file, but is an incompatible architecture (have 'x86_64', need 'arm64e')), '/usr/lib/ffi_c.bundle' (no such file) - /Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/lib/ffi_c.bundle
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/lib/ffi.rb:5:in `rescue in &amp;lt;top (required)&amp;gt;'
/Library/Ruby/Gems/2.6.0/gems/ffi-1.15.5/lib/ffi.rb:2:in `&amp;lt;top (required)&amp;gt;'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/Library/Ruby/Gems/2.6.0/gems/ethon-0.15.0/lib/ethon.rb:3:in `&amp;lt;top (required)&amp;gt;'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
...
이하 생략&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글링해보니 필요한건 ffi 설치가 필요했습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1648117514360&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo gem install ffi&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이후로도 문제는 개선되지 않았습니다. 조금 더 찾아보니 결국은 나도 Mac M1 이슈였던 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전까지는 pod install에 딱히 문제가 없었는데... 아직 이슈가 있긴 있군요. Error on M1 Mac #10287 에서 한참 보다가 나에게 맞는 것을 찾았습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 Rosetta 를 사용한 terminal 을 위해 iterm을 복제하여 Rosetta 옵션을 체크해줬습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1224&quot; data-origin-height=&quot;816&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1lLP6/btrxb9knERQ/HmQFkp4iAp0zUXmpkebdEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1lLP6/btrxb9knERQ/HmQFkp4iAp0zUXmpkebdEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1lLP6/btrxb9knERQ/HmQFkp4iAp0zUXmpkebdEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1lLP6%2Fbtrxb9knERQ%2FHmQFkp4iAp0zUXmpkebdEK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1224&quot; height=&quot;816&quot; data-origin-width=&quot;1224&quot; data-origin-height=&quot;816&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런 후 Rosetta 옵션을 활성화한 iTerm을 실행한 후 모든 작업을 다시 해줬습니다. 하는 김에 cocoapods 도 새로 업데이트 했습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1648118028468&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;~/repo/Workbnb   main &amp;plusmn;  sudo gem install cocoapods
Password:
Successfully installed cocoapods-1.11.3
Parsing documentation for cocoapods-1.11.3
Done installing documentation for cocoapods after 1 seconds
1 gem installed
~/repo/Workbnb   main &amp;plusmn;  sudo gem install ffi
Building native extensions. This could take a while...
Successfully installed ffi-1.15.5
Parsing documentation for ffi-1.15.5
Done installing documentation for ffi after 3 seconds
1 gem installed
~/repo/Workbnb   main &amp;plusmn;  npx pod-install ios
Scanning for pods...
1.11.3
&amp;gt; pod install
Auto-linking React Native modules for target `Workbnb`: RNCMaskedView, RNGestureHandler, RNReanimated, RNScreens, RNVectorIcons, react-native-maps, react-native-pager-view, and react-native-safe-area-context
Analyzing dependencies
Downloading dependencies
Installing Google-Maps-iOS-Utils (3.10.3)
Installing GoogleMaps (5.1.0)
Installing react-native-google-maps (0.30.1)
Generating Pods project
Integrating client project
Pod installation complete! There are 63 dependencies from the Podfile and 55 total pods installed.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다 잘되었습니다. ^^;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/App</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/281</guid>
      <comments>https://rudalson.tistory.com/entry/React-Native-pod-install-load-error-M1-issue#entry281comment</comments>
      <pubDate>Thu, 24 Mar 2022 19:34:20 +0900</pubDate>
    </item>
    <item>
      <title>React Native에서 Sound 재생하기</title>
      <link>https://rudalson.tistory.com/entry/React-Native%EC%97%90%EC%84%9C-Sound-%EC%9E%AC%EC%83%9D%ED%95%98%EA%B8%B0</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;목표&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 상황에서 간단한 (비프음처럼) 사운드 파일을 재생하고 싶음&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1차시도&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.npmjs.com/package/react-native-sound-player&quot;&gt;react-native-sound-player&lt;/a&gt; 를 살펴보니 단순하고 쉬워서 어려움이 없을 줄 알았다.&lt;/p&gt;
&lt;pre class=&quot;dockerfile&quot;&gt;&lt;code&gt;yarn add react-native-sound-player
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;import SoundPlayer from 'react-native-sound-player'

try {
    // play the file tone.mp3
    SoundPlayer.playSoundFile('tone', 'mp3')
    // or play from url
    SoundPlayer.playUrl('&amp;lt;https://example.com/music.mp3&amp;gt;')
} catch (e) {
    console.log(`cannot play the sound file`, e)
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 내 mp3 파일을 재생하려면 {project_root}/android/app/src/main/res/raw/ 에 mp3 파일들을 집어 넣고 playSoundFile() 에서 파일명을 인자로 주면 끝.... 인줄 알았다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;난관&lt;/h2&gt;
&lt;pre class=&quot;kotlin&quot;&gt;&lt;code&gt;TypeError: null is not an object (evaluating 'RNSoundPlayer.playSoundFile')
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 에러가 나면서 SoundPlayer.playSoundFile('tone', 'mp3') 이거 한줄 실행시키는 것이 시간이 많이 걸리게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에러 내용은 null 은 오브젝트가 아니다? 인데 아니긴 아닌데 대체 어디가 아니라는 건지. 리액트도 처음이고 리액트 네이티브도 처음인 나에겐 감이 안왔다. 그래도 대충 SoundPlayer 아니면 function 인 playSoundFile 이 둘중 하나일텐데 단순 null pointer exception 같은 건도 아니니깐 playSoundFile 일 것 같은데.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글링을 해보는데 RNSoundPlayer 자리는 각자의 참조하는 형태에 따라 다른것 같고 playSoundFile 자리가 null 로 되어서 발생하는 문제가 맞는 것 같았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제는 다른 사람의 패키지 인데 왜 null 일까?&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;우회&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 react-native-sound-player 패키지에서 null 문제 해결책은 구글링으로 찾지 못하여서 다른 사운드 패키지를 찾았다. 내가 하고 싶은건 사운드 재생이지 저 패키지 문제 대응이 아니기 때문이다.&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;a href=&quot;https://github.com/zmxv/react-native-sound&quot;&gt;react-native-sound&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;a href=&quot;https://openbase.com/js/react-native-audio-recorder-player&quot;&gt;react-native-audio-recorder-player&lt;/a&gt;&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://openbase.com/js/react-native-track-player&quot;&gt;react-native-track-player&lt;/a&gt;&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;h2 data-ke-size=&quot;size26&quot;&gt;해결&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 여러개의 패키지들 문서를 살펴보면 특별한 건 없었지만 npm install 외에 manual install 을 언급한 부분들이 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;react-native-sound-player 문서에서는 없었지만 비슷하게 해볼 수 있을 것 같았다. 왜냐하면 그냥 null 일것 같지 않고 뭔가가 link 가 끊기지 않았을까 추정되었기 때문이다. 나 빼고는 다른 사람들은 잘 사용하고 있는 것 같은데 나만 문제이기에  &lt;/p&gt;
&lt;pre class=&quot;reasonml&quot;&gt;&lt;code&gt;include ':react-native-sound-player'
project(':react-native-sound-player').projectDir = new File(rootProject.projectDir,    '../node_modules/react-native-sound-player/android')
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;gradle&quot;&gt;&lt;code&gt;dependencies {
...
	compile project(':react-native-sound-player')
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 2개를 추가해주었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이디어는 react-native-audio-recorder-player 문서에서 따와서 비슷하게 이름만 바꿨더니 해결되었다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;새로운 의문&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 해결법을 찾은것 같아서 기뻤고 이 내용을 정리하기 위해 글을 쓰는 과정에서 새로운 프로젝트를 생성했다. 그래서 저 에러를 유발하기 위해&lt;/p&gt;
&lt;pre class=&quot;dockerfile&quot;&gt;&lt;code&gt;yarn add react-native-sound-player
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것만 하고 sound play 를 해보니. 이젠 에러가 나질 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;manual install 을 해준 프로젝트도 아닌데 이제 잘된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 아마 global package에도 영향을 주는건가 싶은데 java scrpt 의 세계는 신비롭기만 하다.&lt;/p&gt;</description>
      <category>Development/App</category>
      <category>react-native</category>
      <category>reactnative</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/280</guid>
      <comments>https://rudalson.tistory.com/entry/React-Native%EC%97%90%EC%84%9C-Sound-%EC%9E%AC%EC%83%9D%ED%95%98%EA%B8%B0#entry280comment</comments>
      <pubDate>Wed, 2 Mar 2022 00:33:47 +0900</pubDate>
    </item>
    <item>
      <title>자녀 해외주식 계좌 개설 (키움증권)</title>
      <link>https://rudalson.tistory.com/entry/%EC%9E%90%EB%85%80-%ED%95%B4%EC%99%B8%EC%A3%BC%EC%8B%9D-%EA%B3%84%EC%A2%8C-%EA%B0%9C%EC%84%A4-%ED%82%A4%EC%9B%80%EC%A6%9D%EA%B6%8C</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;드디어 평소 계획하고 있던 제 아이의 해외주식 계좌를 개설하였습니다. 국내 주식보다는 미국 주식을 증여하려고 계획하였고 특히 앞으로 전기차시대가 올 것으로 예상하기에 &lt;code&gt;테슬라(TSLA)&lt;/code&gt;를 증여하려고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로는 Tesla 주식을 보유중이기에 현금 증여가 아닌 주식 증여를 하려고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 참고했던 것은 &lt;code&gt;박곰희님&lt;/code&gt;의 유튜브를 보고 준비했었습니다. 아래의 내용을 정리한 내용과 제가 직접 했던 부분을 정리해보았습니다.&lt;/p&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=2GjGjwkHrMA&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bYhM2k/hyMKMAnOJU/ty73kwXMPFTifNXOBVan10/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=884_130_1044_304&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/2GjGjwkHrMA&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;계좌 개설&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;준비물&lt;/h3&gt;
&lt;ol 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;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;계좌 개설 및 증여 절차&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위의 준비물 4개 지참&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;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계좌 개설 후 증여는 기본적으로 위에 정리한 내용대로 진행하면 됩니다. 다만 전 아직 증여하기 전이라 주식만 이전한 상태이며 차후 증여세 신고를 한다면 증여 부분만 따로 정리할까 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계좌 개설은 &lt;code&gt;키움증권&lt;/code&gt; 계좌를 선택하였습니다. 현시점 (2021.12)에서 자식 계좌를 비대면으로 개설을 할 수는 없었기에 증권사에 방문하여 개설하여야 합니다. 이렇게 되면 오프라인 계좌로 만들어지게 되어 수수료가 높은 계좌를 만들 수밖에 없습니다. 하지만 위의 유튜브 내용대로 키움증권은 은행 방문으로 만들지만 온라인 계좌이기 때문에 수수료에서 보다 저렴하게 매매할 수 있을 것입니다. 하지만.... 딱히 매매할 계좌는 아니지만....&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;키움증권으로 해외증권계좌 개설 시 주의할 점&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;키움증권계좌 개설 시 저처럼 &lt;code&gt;해외주식&lt;/code&gt;을 고려하신다면 모든 은행이 가능한 것이 아닙니다. 제 아이의 계좌가 &lt;code&gt;신한은행&lt;/code&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;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단, 신한은행에서는 &lt;code&gt;키움국내계좌&lt;/code&gt; 개설은 가능합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;키움 계좌 내 주식 이전&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자녀의 해외계좌를 다 만들었다면 키움증권 사이트에 들어가서 자녀용 id/pw를 새로 생성하고 공동 인증서(구 공인인증서)를 발급받아 정회원 가입을 합니다. 그런 후 저의 계좌에서 자녀의 계좌로 주식을 이전하면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;키움계좌.png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1560&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWQVlf/btrolTRJ1b2/7s83btyCk7jJWYKTM9kjj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWQVlf/btrolTRJ1b2/7s83btyCk7jJWYKTM9kjj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWQVlf/btrolTRJ1b2/7s83btyCk7jJWYKTM9kjj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWQVlf%2FbtrolTRJ1b2%2F7s83btyCk7jJWYKTM9kjj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1440&quot; height=&quot;1560&quot; data-filename=&quot;키움계좌.png&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1560&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주식 이전은 &lt;code&gt;키움 글로벌S MTS&lt;/code&gt;에서 하였습니다. &lt;code&gt;전체메뉴&lt;/code&gt; - &lt;code&gt;업무&lt;/code&gt; - &lt;code&gt;계좌간 유가증권대체&lt;/code&gt; 순으로 메뉴를 찾아 들어간 뒤 대체구분에 &lt;code&gt;타인명의 대체&lt;/code&gt;를 반드시 선택하여야 합니다. 그런 후 이전할 주식 종목을 선택하고 자녀의 해외계좌번호를 입력해준 뒤 &lt;code&gt;계좌확인&lt;/code&gt; 버튼을 눌러주면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계좌 이전에는 &lt;code&gt;OTP&lt;/code&gt; 가 반드시 필요하다고 합니다. 전 이미 OTP가 등록되어 있었기에 계속 진행하였고 주식이전을 잘 마쳤습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 3개월 내로 증여신고만 하면 됩니다.&lt;/p&gt;</description>
      <category>잡담</category>
      <category>자녀주식계좌</category>
      <category>키움증권</category>
      <category>해외주식</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/279</guid>
      <comments>https://rudalson.tistory.com/entry/%EC%9E%90%EB%85%80-%ED%95%B4%EC%99%B8%EC%A3%BC%EC%8B%9D-%EA%B3%84%EC%A2%8C-%EA%B0%9C%EC%84%A4-%ED%82%A4%EC%9B%80%EC%A6%9D%EA%B6%8C#entry279comment</comments>
      <pubDate>Mon, 20 Dec 2021 10:49:04 +0900</pubDate>
    </item>
    <item>
      <title>Cloudflare(클라우드 플레어) 떡상각?</title>
      <link>https://rudalson.tistory.com/entry/Cloudflare%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%ED%94%8C%EB%A0%88%EC%96%B4%EC%9D%98-%EB%96%A1%EC%83%81%EA%B0%81</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;클라우드 플레어는 CDN 회사입니다. 2021년 말 런칭한 서비스들이 주목을 받고 있으며 이 내용을 참고한 것은 노마드코더를 참고하여 정리하였습니다.&lt;/p&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=-AwLsUuzgLw&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/xOQYr/hyMEczWSUJ/AjyetRHdS3QgkNv8AHSRY0/img.jpg?width=480&amp;amp;height=360&amp;amp;face=42_174_88_224&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;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/-AwLsUuzgLw&quot; width=&quot;480&quot; height=&quot;360&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Cloudflare R2&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;S3보다 낫다는 의미로 한단어씩 앞으로 땡겨서 R2라고 명명하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1GB content S3 R2&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1달 보관비용&lt;/td&gt;
&lt;td&gt;$0.02&lt;/td&gt;
&lt;td&gt;$0.015&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1회 다운로드(egress fee)&lt;/td&gt;
&lt;td&gt;$0.09&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AWS S3는 egress fee에서 고수익을 올리고 있습니다.&lt;/li&gt;
&lt;li&gt;예를 들어 내가 올린 1G 컨텐츠가 히트쳐서 100만명 보게 되면 $53,891 를 비용으로 내야 합니다..&lt;/li&gt;
&lt;li&gt;R2는 초당 10회 미만으로 접근한 오브젝트는 비용 없음. 이는 하루 24시간 77만 7천회로 분산시키면 하루 동안 비용 없습니다.&lt;/li&gt;
&lt;li&gt;확인 사살을 위해 S3 &amp;rarr; R2 마이그레이션 툴도 제공합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Egress fees - 유저가 다운을 한다는 것은 그만큼의 bandwidth를 산다는 것을 의미&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미국/유럽은 80x&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한국은 3.5x&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Cloudflare Images&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;10만개 사진을 한달 $5 비용으로 저장 가능.&lt;/li&gt;
&lt;li&gt;10만개 사진을 전송할 경우 한달에 $1 비용.&lt;/li&gt;
&lt;li&gt;url만 바꾸면 이미지 변환 기능, resizing, 압축, 워터마크 추가 등의 기능 제공&lt;/li&gt;
&lt;li&gt;이미지를 업로드 후 나중에 리퀘스트 하면 사용 가능.&lt;/li&gt;
&lt;li&gt;이미지를 활용한 서비스 개발이 쉬워지고 저렴해짐&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에는 이미지를 서버에 올리고 나면 은근 처리해야할 작업이 많습니다. 가령&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;png &amp;rarr; jpg 로 변환하거나&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 작업을 하려면 직접 개발도 해야하고 전송과정에서 추가비용도 발생합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Cloudflare Stream&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;한번의 API로 스트림 서비스에 필요한 영상 인코딩, 브로드캐스팅, 라이브 녹화 자동저장등을 해줍니다.&lt;br /&gt;
&lt;pre id=&quot;code_1639111344191&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;curl $BASE_URL/stream/live_inputs \
	 -X POST \
     -H &quot;Authoriaztion: Bearer $TOKEN&quot; \
     -d '{&quot;recording&quot;: { &quot;mode&quot;: &quot;automatic&quot; }'​&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ejcqx/btrnAY6hutg/okn0nYU3ov3MdLQm6cMju1/img.png&quot; data-image-src=&quot;https://blog.kakaocdn.net/dn/Ejcqx/btrnAY6hutg/okn0nYU3ov3MdLQm6cMju1/img.png&quot; data-origin-width=&quot;2870&quot; data-origin-height=&quot;1136&quot; data-filename=&quot;img.png&quot; /&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;비용은 저렴
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;매 1천회 시청마다 $1&lt;/li&gt;
&lt;li&gt;녹화영상 1000 분 저장에 $5&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에 트위치 같은 서비스를 만드려면&lt;/p&gt;
&lt;ol style=&quot;list-style-type: 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;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Stream Connect&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존에는 각각 영상을 올려야 했던 것을, 이 서비스를 사용하여 영상을 하나 올리면 자동으로 3군데 Youtube, Twitch, Facebook 에 올려줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;cf3.png&quot; data-origin-width=&quot;2906&quot; data-origin-height=&quot;1368&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SUI5L/btrnAXzAOru/Qei8QH9q8nlGhuwmmnZzQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SUI5L/btrnAXzAOru/Qei8QH9q8nlGhuwmmnZzQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SUI5L/btrnAXzAOru/Qei8QH9q8nlGhuwmmnZzQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSUI5L%2FbtrnAXzAOru%2FQei8QH9q8nlGhuwmmnZzQK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2906&quot; height=&quot;1368&quot; data-filename=&quot;cf3.png&quot; data-origin-width=&quot;2906&quot; data-origin-height=&quot;1368&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;WebRTC Components (Close beta)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;줌, 페이스타임, 리얼타임 비디오 게임 같은 것을&amp;nbsp;WebRTC + Cloudflare 를 이용해서 쉽게 만들게 해주는 서비스입니다. WebRTC로 페이스타임 만드는건 어렵지 않지만, 수백 수천명 유저에게 보내는 것은 쉽지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재는(2021년11월) 클로즈베타 상태로 조금 더 기다려야 합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Serverless&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Cloudflare Workers&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;KV storage&lt;/h3&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;이런게 가능한 이유&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CDN 사업으로 글로벌한 자체 서버 및 데이터센터 구축 및 2018년부터 Cloudflare BackBone 즉, 해저케이블을 자체 구축함. 그래서 이런 글로벌 초고속 서비스가 가능하고 다른곳에 의존적이지도 않음.&lt;/p&gt;</description>
      <category>잡담</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/278</guid>
      <comments>https://rudalson.tistory.com/entry/Cloudflare%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%ED%94%8C%EB%A0%88%EC%96%B4%EC%9D%98-%EB%96%A1%EC%83%81%EA%B0%81#entry278comment</comments>
      <pubDate>Fri, 10 Dec 2021 13:56:39 +0900</pubDate>
    </item>
    <item>
      <title>테슬라 - 산업 뒤집는 AI 전쟁과 막강한 경쟁자들 요약(김준성 파트장)</title>
      <link>https://rudalson.tistory.com/entry/%ED%85%8C%EC%8A%AC%EB%9D%BC-%EC%82%B0%EC%97%85-%EB%92%A4%EC%A7%91%EB%8A%94-AI-%EC%A0%84%EC%9F%81%EA%B3%BC-%EB%A7%89%EA%B0%95%ED%95%9C-%EA%B2%BD%EC%9F%81%EC%9E%90%EB%93%A4-%EC%9A%94%EC%95%BD%EA%B9%80%EC%A4%80%EC%84%B1-%ED%8C%8C%ED%8A%B8%EC%9E%A5</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;삼프로TV에서 메리츠증권 김준성 파트장님의 테슬라 이야기를 보았습니다. 테슬라의 기업내용은 개인적으로 주주인 만큼 평소 관심있게 보고 있고 테슬라의 미래를 믿는(?) 테슬람으로서 이번 내용은 상당히 좋은 내용이 많았습니다. 테슬라의 내용은 꽤 알고 있다고 생각했는데 처음 접하는 내용도 많았고 (특히 에너지 거래부분) 어설프게 알고 있던 것을 객관적인 데이터와 같이 설명을 들으니 이런 내용은 21년 말 시점으로 정리를 해보아야 겠다고 생각하고 정리해보았습니다.&lt;/p&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=ew1QfSjGH7Y&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/tcq7Y/hyMB4Hb3W2/u2Wdzw8uYPBiNUzZfDSrQk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=774_212_986_444&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/ew1QfSjGH7Y&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통은 출퇴근 길에 듣고 흘려버리는데 이번 내용은 도저히 그냥 넘길 수 없어서 하나하나 캡쳐하고 기록해보았습니다.&lt;/p&gt;
&lt;h1&gt;자동차 업종 전반적인 상황&lt;/h1&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;Untitled.png&quot; data-origin-width=&quot;918&quot; data-origin-height=&quot;611&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVfsLJ/btrnd4TdiGg/OQFgKbhQNXYbddi7QNhSGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVfsLJ/btrnd4TdiGg/OQFgKbhQNXYbddi7QNhSGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVfsLJ/btrnd4TdiGg/OQFgKbhQNXYbddi7QNhSGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVfsLJ%2Fbtrnd4TdiGg%2FOQFgKbhQNXYbddi7QNhSGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;918&quot; height=&quot;611&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;918&quot; data-origin-height=&quot;611&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2021.11 시점에서 전체 자동차 업체 합산 시가총액(20개사) 와 전기차업체(6개사)의 시가총액 거의 같음.&lt;/li&gt;
&lt;li&gt;기존 20개사 50% + 테슬라 40% + 5개의 전기차 10%&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;테슬라1-2.png&quot; data-origin-width=&quot;1407&quot; data-origin-height=&quot;857&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzHOTF/btrm3PwSzWw/cglFtRUR88ks0llm2v22OK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzHOTF/btrm3PwSzWw/cglFtRUR88ks0llm2v22OK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzHOTF/btrm3PwSzWw/cglFtRUR88ks0llm2v22OK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzHOTF%2Fbtrm3PwSzWw%2FcglFtRUR88ks0llm2v22OK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1407&quot; height=&quot;857&quot; data-filename=&quot;테슬라1-2.png&quot; data-origin-width=&quot;1407&quot; data-origin-height=&quot;857&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전기차 시장이 과거 스마트폰이 시작할 때와 비슷하게 시장을 열고 있고&lt;/li&gt;
&lt;li&gt;이에 따라 2022년부터 자동차 기업들은 5개의 기업군으로 분류될 것으로 예상&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;테슬라1-3.png&quot; data-origin-width=&quot;1393&quot; data-origin-height=&quot;867&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bH3tGk/btrnd4ZZRCO/KUNEKtYX8LoiUIK9INirLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bH3tGk/btrnd4ZZRCO/KUNEKtYX8LoiUIK9INirLk/img.png&quot; data-alt=&quot;우린 아무것도 나쁜 것을 하지 않았지만 시장을 내줬다. - 노키아 CEO&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bH3tGk/btrnd4ZZRCO/KUNEKtYX8LoiUIK9INirLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbH3tGk%2Fbtrnd4ZZRCO%2FKUNEKtYX8LoiUIK9INirLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1393&quot; height=&quot;867&quot; data-filename=&quot;테슬라1-3.png&quot; data-origin-width=&quot;1393&quot; data-origin-height=&quot;867&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;우린 아무것도 나쁜 것을 하지 않았지만 시장을 내줬다. - 노키아 CEO&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;애플 - 품질 및 마진 1위&lt;/li&gt;
&lt;li&gt;삼성 - 빠르게 적응하여 강하게 살아남는 업체&lt;/li&gt;
&lt;li&gt;FOXCONN - 타업체의 제조를 대신 해주면서 살아남는 업체&lt;/li&gt;
&lt;li&gt;LG - 초반 적응에 애를 썼지만 결국 밀리는 업체&lt;/li&gt;
&lt;li&gt;Nokia - 기존 자동차에선 절대 강자였지만 적응을 아예 못하고 그냥 도태되는 업체&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현대/기아차의 미래는 어느 그룹군에 속하게 될까?&lt;/p&gt;
&lt;h1&gt;테슬라 자율주행 생태계&lt;/h1&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라1-4.png&quot; data-origin-width=&quot;1417&quot; data-origin-height=&quot;878&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buKmOQ/btrm9DP1ySs/zNZGAzby4u0BfvuCLJbjs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buKmOQ/btrm9DP1ySs/zNZGAzby4u0BfvuCLJbjs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buKmOQ/btrm9DP1ySs/zNZGAzby4u0BfvuCLJbjs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuKmOQ%2Fbtrm9DP1ySs%2FzNZGAzby4u0BfvuCLJbjs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1417&quot; height=&quot;878&quot; data-filename=&quot;테슬라1-4.png&quot; data-origin-width=&quot;1417&quot; data-origin-height=&quot;878&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;현재 전세계 AI를 이끌고 있는 2개의 선두 회사&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Google - Google이 전반적인 AI는 앞서 있지만 자율주행에서는 뒤쳐짐 (Waymo)&lt;/li&gt;
&lt;li&gt;OpenAI (2015년 창립) - &amp;nbsp;일런머스크가 창립. 2018년 OpenAI 핵심인력을 모두 테슬라로 데리고 옴.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;자율주행 수준을 어떻게 평가할 것인가?&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;보통 3단계? 4단계? 를 언급하지만 이러한 단계로 나누는것은 말장난에 불과할 뿐이다. - 김준성&lt;/span&gt;&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;3단계 발을 떼고&lt;/li&gt;
&lt;li&gt;4단계 손을 떼고&lt;/li&gt;
&lt;li&gt;5단계 눈을 떼고...&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 식으로 단계를 나눠서 자율주행이 완성된다고 볼수 없다.&amp;nbsp;테슬라가 2단계라고 해서 자율주행 수준이 낮으냐?&amp;nbsp;이런 단계적인 개념보다 자율주행을 통해 소비자가 느끼고 정량적인 수치를 제공해줘야 한다.&amp;nbsp;자율주행이 된다라는 것은&lt;/p&gt;
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자율주행을 시켰을 때 수치적으로 사고율이 0에 근접해야 한다.&lt;/li&gt;
&lt;li&gt;1의 낮은 사고율을 기반으로 보험을 적용할 때 만에 하나 사고가 난다면 거기에 대한 책임을 질 수 있는 수준. (자율주행이 사고를 내면 누가 책임을 질까?)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 2가지가 되어야 로보택시까지 발전할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라1-5.png&quot; data-origin-width=&quot;1366&quot; data-origin-height=&quot;892&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wh4GU/btrndGLKf7m/g30cvRYLjNbAZpBI8OL5KK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wh4GU/btrndGLKf7m/g30cvRYLjNbAZpBI8OL5KK/img.png&quot; data-alt=&quot;사고율. 사고의 82%는 인간의 잘못된 판단 때문&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wh4GU/btrndGLKf7m/g30cvRYLjNbAZpBI8OL5KK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fwh4GU%2FbtrndGLKf7m%2Fg30cvRYLjNbAZpBI8OL5KK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1366&quot; height=&quot;892&quot; data-filename=&quot;테슬라1-5.png&quot; data-origin-width=&quot;1366&quot; data-origin-height=&quot;892&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사고율. 사고의 82%는 인간의 잘못된 판단 때문&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라1-6.png&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vobI0/btrm7M7yyxm/Drx3tIYAjcYJcWgP8KHuo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vobI0/btrm7M7yyxm/Drx3tIYAjcYJcWgP8KHuo0/img.png&quot; data-alt=&quot;테슬라의 데이터 확보&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vobI0/btrm7M7yyxm/Drx3tIYAjcYJcWgP8KHuo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvobI0%2Fbtrm7M7yyxm%2FDrx3tIYAjcYJcWgP8KHuo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;테슬라의 데이터 확보. 테슬라는 웨이모와 달리 판매한 차량에서 모두 데이터를 확보한다.&quot; loading=&quot;lazy&quot; width=&quot;930&quot; height=&quot;578&quot; data-filename=&quot;테슬라1-6.png&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;578&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;테슬라의 데이터 확보&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라1-7.png&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J3Pve/btrnc29CmsL/3JCikWDp9vih48sBDPtVE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J3Pve/btrnc29CmsL/3JCikWDp9vih48sBDPtVE0/img.png&quot; data-alt=&quot;테슬라 외 업체와의 데이터 격차. 비교가 무의미&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J3Pve/btrnc29CmsL/3JCikWDp9vih48sBDPtVE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ3Pve%2Fbtrnc29CmsL%2F3JCikWDp9vih48sBDPtVE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;테슬라와 비테슬라의 데이터 확보량을 비교하는것은 무의미한것 같다. 차이가 너무 크기때문이다. 테슬라 외에는 그나마 중국의 NIO, 웨이모가 데이터를 많이 모았다.&quot; loading=&quot;lazy&quot; width=&quot;930&quot; height=&quot;584&quot; data-filename=&quot;테슬라1-7.png&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;584&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;테슬라 외 업체와의 데이터 격차. 비교가 무의미&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI를 하기 위해서는&lt;/p&gt;
&lt;ol 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;지속적으로 강화되고 있는 AI를 자동차에 반영해줘야 한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 전세계의 테슬라 차량은 1개의 AI 모델링(CNN)으로 동작한다. (파편화가 없다)&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;테슬라 AI 모델링&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CNN 모델&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;8개의 센서로 1초에 4096 사진을 찍음&lt;/li&gt;
&lt;li&gt;4096 사진을 ai 모델에 밀어넣음&lt;/li&gt;
&lt;li&gt;사람, 음료수, 신호등 등 객체로 분류한다.&lt;/li&gt;
&lt;li&gt;차가 갈수 있는 도로, 못가는 비도로 등으로 분할&lt;/li&gt;
&lt;li&gt;이 방식으로 2019년 테슬라는 10만 마일 운행시 사고율을 2%로 낮춤. (산업평균은 13%)&lt;/li&gt;
&lt;li&gt;2%도 대단하지만 이걸로는 로봇택시를 하기엔 높음. FSD Beta 준비중&lt;/li&gt;
&lt;li&gt;2개의 모델링을 추가중&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;추가 모델1 - Transformer&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라1-8.png&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;595&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7n2uw/btrmZ2QMBRE/N0wKV5Nk1xZ1bIDLQlo4K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7n2uw/btrmZ2QMBRE/N0wKV5Nk1xZ1bIDLQlo4K0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7n2uw/btrmZ2QMBRE/N0wKV5Nk1xZ1bIDLQlo4K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7n2uw%2FbtrmZ2QMBRE%2FN0wKV5Nk1xZ1bIDLQlo4K0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;8개의 센서에서 다른 각도에서 8장의 사진이 나온다. 이것을 3D 모델링을 통해 3차원 벡터화 시킨다.&quot; loading=&quot;lazy&quot; width=&quot;932&quot; height=&quot;595&quot; data-filename=&quot;테슬라1-8.png&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;595&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;8개의 사진에서 1 오브젝트를 여러 각도의 사진으로 보게됨. 이것을 3d 모델링 해서 3차원적으로 인식. (트랜스포머)&lt;/li&gt;
&lt;li&gt;원래는 3차원 모델 인식을 라이다를 사용하였지만 테슬라에서는 이제 빼버림.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;라이더 센서는 레이더를 쏜 후 돌아오는 걸로 인식하는데 현시점에선 200m가 한계&lt;/li&gt;
&lt;li&gt;시속 100km 로 달리는 차에서 라이더를 활용한다는 것은 200m 인식은 거의 쓸모 없음&lt;/li&gt;
&lt;li&gt;그래서 HD맵을 미리 그려놓아야 함.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;추가 모델2 - RNN&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라1-9.png&quot; data-origin-width=&quot;925&quot; data-origin-height=&quot;565&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sugxV/btrm2o0G7kk/Yj8HKiCODFalY2Ku2KyVi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sugxV/btrm2o0G7kk/Yj8HKiCODFalY2Ku2KyVi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sugxV/btrm2o0G7kk/Yj8HKiCODFalY2Ku2KyVi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsugxV%2Fbtrm2o0G7kk%2FYj8HKiCODFalY2Ku2KyVi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; alt=&quot;강아지와 머핀의 구분, 날아 다니는 비닐 봉지는 사람으로 잘못인식하는 문제 같은 경우를 개선하기 위해 RNN 적용한다. 이는 시간정보까지 들어가서 1초, 3초, 5초전과 비교하면서 오브젝트를 인지하도록 도와 준다. 가령 비닐봉지 같은 것은 시간을 두고 보면 직립보행의 모습이 아니기 때문이다.&quot; loading=&quot;lazy&quot; width=&quot;925&quot; height=&quot;565&quot; data-filename=&quot;테슬라1-9.png&quot; data-origin-width=&quot;925&quot; data-origin-height=&quot;565&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;왼쪽 밑의 머핀과 강아지를 구분하기 힘듬.&lt;/li&gt;
&lt;li&gt;밑의 가운데 사진처럼 날아 다니는 비닐 봉지를 사람처럼 인식할 수도 있음&lt;/li&gt;
&lt;li&gt;세상을 사진으로만 판단하면 위험할 수 있음(이게 2%의 사고)&lt;/li&gt;
&lt;li&gt;사진 외에도 10초짜리 클립영상을 본다면 충분히 인지할 수 있음
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;비닐 봉지는 직립보행을 하지 못한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;이를 도와 주는 것이 RNN, 1초전, 3초전, 5초전과 비교하여 오브젝트를 인지함&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;테슬라-10.png&quot; data-origin-width=&quot;1382&quot; data-origin-height=&quot;840&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T8vP7/btrnd4seVk2/25sfqrMsXKzXeWBh19KlI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T8vP7/btrnd4seVk2/25sfqrMsXKzXeWBh19KlI1/img.png&quot; data-alt=&quot;큰 모델일 수록 더 나은 성능을 보여주고 있다. 따라서 업계는 더 큰 모델이 필요하다&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T8vP7/btrnd4seVk2/25sfqrMsXKzXeWBh19KlI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT8vP7%2Fbtrnd4seVk2%2F25sfqrMsXKzXeWBh19KlI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1382&quot; height=&quot;840&quot; data-filename=&quot;테슬라-10.png&quot; data-origin-width=&quot;1382&quot; data-origin-height=&quot;840&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;큰 모델일 수록 더 나은 성능을 보여주고 있다. 따라서 업계는 더 큰 모델이 필요하다&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;곧 자율주행을 완성할거야 - 일런 머스크&lt;/p&gt;
&lt;/blockquote&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;CNN 모델로 사고율 2%까지 낮춤&lt;/li&gt;
&lt;li&gt;새로운 모델로 0.1% 이하까지 낮추려고 노력 중&lt;/li&gt;
&lt;li&gt;그래서 테슬라 보험이 적용된 텍사스, 캘리포니아에서 로봇택시 할거야&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 테슬라의 주가에서&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;FSD 베타를 개선중&lt;/li&gt;
&lt;li&gt;운전자의 운전습관 정보 모으는 중&lt;/li&gt;
&lt;li&gt;사고율 2%가 2년째 유지중. 사고율은 3개월마다 발표&lt;/li&gt;
&lt;li&gt;개선된 모델링을 적용해보며 사고율이 떨어지는지 확인해야 함&lt;/li&gt;
&lt;li&gt;만약 0.1%까지 못가면 지금의 모델링만으로는.....나가리&lt;/li&gt;
&lt;li&gt;그렇게 되면 주가는 횡보할 가능성 높음&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;김준성 파트장 입장&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테슬라가 얼마나 팔렸냐? 매출이 얼마냐는 주 관심이 아님.&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;h2 data-ke-size=&quot;size26&quot;&gt;더 큰 인공지능 모델을 위한 기업들의 노력&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라-11.png&quot; data-origin-width=&quot;1378&quot; data-origin-height=&quot;854&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/N6KrM/btrnevXy02y/JFZ89SWgPOO3ZbTsTh2o7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/N6KrM/btrnevXy02y/JFZ89SWgPOO3ZbTsTh2o7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/N6KrM/btrnevXy02y/JFZ89SWgPOO3ZbTsTh2o7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN6KrM%2FbtrnevXy02y%2FJFZ89SWgPOO3ZbTsTh2o7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1378&quot; height=&quot;854&quot; data-filename=&quot;테슬라-11.png&quot; data-origin-width=&quot;1378&quot; data-origin-height=&quot;854&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라-12.png&quot; data-origin-width=&quot;1381&quot; data-origin-height=&quot;875&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpMnON/btrm1ieSbEA/rtUHWchUBdWE2UWB49xrS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpMnON/btrm1ieSbEA/rtUHWchUBdWE2UWB49xrS0/img.png&quot; data-alt=&quot;모델도 커지기에 인공지능 모델을 더 강화하려면 더 높은 연산능력이 필요&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpMnON/btrm1ieSbEA/rtUHWchUBdWE2UWB49xrS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpMnON%2Fbtrm1ieSbEA%2FrtUHWchUBdWE2UWB49xrS0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1381&quot; height=&quot;875&quot; data-filename=&quot;테슬라-12.png&quot; data-origin-width=&quot;1381&quot; data-origin-height=&quot;875&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;모델도 커지기에 인공지능 모델을 더 강화하려면 더 높은 연산능력이 필요&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;레이 커즈와일 - 2021.09월에 나온 D1칩이 연산력 최고(2020 : TPU4, 2019 : FSD칩)&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라-13.png&quot; data-origin-width=&quot;1382&quot; data-origin-height=&quot;764&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yfuA7/btrnc4sQWIN/L0HSGml6ZDLyODukxEuKBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yfuA7/btrnc4sQWIN/L0HSGml6ZDLyODukxEuKBK/img.png&quot; data-alt=&quot;기존 Tesla 슈퍼컴은 90 PFLOPs로 세계 5위. 새로나온 Dojo는 1100&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yfuA7/btrnc4sQWIN/L0HSGml6ZDLyODukxEuKBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyfuA7%2Fbtrnc4sQWIN%2FL0HSGml6ZDLyODukxEuKBK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1382&quot; height=&quot;764&quot; data-filename=&quot;테슬라-13.png&quot; data-origin-width=&quot;1382&quot; data-origin-height=&quot;764&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;기존 Tesla 슈퍼컴은 90 PFLOPs로 세계 5위. 새로나온 Dojo는 1100&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도조는 1100........ 기존 1위 일본 Fugaku는 442&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테슬라는 2021년 9월부터 새로운 인공지능 모델을 차량에 보냈고&lt;/li&gt;
&lt;li&gt;추가적인 데이터를 쌓고&lt;/li&gt;
&lt;li&gt;이걸 D1칩 Dojo로 학습하고 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Energy와 Network&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Energy&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라-14.png&quot; data-origin-width=&quot;1382&quot; data-origin-height=&quot;845&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8yGJs/btrnbIcvY73/kJ3YI5rVkFJQqURubwugO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8yGJs/btrnbIcvY73/kJ3YI5rVkFJQqURubwugO0/img.png&quot; data-alt=&quot;2020년 테슬라의 Battery Day&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8yGJs/btrnbIcvY73/kJ3YI5rVkFJQqURubwugO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8yGJs%2FbtrnbIcvY73%2FkJ3YI5rVkFJQqURubwugO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1382&quot; height=&quot;845&quot; data-filename=&quot;테슬라-14.png&quot; data-origin-width=&quot;1382&quot; data-origin-height=&quot;845&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2020년 테슬라의 Battery Day&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라-15.png&quot; data-origin-width=&quot;1396&quot; data-origin-height=&quot;850&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d3uzYG/btrndHYeEU3/EtXZGktDgSsXmTZgPfQ58k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d3uzYG/btrndHYeEU3/EtXZGktDgSsXmTZgPfQ58k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d3uzYG/btrndHYeEU3/EtXZGktDgSsXmTZgPfQ58k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd3uzYG%2FbtrndHYeEU3%2FEtXZGktDgSsXmTZgPfQ58k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1396&quot; height=&quot;850&quot; data-filename=&quot;테슬라-15.png&quot; data-origin-width=&quot;1396&quot; data-origin-height=&quot;850&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전 세계 차가 전기차라면&lt;/li&gt;
&lt;li&gt;1억대로 가정, 대당 100kWH배터리 장착 이라면 &amp;rarr; 1년에 배터리 10TWH 필요&lt;/li&gt;
&lt;li&gt;5일마다 방전/충전을 가정한다면 연간 전기자동차에는 9,000 TWh 전기 필요.&lt;/li&gt;
&lt;li&gt;2020년 기준 전세계 연간 총 전기에너지가 25,000 TWh (거의 1/3 수준)&lt;/li&gt;
&lt;li&gt;전기차로만 어마어마한 전기와 배터리가 필요&lt;/li&gt;
&lt;li&gt;새로운 솔루션 필요. 2가지 방향으로 접근 가능
&lt;ol 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;/ol&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;테슬라-16.png&quot; data-origin-width=&quot;935&quot; data-origin-height=&quot;614&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p6UPc/btrm3PRiWsn/LL7jQ6GLnddlDx7jKJoQ3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p6UPc/btrm3PRiWsn/LL7jQ6GLnddlDx7jKJoQ3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p6UPc/btrm3PRiWsn/LL7jQ6GLnddlDx7jKJoQ3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp6UPc%2Fbtrm3PRiWsn%2FLL7jQ6GLnddlDx7jKJoQ3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;935&quot; height=&quot;614&quot; data-filename=&quot;테슬라-16.png&quot; data-origin-width=&quot;935&quot; data-origin-height=&quot;614&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테슬라 전체 특허의 70%가 배터리 연구쪽.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테슬라는 배터리에 진심 노력을 많이 함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;배터리데이 때 새로운 폼팩터 4680 소개
&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;/ul&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;테슬라-17.png&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;579&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vHaAt/btrnbJicbJb/b0OsYAVCn4oH2Kmka1e4P0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vHaAt/btrnbJicbJb/b0OsYAVCn4oH2Kmka1e4P0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vHaAt/btrnbJicbJb/b0OsYAVCn4oH2Kmka1e4P0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvHaAt%2FbtrnbJicbJb%2Fb0OsYAVCn4oH2Kmka1e4P0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;931&quot; height=&quot;579&quot; data-filename=&quot;테슬라-17.png&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;579&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테슬라는 위에 언급한 것 중&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;태양광 패널과 ESS로 공급량을 늘리는 사업 진행
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전기차는 하나의 이동형 ESS&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;전 세계에 에너지 공급 사업 허가 얻는중&lt;/li&gt;
&lt;li&gt;에너지 거래 플랫폼 Autobidder 구축 중&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;테슬라-18.png&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;542&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/INKZT/btrm1ilEpzz/5vYmkKgqOgwKQ5tcSDLSkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/INKZT/btrm1ilEpzz/5vYmkKgqOgwKQ5tcSDLSkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/INKZT/btrm1ilEpzz/5vYmkKgqOgwKQ5tcSDLSkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FINKZT%2Fbtrm1ilEpzz%2F5vYmkKgqOgwKQ5tcSDLSkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;932&quot; height=&quot;542&quot; data-filename=&quot;테슬라-18.png&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;542&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Autobidder&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 발전소(화력, 원자력) 들은 ESS가 약해서 발전은 하되 사용하지 않는 전기가 버려지고 있음.&lt;/li&gt;
&lt;li&gt;버려지는 전기를 싼값에 개인이 구매할 수 있음&lt;/li&gt;
&lt;li&gt;개인은 이를 저장할 ESS가 필요&lt;/li&gt;
&lt;li&gt;이것을 테슬라 차가 해주는 것임&lt;/li&gt;
&lt;li&gt;이렇게 저렴하게 구한 전기를 가격을 올려서 팔수 있음.&lt;/li&gt;
&lt;li&gt;이를 가능하게 해주는 플랫폼이 Autobidder 이고 이는 슈퍼차저에서 이루어짐&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;테슬라-19.png&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;583&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuOcG7/btrneZK0NW7/1zPKXTOK7CGBr91KAAWP40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuOcG7/btrneZK0NW7/1zPKXTOK7CGBr91KAAWP40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuOcG7/btrneZK0NW7/1zPKXTOK7CGBr91KAAWP40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuOcG7%2FbtrneZK0NW7%2F1zPKXTOK7CGBr91KAAWP40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;944&quot; height=&quot;583&quot; data-filename=&quot;테슬라-19.png&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;583&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;현재 슈퍼차저는 맥도날드 같음.&lt;/li&gt;
&lt;li&gt;주요지점에 깔리고 있음.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 속도를 다른 업체에서 못 따라 간다면 이 시장도 테슬라 것이 되게 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Network&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라-20.png&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;567&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDznmL/btrm3QbBkuR/rbdn96CVL2YvkUzj8L3Y00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDznmL/btrm3QbBkuR/rbdn96CVL2YvkUzj8L3Y00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDznmL/btrm3QbBkuR/rbdn96CVL2YvkUzj8L3Y00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDznmL%2Fbtrm3QbBkuR%2Frbdn96CVL2YvkUzj8L3Y00%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;930&quot; height=&quot;567&quot; data-filename=&quot;테슬라-20.png&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;567&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SpaceX가 지난 1년간 1,700 개의 위성을 쏘아올림&lt;/li&gt;
&lt;li&gt;1957년 구소련이 첫번째 인공위성을 올린 이후 지금까지 인류는 6000~7000 개 정도(SpaceX 제외)의 인공위성을 올림. 그 중 절반정도가 살아서 활동 중&lt;/li&gt;
&lt;li&gt;현재 SpaceX 위성 통신 속도는 케이블 속도와 같음
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;물론 이 속도는 일반인에게는 감흥이 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라-21.png&quot; data-origin-width=&quot;924&quot; data-origin-height=&quot;580&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cloTrQ/btrneZEfkGe/7ljo8dhfN029kdsyVjYIi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cloTrQ/btrneZEfkGe/7ljo8dhfN029kdsyVjYIi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cloTrQ/btrneZEfkGe/7ljo8dhfN029kdsyVjYIi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcloTrQ%2FbtrneZEfkGe%2F7ljo8dhfN029kdsyVjYIi1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;924&quot; height=&quot;580&quot; data-filename=&quot;테슬라-21.png&quot; data-origin-width=&quot;924&quot; data-origin-height=&quot;580&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1세대 위성은 위성간의 통신이 안되었음. 위성과 지상과의 통신만 가능. 그래서 보조수단으로만 활용&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라-22.png&quot; data-origin-width=&quot;938&quot; data-origin-height=&quot;607&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/br9rLv/btrneuRU8Ce/CdRZMNhl2l27LhGi7u9QH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/br9rLv/btrneuRU8Ce/CdRZMNhl2l27LhGi7u9QH1/img.png&quot; data-alt=&quot;2021년 9월 2세대 위성 시작&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/br9rLv/btrneuRU8Ce/CdRZMNhl2l27LhGi7u9QH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbr9rLv%2FbtrneuRU8Ce%2FCdRZMNhl2l27LhGi7u9QH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;938&quot; height=&quot;607&quot; data-filename=&quot;테슬라-22.png&quot; data-origin-width=&quot;938&quot; data-origin-height=&quot;607&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2021년 9월 2세대 위성 시작&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2세대가 되면서&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;위성간의 통신은 50년 전부터 최근의 논문까지 통틀어 '지구인이 지구에서 사용할 수 있는 최고의 통신수단' 임.&lt;/li&gt;
&lt;li&gt;기존은 대륙간 해저 케이블로 연결되어 있었음&lt;/li&gt;
&lt;li&gt;통신위성은 저궤도위성이며 이들이 지구 위에서 서로 연결되려면 위성갯수가 많아야 함
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;얼마전 누리호 700km 가는데 20조 들어감&lt;/li&gt;
&lt;li&gt;옛날이지만 아폴로가 달에가는데 100조 들어감&lt;/li&gt;
&lt;li&gt;SpaceX는 로켓한번 발사에 20억 ~ 50억 비용&lt;/li&gt;
&lt;/ul&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;테슬라-23.png&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o7PKZ/btrm5yhtufR/Ve96NkVw7atdLA3GCPI50K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o7PKZ/btrm5yhtufR/Ve96NkVw7atdLA3GCPI50K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o7PKZ/btrm5yhtufR/Ve96NkVw7atdLA3GCPI50K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo7PKZ%2Fbtrm5yhtufR%2FVe96NkVw7atdLA3GCPI50K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;931&quot; height=&quot;576&quot; data-filename=&quot;테슬라-23.png&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;576&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SpaceX에서 Falcon9은 1세대 위성을 로켓한번에 60개씩 띄움&lt;/li&gt;
&lt;li&gt;2세대는 더 큰 Starship에서 400개 적재. 2~3년안에 예정&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;테슬라-24.png&quot; data-origin-width=&quot;1388&quot; data-origin-height=&quot;861&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXKFyh/btrnevpKGvj/2jhgr1lp8zaczuShrk78Jk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXKFyh/btrnevpKGvj/2jhgr1lp8zaczuShrk78Jk/img.png&quot; data-alt=&quot;차량용 안테나를 만들겠다는 SpaceX의 채용 공고&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXKFyh/btrnevpKGvj/2jhgr1lp8zaczuShrk78Jk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXKFyh%2FbtrnevpKGvj%2F2jhgr1lp8zaczuShrk78Jk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1388&quot; height=&quot;861&quot; data-filename=&quot;테슬라-24.png&quot; data-origin-width=&quot;1388&quot; data-origin-height=&quot;861&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;차량용 안테나를 만들겠다는 SpaceX의 채용 공고&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테슬라는 차량과 위성간의 연결을 위해 안테나 설치하는 것을 얼마전 승인 받음.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2021. 09월 테슬라는&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;AI 2.0 모델이 테슬라 차량에 업그레이드 됨&lt;/li&gt;
&lt;li&gt;이들이 확보한 데이터를 확보하고 있고&lt;/li&gt;
&lt;li&gt;훈련소에서 이를 훈련할 칩 장착(D1 Dojo)&lt;/li&gt;
&lt;li&gt;이들을 연결할 2세대 네트워크가 준비되고 있고&lt;/li&gt;
&lt;li&gt;늘어난 차량 수요에 대비하기 위해 4680 배터리 셀 완성 직전&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;전체 시장을 다시 살펴보면&lt;/h1&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;테슬라의 주장&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라-25.png&quot; data-origin-width=&quot;1391&quot; data-origin-height=&quot;872&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7v0fv/btrm5xXehtN/SKjr3fKTLgUr2gKFkbGmek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7v0fv/btrm5xXehtN/SKjr3fKTLgUr2gKFkbGmek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7v0fv/btrm5xXehtN/SKjr3fKTLgUr2gKFkbGmek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7v0fv%2Fbtrm5xXehtN%2FSKjr3fKTLgUr2gKFkbGmek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1391&quot; height=&quot;872&quot; data-filename=&quot;테슬라-25.png&quot; data-origin-width=&quot;1391&quot; data-origin-height=&quot;872&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2019년 4월까지 테슬라 차의 수익은 기존차와 같았다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;차 판매 대금이 수익의 전부&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;2019년 4월 이후 FSD 팔기 시작
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;차 보험 드세요&lt;/li&gt;
&lt;li&gt;차내 인포테인 먼트 사세요&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;점점 추가 수익이 발생&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;김준성 파트장 의견&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라-26.png&quot; data-origin-width=&quot;1381&quot; data-origin-height=&quot;863&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcwAcY/btrndHKKclT/8gSgQwB9kHx9S00PvOfrok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcwAcY/btrndHKKclT/8gSgQwB9kHx9S00PvOfrok/img.png&quot; data-alt=&quot;로보택시 시장규모&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcwAcY/btrndHKKclT/8gSgQwB9kHx9S00PvOfrok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcwAcY%2FbtrndHKKclT%2F8gSgQwB9kHx9S00PvOfrok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1381&quot; height=&quot;863&quot; data-filename=&quot;테슬라-26.png&quot; data-origin-width=&quot;1381&quot; data-origin-height=&quot;863&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;로보택시 시장규모&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2021년 하반기부터 판매되는 테슬라 S, X 모델에서는 AMD의 인포테인먼트 칩 장착
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 칩은 Playstation5 게임이 원활히 돌아감&lt;/li&gt;
&lt;/ul&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;테슬라-28.png&quot; data-origin-width=&quot;1403&quot; data-origin-height=&quot;877&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mKa6O/btrm3PDOjFV/ennAoEhUbrRIkeWNqFAS1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mKa6O/btrm3PDOjFV/ennAoEhUbrRIkeWNqFAS1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mKa6O/btrm3PDOjFV/ennAoEhUbrRIkeWNqFAS1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmKa6O%2Fbtrm3PDOjFV%2FennAoEhUbrRIkeWNqFAS1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1403&quot; height=&quot;877&quot; data-filename=&quot;테슬라-28.png&quot; data-origin-width=&quot;1403&quot; data-origin-height=&quot;877&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대부분의 AI회사에서는 현재 인공지능 훈련용으로 엔비디아 칩 사용. (80% 추산)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그래서 NVIDIA의 주가가 잘 나갔음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;하지만 AI 1, 2위인 구글과 테슬라는 자체 칩 제작 사용&lt;/li&gt;
&lt;li&gt;칩 자체 설계를 하기 위해 필요한 것을 제공해주는 업체도 주목
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Cadence&lt;/li&gt;
&lt;li&gt;Synopsys&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;테슬라에 대항하는 업체&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;애플, 구글, 아마존, 바이두, 텐센트, 화웨이, 샤오미, 디디추싱, 우버, 리프트, 니오, 샤오펑, 토요타, 폭스바겐 등 18개를 분석하였고 그 중 3개만 소개&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;아마존&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라-29.png&quot; data-origin-width=&quot;935&quot; data-origin-height=&quot;581&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdrcZj/btrndHKKStb/iKObykyKUjxSpoO0J9bsWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdrcZj/btrndHKKStb/iKObykyKUjxSpoO0J9bsWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdrcZj/btrndHKKStb/iKObykyKUjxSpoO0J9bsWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdrcZj%2FbtrndHKKStb%2FiKObykyKUjxSpoO0J9bsWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;935&quot; height=&quot;581&quot; data-filename=&quot;테슬라-29.png&quot; data-origin-width=&quot;935&quot; data-origin-height=&quot;581&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;리비안에 9000억 투자&lt;/li&gt;
&lt;li&gt;쇼핑섹터의 왕으로 2020년 물류비로만 70조 비용 나감
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아마존의 영업이익은 20조&lt;/li&gt;
&lt;li&gt;수년내로 물류비용이 100조를 넘길것으로 예상&lt;/li&gt;
&lt;li&gt;이 100조를 없애고 싶음&lt;/li&gt;
&lt;/ul&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;테슬라-30.png&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;594&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dffct1/btrm9EavLW1/t0brJ7EQ2EAMfB6l5y0z3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dffct1/btrm9EavLW1/t0brJ7EQ2EAMfB6l5y0z3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dffct1/btrm9EavLW1/t0brJ7EQ2EAMfB6l5y0z3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdffct1%2Fbtrm9EavLW1%2Ft0brJ7EQ2EAMfB6l5y0z3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;926&quot; height=&quot;594&quot; data-filename=&quot;테슬라-30.png&quot; data-origin-width=&quot;926&quot; data-origin-height=&quot;594&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;아마존은 클라우드에서도 왕
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;넷플릭스를 비롯하여 AI회사들 전부 AWS에서 훈련 중&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;최고의 훈련소를 가지고 있음
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;차, 데이터만 있으면 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라-31.png&quot; data-origin-width=&quot;939&quot; data-origin-height=&quot;618&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dchi8V/btrm5z1PQH3/t06iimluUMzPRZLIP6gLi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dchi8V/btrm5z1PQH3/t06iimluUMzPRZLIP6gLi1/img.png&quot; data-alt=&quot;Zoox. 도심내 자율주행 업체&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dchi8V/btrm5z1PQH3/t06iimluUMzPRZLIP6gLi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdchi8V%2Fbtrm5z1PQH3%2Ft06iimluUMzPRZLIP6gLi1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;939&quot; height=&quot;618&quot; data-filename=&quot;테슬라-31.png&quot; data-origin-width=&quot;939&quot; data-origin-height=&quot;618&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Zoox. 도심내 자율주행 업체&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라-32.png&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;586&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ta2ZD/btrndHYi7mA/IRxrOX5USt7cHCj23DMhH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ta2ZD/btrndHYi7mA/IRxrOX5USt7cHCj23DMhH1/img.png&quot; data-alt=&quot;도시간 자율주행 투자&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ta2ZD/btrndHYi7mA/IRxrOX5USt7cHCj23DMhH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fta2ZD%2FbtrndHYi7mA%2FIRxrOX5USt7cHCj23DMhH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;931&quot; height=&quot;586&quot; data-filename=&quot;테슬라-32.png&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;586&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;도시간 자율주행 투자&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라-33.png&quot; data-origin-width=&quot;933&quot; data-origin-height=&quot;577&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmRnsb/btrnbJCz6hb/NsM0kCjWLNCgkZ6ssXZHEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmRnsb/btrnbJCz6hb/NsM0kCjWLNCgkZ6ssXZHEk/img.png&quot; data-alt=&quot;Rivian, Lion Electric 투자&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmRnsb/btrnbJCz6hb/NsM0kCjWLNCgkZ6ssXZHEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmRnsb%2FbtrnbJCz6hb%2FNsM0kCjWLNCgkZ6ssXZHEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;933&quot; height=&quot;577&quot; data-filename=&quot;테슬라-33.png&quot; data-origin-width=&quot;933&quot; data-origin-height=&quot;577&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Rivian, Lion Electric 투자&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;요약하자면
&lt;ol style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도심 내 자율주행 업체 투자 (Zoox)&lt;/li&gt;
&lt;li&gt;도시간 자율주행 업체 투자 ( )&lt;/li&gt;
&lt;li&gt;도심과 도시간 자율주행을 해낼 디바이스 업체 투자 (리비안, 라이온 일렉트릭)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;테슬라는 일반소비자가 대상인 자율주행이지만&lt;/li&gt;
&lt;li&gt;아마존은 물류차량 자율주행을 목적으로 함
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일반인 차량 처럼 속도를 빠르게 할 필요도 없고&lt;/li&gt;
&lt;li&gt;정해진 루트만 가면 된다.&lt;/li&gt;
&lt;li&gt;따라서 더 쉽다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;바이두&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라-34.png&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAMIl4/btrnc98IT9S/yuQ3R9oeP3jbtAIj9J8cUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAMIl4/btrnc98IT9S/yuQ3R9oeP3jbtAIj9J8cUk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAMIl4/btrnc98IT9S/yuQ3R9oeP3jbtAIj9J8cUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAMIl4%2Fbtrnc98IT9S%2FyuQ3R9oeP3jbtAIj9J8cUk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;928&quot; height=&quot;576&quot; data-filename=&quot;테슬라-34.png&quot; data-origin-width=&quot;928&quot; data-origin-height=&quot;576&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;5년간 Apollo 자율주행 플랫폼 개발
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공짜로 자율주행 업체들에게 Apollo를 제공해 옴&lt;/li&gt;
&lt;li&gt;댓가는 딱하나, 주행 데이터를 같이 공유해줘!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;비공식적이지만 테슬라에 이어 데이터확보량 2위라는 이야기가 있음&lt;/li&gt;
&lt;li&gt;자체 칩 개발 (Kunlun)&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;테슬라-35.png&quot; data-origin-width=&quot;927&quot; data-origin-height=&quot;578&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddgVoO/btrnc31Rs8B/9QSPntEB242Zt45caGTXnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddgVoO/btrnc31Rs8B/9QSPntEB242Zt45caGTXnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddgVoO/btrnc31Rs8B/9QSPntEB242Zt45caGTXnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddgVoO%2Fbtrnc31Rs8B%2F9QSPntEB242Zt45caGTXnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;927&quot; height=&quot;578&quot; data-filename=&quot;테슬라-35.png&quot; data-origin-width=&quot;927&quot; data-origin-height=&quot;578&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;자율주행 데이터, 칩 확보. 디바이스(차)만 있으면 됨&lt;/li&gt;
&lt;li&gt;2021년 길리 자동차에 9조 투자&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;폭스바겐&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라-36.png&quot; data-origin-width=&quot;933&quot; data-origin-height=&quot;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bERCJt/btrndGE523l/N0FkIkWWk9Kt88cusEnQW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bERCJt/btrndGE523l/N0FkIkWWk9Kt88cusEnQW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bERCJt/btrndGE523l/N0FkIkWWk9Kt88cusEnQW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbERCJt%2FbtrndGE523l%2FN0FkIkWWk9Kt88cusEnQW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;933&quot; height=&quot;576&quot; data-filename=&quot;테슬라-36.png&quot; data-origin-width=&quot;933&quot; data-origin-height=&quot;576&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;비교적 언행일치 하는 기존 업체(계획과 실천)&lt;/li&gt;
&lt;li&gt;21년 9월 FOTA 통해 AI 학습한 새로운 모델을 전 차량에 설치되게끔 하는 것에 4번째로 성공
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;테슬라 - 니오 - 샤오펑 다음으로&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;자체 칩 설계중 CARIAD 개발. 칩 설계 인력 대폭 증강&lt;/li&gt;
&lt;li&gt;제조인력을 점차 줄여나가고 SW인력을 늘이는 중&lt;/li&gt;
&lt;li&gt;훈련소가 없기 때문에 MS 클라우드와 계약&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;국내 상황&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;테슬라-37.png&quot; data-origin-width=&quot;1381&quot; data-origin-height=&quot;860&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EaMux/btrnd5Y3dj1/7XLIqXwdlNVT9Gebyb4yb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EaMux/btrnd5Y3dj1/7XLIqXwdlNVT9Gebyb4yb0/img.png&quot; data-alt=&quot;국내 현대와 기아의 외국인 지분율&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EaMux/btrnd5Y3dj1/7XLIqXwdlNVT9Gebyb4yb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEaMux%2Fbtrnd5Y3dj1%2F7XLIqXwdlNVT9Gebyb4yb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1381&quot; height=&quot;860&quot; data-filename=&quot;테슬라-37.png&quot; data-origin-width=&quot;1381&quot; data-origin-height=&quot;860&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;국내 현대와 기아의 외국인 지분율&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;떨어지는 외국인 지분율보다 중요한 건 언제 떠났냐는 것. 2019년 4월&lt;/li&gt;
&lt;li&gt;외국인은 단지 현대/기아를 파는게 아니라 Legacy 를 줄이는 것&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;테슬라-38.png&quot; data-origin-width=&quot;1383&quot; data-origin-height=&quot;874&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kOWfd/btrm5yBN4nY/roTPcvpzbkkpTGqJnKmwf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kOWfd/btrm5yBN4nY/roTPcvpzbkkpTGqJnKmwf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kOWfd/btrm5yBN4nY/roTPcvpzbkkpTGqJnKmwf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkOWfd%2Fbtrm5yBN4nY%2FroTPcvpzbkkpTGqJnKmwf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1383&quot; height=&quot;874&quot; data-filename=&quot;테슬라-38.png&quot; data-origin-width=&quot;1383&quot; data-origin-height=&quot;874&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존 자동차 산업은 박스권. 멀티플 8 내에서&lt;/li&gt;
&lt;li&gt;내년, 내후년 실적이 좋아진다해도 이제 외국인은 투자 하지 않는다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실적 좋다고 사는게 아니라는 의미&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;이제 자동차 섹터는 멀티플 8이 깨지고 있다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;애플카, 전기차 하면 20배 넘어간다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;그렇다면 현대/기아는 어떤 비전을 제안해야 할까?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;긍정적인 점&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;독일 CAM에서 조사한 것으로는 현대/기아는 혁신지수 4위&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;테슬라-39.png&quot; data-origin-width=&quot;1391&quot; data-origin-height=&quot;854&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dlm77r/btrndodBhcS/bgO9ZHwNBwlfK6Sj7NkFdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dlm77r/btrndodBhcS/bgO9ZHwNBwlfK6Sj7NkFdk/img.png&quot; data-alt=&quot;2021년 01월 공시&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dlm77r/btrndodBhcS/bgO9ZHwNBwlfK6Sj7NkFdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdlm77r%2FbtrndodBhcS%2FbgO9ZHwNBwlfK6Sj7NkFdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1391&quot; height=&quot;854&quot; data-filename=&quot;테슬라-39.png&quot; data-origin-width=&quot;1391&quot; data-origin-height=&quot;854&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2021년 01월 공시&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;21년 1월에 애플카와 협력은 결정된 바 없지만 다수의 업체와 자율주행 관련 협의를 진행하고 있다고 이야기함&lt;/li&gt;
&lt;li&gt;하지만 21년 11월 현재까지 이후 협의했다고 하는 공시는 없음. 침묵&lt;/li&gt;
&lt;li&gt;오른쪽 표를 보면 21년도 자동차업체와 빅테크 업체에서 협력했다고 발표한 내용들&lt;/li&gt;
&lt;li&gt;내년 초 현대에서 인베스트 데이 행사에서 앞으로 어떻게 할것인지 이야기 할 계획
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이 내용이 어떤 내용이냐에 따라 밝을지 어두울지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상으로 간랴갛게(?) 정리해봤는데 거를 내용이 없어서 거의 다 써버린거 같네요. 내용이 너무 좋았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로 복기를 위해 정리를 해뒀는데 혹시 문제가 된다면 알려주세요.&lt;/p&gt;</description>
      <category>잡담</category>
      <category>김준성파트장</category>
      <category>삼프로</category>
      <category>테슬라</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/277</guid>
      <comments>https://rudalson.tistory.com/entry/%ED%85%8C%EC%8A%AC%EB%9D%BC-%EC%82%B0%EC%97%85-%EB%92%A4%EC%A7%91%EB%8A%94-AI-%EC%A0%84%EC%9F%81%EA%B3%BC-%EB%A7%89%EA%B0%95%ED%95%9C-%EA%B2%BD%EC%9F%81%EC%9E%90%EB%93%A4-%EC%9A%94%EC%95%BD%EA%B9%80%EC%A4%80%EC%84%B1-%ED%8C%8C%ED%8A%B8%EC%9E%A5#entry277comment</comments>
      <pubDate>Mon, 6 Dec 2021 17:04:53 +0900</pubDate>
    </item>
    <item>
      <title>갤럭시탭 S3 안드로이드 다운그레이드</title>
      <link>https://rudalson.tistory.com/entry/%EA%B0%A4%EB%9F%AD%EC%8B%9C%ED%83%AD-S3-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EB%8B%A4%EC%9A%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;갤럭시탭 S3 구입&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Galaxy Tab S3 LTE 모델을 하나 구했습니다. pdf 파일을 읽을 목적으로 태블릿을 구매했는데 S3은 2017년 모델이네요. 지금부터 4년 전..... 알고는 샀지만.. 그냥 최신 걸 사서 오래 쓸 걸 그랬나 하는 갈등 속에 보다 현실적인 선택을 했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;740&quot; data-filename=&quot;my_galaxy_tab3 (1).jpg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1mQEo/btraRkOJV0U/kGKQBssJ6F3JNpBmo5OE70/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1mQEo/btraRkOJV0U/kGKQBssJ6F3JNpBmo5OE70/img.jpg&quot; data-alt=&quot;자.. 잘.... 샀겠죠?&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1mQEo/btraRkOJV0U/kGKQBssJ6F3JNpBmo5OE70/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1mQEo%2FbtraRkOJV0U%2FkGKQBssJ6F3JNpBmo5OE70%2Fimg.jpg&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;740&quot; data-filename=&quot;my_galaxy_tab3 (1).jpg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;자.. 잘.... 샀겠죠?&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 AMOLED 패널이기에 밤에 볼 때 true black 이 가능하고 크기도 적당한 것 같아서 구매했습니다. 현재 모델중 &lt;code&gt;S6 Lite&lt;/code&gt; 모델은 가격도 착하고 성능도 좋은데 LCD 패널이라 아쉽지만 예전 모델 중 플래그쉽으로 결정했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구매해서 기본앱들 설정 및 설치하고 Adobe reader와 Youtube 앱정도 깔고 이것저것 해보는데 반응속도가 못마땅했습니다. 그래서 궁리한 게 안드로이드 버전을 낮추는 것을 해보았습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;S3은 최초 안드로이드 &lt;code&gt;7.0(Nougat)&lt;/code&gt; 에서 &lt;code&gt;8(Oreo)&lt;/code&gt; 그리고 최종 &lt;code&gt;9(Pie)&lt;/code&gt; 버전이 최종입니다. 딱히 커스텀 롬으로 최신 근처까지 올리지 않는한..... 현재 제껀 9까지 업그레이드가 된 상태였습니다. 이게 버전을 올리는 것은 FOTA로 가능한데 낮추는 것은 자동으로 되지 않습니다. 그래서 펌롬을 밀어 넣는 과정을 거쳐야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소프트웨어 버전이 높을 수록 대개는 좋지만, 어느 선을 넘으니깐 오히려 속도가 느려지더라고요. 그래서 8로 낮춰서 사용해보려고 다운그레이드를 검색해봤는데 생각보다는 시간이 더 걸렸습니다. 방법이나 적절한 정식 롬 구하는 것 등등....&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;정확한 모델명&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 중요한 일입니다. 우선 기기의 정확한 모델명을 알아야 합니다. &lt;a href=&quot;https://doc.samsungmobile.com/SM-T825N0/KOO/doc.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;삼성모바일 문서 사이트&lt;/a&gt;에 가서 자신의 모델에 맞는 내역을 보면 전체 정식 펌의 빌드번호를 알 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;564&quot; data-filename=&quot;삼성모바일.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWqXwF/btraJzSJ5kh/EGjmTxV3RUuVkyeK9o5kG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWqXwF/btraJzSJ5kh/EGjmTxV3RUuVkyeK9o5kG0/img.png&quot; data-alt=&quot;삼성전자의 공식문서 사이트&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWqXwF/btraJzSJ5kh/EGjmTxV3RUuVkyeK9o5kG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWqXwF%2FbtraJzSJ5kh%2FEGjmTxV3RUuVkyeK9o5kG0%2Fimg.png&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;564&quot; data-filename=&quot;삼성모바일.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;삼성전자의 공식문서 사이트&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전 Android 8 버전의 빌드번호를 확보해 두었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;764&quot; data-origin-height=&quot;445&quot; data-filename=&quot;android8.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DHqeB/btraEfgSwaJ/Xd5lJp3GozFCMe40DlGLxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DHqeB/btraEfgSwaJ/Xd5lJp3GozFCMe40DlGLxk/img.png&quot; data-alt=&quot;이중에 어떤 빌드라도 크게 상관 없지만 이왕이면 보안수준이 높은걸로...&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DHqeB/btraEfgSwaJ/Xd5lJp3GozFCMe40DlGLxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDHqeB%2FbtraEfgSwaJ%2FXd5lJp3GozFCMe40DlGLxk%2Fimg.png&quot; data-origin-width=&quot;764&quot; data-origin-height=&quot;445&quot; data-filename=&quot;android8.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이중에 어떤 빌드라도 크게 상관 없지만 이왕이면 보안수준이 높은걸로...&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빌드번호 내용을 그대로 구글링을 하면 없진 않지만 이상한 번역체의 사이트도 많고 광고 떡칠한 사이트 유도가 많았습니다. 여기서 다운로드 기능을 제공하는 사이트는 많았는데 돈을 주면 premium 속도로 다운되게 하는 게 많았지만 그럴 돈은 있어도 없고 그냥 free로 받으려니 5~6시간 정도 걸리더라고요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다운로드가 가능한 다른 경로가 없는지 알아봤지만 현재는 안 되는 글이 링크된 글도 많고 해서 꾸역꾸역 받았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검색에 많이 걸리던 것은 &lt;a href=&quot;https://updato.com/download-samsung-galaxy-tab-s3-firmware/korea/sm-t825n0/413EE266B4C111E89F15FA163EE8F90B/?r=KOREA&amp;amp;amp;record=413EE266B4C111E89F15FA163EE8F90B&amp;amp;amp;q=galaxy%20tab%20s3&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;UPDATO&lt;/a&gt; 였는데 너무 느려서 결국 이곳에선 못 받았고 &lt;a href=&quot;https://samfrew.com/download/Galaxy__Tab__S3__/vanq/KOO/T825N0KOU3BSE1/T825N0KOO3BSE1/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;SAMFREW.com&lt;/a&gt;에서 받았습니다. 그래 봐야 UPDATO보다 조금 더 빠른 수준이었는데 UPDATAO에서 받은 것은 제가 잘못된 건지 이상한 에러를 뱉으면서 올리는 것에 실패했습니다. eMMC write fail : aboot 라고 뜨는데 검색해도 딱히 뭐가 문제인지 잘 모르겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;740&quot; data-filename=&quot;20210723_122654 (1).jpg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdmiFc/btraVFkwVIp/yo8XcJJyDVR3tbqUrkpRfK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdmiFc/btraVFkwVIp/yo8XcJJyDVR3tbqUrkpRfK/img.jpg&quot; data-alt=&quot;그래도 다행인건 처음부터 못 올렸기 때문에 벽돌은 안되었습니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdmiFc/btraVFkwVIp/yo8XcJJyDVR3tbqUrkpRfK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdmiFc%2FbtraVFkwVIp%2Fyo8XcJJyDVR3tbqUrkpRfK%2Fimg.jpg&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;740&quot; data-filename=&quot;20210723_122654 (1).jpg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;그래도 다행인건 처음부터 못 올렸기 때문에 벽돌은 안되었습니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론적으로 SAMFREW에서 받은 KOO-T825N0KOU3BSE1 는 올리는 데 성공했습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;펌웨어 올리기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이건 &lt;a href=&quot;https://m.blog.naver.com/chl9947/221482985254&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;PI님의 블로그 글 갤럭시탭 S3 (SM-T825) 복구&lt;/a&gt;를 참고하였습니다. 그래도 살짝 불안해서 &lt;a href=&quot;https://youtu.be/tHQpXm1JNCY&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Part. 29 갤럭시 다운그레이드 영상&lt;/a&gt;도 참고하였습니다. 우선 &lt;code&gt;오딘&lt;/code&gt; 프로그램을 구해야 했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/boVi0o/btraL2NsbHK/ss5k7qsq0Hu4bP1YzrnKS0/odin3131.zip?attach=1&amp;amp;knm=tfile.zip&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;odin3131.zip&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;3.37MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버전에 따라 꽤 여러 개 존재하던데 최종적으로 올리는 데 성공했던 &lt;code&gt;3.13.1 버전&lt;/code&gt;의 파일을 올렸습니다. 설치형이 아니기에 압축을 풀고 exe 실행파일을 실행시키면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;649&quot; data-filename=&quot;Odin3_v3.13.1_pPU4PnBeUy.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/evXVEY/btraLtktITL/PHyyxwkyC5yyDE3ekwQO6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/evXVEY/btraLtktITL/PHyyxwkyC5yyDE3ekwQO6k/img.png&quot; data-alt=&quot;Odin 3.13.3 실행모습&amp;amp;amp;nbsp;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/evXVEY/btraLtktITL/PHyyxwkyC5yyDE3ekwQO6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FevXVEY%2FbtraLtktITL%2FPHyyxwkyC5yyDE3ekwQO6k%2Fimg.png&quot; data-origin-width=&quot;872&quot; data-origin-height=&quot;649&quot; data-filename=&quot;Odin3_v3.13.1_pPU4PnBeUy.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Odin 3.13.3 실행모습&amp;nbsp;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 &lt;code&gt;KOO-T825N0KOU3BSE1&lt;/code&gt; 바이너리는 앞의 KOO 가 국내 모델을 의미합니다. 그리고 전 LTE가 되는 모델이라 T825이지만 Wifi만 되는 모델은 T820입니다. 정확한 자신의 모델명에 맞는 바이너리를 구하셨다면 파일을 풀면 아래처럼 되어 있을 것입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;329&quot; data-origin-height=&quot;155&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KpS0F/btraMpKsJoP/v7lt9P1yGjFRk5KcFkBakK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KpS0F/btraMpKsJoP/v7lt9P1yGjFRk5KcFkBakK/img.png&quot; data-alt=&quot;이렇게 5개의 파일이 있습니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KpS0F/btraMpKsJoP/v7lt9P1yGjFRk5KcFkBakK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKpS0F%2FbtraMpKsJoP%2Fv7lt9P1yGjFRk5KcFkBakK%2Fimg.png&quot; data-origin-width=&quot;329&quot; data-origin-height=&quot;155&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이렇게 5개의 파일이 있습니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 AP, BL, CP, CSC로 시작하는 파일만 Odin에 올리면 됩니다. HOME_CSC는 안 올려도 됩니다. 뭔지는 모릅니다. AP는 파일 크기가 커서 오딘에 올릴 때 살짝 멈춘 것처럼 착각하게 할 만큼 오래 걸립니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;873&quot; data-origin-height=&quot;647&quot; data-filename=&quot;준비직전Odin.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dS1BPr/btraNy7O7bt/eTgWXRPloM303pM1Te687k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dS1BPr/btraNy7O7bt/eTgWXRPloM303pM1Te687k/img.png&quot; data-alt=&quot;파일들을 다 선택하고 갤럭시탭을 연결한 모습&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dS1BPr/btraNy7O7bt/eTgWXRPloM303pM1Te687k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdS1BPr%2FbtraNy7O7bt%2FeTgWXRPloM303pM1Te687k%2Fimg.png&quot; data-origin-width=&quot;873&quot; data-origin-height=&quot;647&quot; data-filename=&quot;준비직전Odin.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파일들을 다 선택하고 갤럭시탭을 연결한 모습&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 Start 버튼을 누르면 올라갑니다. 여기서 기기가 연결되면 ID:COM 자리가 활성화가 되어야 연결된 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;별 문제가 없다면 올린 후 안드로이드를 한 단계 낮춘 갤럭시 탭을 사용할 수 있을 것입니다.&lt;/p&gt;</description>
      <category>IT</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/276</guid>
      <comments>https://rudalson.tistory.com/entry/%EA%B0%A4%EB%9F%AD%EC%8B%9C%ED%83%AD-S3-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EB%8B%A4%EC%9A%B4%EA%B7%B8%EB%A0%88%EC%9D%B4%EB%93%9C#entry276comment</comments>
      <pubDate>Wed, 28 Jul 2021 19:44:38 +0900</pubDate>
    </item>
    <item>
      <title>수지보건소 코로나19 검사 후기</title>
      <link>https://rudalson.tistory.com/entry/%EC%88%98%EC%A7%80%EB%B3%B4%EA%B1%B4%EC%86%8C-%EC%BD%94%EB%A1%9C%EB%82%9819-%EA%B2%80%EC%82%AC-%ED%9B%84%EA%B8%B0</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;몸살기운&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저녁부터 갑자기 몸에 한기를 느끼고 기운이 픽 떨어지고 피로가 몰려오고 하더니 다음날 열을 재보니 미열이 났었습니다.&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;37.2도&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;살짝 애매한 온도인데....... 검사를 받아야 하나 말아야 하나 고민되었습니다.&amp;nbsp;그러면서 내가 그동안 들린 곳들. 만난 사람들을 떠올려 봤지만 딱히 많지도 않았습니다. 코로나는 아닐테지만 이렇게 조금이라도 열이 있으면 출근을 할 수 없을 것 같아 검사를 받으러 갔습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;임시선별검사소 vs 선별진료소&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3월에도 몸살 기운이 있어서 &lt;span style=&quot;color: #000000;&quot;&gt;&lt;a href=&quot;http://naver.me/xAtWGVdj&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;용인포은아트홀 임시선별검사소&lt;/a&gt;에서 검사 받아본 적이 있었습니다. 그래서 가까운 임시선변검사소로 갔는데 증상이 있을 경우 선별진료소로 가라고 하여 이곳에서는 검사받지 못했다. 가까운 보건소로 가라고 하였다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그래서 수지보건소로 갔다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;555&quot; data-filename=&quot;20210519_112109.jpg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xZ5zP/btq5Ncazls7/euvkt4rHbuZj9J8U4P4wv0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xZ5zP/btq5Ncazls7/euvkt4rHbuZj9J8U4P4wv0/img.jpg&quot; data-alt=&quot;코로나 검사를 받기 위한 분들은 지상주차장을 이용하라고 쓰여있었다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xZ5zP/btq5Ncazls7/euvkt4rHbuZj9J8U4P4wv0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxZ5zP%2Fbtq5Ncazls7%2Feuvkt4rHbuZj9J8U4P4wv0%2Fimg.jpg&quot; data-origin-width=&quot;740&quot; data-origin-height=&quot;555&quot; data-filename=&quot;20210519_112109.jpg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;코로나 검사를 받기 위한 분들은 지상주차장을 이용하라고 쓰여있었다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;보건소 내에서도 선별 검사소와 진료소가 나뉘어 있었는데 찾아가기 어렵지는 않았습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;운영시간은&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;평일 : 09시 ~ 17시 (점심시간은 12~14)&lt;/li&gt;
&lt;li&gt;휴일 : 09시 ~ 13시&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;740&quot; data-filename=&quot;20210519_112052.jpg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ej3uqW/btq5ObbomxE/XB5mvtx9dJHhfKqotnqSkK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ej3uqW/btq5ObbomxE/XB5mvtx9dJHhfKqotnqSkK/img.jpg&quot; data-alt=&quot;이쪽 아니면 저쪽...&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ej3uqW/btq5ObbomxE/XB5mvtx9dJHhfKqotnqSkK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fej3uqW%2Fbtq5ObbomxE%2FXB5mvtx9dJHhfKqotnqSkK%2Fimg.jpg&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;740&quot; data-filename=&quot;20210519_112052.jpg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이쪽 아니면 저쪽...&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;난 몸살 기운이 있기에 선별진료소로 향했다. 그래봐야 몇걸음이지만.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;740&quot; data-filename=&quot;20210519_112043.jpg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQBQz2/btq5Q61wc2g/PAdXkxCEADGscx1OYlVmCk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQBQz2/btq5Q61wc2g/PAdXkxCEADGscx1OYlVmCk/img.jpg&quot; data-alt=&quot;이곳에서 오게된 사유, 증상 등등의 서류를 작성한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQBQz2/btq5Q61wc2g/PAdXkxCEADGscx1OYlVmCk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQBQz2%2Fbtq5Q61wc2g%2FPAdXkxCEADGscx1OYlVmCk%2Fimg.jpg&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;740&quot; data-filename=&quot;20210519_112043.jpg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이곳에서 오게된 사유, 증상 등등의 서류를 작성한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인정보(주소, 직장위치, 전화번호 등등) 및 사유, 증상 등을 간단히 작성하고 사무실 쪽으로 제출하면 면봉2개와 진단키트를 받을 수 있다. 이걸 들고 사무실 옆쪽 검사실에 빈 공간으로 가서 검사를 받으면 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;740&quot; data-filename=&quot;20210519_112028_HDR.jpg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kThTW/btq5RvteL9Y/or0hhJPK8pJpRa69mZYV1K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kThTW/btq5RvteL9Y/or0hhJPK8pJpRa69mZYV1K/img.jpg&quot; data-alt=&quot;1, 2, 3 어디로 갈것인가?&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kThTW/btq5RvteL9Y/or0hhJPK8pJpRa69mZYV1K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkThTW%2Fbtq5RvteL9Y%2For0hhJPK8pJpRa69mZYV1K%2Fimg.jpg&quot; data-origin-width=&quot;555&quot; data-origin-height=&quot;740&quot; data-filename=&quot;20210519_112028_HDR.jpg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;1, 2, 3 어디로 갈것인가?&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검사는 이제는 익히 아시겠지만 한 면봉으로 입 안쪽에 한번 대고 다른 면봉으로 코안쪽 깊게 찔러 넣으면 끝입니다. 살짝 가렵거나 따끔하지만 못참을 정도는 아니었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과는 뭐 다음날 아침에 문자로 왔습니다. 여긴 다음날 오전에 결과를 알려주시더라구요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;342&quot; data-origin-height=&quot;740&quot; data-filename=&quot;Screenshot_20210526-152858.jpg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHcE8L/btq5QSCqljF/c3kxNXXwhpV9biXQkHwM40/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHcE8L/btq5QSCqljF/c3kxNXXwhpV9biXQkHwM40/img.jpg&quot; data-alt=&quot;3월에 받았던 검사결과 문자도 아직 있었군요&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHcE8L/btq5QSCqljF/c3kxNXXwhpV9biXQkHwM40/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHcE8L%2Fbtq5QSCqljF%2Fc3kxNXXwhpV9biXQkHwM40%2Fimg.jpg&quot; data-origin-width=&quot;342&quot; data-origin-height=&quot;740&quot; data-filename=&quot;Screenshot_20210526-152858.jpg&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;3월에 받았던 검사결과 문자도 아직 있었군요&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>잡담</category>
      <category>코로나</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/275</guid>
      <comments>https://rudalson.tistory.com/entry/%EC%88%98%EC%A7%80%EB%B3%B4%EA%B1%B4%EC%86%8C-%EC%BD%94%EB%A1%9C%EB%82%9819-%EA%B2%80%EC%82%AC-%ED%9B%84%EA%B8%B0#entry275comment</comments>
      <pubDate>Wed, 26 May 2021 15:26:59 +0900</pubDate>
    </item>
    <item>
      <title>카뱅을 통해 증권계좌 하루에 3개 만들기 (삼성증권, KB증권, NH증권)</title>
      <link>https://rudalson.tistory.com/entry/%EC%B9%B4%EB%B1%85%EC%9D%84-%ED%86%B5%ED%95%B4-%EC%A6%9D%EA%B6%8C%EA%B3%84%EC%A2%8C-%ED%95%98%EB%A3%A8%EC%97%90-3%EA%B0%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EC%82%BC%EC%84%B1%EC%A6%9D%EA%B6%8C-KB%EC%A6%9D%EA%B6%8C-NH%EC%A6%9D%EA%B6%8C</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;공모주 청약에 도전&lt;/h2&gt;
&lt;p&gt;근래 뜨거운 공모주 청약 열기에 동참하고자 증권계좌를 만드는 중입니다. &lt;code&gt;SK IET&lt;/code&gt; 신청을 필두로 이제 왠만하면 청약을 넣어보려니깐 이게 증권사마다 주관? 주간 하는 곳이 다르더라구요. 이제 알았습니다.&lt;/p&gt;
&lt;p&gt;여하튼 &lt;code&gt;키움증권&lt;/code&gt;과 &lt;code&gt;미래에셋증권&lt;/code&gt;, &lt;code&gt;한국투자증권&lt;/code&gt;만 사용하던 저로서는 다른 증권 계좌를 만들어야 하는데 이게 한개를 만들면 20 영업일 내로는 또 다른 것을 만들지 못하기에 &lt;code&gt;토스증권&lt;/code&gt;계좌 신청 이후 계속 기다리고 있었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;토슥증권계좌.jpg&quot; data-origin-width=&quot;591&quot; data-origin-height=&quot;1280&quot; width=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBWzVH/btq4c1bsDRg/V12lMCUKGAxPv0QqKFWdsk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBWzVH/btq4c1bsDRg/V12lMCUKGAxPv0QqKFWdsk/img.jpg&quot; data-alt=&quot;수익률은 좋지만 누군 NAVER 받았다카던데.....&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBWzVH/btq4c1bsDRg/V12lMCUKGAxPv0QqKFWdsk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBWzVH%2Fbtq4c1bsDRg%2FV12lMCUKGAxPv0QqKFWdsk%2Fimg.jpg&quot; data-filename=&quot;토슥증권계좌.jpg&quot; data-origin-width=&quot;591&quot; data-origin-height=&quot;1280&quot; width=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;수익률은 좋지만 누군 NAVER 받았다카던데.....&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;앞으로 있을 대형 상장 공모주에 &lt;code&gt;카카오페이&lt;/code&gt;와 &lt;code&gt;카카오뱅크&lt;/code&gt; 등이 있을 것이고 거기에 맞춰 &lt;code&gt;KB증권&lt;/code&gt;, &lt;code&gt;삼성증권&lt;/code&gt; 등을 만들려고 했습니다. 우선 &lt;code&gt;삼성증권&lt;/code&gt; 부터 만든 후 한달 후&amp;nbsp;&lt;code&gt;KB증권&lt;/code&gt; 그리고 하나씩 계좌를 늘려나갈 생각이었습니다. 한달에 하나씩요....&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;삼성증권 비대면 계좌 개설&lt;/h3&gt;
&lt;p&gt;먼저 &lt;code&gt;삼성증권 mPOP&lt;/code&gt; 앱을 설치 후에 비대면 계좌 개설을 진행하면 되고 크게 어려운 것은 없었지만 한가지 아쉬운 점이 있습니다. 저 같이 알뜰폰 사용자에게 &lt;code&gt;휴대폰 본인인증&lt;/code&gt;이 안되었습니다. 요즘 휴대폰 본인 인증에서 알뜰폰 사업자를 지정 못하는 경우는 처음 봤습니다. 그래서 그 밑에 공인인증을 통한 본인인증으로 진행했고 이후는 어렵지 않았습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;01. 삼성증권 계좌완료.jpg&quot; data-origin-width=&quot;437&quot; data-origin-height=&quot;582&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0ScSp/btq4c1WM2zs/JcL6iKSKY0Bo2CnRkqC2s0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0ScSp/btq4c1WM2zs/JcL6iKSKY0Bo2CnRkqC2s0/img.jpg&quot; data-alt=&quot;또 나름 화면캡쳐를 못하게 막아뒀네요. 다른 폰으로 찍은 사진&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0ScSp/btq4c1WM2zs/JcL6iKSKY0Bo2CnRkqC2s0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0ScSp%2Fbtq4c1WM2zs%2FJcL6iKSKY0Bo2CnRkqC2s0%2Fimg.jpg&quot; data-filename=&quot;01. 삼성증권 계좌완료.jpg&quot; data-origin-width=&quot;437&quot; data-origin-height=&quot;582&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;또 나름 화면캡쳐를 못하게 막아뒀네요. 다른 폰으로 찍은 사진&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;계좌 개설 후 OTP 를 등록했고 바로 &lt;code&gt;씨앤씨인터내셔널&lt;/code&gt;을 청약하러 고고 했더니 난 자격이 안된다네요. 무슨 자격???? 하여간 아쉽지만 내일 다시 해보기로 했습니다. 원래는 여기까지 하고 한달을 기다린 후 KB증권 계좌를 만들려고 했었습니다. 그런데.....&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;카카오뱅크의 증권계좌 개설 이벤트&lt;/h3&gt;
&lt;p&gt;카뱅의 이벤트 내용이 딱 내가 만드려던 KB증권 개설에 대한 것이 있었습니다. 밑져야 본전..... 시도해봤더니 오오오.... 만들어 집니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;KB증권계좌.jpg&quot; data-origin-width=&quot;1172&quot; data-origin-height=&quot;767&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Pw5Qv/btq4kbiLpYR/a4NDJB6X7JvyaJLkjWoRQ0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Pw5Qv/btq4kbiLpYR/a4NDJB6X7JvyaJLkjWoRQ0/img.jpg&quot; data-alt=&quot;만들자 마자 5000 원 넣어주네요. 대한해운을 준 토스증권보다 낫네요.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Pw5Qv/btq4kbiLpYR/a4NDJB6X7JvyaJLkjWoRQ0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPw5Qv%2Fbtq4kbiLpYR%2Fa4NDJB6X7JvyaJLkjWoRQ0%2Fimg.jpg&quot; data-filename=&quot;KB증권계좌.jpg&quot; data-origin-width=&quot;1172&quot; data-origin-height=&quot;767&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;만들자 마자 5000 원 넣어주네요. 대한해운을 준 토스증권보다 낫네요.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;카카오뱅크에서 KB증권 계좌 개설을 하면 카뱅에서 KB증권으로 계좌생성 신청을 했다고 기다려보라고 합니다. 제가 했을 때는 1초만에 바로 KB증권에서 개설되었다고 문자가 날아오더라구요.&lt;/p&gt;
&lt;p&gt;그래서 &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.kbsec.mts.iplustarngm2&amp;amp;hl=ko&amp;amp;gl=US&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;KB증권 M-able앱&lt;/a&gt;을 설치하고 로그인을 위한 본인인증을 하면 되는데 KB에선 카카오페이 인증을 지원하더라구요. 지문인증도 편하지만 카카오페이 인증으로 로그인을 해보았고 잘 됩니다. 이렇게 쾌적하다니..... 그리고 이벤트 지원금 5000원도 바로 넣어주네요.&lt;/p&gt;
&lt;p&gt;그런데 왜 개설되었지??? 하는 생각이 들었습니다. '20일 기다려야 될텐데...' 하는 생각이 드네요. 왜 그런지는 모르겠지만 &lt;code&gt;&quot;계좌개설 20일 제한 푸는법&quot;&lt;/code&gt; 이란 검색으로 해보았지만 아무도 나의 경우랑 일치하는 것이 없었습니다.&lt;/p&gt;
&lt;p&gt;내친김에 다른 이벤트 증권 계좌도 만들어 보았습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;photo_2021-05-06_15-38-15.jpg&quot; data-origin-width=&quot;591&quot; data-origin-height=&quot;1280&quot; width=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5xveM/btq4hqgNU9u/NstFihK3AwaDuKB6sVqCy1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5xveM/btq4hqgNU9u/NstFihK3AwaDuKB6sVqCy1/img.jpg&quot; data-alt=&quot;2021.5.6일 기준으로 3군데 이벤트 중입니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5xveM/btq4hqgNU9u/NstFihK3AwaDuKB6sVqCy1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5xveM%2Fbtq4hqgNU9u%2FNstFihK3AwaDuKB6sVqCy1%2Fimg.jpg&quot; data-filename=&quot;photo_2021-05-06_15-38-15.jpg&quot; data-origin-width=&quot;591&quot; data-origin-height=&quot;1280&quot; width=&quot;360&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2021.5.6일 기준으로 3군데 이벤트 중입니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;NH투자증권 개설&lt;/h3&gt;
&lt;p&gt;농협의 NH투자증권은 위 화면 그림에서 나오고 또 문자에서도 날아오길 &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.wooriwm.txsmart&amp;amp;hl=ko&amp;amp;gl=US&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;나무 앱&lt;/a&gt;을 통해 접속하면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;NH투자-1.jpg&quot; data-origin-width=&quot;1091&quot; data-origin-height=&quot;723&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/csylmO/btq4dbSoShY/Zuuwj3L69w0IxX7cvrNCUk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/csylmO/btq4dbSoShY/Zuuwj3L69w0IxX7cvrNCUk/img.jpg&quot; data-alt=&quot;나무앱에서 카카오뱅크 고객 전용의 메뉴가 따로 있었습니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csylmO/btq4dbSoShY/Zuuwj3L69w0IxX7cvrNCUk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcsylmO%2Fbtq4dbSoShY%2FZuuwj3L69w0IxX7cvrNCUk%2Fimg.jpg&quot; data-filename=&quot;NH투자-1.jpg&quot; data-origin-width=&quot;1091&quot; data-origin-height=&quot;723&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;나무앱에서 카카오뱅크 고객 전용의 메뉴가 따로 있었습니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;NH투자증권에서는 이벤트로 미국주식 1주를 주는데(추첨) 만약 추첨에서 떨어지면 $5로 대체한다고 하네요. 대충 5천원은 넘으니 괜찮네요 ㅎㅎ&lt;/p&gt;
&lt;p&gt;개설방법은 이후 진행이 어렵진 않습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;정리&lt;/h2&gt;
&lt;p&gt;NH증권계좌를 만든 후 한국투자증권 계좌는 이미 가지고 있었기에 만들지 않았습니다.&lt;/p&gt;
&lt;p&gt;포스트 내용을 정리해보자면&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;카뱅을 통해서는 증권계좌를 하루에 3개를 만들 수 있다.&amp;nbsp;보통 20일 제한이 걸려서 한달에 한개 정도 만들 수 밖에 없는데 이 방법은 아직 덜 알려진 것 같다.&lt;/li&gt;
&lt;li&gt;삼성증권은 알뜰폰 인증이 되지 않아 공인인증서로 본인인증을 해야 가능하다.&lt;/li&gt;
&lt;li&gt;개인의 편견이지만 증권사 이미지와 달리 삼성증권이 가장 구리고 NH증권(농협)이 가장 깔끔하고 세련된 느낌이었다.&lt;/li&gt;
&lt;li&gt;토스증권의 이벤트로 받은 대한해운 1주는 날아가고 있지만 공모도 없고 해서 쓸 마음은 없다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;정도 인 것 같습니다.&lt;/p&gt;
&lt;p&gt;이걸로 치킨값은 공모주로 따박따박 맛있게 먹어 보겠습니다.&amp;nbsp;&lt;/p&gt;</description>
      <category>잡담</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/274</guid>
      <comments>https://rudalson.tistory.com/entry/%EC%B9%B4%EB%B1%85%EC%9D%84-%ED%86%B5%ED%95%B4-%EC%A6%9D%EA%B6%8C%EA%B3%84%EC%A2%8C-%ED%95%98%EB%A3%A8%EC%97%90-3%EA%B0%9C-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EC%82%BC%EC%84%B1%EC%A6%9D%EA%B6%8C-KB%EC%A6%9D%EA%B6%8C-NH%EC%A6%9D%EA%B6%8C#entry274comment</comments>
      <pubDate>Thu, 6 May 2021 14:58:55 +0900</pubDate>
    </item>
    <item>
      <title>NFT의 놀라운 약진</title>
      <link>https://rudalson.tistory.com/entry/NFT%EC%9D%98-%EB%86%80%EB%9D%BC%EC%9A%B4-%EC%95%BD%EC%A7%84</link>
      <description>&lt;p&gt;근래 NFT의 뉴스들이 놀라웠습니다. 디지털 작품들이 상상을 초월하는 가격에 거래되었다는 뉴스들이었고 소유권에 대한 정보는 블록체인에 담겨진다는 내용들입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;War Nymph&lt;/h3&gt;
&lt;p&gt;Elon Musk의 아내이자 가수인 Grimes의 천사 비스무리한 &lt;a href=&quot;https://www.instagram.com/warnymph/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;아기 관련 영상과 10여점의 이미지&lt;/a&gt;가 256 Eth에 거래되었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;warnymph.png&quot; data-origin-width=&quot;938&quot; data-origin-height=&quot;867&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCjunm/btq1C2CVDRA/SDHKojRYWaLoyg8bETHun1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCjunm/btq1C2CVDRA/SDHKojRYWaLoyg8bETHun1/img.png&quot; data-alt=&quot;음.... 확실히 제 취향은 아닌듯.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCjunm/btq1C2CVDRA/SDHKojRYWaLoyg8bETHun1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCjunm%2Fbtq1C2CVDRA%2FSDHKojRYWaLoyg8bETHun1%2Fimg.png&quot; data-filename=&quot;warnymph.png&quot; data-origin-width=&quot;938&quot; data-origin-height=&quot;867&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;음.... 확실히 제 취향은 아닌듯.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://niftygateway.com/collections/warnymphvolume1open&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Nifty Gateway&lt;/a&gt;에서 거래되었는데 258이더면 현재 5억 6천 정도 네요. 화성수호신이라고 하는데 일런머스크의 화성 이주 계획을 잘 지켜주겠죠?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;258이더는.png&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;304&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/daBsav/btq1EolbiDl/m4avrL0BGD7nSxaPkjZ9Q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/daBsav/btq1EolbiDl/m4avrL0BGD7nSxaPkjZ9Q0/img.png&quot; data-alt=&quot;이더리움은 또 언제 이리도 올랐냐...&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/daBsav/btq1EolbiDl/m4avrL0BGD7nSxaPkjZ9Q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdaBsav%2Fbtq1EolbiDl%2Fm4avrL0BGD7nSxaPkjZ9Q0%2Fimg.png&quot; data-filename=&quot;258이더는.png&quot; data-origin-width=&quot;682&quot; data-origin-height=&quot;304&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이더리움은 또 언제 이리도 올랐냐...&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Crossroad(by Beeple)&lt;/h3&gt;
&lt;p&gt;비플이라는 디지털 아티스트는 &lt;a href=&quot;https://niftygateway.com/itemdetail/secondary/0x12f28e2106ce8fd8464885b80ea865e98b465149/100010001&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;10초 분량의 동영상&lt;/a&gt;을 387.54 Eth에 팔았다고 하네요. 이 동영상은 10초 끝나서 다시 재생될 때 자연스럽게 연결되게끔 만들어져 있는데 뒤에 나체로 누워 있는 사람이 트럼프 대통령이라고 하네요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;beeple.png&quot; data-origin-width=&quot;455&quot; data-origin-height=&quot;442&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AsOBW/btq1D1KCCTK/muA1RN5844mOXSgePk2CM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AsOBW/btq1D1KCCTK/muA1RN5844mOXSgePk2CM1/img.png&quot; data-alt=&quot;헤어스타일이 딱 그분이네요&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AsOBW/btq1D1KCCTK/muA1RN5844mOXSgePk2CM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAsOBW%2Fbtq1D1KCCTK%2FmuA1RN5844mOXSgePk2CM1%2Fimg.png&quot; data-filename=&quot;beeple.png&quot; data-origin-width=&quot;455&quot; data-origin-height=&quot;442&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;헤어스타일이 딱 그분이네요&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이건 Etherscan 에서 확인해보니 &lt;a href=&quot;https://etherscan.io/tx/0x1e4d7937c4070f231d09df1f12f9280e4f7cb98c8c700ab6440bcb1cdcce48e8&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;0x12f28e2106ce8fd8464885b80ea865e98b465149&lt;/a&gt; 트랜잭션이 잡히네요.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그리고 Beeple은 자신이 그동안 그려왔던 작품을 합친 그림을(콜라쥬) 세계 3위의 가격으로 판걸로도 유명하죠.&amp;nbsp; 제목이 5000일 입니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;5000일.jpg&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;616&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMWsmw/btq1C06iY3o/zTdNRGELZSr7gvRSqpvoRk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMWsmw/btq1C06iY3o/zTdNRGELZSr7gvRSqpvoRk/img.jpg&quot; data-alt=&quot;이. 이.. 이..게 3번째로 비싼 예술품인가요?&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMWsmw/btq1C06iY3o/zTdNRGELZSr7gvRSqpvoRk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMWsmw%2Fbtq1C06iY3o%2FzTdNRGELZSr7gvRSqpvoRk%2Fimg.jpg&quot; data-filename=&quot;5000일.jpg&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;616&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이. 이.. 이..게 3번째로 비싼 예술품인가요?&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Nyan Cat&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;poptartcat320240.gif&quot; data-origin-width=&quot;320&quot; data-origin-height=&quot;240&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/spaDI/btq1AGmYFjH/p5eq6mBKf0msV8AB3nqTrk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/spaDI/btq1AGmYFjH/p5eq6mBKf0msV8AB3nqTrk/img.gif&quot; data-alt=&quot;이 움직이는 고양이가 뭐라고.......&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/spaDI/btq1AGmYFjH/p5eq6mBKf0msV8AB3nqTrk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/spaDI/btq1AGmYFjH/p5eq6mBKf0msV8AB3nqTrk/img.gif&quot; data-filename=&quot;poptartcat320240.gif&quot; data-origin-width=&quot;320&quot; data-origin-height=&quot;240&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이 움직이는 고양이가 뭐라고.......&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이 고양이 밈 gif 그림은 300 이더에 거래되었습니다. 이제는 놀랍지도 않네요.&amp;nbsp; &lt;a href=&quot;https://etherscan.io/tx/0xa1042c7dac0750c48049a5556d42553cec6f90d9ff1ec9bfe3b4574265d9ac2f&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;0xa1042c7dac0750c48049a5556d42553cec6f90d9ff1ec9bfe3b4574265d9ac2f&lt;/a&gt;에서 확인가능합니다. 이 고양이는 밈계에서도 꽤 유명한 고양이 였던 것 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;image (1) (1).png&quot; data-origin-width=&quot;717&quot; data-origin-height=&quot;404&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbEDku/btq1yZt2P2u/KPK7ttNGzdSrx4RWoKrXr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbEDku/btq1yZt2P2u/KPK7ttNGzdSrx4RWoKrXr0/img.png&quot; data-alt=&quot;장애의 원인이 되기도....&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbEDku/btq1yZt2P2u/KPK7ttNGzdSrx4RWoKrXr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbEDku%2Fbtq1yZt2P2u%2FKPK7ttNGzdSrx4RWoKrXr0%2Fimg.png&quot; data-filename=&quot;image (1) (1).png&quot; data-origin-width=&quot;717&quot; data-origin-height=&quot;404&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;장애의 원인이 되기도....&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Jack Dorsey의 첫 트윗&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;jackdorsey.PNG&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;179&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Q4AdV/btq1AGHiQwr/8O1zeHC8xlfigB6yec72Mk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Q4AdV/btq1AGHiQwr/8O1zeHC8xlfigB6yec72Mk/img.png&quot; data-alt=&quot;존경하는 잭 형님... 부럽습니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Q4AdV/btq1AGHiQwr/8O1zeHC8xlfigB6yec72Mk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQ4AdV%2Fbtq1AGHiQwr%2F8O1zeHC8xlfigB6yec72Mk%2Fimg.png&quot; data-filename=&quot;jackdorsey.PNG&quot; data-origin-width=&quot;567&quot; data-origin-height=&quot;179&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;존경하는 잭 형님... 부럽습니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이건 무려 &lt;a href=&quot;https://v.cent.co/tweet/20&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;1630 이더에 거래&lt;/a&gt;가 되었습니다.&amp;nbsp; 오라클 CEO가 샀다고 하던데. 트윗까지 거래가 되다니 NFT로는 어디까지 거래가 될까요?&lt;/p&gt;
&lt;p&gt;NFT에 대해서 점점 흥미가 생기네요. 이런 것들이 점점 더 활성화가 되는데 이더리움이 쓰인다고 하네요. 아 채굴채굴&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>IT</category>
      <category>이더리움</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/273</guid>
      <comments>https://rudalson.tistory.com/entry/NFT%EC%9D%98-%EB%86%80%EB%9D%BC%EC%9A%B4-%EC%95%BD%EC%A7%84#entry273comment</comments>
      <pubDate>Wed, 31 Mar 2021 09:40:46 +0900</pubDate>
    </item>
    <item>
      <title>이더리움 채굴을 준비하기 (With 마이닝 풀)</title>
      <link>https://rudalson.tistory.com/entry/%EC%9D%B4%EB%8D%94%EB%A6%AC%EC%9B%80-%EC%B1%84%EA%B5%B4%ED%95%98%EA%B8%B0-Mining-Pool-Hub-%EB%A7%88%ED%92%80%ED%97%88</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;비트코인(BTC)이 형 노릇하니&lt;/h2&gt;
&lt;p&gt;요즘 암호화폐의 기세가 좋습니다. 오늘자 기준(2021.03.24)으로 1 BTC가 6천만 원이 넘는군요. 비트코인을 샀었어야 했는데 라고 생각할 때 샀었어야 했는데....라고 생각할 때 샀었어야 했는데.......라고 생각했을 때도 늦지 않아서 샀었어야 했는데.......라고 과거의 나를 반성(?)..... 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;665&quot; data-origin-height=&quot;292&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KhofN/btq0Q8dFLiZ/osqLUymdDiG7caDk0k3Aq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KhofN/btq0Q8dFLiZ/osqLUymdDiG7caDk0k3Aq1/img.png&quot; data-alt=&quot;비트코인에 몰빵했어야 했는데......&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KhofN/btq0Q8dFLiZ/osqLUymdDiG7caDk0k3Aq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKhofN%2Fbtq0Q8dFLiZ%2FosqLUymdDiG7caDk0k3Aq1%2Fimg.png&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;665&quot; data-origin-height=&quot;292&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;비트코인에 몰빵했어야 했는데......&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;아무래도 비트코인이 대장이니깐 암호화폐에 관심 있으신 분은 비트코인만 봐도 될 것 같습니다만, 비트코인은 일반인이 채굴하기 힘듭니다.&lt;/p&gt;
&lt;p&gt;개인적으로 예전에 Bitmain의 ANT Miner S9 장비를 중고로 한대 구매했었습니다. 단순 호기심이었지만 한번 실행해 본 이후 그냥 모셔두고 있습니다. 소음이 너무 심해서 (마치 비행기 타고 있는 듯한) 일반 가정에서 돌리기에는 무리더라고요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;s-l400.jpg&quot; data-origin-width=&quot;377&quot; data-origin-height=&quot;400&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjMNj0/btq0UdLIZ1A/2ZRmOcvwIdLDkhAbdn4m1K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjMNj0/btq0UdLIZ1A/2ZRmOcvwIdLDkhAbdn4m1K/img.jpg&quot; data-alt=&quot;비트코인은 이제 PC로 돌릴게 아니라 이런걸로 돌려야 됩니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjMNj0/btq0UdLIZ1A/2ZRmOcvwIdLDkhAbdn4m1K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjMNj0%2Fbtq0UdLIZ1A%2F2ZRmOcvwIdLDkhAbdn4m1K%2Fimg.jpg&quot; data-filename=&quot;s-l400.jpg&quot; data-origin-width=&quot;377&quot; data-origin-height=&quot;400&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;비트코인은 이제 PC로 돌릴게 아니라 이런걸로 돌려야 됩니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;이더리움이라도 어떻게&lt;/h2&gt;
&lt;p&gt;비트코인 채굴과는 달리 이더리움은 GPU 연산이 많이 필요한 해시함수를 사용합니다. 그래서 GPU 파워가 높은 게 장땡입니다. 요즘은 NVIDIA RTX 3000 번대 그래픽 카드까지 나온 시대이고 채굴에 주력인 것 같습니다. 하지만 전 가난하고 그 정도의 전문(?) 채굴 장비도 없습니다.&lt;/p&gt;
&lt;p&gt;다행히 머신러닝 학습용으로 RTX 2000 대 그래픽 카드가 있는 시스템을 사용 중이라 '이참에 나도 채굴 한번 해봐?' 하고 도전해봤습니다. 결론부터 말씀드리면 소량이지만 채굴도 되고 방법도 알게 되어 기뻤다? 정도이며 전기세를 고려한 채산성, 시스템 사용 잠식 등을 생각하면 제가 계속할 짓은 못된다 정도로 결론을 내렸습니다. 근래에 채굴용 장비값이 너무 급등하여 살 엄두가 쉽사리 나지 않네요.&lt;/p&gt;
&lt;p&gt;기본적인 이더리움 채굴을 하기 위해 필요한 것으로&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;NVIDIA(혹은 AMD) 그래픽 카드&lt;/li&gt;
&lt;li&gt;암호화폐 지갑(Wallet)&lt;/li&gt;
&lt;li&gt;Mining Pool 가입&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;정도인 것 같습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;그래픽 카드&lt;/h3&gt;
&lt;p&gt;그래픽 카드는 GPU로 중무장한 녀석이 필요합니다. 특히 NVIDIA가 많이 선호되며 현재는 3060, 3070, 3080 등이 언급되는데 자세한 차이는 저도 잘 모릅니다만 (가져본 적도 없습니다.) 여하튼 현시점에서는 채굴 가성비가 가장 좋다고 합니다. 아무래도 전기도 적게 먹어야 되니깐요.&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;암호화폐 지갑(Crypto Wallet)&lt;/h3&gt;
&lt;p&gt;돈을 담는 지갑이란 표현을 사용했지만 IT적으로 이야기하자면 클라이언트 프로그램을 말합니다. 우리 같은 사용자들이 암호화폐를 가지고 어떠한 행위(보내기, 받기, 사용하기 등등)를 하려면 프로그램 뭐하나라도 실행시켜놓고 해야 하는데 그러한 프로그램을 말합니다.&lt;/p&gt;
&lt;p&gt;이걸 실행한 후 자신만의 계좌번호를 하나 만들어야 합니다. 마치 은행의 통장 하나 만들면 계좌번호가 생성되듯이, 여기서도 그러한 것을 해줘야 합니다. 이것을 흔히 주소(address)라고 부르며 코인마다 다릅니다.&lt;/p&gt;
&lt;p&gt;이더리움은 영어 단축어로 ETH로 표현되며 대부분의 지갑에서 ETH는 지원합니다. 넘버 2 니깐요. &lt;s&gt;카카오 지갑은... 왜&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;이렇게 주소는 또 크게 2가지 부류가 있는데 거래소 주소가 있고 월렛 주소가 있습니다.&lt;/p&gt;
&lt;p&gt;보통은 월렛 주소로 자신이 잘 보관하면서 사용하면 되겠지만 이를 결국은 환전해야 할 때가 있습니다. 이를 위해서는 은행 가서 환전하듯이 전환을 해야 하는데 코인 거래소에서 이를 시행하며 거래소에 코인을 보낸 후 환전이 이루어지는 시스템입니다.&amp;nbsp;암호화폐 거래소는 생각보다 많습니다. 이게 설립 기준이 그리 높지 않은 것 같더라고요. 법과 제도가 뒤따라 보완되고 있겠거니 생각합니다만 우리 같은 일반인은 아무래도 대형 거래소 위주로 해야 나중에 불미스러운 일이 없을 것 같습니다.&lt;/p&gt;
&lt;p&gt;아무래도 국내 대형 거래소로는 업비트, 빗썸, 코인원 등이 있으며 거래소마다 취급하는 코인이 다릅니다. 하지만 BTC, ETH는 어디든 취급합니다.&lt;/p&gt;
&lt;p&gt;월렛은 소프트웨어 월렛으로 Meta Mask, MEW(My Ether Wallet), &lt;a href=&quot;https://brd.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;BRD&lt;/a&gt;, &lt;a href=&quot;https://www.jaxx.io/downloads&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Jaxx&lt;/a&gt;, 삼성 Digital Wallet 등이 있습니다. 삼성은 갤럭시 S10 이후 모델에 탑재된 앱 형태로 있습니다. 형태는 모바일이나, 구글 크롬&amp;nbsp;익스텐션, 웹 등 다양한 편인데 편한 대로 구해서 사용하면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하드웨어 형태로는 나노렛져가 유명하며 저 역시 가지고 싶습니다. ㅜㅠ&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;nanoledger.png&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;451&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZDdGy/btq0SlRq6tM/M5mfUjBIte9Be93KDVRz90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZDdGy/btq0SlRq6tM/M5mfUjBIte9Be93KDVRz90/img.png&quot; data-alt=&quot;뽀대가....... 다릅니다&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZDdGy/btq0SlRq6tM/M5mfUjBIte9Be93KDVRz90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZDdGy%2Fbtq0SlRq6tM%2FM5mfUjBIte9Be93KDVRz90%2Fimg.png&quot; data-filename=&quot;nanoledger.png&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;451&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;뽀대가....... 다릅니다&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;마이닝 풀(Mining Pool)&lt;/h3&gt;
&lt;p&gt;비트코인이나 이더리움은 채굴에 관해서는 개인이 단독으로 채굴할 수 있는 확률은 거의 제로입니다. 채굴 장비들이 점점 전문화가 되어 비싸지고 이 마저도 확률이 떨어져서 안정적으로 분업체계로 들어간 지 오래입니다. 이걸 마이닝 풀이라고 부르며 한마디고 거기에 가입하여 품을 팔면 내가 기여한 공로만큼 비율로 나눠서 받아가는 방식입니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;그러면 기여한 것을 어떻게 측량? 측정할 것이냐? 그것이 해시 비율을 얼마만큼 기여했냐로 수치화된 값으로 정합니다. 해시함수를 1초에 몇 번 실행시켰냐? 를 말하는 것으로 여기에 GPU가 좋으면 좋은 만큼 많이 실행시키는 것입니다. 그래서 현시점에서 이더리움을 채굴하려면 개인적으로 geth 같은 명령어로 개인 PC에 돌리는 개발자 적인 방법으로는 이더리움 냄새도 못 맡습니다.&lt;/p&gt;
&lt;p&gt;이더리움 채굴할 때 우리나라에서 가장 많이 언급되는 풀(집단)이 Mining Pool Hub(a.k.a 마풀허)가 있고 Ethereum Mining Pool(a.k.a 이더마인) 이 대표적으로 있습니다. 마풀허는 한국인이 운영하는 곳으로 알고 있습니다. 이더마인의 풀의 해시 능력이 마풀허에 비해서 훨씬 큽니다. 현시점 기준으로 (2021.03.24) 마풀허는 13TH 정도, 이더마인은 92 TH 정도 나오네요. 단위는 뭐 그냥 그러려니 보시고 숫자만 봐도 7배 정도 차이가 납니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d7at5h/btq0TutJ9YX/sYQGaqjsBwxs4Jrr1rm23K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d7at5h/btq0TutJ9YX/sYQGaqjsBwxs4Jrr1rm23K/img.png&quot; data-alt=&quot;마풀허 풀 해시&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d7at5h/btq0TutJ9YX/sYQGaqjsBwxs4Jrr1rm23K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd7at5h%2Fbtq0TutJ9YX%2FsYQGaqjsBwxs4Jrr1rm23K%2Fimg.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;마풀허 풀 해시&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;이더마인.png&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;139&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJlVCd/btq0Twd2f8X/JdK2becHrwMBF6Xh4ONyd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJlVCd/btq0Twd2f8X/JdK2becHrwMBF6Xh4ONyd0/img.png&quot; data-alt=&quot;이더마인 풀 해시&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJlVCd/btq0Twd2f8X/JdK2becHrwMBF6Xh4ONyd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJlVCd%2Fbtq0Twd2f8X%2FJdK2becHrwMBF6Xh4ONyd0%2Fimg.png&quot; data-filename=&quot;이더마인.png&quot; data-origin-width=&quot;1027&quot; data-origin-height=&quot;139&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이더마인 풀 해시&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;그 외 주의할 점&lt;/h2&gt;
&lt;p&gt;결국 중요한 건 채굴이 돈이 되냐는 것입니다.&amp;nbsp; 이게 돈이 되려면 장비값은 저렴할 수록, 이더 값은 오를수록. 그리고 전기는 적게 먹어야 될 것입니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 중 전기요금은 우리나라에선 누진제가 있기에 사용량이 많을 수록 요금이 급격히 올라갈 것입니다. 그래서 집에서 돌려보는 것은 호기심 삼아? 아니면 테스트삼아 간단히 해볼 수 밖에 없습니다.&lt;/p&gt;
&lt;p&gt;가정용 외의 전기 사용에 관한한은 각자만의 노하우를 발휘해야 할 부문이며 체감상 허용 요금도 각자가 다른 부분이라 생각합니다.&lt;/p&gt;
&lt;p&gt;따라서 전기 사용료에 대한 고민을 충분히 해보신 후 마이닝을 해보시길 바랍니다.&lt;/p&gt;</description>
      <category>IT</category>
      <category>비트코인</category>
      <category>암호화폐</category>
      <category>이더리움</category>
      <category>채굴</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/272</guid>
      <comments>https://rudalson.tistory.com/entry/%EC%9D%B4%EB%8D%94%EB%A6%AC%EC%9B%80-%EC%B1%84%EA%B5%B4%ED%95%98%EA%B8%B0-Mining-Pool-Hub-%EB%A7%88%ED%92%80%ED%97%88#entry272comment</comments>
      <pubDate>Mon, 22 Mar 2021 19:14:12 +0900</pubDate>
    </item>
    <item>
      <title>exiftool 을 사용하여 이미지 혹은 동영상 메타정보 수정하기</title>
      <link>https://rudalson.tistory.com/entry/%EC%9D%B4%EB%AF%B8%EC%A7%80-%ED%98%B9%EC%9D%80-%EB%8F%99%EC%98%81%EC%83%81-%ED%8C%8C%EC%9D%BC%EC%97%90-exiftool%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-%EB%A9%94%ED%83%80%EC%A0%95%EB%B3%B4-%EC%88%98%EC%A0%95%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;폰으로 사진을 찍으면 GPS 위치 정보를 기록할 수 있지만 가끔씩 그것을 놓칠때가 있습니다. GPS 수신이 힘든 지하나 장소인 경우도 있지만 정상적인 곳에서 기록이 남아있지 않을 때가 있습니다. 체감상 아이폰이 비교적 괜찮은 편이었고 삼성 갤럭시도 2~3년 전부터는 좋아진거 같습니다. (나에겐 갤럭시S5에서 GPS를 놓친 사진이 꽤 있습니다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;LG는 V30 모델을 사용중인데 가끔씩 누락됩니다. 넥서스는 5, 5X를 사용해봤는데 괜찮았던 것 같습니다.(넥서스는 기억이 살짝 가물가물하네요) 현재는 구하기 힘든 팬텍 모델로 찍은 사진에서도 종종 놓치는 편이었습니다. 현재는 V50을 사용중인데 이건 아직 충분히 체감하지 못했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이건 뭐 그냥 개인의 체감일 뿐이지만 해마다 3000~4000 장 정도의 사진을 관리하고 또 메타정보를 활용할 때는 아쉬운 부분이기도 한데 결국 GPS tagging이 되지 않은 사진은 별도 작업처리를 해줘야 했습니다. 전 메타정보가 필요했거든요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GPS 정보를 이미지에 집어넣기 위해 &lt;code&gt;Python&lt;/code&gt;이랑 &lt;code&gt;Go&lt;/code&gt;둘 가지고 각각 관련 라이브러리를 구해서 작성하려는데 둘 다 만족스럽지 못했습니다. &lt;code&gt;exif&lt;/code&gt;에서도 카메라, 제조사, 시기, 버전 등등 의 조건으로 타입이 다양했고 &lt;code&gt;GPS info version&lt;/code&gt;도 조금씩 차이가 있는데 이를 다 수용해서 편하게 사용하려면 이 분야를 꽤 많이 알아야 될 것 같았다. 그렇게 까지는 하고싶지 않아서 그냥 다른 대안을 찾다가 &lt;a href=&quot;https://www.sno.phy.queensu.ca/~phil/exiftool/&quot;&gt;ExifTool 11.63&lt;/a&gt;을 사용해보았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 카톡으로 원본이 아닌 사진을 받은 경우도 꽤 있는데 여기에 촬영시각 같은 정보도 넣어줄 수 있습니다.&lt;/p&gt;
&lt;h1 id=&quot;exiftool&quot;&gt;ExifTool&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;help를 살펴보는데 내용이 너무 많아서 눈에 들어오지 않네요. 그래서 사용했던 것 몇개만 기록에 남겨봅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 exif 정보를 보기 위해서는 &lt;code&gt;-l&lt;/code&gt; 옵션과 파일명을 지정하면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1616056226230&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exiftool -l &quot;2015-12-07 20.42.30.jpg&quot;
ExifTool Version Number
      11.63
File Name
      2015-12-07 20.42.30.jpg
Directory
      .
File Size
      4.8 MB
...
Make
      SAMSUNG
Camera Model Name
      SM-G906K
...&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;꽤나 많은 정보들이 담겨 있으며 GPS 관련 정보도 찾아 볼 수 있다. 이미지 파일이 아닌 동영상 파일에도 gps 위치정보를 담을 수 있습니다. 여기서 gps 관련 정보만 살펴 볼 수 있습니다.&lt;/p&gt;
&lt;h2 id=&quot;gps&quot; data-ke-size=&quot;size26&quot;&gt;GPS&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나에게 필요한 것은 &lt;code&gt;latitude(위도)&lt;/code&gt;, &lt;code&gt;longitude(경도)&lt;/code&gt; 값이었습니다. latitude, longitude 순으로 하는 것은 구글맵에서도 저 위치값 순서대로 나오기 때문입니다. 그리고 같이 알아야 할 것으로 기준선을 나타내는 ~ref 붙은 값들 입니다. 우리나라에서는 North, East 순으로 하면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1616056264854&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exiftool -filename -gpslatituderef -gpslatitude -gpslongituderef -gpslongitude -T -n ./ &amp;gt; out.txt&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;-T : Output in tabular format&lt;/li&gt;
&lt;li&gt;-n : No print conversion&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 구한 값을 토대로 gps 정보값을 입력하기 위해서는 아래처럼 해주면 됩니다. 정확한 값을 가져오기 힘든 경우라면 구급맵 같은 곳에서 확대해서 찍은 다음 직접 구해와도 됩니다. 가령 남산공원의 위치를 넣고 싶으면 아래그 림처럼 구급맵에서 위치를 찍고 거기서 나오는 gps 값을 구해오면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthContent&quot; data-filename=&quot;2019-08-27-gps-sample.png&quot; data-origin-width=&quot;474&quot; data-origin-height=&quot;511&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdK5Xq/btq0tXCmNvO/UYCJ2fRHJpAjRIAykNfLF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdK5Xq/btq0tXCmNvO/UYCJ2fRHJpAjRIAykNfLF1/img.png&quot; data-alt=&quot;위치를 찍으면 37.550987, 126.990905가 나옵니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdK5Xq/btq0tXCmNvO/UYCJ2fRHJpAjRIAykNfLF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdK5Xq%2Fbtq0tXCmNvO%2FUYCJ2fRHJpAjRIAykNfLF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;474&quot; height=&quot;511&quot; data-filename=&quot;2019-08-27-gps-sample.png&quot; data-origin-width=&quot;474&quot; data-origin-height=&quot;511&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;위치를 찍으면 37.550987, 126.990905가 나옵니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1616056379430&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exiftool -GPSLatitudeRef=N -GPSLatitude=37.550987 -GPSLongitudeRef=E -GPSLongitude=126.990905 &quot;2015-12-07 20.42.30.jpg&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 한개의 &lt;code&gt;2015-12-07 20.42.30.jpg&lt;/code&gt; 파일에만 적용하였지만 와일드문자를 사용하면 여러 파일을 한번에 수정할 수 있습니다.&lt;/p&gt;
&lt;h2 id=&quot;촬영시각&quot; data-ke-size=&quot;size26&quot;&gt;촬영시각&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적으로 &lt;code&gt;dateTimeOriginal&lt;/code&gt; 옵션값으로 date, time 순으로 문자열을 입력하면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1616056898613&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exiftool -xmp:dateTimeOriginal=&quot;2015:11:05 18:38:54&quot; *.jpg&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 방식은 입력한 값으로 바로 정해지지만 어떤 기준에 + 몇시간 이런식으로 상대적인 시간을 넣는 것도 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 나같은 경우는 파일명을 촬영시간으로 관리하는 편입니다. 하지만 메타정보가 날아간 경우는 짐작한 시간으로 파일명을 만들었다. 이렇게 파일명에 시간정보가 있다면 이것을 바로 촬영시각 정보로 입력해 넣을 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1616056982937&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exiftool &quot;-alldates&amp;lt;filename&quot; 2015-08-13*&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 2015-08-13일로 시작하는 파일들은 자신의 파일명에 &lt;code&gt;date&lt;/code&gt;, &lt;code&gt;time&lt;/code&gt; 값으로 촬영시각에 바로 넣어버립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ExifTool은 워낙 기능이 많고 지원하는 것 또한 부족함 없다. 개발자가 지속적으로 관리하고 수정사항을 누적시키고 있기 때문에 독보적인 위치에 있지 않을까 싶네요. 감사히 잘 쓰겠습니다.&lt;/p&gt;
&lt;h2 id=&quot;파일명-변경&quot; data-ke-size=&quot;size26&quot;&gt;파일명 변경&lt;/h2&gt;
&lt;h4 id=&quot;이미지 파일&quot; data-ke-size=&quot;size16&quot;&gt;이미지 파일&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일명을 촬영시각순으로 원하는 포맷대로 변경하려면&lt;/p&gt;
&lt;pre id=&quot;code_1616057047954&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exiftool  &quot;-FileName&amp;lt;$EXIF:DateTimeOriginal&quot; -d &quot;%Y-%m-%d %H.%M.%S%%-c.%%le&quot; .&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이렇게 DateTimeOriginal 기준으로 하면 TimeZone 문제가 있습니다. 저장된 시간이 한국시간대면 상관없지만 그것이 아닌 경우 이걸로 파일명을 하기엔 문제가 있습니다. TimeZone과 촬영시간 등을 확인하기 위해서는 아래처럼 확인해 볼 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1616057047954&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exiftool -time:all -g1 -a -s &quot;2022-08-19 05.27.18.jpg&quot;
---- System ----
FileModifyDate                  : 2022:10:10 17:18:15+09:00
FileAccessDate                  : 2022:10:10 17:18:15+09:00
FileCreateDate                  : 2022:10:10 16:42:15+09:00
---- IFD0 ----
ModifyDate                      : 2017:12:22 05:27:18
---- ExifIFD ----
DateTimeOriginal                : 2022:08:19 05:27:18
CreateDate                      : 2022:08:19 05:27:18
OffsetTime                      : +09:00
OffsetTimeOriginal              : +09:00
OffsetTimeDigitized             : +09:00
SubSecTime                      : 23
SubSecTimeOriginal              : 23
SubSecTimeDigitized             : 23
---- XMP-exif ----
DateTimeOriginal                : 2022:08:19 11:27:18
---- XMP-xmp ----
CreateDate                      : 2022:08:19 05:27:18.230
---- Composite ----
SubSecCreateDate                : 2022:08:19 05:27:18.23+09:00
SubSecDateTimeOriginal          : 2022:08:19 05:27:18.23+09:00
SubSecModifyDate                : 2017:12:22 05:27:18.23+09:00&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size16&quot;&gt;동영상 파일&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동영상 파일은 EXIF가 아니기 때문에 아래처럼 생성시간 기준으로 해주면 될 것 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1616057069025&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exiftool --ext jpg -overwrite_original &quot;-FileName&amp;lt;FileModifyDate&quot; -d &quot;%Y-%m-%d %H.%M.%S%%-c.%%le&quot; .&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;&amp;ndash;ext&lt;/code&gt;는 exclusive, &lt;code&gt;-inc&lt;/code&gt;는 inclusive 속성을 의미합니다. 그래서 동영상 파일에게만 적용하고 jpg 확장자 파일은 제외하고 싶은 경우 위처럼 해주면 됩니다.&lt;/p&gt;</description>
      <category>Development/기타</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/271</guid>
      <comments>https://rudalson.tistory.com/entry/%EC%9D%B4%EB%AF%B8%EC%A7%80-%ED%98%B9%EC%9D%80-%EB%8F%99%EC%98%81%EC%83%81-%ED%8C%8C%EC%9D%BC%EC%97%90-exiftool%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-%EB%A9%94%ED%83%80%EC%A0%95%EB%B3%B4-%EC%88%98%EC%A0%95%ED%95%98%EA%B8%B0#entry271comment</comments>
      <pubDate>Thu, 18 Mar 2021 17:45:32 +0900</pubDate>
    </item>
    <item>
      <title>주석의 재미 있는 활용</title>
      <link>https://rudalson.tistory.com/entry/%EC%A3%BC%EC%84%9D%EC%9D%98-%EC%9E%AC%EB%AF%B8-%EC%9E%88%EB%8A%94-%ED%99%9C%EC%9A%A9</link>
      <description>&lt;p&gt;개인적으로 근래에는 코드상에서 많이 사용하지는 않는 것 중 하나가 애매한 선택을 코드상에 남겨두던 것이 있었던 것 같다. 이유로는&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A/B 테스트처럼 이 코드를 할지 저 코드를 할지 분명히 선택 못한 경우&lt;/li&gt;
&lt;li&gt;같이 작업하게 될 다른 개발자에게 뭔가를 전달하기 위한 경우&lt;/li&gt;
&lt;li&gt;코드의 변경 이력을 한눈에 보이게 하기 위한 경우&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;등등 몇몇 목적으로 작성했던 것 같다. 요즘은 IDE의 발전, Git의 history 참조가 편해지면서 기술적으로 과거 이력을 참고하기에 편리한 화면을 제공해주어 가급적 이런 식으로 코드를 늘리지 않으려고 하기는 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1615197629976&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#if 1
	printf(&quot;1\n&quot;);
#else
	printf(&quot;2\n&quot;);
#endif&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;C/C++&lt;/code&gt;에서는 주로 &lt;code&gt;#if ~ #else ~ #endif&lt;/code&gt; 로 많이 사용했었는데 다른 언어에서는 이렇게 사용할 수가 없다. 스크립트 언어처럼 전처리 매크로 같은 것이 없는 경우도 있지만 java 같은 컴파일 언어에서도 없다.&lt;/p&gt;
&lt;p&gt;하지만 주석으로도 비슷하게 할 수 있다는 것을 알았다.&lt;/p&gt;
&lt;pre id=&quot;code_1615197677099&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//*
	printf(&quot;1\n&quot;);
/*/
	printf(&quot;2\n&quot;);
//*/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;첫번째 &amp;ldquo;/&amp;rdquo;를 넣고 안 넣고 간에 첫 번째 부분 혹은 두 번째 부분의 활성화된 코드가 바뀐다. 왜 그런지는 찬찬히 생각해보면 알 수 있다.&lt;/p&gt;
&lt;p&gt;PHP를 공부하다 알게 된 것이지만 참 센스가 뛰어나신 분들이 많으신것 같다.&lt;/p&gt;</description>
      <category>Development</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/270</guid>
      <comments>https://rudalson.tistory.com/entry/%EC%A3%BC%EC%84%9D%EC%9D%98-%EC%9E%AC%EB%AF%B8-%EC%9E%88%EB%8A%94-%ED%99%9C%EC%9A%A9#entry270comment</comments>
      <pubDate>Mon, 8 Mar 2021 19:02:41 +0900</pubDate>
    </item>
    <item>
      <title>FUA (Force Unit Access) 관련</title>
      <link>https://rudalson.tistory.com/entry/FUA-Force-Unit-Access-%EA%B4%80%EB%A0%A8</link>
      <description>&lt;h2&gt;&lt;a href=&quot;https://mantech.jira.com/wiki/pages/viewpage.action?pageId=146145410#FUA(ForceUnitAccess)%EA%B4%80%EB%A0%A8-WhatisForcedUnitAccess(FUA)?&quot; data-rich-text-format-boundary=&quot;true&quot;&gt;What is Forced Unit Access (FUA)?&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;FUA&lt;/code&gt;란 write 명령을 직접 스토리지에 사용하는 것을 말하며 디스크 캐시 사용 여부와는 관계 없습니다.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SCSI T10&lt;/code&gt;스펙에서 처음 나왔으며,(WRITE DMA FUA EXT 3Dh, WRITE DMA QUEUED FUA EXT 3Eh, WRITE MULTIPLE FUA EXT CEh) 와 같은 SCSI 명령어들이 있습니다.&lt;/p&gt;
&lt;p&gt;FUA는 디스크 미디어에 직접 쓰기가 마무리 되어야 하므로 flush 같은 명령이 떨어지기 전에 파워문제가 발생해도 data에 consistent를 보장할 수 있습니다.&lt;/p&gt;
&lt;p&gt;SCSI에서 나온 스펙이지만 이 후에 &lt;code&gt;ATA T7(2002)&lt;/code&gt;스펙에도 포함 되었습니다. (&lt;a href=&quot;http://en.wikipedia.org/wiki/Disk_buffer#Force_Unit_Access_.28FUA.29&quot;&gt;이상 위키내용 발췌&lt;/a&gt;)&lt;/p&gt;
&lt;h3&gt;Windows&lt;/h3&gt;
&lt;p&gt;윈도우즈에서는&amp;nbsp;&lt;a href=&quot;http://deploying%20transactional%20ntfs/&quot;&gt;Transactional NTFS&lt;/a&gt;(이하 TxF)에서 &lt;code&gt;SCSI&lt;/code&gt;, &lt;code&gt;Fiber Channel&lt;/code&gt; 장비의 경우는 지원합니다. 그 외 (ATA/SATA/USB) 에선 지원이 안되기에 power failure 문제에 위험성을 가지고 있기에 캐시 disable 같은 다른 대안을 사용해야 합니다.&lt;/p&gt;
&lt;h4&gt;Disk Cache Disabling&lt;/h4&gt;
&lt;p&gt;디스크 장치에 대한 cache disable을 하기 위해서는 &lt;code&gt;DeviceIOControl&lt;/code&gt;의 아래 code를 사용하여 정할 수 있습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://msdn.microsoft.com/en-us/library/windows/desktop/aa365165(v=vs.85).aspx&quot;&gt;IOCTL_DISK_GET_CACHE_INFORMATION&lt;/a&gt; / &lt;a href=&quot;https://msdn.microsoft.com/en-us/library/windows/desktop/aa365187(v=vs.85).aspx&quot;&gt;IOCTL_DISK_SET_CACHE_INFORMATION&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://msdn.microsoft.com/en-us/library/windows/hardware/ff560590(v=vs.85).aspx&quot;&gt;IOCTL_STORAGE_QUERY_PROPERTY&lt;/a&gt;(Vista 이후)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;MSDN&lt;/code&gt;의 &lt;a href=&quot;https://msdn.microsoft.com/en-us/library/windows/hardware/ff563944(v=vs.85).aspx&quot;&gt;Querying for the Write Cache Property&lt;/a&gt;에서 살펴볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ATA&lt;/code&gt;스펙에 FUA가 포함되었지만 그것이 제대로 구현되었는지 gurantee 되지 않아서 Windows 에서는 채용하지 않았으며 SATA 같은 디스크에서 지원하지 않습니다.&lt;/p&gt;
&lt;p&gt;NTFS에서는 SCSI 경우 meta data의 integrity를 지켜주기 위해 FUA가 사용됩니다. 그 외의 데이터 영역이 FUA 사용에 대한 것은 기능이 support 된다고 하는데 어떻게 사용하는지는 확인 할 수 없습니다.&lt;/p&gt;
&lt;p&gt;Transactional 이란 용어에서 meta를 의식한 표현으로 짐작되며 meta는 확실히 FUA를 쓴다고는 하는데 data 부분에 대한 write는 찾지 못했습니다.&lt;/p&gt;
&lt;p&gt;그리고 MSDN에서는 &lt;code&gt;TxF&lt;/code&gt;를 대체할 수 있는 방법을 찾으라고 강력하게 권장하는데 TxF의 API들이 강력하지만 복잡해서 deprecating시키는 것을 고려중이기에 다른 시나리오를 권고하고 있습니다. (&lt;a href=&quot;https://msdn.microsoft.com/en-us/library/windows/desktop/hh802690(v=vs.85).aspx&quot;&gt;Alternatives to using Transactional NTFS&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;TxF에서 FUA 사용한다는데 TxF를 안쓰면??? 거기까진 언급되지 않아서 알수 없습니다.&lt;/p&gt;
&lt;p&gt;하지만, Windows 8, Windows Server 2012 부터는 metadata에 대한 FUA를 사용하지 않고 대신 캐시를 사용하여 바로 flush 시키는 방식으로 변경하였다고 합니다.&lt;/p&gt;
&lt;p&gt;그 내용은&amp;nbsp;&lt;a href=&quot;http://blog.workinghardinit.work/tag/forced-unit-access/&quot;&gt;Windows Server 2012 64TB NTFS Volumes and the Flush Command&lt;/a&gt; 와 &lt;a href=&quot;http://www.snia.org/sites/default/files2/SDC2011/presentations/monday/NealChristiansen_Win8FileSystemPerformance.pdf&quot;&gt;Windows Server 2012 64TB NTFS Volumes and the Flush Command&lt;/a&gt; 문서에서 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;FUA 구현을 직접적으로 하기 위해서는 User layer에서는 &lt;code&gt;FILE_FLAG_NO_BUFFERING&lt;/code&gt;와 &lt;code&gt;FILE_FLAG_WRITE_THROUGH&lt;/code&gt; 플래그가 있는 write를 구현하면 됩니다.&lt;/p&gt;
&lt;p&gt;커널 드라이버에서는 file system, volume 단에서는 &lt;code&gt;IRP_MJ_WRITE&lt;/code&gt;의 IRP Stack Location의 Flags에서 &lt;code&gt;SL_WRITE_THROUGH | SL_FT_SEQUENTIAL_WRITE&lt;/code&gt; 을 추가시켜주면 됩니다.&lt;/p&gt;
&lt;p&gt;SL_WRITE_THROUGH 은 밑의 linux에서 request io의 &lt;code&gt;REQ_FUA&lt;/code&gt;와 같은 거라고 보여집니다.&lt;/p&gt;
&lt;p&gt;SL_FT_SEQUENTIAL_WRITE은 FT에서 사용하는 값 같은데 정확히 무엇인지는 모르겠다(&lt;a href=&quot;http://www.osronline.com/article.cfm?article=87&quot;&gt;OSR 참조&lt;/a&gt;). 다만, 2개를 같이 묶어서 사용하는 것 같습니다.&lt;/p&gt;
&lt;h3&gt;Linux&lt;/h3&gt;
&lt;p&gt;리눅스에서는 이런 FUA가 block layer lever에서 지원 됩니다.&lt;/p&gt;
&lt;p&gt;SATA 같은 경우는 2007년 즈음 Linux가 &lt;a href=&quot;http://en.wikipedia.org/wiki/Native_Command_Queuing&quot;&gt;NCQ&lt;/a&gt;를 지원했고 이런 &lt;code&gt;SATA/NCQ&lt;/code&gt; 에 대한 FUA 기능은 2012까지는 안되었습니다.&lt;/p&gt;
&lt;p&gt;리눅스 커널 코드에서는&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;#define REQ_FUA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1ULL &amp;lt;&amp;lt; __REQ_FUA)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;file system 단에서는 bio의 r/w flag에 매스킹 시켜 FUA를 요청할 수 있으며 실 구현은 block device 밑단에서 FUA 관련 기능이 구현되어 있습니다.&lt;/p&gt;
&lt;p&gt;물론 이것은 FUA가 지원되는 device에 한하며 그렇지 못한 경우는 Linux 3.14 kernel document 중 writeback_cache_control.txt 를 보면 마지막에&lt;/p&gt;
&lt;blockquote&gt;If the FUA bit is not natively supported the block layer turns it into an empty REQ_FLUSH request after the actual write.&lt;/blockquote&gt;
&lt;p&gt;write이후 FLUSH를 연이어 요청하여 비슷한 동작을 하게끔 한 것 같습니다. 물론 거기에 대한 payload를 지불할 만하면....&lt;/p&gt;
&lt;h2&gt;Reference&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Disk_buffer#Force_Unit_Access_.28FUA.29&quot;&gt;Wikipedia : Disk buffer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Native_Command_Queuing&quot;&gt;Wikipedia :&amp;nbsp;Native Command Queuing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://msdn.microsoft.com/en-us/library/windows/hardware/ff563944(v=vs.85).aspx&quot;&gt;MSDN :&amp;nbsp;Querying for the Write Cache Property&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://msdn.microsoft.com/en-us/library/windows/desktop/dd979523(v=vs.85).aspx&quot;&gt;MSDN :&amp;nbsp;Deploying Transactional NTFS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://msdn.microsoft.com/en-us/library/windows/desktop/hh802690(v=vs.85).aspx&quot;&gt;MSDN :&amp;nbsp;Alternatives to using Transactional NTFS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://msdn.microsoft.com/en-us/library/windows/hardware/ff551353(v=vs.85).aspx&quot;&gt;MSDN :&amp;nbsp;Blocking Direct Write Operations to Volumes and Disks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.msdn.com/b/dhawan/archive/2009/10/05/enable-or-disable-enable-write-caching-on-disk-behavior-on-disk.aspx&quot;&gt;MSDN Blogs :&amp;nbsp;Enable or Disable &amp;ldquo;Enable write caching on disk&amp;rdquo; behavior on disk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://support.microsoft.com/en-us/kb/99794&quot;&gt;Microsoft Support :&amp;nbsp;INFO: FILE_FLAG_WRITE_THROUGH and FILE_FLAG_NO_BUFFERING&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.osronline.com/article.cfm?article=87&quot;&gt;OSR Online :&amp;nbsp;Rolling Your Own - Building IRPs to Perform I/O&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.workinghardinit.work/tag/forced-unit-access/&quot;&gt;Windows Server 2012 64TB NTFS Volumes and the Flush Command&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://winntfs.com/2012/11/29/windows-write-caching-part-2-an-overview-for-application-developers/&quot;&gt;Windows Write Caching &amp;ndash; Part 2 An overview for Application Developers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://studyfoss.egloos.com/5576850&quot;&gt;F/OSS study : [Linux] 블록 장치 I/O 동작 방식 (2)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://utcc.utoronto.ca/~cks/space/blog/tech/ModernDiskWriteCaches&quot;&gt;Modern disk write caches and how they get dealt with (a quick overview)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://disruptivesql.wordpress.com/2012/05/08/sata-and-write-through/&quot;&gt;SATA and write-through&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://perspectives.mvdirona.com/2008/04/disks-lies-and-damn-disks/&quot;&gt;Disks, Lies, and Damn Disks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.snia.org/sites/default/files2/SDC2011/presentations/monday/NealChristiansen_Win8FileSystemPerformance.pdf&quot;&gt;pdf : Windows 8 File System Performance and Reliability Enhancements in NTFS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Linux 3.14 document : writeback_cache_control.txt&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Development/System</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/269</guid>
      <comments>https://rudalson.tistory.com/entry/FUA-Force-Unit-Access-%EA%B4%80%EB%A0%A8#entry269comment</comments>
      <pubDate>Tue, 2 Feb 2021 12:24:24 +0900</pubDate>
    </item>
    <item>
      <title>InterlockedXXXXX() 함수의 인자는 왜 volatile 일까?</title>
      <link>https://rudalson.tistory.com/entry/InterlockedXXXXX-%ED%95%A8%EC%88%98%EC%9D%98-%EC%9D%B8%EC%9E%90%EB%8A%94-%EC%99%9C-volatile-%EC%9D%BC%EA%B9%8C</link>
      <description>&lt;p&gt;&lt;code&gt;volatile&lt;/code&gt; 키워드가 어떤 동작을 하는 것인지 부터 살펴보고 &lt;code&gt;Interlocked&lt;/code&gt;계열 (Linux에서는 &lt;code&gt;atomic&lt;/code&gt; 계열)과 연관성을 살펴보겠습니다.&lt;/p&gt;
&lt;h2 id=&quot;volatile-이란&quot;&gt;volatile 이란?&lt;/h2&gt;
&lt;p&gt;우선 서광열님의 &lt;a href=&quot;http://skyul.tistory.com/337&quot;&gt;C/C++ volatile 키워드&lt;/a&gt;을 보면 volatile에는 크게 2가지 기능이 있습니다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;가시성(visibility)&lt;/li&gt;
&lt;li&gt;재배치 방지(barrirer reordering)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;visibility&quot;&gt;Visibility&lt;/h3&gt;
&lt;p&gt;레지스터 내용이 아닌 메모리에서 값을 매번 새로 읽어옵니다. 그렇기 때문에 멀티스레드 환경에서 다른 스레드에서도 이런 공유변수 값을 메모리에서 직접 본다는 것을 의미합니다.&lt;/p&gt;
&lt;p&gt;이것을 이해하면서 volatile란 이름은 왜 휘발성일까라는 고민이 어느 정도 해결되었습니다. 매번 보고 나면 휙 날아가버린다가 아닐까? MMIO의 예제도 쉽게 이해되지만 개인적으로는 멀티스레드 환경을 다뤄야 하는데 변수의 값을 참조하려고 하면 각각의 스레드 레지스터 값이 아닌 메모리의 내용을 직접 봐야 합니다. 그렇게 read를 하고 나더라도 바로 다음번에는 같은 값이 유지되리라는 보장은 없습니다. 읽을 때는 정확하지만 이후엔 샤샤삭~ 이런 느낌???&lt;/p&gt;
&lt;h3 id=&quot;barrier-reordering&quot;&gt;Barrier reordering&lt;/h3&gt;
&lt;p&gt;메모리에 대한 접근 중 컴파일러 최적화 기능으로 인해 재배치를 막는 것입니다.&lt;/p&gt;
&lt;p&gt;이 부분은 &lt;code&gt;MSVC&lt;/code&gt; 계열에서 지원하는 기능입니다. &lt;code&gt;gcc&lt;/code&gt;같은 다른 compiler에서는 이런 처리가 있지 않은것 같습니다. write와 read 에 대한 각각의 barrier 를 지원하며 둘다도 지원합니다.&lt;/p&gt;
&lt;p&gt;이 barrier기능 제공 때문에 Interlocked계열 함수 본연의 기능과 겹침으로 인해 많은 혼란이 왔었습니다.&lt;/p&gt;
&lt;p&gt;barrier에 대해서는 김민장님의 &lt;a href=&quot;http://egloos.zum.com/minjang/v/2274079&quot;&gt;C/C++ volatile 키워드&lt;/a&gt;의 글을 보면 잘 설명 해줍니다. 그리고 뒤이어 &lt;a href=&quot;http://minjang.egloos.com/2370662&quot;&gt;C/C++ volatile에 대한 오해&lt;/a&gt;도 같이 봐야합니다. lock prefix에서 결국은 강제적으로 기다리는 부분이 있고 그것이 바로 &lt;code&gt;barrier&lt;/code&gt;를 의미합니다. 김민장님의 글을 보면 결국 intel계열 (x86_64) 에서는 gcc도 lock prefix를 사용할 것 같은데 그렇다면 꼭 MSVC 만의 문제는 아닐것도 같습니다.&lt;/p&gt;
&lt;p&gt;여튼 난 현재 MSVS에 intel계열이니깐 뭐 다 필요하다 치면..&lt;/p&gt;
&lt;p&gt;저 두글만 종합해서 봐도 이해에 큰 도움이 되지만 결론은 volatile 만으로는 멀티스레드환경에서의 동기화가 보장되지 않는다 입니다. volatile은 동기화 요소가 아니기 때문입니다.&lt;/p&gt;
&lt;p&gt;이 외에도 volatile 관련 참고한 글로는&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://lacti.me/2011/08/02/volatile-interlocked-operation/&quot;&gt;volatile과 interlocked operation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://kldp.org/node/104910&quot;&gt;volatile과 최적화 장벽의 비교 실험&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이 2가지 기능을 토대로 하지만 volaile의 기능 범위는 컴파일러마다, 아키텍쳐마다, 시대별 마다 조금씩 달라져 가는 것 같다. 그만큼 C/C++에서도 불분명하게 정의되어 있는 면이 강해서이기도 한것 같다.&lt;/p&gt;
&lt;h2 id=&quot;interlocked-에서의-volatile&quot;&gt;Interlocked 에서의 volatile&lt;/h2&gt;
&lt;p&gt;LONG InterlockedDecrement( _Inout_ LONG volatile *Addend );&lt;/p&gt;
&lt;pre id=&quot;code_1611558327788&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;LONG InterlockedDecrement(
    _Inout_ LONG volatile *Addend
);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Interlocked계열 함수중 &lt;code&gt;MSDN&lt;/code&gt;에 나와있는 정의이다. 처음 궁금했던 인자의 volatile 여부가 필요한 이유는 1번 &lt;code&gt;Visibility&lt;/code&gt;와 관련이 있다. 컴파일러 최적화를 막는 것이다. 2번째 기능은 MSVC 계열에서 제공된 것이기도 하지만 Interlocked 본연의 barrier 가 제공되는 것이고&lt;/p&gt;
&lt;h2 id=&quot;그-외-참조&quot;&gt;References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.kernel.org/doc/Documentation/volatile-considered-harmful.txt&quot;&gt;Why the &amp;ldquo;volatile&amp;rdquo; type class should not be used&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://preshing.com/20120625/memory-ordering-at-compile-time/&quot;&gt;Memory Ordering at Compile Time&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://msdn.microsoft.com/en-us/library/12a04hfd%28v=vs.120%29.aspx?f=255&amp;amp;MSPPError=-2147217396&quot;&gt;volatile (C++)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://msdn.microsoft.com/en-us/library/ms686355.aspx&quot;&gt;Synchronization and Multiprocessor Issues&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Development/System</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/268</guid>
      <comments>https://rudalson.tistory.com/entry/InterlockedXXXXX-%ED%95%A8%EC%88%98%EC%9D%98-%EC%9D%B8%EC%9E%90%EB%8A%94-%EC%99%9C-volatile-%EC%9D%BC%EA%B9%8C#entry268comment</comments>
      <pubDate>Mon, 25 Jan 2021 16:06:41 +0900</pubDate>
    </item>
    <item>
      <title>윈도우즈 커널 드라이버에서 EventViewer를 위한 로그 작성</title>
      <link>https://rudalson.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B0%EC%A6%88-%EC%BB%A4%EB%84%90-%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84%EC%97%90%EC%84%9C-EventViewer%EB%A5%BC-%EC%9C%84%ED%95%9C-%EB%A1%9C%EA%B7%B8-%EC%9E%91%EC%84%B1</link>
      <description>&lt;blockquote&gt;
&lt;p&gt;2014.11.18 다른곳에서 작성한 글을 가져왔습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;커널 드라이버에서&amp;nbsp;&lt;a href=&quot;http://technet.microsoft.com/en-us/library/cc766042.aspx&quot;&gt;EventViewer&lt;/a&gt;에 Event Log를 생성하기 위해서는&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;구현부&lt;/li&gt;
&lt;li&gt;Message 리소스 작성&lt;/li&gt;
&lt;li&gt;시스템에 리소스 path 작성&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이렇게 3부분을 살펴 보아야 합니다.&lt;/p&gt;
&lt;h2 id=&quot;system-event-log-작성을-위한-코드-작성&quot;&gt;System Event Log 작성을 위한 코드 작성&lt;/h2&gt;
&lt;p&gt;아래의 function과 data structure를 사용합니다.&lt;/p&gt;
&lt;h3 id=&quot;function&quot;&gt;Function&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/hardware/ff550527(v=vs.85).aspx&quot;&gt;IoWriteErrorLogEntry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/hardware/ff548245(v=vs.85).aspx&quot;&gt;IoAllocateErrorLogEntry&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;data-structure&quot;&gt;Data Structure&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/hardware/ff550571(v=vs.85).aspx&quot;&gt;IO_ERROR_LOG_PACKET&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;IoAllocateErrorLogEntry()으로 IO_ERROR_LOG_PACKET 타입의 메모리를 할당받은 후 적절한 값을 assign 후 IoWriteErrorLogEntry()으로 log를 작성하면 됩니다. 개념적으로는 IoFreeErrorLogEntry()이 필요하지만 드라이버에서 이를 직접 호출할 필요는 없습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;WDM_eventviewer_IO_ERROR_LOG_PACKET.png&quot; data-origin-width=&quot;373&quot; data-origin-height=&quot;61&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAaz8g/btqTrS3SWUE/P0RfZEN3juaeI0rpwRugL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAaz8g/btqTrS3SWUE/P0RfZEN3juaeI0rpwRugL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAaz8g/btqTrS3SWUE/P0RfZEN3juaeI0rpwRugL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAaz8g%2FbtqTrS3SWUE%2FP0RfZEN3juaeI0rpwRugL1%2Fimg.png&quot; data-filename=&quot;WDM_eventviewer_IO_ERROR_LOG_PACKET.png&quot; data-origin-width=&quot;373&quot; data-origin-height=&quot;61&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;IO_ERROR_LOG_PACKET 구조체 값 뒷부분에 필요한 argument들을 연속적으로 넣어주면 됩니다. 이 구조체 값에는 몇몇 주요한 변수들이 있는데 이는 MSDN 문서를 참고합니다.&lt;/p&gt;
&lt;p&gt;과정은 단순하며 2가지 정도 주의할 점이 있습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;인자로 사용될 메모리 사이즈&lt;/li&gt;
&lt;li&gt;2byte 문자열을 다룰 경우 IRQL 제한&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;인자의-사이즈-제한&quot;&gt;인자의 사이즈 제한&lt;/h3&gt;
&lt;p&gt;IO_ERROR_LOG_PACKET 의 instance의 메모리 사이즈는 패킷 헤더 포함 size가 ERROR_LOG_MAXIMUM_SIZE를 넘지 못하며 헤더 패킷 size 48을 빼주면 52글자 정도 밖에는 쓸수 없습니다.&amp;nbsp;&lt;a href=&quot;http://www.osronline.com/showThread.cfm?link=46049&quot;&gt;IoWriteErrorLogEntry passes at most 52 characters?&lt;/a&gt;&amp;nbsp;따라서 mc 파일로 작성된 것 외에 argument로는 52 character 그러니까 대략 104byte 정도 더 추가할 수 있습니다.&lt;/p&gt;
&lt;h3 id=&quot;2byte-유니코드-사용으로-인한-irql-제한&quot;&gt;2byte 유니코드 사용으로 인한 IRQL 제한&lt;/h3&gt;
&lt;p&gt;1byte 문자열을 2byte 문자열로 변환할 때 라이브러리에서 제공해주는 일반적인 함수들은 유니코드 변환에 따른 테이블을 참조합니다. 이것으로 인해 IRQL 문제가 발생합니다. 참고로 변환에 사용해봤던 함수들은 &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/hardware/ff562820(v=vs.85).aspx&quot;&gt;RtlStringCbLength()&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://msdn.microsoft.com/en-us/windows/apps/ce3zzk1k(v=vs.94).aspx&quot;&gt;swprintf_s()&lt;/a&gt;&amp;nbsp;이며 모두 문제를 일으켰습니다.&amp;nbsp;&lt;a href=&quot;http://www.osronline.com/ShowThread.cfm?link=217420&quot;&gt;IRQL for RtlStringxxx functions&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&quot;mc파일-작성&quot;&gt;MC파일 작성&lt;/h2&gt;
&lt;p&gt;EventViewer에 남길 메시지를 별도의 text 리소스 파일로 작성해야 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1610612402241&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mvolmsg.mc
MessageID       = 5001
Severity        = Informational
SymbolicName    = MSG_DRIVER_LOAD
Language        = English
Driver is loading successfully.
.
MessageID       = 5002
Severity        = Error
SymbolicName    = MSG_NO_JOB
Language        = English
No Job on %2.
.
MessageID       = 5003
Severity        = Error
SymbolicName    = MSG_FIND_JOB_ERROR
Language        = English
cannot find same job on %2.
.

...&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;여기에 대한 좀더 자세한 내용은&amp;nbsp;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/hardware/ff543017(v=vs.85).aspx#ddk_creating_the_error_message_text_file_kg&quot;&gt;Creating the Error Message Text File&lt;/a&gt; 을 참조합니다.&lt;/p&gt;
&lt;h2 id=&quot;mcexe-compile&quot;&gt;MC.exe compile&lt;/h2&gt;
&lt;p&gt;MC.exe는 Visual Studio 설치 폴더 중 별도로 있는 util 이며 이를 찾으려면 Windows 버전에 맞는 곳의 bin 경로에서 찾으면 됩니다. (참고로 난 c:\Program Files (x86)\Windows Kits\8.1\bin\x64) mc 파일에 필요한 스트링 내용을 정리한 후 이를 message binary로 만드는 것은 아래의 명령어로 할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1610612465559&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mc xxxxmsg.mc&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이에 대한 자세한 내용은&amp;nbsp;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/hardware/ff543017(v=vs.85).aspx&quot;&gt;Defining Custom Error Types&lt;/a&gt;를 참고하면 됩니다. 이렇게 mc build를 하고 나면&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;xxxxmsg.rc&lt;/li&gt;
&lt;li&gt;xxxxmsg.h&lt;/li&gt;
&lt;li&gt;MSG00001.bin&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이렇게 3 파일이 생성되며 이를 모두 visual studio 프로젝트에 포함시켜 주면 됩니다.&lt;/p&gt;
&lt;h2 id=&quot;출력-메시지-path-지정&quot;&gt;출력 메시지 path 지정&lt;/h2&gt;
&lt;p&gt;드라이버에서 해야 할 작업을 모두 마쳤다면 마지막으로 레지스트리에 출력 메시지 binary의 path를 지정해 주는 일을 추가해 주어야 합니다. message binary의 위치가 지정되지 않았다면 아래처럼 실제 메시지 내용을 EventViewer에 보여주지 못합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;WDM_eventviewer_failed_eventvwr_msg.png&quot; data-origin-width=&quot;898&quot; data-origin-height=&quot;793&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkRm11/btqTrSv54mI/ylkcwGU46BKNFzFVyUw3fK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkRm11/btqTrSv54mI/ylkcwGU46BKNFzFVyUw3fK/img.png&quot; data-alt=&quot;WDM eventviewer failed_eventvwr 메세지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkRm11/btqTrSv54mI/ylkcwGU46BKNFzFVyUw3fK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkRm11%2FbtqTrSv54mI%2FylkcwGU46BKNFzFVyUw3fK%2Fimg.png&quot; data-filename=&quot;WDM_eventviewer_failed_eventvwr_msg.png&quot; data-origin-width=&quot;898&quot; data-origin-height=&quot;793&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;WDM eventviewer failed_eventvwr 메세지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;xxxx.sys 를 빌드하면서 메시지도 포함시켰다면 xxxx.sys의 경로를 레지스트리에 지정해 주어야 하는데 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\EventLog\System\DriverName 경로에 아래의 값을 추가합니다. (관련내용 :&amp;nbsp;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/hardware/ff560866(v=vs.85).aspx&quot;&gt;Registering as a Source of Error Messages&lt;/a&gt;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;EventMessageFile (REG_EXPAND_SZ)&lt;/li&gt;
&lt;li&gt;TypesSupported (REG_DWORD)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;WDM_eventvwr_msg_path_registry.png&quot; data-origin-width=&quot;816&quot; data-origin-height=&quot;378&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bd5M1T/btqTADRJfxf/NqtkwM5CIe7R7FW8EVV9F1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bd5M1T/btqTADRJfxf/NqtkwM5CIe7R7FW8EVV9F1/img.png&quot; data-alt=&quot;레지스트리내 eventvwr message 경로&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bd5M1T/btqTADRJfxf/NqtkwM5CIe7R7FW8EVV9F1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbd5M1T%2FbtqTADRJfxf%2FNqtkwM5CIe7R7FW8EVV9F1%2Fimg.png&quot; data-filename=&quot;WDM_eventvwr_msg_path_registry.png&quot; data-origin-width=&quot;816&quot; data-origin-height=&quot;378&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;레지스트리내 eventvwr message 경로&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span&gt;이렇게 설정 후 별도의 리붓 없이 EventViewer를 실행시키면&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;WDM_success_eventvwr_msg.png&quot; data-origin-width=&quot;898&quot; data-origin-height=&quot;793&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNYG3M/btqTtrrsxdv/7I2cGHo5jArwfXQfZdoGVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNYG3M/btqTtrrsxdv/7I2cGHo5jArwfXQfZdoGVk/img.png&quot; data-alt=&quot;성공한 경우의 eventvwr 메시지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNYG3M/btqTtrrsxdv/7I2cGHo5jArwfXQfZdoGVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNYG3M%2FbtqTtrrsxdv%2F7I2cGHo5jArwfXQfZdoGVk%2Fimg.png&quot; data-filename=&quot;WDM_success_eventvwr_msg.png&quot; data-origin-width=&quot;898&quot; data-origin-height=&quot;793&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;성공한 경우의 eventvwr 메시지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;이렇게 메시지가 정상적으로 보여집니다.&lt;/p&gt;
&lt;h2 id=&quot;reference&quot;&gt;Reference&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/hardware/ff566411(v=vs.85).aspx&quot;&gt;Writing to the System Event Log&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/hardware/ff560866(v=vs.85).aspx&quot;&gt;Registering as a Source of Error Messages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://rudalson.github.io/2014/11/18/WDM-Eventviewer-log/Using%20MC.exe,%20message%20resources%20and%20the%20NT%20event%20log%20in%20your%20own%20projects&quot;&gt;Using MC.exe, message resources and the NT event log in your own projects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://driverentry.com.br/en/blog/?p=324&quot;&gt;Try, Except, Finally and IoWriteErrorLogEntry (Part 1)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/aa385633(VS.85).aspx&quot;&gt;Message Compiler&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Development/기타</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/267</guid>
      <comments>https://rudalson.tistory.com/entry/%EC%9C%88%EB%8F%84%EC%9A%B0%EC%A6%88-%EC%BB%A4%EB%84%90-%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84%EC%97%90%EC%84%9C-EventViewer%EB%A5%BC-%EC%9C%84%ED%95%9C-%EB%A1%9C%EA%B7%B8-%EC%9E%91%EC%84%B1#entry267comment</comments>
      <pubDate>Thu, 14 Jan 2021 17:30:00 +0900</pubDate>
    </item>
    <item>
      <title>Short-Circuit Evaluation에 대해서</title>
      <link>https://rudalson.tistory.com/entry/Short-Circuit-Evaluation%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-1</link>
      <description>&lt;p&gt;&lt;code&gt;Short-Circuit Evaluation&lt;/code&gt;은 &lt;code&gt;&amp;amp;&amp;amp;&lt;/code&gt;이나 &lt;code&gt;||&lt;/code&gt;에서 첫번째 argument 에서 조건의 결과값에서 이미 전체 결과값이 판단되었을 경우 첫번째로만 수행하는 것을 말헙니다.&lt;/p&gt;
&lt;p&gt;예를 들어,&lt;/p&gt;
&lt;pre id=&quot;code_1609892979890&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;BOOL condition1(int pValue)
{
    printf(&quot;condition1() has been executed\n&quot;);
    return 0 == pValue;
}

BOOL condition2(int pValue)
{
    printf(&quot;condition2() has been executed\n&quot;);
    return 0 == pValue;
}

int main()
{
    int count1 = 1;
    int count2 = 0;

    if (condition1(count1) &amp;amp;&amp;amp; condition2(count2))
    {
        printf(&quot;&amp;amp;&amp;amp; test\n&quot;);
    }

    count1 = 0;
    if (condition1(count1) || condition2(count2))
    {
        printf(&quot;|| test\n&quot;);
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;첫번째 &amp;amp;&amp;amp; 연산에서는 condition1 이 false 이므로 condition2() 까지는 수행 시키지 않습니다. 두번째 || 연산에서는 condition1 이 true 이므로 condition2() 까지는 수행 시키지 않습니다.&lt;/p&gt;
&lt;p&gt;여기까지만 보면 그렇구나 싶긴 한데 문제가 될만한 것은 다음의 경우입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1609893009261&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;static void *cache_alloc_refill(struct kmem_cache *cachep, gfp_t flags)
{
...
    while (slabp-&amp;gt;inuse &amp;lt; cachep-&amp;gt;num &amp;amp;&amp;amp; batchcount--) {
        STATS_INC_ALLOCED(cachep);
        STATS_INC_ACTIVE(cachep);
        STATS_SET_HIGH(cachep);

        ac-&amp;gt;entry[ac-&amp;gt;avail++] = slab_get_obj(cachep, slabp,
				    node);
    }
    check_slabp(cachep, slabp);
....
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;linux-2.6.24&lt;/code&gt;의 커널 코드 중 일부입니다. while 문 안의 &lt;code&gt;slabp-&amp;gt;inuse &amp;lt; cachep-&amp;gt;num&lt;/code&gt;경우를 보면 &amp;amp;&amp;amp; 연산자는 충분히 Short-Circuit Evaluation 를 할 수 있으며 따라서 2번째 조건인 &lt;code&gt;batchcount--&lt;/code&gt;를 수행하지 않을 수도 있습니다. 물론 리눅스 커널 코드야 저런 경우까지 고려해서 작성되었겠지만 Short-Circuit Evaluation 염두하지 않고 2번째 조건에 뭔가 연산을 일으키지 못한다면 흐름을 이해하지 못하게 될 것입니다.&lt;/p&gt;
&lt;p&gt;정 헷갈리면 다 풀어서 해야 합니다.&lt;/p&gt;</description>
      <category>Development</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/266</guid>
      <comments>https://rudalson.tistory.com/entry/Short-Circuit-Evaluation%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-1#entry266comment</comments>
      <pubDate>Wed, 6 Jan 2021 09:39:42 +0900</pubDate>
    </item>
    <item>
      <title>토발즈의 더 좋은 코드</title>
      <link>https://rudalson.tistory.com/entry/%ED%86%A0%EB%B0%9C%EC%A6%88%EC%9D%98-%EB%8D%94-%EC%A2%8B%EC%9D%80-%EC%BD%94%EB%93%9C</link>
      <description>&lt;p&gt;TED의&amp;nbsp;&lt;a href=&quot;https://www.ted.com/talks/linus_torvalds_the_mind_behind_linux?language=ko#t-17586&quot;&gt;리누스 토발즈의 기본 철학&lt;/a&gt;편에서 보면 리눅스 커널 외에도 Git을 개발하고 그렇게 성공적인 개발을 연이어 하게 되면서 개발에 대한 철학을 이야기 해준다.&lt;/p&gt;
&lt;p&gt;그러면서 토발즈가 같이 작업하고픈 개발자라면 어떤 개발자인지 간략히 설명하면서 Singly-List를 구현하는 코드를 예를 들어준다.&lt;/p&gt;
&lt;p&gt;자신이 생각할 때&amp;nbsp;좋은 코드와&amp;nbsp;더 나은 코드에 대해 들려 준다.&lt;/p&gt;
&lt;p&gt;개인적으로 이런 코드는 완전히 모른다고 하기에도 할 수 없지만 안다고도 할 수 없는게 실제 개발에서는 여기까지 고려하지 못할 것 같다. 한마디로 탈락&amp;hellip; ㅠㅜ&lt;/p&gt;
&lt;p&gt;꾸준히 적용해 보려 노력해보는 수 밖에 없겠다.&lt;/p&gt;
&lt;h3 id=&quot;일반적인-코드&quot;&gt;일반적인 코드&lt;/h3&gt;
&lt;pre id=&quot;code_1609302797799&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;remove_list_entry(entry)
{
	prev = NULL;
	walk = head;
	
	// Walk the list
	while (walk != entry) {
		prev = walk;
		walk = walk-&amp;gt;next;
	}
	
	// Remove the entry by updating the
	// head or the previous entry
	if (!prev)
		head = entry-&amp;gt;next;
	else
		prev-&amp;gt;next = entry-&amp;gt;next;
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;block-4ee33036-a650-429a-9998-610d024afbe8&quot; contenteditable=&quot;true&quot; data-block=&quot;4ee33036-a650-429a-9998-610d024afbe8&quot; data-type=&quot;core/heading&quot; data-title=&quot;헤딩요소&quot;&gt;더 나은 코드&lt;/h3&gt;
&lt;pre id=&quot;code_1609302833242&quot; class=&quot;c++ arduino&quot; data-ke-language=&quot;c++&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;remove_list_entry(entry)
{
	// The &quot;indirect&quot; pointer points to the
	// *address* of the thing we'll update
	
	indirect = &amp;amp;head;
	
	// Walk the list, looking for the thing that
	// points to the entry we want to remove_list_entry
	while ((*indirect) != entry)
		indirect = &amp;amp;(*indirect)-&amp;gt;next;
	
	// .. and just remove it
	*indirect = entry-&amp;gt;next;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;더 나은 코드에서 보면 if 문 하나가 빠져 있다. singly list에서 매번 if 문을 사용하지 않는 코드는 결국 double pointer로 해답을 찾았는데 토발즈는 간단한 개선점이라고 이야기 하지만 이렇게 평범하지 않은 사고방식을 가진 사람을 좋아한다라고 하였다. 토발즈가 좋다고 해서 풀어봤다가 난 한참 헤맸었지만, 결국은 이런 수준까지 가려면 남다른 총명함이 필요하다고 본다.&lt;/p&gt;</description>
      <category>Development</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/265</guid>
      <comments>https://rudalson.tistory.com/entry/%ED%86%A0%EB%B0%9C%EC%A6%88%EC%9D%98-%EB%8D%94-%EC%A2%8B%EC%9D%80-%EC%BD%94%EB%93%9C#entry265comment</comments>
      <pubDate>Wed, 30 Dec 2020 13:34:29 +0900</pubDate>
    </item>
    <item>
      <title>vue router 기초</title>
      <link>https://rudalson.tistory.com/entry/vue-router-%EA%B8%B0%EC%B4%88</link>
      <description>&lt;p&gt;&lt;code&gt;SPA&lt;/code&gt;에서는 sub path에 대한 관리를 별도로 해줘야 합니다. 말그대로 single page 이므로 이후의 page란 없는 것 입니다. 이를 위해 vue 에서는 &lt;code&gt;vue-router&lt;/code&gt;를 사용합니다.&lt;/p&gt;
&lt;h2 id=&quot;router-내용-선언&quot;&gt;router 내용 선언&lt;/h2&gt;
&lt;p&gt;vue-router가 SPA에서 다른 경로의 component를 가르키는 기본 형태는 아래와 같습니다.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;router/index.js&lt;/code&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1608611255420&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  path: '/about',
  name: 'about',
  // route level code-splitting
  // this generates a separate chunk (about.[hash].js) for this route
  // which is lazy-loaded when the route is visited.
  component: () =&amp;gt; import(/* webpackChunkName: &quot;about&quot; */ '../views/About')
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;위의 주석을 살펴보면 SPA이므로 처음 로딩부터 모든 component 요소를 가지고 있기보다는 lazy-loaded를 하기 위해 &lt;code&gt;() function&lt;/code&gt;으로 감싼 것을 볼수 있습니다. 그리고 그 내용은 &lt;code&gt;router/index.js&lt;/code&gt;경로에서 부터 상대경로를 넣어주면 됩니다.&lt;/p&gt;
&lt;h2 id=&quot;route-시키기&quot;&gt;route 시키기&lt;/h2&gt;
&lt;p&gt;이제 about 컴포넌트를 보여주기 위해서는 기존처럼 href 같은 형태가 아닌 vue-route의 기능을 사용하여 호출되어야 합니다. 그러기 위해 drawer의 template에서 예를 살펴보겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1608611318012&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;v-list-item link&amp;gt;
    &amp;lt;v-list-item-action&amp;gt;
        &amp;lt;v-icon&amp;gt;mdi-contact-mail&amp;lt;/v-icon&amp;gt;
    &amp;lt;/v-list-item-action&amp;gt;
    &amp;lt;v-list-item-content&amp;gt;
        &amp;lt;v-list-item-title&amp;gt;About contact&amp;lt;/v-list-item-title&amp;gt;
    &amp;lt;/v-list-item-content&amp;gt;
&amp;lt;/v-list-item&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;block-4e1f702a-cb88-4f57-bea3-cad4118ff9f7&quot; contenteditable=&quot;true&quot; data-block=&quot;4e1f702a-cb88-4f57-bea3-cad4118ff9f7&quot; data-type=&quot;core/heading&quot; data-title=&quot;헤딩요소&quot;&gt;1. $router.push() 사용하기&lt;/h3&gt;
&lt;pre id=&quot;code_1608611390175&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;v-list-item link @click=&quot;$router.push('/about')&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;이런 형태로 직접 component에 명시된 &lt;code&gt;/about&lt;/code&gt; 경로를 바로 가르킬 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1608611412855&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;v-list-item link @click=&quot;$router.push({name: 'about', params: { userId: 123 }})&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;name이 about인 component를 찾아서 경로로 가르킬 수 있습니다. 이렇게 사용할 경우는 뒤에 parameter를 추가로 넣어 줄 수 있는 장점 뿐만 아니라 조금 더 명시적으로 가르켜 사용하도록 해줍니다.&lt;/p&gt;
&lt;h3 id=&quot;2-router-link-or-router&quot;&gt;2. router-link or router&lt;/h3&gt;
&lt;p&gt;또 다른 방법으로는 아래와 같은 문법도 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1608611452351&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;router :to=&quot;{name: 'about'}&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;혹은 &lt;code&gt;router-link&lt;/code&gt;를 사용할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1608611467141&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;router-link :to=&quot;{name: 'about'}&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/Web</category>
      <category>vue</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/264</guid>
      <comments>https://rudalson.tistory.com/entry/vue-router-%EA%B8%B0%EC%B4%88#entry264comment</comments>
      <pubDate>Tue, 22 Dec 2020 13:32:59 +0900</pubDate>
    </item>
    <item>
      <title>Vue에서 error: Unexpected console statement (no-console)</title>
      <link>https://rudalson.tistory.com/entry/Vue%EC%97%90%EC%84%9C-error-Unexpected-console-statement-no-console</link>
      <description>&lt;p&gt;&lt;code&gt;vue-cli&lt;/code&gt;를 연습하는 과정에서 console.log() 를 사용하려고 하는데 아래와 같은 경우가 발생하였습니다.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;error: Unexpected console statement (no-console)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;어떤 상황인가?&lt;/h3&gt;
&lt;pre id=&quot;code_1608003796598&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;
  export default {
  ...
    createdComponent() {
      console.log(&quot;route&quot;, this.$route);
    }
  ...
  }
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;아래처럼 vue 파일에서 변수값을 살펴보기 위해 console을 프로젝트 내에선 처음 사용해보았는데....&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;vue-error-no-console.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;413&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tOa6Y/btqQgzZnEMW/XGKHCvJK5YRii2e4nodqck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tOa6Y/btqQgzZnEMW/XGKHCvJK5YRii2e4nodqck/img.png&quot; data-alt=&quot;es-console-error 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tOa6Y/btqQgzZnEMW/XGKHCvJK5YRii2e4nodqck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtOa6Y%2FbtqQgzZnEMW%2FXGKHCvJK5YRii2e4nodqck%2Fimg.png&quot; data-filename=&quot;vue-error-no-console.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;413&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;es-console-error 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span&gt;여기에 관해서는&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://eslint.org/docs/rules/no-console.html&quot;&gt;disallow the use of console (no-console)&lt;/a&gt;&lt;span&gt;문서에서 보면 기본적으로 console이 허용하지 않는다고 되어 있습니다. 내가 ESLint를 사용 중인것인가? 그냥 문법체크 아닌가? 등등 고민이 있지만 여튼 난 이걸 넘어가야 하므로&lt;/span&gt;&lt;/p&gt;
&lt;h3 id=&quot;block-9363c52c-03be-4e08-97fb-803d9ffa2615&quot; contenteditable=&quot;true&quot; data-block=&quot;9363c52c-03be-4e08-97fb-803d9ffa2615&quot; data-type=&quot;core/heading&quot; data-title=&quot;헤딩요소&quot;&gt;임시적으로 허용&lt;/h3&gt;
&lt;pre id=&quot;code_1608003894539&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* eslint-disable no-console */
console.log(&quot;route&quot;, this.$route)
/* eslint-enable no-console */&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이렇게 console 앞뒤로 주석을 넣어주면 사용가능하긴 합니다.&lt;/p&gt;
&lt;p&gt;하지만 매번 이럴 수는 없습니다.&lt;/p&gt;
&lt;h3&gt;정책적으로 허용&lt;/h3&gt;
&lt;p&gt;package.json에서 이것을 제어하는 방법이 있었습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1608003923519&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;...
&quot;eslintConfig&quot;: {
    ...
    &quot;rules&quot;: {
      &quot;no-console&quot;: &quot;off&quot;
    },
    ...&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이렇게 한 후 브라우저를 refresh 해줬는데 문제가 계속 발생하였습니다. 그럴 경우는 &lt;code&gt;npm run&lt;/code&gt;을 혹은 &lt;code&gt;yarn&lt;/code&gt;을 다시 재시작하였더니 문제가 해결되었습니다. ESLint 정책글에서 본것처럼 이것은 명백히 의도가 있는 제한이었습니다. 따라서 이것을 조금 더 현명하게 사용하려면 아래처럼 하는 것이 좋을 것 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1608003950903&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;rules: {
    // allow console and debugger in development
    'no-console': process.env.NODE_ENV === 'production' ? 2 : 0,
    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
  },&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Reference&lt;/h3&gt;
&lt;p&gt;아래글을 보고 알게 된 것입니다.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/34215526/eslint-how-to-disable-unexpected-console-statement-in-node-js&quot;&gt;Eslint: How to disable &amp;ldquo;unexpected console statement&amp;rdquo; in Node.js?&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/Web</category>
      <category>javascript</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/263</guid>
      <comments>https://rudalson.tistory.com/entry/Vue%EC%97%90%EC%84%9C-error-Unexpected-console-statement-no-console#entry263comment</comments>
      <pubDate>Tue, 15 Dec 2020 12:48:45 +0900</pubDate>
    </item>
    <item>
      <title>vuejs, vuetify2 에서 polyfill 적용하려면</title>
      <link>https://rudalson.tistory.com/entry/vuejs-vuetify2-%EC%97%90%EC%84%9C-polyfill-%EC%A0%81%EC%9A%A9%ED%95%98%EB%A0%A4%EB%A9%B4</link>
      <description>&lt;pre id=&quot;code_1607675671846&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'babel-polyfill'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;vue&lt;/code&gt;에서 &lt;code&gt;vuetify2&lt;/code&gt;를 적용해보는 중이었습니다. vuetify가 2로 넘어오면서 변경된 것들이 몇몇 있어 보였고 이를 일부 수정해본 후 internet explorer와 Edge에서 살펴보니 화면이 보이지 않았습니다. 원인은 javascript가 동작하지 않는 것들이 있었습니다.&lt;/p&gt;
&lt;p&gt;이를 수정하기 위해 vuetify 공식문서를 살펴보았고 &lt;a href=&quot;https://vuetifyjs.com/en/getting-started/browser-support&quot;&gt;Browser Support&lt;/a&gt;를 살펴보았습니다. 가이드에서 알려준 순서대로 적용을 해보았는데 되질 않았습니다.&lt;/p&gt;
&lt;h2&gt;적용순서&lt;/h2&gt;
&lt;pre id=&quot;code_1607675655306&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ yarn add babel-polyfill&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;main.js&lt;/code&gt; 에서 아래를 추가하고&lt;/p&gt;
&lt;pre id=&quot;code_1607675677087&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'babel-polyfill'&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1607675892170&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ yarn add @babel/preset-env -D&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;babel.config.js&lt;/code&gt;에서 아래 추가하였습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1607675909669&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;module.exports = {
  presets: ['@babel/preset-env']
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;하지만 되지 않았습니다.&lt;/p&gt;
&lt;h2&gt;수정방법&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;vue.config.js&lt;/code&gt;를 생성하여 아래의 코드를 추가해주었더니&lt;/p&gt;
&lt;pre id=&quot;code_1607675973659&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;module.exports = {
  transpileDependencies: ['vuetify']
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;이후 잘 되었습니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/Web</category>
      <category>javascript</category>
      <category>vue</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/262</guid>
      <comments>https://rudalson.tistory.com/entry/vuejs-vuetify2-%EC%97%90%EC%84%9C-polyfill-%EC%A0%81%EC%9A%A9%ED%95%98%EB%A0%A4%EB%A9%B4#entry262comment</comments>
      <pubDate>Fri, 11 Dec 2020 17:49:12 +0900</pubDate>
    </item>
    <item>
      <title>바닐라 Redux 간단 핵심 사용법</title>
      <link>https://rudalson.tistory.com/entry/%EB%B0%94%EB%8B%90%EB%9D%BC-Redux-%EA%B0%84%EB%8B%A8-%ED%95%B5%EC%8B%AC-%EC%82%AC%EC%9A%A9%EB%B2%95</link>
      <description>&lt;p&gt;Redux를 &lt;code&gt;React&lt;/code&gt;같은 라이브러리를 사용하지 않고 순수 Javascript에서 사용하는 법에 대해 핵심만 정리 해보았습니다.&lt;/p&gt;
&lt;h2&gt;Redux CDN load&lt;/h2&gt;
&lt;p&gt;별도로 npm으로 인스톨 하지 않고 바로 연습해보려면 CDN load로 해볼 수 있습니다. 현재는 &lt;code&gt;redux-4.0.5&lt;/code&gt; 사용&lt;/p&gt;
&lt;pre id=&quot;code_1607504740772&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;head&amp;gt;
    &amp;lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/redux/4.0.5/redux.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/head&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;redux-flow-diagram-1024x799.gif&quot; data-origin-width=&quot;1146&quot; data-origin-height=&quot;859&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ppIdY/btqPDJoEu4U/jkV5b0ZvdpWD15V1S5Ahd1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ppIdY/btqPDJoEu4U/jkV5b0ZvdpWD15V1S5Ahd1/img.gif&quot; data-alt=&quot;Redux flow 다이어그램&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ppIdY/btqPDJoEu4U/jkV5b0ZvdpWD15V1S5Ahd1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/ppIdY/btqPDJoEu4U/jkV5b0ZvdpWD15V1S5Ahd1/img.gif&quot; data-filename=&quot;redux-flow-diagram-1024x799.gif&quot; data-origin-width=&quot;1146&quot; data-origin-height=&quot;859&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Redux flow 다이어그램&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2&gt;Store 생성&lt;/h2&gt;
&lt;p&gt;최종 상태값을 가지고 있는 store를 생성해줘야 합니다. 그런데 store는 reducer를 반드시 필요로 합니다. 그래서 reducer()를 만들어 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1607504809991&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function reducer(state, action) {
    if (state === undefined) {
        return {
            items: [
                {id: 1, title: 'redux1'},
                {id: 2, title: 'redux2'},
            ]
        }
    }

    let newState = {};
    ...
    return newState;
}

const store = Redux.createStore(reducer);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;reducer function을 만든 후 밑에서 바로 createStore()로 store를 생성합니다.&lt;/p&gt;
&lt;h2&gt;State 확인(Accessor)&lt;/h2&gt;
&lt;p&gt;state내용을 가져오는 것은 store에서 getState()로 가능합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1607504842805&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let state = store.getState();&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;State 수정(Mutator)&lt;/h2&gt;
&lt;p&gt;state값 수정(mutation)은 이렇게 action 값들을 인자로 주고 dispatch()를 호출합니다. actino이라는 것은 변경될 값들을 담은 것입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1607504862033&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let action =  {type:'CLICKED', id:1};
store.dispatch(action);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;dispatch()가 호출되고 나면 redux내부적으로 reducer가 또 다시 호출됩니다. reducer에서는 필요한 값을 받아서 &lt;/span&gt;Object.assign()&lt;span&gt;으로 state값을 갱신시켜 줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1607504916142&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function reducer(state, action) {
...
    if (action.type === 'CLICKED') {
        newState = Object.assign({}, state, {selected: action.id});
    }
...
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Object.assign()의 2번째는 previous state, 3번째는 new state입니다. 그렇다면 첫번째는???&lt;/p&gt;
&lt;h3&gt;배열값 수정&lt;/h3&gt;
&lt;p&gt;배열값을 수정(여기서는 추가) 하려면&lt;/p&gt;
&lt;pre id=&quot;code_1607504948540&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;newState = Object.assign({}, state, {selected: action.id});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;처럼 해도 되지만 배열(혹은 리스트) 값에서 뒤에 추가할 때는 아래의 형태대로 추가 시켜 줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1607504999805&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let items = state.contents.concat();
items.push({id: state.items.length + 1, title: action.title});
newState = Object.assign({}, state, {items, selected: state.contents.length + 1
});&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Subscribe 등록&lt;/h2&gt;
&lt;p&gt;state가 변경되어서 다시 rendering 되게 하려면, render할 함수를 subscribe에 인자로 줘서 아래처럼 등록해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1607505028861&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function showItems() {
    let state = store.getState();
    ...

     document.querySelector('#items').innerHTML = `
            &amp;lt;itemDetail&amp;gt;
                &amp;lt;h2&amp;gt;${title}&amp;lt;/h2&amp;gt;
            &amp;lt;/itemDetail&amp;gt;
        `
}

...
const store = Redux.createStore(reducer);
store.subscribe(showItems);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/개발언어</category>
      <category>javascript</category>
      <category>redux</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/261</guid>
      <comments>https://rudalson.tistory.com/entry/%EB%B0%94%EB%8B%90%EB%9D%BC-Redux-%EA%B0%84%EB%8B%A8-%ED%95%B5%EC%8B%AC-%EC%82%AC%EC%9A%A9%EB%B2%95#entry261comment</comments>
      <pubDate>Wed, 9 Dec 2020 18:13:27 +0900</pubDate>
    </item>
    <item>
      <title>자신만의 ERC20 Token 만들기</title>
      <link>https://rudalson.tistory.com/entry/%EC%9E%90%EC%8B%A0%EB%A7%8C%EC%9D%98-ERC20-Token-%EB%A7%8C%EB%93%A4%EA%B8%B0</link>
      <description>&lt;p&gt;&lt;code&gt;Ethereum&lt;/code&gt;의 &lt;code&gt;erc20&lt;/code&gt;으로 자신만의 토큰을 만드려고 합니다. 토큰이 무엇인지? erc20이 무엇인지 등은 넘어가겠습니다. 여기서는 &lt;a href=&quot;https://github.com/OpenZeppelin/openzeppelin-contracts&quot;&gt;OpenZeppelin&lt;/a&gt;의 코드를 사용하였습니다.&lt;/p&gt;
&lt;p&gt;토큰을 만들기 위해서는 토큰의 기능들 (예를 들면, 전송이나 잔액조회 같은)을 어떻게 할 것인지에 대한 &lt;code&gt;Solidity&lt;/code&gt; 코드를 작성하여야 하며 이를 &lt;code&gt;Contract&lt;/code&gt; 작성이라고 합니다. 이렇게 만들어진 contract를 이더리움에 올리면 토큰으로서 작동하게 되는데 한번 올린 다음에는 수정이 쉽지 않기 때문에 초기에 충분히 테스트하여 확인 후 올려야 합니다.&lt;/p&gt;
&lt;p&gt;이러한 이유로 OpenZeppelin에서는 (아마도 다른것도 마찬가지일 것 같지만) 기존에 충분히 테스트된 contract 코드를 제공하며 이를 가져다 일부만 변경한 다음에 적용하면 토큰을 바로 사용할 수 있습니다.&lt;/p&gt;
&lt;h1 id=&quot;instructions&quot;&gt;Instructions&lt;/h1&gt;
&lt;p&gt;Solidity를 위한 IDE는 &lt;a href=&quot;http://remix.ethereum.org/&quot;&gt;Remix IDE&lt;/a&gt;를 사용하였습니다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/OpenZeppelin/openzeppelin-contracts&quot;&gt;openzeppelin-contracts github&lt;/a&gt;에서&amp;nbsp;&lt;a href=&quot;https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/token/ERC20&quot;&gt;contracts/token/ERC20&lt;/a&gt; 디렉토리로 이동합니다.&lt;br /&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;2019-10-22.openzepplin-contracts-erc20.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;586&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUVjnD/btqPqlACoXU/ZH1oRKT8oYKgkPIatKbTK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUVjnD/btqPqlACoXU/ZH1oRKT8oYKgkPIatKbTK1/img.png&quot; data-alt=&quot;openzeppelin contracts github&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUVjnD/btqPqlACoXU/ZH1oRKT8oYKgkPIatKbTK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUVjnD%2FbtqPqlACoXU%2FZH1oRKT8oYKgkPIatKbTK1%2Fimg.png&quot; data-filename=&quot;2019-10-22.openzepplin-contracts-erc20.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;586&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;openzeppelin contracts github&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ERC20.sol&lt;/code&gt;, &lt;code&gt;ERC20Burnable.sol&lt;/code&gt;, &lt;code&gt;ERC20Detailed.sol&lt;/code&gt;, &lt;code&gt;IERC20.sol&lt;/code&gt;, &lt;code&gt;SafeERC20.sol&lt;/code&gt;을 가져다 IDE에 등록시킵니다. &lt;code&gt;ERC20.sol&lt;/code&gt;에서 현재 소스의 solidity 버전을 확인할 수 있습니다. 그리고 import 파일 중에서 다른 디렉터리에 있는 파일들도 모두 찾아서 구해줍니다. 아래의 경우 &lt;code&gt;Context.sol&lt;/code&gt;과 &lt;code&gt;SafeMath.sol&lt;/code&gt;도 각각의 디렉토리로 들어가서 모두 구해옵니다.
&lt;pre id=&quot;code_1607305962762&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pragma solidity ^0.5.0;

import &quot;../../GSN/Context.sol&quot;;
import &quot;./IERC20.sol&quot;;
import &quot;../../math/SafeMath.sol&quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;이렇게 모든 파일들을 구해서 Remix IDE에 생성한 후 import의 디렉터리도 모두 &amp;ldquo;./&amp;rdquo;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; 으로 변경합니다. 가령 위의 &lt;code&gt;ERC20.sol&lt;/code&gt;은 아래처럼 될 것입니다.&lt;br /&gt;&lt;/span&gt;
&lt;pre id=&quot;code_1607306315287&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import &quot;./Context.sol&quot;;
import &quot;./IERC20.sol&quot;;
import &quot;./SafeMath.sol&quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a style=&quot;letter-spacing: 0px;&quot; href=&quot;https://github.com/OpenZeppelin/openzeppelin-contracts/tree/master/contracts/examples&quot;&gt;contracts/examples&lt;/a&gt; 디렉토리로 가서 &lt;code&gt;SimpleToken.sol&lt;/code&gt;을 구해와서 몇 가지를 수정해 줍니다. import 디렉터리도 모두 &amp;ldquo;./&amp;rdquo;으로 변경합니다. 코드상에서 &lt;code&gt;Context&lt;/code&gt;와 &lt;code&gt;ERC20Burnable&lt;/code&gt;을 추가시켜 줍니다. 그리고 토큰명과 토큰의 단위가 될 축약어를 지정해줍니다. 아래 예제에서는 &lt;code&gt;BusToken&lt;/code&gt;과 &lt;code&gt;BTK&lt;/code&gt;로 해주었습니다. 그러면 아래와 같은 코드가 될 것입니다. 참고로, &lt;code&gt;ERC20Burnable&lt;/code&gt;에는 토큰의 소각 기능이 포함되어 있습니다. 이런 것들이 필요한 경우 몇몇 가지를 상속의 형태로 가져오면 됩니다.
&lt;pre id=&quot;code_1607307051436&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pragma solidity ^0.5.0;

import &quot;./Context.sol&quot;;
import &quot;./ERC20.sol&quot;;
import &quot;./ERC20Detailed.sol&quot;;
import &quot;./ERC20Burnable.sol&quot;;

contract SimpleToken is Context, ERC20, ERC20Detailed, ERC20Burnable {
        
    constructor () public ERC20Detailed(&quot;BusToken&quot;, &quot;BTK&quot;, 18) {
        _mint(_msgSender(), 10000 * (10 ** uint256(decimals())));
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;최종 나온 코드의 파일들은 아래와 같습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ERC20Burnable.sol&lt;/li&gt;
&lt;li&gt;IERC20.sol&lt;/li&gt;
&lt;li&gt;ERC20Detailed.sol&lt;/li&gt;
&lt;li&gt;SafeMath.sol&lt;/li&gt;
&lt;li&gt;Context.sol&lt;/li&gt;
&lt;li&gt;SimpleToken.sol&lt;/li&gt;
&lt;li&gt;ERC20.sol&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;REMIX IDE의 Compile탭에서 compiler version 을 &lt;code&gt;0.5.0&lt;/code&gt;으로 맞춰준 후 compile를 해줍니다.&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;2019-10-22.remix-compile-tab.png&quot; data-origin-width=&quot;790&quot; data-origin-height=&quot;828&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oPC2b/btqPsDA1ftt/QuhXtIk9Fo8BBnC9dCv3T0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oPC2b/btqPsDA1ftt/QuhXtIk9Fo8BBnC9dCv3T0/img.png&quot; data-alt=&quot;compiler version 0.5.0&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oPC2b/btqPsDA1ftt/QuhXtIk9Fo8BBnC9dCv3T0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoPC2b%2FbtqPsDA1ftt%2FQuhXtIk9Fo8BBnC9dCv3T0%2Fimg.png&quot; data-filename=&quot;2019-10-22.remix-compile-tab.png&quot; data-origin-width=&quot;790&quot; data-origin-height=&quot;828&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;compiler version 0.5.0&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;Run탭에서 Environment를 &lt;code&gt;JavaScriptVM&lt;/code&gt;으로 맞추고 &lt;code&gt;SimpleToken&lt;/code&gt;을 Deploy 합니다. 그러면 아래에 Deployed 된 기능들이 생겨남을 알 수 있으며 이를 테스트 할 수 있습니다. JavaScriptVM에서 deploy 한다는 것은 이더리움에 아직 올린것이 아니라 local 에서 vm을 구성하여 만든 것이고 이를 통해 기능 테스트를 미리 해볼 수 있습니다.&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;2019-10-22.remix-run-tab-447x1024-1.png&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;1024&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dLqchg/btqPuTwQMBF/TmrigZnKGVeJCWVkI4wnC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dLqchg/btqPuTwQMBF/TmrigZnKGVeJCWVkI4wnC1/img.png&quot; data-alt=&quot;SimpleToken Deploy 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dLqchg/btqPuTwQMBF/TmrigZnKGVeJCWVkI4wnC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdLqchg%2FbtqPuTwQMBF%2FTmrigZnKGVeJCWVkI4wnC1%2Fimg.png&quot; data-filename=&quot;2019-10-22.remix-run-tab-447x1024-1.png&quot; data-origin-width=&quot;447&quot; data-origin-height=&quot;1024&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SimpleToken Deploy 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;테스트에 문제가 없다면 실제 이더리움넷에 deploy 해줍니다. Environment를 &lt;code&gt;Injected Web3 Robsten&lt;/code&gt;(테스트넷)으로 해서 Deploy해보겠습니다. 실제 토큰을 생성하기 위해서는 전체 수량을 가질 최초의 지갑을 자신이 접근가능한 주소로 해야 합니다.&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;2019-10-22.web-deploy.png&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;538&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvs76F/btqPqmzzErc/L3liGkrmRpF1Q18oB21RQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvs76F/btqPqmzzErc/L3liGkrmRpF1Q18oB21RQk/img.png&quot; data-alt=&quot;Injected Web3으로 Deploy한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvs76F/btqPqmzzErc/L3liGkrmRpF1Q18oB21RQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbvs76F%2FbtqPqmzzErc%2FL3liGkrmRpF1Q18oB21RQk%2Fimg.png&quot; data-filename=&quot;2019-10-22.web-deploy.png&quot; data-origin-width=&quot;786&quot; data-origin-height=&quot;538&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Injected Web3으로 Deploy한다.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;여기서 주의사항으로는 토큰생성에 대한 contract 수행도 &lt;code&gt;Ether Gas fee&lt;/code&gt;가 발생하기 때문에 테스트넷용 이더넷을 확보한 뒤 contract deploy를 한다. deploy가 성공하면 아래와 같이 etherscan에서 확인 가능하다.(테스트넷은 간헐적으로 reset 되므로 일정시간이 지나면 사라질 수도 있다)&lt;/p&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;2019-10-22.contract-etherscan-1024x582-1.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;582&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WPFB9/btqPsDHQ5rH/jTFoxudI3SJeBud8fySmLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WPFB9/btqPsDHQ5rH/jTFoxudI3SJeBud8fySmLk/img.png&quot; data-alt=&quot;etherscan 에서 contract 수행 여부&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WPFB9/btqPsDHQ5rH/jTFoxudI3SJeBud8fySmLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWPFB9%2FbtqPsDHQ5rH%2FjTFoxudI3SJeBud8fySmLk%2Fimg.png&quot; data-filename=&quot;2019-10-22.contract-etherscan-1024x582-1.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;582&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;etherscan 에서 contract 수행 여부&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;이후 wallet에서 확인해 보면 토큰을 확인 할 수 있다.&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;2019-10-22.token-in-wallet.png&quot; data-origin-width=&quot;710&quot; data-origin-height=&quot;682&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXZ5ec/btqPfS0S5r0/1ukISEzBWEhqPkV0rU2XV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXZ5ec/btqPfS0S5r0/1ukISEzBWEhqPkV0rU2XV0/img.png&quot; data-alt=&quot;metamask에서 확인 가능하다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXZ5ec/btqPfS0S5r0/1ukISEzBWEhqPkV0rU2XV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXZ5ec%2FbtqPfS0S5r0%2F1ukISEzBWEhqPkV0rU2XV0%2Fimg.png&quot; data-filename=&quot;2019-10-22.token-in-wallet.png&quot; data-origin-width=&quot;710&quot; data-origin-height=&quot;682&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;metamask에서 확인 가능하다.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;refernece&quot;&gt;Refernece&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://youtu.be/nu8a7frh4Xs&quot;&gt;2018, 이더리움 ERC20 토큰 만드는 방법&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Development/기타</category>
      <category>cryptocurrency</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/260</guid>
      <comments>https://rudalson.tistory.com/entry/%EC%9E%90%EC%8B%A0%EB%A7%8C%EC%9D%98-ERC20-Token-%EB%A7%8C%EB%93%A4%EA%B8%B0#entry260comment</comments>
      <pubDate>Mon, 7 Dec 2020 11:12:51 +0900</pubDate>
    </item>
    <item>
      <title>Ubuntu 18.04에서 MYSQL 8 설치하기</title>
      <link>https://rudalson.tistory.com/entry/Ubuntu-1804%EC%97%90%EC%84%9C-MYSQL-8-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0</link>
      <description>&lt;p&gt;&lt;code&gt;Ubuntu 18.04&lt;/code&gt;에서 &lt;code&gt;mysql 8.x&lt;/code&gt;를 설치하려고 할 때 key값 에러로 인하여 실패할 때가 있습니다. 물론, community edition으로 설치하는 과정중에서도 발생합니다. 최신의 mysql이 필요치 않다면 일반적인 repo에서 설치하면 &lt;code&gt;5.x&lt;/code&gt; 버전으로 구할 수도 있습니다. 하지만 최신 버전으로 설치하려고 하면 일부 우분투 머신에서 이런 문제를 만날 수 있습니다. 이 문제도 해결하기 위해 일반적인 &lt;code&gt;mysql 8.x&lt;/code&gt; 설치 과정부터 살펴 보려합니다.&lt;/p&gt;
&lt;h1 id=&quot;mysql-8x-install&quot;&gt;Mysql 8.x Install&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/&quot;&gt;A Quick Guide to Using the MySQL APT Repository&lt;/a&gt; 에서 언급한 대로 한다면, 아래의 단계로 진행하면 됩니다.&lt;/p&gt;
&lt;h3 id=&quot;step-1-download-the-mysql-repositories&quot;&gt;Step 1: Download the MySQL Repositories&lt;/h3&gt;
&lt;pre id=&quot;code_1606882522684&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ wget -c https://dev.mysql.com/get/mysql-apt-config_0.8.11-1_all.deb&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;step-2-install-the-mysql-repositories&quot;&gt;Step 2: Install the MySQL Repositories&lt;/h3&gt;
&lt;pre id=&quot;code_1606882541182&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo dpkg -i mysql-apt-config_0.8.11-1_all.deb&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;step-3-refresh-the-repositories&quot;&gt;Step 3: Refresh the Repositories&lt;/h3&gt;
&lt;pre id=&quot;code_1606882599976&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo apt-get update&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;추가한 패키지의 repository의 내용을 update 해줍니다.&lt;/p&gt;
&lt;h3 id=&quot;step-4-install-mysql&quot;&gt;Step 4: Install MySQL&lt;/h3&gt;
&lt;pre id=&quot;code_1606882614397&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo apt-get install mysql-server&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;일반적으로 이렇게 해서 별 문제가 없다면 mysql 8.x 설치가 가능합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 id=&quot;expired-key-expkeysig-with-apt-문제-발생&quot;&gt;Expired Key (EXPKEYSIG) with APT 문제 발생&lt;/h2&gt;
&lt;p&gt;일부 ubuntu 머신에서 아래와 같은 문제가 발생하는 경우가 있습니다. 나의 경우는 Amazon EC2 머신에서 발생하였습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1606882974767&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo apt-get update
Hit:1 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu bionic InRelease
Hit:2 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu bionic-updates InRelease
Hit:3 http://ap-northeast-2.ec2.archive.ubuntu.com/ubuntu bionic-backports InRelease
Get:4 http://repo.mysql.com/apt/ubuntu bionic InRelease [19.4 kB]
Err:4 http://repo.mysql.com/apt/ubuntu bionic InRelease
  The following signatures were invalid: EXPKEYSIG 8C718D3B5072E1F5 MySQL Release Engineering &amp;lt;mysql-build@oss.oracle.com&amp;gt;
Hit:5 http://security.ubuntu.com/ubuntu bionic-security InRelease
Reading package lists... Done
W: GPG error: http://repo.mysql.com/apt/ubuntu bionic InRelease: The following signatures were invalid: EXPKEYSIG 8C718D3B5072E1F5 MySQL Release Engineering &amp;lt;mysql-build@oss.oracle.com&amp;gt;
E: The repository 'http://repo.mysql.com/apt/ubuntu bionic InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;gpg signature key가 expire 되었다는 내용이며 해결책은 아래와 같습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1606883000335&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo apt-key adv --keyserver keys.gnupg.net --recv-keys 8C718D3B5072E1F5
Executing: /tmp/apt-key-gpghome.QD2aYIUvET/gpg.1.sh --keyserver keys.gnupg.net --recv-keys 8C718D3B5072E1F5
gpg: key 8C718D3B5072E1F5: 3 duplicate signatures removed
gpg: key 8C718D3B5072E1F5: 102 signatures not checked due to missing keys
gpg: key 8C718D3B5072E1F5: &quot;MySQL Release Engineering &amp;lt;mysql-build@oss.oracle.com&amp;gt;&quot; 29 new signatures
gpg: Total number processed: 1
gpg:         new signatures: 29&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;이후에는 아래의 명령들이 잘 수행되며&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1606883018656&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ sudo apt-get update
$ sudo apt-get install mysql-server&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;최종 수행한 결과는 아래처럼 &lt;code&gt;mysql 8.0.19&lt;/code&gt; 설치에 성공하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1606883039968&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ mysql --version
mysql  Ver 8.0.19 for Linux on x86_64 (MySQL Community Server - GPL)&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;block-48fb39d9-e086-4a9f-a112-d9baf9db641a&quot; data-block=&quot;48fb39d9-e086-4a9f-a112-d9baf9db641a&quot; data-type=&quot;core/heading&quot; data-title=&quot;헤딩요소&quot;&gt;Reference&lt;/h3&gt;
&lt;ul id=&quot;block-b15edf9f-8b7c-42c2-9309-57460d7b823b&quot; data-block=&quot;b15edf9f-8b7c-42c2-9309-57460d7b823b&quot; data-type=&quot;core/list&quot; data-title=&quot;리스트&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://phoenixnap.com/kb/how-to-install-mysql-on-ubuntu-18-04&quot;&gt;How To Install MySQL 8.0 On Ubuntu 18.04&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/&quot;&gt;A Quick Guide to Using the MySQL APT Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tecadmin.net/expired-key-expkeysig-with-apt/&quot;&gt;How to Solve an Expired Key (EXPKEYSIG) with Apt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/System</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/259</guid>
      <comments>https://rudalson.tistory.com/entry/Ubuntu-1804%EC%97%90%EC%84%9C-MYSQL-8-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0#entry259comment</comments>
      <pubDate>Wed, 2 Dec 2020 13:21:47 +0900</pubDate>
    </item>
    <item>
      <title>Docker로 tendermint 실행</title>
      <link>https://rudalson.tistory.com/entry/Docker%EB%A1%9C-tendermint-%EC%8B%A4%ED%96%89</link>
      <description>&lt;p&gt;tendermint의 멀티노드 테스트 환경을 구축하기 위해 docker를 사용하는 과정을 정리해 보았습니다.&lt;/p&gt;
&lt;h1 id=&quot;docker-에서-실행&quot;&gt;docker 에서 실행&lt;/h1&gt;
&lt;h2 id=&quot;golang-image-container&quot;&gt;golang image container&lt;/h2&gt;
&lt;pre id=&quot;code_1606714694662&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;~:&amp;gt;docker run -it --rm golang
root@5b612c38d7fd:/go#
root@5b612c38d7fd:/go# export REPO=github.com/tendermint/tendermint
root@5b612c38d7fd:/go# go get $REPO
package github.com/tendermint/tendermint: no Go files in /go/src/github.com/tendermint/tendermint
root@5b612c38d7fd:/go# ls
bin  src
root@5b612c38d7fd:/go# cd $GOPATH/src/$REPO
root@5b612c38d7fd:/go/src/github.com/tendermint/tendermint# make get_tools
--&amp;gt; Installing tools
./scripts/get_tools.sh
--&amp;gt; Installing mitchellh/gox (51ed453898ca5579fea9ad1f08dff6b121d9f2e8)...
Cloning into 'mitchellh/gox'...
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 389 (delta 0), reused 0 (delta 0), pack-reused 388
Receiving objects: 100% (389/389), 106.04 KiB | 0 bytes/s, done.
Resolving deltas: 100% (208/208), done.
/go/src/github.com/mitchellh/gox /go/src/github.com
/go/src/github.com/mitchellh/gox
/go/src/github.com
--&amp;gt; Done

--&amp;gt; Installing golang/dep (22125cfaa6ddc71e145b1535d4b7ee9744fefff2)...
Cloning into 'golang/dep'...
remote: Enumerating objects: 20677, done.
remote: Total 20677 (delta 0), reused 0 (delta 0), pack-reused 20677
Receiving objects: 100% (20677/20677), 12.10 MiB | 1.22 MiB/s, done.
Resolving deltas: 100% (12265/12265), done.
/go/src/github.com/golang/dep /go/src/github.com
/go/src/github.com/golang/dep
/go/src/github.com
--&amp;gt; Done

--&amp;gt; Installing alecthomas/gometalinter (17a7ffa42374937bfecabfb8d2efbd4db0c26741)...
Cloning into 'alecthomas/gometalinter'...
remote: Enumerating objects: 10, done.
remote: Counting objects: 100% (10/10), done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 4444 (delta 2), reused 4 (delta 1), pack-reused 4434
Receiving objects: 100% (4444/4444), 5.50 MiB | 1.32 MiB/s, done.
Resolving deltas: 100% (1651/1651), done.
/go/src/github.com/alecthomas/gometalinter /go/src/github.com
/go/src/github.com/alecthomas/gometalinter
/go/src/github.com
--&amp;gt; Done

--&amp;gt; Installing gogo/protobuf (61dbc136cf5d2f08d68a011382652244990a53a9)...
Cloning into 'gogo/protobuf'...
remote: Enumerating objects: 2374, done.
remote: Counting objects: 100% (2374/2374), done.
remote: Compressing objects: 100% (974/974), done.
remote: Total 27489 (delta 1707), reused 1923 (delta 1389), pack-reused 25115
Receiving objects: 100% (27489/27489), 35.38 MiB | 2.92 MiB/s, done.
Resolving deltas: 100% (19505/19505), done.
/go/src/github.com/gogo/protobuf /go/src/github.com
/go/src/github.com/gogo/protobuf
/go/src/github.com
--&amp;gt; Done

--&amp;gt; Installing square/certstrap (e27060a3643e814151e65b9807b6b06d169580a7)...
Cloning into 'square/certstrap'...
remote: Enumerating objects: 215, done.
remote: Counting objects: 100% (215/215), done.
remote: Compressing objects: 100% (136/136), done.
remote: Total 1387 (delta 74), reused 157 (delta 69), pack-reused 1172
Receiving objects: 100% (1387/1387), 2.98 MiB | 505.00 KiB/s, done.
Resolving deltas: 100% (500/500), done.
/go/src/github.com/square/certstrap /go/src/github.com
/go/src/github.com/square/certstrap
/go/src/github.com
--&amp;gt; Done

root@5b612c38d7fd:/go/src/github.com/tendermint/tendermint# make get_vendor_deps
--&amp;gt; Running dep
root@5b612c38d7fd:/go/src/github.com/tendermint/tendermint# make install
CGO_ENABLED=0 go install  -ldflags &quot;-X github.com/tendermint/tendermint/version.GitCommit=`git rev-parse --short=8 HEAD`&quot; -tags 'tendermint' ./cmd/tendermint
root@5b612c38d7fd:/go/src/github.com/tendermint/tendermint#
root@5b612c38d7fd:/go/src/github.com/tendermint/tendermint# cd
root@5b612c38d7fd:~# ll
bash: ll: command not found
root@5b612c38d7fd:~# ls
root@5b612c38d7fd:~# tendermint init
I[6016-01-06|02:58:06.834] Generated private validator                  module=main path=/root/.tendermint/config/priv_validator.json
I[6016-01-06|02:58:06.836] Generated node key                           module=main path=/root/.tendermint/config/node_key.json
I[6016-01-06|02:58:06.837] Generated genesis file                       module=main path=/root/.tendermint/config/genesis.json
root@5b612c38d7fd:~# tendermint node --proxy_app=kvstore
I[6016-01-06|02:58:57.381] Version info                                 module=main software=0.27.4 block=8 p2p=5
I[6016-01-06|02:58:57.418] Starting Node                                module=main impl=Node
I[6016-01-06|02:58:57.422] Started node                                 module=main nodeInfo=&quot;{ProtocolVersion:{P2P:5 Block:8 App:1} ID_:dfbfd339d73005f422a68f9c66f4db9e29b63cb5 ListenAddr:tcp://0.0.0.0:26656 Network:test-chain-yBHf0N Version:0.27.4 Channels:4020212223303800 Moniker:5b612c38d7fd Other:{TxIndex:on RPCAddress:tcp://0.0.0.0:26657}}&quot;
E[6016-01-06|02:58:57.422] Couldn't connect to any seeds                module=p2p
I[6016-01-06|02:58:58.432] Executed block                               module=state height=1 validTxs=0 invalidTxs=0
I[6016-01-06|02:58:58.435] Committed state                              module=state height=1 txs=0 appHash=0000000000000000
I[6016-01-06|02:58:59.455] Executed block                               module=state height=2 validTxs=0 invalidTxs=0
I[6016-01-06|02:58:59.459] Committed state                              module=state height=2 txs=0 appHash=0000000000000000
I[6016-01-06|02:59:00.474] Executed block                               module=state height=3 validTxs=0 invalidTxs=0
I[6016-01-06|02:59:00.477] Committed state                              module=state height=3 txs=0 appHash=0000000000000000
^CE[6016-01-06|02:59:01.166] captured interrupt, exiting...               module=main
I[6016-01-06|02:59:01.166] Stopping Node                                module=main impl=Node
I[6016-01-06|02:59:01.166] Stopping Node                                module=main
E[6016-01-06|02:59:01.169] Not stopping BlockPool -- have not been started yet module=blockchain impl=BlockPool
I[6016-01-06|02:59:01.169] Closing rpc listener                         module=main listener=&quot;&amp;amp;{Listener:0xc00000c5e8 sem:0xc00007a5a0 closeOnce:{m:{state:0 sema:0} done:0} done:0xc00007a600}&quot;
root@5b612c38d7fd:~#&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;요약&lt;/h3&gt;
&lt;pre id=&quot;code_1606714772360&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker run -it --rm golang
export REPO=github.com/tendermint/tendermint
go get $REPO
cd $GOPATH/src/$REPO
make get_tools
make get_vendor_deps
make install
tendermint init
tendermint node --proxy_app=kvstore&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1606714790696&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#!/usr/bin/env bash

# XXX: this script is meant to be used only on a fresh Ubuntu 16.04 instance
# and has only been tested on Digital Ocean

# get and unpack golang
curl -O https://storage.googleapis.com/golang/go1.10.linux-amd64.tar.gz
tar -xvf go1.10.linux-amd64.tar.gz

apt install make

## move go and add binary to path
mv go /usr/local
echo &quot;export PATH=\$PATH:/usr/local/go/bin&quot; &amp;gt;&amp;gt; ~/.profile

## create the GOPATH directory, set GOPATH and put on PATH
mkdir goApps
echo &quot;export GOPATH=/root/goApps&quot; &amp;gt;&amp;gt; ~/.profile
echo &quot;export PATH=\$PATH:\$GOPATH/bin&quot; &amp;gt;&amp;gt; ~/.profile

source ~/.profile

## get the code and move into it
REPO=github.com/tendermint/tendermint
go get $REPO
cd $GOPATH/src/$REPO

## build
git checkout master
make get_tools
make get_vendor_deps
make install&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;block-76cca3c0-3a2d-4109-af2b-d162d9d6e4e3&quot; contenteditable=&quot;true&quot; data-block=&quot;76cca3c0-3a2d-4109-af2b-d162d9d6e4e3&quot; data-type=&quot;core/heading&quot; data-title=&quot;헤딩요소&quot;&gt;tendermint single container&lt;/h2&gt;
&lt;pre id=&quot;code_1606714824135&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;~:&amp;gt; docker run -it --rm -v &quot;/Users/kmpak/tmp/tendermint1:/tendermint&quot; tendermint/tendermint init
Unable to find image 'tendermint/tendermint:latest' locally
latest: Pulling from tendermint/tendermint
ff3a5c916c92: Pull complete
3c63001644b1: Pull complete
b928d43effa5: Pull complete
Digest: sha256:6a6691c448554392ab05c0b5754489e02628d9539d3887458bdc4f69251697cd
Status: Downloaded newer image for tendermint/tendermint:latest
I[7016-01-07|00:58:03.880] Generated private validator                  module=main path=/tendermint/config/priv_validator.json
I[7016-01-07|00:58:03.882] Generated node key                           module=main path=/tendermint/config/node_key.json
I[7016-01-07|00:58:03.884] Generated genesis file                       module=main path=/tendermint/config/genesis.json
~:&amp;gt; docker run -it -p 26657:26657 --rm -v &quot;/Users/kmpak/tmp/tendermint1:/tendermint&quot; tendermint/tendermint node --proxy_app=kvstore
I[7016-01-07|00:58:57.859] Version info                                 module=main software=0.27.4 block=8 p2p=5
I[7016-01-07|00:58:57.890] Starting Node                                module=main impl=Node
I[7016-01-07|00:58:57.899] Started node                                 module=main nodeInfo=&quot;{ProtocolVersion:{P2P:5 Block:8 App:1} ID_:1a164d4db5c654ed19f0774f082911cd5e6b05a2 ListenAddr:tcp://0.0.0.0:26656 Network:test-chain-iqFzFK Version:0.27.4 Channels:4020212223303800 Moniker:b0d655eddf54 Other:{TxIndex:on RPCAddress:tcp://0.0.0.0:26657}}&quot;
E[7016-01-07|00:58:57.899] Couldn't connect to any seeds                module=p2p
I[7016-01-07|00:58:58.898] Executed block                               module=state height=1 validTxs=0 invalidTxs=0
I[7016-01-07|00:58:58.899] Committed state                              module=state height=1 txs=0 appHash=0000000000000000
I[7016-01-07|00:58:59.914] Executed block                               module=state height=2 validTxs=0 invalidTxs=0
I[7016-01-07|00:58:59.915] Committed state                              module=state height=2 txs=0 appHash=0000000000000000
I[7016-01-07|00:59:00.928] Executed block                               module=state height=3 validTxs=0 invalidTxs=0
I[7016-01-07|00:59:00.928] Committed state                              module=state height=3 txs=0 appHash=0000000000000000
I[7016-01-07|00:59:01.943] Executed block                               module=state height=4 validTxs=0 invalidTxs=0
I[7016-01-07|00:59:01.944] Committed state                              module=state height=4 txs=0 appHash=0000000000000000
I[7016-01-07|00:59:02.956] Executed block                               module=state height=5 validTxs=0 invalidTxs=0
I[7016-01-07|00:59:02.957] Committed state                              module=state height=5 txs=0 appHash=0000000000000000
I[7016-01-07|00:59:03.974] Executed block                               module=state height=6 validTxs=0 invalidTxs=0
I[7016-01-07|00:59:03.975] Committed state                              module=state height=6 txs=0 appHash=0000000000000000
I[7016-01-07|00:59:04.989] Executed block                               module=state height=7 validTxs=0 invalidTxs=0
I[7016-01-07|00:59:04.990] Committed state                              module=state height=7 txs=0 appHash=0000000000000000
I[7016-01-07|00:59:06.006] Executed block                               module=state height=8 validTxs=0 invalidTxs=0
I[7016-01-07|00:59:06.007] Committed state                              module=state height=8 txs=0 appHash=0000000000000000&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;tendermint-multi-container&quot;&gt;tendermint multi container&lt;/h2&gt;
&lt;h3 id=&quot;init&quot;&gt;init&lt;/h3&gt;
&lt;p&gt;user 디렉토리 밑에 각 컨테이너의 설정을 담기 위해 tendermint1~tendermint3 까지 디렉토리를 생성합니다. 이후 tendermint init 으로 default 설정 및 data 디렉토리를 생성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1606714863483&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker run -it --rm -v &quot;/Users/kmpak/tmp/tendermint1:/tendermint&quot; tendermint/tendermint init
docker run -it --rm -v &quot;/Users/kmpak/tmp/tendermint2:/tendermint&quot; tendermint/tendermint init
docker run -it --rm -v &quot;/Users/kmpak/tmp/tendermint3:/tendermint&quot; tendermint/tendermint init

docker run -it --rm -v &quot;/Users/kmpak/tmp/tendermint1:/tendermint&quot; tendermint/tendermint show_node_id
docker run -it --rm -v &quot;/Users/kmpak/tmp/tendermint2:/tendermint&quot; tendermint/tendermint show_node_id
docker run -it --rm -v &quot;/Users/kmpak/tmp/tendermint3:/tendermint&quot; tendermint/tendermint show_node_id&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;init 이후 show_node_id 명령어로 노드에 대한 address( ?) 값을 구해옵니다. 이걸로 아래의 config 파일에 입력하기 위해서 입니다.&lt;/p&gt;
&lt;h3 id=&quot;config&quot;&gt;config&lt;/h3&gt;
&lt;p&gt;tendermint1 ~ 3 까지 config 디렉토리에서 몇몇 설정을 맞춰줍니다.&lt;/p&gt;
&lt;p&gt;config.toml&lt;/p&gt;
&lt;pre id=&quot;code_1606714897414&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;moniker = &quot;tm1&quot;
...&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1606714917467&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# TCP or UNIX socket address for the RPC server to listen on laddr = &quot;tcp://0.0.0.0:26657&quot;
... 
persistent_peers = &quot;d62c6985171a7121a9cff42975f5e57d30c3d4f6@tm1:26656,3ec7e8d3780c654f177c9cd4c87907bc391fb055@tm2:26656,444b7ce1fa4eb64265df62bd6ab16a50bbc1b927@tm3:26656&quot; &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;genesis.json&lt;/p&gt;
&lt;pre id=&quot;code_1606714978905&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
  &quot;genesis_time&quot;: &quot;2019-01-11T04:52:40.600691343Z&quot;,
  &quot;chain_id&quot;: &quot;tm-chain&quot;,
  &quot;consensus_params&quot;: {
    &quot;block_size&quot;: {
      &quot;max_bytes&quot;: &quot;22020096&quot;,
      &quot;max_gas&quot;: &quot;-1&quot;
    },
    &quot;evidence&quot;: {
      &quot;max_age&quot;: &quot;100000&quot;
    },
    &quot;validator&quot;: {
      &quot;pub_key_types&quot;: [
        &quot;ed25519&quot;
      ]
    }
  },
  &quot;validators&quot;: [
    {
      &quot;address&quot;: &quot;CBF99C9ED817A86663A9741D24283EBEC446F8DF&quot;,
      &quot;pub_key&quot;: {
        &quot;type&quot;: &quot;tendermint/PubKeyEd25519&quot;,
        &quot;value&quot;: &quot;kHSRLUsAmAjdPqP4EU7dipQoAAXABWIw2yMcM6731GA=&quot;
      },
      &quot;power&quot;: &quot;10&quot;,
      &quot;name&quot;: &quot;tmnode1&quot;
    },
    {
      &quot;address&quot;: &quot;22BFED324E1F8CD3021669D557101D9891180ADD&quot;,
      &quot;pub_key&quot;: {
        &quot;type&quot;: &quot;tendermint/PubKeyEd25519&quot;,
        &quot;value&quot;: &quot;C4KlwOzmL2IBMq5/U0Qj3M5IEP4MaM+IwRqjEewJKsM=&quot;
      },
      &quot;power&quot;: &quot;1&quot;,
      &quot;name&quot;: &quot;tmnode2&quot;
    },
    {
      &quot;address&quot;: &quot;0C232C5EE2246807A7FCE36FA0C1C24739D494FC&quot;,
      &quot;pub_key&quot;: {
        &quot;type&quot;: &quot;tendermint/PubKeyEd25519&quot;,
        &quot;value&quot;: &quot;j5JRtifiVtj7duuJZd42VjBhg8L7Vu8O8umopaJfags=&quot;
      },
      &quot;power&quot;: &quot;1&quot;,
      &quot;name&quot;: &quot;tmnode3&quot;
    }
  ],
  &quot;app_hash&quot;: &quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이 부분은 tendermint 설정을 어느정도 이해하고 있어야 하는데 docker 를 떠나서 멀티노드 구성에 대한 설정을 이해해야 할 수 있는 작업입니다.&lt;/p&gt;
&lt;p&gt;같은 Network에서 통신하는 node들은 같은 genesis.json 파일을 참조해야 합니다.&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;user-defined-bridge-networks&quot;&gt;user-defined bridge networks&lt;/h3&gt;
&lt;p&gt;멀티노드 설정 작업이 끝나면 이후 docker container 간 원활한 네트웍 통신을 위해 network group 를 만듭니다. &lt;a href=&quot;https://docs.docker.com/network/network-tutorial-standalone/&quot;&gt;Networking with standalone containers&lt;/a&gt;&amp;nbsp;참조&lt;/p&gt;
&lt;pre id=&quot;code_1606715001506&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker network create --driver bridge tmnet&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;run&quot;&gt;run&lt;/h3&gt;
&lt;p&gt;config과 네트웍 그룹으로 실행을 시킵니다. port는 컨테이너 안에서는 모두 26657 port 이겠지만 host에서 달리 접근하기 위해서는 26617, 26627, 26637 로 매핑시켰습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1606715019889&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker run -it -p 26617:26657 -h tm1 --name tm1 --network tmnet --rm -v &quot;/Users/kmpak/tmp/tendermint1:/tendermint&quot; tendermint/tendermint node --proxy_app=kvstore

docker run -it -p 26627:26657 -h tm2 --name tm2 --network tmnet --rm -v &quot;/Users/kmpak/tmp/tendermint2:/tendermint&quot; tendermint/tendermint node --proxy_app=kvstore

docker run -it -p 26637:26657 -h tm3 --name tm3 --network tmnet --rm -v &quot;/Users/kmpak/tmp/tendermint3:/tendermint&quot; tendermint/tendermint node --proxy_app=kvstore&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;transaction-발생&quot;&gt;transaction 발생&lt;/h3&gt;
&lt;p&gt;host terminal 에서 트랜잭션을 날려보면 됩니다. 가령 tm1 에 붙고 싶을 때는&amp;nbsp;26617&amp;nbsp;로&amp;hellip;.. tm3에 붙고 싶으면&amp;nbsp;26637로 접근하면 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1606715069481&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;~:&amp;gt; curl -s localhost:26627/status
{
  &quot;jsonrpc&quot;: &quot;2.0&quot;,
  &quot;id&quot;: &quot;&quot;,
  &quot;result&quot;: {
    &quot;node_info&quot;: {
      &quot;protocol_version&quot;: {
        &quot;p2p&quot;: &quot;5&quot;,
        &quot;block&quot;: &quot;8&quot;,
        &quot;app&quot;: &quot;1&quot;
      },
      &quot;id&quot;: &quot;3ec7e8d3780c654f177c9cd4c87907bc391fb055&quot;,
      &quot;listen_addr&quot;: &quot;tcp://0.0.0.0:26656&quot;,
      &quot;network&quot;: &quot;tm-chain&quot;,
      &quot;version&quot;: &quot;0.27.4&quot;,
      &quot;channels&quot;: &quot;4020212223303800&quot;,
      &quot;moniker&quot;: &quot;tm2&quot;,
      &quot;other&quot;: {
        &quot;tx_index&quot;: &quot;on&quot;,
        &quot;rpc_address&quot;: &quot;tcp://0.0.0.0:26657&quot;
      }
    },
    &quot;sync_info&quot;: {
      &quot;latest_block_hash&quot;: &quot;62FD6EEA733C6049C2E0E2CB0A22A093A1A9BA19F30214ED5D0E79305A3FD522&quot;,
      &quot;latest_app_hash&quot;: &quot;0000000000000000&quot;,
      &quot;latest_block_height&quot;: &quot;2&quot;,
      &quot;latest_block_time&quot;: &quot;2019-01-11T05:03:48.581552326Z&quot;,
      &quot;catching_up&quot;: false
    },
    &quot;validator_info&quot;: {
      &quot;address&quot;: &quot;22BFED324E1F8CD3021669D557101D9891180ADD&quot;,
      &quot;pub_key&quot;: {
        &quot;type&quot;: &quot;tendermint/PubKeyEd25519&quot;,
        &quot;value&quot;: &quot;C4KlwOzmL2IBMq5/U0Qj3M5IEP4MaM+IwRqjEewJKsM=&quot;
      },
      &quot;voting_power&quot;: &quot;1&quot;
    }
  }
~:&amp;gt; curl -s 'localhost:26617/abci_query?data=&quot;abcd&quot;'
{
  &quot;jsonrpc&quot;: &quot;2.0&quot;,
  &quot;id&quot;: &quot;&quot;,
  &quot;result&quot;: {
    &quot;response&quot;: {
      &quot;log&quot;: &quot;exists&quot;,
      &quot;key&quot;: &quot;YWJjZA==&quot;,
      &quot;value&quot;: &quot;YWJjZA==&quot;
    }
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;마무리---뒷정리&quot;&gt;마무리 - 뒷정리&lt;/h3&gt;
&lt;p&gt;docker container를 모두 내렸다면 생성했던 네트웍 그룹을 제거해줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1606715087881&quot; class=&quot;go&quot; data-ke-language=&quot;go&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;docker network rm tmnet&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/System</category>
      <category>docker</category>
      <category>tendermint</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/258</guid>
      <comments>https://rudalson.tistory.com/entry/Docker%EB%A1%9C-tendermint-%EC%8B%A4%ED%96%89#entry258comment</comments>
      <pubDate>Mon, 30 Nov 2020 14:45:21 +0900</pubDate>
    </item>
    <item>
      <title>git push에서 Permission denied 해결</title>
      <link>https://rudalson.tistory.com/entry/git-push%EC%97%90%EC%84%9C-Permission-denied-%ED%95%B4%EA%B2%B0</link>
      <description>&lt;p&gt;물려받은 PC, 포트 제한 많은 환경.&lt;/p&gt;
&lt;p&gt;현재 일하는 곳에서의 환경입니다. 역시 개발 관련 업무하기에 편치 않습니다. 회사계정, 개인계정이 뒤죽박죽 섞여있던 곳에서 &lt;code&gt;git&lt;/code&gt;을 사용하는데 어느 순간 https 프로토콜로 &lt;code&gt;remote fetch&lt;/code&gt;가 안되기 시작했습니다.&lt;/p&gt;
&lt;p&gt;처음에는 또 포트가 막혔나 싶었는데 테더링으로 해봤지만 역시나 안되었습니다. 이 문제를 풀어야 겠습니다.&lt;/p&gt;
&lt;h2 id=&quot;문제-상황&quot;&gt;문제 상황&lt;/h2&gt;
&lt;p&gt;정확한 에러내용은 아래처럼 나왔습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1606446721384&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;D:\repo&amp;gt; git push --set-upstream origin master
remote: Permission to 유저/프로젝트.git denied to 모르는유저.
fatal: unable to access 'https://github.com/유저/프로젝트.git/': The requested URL returned error: 403&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;윈도우즈-환경&quot;&gt;윈도우즈 환경&lt;/h2&gt;
&lt;p&gt;일반 bash 환경이 아닌 윈도우즈 환경에서 이런건 어떻게 풀어야 하나 싶어 검색해보니 아래방식으로 해결할 수 있었습니다. 먼저 윈도우즈10에서 &lt;code&gt;자격 증명 관리자&lt;/code&gt;를 실행해줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;자격증명.png&quot; data-origin-width=&quot;769&quot; data-origin-height=&quot;678&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cu7hP3/btqOqTY6FcJ/RlExuEtWj2Fo5RmlrHEow0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cu7hP3/btqOqTY6FcJ/RlExuEtWj2Fo5RmlrHEow0/img.png&quot; data-alt=&quot;윈도우키를 누른 후 &amp;amp;quot;자격&amp;amp;quot;이라고 입력하면 나온다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cu7hP3/btqOqTY6FcJ/RlExuEtWj2Fo5RmlrHEow0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcu7hP3%2FbtqOqTY6FcJ%2FRlExuEtWj2Fo5RmlrHEow0%2Fimg.png&quot; data-filename=&quot;자격증명.png&quot; data-origin-width=&quot;769&quot; data-origin-height=&quot;678&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;윈도우키를 누른 후 &quot;자격&quot;이라고 입력하면 나온다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span&gt;자격 증명 관리자를 확인해보면 Windows &lt;code&gt;자격 증명 관리자&lt;/code&gt;에서 보면 git 관련 자격증명들이 나타납니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;자격증명2.png&quot; data-origin-width=&quot;820&quot; data-origin-height=&quot;680&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baipla/btqOqTx0R2w/TyoW5EJ7azMkXKh86OcTf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baipla/btqOqTx0R2w/TyoW5EJ7azMkXKh86OcTf0/img.png&quot; data-alt=&quot;자격 증명 관리 화면으로 들어가서 Windows 자격 증명을 선택한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baipla/btqOqTx0R2w/TyoW5EJ7azMkXKh86OcTf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbaipla%2FbtqOqTx0R2w%2FTyoW5EJ7azMkXKh86OcTf0%2Fimg.png&quot; data-filename=&quot;자격증명2.png&quot; data-origin-width=&quot;820&quot; data-origin-height=&quot;680&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;자격 증명 관리 화면으로 들어가서 Windows 자격 증명을 선택한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span&gt;여기서 문제가 되는 계정의&amp;nbsp;&lt;/span&gt;편집&lt;span&gt;을 눌러서 계정과 비번을 새로 입력해주면 됩니다. 이후 해당 계정으로 git을 새로 해보면 풀려있을 것입니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Development/기타</category>
      <category>git</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/257</guid>
      <comments>https://rudalson.tistory.com/entry/git-push%EC%97%90%EC%84%9C-Permission-denied-%ED%95%B4%EA%B2%B0#entry257comment</comments>
      <pubDate>Fri, 27 Nov 2020 12:36:30 +0900</pubDate>
    </item>
    <item>
      <title>git history에서 파일 영구적으로 지우기</title>
      <link>https://rudalson.tistory.com/entry/git-history%EC%97%90%EC%84%9C-%ED%8C%8C%EC%9D%BC-%EC%98%81%EA%B5%AC%EC%A0%81%EC%9C%BC%EB%A1%9C-%EC%A7%80%EC%9A%B0%EA%B8%B0</link>
      <description>&lt;p&gt;&lt;code&gt;git&lt;/code&gt;은 파일의 이력을 관리하며 증감분을 기록하면서 관리합니다. 따라서 파일을 커밋한 이후 나중에 이것을 지우는 delete를 수행한다 해도 이 자체가 하나의 이력이므로 소스 이력상에서 파일이 지울 수는 없습니다.&lt;/p&gt;
&lt;p&gt;라고 알고 있었는데, 다른 사람의 팀 소스에서 지워야할 필요가 생겼습니다. 초기에. gitignore에 포함 못 시킨 고용량의 디렉터리로 인해, 이후 지속적으로 용량의 고통을 받아오다 결국 프로젝트를 삭제하고 다시 생성할까 했었습니다.&lt;/p&gt;
&lt;p&gt;하지만 삭제 후 다시 생성하면 그 동안의 commit history가 사라지기에 망설이고 있었습니다.&lt;/p&gt;
&lt;h1 id=&quot;모든-이력에서-특정-파일-혹은-디렉토리-삭제&quot;&gt;모든 이력에서 특정 파일 혹은 디렉토리 삭제&lt;/h1&gt;
&lt;h2 id=&quot;filter-branch&quot;&gt;filter-branch&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;filter-branch&lt;/code&gt;는 브랜치내에서 특정 이력을 다시 쓰는 history rewrite 가 가능한 옵션입니다. 그래서 파일 제거나 rewrite 같은 것을 할 수 있습니다. 하지만 이런 것들은 조심해서 사용되어야 합니다. 위의 경우처럼 &lt;a href=&quot;https://help.github.com/en/github/managing-large-files/removing-files-from-a-repositorys-history&quot;&gt;초기 커밋에서 포함된 파일들을 지울 때&lt;/a&gt;&amp;nbsp;사용하면 될 것 같습니다.&lt;/p&gt;
&lt;p&gt;그런데 검색해보니 사용하는 방법이 제각각이었습니다. 그중에서 직접 사용해보고 확인한 것은&amp;nbsp;&lt;a href=&quot;https://wani.kr/posts/2015/02/02/git-3-remove-file-forever/&quot;&gt;Git가지고 놀기(3) - 파일 영원히 지우기&lt;/a&gt;의 방법으로 하였을 때가 저의 경우에는 효과가 있었습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1606267694682&quot; class=&quot;javascript&quot; style=&quot;display: block; overflow: auto; padding: 15px; color: #383a42; background: #f6f7f8; font-size: 14px; border-radius: 3px; font-family: Menlo, Consolas, Monaco, monospace; border: 1px solid #dddddd; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ git filter-branch --tree-filter 'rm -rf ./node_modules' HEAD
WARNING: git-filter-branch has a glut of gotchas generating mangled history
         rewrites.  Hit Ctrl-C before proceeding to abort, then use an
         alternative filtering tool such as 'git filter-repo'
         (https://github.com/newren/git-filter-repo/) instead.  See the
         filter-branch manual page for more details; to squelch this warning,
         set FILTER_BRANCH_SQUELCH_WARNING=1.
Proceeding with filter-branch...
Rewrite dc1f1ce75d65ddca1a00dfc7936a9c6c6f8635ba (1/30) (0 seconds passed, remaiRewrite 
b84f79c97d4cfe5eaea489780905004fb975e570 (2/30) (101 seconds passed, remRewrite 
36b524992fe444bcb9ae4e4371863cebbf00cea1 (3/30) (202 seconds passed, remRewrite 
702be0956a8272dace9375b87c6fbe282c215dec (4/30) (302 seconds passed, remRewrite 
eb92a21aaae71c085625215208b10ab64da3a6eb (5/30) (303 seconds passed, remRewrite 
e24bb84769fa4e1ee35fe1136100a7f25fc7bd75 (6/30) (303 seconds passed, remRewrite 
eb01c02df740889faaa8dd93ae43211c0c75082b (7/30) (304 seconds passed, remRewrite 
ccbceef34a24022d1d984b1c4551685d1bb90598 (8/30) (305 seconds passed, remRewrite 
53ebb33ed4ff2d5d38b2f017777d6b663fa5949b (9/30) (305 seconds passed, remRewrite 
48b0a8c08435df990201045c73143fc582edd6c6 (10/30) (306 seconds passed, reRewrite 
7569ca66c979f65b30645889f8629db0cca4a132 (11/30) (307 seconds passed, reRewrite 
2d9d01cced5bac42d89dd38a9d495eddea40dfe5 (12/30) (307 seconds passed, reRewrite 
44ed319c656a7dedffe17093fdd3af2213770896 (13/30) (308 seconds passed, reRewrite 
34e23214bd16229451b17bb5dd543fc57a7b57fa (14/30) (309 seconds passed, reRewrite 
c0a8cb173eaee7b568e994165996fee637f500b5 (15/30) (309 seconds passed, reRewrite 
31d0a691867aca4ce1abce41b5a14f31c0486c7c (16/30) (310 seconds passed, reRewrite 
27eb484ade2efb8685e953fc467cf65905998739 (17/30) (311 seconds passed, reRewrite 
4ea7a431b4aa1cb05ac88f622f3d73b8f5b8f0c2 (18/30) (311 seconds passed, reRewrite 
ff791ac6fa92ed42f6bb9d83857354d7c180c115 (19/30) (312 seconds passed, reRewrite 
1e3678175318dec256895fd837e63fc3f672c153 (20/30) (312 seconds passed, reRewrite 
7d26651ba9c832e61d937ff292aab85c713eabcb (21/30) (313 seconds passed, reRewrite 
dc8391645f3f1929846c833a6d6b2be1e4e723d9 (22/30) (314 seconds passed, reRewrite 
507a61a33a4d1a9420d0131bc0d45ac02ebe64c9 (23/30) (316 seconds passed, reRewrite 
d8585851b034af7f39bc2f1791a568d38e0f868d (24/30) (318 seconds passed, reRewrite 
09cfdece594fbd29ceaed00e21abc28c44ca9b01 (25/30) (319 seconds passed, reRewrite 
f9a6fad83a5fd00b0c74e5f9f1481ddd528d0e6b (26/30) (319 seconds passed, reRewrite 
7c697b2618f8c27b4f5a5f3dc3ec6889b1edb17c (27/30) (320 seconds passed, reRewrite 
70b4c133f202922581fa72639f3b3a78d7708297 (28/30) (321 seconds passed, reRewrite 
80d4c415680bf3428a4cb98892bef237edea1006 (29/30) (321 seconds passed, reRewrite 
35d1ea7be6d7807b9994c8971ef03bf433bf3187 (30/30) (322 seconds passed, remaining 0 predicted)
Ref 'refs/heads/master' was rewritten&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이후 push 만 해주면 끝!&lt;/p&gt;
&lt;h2 id=&quot;master-branch-unprotected&quot;&gt;master branch unprotected&lt;/h2&gt;
&lt;pre id=&quot;code_1606267718246&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ git push origin master --force
Enumerating objects: 663, done.
Counting objects: 100% (663/663), done.
Delta compression using up to 12 threads
Compressing objects: 100% (416/416), done.
Writing objects: 100% (663/663), 317.17 MiB | 5.70 MiB/s, done.
Total 663 (delta 194), reused 628 (delta 192)
remote: Resolving deltas: 100% (194/194), done.
remote: GitLab: You are not allowed to force push code to a protected branch on this project.
To https://다른 팀의 어떤 프로젝트 경로.git
 ! [remote rejected]   master -&amp;gt; master (pre-receive hook declined)
error: failed to push some refs to 'https://다른 팀의 어떤 프로젝트 경로.git'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이것을 처음 올렸을 때는 위와 같은 에러가 발생하였는데 이것은 gitlab 내 master 브랜치 설정을 변경하면 해결이 가능합니다.&lt;/p&gt;
&lt;p&gt;[Settings] - [Repository] - [Protected Branches] 에서 master 부분에&amp;nbsp;UnProtected를 눌러주면 됩니다.&lt;/p&gt;
&lt;p&gt;이후 다시 해보면 성공적으로 지워진 것을 확인 할 수 있습니다.&lt;/p&gt;</description>
      <category>Development/기타</category>
      <category>git</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/256</guid>
      <comments>https://rudalson.tistory.com/entry/git-history%EC%97%90%EC%84%9C-%ED%8C%8C%EC%9D%BC-%EC%98%81%EA%B5%AC%EC%A0%81%EC%9C%BC%EB%A1%9C-%EC%A7%80%EC%9A%B0%EA%B8%B0#entry256comment</comments>
      <pubDate>Wed, 25 Nov 2020 10:39:39 +0900</pubDate>
    </item>
    <item>
      <title>python으로 image 처리를 위한 exif 정보 다루기</title>
      <link>https://rudalson.tistory.com/entry/python%EC%9C%BC%EB%A1%9C-image-%EC%B2%98%EB%A6%AC%EB%A5%BC-%EC%9C%84%ED%95%9C-exif-%EC%A0%95%EB%B3%B4-%EB%8B%A4%EB%A3%A8%EA%B8%B0</link>
      <description>&lt;p&gt;python 으로 이미지의 &lt;code&gt;exif&lt;/code&gt; 정보를 구해오는 3가지 방법을 정리해 보았습니다. 각각의 패키지들 간에 장단점이 있겠지만 다룰 수 있는 메타항목들은 차이가 있습니다. 그리고 디바이스별로 다양한 jpg버전의 지원유무도 차이가 있습니다.&lt;/p&gt;
&lt;h2 id=&quot;using-pilpython-image-library&quot;&gt;Using PIL(Python Image Library)&lt;/h2&gt;
&lt;pre id=&quot;code_1606181209862&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ pip3 install image&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;image&lt;/code&gt; 패키지를 사용합니다. 그런데 이 패키지는 이미지파일에 대해서만 사용 가능한 것 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1606181239579&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import PIL.Image
 
img1 = PIL.Image.open(&quot;roses.jpg&quot;)
meta_data = img1._getexif()
 
print(meta_data)
print(img1.height, img1.width)&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;using-exifread&quot;&gt;Using Exifread&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1606181513912&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ pip3 install exifread&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1606181539811&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import exifread
 
with open(&quot;roses.jpg&quot;, &quot;rb&quot;) as f:
    tags = exifread.process_file(f)
    # print(tags)
 
print(tags[&quot;Image Model&quot;])&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;using-exif&quot;&gt;Using Exif&lt;/h2&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1606181807283&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ pip3 install exif&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;exif 패키지를 통해서 gps의 latitude, longitude 정보를 얻어오는 예제입니다. 이걸로 위도 경도 정보를 구할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1606181859523&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;from exif import Image
 
with open(&quot;roses.jpg&quot;, &quot;rb&quot;) as f:
    img = Image(f)
    # print(img)
 
print(img.has_exif)
print(img.gps_altitude_ref, img.model, img.datetime)
 
print(img.gps_latitude, img.gps_longitude)
 
img.gps_latitude = (37.0, 31.0, 20.0)
img.gps_longitude = (127.0, 6.0, 59.6)
 
print(img.gps_latitude, img.gps_longitude)
 
with open(&quot;roses2.jpg&quot;, &quot;wb&quot;) as new_image_file:
    new_image_file.write(img.get_file())&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&quot;reference&quot;&gt;Reference&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=zX81jd569c4&quot;&gt;Youtube - Extracting Metadata From Images and Audio Files with Python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://map.ngii.go.kr/ms/mesrInfo/coordinate.do#none&quot;&gt;위도(latitude) 경도(longitude) 관련 변환&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://m.blog.naver.com/PostView.nhn?blogId=caolympiad&amp;amp;logNo=220855909060&amp;amp;proxyReferer=https%3A%2F%2Fwww.google.co.kr%2F&quot;&gt;GPS 위도, 경도 도분, 도분초 변환방법&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Development/개발언어</category>
      <category>Python</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/255</guid>
      <comments>https://rudalson.tistory.com/entry/python%EC%9C%BC%EB%A1%9C-image-%EC%B2%98%EB%A6%AC%EB%A5%BC-%EC%9C%84%ED%95%9C-exif-%EC%A0%95%EB%B3%B4-%EB%8B%A4%EB%A3%A8%EA%B8%B0#entry255comment</comments>
      <pubDate>Tue, 24 Nov 2020 10:40:48 +0900</pubDate>
    </item>
    <item>
      <title>Python으로 telegram bot을 만들기 위해 뜸들이는 글</title>
      <link>https://rudalson.tistory.com/entry/Python%EC%9C%BC%EB%A1%9C-telegram-bot%EC%9D%84-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EC%9C%84%ED%95%B4-%EB%9C%B8%EB%93%A4%EC%9D%B4%EB%8A%94-%EA%B8%80</link>
      <description>&lt;p&gt;텔레그램 봇을 만들기 위해 몇몇 글들을 봤지만 생각보다 방향이 잘 안잡혔습니다. 그래서 지금 현재 가장 잘 맞게 제안된 글을 보기 위해 공식사이트 글을 살펴보았습니다.&lt;/p&gt;
&lt;h2 id=&quot;bots-an-introduction-for-developers&quot;&gt;&lt;a href=&quot;https://core.telegram.org/bots&quot;&gt;Bots: An introduction for developers&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;뭐니뭐니해도 위의 글부터 봤던 것이 가장 큰 도움이 되었습니다. 봇에 대한 개념 및 텔레그램 봇에서는 어떤 것들을 할 수 있는지에 대한 설명 및 기존에 만들어진 봇들에 실행해볼 수 있는 링크등을 제공해주면서 어디까지 만들 수 있나를 파악할 수 있었습니다.&lt;/p&gt;
&lt;p&gt;봇으로 게임도 만들 수 있다니&amp;hellip;&lt;/p&gt;
&lt;p&gt;봇개발에 대해서는 이글에서 방향을 잡으면 될 것 같고 기본&amp;nbsp;튜터리얼 코드를 살펴 보고 싶으면&amp;nbsp;&lt;a href=&quot;https://github.com/python-telegram-bot/python-telegram-bot&quot;&gt;python-telegram-bot&lt;/a&gt; 코드부터 시작하면 됩니다.&lt;/p&gt;
&lt;p&gt;여기서&amp;nbsp;example&amp;nbsp;&lt;a href=&quot;https://github.com/python-telegram-bot/python-telegram-bot/blob/master/examples/README.md&quot;&gt;디렉토리&lt;/a&gt;를 가보면 11가지의 기본 샘플 코드를 볼 수 있습니다. 이 모두는 각각 main()에서 token 만 &lt;code&gt;@BotFather&lt;/code&gt;에서 구한 자신의 토큰으로 입력해서 실행해보면 됩니다.&lt;/p&gt;
&lt;p&gt;여기보면 간단히 에코 실행, 타이머로 주기별로 실행, 인라인키보드 사용등에 대한 예제가 나옵니다. 심지어 지불에 대한 봇 예제도 있는데 페이팔과 연동시키는 내용이라 한국에서는 해보기 힘들 것 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;extensions--your-first-bot&quot;&gt;&lt;a href=&quot;https://github.com/python-telegram-bot/python-telegram-bot/wiki/Extensions-%E2%80%93-Your-first-Bot&quot;&gt;Extensions &amp;ndash; Your first Bot&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;나처럼 뒤늦게&amp;nbsp;텔레그램봇&amp;nbsp;개발에 대해 파악하고 있는 경우 과거&amp;nbsp;bare-metal&amp;nbsp;API 라고 마치 날것의 api가 제공 되던 시절에서 이젠 라이브러리화가 잘된 것을 활용하는 것으로 넘어온것으로 추정되는 분위기도 느낄 수 있었습니다.&lt;/p&gt;
&lt;p&gt;그래서 텔레그램봇 만들기를 검색해서 너무 이전것을 보는 것보다는 공식문서를 보는 것이 더 나은 것 같습니다. 이쪽도 변화가 빠르니깐요.&lt;/p&gt;
&lt;h2 id=&quot;code-snippets&quot;&gt;&lt;a href=&quot;https://github.com/python-telegram-bot/python-telegram-bot/wiki/Code-snippets&quot;&gt;Code snippets&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;코드에 대해&amp;nbsp;&lt;span style=&quot;color: #333333;&quot;&gt;조금 더 자세한&lt;span&gt; &lt;/span&gt;&lt;/span&gt;내용은 snippets를 보고 함수들을 장착하면 될 것 같습니다.&lt;/p&gt;
&lt;p&gt;이제 다음엔 진짜 만들어야 될텐데&amp;hellip;&amp;hellip;&amp;hellip;언제까지 파악만 할 것인가!!!&lt;/p&gt;</description>
      <category>Development/개발언어</category>
      <category>Python</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/254</guid>
      <comments>https://rudalson.tistory.com/entry/Python%EC%9C%BC%EB%A1%9C-telegram-bot%EC%9D%84-%EB%A7%8C%EB%93%A4%EA%B8%B0-%EC%9C%84%ED%95%B4-%EB%9C%B8%EB%93%A4%EC%9D%B4%EB%8A%94-%EA%B8%80#entry254comment</comments>
      <pubDate>Mon, 23 Nov 2020 13:16:58 +0900</pubDate>
    </item>
    <item>
      <title>Python3 venv 사용하여 가상환경 구성하기</title>
      <link>https://rudalson.tistory.com/entry/Python3-venv-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-%EA%B0%80%EC%83%81%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%84%B1%ED%95%98%EA%B8%B0</link>
      <description>&lt;p&gt;&lt;code&gt;python3.3&lt;/code&gt; 이후부터 추가된&amp;nbsp;&lt;a href=&quot;https://docs.python.org/ko/3/library/venv.html#module-venv&quot;&gt;venv&lt;/a&gt;는 python의 가상 환경입니다. 이를 사용하기 위해서는 아래처럼 해주면 됩니다.&lt;/p&gt;
&lt;h1 id=&quot;venv-생성&quot;&gt;venv 생성&lt;/h1&gt;
&lt;pre id=&quot;code_1605767706231&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ python3 -m venv venv&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;venv를 적용하여 확인해보려면 아래처럼 가능합니다.&lt;/p&gt;
&lt;h2 id=&quot;venv-사용&quot;&gt;venv 사용&lt;/h2&gt;
&lt;pre id=&quot;code_1605767732657&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ pip3 list
Package           Version
----------------- -------
astroid           2.2.5  
isort             4.3.21 
lazy-object-proxy 1.4.1  
mccabe            0.6.1  
pip               19.1.1 
pylint            2.3.1  
setuptools        41.0.1 
six               1.12.0 
typed-ast         1.4.0  
wheel             0.33.4 
wrapt             1.11.2

$ source ./venv/bin/activate
(venv) $ pip3 list
Package    Version
---------- -------
pip        19.0.3 
setuptools 40.8.0

(venv) $ which python
/Users/rudalson/repo/some-project/venv/bin/python&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;venv-사용-해제&quot;&gt;venv 사용 해제&lt;/h2&gt;
&lt;p&gt;venv사용을 해제하기 위해서는 bin 디렉토리의 deactivate 명령을 사용해줍니다. venv 사용 유무는 bash의 prompt 앞에 &lt;code&gt;(venv)&lt;/code&gt; 가 붙는지 안붙는지를 보면 알 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1605767767296&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;(venv) $ deactivate&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&quot;block-03f738bc-2bd8-428f-83e4-bfe5fc685811&quot; data-block=&quot;03f738bc-2bd8-428f-83e4-bfe5fc685811&quot; data-type=&quot;core/heading&quot; data-title=&quot;헤딩요소&quot;&gt;global venv 생성&lt;/h1&gt;
&lt;h2 id=&quot;block-03070451-130f-43e8-ae95-3255cced5349&quot; data-block=&quot;03070451-130f-43e8-ae95-3255cced5349&quot; data-type=&quot;core/heading&quot; data-title=&quot;헤딩요소&quot;&gt;global 환경과 같은 패키지 생성&lt;/h2&gt;
&lt;pre id=&quot;code_1605771317524&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ python3 -m venv venv --system-site-packages&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;block-940d4751-fb35-40a9-91fc-733bfa44b5ec&quot; data-block=&quot;940d4751-fb35-40a9-91fc-733bfa44b5ec&quot; data-type=&quot;core/heading&quot; data-title=&quot;헤딩요소&quot;&gt;global 환경과 다른 패키지 확인&lt;/h2&gt;
&lt;pre id=&quot;code_1605771326454&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ pip list --local&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&quot;block-b7124dd3-1acc-4e68-9d45-f7f067252c3c&quot; data-block=&quot;b7124dd3-1acc-4e68-9d45-f7f067252c3c&quot; data-type=&quot;core/heading&quot; data-title=&quot;헤딩요소&quot;&gt;requirements&lt;/h1&gt;
&lt;p id=&quot;block-25a19954-c59b-4f36-9729-eab4fa1b5cc6&quot; data-block=&quot;25a19954-c59b-4f36-9729-eab4fa1b5cc6&quot; data-type=&quot;core/paragraph&quot; data-title=&quot;단락&quot;&gt;javascript의 &lt;code&gt;package.json&lt;/code&gt;같은 파일이 python에서는 &lt;code&gt;requirements.txt&lt;/code&gt; 파일입니다. 패키지 설치 목록들이 담기는데요, 물론 package.json 만큼 다양한 정보는 아니지만 설치된 패키지 목록에 한해서는 이걸로도 충분합니다. 로컬환경에서 이것을 만드는 방법과 혹은 받아들이는 방법은 아래와 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1605771336148&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ pip freeze &amp;gt; requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p id=&quot;block-2ea42fef-f5af-45ce-bd38-a856ab4d7a2a&quot; data-block=&quot;2ea42fef-f5af-45ce-bd38-a856ab4d7a2a&quot; data-type=&quot;core/paragraph&quot; data-title=&quot;단락&quot;&gt;requirements 파일로 필요한 패키지 설치&lt;/p&gt;
&lt;pre id=&quot;code_1605771344508&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ pip install -r requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/개발언어</category>
      <category>Python</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/253</guid>
      <comments>https://rudalson.tistory.com/entry/Python3-venv-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-%EA%B0%80%EC%83%81%ED%99%98%EA%B2%BD-%EA%B5%AC%EC%84%B1%ED%95%98%EA%B8%B0#entry253comment</comments>
      <pubDate>Thu, 19 Nov 2020 15:35:19 +0900</pubDate>
    </item>
    <item>
      <title>ERROR: Could not find a version that satisfies the requirement tensorflow - python3.8</title>
      <link>https://rudalson.tistory.com/entry/ERROR-Could-not-find-a-version-that-satisfies-the-requirement-tensorflow-python38</link>
      <description>&lt;p&gt;&lt;span&gt;tensorflow를 하기 위해 설치를 했습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;에러화면.png&quot; data-origin-width=&quot;766&quot; data-origin-height=&quot;350&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdeupL/btqNCeZjrVL/8Y67GwmTyZSdwoPBhK32uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdeupL/btqNCeZjrVL/8Y67GwmTyZSdwoPBhK32uk/img.png&quot; data-alt=&quot;왠 pip 설치에러???&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdeupL/btqNCeZjrVL/8Y67GwmTyZSdwoPBhK32uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdeupL%2FbtqNCeZjrVL%2F8Y67GwmTyZSdwoPBhK32uk%2Fimg.png&quot; data-filename=&quot;에러화면.png&quot; data-origin-width=&quot;766&quot; data-origin-height=&quot;350&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;왠 pip 설치에러???&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;그런데 위와 같은 에러가 발생하였고 버전이 맞지 않는 문제가 발생하였습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1605658897285&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;(venv) D:\work\ml-tf&amp;gt;pip install tensorflow
ERROR: Could not find a version that satisfies the requirement tensorflow (from versions: none)
ERROR: No matching distribution found for tensorflow

(venv) D:\work\ml-tf&amp;gt;python --version
Python 3.8.2

(venv) D:\work\ml-tf&amp;gt;pip list
Package    Version
---------- -------
pip        20.0.2
setuptools 41.2.0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Python과 Tensorflow간의 버전이 맞지 않아서 패키지 설치가 되지 않았습니다. 현시점에서 파이썬은 &lt;code&gt;3.8.2&lt;/code&gt; 가 최신버전이고 64bit 버전인 상황이고 텐서플로우는 2까지 나와 있지만 그냥 1 버전부터 다시 익혀보려고 설치한 건데 안되네요.&lt;/p&gt;
&lt;p&gt;공식 홈페이지를 살펴보고 다른 사람들의 글을 봐도 처음에는 왜 안되는지 몰랐습니다. 그러다 자꾸 보다보니....&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;공식홈페이지.png&quot; data-origin-width=&quot;478&quot; data-origin-height=&quot;296&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qYG0q/btqNIF1FrZf/eoBzSzGoSiKu0ScZqhK68k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qYG0q/btqNIF1FrZf/eoBzSzGoSiKu0ScZqhK68k/img.png&quot; data-alt=&quot;3.7까지? 설마 3.8 너무 최신이라서 안되는건가?&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qYG0q/btqNIF1FrZf/eoBzSzGoSiKu0ScZqhK68k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqYG0q%2FbtqNIF1FrZf%2FeoBzSzGoSiKu0ScZqhK68k%2Fimg.png&quot; data-filename=&quot;공식홈페이지.png&quot; data-origin-width=&quot;478&quot; data-origin-height=&quot;296&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;3.7까지? 설마 3.8 너무 최신이라서 안되는건가?&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span&gt;시스템 요구사항에서 3.7까지 언급되어있길래 Python을 다시 &lt;code&gt;3.7.7&lt;/code&gt; x64 버전으로 설치하였습니다. 그랬더니 성공!&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1605659040611&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;(venv) d:\work\ml-tf&amp;gt;pip install tensorflow==1.14
Collecting tensorflow==1.14
  Downloading tensorflow-1.14.0-cp37-cp37m-win_amd64.whl (68.3 MB)
     |████████████████████████████████| 68.3 MB 6.8 MB/s
Collecting keras-applications&amp;gt;=1.0.6
  Using cached Keras_Applications-1.0.8-py3-none-any.whl (50 kB)
Collecting google-pasta&amp;gt;=0.1.6
  Using cached google_pasta-0.1.8-py3-none-any.whl (57 kB)
Processing c:\users\rudalson\appdata\local\pip\cache\wheels\3f\e3\ec\8a8336ff196023622fbcb36de0c5a5c218cbb24111d1d4c7f2\termcolor-1.1.0-py3-none-any.whl
Collecting six&amp;gt;=1.10.0
  Using cached six-1.14.0-py2.py3-none-any.whl (10 kB)
Collecting numpy&amp;lt;2.0,&amp;gt;=1.14.5
  Using cached numpy-1.18.1-cp37-cp37m-win_amd64.whl (12.8 MB)
Collecting wheel&amp;gt;=0.26
  Using cached wheel-0.34.2-py2.py3-none-any.whl (26 kB)
Collecting tensorboard&amp;lt;1.15.0,&amp;gt;=1.14.0
  Downloading tensorboard-1.14.0-py3-none-any.whl (3.1 MB)
     |████████████████████████████████| 3.1 MB 6.4 MB/s
Collecting tensorflow-estimator&amp;lt;1.15.0rc0,&amp;gt;=1.14.0rc0
  Downloading tensorflow_estimator-1.14.0-py2.py3-none-any.whl (488 kB)
     |████████████████████████████████| 488 kB 3.2 MB/s
Collecting protobuf&amp;gt;=3.6.1
  Using cached protobuf-3.11.3-cp37-cp37m-win_amd64.whl (1.0 MB)
Collecting grpcio&amp;gt;=1.8.6
  Using cached grpcio-1.27.2-cp37-cp37m-win_amd64.whl (1.9 MB)
Collecting keras-preprocessing&amp;gt;=1.0.5
  Using cached Keras_Preprocessing-1.1.0-py2.py3-none-any.whl (41 kB)
Collecting gast&amp;gt;=0.2.0
  Downloading gast-0.3.3-py2.py3-none-any.whl (9.7 kB)
Processing c:\users\rudalson\appdata\local\pip\cache\wheels\cc\af\1a\498a24d0730ef484019e007bb9e8cef3ac00311a672c049a3e\absl_py-0.9.0-py3-none-any.whl
Processing c:\users\rudalson\appdata\local\pip\cache\wheels\62\76\4c\aa25851149f3f6d9785f6c869387ad82b3fd37582fa8147ac6\wrapt-1.12.1-cp37-cp37m-win_amd64.whl
Collecting astor&amp;gt;=0.6.0
  Using cached astor-0.8.1-py2.py3-none-any.whl (27 kB)
Collecting h5py
  Using cached h5py-2.10.0-cp37-cp37m-win_amd64.whl (2.5 MB)
Collecting werkzeug&amp;gt;=0.11.15
  Using cached Werkzeug-1.0.0-py2.py3-none-any.whl (298 kB)
Collecting markdown&amp;gt;=2.6.8
  Using cached Markdown-3.2.1-py2.py3-none-any.whl (88 kB)
Requirement already satisfied: setuptools&amp;gt;=41.0.0 in .\venv\lib\site-packages (from tensorboard&amp;lt;1.15.0,&amp;gt;=1.14.0-&amp;gt;tensorflow==1.14) (41.2.0)
Installing collected packages: six, numpy, h5py, keras-applications, google-pasta, termcolor, wheel, protobuf, absl-py, werkzeug, markdown, grpcio, tensorboard, tensorflow-estimator, keras-preprocessing, gast, wrapt, astor, tensorflow
Successfully installed absl-py-0.9.0 astor-0.8.1 gast-0.3.3 google-pasta-0.1.8 grpcio-1.27.2 h5py-2.10.0 keras-applications-1.0.8 keras-preprocessing-1.1.0 markdown-3.2.1 numpy-1.18.1 protobuf-3.11.3 six-1.14.0 tensorboard-1.14.0 tensorflow-1.14.0 tensorflow-estimator-1.14.0 termcolor-1.1.0 werkzeug-1.0.0 wheel-0.34.2 wrapt-1.12.1

(venv) d:\work\ml-tf&amp;gt;pip list
Package              Version
-------------------- -------
absl-py              0.9.0
astor                0.8.1
gast                 0.3.3
google-pasta         0.1.8
grpcio               1.27.2
h5py                 2.10.0
Keras-Applications   1.0.8
Keras-Preprocessing  1.1.0
Markdown             3.2.1
numpy                1.18.1
pip                  20.0.2
protobuf             3.11.3
setuptools           41.2.0
six                  1.14.0
tensorboard          1.14.0
tensorflow           1.14.0
tensorflow-estimator 1.14.0
termcolor            1.1.0
Werkzeug             1.0.0
wheel                0.34.2
wrapt                1.12.1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span&gt;&lt;code&gt;tensorflow 1.14&lt;/code&gt; 설치했는데 뭔가 패키지가 많이 깔렸습니다. &lt;code&gt;tensorflow 2.1&lt;/code&gt;이 나온 시점이지만 배우는 차원에서 &lt;code&gt;1.14&lt;/code&gt;로 설치해보았습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/개발언어</category>
      <category>Ai</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/252</guid>
      <comments>https://rudalson.tistory.com/entry/ERROR-Could-not-find-a-version-that-satisfies-the-requirement-tensorflow-python38#entry252comment</comments>
      <pubDate>Wed, 18 Nov 2020 09:33:28 +0900</pubDate>
    </item>
    <item>
      <title>Windows10에서 tensorflow-gpu 2.1.0 설치. (Feat. NVidia 1060)</title>
      <link>https://rudalson.tistory.com/entry/Windows10%EC%97%90%EC%84%9C-tensorflow-gpu-210-%EC%84%A4%EC%B9%98-Feat-NVidia-1060</link>
      <description>&lt;h1&gt;tensorflow-gpu 설치&lt;/h1&gt;
&lt;p&gt;Tensorflow를 간만에 해보려고 하는데 이번엔 nvidia 그래픽카드가 있으므로 gpu버전으로 설치해보았습니다. 그리고 꽤 힘들었습니다.&lt;/p&gt;
&lt;h3&gt;tensorflow cpu버전 설치&lt;/h3&gt;
&lt;p&gt;GPU를 사용하지 않는 시스템이라면 아래처럼 CPU 버전으로 설치하면 됩니다.&lt;/p&gt;
&lt;pre class=&quot;cmake&quot;&gt;&lt;code&gt;pip install tensorflow&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;hello world를 실행해보면&lt;/p&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;import tensorflow.compat.v1 as tf

with tf.Session() as sess:
    hello = tf.constant(&quot;Hello World!&quot;)
    print(sess.run(hello))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;warning이 꽤 있지만 hello world를 잘 출력합니다. warning은 다음에 보기로 하고&lt;/p&gt;
&lt;h3&gt;tensorflow-gpu 버전&lt;/h3&gt;
&lt;p&gt;현재 환경은 아래와 같습니다.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OS : Windows 10 x64&lt;/li&gt;
&lt;li&gt;Graphic : NVidia Geforce 1060&lt;/li&gt;
&lt;li&gt;CPU : i7-8750H 2.20GHz&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;GPU 그래픽 카드가 있어서 이것을 활용해보기 위해 &lt;code&gt;tensorflow-gpu&lt;/code&gt;를 설치했습니다.&lt;/p&gt;
&lt;pre class=&quot;cmake&quot;&gt;&lt;code&gt;pip install tensorflow-gpu&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;현재, 2.1까지 나온 상태이지만 1.14.0까지는 테스트 해보았습니다. 과거 버전으로 하려면 아래처럼 버전을 명시하여 설치하면 됩니다.&lt;/p&gt;
&lt;pre class=&quot;cmake&quot;&gt;&lt;code&gt;pip install --upgrade --ignore-installed tensorflow-gpu==1.14&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;python.exe D:/work/ml-tf/hello.py
...
OSError: [WinError 126] 지정된 모듈을 찾을 수 없습니다

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
...
ImportError: Could not find 'cudart64_100.dll'. TensorFlow requires that this DLL be installed in a directory that is named in your %PATH% environment variable. Download and install CUDA 10.0 from this URL: https://developer.nvidia.com/cuda-90-download-archive

Process finished with exit code 1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;WinError 126&lt;/code&gt; 에러가 뜨면서 &lt;code&gt;cudart64_100.dll&lt;/code&gt; 파일 로드를 실패했습니다.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Win32 Error Code 126: The specified module could not be found.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;그러면서 &lt;code&gt;CUDA 10.0&lt;/code&gt;을 설치하라고 하면서 &lt;a href=&quot;https://developer.nvidia.com/cuda-90-download-archive&quot;&gt;CUDA 9.0 Toolkit 9.0 Downloads&lt;/a&gt; 링크를 제안해주네요. 뭘 설치해야 되지?&lt;br /&gt;이거 설치하고 path 지정하라는 것 같습니다. 제대로 된 문서를 보고 삽질할 준비를 해야겠습니다.&lt;/p&gt;
&lt;h3&gt;GPU 지원&lt;/h3&gt;
&lt;p&gt;TensorFlow의 공식 문서중 &lt;a href=&quot;https://www.tensorflow.org/install/gpu&quot;&gt;GPU 지원&lt;/a&gt; 편을 살펴보면 아래의 요구사항이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;소프트웨어 요구사항&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NVIDIA&amp;reg; GPU 드라이버 - CUDA 10.1에는 418.x 이상이 필요합니다.&lt;/li&gt;
&lt;li&gt;CUDA&amp;reg; Toolkit - TensorFlow는 CUDA 10.1을 지원합니다(TensorFlow 2.1.0 이상).&lt;/li&gt;
&lt;li&gt;CUPTI는 CUDA Toolkit과 함께 제공됩니다.&lt;/li&gt;
&lt;li&gt;cuDNN SDK(7.6 이상)&lt;/li&gt;
&lt;li&gt;(선택사항) TensorRT 6.0 - 일부 모델에서 추론 처리량과 지연 시간을 향상합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;CUDA, cuDNN 설치&lt;/h3&gt;
&lt;p&gt;cuda 설치를 위해 &lt;a href=&quot;https://www.tensorflow.org/install/source_windows#tested_build_configurations&quot;&gt;Windows의 소스에서 빌드&lt;/a&gt;문서를 조금 더 살펴봤습니다.&lt;br /&gt;아래 부분에 tensorflow 버전별 cuda와 cuDNN의 테스트된 버전을 알려주고 있습니다. 현재 1.14 가 설치되어 있는 나에겐 &lt;code&gt;cuDNN 7.4&lt;/code&gt;, &lt;code&gt;CUDA 10&lt;/code&gt; 이면 될 것 같습니다.&lt;/p&gt;
&lt;p&gt;위의 9.0 링크는 무시하고 &lt;a href=&quot;https://developer.nvidia.com/cuda-10.0-download-archive&quot;&gt;CUDA 10.0&lt;/a&gt; 링크로 가서 다운을 받았습니다.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.nvidia.com/cuda-toolkit-archive&quot;&gt;CUDA 버전별 release 링크&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.nvidia.com/cudnn&quot;&gt;cuDNN 설치 링크&lt;/a&gt;는 로그인을 해야 다운이 가능해서 가입 후에 들어갔습니다. 나에게 딱 맞는 것이 없어서 CUDA 10용 7.4.1로 설치하였습니다.&lt;/p&gt;
&lt;p&gt;CUDA나 cuDNN 관련 설치는 인터넷 다운 속도가 상당히 느린데 페이지는 한글이 지원되지만 패키지에 대한 미러 사이트는 없나 봅니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;cuDNN.png&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;270&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uttHe/btqNuPrIgY7/ursMcxiVFSIRzkCuu4yVX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uttHe/btqNuPrIgY7/ursMcxiVFSIRzkCuu4yVX1/img.png&quot; data-alt=&quot;내가 선택한 cuDNN&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uttHe/btqNuPrIgY7/ursMcxiVFSIRzkCuu4yVX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuttHe%2FbtqNuPrIgY7%2FursMcxiVFSIRzkCuu4yVX1%2Fimg.png&quot; data-filename=&quot;cuDNN.png&quot; data-origin-width=&quot;417&quot; data-origin-height=&quot;270&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;내가 선택한 cuDNN&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;cuDNN은 압축파일을 풀기만 하면 되는데 나는 Program Files 디렉토리의 CUDA 위치에 같이 풀어놓았습니다.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;CUDA 10.0&lt;/code&gt;와 &lt;code&gt;cuDNN 7.4.1&lt;/code&gt; 설치를 마쳤다면 환경변수에서 PATH에 추가시켜 줘야 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;환경설정.png&quot; data-origin-width=&quot;655&quot; data-origin-height=&quot;501&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bILunr/btqNDnNIzwd/Tgj1TBtofYZf7TkANURHGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bILunr/btqNDnNIzwd/Tgj1TBtofYZf7TkANURHGk/img.png&quot; data-alt=&quot;윈도우즈 환경 변수 중 PATH에 위의 2개가 포함되어야 한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bILunr/btqNDnNIzwd/Tgj1TBtofYZf7TkANURHGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbILunr%2FbtqNDnNIzwd%2FTgj1TBtofYZf7TkANURHGk%2Fimg.png&quot; data-filename=&quot;환경설정.png&quot; data-origin-width=&quot;655&quot; data-origin-height=&quot;501&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;윈도우즈 환경 변수 중 PATH에 위의 2개가 포함되어야 한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3&gt;기타 설치&lt;/h3&gt;
&lt;p&gt;Microsoft Visual C++ 재배포 가능 패키지&lt;/p&gt;
&lt;p&gt;예방차원에서 해본 것이지만 혹시 내가 겪지 못한 문제가 발생한다면 MSVC 재배포 패키지를 2017 이상으로 설치해보는 것도 도움이 될 수 있습니다.&lt;br /&gt;저는 &lt;a href=&quot;https://visualstudio.microsoft.com/ko/downloads/?rr=https%3A%2F%2Fwww.tensorflow.org%2Finstall%2Fsource_windows&quot;&gt;최신버전으로 설치&lt;/a&gt; 했고 Tensorflow-gpu 2.0 이상은 &lt;code&gt;MSVC 2017&lt;/code&gt;이 요구됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;visual재배포-1024x329.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;329&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c5YANp/btqNBfQpSsy/OQSlwMazSPpUUR0xDc92H0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c5YANp/btqNBfQpSsy/OQSlwMazSPpUUR0xDc92H0/img.png&quot; data-alt=&quot;2017 이상을 권장합니다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c5YANp/btqNBfQpSsy/OQSlwMazSPpUUR0xDc92H0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5YANp%2FbtqNBfQpSsy%2FOQSlwMazSPpUUR0xDc92H0%2Fimg.png&quot; data-filename=&quot;visual재배포-1024x329.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;329&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2017 이상을 권장합니다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3&gt;Hello World&lt;/h3&gt;
&lt;p&gt;결국 나는 Hello World라고 인사하는 텐서플로우를 보았습니다. 이제 공부만 하면 되는데 왜이리 뻘건게 많냐 이거~&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;helloworld-1.png&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;275&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6crmn/btqNCdx3Z1j/yHey4i0xV14Khq3weAv8FK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6crmn/btqNCdx3Z1j/yHey4i0xV14Khq3weAv8FK/img.png&quot; data-alt=&quot;실행이 된거랍니다. 워닝이 많네요&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6crmn/btqNCdx3Z1j/yHey4i0xV14Khq3weAv8FK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6crmn%2FbtqNCdx3Z1j%2FyHey4i0xV14Khq3weAv8FK%2Fimg.png&quot; data-filename=&quot;helloworld-1.png&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;275&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;실행이 된거랍니다. 워닝이 많네요&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Development/System</category>
      <category>Ai</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/251</guid>
      <comments>https://rudalson.tistory.com/entry/Windows10%EC%97%90%EC%84%9C-tensorflow-gpu-210-%EC%84%A4%EC%B9%98-Feat-NVidia-1060#entry251comment</comments>
      <pubDate>Tue, 17 Nov 2020 11:12:08 +0900</pubDate>
    </item>
    <item>
      <title>리눅스 퍼미션(Permission)</title>
      <link>https://rudalson.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%ED%8D%BC%EB%AF%B8%EC%85%98</link>
      <description>&lt;ul&gt;
&lt;li&gt;id - 사용자 ID 정보를 표시한다.&lt;/li&gt;
&lt;li&gt;umask - 기본 파일 퍼미션을 설정한다.&lt;/li&gt;
&lt;li&gt;su - 다른 사용자로 쉘을 실행한다.&lt;/li&gt;
&lt;li&gt;sudo - 다른 사용자로 명령어를 실행한다.&lt;/li&gt;
&lt;li&gt;chmod - 파일 모드를 변경한다.&lt;/li&gt;
&lt;li&gt;chown - 파일 소유자를 변경한다.&lt;/li&gt;
&lt;li&gt;chgrp - 파일 그룹 소유자를 변경한다.&lt;/li&gt;
&lt;li&gt;passwd - 사용자 비밀번호를 변경한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소유자, 그룹 멤버, 기타 사용자&lt;/h2&gt;
&lt;pre class=&quot;shellscript gradle&quot;&gt;&lt;code&gt;$ file /etc/shadow
/etc/shadow: regular file, no read permission
$ less /etc/shadow
/etc/shadow: Permission denied&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;자신의 사용자 ID 정보를 확인하기 위해서는 id 명령어를 사용한다.&lt;/p&gt;
&lt;pre class=&quot;shellscript angelscript&quot;&gt;&lt;code&gt;$ id
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),117(netdev),1001(docker)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;사용자 계정은 &lt;code&gt;/etc/passwd&lt;/code&gt; 파일에 정의되어 있고, 그룹은 &lt;code&gt;/etc/group&lt;/code&gt; 파일에 정의되어 있다. 사용자 계정과 그룹이 생성되면, 이 파일들은 사용자 비밀번호에 관한 정보를 가진 &lt;code&gt;/etc/shadow&lt;/code&gt;에 덧붙여 수정된다. 각각의 사용자 계정은 &lt;code&gt;/etc/passwd&lt;/code&gt; 파일에 그 사용자 이름, uid, gid, 실제 사용자 이름, 홈 디렉토리와 로그인 쉘 정보가 저장된다.&lt;/p&gt;
&lt;h2&gt;읽기, 쓰기, 실행&lt;/h2&gt;
&lt;p&gt;파일 속성의 나머지 9개의 문자는 파일 모드(file mode)라고 불린다. 그것은 파일 소유자, 파일 소유 그룹, 기타 사용자에 대한 읽기, 쓰기, 실행권한을 나타낸다.&lt;/p&gt;
&lt;p&gt;&amp;lt;표&amp;gt; 퍼미션 속성&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10%; text-align: center;&quot;&gt;속성&lt;/td&gt;
&lt;td style=&quot;width: 45%; text-align: center;&quot;&gt;파일&lt;/td&gt;
&lt;td style=&quot;width: 45%; text-align: center;&quot;&gt;디렉토리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10%; text-align: center;&quot;&gt;r&lt;/td&gt;
&lt;td style=&quot;width: 45%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;파일 열기와 읽기를 허용한다.&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 45%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;실행 속성이 설정되어 있으면 디렉토리의 내용물을 나열할 수 있게끔 허용한다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10%; text-align: center;&quot;&gt;w&lt;/td&gt;
&lt;td style=&quot;width: 45%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이 속성은 파일 쓰기 또는 잘라내기는 허용하지만, 이름 변경이나 파일 삭제는 허용하지 않는다. 파일 삭제나 파일 이름 변경은 디렉토리 속성에 의해 결정된다.&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 45%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;실행 속성이 설정되어 있으면 디렉토리 내의 파일들을 생성, 삭제, 이름 변경이 가능하도록 허용한다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 10%; text-align: center;&quot;&gt;x&lt;/td&gt;
&lt;td style=&quot;width: 45%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;파일이 프로그램으로 처리되고 파일이 실행되도록 허용한다. 스크립트 언어에서 작성된 프로그램 파일들은 읽기 기능으로 설정되어 있어야만 실행 가능하다.&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 45%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;디렉토리에 들어올 수 있도록 허용한다(예를 들어 cd directory 같이).&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;chmod - 파일 모드 변경&lt;/h3&gt;
&lt;h4&gt;8진법 표현&lt;/h4&gt;
&lt;p&gt;&amp;lt;표&amp;gt; 2진법과 8진법의 파일 모드&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 84.7674%; height: 180px;&quot; border=&quot;1&quot; data-ke-style=&quot;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;8진법&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;2진법&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;파일모드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;0&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;000&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;---&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;001&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;--x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;010&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;-w-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;011&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;-wx&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;100&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;r--&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;101&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;r-x&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;110&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;rw-&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;111&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center; height: 20px;&quot;&gt;rwx&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;$ &amp;gt; foo.txt
$ ls -l foo.txt
-rw-r--r-- 1 ubuntu ubuntu 0 Oct 14 16:47 foo.txt
$ chmod 600 foo.txt
$ ls -l foo.txt
-rw------- 1 ubuntu ubuntu 0 Oct 14 16:47 foo.txt&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;7 (rwx), 6 (rw-), 5 (r-x), 4 (r--), 0 (---).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;기호 표현&lt;/h4&gt;
&lt;p&gt;&amp;lt;표&amp;gt; chmod 기호 표기법&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%; text-align: center;&quot;&gt;기호&lt;/td&gt;
&lt;td style=&quot;width: 80%; text-align: center;&quot;&gt;의미&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%; text-align: center;&quot;&gt;u&lt;/td&gt;
&lt;td style=&quot;width: 80%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;user의 약자로, 파일이나 디렉토리 소유자를 의미한다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%; text-align: center;&quot;&gt;g&lt;/td&gt;
&lt;td style=&quot;width: 80%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그룹 소유자.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%; text-align: center;&quot;&gt;o&lt;/td&gt;
&lt;td style=&quot;width: 80%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;others의 약자로, 기타 사용자를 의미한다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20%; text-align: center;&quot;&gt;a&lt;/td&gt;
&lt;td style=&quot;width: 80%;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;all의 약자로, u, g, o의 조합이다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;lt;표&amp;gt; chmod 기호 표기법 예제&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 260px;&quot; border=&quot;1&quot; data-ke-style=&quot;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 20%; height: 20px; text-align: center;&quot;&gt;표기법&lt;/td&gt;
&lt;td style=&quot;width: 80%; height: 20px; text-align: center;&quot;&gt;의미&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 20%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;u+x&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 80%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;소유자에게 실행 권한을 추가한다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 20%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;u-x&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 80%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;소유자의 실행 권한을 제거한다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 40px;&quot;&gt;
&lt;td style=&quot;width: 20%; height: 40px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;+x&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 80%; height: 40px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;모든 사용자(소유자, 그룹 기타 사용자)에게 실행 권한을 추가한다. a+x와 동일하다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 40px;&quot;&gt;
&lt;td style=&quot;width: 20%; height: 40px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;o-rw&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 80%; height: 40px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;소유자와 그룹 소유자가 아닌 사용자의 읽기, 쓰기 권한을 제거한다&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 60px;&quot;&gt;
&lt;td style=&quot;width: 20%; height: 60px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;go=rw&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 80%; height: 60px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그룹 소유자와 기타 사용자가 읽기, 쓰기 권한을 갖도록 한다 그룹 소유자든 기타 사용자든 이전에 실행 권한을 가지고 있다면 그것은 제거된다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 60px;&quot;&gt;
&lt;td style=&quot;width: 20%; height: 60px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;u+x, go=rw&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 80%; height: 60px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;소유자에게 실행 권한을 추가하고 그룹 소유자와 기타 사용자에게 읽기, 쓰기 권한을 설정한다. 복수 지정은 콤마를 사용하여 구분한다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;사용자 ID 변경&lt;/h2&gt;
&lt;p&gt;다른 사용자 ID를 사용하는 세 가지 방법은 아래와 같다.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;로그아웃 후 다른 사용자로 로그인하기&lt;/li&gt;
&lt;li&gt;su 명령어 사용하기&lt;/li&gt;
&lt;li&gt;sudo 명령어 사용하기&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;su - 다른 사용자 ID와 그룹 ID로 쉘 실행&lt;/h3&gt;
&lt;pre class=&quot;avrasm&quot;&gt;&lt;code&gt;$ su -
Password:
#&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;sudo- 다른 사용자로 명령어 실행&lt;/h3&gt;
&lt;p&gt;일반 사용자에게 반복되는 문제 중 하나는 슈퍼유저 특권이 필요한 소프트웨어 설치와 업데이트, 시스템 설정&lt;br /&gt;파일 편집, 장치 접근과 같은 작업들을 어떻게 수행하는가이다. 윈도우즈 세계에서는 이런 것들은 종종 관리자&lt;br /&gt;권한이 주어진 사용자에 의해 진행된다. 사용자에게 이 작업들의 실행이 허용되고 또한 실행된 프로그램은 동일&lt;br /&gt;한 기능을 가지고 활성화된다. 이는 대부분의 경우에는 적절하지만 바이러스와 같은 멀웨어(악성 소표트웨어)의&lt;br /&gt;실행조차도 허용한다.&lt;/p&gt;
&lt;h3&gt;chown - 파일 소유자와 그룹 변경&lt;/h3&gt;
&lt;p&gt;처음 sudo 명령의 사용 이후에는 왜 유저에게 비밀번호 입력을 위한 프롬프트가 나타나지 않았나? 그 이유는 sudo의 환경설정에 &amp;ldquo;신뢰&amp;rdquo;할 수 있는 시간이 지정되어 있기 때문이다.&lt;/p&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;chown [owner][:[group]] file ...&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 120px;&quot; border=&quot;1&quot; data-ke-style=&quot;style15&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 20%; height: 20px; text-align: center;&quot;&gt;인자&lt;/td&gt;
&lt;td style=&quot;width: 80%; height: 20px; text-align: center;&quot;&gt;결과&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 20%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;bob&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 80%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;파일의 소유권을 현 소유자에서 bob으로 변경한다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 40px;&quot;&gt;
&lt;td style=&quot;width: 20%; height: 40px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;bob:users&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 80%; height: 40px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;파일의 소유권을 현 소유자에서 bob으로 변경하고 파일 그룹 소유자를 users 그룹으로 변경한다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 20%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;:admins&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 80%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;파일 그룹 소유자를 admins 그룹으로 변경한다. 파일 소유자는 바뀌지 않는다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 20%; height: 20px; text-align: center;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;bobs:&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 80%; height: 20px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;파일 소유자가 현 소유자에서 bob으로 변경되고 그룹 소유자는 bob의 로그인 그룹으로 변경된다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;chgrp - 그룹 소유권 변경&lt;/h3&gt;</description>
      <category>Development/System</category>
      <category>permission</category>
      <author>없다캐라</author>
      <guid isPermaLink="true">https://rudalson.tistory.com/250</guid>
      <comments>https://rudalson.tistory.com/entry/%EB%A6%AC%EB%88%85%EC%8A%A4-%ED%8D%BC%EB%AF%B8%EC%85%98#entry250comment</comments>
      <pubDate>Mon, 26 Oct 2020 15:05:47 +0900</pubDate>
    </item>
  </channel>
</rss>